@searpent/react-image-annotate 2.3.4 → 2.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/Annotator/examplePhotos.js +28 -28
  2. package/Annotator/examplePhotos_repr.js +28 -28
  3. package/Annotator/index.js +40 -31
  4. package/Annotator/index.story_bugdemo_15_1.js +895 -773
  5. package/Annotator/index.story_repr.js +1048 -933
  6. package/Annotator/reducers/convert-expanding-line-to-polygon.js +15 -16
  7. package/ClassSelectionMenu/index.js +55 -35
  8. package/Crosshairs/index.js +30 -23
  9. package/DebugSidebarBox/index.js +40 -9
  10. package/DemoSite/Editor.js +124 -79
  11. package/DemoSite/ErrorBoundaryDialog.js +19 -6
  12. package/DemoSite/index.js +26 -17
  13. package/Editor/index.js +70 -36
  14. package/Editor/index_bugdemo_15_1.js +68 -35
  15. package/Editor/readOnly.js +178 -127
  16. package/Errorer/index.js +8 -3
  17. package/FullImageSegmentationAnnotator/index.js +6 -3
  18. package/GroupSelectorSidebarBox/index.js +48 -32
  19. package/GroupsEditorSidebarBox/index.js +75 -40
  20. package/HelpSidebarBox/index.js +24 -13
  21. package/HighlightBox/index.js +37 -30
  22. package/HistorySidebarBox/index.js +51 -29
  23. package/ImageCanvas/index.js +165 -130
  24. package/ImageMask/index.js +9 -6
  25. package/ImageSelectorSidebarBox/index.js +44 -26
  26. package/KeyframeTimeline/index.js +65 -45
  27. package/KeyframesSelectorSidebarBox/index.js +76 -54
  28. package/LandingPage/index.js +76 -38
  29. package/Locker/index.js +8 -3
  30. package/MainLayout/RightSidebarItemsWrapper.js +7 -4
  31. package/MainLayout/icon-dictionary.js +99 -66
  32. package/MainLayout/index.js +258 -196
  33. package/MainLayout/index_bugdemo_15_1.js +253 -195
  34. package/MetadataEditorSidebarBox/index.js +152 -102
  35. package/MetadataEditorSidebarBox/index_14_01_25.js +152 -102
  36. package/MetadataEditorSidebarBox/index_repr.js +183 -128
  37. package/PageSelector/UpdatedBySemaphore.js +95 -0
  38. package/PageSelector/index.js +181 -97
  39. package/PageSelector/page-selector.css +118 -2
  40. package/PointDistances/index.js +45 -33
  41. package/PreventScrollToParents/index.js +16 -9
  42. package/RegionLabel/index.js +217 -165
  43. package/RegionSelectAndTransformBoxes/index.js +131 -105
  44. package/RegionSelectorSidebarBox/index.js +243 -165
  45. package/RegionShapes/index.js +213 -153
  46. package/RegionTags/index.js +83 -69
  47. package/SettingsDialog/index.js +50 -37
  48. package/SettingsProvider/index.js +8 -5
  49. package/Shortcuts/ShortcutField.js +21 -14
  50. package/Shortcuts/index.js +18 -12
  51. package/ShortcutsManager/index.js +7 -4
  52. package/Sidebar/index.js +46 -29
  53. package/SidebarBoxContainer/index.js +14 -7
  54. package/SmallToolButton/index.js +23 -16
  55. package/TagsSidebarBox/index.js +41 -28
  56. package/TaskDescriptionSidebarBox/index.js +24 -13
  57. package/Theme/index.js +8 -3
  58. package/VideoOrImageCanvasBackground/index.js +30 -17
  59. package/package.json +1 -1
  60. package/utils/spellcheck-nspell.js +2 -2
@@ -11,92 +11,125 @@ var faStyle = {
11
11
  };
