diff --git a/e2e/tests/helpers.js b/e2e/tests/helpers.js
index 3dcc60bb4..cacd0a967 100644
--- a/e2e/tests/helpers.js
+++ b/e2e/tests/helpers.js
@@ -22,7 +22,6 @@ async function initLabelStudio({
'update',
'submit',
'controls',
- 'side-column',
'topbar',
'annotations:history',
'annotations:current',
diff --git a/src/components/AnnotationTab/AnnotationTab.js b/src/components/AnnotationTab/AnnotationTab.js
deleted file mode 100644
index 1abe2e0ee..000000000
--- a/src/components/AnnotationTab/AnnotationTab.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { observer } from 'mobx-react';
-import { Block, Elem } from '../../utils/bem';
-import { CurrentEntity } from '../CurrentEntity/CurrentEntity';
-import Entities from '../Entities/Entities';
-import Entity from '../Entity/Entity';
-import Relations from '../Relations/Relations';
-import { Comments } from '../Comments/Comments';
-
-import './CommentsSection.styl';
-
-export const AnnotationTab = observer(({ store }) => {
- const as = store.annotationStore;
- const annotation = as.selectedHistory ?? as.selected;
- const { selectionSize } = annotation || {};
- const hasSegmentation = store.hasSegmentation;
-
- return (
- <>
- {store.hasInterface('annotations:current') && (
-
- )}
-
- {selectionSize ? (
-
- ) : hasSegmentation ? (
-
- No Region selected
-
- ) : null}
-
- {hasSegmentation && (
-
- )}
-
- {hasSegmentation && (
-
- )}
-
- {store.hasInterface('annotations:comments') && store.commentStore.isCommentable && (
-
-
- Comments
-
-
-
-
-
-
- )}
- >
- );
-});
diff --git a/src/components/App/App.js b/src/components/App/App.js
index 26fa6bb4a..413c3f4e5 100644
--- a/src/components/App/App.js
+++ b/src/components/App/App.js
@@ -35,8 +35,6 @@ import '../../tags/visual';
import { TreeValidation } from '../TreeValidation/TreeValidation';
import { guidGenerator } from '../../utils/unique';
import Grid from './Grid';
-import { SidebarPage, SidebarTabs } from '../SidebarTabs/SidebarTabs';
-import { AnnotationTab } from '../AnnotationTab/AnnotationTab';
import { SidePanels } from '../SidePanels/SidePanels';
import { SideTabsPanels } from '../SidePanels/TabPanels/SideTabsPanels';
import { Block, Elem } from '../../utils/bem';
@@ -44,7 +42,7 @@ import './App.styl';
import { Space } from '../../common/Space/Space';
import { DynamicPreannotationsControl } from '../AnnotationTab/DynamicPreannotationsControl';
import { isDefined } from '../../utils/utilities';
-import { FF_DEV_1170, FF_DEV_3873, isFF } from '../../utils/feature-flags';
+import { FF_DEV_3873, isFF } from '../../utils/feature-flags';
import { Annotation } from './Annotation';
import { Button } from '../../common/Button/Button';
@@ -216,11 +214,10 @@ class App extends Component {
);
- const outlinerEnabled = isFF(FF_DEV_1170);
const newUIEnabled = isFF(FF_DEV_3873);
return (
-
+
{newUIEnabled ? (
@@ -247,56 +244,29 @@ class App extends Component {
mod={{
viewAll: viewingAll,
bsp: settings.bottomSidePanel,
- outliner: outlinerEnabled,
showingBottomBar: newUIEnabled,
}}
>
- {outlinerEnabled ? (
- isFF(FF_DEV_3873) ? (
-
- {mainContent}
- {isDefined(store) && store.hasInterface('topbar') && }
-
- ) : (
-
- {mainContent}
-
- {isFF(FF_DEV_3873) && isDefined(store) && store.hasInterface('topbar') && }
-
- )
+ {isFF(FF_DEV_3873) ? (
+
+ {mainContent}
+ {isDefined(store) && store.hasInterface('topbar') && }
+
) : (
- <>
+
{mainContent}
- {viewingAll === false && (
-
- {store.hasInterface('side-column') && (
-
-
-
-
-
- {this.props.panels.map(({ name, title, Component }) => (
-
-
-
- ))}
-
- )}
-
- )}
-
- {newUIEnabled && isDefined(store) && store.hasInterface('topbar') && }
- >
+ {isFF(FF_DEV_3873) && isDefined(store) && store.hasInterface('topbar') && }
+
)}
diff --git a/src/components/App/App.styl b/src/components/App/App.styl
index 7bb5e87c0..fbed6512f 100644
--- a/src/components/App/App.styl
+++ b/src/components/App/App.styl
@@ -14,9 +14,6 @@
flex-direction column
background-color var(--main-bg-color)
- &__auto_height
- height: auto
-
&_fullscreen
position absolute
background white
@@ -36,16 +33,11 @@
.wrapper
flex 1
display grid
- grid-template-columns calc(100% - 320px) 320px
grid-template-rows 1fr
align-items stretch
max-width 100%
height calc(100% - var(--topbar-height))
-
- // view all and new UI have only one children, so no grid required
- &_view_all
- &_outliner
- grid-template-columns 100%
+ grid-template-columns 100%
& .menu
padding-bottom 8px
diff --git a/src/components/CurrentEntity/Controls.js b/src/components/CurrentEntity/Controls.js
deleted file mode 100644
index 29606b97b..000000000
--- a/src/components/CurrentEntity/Controls.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import { inject, observer } from 'mobx-react';
-import { Button } from '../../common/Button/Button';
-import { Block, Elem } from '../../utils/bem';
-import { isDefined } from '../../utils/utilities';
-import { IconBan } from '../../assets/icons';
-
-import './Controls.styl';
-import { Hotkey } from '../../core/Hotkey';
-
-const TOOLTIP_DELAY = 0.8;
-
-const ButtonTooltip = inject('store')(observer(({ store, name, title, children }) => {
- return (
-
- {children}
-
- );
-}));
-
-const controlsInjector = inject(({ store }) => {
- return {
- store,
- history: store?.annotationStore?.selected?.history,
- };
-});
-
-export const Controls = controlsInjector(observer(({ store, history, annotation }) => {
- const isReview = store.hasInterface('review');
- const historySelected = isDefined(store.annotationStore.selectedHistory);
- const { userGenerate, sentUserGenerate, versions, results } = annotation;
- const buttons = [];
-
- const disabled = store.isSubmitting || historySelected;
- const submitDisabled = store.hasInterface('annotations:deny-empty') && results.length === 0;
-
- if (isReview) {
- buttons.push(
-
-
- ,
- );
-
- buttons.push(
-
-
- ,
- );
- } else if (annotation.skipped) {
- buttons.push(
-
- Annotation skipped
- ,
- );
- } else {
- if (store.hasInterface('skip')) {
- buttons.push(
-
-
- ,
- );
- }
-
- if ((userGenerate && !sentUserGenerate) || (store.explore && !userGenerate && store.hasInterface('submit'))) {
- const title = submitDisabled
- ? 'Empty annotations denied in this project'
- : 'Save results';
- // span is to display tooltip for disabled button
-
- buttons.push(
-
-
-
-
- ,
- );
- }
-
- if ((userGenerate && sentUserGenerate) || (!userGenerate && store.hasInterface('update'))) {
- buttons.push(
-
-
- ,
- );
- }
- }
-
- return (
-
- {buttons}
-
- );
-}));
diff --git a/src/components/CurrentEntity/Controls.styl b/src/components/CurrentEntity/Controls.styl
deleted file mode 100644
index e0871260e..000000000
--- a/src/components/CurrentEntity/Controls.styl
+++ /dev/null
@@ -1,16 +0,0 @@
-.controls
- height 32px
- display grid
- grid-auto-columns 1fr
- grid-auto-flow column
- grid-column-gap 12px
- justify-content flex-end
-
- &__tooltip-wrapper
- button
- width 100%
-
- &__skipped-info
- display flex
- svg
- margin 0 8px 0 4px
diff --git a/src/components/CurrentEntity/CurrentEntity.js b/src/components/CurrentEntity/CurrentEntity.js
deleted file mode 100644
index fc11b8d29..000000000
--- a/src/components/CurrentEntity/CurrentEntity.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import { inject, observer } from 'mobx-react';
-import { Space } from '../../common/Space/Space';
-import { Block, Elem } from '../../utils/bem';
-import { FF_DEV_2290, isFF } from '../../utils/feature-flags';
-import { DraftPanel } from '../DraftPanel/DraftPanel';
-import { AnnotationHistory } from './AnnotationHistory.tsx';
-import { useRegionsCopyPaste } from '../../hooks/useRegionsCopyPaste';
-import './CurrentEntity.styl';
-
-const injector = inject('store');
-
-export const CurrentEntity = injector(observer(({
- entity,
- showHistory = true,
-}) => {
- const showDraftInHistory = isFF(FF_DEV_2290);
-
- useRegionsCopyPaste(entity);
-
- return entity ? (
- e.stopPropagation()}>
- {/*
-
- {entity.type === 'annotation' ? : }
- ID: {entity.pk ?? entity.id}
-
- */}
-
- {/*
- */}
- {/*Always show container to keep the interface layout unchangeable*/}
- {/* {(entity.parent_prediction) && (
-
-
-
-
- ID: { entity.parent_prediction }
-
-
- )}
- {(entity.parent_annotation) && (
-
-
-
-
- ID: { entity.parent_annotation }
-
-
- )} */}
- {/*
- */}
-
- {!showDraftInHistory && (
-
- )}
-
- {/* {showHistory && !entity.userGenerate && ( */}
- {showHistory && (
-
- Annotation History
- #{entity.pk ?? entity.id}
-
- )}
-
-
- ) : null;
-}));
diff --git a/src/components/CurrentEntity/CurrentEntity.styl b/src/components/CurrentEntity/CurrentEntity.styl
deleted file mode 100644
index 517bf992a..000000000
--- a/src/components/CurrentEntity/CurrentEntity.styl
+++ /dev/null
@@ -1,70 +0,0 @@
-.annotation
- padding 16px 16px 4px
-
- &__title
- padding 0 0 8px
- font-weight 500
-
- &__id
- font-weight 400
- opacity 0.6
-
- &__id
- display flex
- align-items center
-
- &__type
- width 14px
- height 14px
- margin-right 5px
-
- svg
- width 100%
- height 100%
- display block
-
- &__text_id
- position: relative
- top: -3px
-
- &__info
- height 32px
- display flex
- align-items center
- justify-content space-between
- margin-left 9px
-
- &__parent
- display flex
- align-items: center
-
- &__parent_info
- position relative
- height 20px
- display flex
- align-items center
- justify-content space-between
- margin-left 8px
-
- &__parent_link
- color: #000
- position: absolute
- top: -20px
- left: -12px
- opacity: 20%
-
- &__parent_icon
- width 14px
- height 14px
- margin-right 5px
- display: inline
-
- &_prediction
- color #944BFF
-
- &_annotation
- color #0099FF
-
- &__parent_text
- color: #000
- opacity: 40%
diff --git a/src/components/CurrentEntity/HistoryActions.js b/src/components/CurrentEntity/HistoryActions.js
deleted file mode 100644
index f4aaad50b..000000000
--- a/src/components/CurrentEntity/HistoryActions.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import { observer } from 'mobx-react';
-import { LsRedo, LsRemove, LsUndo } from '../../assets/icons';
-import { Button } from '../../common/Button/Button';
-import { Tooltip } from '../../common/Tooltip/Tooltip';
-import { Block, Elem } from '../../utils/bem';
-import './HistoryActions.styl';
-import { Hotkey } from '../../core/Hotkey';
-
-export const HistoryActions = observer(({ annotation }) => {
- const { history } = annotation;
-
- return (
-
-
- annotation.undo()}
- icon={}
- />
-
-
- annotation.redo()}
- icon={}
- />
-
-
- history?.reset()}
- icon={}
- />
-
-
- );
-});
diff --git a/src/components/CurrentEntity/HistoryActions.styl b/src/components/CurrentEntity/HistoryActions.styl
deleted file mode 100644
index eace2eb78..000000000
--- a/src/components/CurrentEntity/HistoryActions.styl
+++ /dev/null
@@ -1,18 +0,0 @@
-.history-buttons
- display flex
-
- &__action
- width 36px
- height 36px
- border none
- padding 0 !important
- background none !important
-
- &:disabled
- opacity 0.6
-
- svg
- display block
-
- &_delete
- color #DD0000
diff --git a/src/components/Entities/Entities.js b/src/components/Entities/Entities.js
deleted file mode 100644
index cc2fc7422..000000000
--- a/src/components/Entities/Entities.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import React from 'react';
-import { Dropdown } from 'antd';
-import { observer } from 'mobx-react';
-
-import './Entities.scss';
-import { RegionTree } from './RegionTree';
-import { LabelList } from './LabelList';
-import { SortMenu, SortMenuIcon } from './SortMenu';
-import { Oneof } from '../../common/Oneof/Oneof';
-import { Space } from '../../common/Space/Space';
-import { Block, Elem } from '../../utils/bem';
-import { RadioGroup } from '../../common/RadioGroup/RadioGroup';
-import './Entities.styl';
-import { Button } from '../../common/Button/Button';
-import { LsInvisible, LsTrash, LsVisible } from '../../assets/icons';
-import { confirm } from '../../common/Modal/Modal';
-import { Tooltip } from '../../common/Tooltip/Tooltip';
-
-export default observer(({
- regionStore,
- annotation,
-}) => {
- const { classifications, regions, view } = regionStore;
- const count = regions.length + (view === 'regions' ? classifications.length : 0);
- const toggleVisibility = e => {
- e.preventDefault();
- e.stopPropagation();
- regionStore.toggleVisibility();
- };
-
- return (
-
-
-
- {
- regionStore.setView(e.target.value);
- }}
- >
- Regions{count ? {count} : null}
- Labels
-
-
- {annotation.isReadOnly() && (
-
- }
- style={{
- height: 36,
- width: 36,
- padding: 0,
- }}
- onClick={() => {
- confirm({
- title: 'Removing all regions',
- body: 'Do you want to delete all annotated regions?',
- buttonLook: 'destructive',
- onOk: () => annotation.deleteAllRegions(),
- });
- }} />
-
- )}
-
-
-
- {count ? (
-
-
- {view === 'regions' && (
- } placement="bottomLeft">
- e.preventDefault()}>
- {`Sorted by ${regionStore.sort[0].toUpperCase()}${regionStore.sort.slice(1)}`}
-
-
- )}
-
-
- {regions.length > 0 ? (
- {regionStore.isAllHidden ? : }
- ) : null}
-
-
-
-
-
- )
- : null}
-
-
-
- {count ? : No Regions created yet}
-
-
- {count ? : No Labeled Regions created yet}
-
-
-
- );
-});
diff --git a/src/components/Entities/Entities.module.scss b/src/components/Entities/Entities.module.scss
deleted file mode 100644
index 8d68a3c46..000000000
--- a/src/components/Entities/Entities.module.scss
+++ /dev/null
@@ -1,122 +0,0 @@
-.section {
- .header {
- display: flex;
- justify-content: space-between;
- padding-left: 4px;
- padding-right: 4px;
- align-items: center;
- }
- .title {
- flex: 1;
- }
-}
-
-.treelabels {
- max-height: auto;
-
- :global(.ant-tree-switcher) {
- &:global(.ant-tree-switcher_close) {
- .switcherIcon {
- transform: rotate(90deg);
- }
- }
- }
-}
-
-.treelabel :global(.ant-tree-node-content-wrapper) {
- cursor: default;
-}
-
-.treetag {
- margin: "5px";
-
- &:hover {
- opacity: 1;
- }
-}
-
-.item {
- color: get-color(error);
- font-size: 14px;
-
- &:hover {
- cursor: pointer;
- color: #f5222d;
- }
-}
-
-.lstitem {
- user-select: none;
- cursor: pointer;
- align-items: center;
- justify-content: flex-start;
- display: flex;
- flex-wrap: nowrap;
- position: relative;
- padding: 0;
- border: 1px solid #e5e5e5;
- border-radius: 5px;
-
- & > *:not(:last-child),
- & [role="img"] {
- margin-right: 6px;
- }
-
- &.flat {
-
- }
-
- & button.hidden,
- & button.visible {
- height: 20px;
- display: flex;
- align-items: flex-end;
- opacity: 0.8;
- span {
- margin-right: 0;
- }
- }
-
- &:hover {
- background-color: var(--labelBgColor);
- }
-
- &.selected {
- //noinspection CssInvalidFunction
- box-shadow: 0 0 0 4px var(--labelBgColor, rgba(0,0,0,0.2));
- }
-
- &_label {
- justify-content: space-between;
- }
-
- &__actions {
- flex: 0 0 auto;
-
- & [role="img"] {
- margin: 0;
- }
- }
-
- &__actionIcon {
- flex: 0 0 auto;
- text-align: center;
- justify-content: center;
- }
-}
-
-.list .lstitem {
- border-bottom: none;
-}
-
-.uihidden {
- opacity: 0.5;
-}
-
-.uivisible {
- opacity: 1;
-}
-
-.ant-tree-switcher {
- margin-top: 15px;
-}
diff --git a/src/components/Entities/Entities.scss b/src/components/Entities/Entities.scss
deleted file mode 100644
index 03d6902ad..000000000
--- a/src/components/Entities/Entities.scss
+++ /dev/null
@@ -1,67 +0,0 @@
-.ls-menu {
- .ant-tree {
- padding: 16px 0;
- }
-
- .ant-tree-node-content-wrapper {
- // official flex sizing fix; here is for text-overflow in the tree nodes
- min-width: 0;
- }
-
- .ant-tree .ant-tree-list-holder-inner {
- padding: 0 16px;
- }
-
- .ant-tree .ant-tree-treenode {
- position: relative;
- padding: 0;
- align-items: center;
- display: flex;
- flex-wrap: nowrap;
- margin-bottom: 12px;
- }
-
- .ant-tree-draggable-icon {
- width: 14px;
- flex-shrink: 0;
- }
-
- .ant-tree .ant-tree-node-content-wrapper {
- padding: 0;
- }
-
- .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected,
- .ant-tree .ant-tree-node-content-wrapper:hover {
- background: none;
- }
-
- .ant-tree .ant-tree-switcher {
- width: 24px;
- height: 32px;
- text-align: center;
- z-index: 100;
- display: flex;
- flex-flow: column;
- justify-content: center;
- transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
-
- &.ant-tree-switcher_close {
- transform: scaleY(-1);
- }
- }
-
- .ant-tree .ant-tree-indent-unit {
- width: 16px;
- }
-
- .ant-tree .ant-tree-indent:empty {
- & + .ant-tree-switcher {
- margin-left: -12px;
- }
-
- & + .ant-tree-switcher.ant-tree-switcher-noop {
- margin-left: 0;
- display: none;
- }
- }
-}
diff --git a/src/components/Entities/Entities.styl b/src/components/Entities/Entities.styl
deleted file mode 100644
index 820f456b9..000000000
--- a/src/components/Entities/Entities.styl
+++ /dev/null
@@ -1,56 +0,0 @@
-.entities
- margin-top 12px
- padding-top 12px
- border-top 1px solid rgba(#000, 0.1)
- border-bottom 1px solid rgba(#000, 0.1)
-
- &__header
- font-size 16px
- line-height 22px
- color rgba(0, 0, 0, 0.6)
- height 46px
- display flex
- align-items center
- padding 12px 15px 12px 24px
- border-bottom 1px solid rgba(#000, 0.1)
-
- &__sort
- display flex
- align-items center
-
- &__sort-icon
- display flex
- align-items center
- justify-content: center;
- width: 24px
- height: 24px
- margin-right: 4px
-
- &__source
- padding 0 15px
-
- &__counter
- color: rgba(0, 0, 0, 0.4)
-
- &__empty
- height 32px
- display flex
- padding 0 15px
- align-items center
-
- &__visibility
- padding: 0 !important
- width: 24px
-
- &_hidden
- opacity 1
-
- &__regions,
- &__labels
- padding 0
-
-:global(.ant-tree .ant-tree-node-content-wrapper)
- min-width 0
-
-:global(.ant-tree-draggable-icon)
- flex 14px 0 0
diff --git a/src/components/Entities/GroupMenu.js b/src/components/Entities/GroupMenu.js
deleted file mode 100644
index 91b4e22c7..000000000
--- a/src/components/Entities/GroupMenu.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Menu } from 'antd';
-
-export const GroupMenu = ({ regionStore }) => {
- return (
-
- );
-};
diff --git a/src/components/Entities/LabelItem.js b/src/components/Entities/LabelItem.js
deleted file mode 100644
index af9a7918f..000000000
--- a/src/components/Entities/LabelItem.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import { List } from 'antd';
-import { observer } from 'mobx-react';
-import { Button } from '../../common/Button/Button';
-import { Block, Elem } from '../../utils/bem';
-import { Space } from '../../common/Space/Space';
-import { LsInvisible, LsVisible } from '../../assets/icons';
-import { Label } from '../Label/Label';
-import React from 'react';
-import { asVars } from '../../utils/styles';
-import './LabelItem.styl';
-
-export const LabelItem = observer(({ item, regions, regionStore }) => {
- const color = item.background;
- const vars = asVars({ color });
-
- const isHidden = Object.values(regions).reduce((acc, item) => acc && item.hidden, true);
- const count = Object.values(regions).length;
-
- return (
-
-
-
- {!item.isNotLabel ? (
-
- ) : <>Not labeled>}
-
- {`${count} Region${(count === 0 || count > 1) ? 's' : ''}`}
-
-
- : }
- onClick={() => regionStore.setHiddenByLabel(!isHidden, item)}
- mod={{ hidden: isHidden }}
- />
-
-
- );
-});
diff --git a/src/components/Entities/LabelItem.styl b/src/components/Entities/LabelItem.styl
deleted file mode 100644
index 5a210dcb1..000000000
--- a/src/components/Entities/LabelItem.styl
+++ /dev/null
@@ -1,17 +0,0 @@
-.list-item
- --color #666
- padding 0 8px 0 0
-
- &__title
- display flex
- flex-flow row nowrap
- align-items center
-
- &__counter
- color var(--color)
- margin-left 12px
-
- &__visibility
- padding: 0 !important
- width: 24px
- padding: 24px
\ No newline at end of file
diff --git a/src/components/Entities/LabelList.js b/src/components/Entities/LabelList.js
deleted file mode 100644
index 59042cbcf..000000000
--- a/src/components/Entities/LabelList.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import styles from './Entities.module.scss';
-import { Tree } from 'antd';
-import { LabelItem } from './LabelItem';
-import { RegionItem } from './RegionItem';
-import { observer } from 'mobx-react';
-import { useState } from 'react';
-import { LsChevron } from '../../assets/icons';
-import { FF_DEV_2755, isFF } from '../../utils/feature-flags';
-
-const { localStorage } = window;
-const localStoreName = 'collapsed-label-pos';
-
-export const LabelList = observer(({ regionStore }) => {
- const treeData = regionStore.asLabelsTree((item, idx, isLabel, children, onClick) => {
- return {
- key: item.id,
- title: (data) => {
- return isLabel ? (
-
- ) : (
-
- );
- },
- };
- });
-
- if( isFF(FF_DEV_2755) ) {
- const [collapsedPos, setCollapsedPos] = useState( localStorage.getItem( localStoreName )?.split?.(',')?.filter( pos => !!pos ) ?? [] );
-
- const updateLocalStorage = ( collapsedPos ) => {
- localStorage.setItem( localStoreName, collapsedPos );
- };
-
- const collapse = ( pos ) => {
- const newCollapsedPos = [...collapsedPos, pos];
-
- setCollapsedPos( newCollapsedPos );
- updateLocalStorage( newCollapsedPos );
- };
-
- const expand = ( pos ) => {
- const newCollapsedPos = collapsedPos.filter( cPos => cPos !== pos );
-
- setCollapsedPos( newCollapsedPos );
- updateLocalStorage( newCollapsedPos );
- };
- const expandedKeys = treeData.filter( (item) => !collapsedPos.includes( item.pos ) ).map( item => item.key ) ?? [];
-
- return (
- }
- onExpand={( internalExpandedKeys, { node } ) => {
- const region = treeData.find(region => region.key === node.key);
- const pos = region.pos;
-
- collapsedPos.includes(pos) ? expand(pos) : collapse(pos);
- }}
- />
- );
- }
-
- return (
- }
- />
- );
-});
diff --git a/src/components/Entities/RegionItem.js b/src/components/Entities/RegionItem.js
deleted file mode 100644
index 809a9b45f..000000000
--- a/src/components/Entities/RegionItem.js
+++ /dev/null
@@ -1,146 +0,0 @@
-import { Badge, List } from 'antd';
-import { observer } from 'mobx-react';
-import { isAlive } from 'mobx-state-tree';
-import { Button } from '../../common/Button/Button';
-import { Node, NodeIcon } from '../Node/Node';
-import { LsCollapse, LsExpand, LsInvisible, LsSparks, LsVisible } from '../../assets/icons';
-import styles from './Entities.module.scss';
-import Utils from '../../utils';
-
-import { Block, Elem } from '../../utils/bem';
-import { isDefined } from '../../utils/utilities';
-import './RegionItem.styl';
-import { Space } from '../../common/Space/Space';
-import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
-import { asVars } from '../../utils/styles';
-import { PER_REGION_MODES } from '../../mixins/PerRegion';
-import Registry from '../../core/Registry';
-import chroma from 'chroma-js';
-
-const RegionItemDesc = observer(({ item, setDraggable }) => {
- const [collapsed, setCollapsed] = useState(false);
- const toggleCollapsed = useCallback((e) => {
- setCollapsed(val => !val);
- e.preventDefault();
- e.stopPropagation();
- }, []);
- const controls = item.perRegionDescControls || [];
-
- return (
- 0) }} onMouseEnter={()=>{setDraggable?.(false);}} onMouseLeave={()=>{setDraggable?.(true);}}>
-
- {controls.map((tag, idx) => {
- const View = Registry.getPerRegionView(tag.type, PER_REGION_MODES.REGION_LIST);
-
- return View ? : null;
- })}
-
-
- {collapsed ? : }
-
-
- );
-});
-
-const RegionItemContent = observer(({ idx, item, setDraggable }) => {
- const itemElRef = useRef();
-
- useEffect(()=>{
- if (item.selected) {
- const el = itemElRef.current;
-
- if (!el) return;
- const scroll = el.scrollIntoViewIfNeeded || el.scrollIntoView;
-
- scroll.call(el);
- }
- }, [item.selected]);
- return (
-
-
- {isDefined(idx) ? idx + 1 : ''}
-
-
-
-
-
-
-
-
-
- {item.origin === 'prediction' && (
-
- )}
-
-
- {item.isReadOnly() && }
-
- {item.score && (
-
- {item.score.toFixed(2)}
-
- )}
-
- {item.hideable && (
- {item.hidden ? : }
- )}
-
-
-
-
-
- );
-});
-
-export const RegionItem = observer(({ item, idx, flat, setDraggable, onClick }) => {
- const getVars = useMemo(()=>{
- let vars;
-
- return () => {
- if (!vars) {
- const color = item.getOneColor();
-
- vars = color ? asVars({ labelColor: color, labelBgColor: chroma(color).alpha(0.15) }) : null;
- }
- return vars;
- };
- }, [isAlive(item) && item.getOneColor()]);
-
- if (!isAlive(item)) return null;
-
- const classnames = [
- styles.lstitem,
- flat && styles.flat,
- item.hidden === true && styles.hidden,
- item.inSelection && styles.selected,
- ].filter(Boolean);
-
- const vars = getVars();
-
- return (
- {onClick(e, item);}}
- onMouseOver={() => item.setHighlight(true)}
- onMouseOut={() => item.setHighlight(false)}
- style={vars}
- aria-label="region"
- >
-
-
- );
-});
diff --git a/src/components/Entities/RegionItem.styl b/src/components/Entities/RegionItem.styl
deleted file mode 100644
index 9048ad351..000000000
--- a/src/components/Entities/RegionItem.styl
+++ /dev/null
@@ -1,100 +0,0 @@
-.region-item
- width: 100%
-
- &__header
- height 32px
- display flex
- align-items center
- font-size 14px
- line-height 22px
- width 100%
- padding 0 8px
-
- &__counter
- flex none
- width 24px
- display flex
- color #999
- align-items center
- justify-content center
-
- ~/_hidden &
- opacity: 0.4;
-
- &__title
- ~/_hidden &
- opacity: 0.4;
-
- &__id
- display flex
- color: var(--labelColor);
-
- ~/_hidden &
- opacity: 0.4;
-
- svg
- width 24px
- height 24px
-
- &__score
- ~/_hidden &
- opacity: 0.4;
-
- &__toggle
- width: 24px
- flex: 0 0 24px;
- padding: 0 !important
- text-align: center;
- padding 0
-
- &__desc
- position relative
- background #f7f7f7
- padding 7px 32px 7px 12px
- border-top: 1px solid #e5e5e5;
- border-bottom-left-radius 5px
- border-bottom-right-radius 5px
- min-height 36px
-
- ~/_hidden &
- background: #fff;;
-
- &_empty
- display none
-
- &_collapsed
- height: 36px
- overflow hidden
-
- &__collapse
- position absolute
- width: 24px
- height: 24px
- top: 6px
- right: 8px
- opacity 0.25
- padding: 0
-
- &__controls:empty + &__collapse
- display none
-
- &__id
- width 16px
- height 16px
-
- svg
- width 100%
- height 100%
- color rgba(#000, 0.5)
-
- &__prediction
- width 24px
- height 24px
- display flex
- align-items center
- justify-content center
-
- svg
- width 100%
- height 100%
- color #7F64FF
diff --git a/src/components/Entities/RegionTree.js b/src/components/Entities/RegionTree.js
deleted file mode 100644
index aa76dc9fd..000000000
--- a/src/components/Entities/RegionTree.js
+++ /dev/null
@@ -1,134 +0,0 @@
-import { Spin, Tree } from 'antd';
-import { observer } from 'mobx-react';
-import { useCallback, useEffect, useRef, useState } from 'react';
-import styles from './Entities.module.scss';
-import Utils from '../../utils';
-
-import { LsChevron } from '../../assets/icons';
-import { RegionItem } from './RegionItem';
-
-export const RegionTree = observer(({ regionStore }) => {
- // @todo improve list render
- // this whole block performs async render to not block the rest of UI on first render
- const [deferred, setDeferred] = useState(true);
- const renderNow = useCallback(() => setDeferred(false), []);
-
- useEffect(() => {
- setTimeout(renderNow);
- }, [renderNow]);
-
- const canDrag = useRef(true);
- const setDraggable = useCallback((isDraggable)=>{
- canDrag.current = isDraggable;
- }, []);
-
- if (deferred)
- return (
-
-
-
- );
-
- const isFlat = !regionStore.sortedRegions.some(r => r.parentID);
- const regions = regionStore.asTree((item, idx, onClick) => {
- return {
- key: item.id,
- title: ,
- };
- });
-
- const classifications = regionStore.classifications.map(item => ({
- classification: true,
- key: item.id,
- title: ,
- }));
-
- const treeData = [...classifications, ...regions];
-
- return (
- }
- onDragStart={({ event, node }) => {
- if (node.classification || !canDrag.current) {
- event.preventDefault();
- event.stopPropagation();
- return false;
- }
- }}
- onDrop={({ node, dragNode, dropPosition, dropToGap }) => {
- if (node.classification) return false;
- const dropKey = node.props.eventKey;
- const dragKey = dragNode.props.eventKey;
- const dropPos = node.props.pos.split('-');
-
- dropPosition = dropPosition - parseInt(dropPos[dropPos.length - 1]);
- const treeDepth = dropPos.length;
-
- const dropReg = regionStore.findRegionID(dropKey);
- const dragReg = regionStore.findRegionID(dragKey);
-
- regionStore.unhighlightAll();
-
- if (treeDepth === 2 && dropToGap && dropPosition === -1) {
- dragReg.setParentID('');
- } else if (dropPosition !== -1) {
- // check if the dragReg can be a child of dropReg
- const selDrop = dropReg.labeling?.selectedLabels || [];
- const labelWithConstraint = selDrop.filter(l => l.groupcancontain);
-
- if (labelWithConstraint.length) {
- const selDrag = dragReg.labeling.selectedLabels;
-
- const set1 = Utils.Checkers.flatten(labelWithConstraint.map(l => l.groupcancontain.split(',')));
- const set2 = Utils.Checkers.flatten(selDrag.map(l => (l.alias ? [l.alias, l.value] : [l.value])));
-
- if (set1.filter(value => -1 !== set2.indexOf(value)).length === 0) return;
- }
-
- // check drop regions tree depth
- if (dropReg.labeling?.from_name?.groupdepth) {
- let maxDepth = Number(dropReg.labeling.from_name.groupdepth);
-
- // find the height of the tree formed by dragReg for
- // example if we have a tree of A -> B -> C -> D and
- // we're moving B -> C part somewhere then it'd have a
- // height of 1
- const treeHeight = function(node) {
- if (!node) return 0;
-
- // TODO this can blow up if we have lots of stuff there
- const childrenHeight = regionStore.filterByParentID(node.pid).map(c => treeHeight(c));
-
- if (!childrenHeight.length) return 0;
-
- return 1 + Math.max.apply(Math, childrenHeight);
- };
-
- if (maxDepth >= 0) {
- maxDepth = maxDepth - treeHeight(dragReg);
- let reg = dropReg;
-
- while (reg) {
- reg = regionStore.findRegion(reg.parentID);
- maxDepth = maxDepth - 1;
- }
-
- if (maxDepth < 0) return;
- }
- }
-
- dragReg.setParentID(dropReg.id);
- }
- }}
- >
- {/* */}
-
- );
-});
diff --git a/src/components/Entities/SortMenu.js b/src/components/Entities/SortMenu.js
deleted file mode 100644
index bb73ed2f9..000000000
--- a/src/components/Entities/SortMenu.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Menu } from 'antd';
-import { observer } from 'mobx-react';
-import { ThunderboltOutlined } from '@ant-design/icons';
-import React from 'react';
-import { LsDate } from '../../assets/icons';
-import { Block, Elem } from '../../utils/bem';
-import './SortMenu.styl';
-
-export const SortMenuIcon = ({ sortKey }) => {
- switch (sortKey) {
- case 'date':
- return ;
- case 'score':
- return ;
- default:
- return null;
- }
-};
-
-export const SortMenu = observer(({ regionStore }) => {
- return (
-
-
- {
- regionStore.setSort('date');
- ev.preventDefault();
- return false;
- }}
- >
-
- Date
-
- {regionStore.sort === 'date' && (regionStore.sortOrder === 'asc' ? '↓' : '↑')}
-
-
-
- {
- regionStore.setSort('score');
- ev.preventDefault();
- return false;
- }}
- >
-
- Score
-
- {regionStore.sort === 'score' && (regionStore.sortOrder === 'asc' ? '↓' : '↑')}
-
-
-
- );
-});
diff --git a/src/components/Entities/SortMenu.styl b/src/components/Entities/SortMenu.styl
deleted file mode 100644
index b1bf34bd1..000000000
--- a/src/components/Entities/SortMenu.styl
+++ /dev/null
@@ -1,18 +0,0 @@
-.sort-menu
- &__option-inner
- width: 135px
- display: flex
- justify-content: space-between
- &__title
- display flex
- align-items center
- &__icon
- display flex
- align-items center
- justify-content: center;
- width: 24px
- height: 24px
- margin-right: 4px
-
- &__icon > *
- margin: 0 !important
\ No newline at end of file
diff --git a/src/components/Entity/Entity.js b/src/components/Entity/Entity.js
deleted file mode 100644
index 7378c8b33..000000000
--- a/src/components/Entity/Entity.js
+++ /dev/null
@@ -1,243 +0,0 @@
-import React, { Fragment } from 'react';
-import { observer } from 'mobx-react';
-import { Badge, Form, Input } from 'antd';
-import { CompressOutlined, DeleteOutlined, LinkOutlined, PlusOutlined } from '@ant-design/icons';
-import { Typography } from 'antd';
-
-import { NodeDebug, NodeMinimal } from '../Node/Node';
-import Hint from '../Hint/Hint';
-import styles from './Entity.module.scss';
-import { Tooltip } from '../../common/Tooltip/Tooltip';
-import { Button } from '../../common/Button/Button';
-import { Tag } from '../../common/Tag/Tag';
-import { Space } from '../../common/Space/Space';
-import { Block, Elem } from '../../utils/bem';
-import './Entity.styl';
-import { PER_REGION_MODES } from '../../mixins/PerRegion';
-import { Hotkey } from '../../core/Hotkey';
-import { IconWarning } from '../../assets/icons';
-
-
-const { Paragraph, Text } = Typography;
-
-const renderLabels = element => {
- return element.selectedLabels?.length ? (
-
- Labels:
- {element.selectedLabels.map(label => {
- const bgColor = label.background || '#000000';
-
- return (
-
- {label.value}
-
- );
- })}
-
- ) : null;
-};
-
-const renderResult = result => {
- if (result.type.endsWith('labels')) {
- return renderLabels(result);
- } else if (result.type === 'rating') {
- return Rating: {result.mainValue};
- } else if (result.type === 'textarea' && !(result.from_name.perregion && result.from_name.displaymode === PER_REGION_MODES.REGION_LIST)) {
- return (
-
- Text:
-
- {result.mainValue.join('\n')}
-
-
- );
- } else if (result.type === 'choices') {
- return Choices: {result.mainValue.join(', ')};
- }
-
- return null;
-};
-
-export default observer(({ store, annotation }) => {
- const { highlightedNode: node, selectedRegions: nodes, selectionSize } = annotation;
- const [editMode, setEditMode] = React.useState(false);
-
- const entityButtons = [];
- const hasEditableNodes = !!nodes.find(node => !node.isReadOnly());
- const hasEditableRegions = !!nodes.find(node => !node.isReadOnly() && !node.classification);
-
- const Node = window.HTX_DEBUG ? NodeDebug : NodeMinimal;
-
- if (hasEditableRegions) {
- entityButtons.push(
-
-
- ,
- );
-
- entityButtons.push(
-
-
- ,
- );
- }
-
- entityButtons.push(
-
-
- ,
- );
-
- return (
-
-
-
- {node ? (
- <>
-
- {' '}
- (ID: {node.id})
- >
- ) : `${selectionSize} Region${(selectionSize > 1) ? 's are' : ' is'} selected` }
-
- {!hasEditableNodes && }
-
-
- {node?.score && (
-
-
- Score: {node.score}
-
-
- )}
-
- {node?.meta?.text && (
-
- Meta: {node.meta.text}
-
- {
- node.deleteMetaInfo();
- }}
- />
-
- )}
-
- {node?.results.map(renderResult)}
-
-
- {node?.isDrawing && (
-
-
- Incomplete {node.type.replace('region', '')}
-
- )}
-
-
-
-
- {entityButtons}
-
-
- {hasEditableNodes && (
-
-
-
- )}
-
- {/* */}
- {/* */}
- {/* */}
-
-
- {editMode && (
-
- )}
-
- );
-});
diff --git a/src/components/Entity/Entity.module.scss b/src/components/Entity/Entity.module.scss
deleted file mode 100644
index 83f6415e4..000000000
--- a/src/components/Entity/Entity.module.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-.block {
- display: flex;
- justify-content: flex-start;
- align-items: flex-start;
- flex-wrap: wrap;
- margin-top: 1em;
-}
-
-.button {
- margin-bottom: 10px;
- margin-right: 10px;
-}
-
-.labels {
- word-break: break-word;
-}
-
-.tag {
- margin-bottom: 5px;
- white-space: normal !important;
-}
-
-.statesblk > span {
- display: block;
-}
-
-.statesblk > div {
- margin-bottom: 0;
-}
-
-.row {
- display: flex;
- white-space: pre-wrap;
- margin-bottom: 12px;
-}
-
-.long {
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
diff --git a/src/components/Entity/Entity.styl b/src/components/Entity/Entity.styl
deleted file mode 100644
index 3201243e8..000000000
--- a/src/components/Entity/Entity.styl
+++ /dev/null
@@ -1,25 +0,0 @@
-.entity
- padding 0 15px
- margin-top 12px
-
- &__info
- margin-bottom 12px
-
- &__warning
- box-sizing border-box
- display flex
- flex-direction row
- align-items center
- padding 8px
- gap 8px
- background rgba(255, 183, 122, 0.16)
- border 1px solid rgba(137, 128, 152, 0.16)
- border-radius 4px
- margin 16px 0 0
- flex none
- order 0
- flex-grow 1
- svg
- width 20px
- height 17px
- fill var(--incomplete-warning-color, #FA8C16)
diff --git a/src/components/Relations/Relations.js b/src/components/Relations/Relations.js
deleted file mode 100644
index dc21585ef..000000000
--- a/src/components/Relations/Relations.js
+++ /dev/null
@@ -1,177 +0,0 @@
-import React from 'react';
-import { Button, List, Select } from 'antd';
-import { getRoot, isValidReference } from 'mobx-state-tree';
-import { observer } from 'mobx-react';
-import { ArrowLeftOutlined, ArrowRightOutlined, DeleteOutlined, MoreOutlined, SwapOutlined } from '@ant-design/icons';
-
-import styles from './Relations.module.scss';
-import { NodeMinimal } from '../Node/Node';
-import { wrapArray } from '../../utils/utilities';
-import globalStyles from '../../styles/global.module.scss';
-
-import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons';
-import { Block, Elem } from '../../utils/bem';
-import './Relations.styl';
-
-const { Option } = Select;
-
-const RelationMeta = observer(({ rl }) => {
- const r = rl.relations;
- const selected = r.getSelected().map(v => v.value);
-
- return (
-
-
LABELS
-
-
- );
-});
-
-/**
- * Relation Component
- *
- * Shows the relationship between two selected items
- */
-const Relation = observer(({ rl }) => {
- if (!isValidReference(() => rl.node1) || !isValidReference(() => rl.node2)) {
- return null;
- }
-
- const iconMap = {
- left: ,
- right: ,
- bi: ,
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-});
-
-const ListItem = observer(({ item }) => {
- const node = getRoot(item).annotationStore.selected.highlightedNode;
- const isSelected = node === item.node1 || node === item.node2;
-
- return (
- {
- item.toggleHighlight();
- item.setSelfHighlight(true);
- }}
- onMouseLeave={() => {
- item.toggleHighlight();
- item.setSelfHighlight(false);
- }}
- >
-
-
-
-
-
- {item.hasRelations && (
-
- )}
-
-
-
-
- {item.showMeta && }
-
- );
-});
-
-const RelationsComponent = ({ store }) => {
- const annotation = store.annotationStore.selected;
- const { relations } = annotation.relationStore;
- const hasRelations = relations.length > 0;
- const relationsUIVisible = annotation.relationStore.showConnections;
-
- return (
-
- {/* override LS styles' height */}
-
- Relations ({relations.length})
- {hasRelations && (
- : }
- onClick={() => annotation.relationStore.toggleConnections()}
- className={[relationsUIVisible ? styles.uihidden : styles.uivisible, globalStyles.link]}
- />
- )}
-
-
-
- {hasRelations ? (
- }
- />
- ) : (
- No Relations added yet
- )}
-
-
- );
-};
-
-export const Relations = observer(RelationsComponent);
-
-export default Relations;
diff --git a/src/components/Relations/Relations.module.scss b/src/components/Relations/Relations.module.scss
deleted file mode 100644
index 9d8766088..000000000
--- a/src/components/Relations/Relations.module.scss
+++ /dev/null
@@ -1,66 +0,0 @@
-.list {
- max-height: 350px;
- overflow-y: auto;
-}
-
-.item {
- display: flex;
- justify-content: space-between;
-}
-
-.selected {
- background: #f1f1f1;
-}
-
-.block {
- display: flex;
- align-items: center;
- margin-bottom: 1em;
-}
-
-.relationbtn {
- margin-left: 7px;
- margin-right: 7px;
-}
-
-.header {
- font-size: 12px;
- font-weight: bold;
- color: #666;
-}
-
-.section {
- width: 100%;
- display: block;
- position: relative;
- background: #fff;
- padding: 1em;
- border: 1px solid rgba(0, 0, 0, 0.2);
- border-radius: 0.2rem;
-
- &:before {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- margin: 0 auto;
- height: 100%;
- width: 1px;
- background: rgba(0, 0, 0, 0.05);
- content: "";
- }
-
- &__blocks {
- display: flex;
- justify-content: space-around;
- align-items: center;
- }
-}
-
-.uihidden {
- opacity: 0.5;
-}
-
-.uivisible {
- opacity: 1;
-}
diff --git a/src/components/Relations/Relations.styl b/src/components/Relations/Relations.styl
deleted file mode 100644
index 7d4eb3bdc..000000000
--- a/src/components/Relations/Relations.styl
+++ /dev/null
@@ -1,16 +0,0 @@
-.relations
- &__header
- display flex
- height 46px
- justify-content space-between
- padding 12px 15px
- align-items center
- font-weight 500
- font-size 16px
- line-height 22px
-
- &__title
- flex 1
-
- &__content
- padding 0 15px
diff --git a/src/components/SidePanels/OutlinerPanel/ViewControls.tsx b/src/components/SidePanels/OutlinerPanel/ViewControls.tsx
index 294766582..4e37bf4f2 100644
--- a/src/components/SidePanels/OutlinerPanel/ViewControls.tsx
+++ b/src/components/SidePanels/OutlinerPanel/ViewControls.tsx
@@ -74,8 +74,6 @@ export const ViewControls: FC = ({
}
}, []);
- console.log('regions?.regions', regions?.regions);
-
return (
{
- const [selected, setSelected] = useState(active);
- const tabs = Children.toArray(children);
-
- return (
-
-
- {tabs.length > 1 && (
-
- {tabs.map(tab => (
- setSelected(tab.props.name)}
- >
- {tab.props.title}
-
- ))}
-
- )}
-
- {tabs.find(tab => tab.props.name === selected)}
-
-
- );
-});
-
-export const SidebarPage = ({ children }) => {
- return children;
-};
-
-export const SidebarContent = ({ children }) => {
- return {children};
-};
diff --git a/src/components/SidebarTabs/SidebarTabs.styl b/src/components/SidebarTabs/SidebarTabs.styl
deleted file mode 100644
index 4934c05dd..000000000
--- a/src/components/SidebarTabs/SidebarTabs.styl
+++ /dev/null
@@ -1,38 +0,0 @@
-.sidebar-tabs
- flex 1
- position sticky
- display flex
- flex-direction column
- max-height 100vh
- top var(--sticky-items-offset)
-
- &__toggle
- width 100%
- height 44px
- display flex
- background-color #f3f3f3
-
- &__tab
- flex 1
- padding 12px 16px
- font-weight 500
- font-size 16px
- line-height 19px
- cursor pointer
- box-sizing border-box
- box-shadow 0 1px 0 rgba(#000, 0.1)
-
- &:not(:last-child)
- box-shadow -1px 0 0 rgba(#000, 0.1) inset, 0 1px 0 rgba(#000, 0.1)
-
- &_active
- background-color #fff
- box-shadow none
- cursor default
-
- &:not(:last-child)
- box-shadow -1px 0 0 rgba(#000, 0.1) inset
-
- &__content
- flex 1
- overflow auto
diff --git a/src/tags/object/PagedView.js b/src/tags/object/PagedView.js
index 7fcdf5d8b..b1a5a0086 100644
--- a/src/tags/object/PagedView.js
+++ b/src/tags/object/PagedView.js
@@ -7,7 +7,6 @@ import Types from '../../core/Types';
import Tree from '../../core/Tree';
import { Pagination } from '../../common/Pagination/Pagination';
import { Hotkey } from '../../core/Hotkey';
-import { FF_DEV_1170, isFF } from '../../utils/feature-flags';
import { AnnotationMixin } from '../../mixins/AnnotationMixin';
const Model = types.model({
@@ -143,12 +142,8 @@ const HtxPagedView = observer(({ item }) => {
}, [item.annotation.lastSelectedRegion]);
useEffect(() => {
- if (isFF(FF_DEV_1170)) {
- document.querySelector('.lsf-sidepanels__content')?.scrollTo(0, 0);
- } else {
- document.querySelector('#label-studio-dm')?.scrollTo(0, 0);
- }
-
+ document.querySelector('.lsf-sidepanels__content')?.scrollTo(0, 0);
+
setTimeout(() => {
hotkeys.addNamed('repeater:next-page', () => {
if (page < totalPages) {
diff --git a/src/utils/feature-flags.ts b/src/utils/feature-flags.ts
index 13a9bad6e..844fe4a63 100644
--- a/src/utils/feature-flags.ts
+++ b/src/utils/feature-flags.ts
@@ -1,6 +1,3 @@
-// Outliner + Details
-export const FF_DEV_1170 = 'ff_front_1170_outliner_030222_short';
-
// Fix lag on first video playing start
export const FF_DEV_1265 = 'ff_front_dev_1265_video_start_lag_100322_short';
diff --git a/tests/functional/feature-flags.ts b/tests/functional/feature-flags.ts
index 771d70049..e7814d858 100644
--- a/tests/functional/feature-flags.ts
+++ b/tests/functional/feature-flags.ts
@@ -1,6 +1,5 @@
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
import * as FLAGS from '../../src/utils/feature-flags';
-export const CURRENT_FLAGS = {
- [FLAGS.FF_DEV_1170]: true,
-};
+export const CURRENT_FLAGS = {};