@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.
- package/Annotator/index.js +3 -2
- package/ClassSelectionMenu/index.js +1 -0
- package/Editor/annotation-plugin/annotation.js +1 -2
- package/GroupsEditorSidebarBox/index.js +2 -2
- package/MainLayout/index.js +24 -15
- package/MetadataEditorSidebarBox/index.js +1 -1
- package/PageSelector/index.js +22 -23
- package/RegionLabel/index.js +2 -2
- package/RegionShapes/index.js +1 -1
- package/SettingsProvider/index.js +3 -1
- package/ShortcutsManager/index.js +1 -1
- package/hooks/use-colors.js +4 -0
- package/package.json +1 -1
package/Annotator/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
}));
|
package/MainLayout/index.js
CHANGED
|
@@ -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:
|
|
365
|
+
alwaysShowing: false
|
|
366
366
|
}, {
|
|
367
367
|
name: "pan",
|
|
368
368
|
helperText: "Drag/Pan (right or middle click)" + getHotkeyHelpText("pan_tool"),
|
|
369
|
-
alwaysShowing:
|
|
369
|
+
alwaysShowing: false
|
|
370
370
|
}, {
|
|
371
371
|
name: "zoom",
|
|
372
372
|
helperText: "Zoom In/Out (scroll)" + getHotkeyHelpText("zoom_tool"),
|
|
373
|
-
alwaysShowing:
|
|
373
|
+
alwaysShowing: false
|
|
374
374
|
}, {
|
|
375
375
|
name: "show-tags",
|
|
376
376
|
helperText: "Show / Hide Tags",
|
|
377
|
-
alwaysShowing:
|
|
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:
|
|
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, {
|
package/PageSelector/index.js
CHANGED
|
@@ -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")
|
|
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(
|
|
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
|
-
}))
|
|
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 = {
|
package/RegionLabel/index.js
CHANGED
|
@@ -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, {
|
package/RegionShapes/index.js
CHANGED
|
@@ -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();
|
package/hooks/use-colors.js
CHANGED