12
12
  export var iconDictionary = {
13
13
  select: function select() {
14
- return React.createElement(FontAwesomeIcon, {
15
- style: faStyle,
16
- size: "xs",
17
- fixedWidth: true,
18
- icon: faMousePointer
19
- });
14
+ return (
15
+ /*#__PURE__*/
16
+ React.createElement(FontAwesomeIcon, {
17
+ style: faStyle,
18
+ size: "xs",
19
+ fixedWidth: true,
20
+ icon: faMousePointer
21
+ })
22
+ );
20
23
  },
21
24
  pan: function pan() {
22
- return React.createElement(FontAwesomeIcon, {
23
- style: faStyle,
24
- size: "xs",
25
- fixedWidth: true,
26
- icon: faHandPaper
27
- });
25
+ return (
26
+ /*#__PURE__*/
27
+ React.createElement(FontAwesomeIcon, {
28
+ style: faStyle,
29
+ size: "xs",
30
+ fixedWidth: true,
31
+ icon: faHandPaper
32
+ })
33
+ );
28
34
  },
29
35
  zoom: function zoom() {
30
- return React.createElement(FontAwesomeIcon, {
31
- style: faStyle,
32
- size: "xs",
33
- fixedWidth: true,
34
- icon: faSearch
35
- });
36
+ return (
37
+ /*#__PURE__*/
38
+ React.createElement(FontAwesomeIcon, {
39
+ style: faStyle,
40
+ size: "xs",
41
+ fixedWidth: true,
42
+ icon: faSearch
43
+ })
44
+ );
36
45
  },
37
46
  "show-tags": function showTags() {
38
- return React.createElement(FontAwesomeIcon, {
39
- style: faStyle,
40
- size: "xs",
41
- fixedWidth: true,
42
- icon: faTag
43
- });
47
+ return (
48
+ /*#__PURE__*/
49
+ React.createElement(FontAwesomeIcon, {
50
+ style: faStyle,
51
+ size: "xs",
52
+ fixedWidth: true,
53
+ icon: faTag
54
+ })
55
+ );
44
56
  },
45
57
  "create-point": function createPoint() {
46
- return React.createElement(FontAwesomeIcon, {
47
- style: faStyle,
48
- size: "xs",
49
- fixedWidth: true,
50
- icon: faCrosshairs
51
- });
58
+ return (
59
+ /*#__PURE__*/
60
+ React.createElement(FontAwesomeIcon, {
61
+ style: faStyle,
62
+ size: "xs",
63
+ fixedWidth: true,
64
+ icon: faCrosshairs
65
+ })
66
+ );
52
67
  },
53
68
  "create-box": function createBox() {
54
- return React.createElement(FontAwesomeIcon, {
55
- style: faStyle,
56
- size: "xs",
57
- fixedWidth: true,
58
- icon: faVectorSquare
59
- });
69
+ return (
70
+ /*#__PURE__*/
71
+ React.createElement(FontAwesomeIcon, {
72
+ style: faStyle,
73
+ size: "xs",
74
+ fixedWidth: true,
75
+ icon: faVectorSquare
76
+ })
77
+ );
60
78
  },
61
79
  "create-polygon": function createPolygon() {
62
- return React.createElement(FontAwesomeIcon, {
63
- style: faStyle,
64
- size: "xs",
65
- fixedWidth: true,
66
- icon: faDrawPolygon
67
- });
80
+ return (
81
+ /*#__PURE__*/
82
+ React.createElement(FontAwesomeIcon, {
83
+ style: faStyle,
84
+ size: "xs",
85
+ fixedWidth: true,
86
+ icon: faDrawPolygon
87
+ })
88
+ );
68
89
  },
69
90
  "create-expanding-line": function createExpandingLine() {
70
- return React.createElement(FontAwesomeIcon, {
71
- style: faStyle,
72
- size: "xs",
73
- fixedWidth: true,
74
- icon: faGripLines
75
- });
91
+ return (
92
+ /*#__PURE__*/
93
+ React.createElement(FontAwesomeIcon, {
94
+ style: faStyle,
95
+ size: "xs",
96
+ fixedWidth: true,
97
+ icon: faGripLines
98
+ })
99
+ );
76
100
  },
77
101
  "create-line": function createLine() {
78
- return React.createElement(FontAwesomeIcon, {
79
- style: faStyle,
80
- size: "xs",
81
- fixedWidth: true,
82
- icon: faChartLine
83
- });
102
+ return (
103
+ /*#__PURE__*/
104
+ React.createElement(FontAwesomeIcon, {
105
+ style: faStyle,
106
+ size: "xs",
107
+ fixedWidth: true,
108
+ icon: faChartLine
109
+ })
110
+ );
84
111
  },
85
112
  "show-mask": function showMask() {
86
- return React.createElement(FontAwesomeIcon, {
87
- style: faStyle,
88
- size: "xs",
89
- fixedWidth: true,
90
- icon: faMask
91
- });
113
+ return (
114
+ /*#__PURE__*/
115
+ React.createElement(FontAwesomeIcon, {
116
+ style: faStyle,
117
+ size: "xs",
118
+ fixedWidth: true,
119
+ icon: faMask
120
+ })
121
+ );
92
122
  },
93
123
  "modify-allowed-area": function modifyAllowedArea() {
94
- return React.createElement(FontAwesomeIcon, {
95
- style: faStyle,
96
- size: "xs",
97
- fixedWidth: true,
98
- icon: faEdit
99
- });
124
+ return (
125
+ /*#__PURE__*/
126
+ React.createElement(FontAwesomeIcon, {
127
+ style: faStyle,
128
+ size: "xs",
129
+ fixedWidth: true,
130
+ icon: faEdit
131
+ })
132
+ );
100
133
  },
101
134
  "create-keypoints": AccessibilityNewIcon,
102
135
  window: FullscreenIcon
@@ -53,9 +53,12 @@ var HotkeyDiv = withHotKeys(function (_ref) {
53
53
  divRef = _ref.divRef,
54
54
  props = _objectWithoutProperties(_ref, ["hotKeys", "children", "divRef"]);
55
55
 
56
- return React.createElement("div", Object.assign({}, _objectSpread({}, hotKeys, props), {
57
- ref: divRef
58
- }), children);
56
+ return (
57
+ /*#__PURE__*/
58
+ React.createElement("div", Object.assign({}, _objectSpread({}, hotKeys, props), {
59
+ ref: divRef
60
+ }), children)
61
+ );
59
62
  });
60
63
  var FullScreenContainer = styled("div")(function (_ref2) {
61
64
  var theme = _ref2.theme;
@@ -130,7 +133,9 @@ export var MainLayout = function MainLayout(_ref5) {
130
133
  saveActive = _ref5$saveActive === void 0 ? false : _ref5$saveActive,
131
134
  onMetadataChange = _ref5.onMetadataChange,
132
135
  onAddGroup = _ref5.onAddGroup,
133
- onRecalcClick = _ref5.onRecalcClick;
136
+ onRecalcClick = _ref5.onRecalcClick,
137
+ updatedBy = _ref5.updatedBy,
138
+ mediaPresenterLeaseUntil = _ref5.mediaPresenterLeaseUntil;
134
139
  var classes = useStyles();
135
140
  var settings = useSettings();
136
141
  var fullScreenHandle = useFullScreenHandle();
@@ -201,7 +206,9 @@ export var MainLayout = function MainLayout(_ref5) {
201
206
  var allowedGroups = useMemo(function () {
202
207
  return regionsGroups(state.images[state.selectedImage].regions);
203
208
  }, [state.images, state.selectedImage]);
204
- var canvas = React.createElement(ImageCanvas, Object.assign({}, settings, {
209
+ var canvas =
210
+ /*#__PURE__*/
211
+ React.createElement(ImageCanvas, Object.assign({}, settings, {
205
212
  showCrosshairs: settings.showCrosshairs && !["select", "pan", "zoom"].includes(state.selectedTool),
206
213
  key: state.selectedImage,
207
214
  showMask: state.showMask,
@@ -330,199 +337,254 @@ export var MainLayout = function MainLayout(_ref5) {
330
337
  var selectedFrame = ((_state$images$state$s4 = state.images[state.selectedImage]) === null || _state$images$state$s4 === void 0 ? void 0 : (_state$images$state$s5 = _state$images$state$s4.regions.find(function (i) {
331
338
  return i.highlighted === true;
332
339
  })) === null || _state$images$state$s5 === void 0 ? void 0 : _state$images$state$s5.id) || '';
333
- return React.createElement(ThemeProvider, {
334
- theme: theme
335
- }, React.createElement(FullScreenContainer, null, React.createElement(FullScreen, {
336
- handle: fullScreenHandle,
337
- onChange: function onChange(open) {
338
- if (!open) {
339
- fullScreenHandle.exit();
340
- action("HEADER_BUTTON_CLICKED", "buttonName")("Window");
340
+ return (
341
+ /*#__PURE__*/
342
+ React.createElement(ThemeProvider, {
343
+ theme: theme
344
+ },
345
+ /*#__PURE__*/
346
+ React.createElement(FullScreenContainer, null,
347
+ /*#__PURE__*/
348
+ React.createElement(FullScreen, {
349
+ handle: fullScreenHandle,
350
+ onChange: function onChange(open) {
351
+ if (!open) {
352
+ fullScreenHandle.exit();
353
+ action("HEADER_BUTTON_CLICKED", "buttonName")("Window");
354
+ }
341
355
  }
342
- }
343
- }, React.createElement(HotkeyDiv, {
344
- tabIndex: -1,
345
- divRef: innerContainerRef,
346
- onMouseDown: refocusOnMouseEvent,
347
- onMouseOver: refocusOnMouseEvent,
348
- allowChanges: true,
349
- handlers: hotkeyHandlers,
350
- className: classnames(classes.container, state.fullScreen && "Fullscreen")
351
- }, React.createElement("div", {
352
- style: {
353
- display: 'flex',
354
- flexDirection: 'row'
355
- }
356
- }, showPageSelector && React.createElement(PageSelector, {
357
- pages: pages,
358
- onPageClick: handlePageClick,
359
- onMetadataChange: onMetadataChange,
360
- metadataConfigs: state.metadataConfigs || [],
361
- onRecalcClick: onRecalcClick
362
- }), React.createElement(WorkspaceWrapper, null, React.createElement(Workspace, {
363
- style: {
364
- width: "auto"
365
356
  },
366
- allowFullscreen: true,
367
- iconDictionary: iconDictionary,
368
- hideHeader: hideHeader,
369
- hideHeaderText: hideHeaderText,
370
- headerLeftSide: [state.annotationType === "video" ? React.createElement(KeyframeTimeline, {
371
- currentTime: state.currentVideoTime,
372
- duration: state.videoDuration,
373
- onChangeCurrentTime: action("CHANGE_VIDEO_TIME", "newTime"),
374
- keyframes: state.keyframes
375
- }) : activeImage ? React.createElement("div", {
376
- className: classes.headerTitle
377
- }, activeImage.name) : null].filter(Boolean),
378
- headerItems: [!hidePrev && {
379
- name: "Prev"
380
- }, !hideNext && {
381
- name: "Next"
382
- }, state.annotationType !== "video" ? null : !state.videoPlaying ? {
383
- name: "Play"
384
- } : {
385
- name: "Pause"
386
- }, !hideClone && !nextImageHasRegions && activeImage.regions && {
387
- name: "Clone"
388
- }, !hideSettings && {
389
- name: "Settings"
390
- }, !hideFullScreen && (state.fullScreen ? {
391
- name: "Window"
392
- } : {
393
- name: "Fullscreen"
394
- }), !hideSave && {
395
- name: "Save"
396
- }].filter(Boolean),
397
- onClickHeaderItem: onClickHeaderItem,
398
- onClickIconSidebarItem: onClickIconSidebarItem,
399
- selectedTools: [state.selectedTool, state.showTags && "show-tags", state.showMask && "show-mask"].filter(Boolean),
400
- iconSidebarItems: !state.enabledTools ? [] : [{
401
- name: "select",
402
- helperText: "Select" + getHotkeyHelpText("select_tool"),
403
- alwaysShowing: false
404
- }, {
405
- name: "pan",
406
- helperText: "Drag/Pan (right or middle click)" + getHotkeyHelpText("pan_tool"),
407
- alwaysShowing: false
408
- }, {
409
- name: "zoom",
410
- helperText: "Zoom In/Out (scroll)" + getHotkeyHelpText("zoom_tool"),
411
- alwaysShowing: false
412
- }, {
413
- name: "show-tags",
414
- helperText: "Show / Hide Tags",
415
- alwaysShowing: false
416
- }, {
417
- name: "create-point",
418
- helperText: "Add Point" + getHotkeyHelpText("create_point")
419
- }, {
420
- name: "create-box",
421
- helperText: "Add Bounding Box" + getHotkeyHelpText("create_bounding_box")
422
- }, {
423
- name: "create-polygon",
424
- helperText: "Add Polygon" + getHotkeyHelpText("create_polygon")
425
- }, {
426
- name: "create-line",
427
- helperText: "Add Line"
428
- }, {
429
- name: "create-expanding-line",
430
- helperText: "Add Expanding Line"
431
- }, {
432
- name: "create-keypoints",
433
- helperText: "Add Keypoints (Pose)"
434
- }, state.fullImageSegmentationMode && {
435
- name: "show-mask",
436
- alwaysShowing: false,
437
- helperText: "Show / Hide Mask"
438
- }, {
439
- name: "modify-allowed-area",
440
- helperText: "Modify Allowed Area"
441
- }].filter(Boolean).filter(function (a) {
442
- return a.alwaysShowing || state.enabledTools.includes(a.name);
443
- }),
444
- rightSidebarItems: [React.createElement(RightSidebarItemsWrapper, null, [isSelectedImageLocked && React.createElement(Locker, null), debugModeOn && React.createElement(DebugBox, {
445
- state: debugModeOn,
446
- lastAction: state.lastAction,
447
- key: "debug-box"
448
- }), state.taskDescription && React.createElement(TaskDescription, {
449
- description: state.taskDescription,
450
- key: "task-description"
451
- }), state.help && React.createElement(Help, {
452
- help: state.help,
453
- key: "help"
454
- }), state.regionClsList && React.createElement(ClassSelectionMenu, {
455
- selectedCls: state.selectedCls,
456
- regionClsList: state.regionClsList,
457
- onSelectCls: action("SELECT_CLASSIFICATION", "cls"),
458
- key: "class-selection-menu"
459
- }), state.labelImages && React.createElement(TagsSidebarBox, {
460
- currentImage: activeImage,
461
- imageClsList: state.imageClsList,
462
- imageTagList: state.imageTagList,
463
- onChangeImage: action("CHANGE_IMAGE", "delta"),
464
- expandedByDefault: true,
465
- key: "tags-sidebar-box"
466
- }),, // (state.images?.length || 0) > 1 && (
467
- // <ImageSelector
468
- // onSelect={action("SELECT_REGION", "region")}
469
- // images={state.images}
470
- // />
471
- // ),
472
- // groups && (
473
- // <GroupSelector
474
- // title="Articles"
475
- // groups={groups}
476
- // selectedGroupId={selectedGroupId}
477
- // onSelect={onGroupSelect}
478
- // />
479
- // )
480
- React.createElement(RegionSelector, {
481
- regions: activeImage ? activeImage.regions : emptyArr,
482
- onSelectRegion: action("SELECT_REGION", "region"),
483
- onDeleteRegion: action("DELETE_REGION", "region"),
484
- onDeleteAllRegions: action("DELETE_ALL_REGIONS"),
485
- onChangeRegion: action("CHANGE_REGION", "region"),
486
- key: "region-selector"
487
- }), state.keyframes && React.createElement(KeyframesSelector, {
488
- onChangeVideoTime: action("CHANGE_VIDEO_TIME", "newTime"),
489
- onDeleteKeyframe: action("DELETE_KEYFRAME", "time"),
490
- onDeleteAllKeyframes: action("DELETE_ALL_KEYFRAMES"),
491
- onChangeCurrentTime: action("CHANGE_VIDEO_TIME", "newTime"),
492
- currentTime: state.currentVideoTime,
493
- duration: state.videoDuration,
494
- keyframes: state.keyframes,
495
- key: "key-frame-selector"
496
- }), !hideHistory && React.createElement(HistorySidebarBox, {
497
- history: state.history,
498
- onRestoreHistory: action("RESTORE_HISTORY"),
499
- key: "history-sidebar"
500
- }), React.createElement(MetadataEditor, {
501
- state: state,
357
+ /*#__PURE__*/
358
+ React.createElement(HotkeyDiv, {
359
+ tabIndex: -1,
360
+ divRef: innerContainerRef,
361
+ onMouseDown: refocusOnMouseEvent,
362
+ onMouseOver: refocusOnMouseEvent,
363
+ allowChanges: true,
364
+ handlers: hotkeyHandlers,
365
+ className: classnames(classes.container, state.fullScreen && "Fullscreen")
366
+ },
367
+ /*#__PURE__*/
368
+ React.createElement("div", {
369
+ style: {
370
+ display: 'flex',
371
+ flexDirection: 'row'
372
+ }
373
+ }, showPageSelector &&
374
+ /*#__PURE__*/
375
+ React.createElement(PageSelector, {
376
+ pages: pages,
377
+ onPageClick: handlePageClick,
502
378
  onMetadataChange: onMetadataChange,
503
- key: "metadata-editor"
504
- }), React.createElement(GroupsEditor, {
505
- groups: allowedGroups,
506
- onAddGroup: onAddGroup,
507
- key: "groups-editor"
508
- })].filter(Boolean))]
509
- }, isSelectedImageLocked && React.createElement(Locker, null), canvas)), showEditor && !isSelectedImageLocked && React.createElement(EditorWrapper, {
510
- id: "editor-wrapper"
511
- }, React.createElement(Editor, {
512
- id: "editor",
513
- blocks: blocks,
514
- imageIndex: state.selectedImage,
515
- key: "".concat(state.selectedImage, "#").concat(selectedGroupId),
516
- selectedFrame: selectedFrame,
517
- onChange: handleEditorChange
518
- }))), React.createElement(SettingsDialog, {
519
- open: state.settingsOpen,
520
- onClose: function onClose() {
521
- return dispatch({
522
- type: "HEADER_BUTTON_CLICKED",
523
- buttonName: "Settings"
524
- });
525
- }
526
- })))));
379
+ metadataConfigs: state.metadataConfigs || [],
380
+ onRecalcClick: onRecalcClick,
381
+ updatedBy: updatedBy,
382
+ mediaPresenterLeaseUntil: mediaPresenterLeaseUntil
383
+ }),
384
+ /*#__PURE__*/
385
+ React.createElement(WorkspaceWrapper, null,
386
+ /*#__PURE__*/
387
+ React.createElement(Workspace, {
388
+ style: {
389
+ width: "auto"
390
+ },
391
+ allowFullscreen: true,
392
+ iconDictionary: iconDictionary,
393
+ hideHeader: hideHeader,
394
+ hideHeaderText: hideHeaderText,
395
+ headerLeftSide: [state.annotationType === "video" ?
396
+ /*#__PURE__*/
397
+ React.createElement(KeyframeTimeline, {
398
+ currentTime: state.currentVideoTime,
399
+ duration: state.videoDuration,
400
+ onChangeCurrentTime: action("CHANGE_VIDEO_TIME", "newTime"),
401
+ keyframes: state.keyframes
402
+ }) : activeImage ?
403
+ /*#__PURE__*/
404
+ React.createElement("div", {
405
+ className: classes.headerTitle
406
+ }, activeImage.name) : null].filter(Boolean),
407
+ headerItems: [!hidePrev && {
408
+ name: "Prev"
409
+ }, !hideNext && {
410
+ name: "Next"
411
+ }, state.annotationType !== "video" ? null : !state.videoPlaying ? {
412
+ name: "Play"
413
+ } : {
414
+ name: "Pause"
415
+ }, !hideClone && !nextImageHasRegions && activeImage.regions && {
416
+ name: "Clone"
417
+ }, !hideSettings && {
418
+ name: "Settings"
419
+ }, !hideFullScreen && (state.fullScreen ? {
420
+ name: "Window"
421
+ } : {
422
+ name: "Fullscreen"
423
+ }), !hideSave && {
424
+ name: "Save"
425
+ }].filter(Boolean),
426
+ onClickHeaderItem: onClickHeaderItem,
427
+ onClickIconSidebarItem: onClickIconSidebarItem,
428
+ selectedTools: [state.selectedTool, state.showTags && "show-tags", state.showMask && "show-mask"].filter(Boolean),
429
+ iconSidebarItems: !state.enabledTools ? [] : [{
430
+ name: "select",
431
+ helperText: "Select" + getHotkeyHelpText("select_tool"),
432
+ alwaysShowing: false
433
+ }, {
434
+ name: "pan",
435
+ helperText: "Drag/Pan (right or middle click)" + getHotkeyHelpText("pan_tool"),
436
+ alwaysShowing: false
437
+ }, {
438
+ name: "zoom",
439
+ helperText: "Zoom In/Out (scroll)" + getHotkeyHelpText("zoom_tool"),
440
+ alwaysShowing: false
441
+ }, {
442
+ name: "show-tags",
443
+ helperText: "Show / Hide Tags",
444
+ alwaysShowing: false
445
+ }, {
446
+ name: "create-point",
447
+ helperText: "Add Point" + getHotkeyHelpText("create_point")
448
+ }, {
449
+ name: "create-box",
450
+ helperText: "Add Bounding Box" + getHotkeyHelpText("create_bounding_box")
451
+ }, {
452
+ name: "create-polygon",
453
+ helperText: "Add Polygon" + getHotkeyHelpText("create_polygon")
454
+ }, {
455
+ name: "create-line",
456
+ helperText: "Add Line"
457
+ }, {
458
+ name: "create-expanding-line",
459
+ helperText: "Add Expanding Line"
460
+ }, {
461
+ name: "create-keypoints",
462
+ helperText: "Add Keypoints (Pose)"
463
+ }, state.fullImageSegmentationMode && {
464
+ name: "show-mask",
465
+ alwaysShowing: false,
466
+ helperText: "Show / Hide Mask"
467
+ }, {
468
+ name: "modify-allowed-area",
469
+ helperText: "Modify Allowed Area"
470
+ }].filter(Boolean).filter(function (a) {
471
+ return a.alwaysShowing || state.enabledTools.includes(a.name);
472
+ }),
473
+ rightSidebarItems: [
474
+ /*#__PURE__*/
475
+ React.createElement(RightSidebarItemsWrapper, null, [isSelectedImageLocked &&
476
+ /*#__PURE__*/
477
+ React.createElement(Locker, null), debugModeOn &&
478
+ /*#__PURE__*/
479
+ React.createElement(DebugBox, {
480
+ state: debugModeOn,
481
+ lastAction: state.lastAction,
482
+ key: "debug-box"
483
+ }), state.taskDescription &&
484
+ /*#__PURE__*/
485
+ React.createElement(TaskDescription, {
486
+ description: state.taskDescription,
487
+ key: "task-description"
488
+ }), state.help &&
489
+ /*#__PURE__*/
490
+ React.createElement(Help, {
491
+ help: state.help,
492
+ key: "help"
493
+ }), state.regionClsList &&
494
+ /*#__PURE__*/
495
+ React.createElement(ClassSelectionMenu, {
496
+ selectedCls: state.selectedCls,
497
+ regionClsList: state.regionClsList,
498
+ onSelectCls: action("SELECT_CLASSIFICATION", "cls"),
499
+ key: "class-selection-menu"
500
+ }), state.labelImages &&
501
+ /*#__PURE__*/
502
+ React.createElement(TagsSidebarBox, {
503
+ currentImage: activeImage,
504
+ imageClsList: state.imageClsList,
505
+ imageTagList: state.imageTagList,
506
+ onChangeImage: action("CHANGE_IMAGE", "delta"),
507
+ expandedByDefault: true,
508
+ key: "tags-sidebar-box"
509
+ }),,
510
+ /*#__PURE__*/
511
+ // (state.images?.length || 0) > 1 && (
512
+ // <ImageSelector
513
+ // onSelect={action("SELECT_REGION", "region")}
514
+ // images={state.images}
515
+ // />
516
+ // ),
517
+ // groups && (
518
+ // <GroupSelector
519
+ // title="Articles"
520
+ // groups={groups}
521
+ // selectedGroupId={selectedGroupId}
522
+ // onSelect={onGroupSelect}
523
+ // />
524
+ // )
525
+ React.createElement(RegionSelector, {
526
+ regions: activeImage ? activeImage.regions : emptyArr,
527
+ onSelectRegion: action("SELECT_REGION", "region"),
528
+ onDeleteRegion: action("DELETE_REGION", "region"),
529
+ onDeleteAllRegions: action("DELETE_ALL_REGIONS"),
530
+ onChangeRegion: action("CHANGE_REGION", "region"),
531
+ key: "region-selector"
532
+ }), state.keyframes &&
533
+ /*#__PURE__*/
534
+ React.createElement(KeyframesSelector, {
535
+ onChangeVideoTime: action("CHANGE_VIDEO_TIME", "newTime"),
536
+ onDeleteKeyframe: action("DELETE_KEYFRAME", "time"),
537
+ onDeleteAllKeyframes: action("DELETE_ALL_KEYFRAMES"),
538
+ onChangeCurrentTime: action("CHANGE_VIDEO_TIME", "newTime"),
539
+ currentTime: state.currentVideoTime,
540
+ duration: state.videoDuration,
541
+ keyframes: state.keyframes,
542
+ key: "key-frame-selector"
543
+ }), !hideHistory &&
544
+ /*#__PURE__*/
545
+ React.createElement(HistorySidebarBox, {
546
+ history: state.history,
547
+ onRestoreHistory: action("RESTORE_HISTORY"),
548
+ key: "history-sidebar"
549
+ }),
550
+ /*#__PURE__*/
551
+ React.createElement(MetadataEditor, {
552
+ state: state,
553
+ onMetadataChange: onMetadataChange,
554
+ key: "metadata-editor"
555
+ }),
556
+ /*#__PURE__*/
557
+ React.createElement(GroupsEditor, {
558
+ groups: allowedGroups,
559
+ onAddGroup: onAddGroup,
560
+ key: "groups-editor"
561
+ })].filter(Boolean))]
562
+ }, isSelectedImageLocked &&
563
+ /*#__PURE__*/
564
+ React.createElement(Locker, null), canvas)), showEditor && !isSelectedImageLocked &&
565
+ /*#__PURE__*/
566
+ React.createElement(EditorWrapper, {
567
+ id: "editor-wrapper"
568
+ },
569
+ /*#__PURE__*/
570
+ React.createElement(Editor, {
571
+ id: "editor",
572
+ blocks: blocks,
573
+ imageIndex: state.selectedImage,
574
+ key: "".concat(state.selectedImage, "#").concat(selectedGroupId),
575
+ selectedFrame: selectedFrame,
576
+ onChange: handleEditorChange
577
+ }))),
578
+ /*#__PURE__*/
579
+ React.createElement(SettingsDialog, {
580
+ open: state.settingsOpen,
581
+ onClose: function onClose() {
582
+ return dispatch({
583
+ type: "HEADER_BUTTON_CLICKED",
584
+ buttonName: "Settings"
585
+ });
586
+ }
587
+ })))))
588
+ );
527
589
  };
528
590
  export default MainLayout;