@searpent/react-image-annotate 2.0.12 → 2.0.16

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.
@@ -17,7 +17,7 @@ import videoReducer from "./reducers/video-reducer.js";
17
17
  function extractAllowedGroups(images) {
18
18
  var allowedGroups = [];
19
19
  images.forEach(function (image) {
20
- return image.regions.forEach(function (_ref) {
20
+ return image.regions && image.regions.forEach(function (_ref) {
21
21
  var groupId = _ref.groupId;
22
22
 
23
23
  if (!allowedGroups.includes(groupId)) {
@@ -84,7 +84,8 @@ export var Annotator = function Annotator(_ref2) {
84
84
  hideNotEditingLabel = _ref2.hideNotEditingLabel,
85
85
  showEditor = _ref2.showEditor,
86
86
  showPageSelector = _ref2.showPageSelector,
87
- clsColors = _ref2.clsColors,
87
+ _ref2$clsColors = _ref2.clsColors,
88
+ clsColors = _ref2$clsColors === void 0 ? {} : _ref2$clsColors,
88
89
  groupColors = _ref2.groupColors,
89
90
  onRecalc = _ref2.onRecalc,
90
91
  onSave = _ref2.onSave,
@@ -109,6 +109,7 @@ export var ClassSelectionMenu = function ClassSelectionMenu(_ref6) {
109
109
  expandedByDefault: true
110
110
  }, regionClsList.map(function (label, index) {
111
111
  return React.createElement(LabelContainer, {
112
+ key: label,
112
113
  className: classnames({
113
114
  selected: label === selectedCls
114
115
  }),
@@ -4,10 +4,9 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
4
  /**
5
5
  * Build styles
6
6
  */
7
- require('./annotation.css').toString(); // Possible classes
7
+ import './annotation.css'; // Possible classes
8
8
  // ================
9
9
 
10
-
11
10
  var Annotation =
12
11
  /*#__PURE__*/
13
12
  function () {
@@ -27,9 +27,9 @@ var GroupItem = function GroupItem(_ref2) {
27
27
 
28
28
  var GroupList = function GroupList(_ref3) {
29
29
  var groups = _ref3.groups;
30
- return React.createElement("div", null, React.createElement("h2", null, "Groups"), groups.map(function (g) {
30
+ return React.createElement("div", null, React.createElement("h2", null, "Groups"), groups.map(function (g, idx) {
31
31
  return React.createElement(GroupItem, {
32
- key: g,
32
+ key: "".concat(g, "-").concat(idx),
33
33
  group: g
34
34
  });
35
35
  }));
@@ -276,7 +276,7 @@ export var MainLayout = function MainLayout(_ref4) {
276
276
  var _i$metadata;
277
277
 
278
278
  return {
279
- id: idx,
279
+ id: "".concat(idx),
280
280
  src: i.src,
281
281
  isActive: idx === state.selectedImage,
282
282
  pageNumber: (i === null || i === void 0 ? void 0 : (_i$metadata = i.metadata) === null || _i$metadata === void 0 ? void 0 : _i$metadata.find(function (md) {
@@ -362,19 +362,19 @@ export var MainLayout = function MainLayout(_ref4) {
362
362
  iconSidebarItems: !state.enabledTools ? [] : [{
363
363
  name: "select",
364
364
  helperText: "Select" + getHotkeyHelpText("select_tool"),
365
- alwaysShowing: true
365
+ alwaysShowing: false
366
366
  }, {
367
367
  name: "pan",
368
368
  helperText: "Drag/Pan (right or middle click)" + getHotkeyHelpText("pan_tool"),
369
- alwaysShowing: true
369
+ alwaysShowing: false
370
370
  }, {
371
371
  name: "zoom",
372
372
  helperText: "Zoom In/Out (scroll)" + getHotkeyHelpText("zoom_tool"),
373
- alwaysShowing: true
373
+ alwaysShowing: false
374
374
  }, {
375
375
  name: "show-tags",
376
376
  helperText: "Show / Hide Tags",
377
- alwaysShowing: true
377
+ alwaysShowing: false
378
378
  }, {
379
379
  name: "create-point",
380
380
  helperText: "Add Point" + getHotkeyHelpText("create_point")
@@ -395,7 +395,7 @@ export var MainLayout = function MainLayout(_ref4) {
395
395
  helperText: "Add Keypoints (Pose)"
396
396
  }, state.fullImageSegmentationMode && {
397
397
  name: "show-mask",
398
- alwaysShowing: true,
398
+ alwaysShowing: false,
399
399
  helperText: "Show / Hide Mask"
400
400
  }, {
401
401
  name: "modify-allowed-area",
@@ -405,19 +405,23 @@ export var MainLayout = function MainLayout(_ref4) {
405
405
  }),
406
406
  rightSidebarItems: [debugModeOn && React.createElement(DebugBox, {
407
407
  state: debugModeOn,
408
- lastAction: state.lastAction
408
+ lastAction: state.lastAction,
409
+ key: "debug-box"
409
410
  }), state.taskDescription && React.createElement(TaskDescription, {
410
- description: state.taskDescription
411
+ description: state.taskDescription,
412
+ key: "task-description"
411
413
  }), state.regionClsList && React.createElement(ClassSelectionMenu, {
412
414
  selectedCls: state.selectedCls,
413
415
  regionClsList: state.regionClsList,
414
- onSelectCls: action("SELECT_CLASSIFICATION", "cls")
416
+ onSelectCls: action("SELECT_CLASSIFICATION", "cls"),
417
+ key: "class-selection-menu"
415
418
  }), state.labelImages && React.createElement(TagsSidebarBox, {
416
419
  currentImage: activeImage,
417
420
  imageClsList: state.imageClsList,
418
421
  imageTagList: state.imageTagList,
419
422
  onChangeImage: action("CHANGE_IMAGE", "delta"),
420
- expandedByDefault: true
423
+ expandedByDefault: true,
424
+ key: "tags-sidebar-box"
421
425
  }),, // (state.images?.length || 0) > 1 && (
422
426
  // <ImageSelector
423
427
  // onSelect={action("SELECT_REGION", "region")}
@@ -436,23 +440,28 @@ export var MainLayout = function MainLayout(_ref4) {
436
440
  regions: activeImage ? activeImage.regions : emptyArr,
437
441
  onSelectRegion: action("SELECT_REGION", "region"),
438
442
  onDeleteRegion: action("DELETE_REGION", "region"),
439
- onChangeRegion: action("CHANGE_REGION", "region")
443
+ onChangeRegion: action("CHANGE_REGION", "region"),
444
+ key: "region-selector"
440
445
  }), state.keyframes && React.createElement(KeyframesSelector, {
441
446
  onChangeVideoTime: action("CHANGE_VIDEO_TIME", "newTime"),
442
447
  onDeleteKeyframe: action("DELETE_KEYFRAME", "time"),
443
448
  onChangeCurrentTime: action("CHANGE_VIDEO_TIME", "newTime"),
444
449
  currentTime: state.currentVideoTime,
445
450
  duration: state.videoDuration,
446
- keyframes: state.keyframes
451
+ keyframes: state.keyframes,
452
+ key: "key-frame-selector"
447
453
  }), !hideHistory && React.createElement(HistorySidebarBox, {
448
454
  history: state.history,
449
- onRestoreHistory: action("RESTORE_HISTORY")
455
+ onRestoreHistory: action("RESTORE_HISTORY"),
456
+ key: "history-sidebar"
450
457
  }), React.createElement(MetadataEditor, {
451
458
  state: state,
452
- onMetadataChange: onMetadataChange
459
+ onMetadataChange: onMetadataChange,
460
+ key: "metadata-editor"
453
461
  }), React.createElement(GroupsEditor, {
454
462
  groups: state.allowedGroups,
455
- onAddGroup: onAddGroup
463
+ onAddGroup: onAddGroup,
464
+ key: "groups-editor"
456
465
  })].filter(Boolean)
457
466
  }, canvas), showEditor && React.createElement(EditorWrapper, {
458
467
  id: "editor-wrapper"
@@ -51,7 +51,7 @@ var MetadataList = function MetadataList(_ref3) {
51
51
  metadata = _ref3.metadata,
52
52
  imageIndex = _ref3.imageIndex,
53
53
  onMetadataChange = _ref3.onMetadataChange;
54
- return React.createElement("div", null, React.createElement("h2", null, title), metadata.map(function (_ref4) {
54
+ return React.createElement("div", null, React.createElement("h2", null, title), metadata && metadata.map(function (_ref4) {
55
55
  var key = _ref4.key,
56
56
  value = _ref4.value;
57
57
  return React.createElement(MetadataItem, {
@@ -1,8 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState } from 'react';
3
3
  import classnames from "classnames";
4
-
5
- require('./page-selector.css').toString();
4
+ import './page-selector.css';
6
5
 
7
6
  function PageThumbnail(_ref) {
8
7
  var src = _ref.src,
@@ -54,7 +53,22 @@ function PageSelector(_ref2) {
54
53
  onClick: onSave,
55
54
  disabled: !saveActive,
56
55
  className: "success"
57
- }, "Save")), React.createElement("div", {
56
+ }, "Save"), React.createElement("div", {
57
+ className: "show-metadata-wrapper"
58
+ }, React.createElement("label", {
59
+ className: "switch mr-2"
60
+ }, React.createElement("input", {
61
+ id: "show-metadata",
62
+ type: "checkbox",
63
+ value: showMetadata,
64
+ onChange: function onChange() {
65
+ return setShowMetadata(function (prev) {
66
+ return !prev;
67
+ });
68
+ }
69
+ }), React.createElement("span", {
70
+ className: "slider round"
71
+ })), React.createElement("label", null, "Metadata"))), React.createElement("div", {
58
72
  className: "pages"
59
73
  }, pages.map(function (page, idx) {
60
74
  var _page$metadata;
@@ -62,7 +76,7 @@ function PageSelector(_ref2) {
62
76
  return React.createElement("div", {
63
77
  className: "page-thumbnail__wrapper"
64
78
  }, React.createElement(PageThumbnail, {
65
- key: page.id,
79
+ key: "".concat(page.id),
66
80
  src: page.src,
67
81
  isActive: page.isActive,
68
82
  onClick: function onClick() {
@@ -73,7 +87,9 @@ function PageSelector(_ref2) {
73
87
  }, React.createElement("h5", null, "Metadata"), page === null || page === void 0 ? void 0 : (_page$metadata = page.metadata) === null || _page$metadata === void 0 ? void 0 : _page$metadata.map(function (_ref3) {
74
88
  var key = _ref3.key,
75
89
  value = _ref3.value;
76
- return React.createElement(React.Fragment, null, React.createElement("label", {
90
+ return React.createElement("div", {
91
+ key: key
92
+ }, React.createElement("label", {
77
93
  htmlFor: key
78
94
  }, key), React.createElement("input", {
79
95
  id: key,
@@ -88,24 +104,7 @@ function PageSelector(_ref2) {
88
104
  }
89
105
  }));
90
106
  })));
91
- })), React.createElement("div", {
92
- className: "bottom-buttons"
93
- }, React.createElement("div", {
94
- className: "show-metadata-wrapper"
95
- }, React.createElement("label", {
96
- className: "switch mr-2"
97
- }, React.createElement("input", {
98
- id: "show-metadata",
99
- type: "checkbox",
100
- value: showMetadata,
101
- onChange: function onChange() {
102
- return setShowMetadata(function (prev) {
103
- return !prev;
104
- });
105
- }
106
- }), React.createElement("span", {
107
- className: "slider round"
108
- })), React.createElement("label", null, "Metadata"))));
107
+ })));
109
108
  }
110
109
 
111
110
  PageSelector.defaultProps = {
@@ -43,12 +43,12 @@ export var RegionLabel = function RegionLabel(_ref) {
43
43
  };
44
44
 
45
45
  if (hideNotEditingLabel && !editing) return null;
46
- var allowedGroupsForSelect = allowedGroups.map(function (g) {
46
+ var allowedGroupsForSelect = allowedGroups ? allowedGroups.map(function (g) {
47
47
  return {
48
48
  value: "".concat(g),
49
49
  label: "".concat(g)
50
50
  };
51
- });
51
+ }) : [];
52
52
  return React.createElement(ThemeProvider, {
53
53
  theme: theme
54
54
  }, React.createElement(Paper, {
@@ -249,7 +249,7 @@ export var WrappedRegionList = memo(function (_ref19) {
249
249
  }).map(function (r) {
250
250
  var Component = RegionComponents[r.type];
251
251
  return React.createElement(Component, {
252
- key: r.regionId,
252
+ key: r.id,
253
253
  region: r,
254
254
  iw: iw,
255
255
  ih: ih,
@@ -7,6 +7,7 @@ var defaultSettings = {
7
7
  showHighlightBox: true,
8
8
  wasdMode: true
9
9
  };
10
+ var DEFAULT_GROUP_COLORS = ["#3853F1", "#F6E54C", "#39D33C", "#CF24CF", "#22E3ED", "#EF3029"];
10
11
  export var SettingsContext = createContext(defaultSettings);
11
12
 
12
13
  var pullSettingsFromLocalStorage = function pullSettingsFromLocalStorage() {
@@ -32,7 +33,8 @@ export var useSettings = function useSettings() {
32
33
  export var SettingsProvider = function SettingsProvider(_ref) {
33
34
  var children = _ref.children,
34
35
  clsColors = _ref.clsColors,
35
- groupColors = _ref.groupColors;
36
+ _ref$groupColors = _ref.groupColors,
37
+ groupColors = _ref$groupColors === void 0 ? DEFAULT_GROUP_COLORS : _ref$groupColors;
36
38
 
37
39
  var _useState = useState(_objectSpread({}, function () {
38
40
  return pullSettingsFromLocalStorage();
@@ -3,7 +3,7 @@ import { HotKeys } from "react-hotkeys";
3
3
  export var defaultHotkeys = [{
4
4
  id: "select_tool",
5
5
  description: "Switch to the Select Tool",
6
- binding: "escape"
6
+ binding: "e"
7
7
  }, {
8
8
  id: "zoom_tool",
9
9
  description: "Select the Zoom Tool",
@@ -56,6 +56,10 @@ var useColors = function useColors() {
56
56
  groupColors = _useSettings.groupColors;
57
57
 
58
58
  var clsColor = function clsColor(cls) {
59
+ if (!clsColors) {
60
+ return DEFAULT_GROUP_COLOR;
61
+ }
62
+
59
63
  if (clsColors[cls]) {
60
64
  return clsColors[cls];
61
65
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searpent/react-image-annotate",
3
- "version": "2.0.12",
3
+ "version": "2.0.16",
4
4
  "dependencies": {
5
5
  "@editorjs/editorjs": "^2.25.0",
6
6
  "@editorjs/paragraph": "^2.8.0",