@searpent/react-image-annotate 2.0.41 → 2.0.43
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 +6 -3
- package/Locker/index.js +11 -0
- package/Locker/locker.css +21 -0
- package/MainLayout/index.js +10 -6
- package/PageSelector/index.js +10 -4
- package/PageSelector/page-selector.css +4 -0
- package/package.json +2 -2
package/Annotator/index.js
CHANGED
|
@@ -77,7 +77,8 @@ export var Annotator = function Annotator(_ref) {
|
|
|
77
77
|
onRecalc = _ref.onRecalc,
|
|
78
78
|
onSave = _ref.onSave,
|
|
79
79
|
albumMetadata = _ref.albumMetadata,
|
|
80
|
-
metadataConfigs = _ref.metadataConfigs
|
|
80
|
+
metadataConfigs = _ref.metadataConfigs,
|
|
81
|
+
lockedImages = _ref.lockedImages;
|
|
81
82
|
|
|
82
83
|
if (typeof selectedImage === "string") {
|
|
83
84
|
selectedImage = (images || []).findIndex(function (img) {
|
|
@@ -172,7 +173,8 @@ export var Annotator = function Annotator(_ref) {
|
|
|
172
173
|
return onSave({
|
|
173
174
|
images: state.images,
|
|
174
175
|
albumMetadata: state.albumMetadata,
|
|
175
|
-
createdAt: createdAt
|
|
176
|
+
createdAt: createdAt,
|
|
177
|
+
selectedImage: state === null || state === void 0 ? void 0 : state.selectedImage
|
|
176
178
|
});
|
|
177
179
|
|
|
178
180
|
case 5:
|
|
@@ -274,7 +276,8 @@ export var Annotator = function Annotator(_ref) {
|
|
|
274
276
|
saveActive: recalcActive,
|
|
275
277
|
recalcActive: saveActive,
|
|
276
278
|
onMetadataChange: handleMetadataChange,
|
|
277
|
-
onAddGroup: handleAddGroup
|
|
279
|
+
onAddGroup: handleAddGroup,
|
|
280
|
+
lockedImages: lockedImages
|
|
278
281
|
}));
|
|
279
282
|
};
|
|
280
283
|
export default Annotator;
|
package/Locker/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import LockIcon from '@mui/icons-material/Lock';
|
|
3
|
+
import './locker.css';
|
|
4
|
+
|
|
5
|
+
function Locker() {
|
|
6
|
+
return React.createElement("div", {
|
|
7
|
+
className: "locker"
|
|
8
|
+
}, React.createElement(LockIcon, null));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default Locker;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.locker {
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 100%;
|
|
5
|
+
opacity: .75;
|
|
6
|
+
animation: skeleton-loading 1s linear infinite alternate;
|
|
7
|
+
z-index: 1000;
|
|
8
|
+
display: flex;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
align-items: center;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes skeleton-loading {
|
|
14
|
+
0% {
|
|
15
|
+
background-color: hsl(200, 20%, 80%);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
100% {
|
|
19
|
+
background-color: hsl(200, 20%, 95%);
|
|
20
|
+
}
|
|
21
|
+
}
|
package/MainLayout/index.js
CHANGED
|
@@ -36,7 +36,8 @@ import Editor from "../Editor";
|
|
|
36
36
|
import regionsToBlocks from '../utils/regions-to-blocks';
|
|
37
37
|
import PageSelector from "../PageSelector";
|
|
38
38
|
import regionsGroups from '../utils/regions-groups';
|
|
39
|
-
import RightSidebarItemsWrapper from './RightSidebarItemsWrapper';
|
|
39
|
+
import RightSidebarItemsWrapper from './RightSidebarItemsWrapper';
|
|
40
|
+
import Locker from '../Locker'; // import Fullscreen from "../Fullscreen"
|
|
40
41
|
|
|
41
42
|
var emptyArr = [];
|
|
42
43
|
var theme = createTheme();
|
|
@@ -84,7 +85,7 @@ var EditorWrapper = styled("div")(function (_ref4) {
|
|
|
84
85
|
};
|
|
85
86
|
});
|
|
86
87
|
export var MainLayout = function MainLayout(_ref5) {
|
|
87
|
-
var _state$images$state$s, _state$images$state$s2;
|
|
88
|
+
var _state$images$state$s, _state$images$state$s2, _state$images$state$s3;
|
|
88
89
|
|
|
89
90
|
var state = _ref5.state,
|
|
90
91
|
dispatch = _ref5.dispatch,
|
|
@@ -129,7 +130,8 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
129
130
|
_ref5$saveActive = _ref5.saveActive,
|
|
130
131
|
saveActive = _ref5$saveActive === void 0 ? false : _ref5$saveActive,
|
|
131
132
|
onMetadataChange = _ref5.onMetadataChange,
|
|
132
|
-
onAddGroup = _ref5.onAddGroup
|
|
133
|
+
onAddGroup = _ref5.onAddGroup,
|
|
134
|
+
lockedImages = _ref5.lockedImages;
|
|
133
135
|
var classes = useStyles();
|
|
134
136
|
var settings = useSettings();
|
|
135
137
|
var fullScreenHandle = useFullScreenHandle();
|
|
@@ -296,7 +298,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
296
298
|
var _i$metadata, _i$metadata$find;
|
|
297
299
|
|
|
298
300
|
return {
|
|
299
|
-
id: "".concat(
|
|
301
|
+
id: "".concat(i.id),
|
|
300
302
|
src: i.src,
|
|
301
303
|
isActive: idx === state.selectedImage,
|
|
302
304
|
pageNumber: (i === null || i === void 0 ? void 0 : (_i$metadata = i.metadata) === null || _i$metadata === void 0 ? void 0 : (_i$metadata$find = _i$metadata.find(function (md) {
|
|
@@ -313,6 +315,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
313
315
|
});
|
|
314
316
|
};
|
|
315
317
|
|
|
318
|
+
var isSelectedImageLocked = lockedImages.includes(state === null || state === void 0 ? void 0 : (_state$images$state$s3 = state.images[state.selectedImage]) === null || _state$images$state$s3 === void 0 ? void 0 : _state$images$state$s3.id);
|
|
316
319
|
return React.createElement(ThemeProvider, {
|
|
317
320
|
theme: theme
|
|
318
321
|
}, React.createElement(FullScreenContainer, null, React.createElement(FullScreen, {
|
|
@@ -338,6 +341,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
338
341
|
}
|
|
339
342
|
}, showPageSelector && React.createElement(PageSelector, {
|
|
340
343
|
pages: pages,
|
|
344
|
+
lockedImages: lockedImages,
|
|
341
345
|
onPageClick: handlePageClick,
|
|
342
346
|
onRecalc: onRecalc,
|
|
343
347
|
onSave: onSave,
|
|
@@ -427,7 +431,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
427
431
|
}].filter(Boolean).filter(function (a) {
|
|
428
432
|
return a.alwaysShowing || state.enabledTools.includes(a.name);
|
|
429
433
|
}),
|
|
430
|
-
rightSidebarItems: [React.createElement(RightSidebarItemsWrapper, null, [debugModeOn && React.createElement(DebugBox, {
|
|
434
|
+
rightSidebarItems: [React.createElement(RightSidebarItemsWrapper, null, [isSelectedImageLocked && React.createElement(Locker, null), debugModeOn && React.createElement(DebugBox, {
|
|
431
435
|
state: debugModeOn,
|
|
432
436
|
lastAction: state.lastAction,
|
|
433
437
|
key: "debug-box"
|
|
@@ -490,7 +494,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
490
494
|
onAddGroup: onAddGroup,
|
|
491
495
|
key: "groups-editor"
|
|
492
496
|
})].filter(Boolean))]
|
|
493
|
-
}, canvas)), showEditor && React.createElement(EditorWrapper, {
|
|
497
|
+
}, isSelectedImageLocked && React.createElement(Locker, null), canvas)), showEditor && !isSelectedImageLocked && React.createElement(EditorWrapper, {
|
|
494
498
|
id: "editor-wrapper"
|
|
495
499
|
}, React.createElement(Editor, {
|
|
496
500
|
id: "editor",
|
package/PageSelector/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import classnames from "classnames";
|
|
4
4
|
import './page-selector.css';
|
|
5
|
+
import Locker from '../Locker';
|
|
5
6
|
|
|
6
7
|
function PageThumbnail(_ref) {
|
|
7
8
|
var _metadata$find, _metadata$find$call;
|
|
@@ -14,7 +15,8 @@ function PageThumbnail(_ref) {
|
|
|
14
15
|
imageIndex = _ref.imageIndex,
|
|
15
16
|
onMetadataChange = _ref.onMetadataChange,
|
|
16
17
|
_ref$metadataConfigs = _ref.metadataConfigs,
|
|
17
|
-
metadataConfigs = _ref$metadataConfigs === void 0 ? [] : _ref$metadataConfigs
|
|
18
|
+
metadataConfigs = _ref$metadataConfigs === void 0 ? [] : _ref$metadataConfigs,
|
|
19
|
+
isLocked = _ref.isLocked;
|
|
18
20
|
|
|
19
21
|
var handleChange = function handleChange(e) {
|
|
20
22
|
e.preventDefault();
|
|
@@ -35,10 +37,11 @@ function PageThumbnail(_ref) {
|
|
|
35
37
|
role: "button",
|
|
36
38
|
tabIndex: 0,
|
|
37
39
|
className: classnames('ps-page-thumbnail', {
|
|
38
|
-
'ps-page-thumbnail-is-active': isActive
|
|
40
|
+
'ps-page-thumbnail-is-active': isActive,
|
|
41
|
+
'ps-page-thumbnail-disabled': isLocked
|
|
39
42
|
}),
|
|
40
43
|
onClick: onClick
|
|
41
|
-
}, React.createElement("div", {
|
|
44
|
+
}, isLocked && React.createElement(Locker, null), React.createElement("div", {
|
|
42
45
|
className: "ps-page-thumbnail-image-wrapper"
|
|
43
46
|
}, React.createElement("img", {
|
|
44
47
|
src: src,
|
|
@@ -88,7 +91,9 @@ function PageSelector(_ref3) {
|
|
|
88
91
|
recalcActive = _ref3.recalcActive,
|
|
89
92
|
saveActive = _ref3.saveActive,
|
|
90
93
|
onMetadataChange = _ref3.onMetadataChange,
|
|
91
|
-
metadataConfigs = _ref3.metadataConfigs
|
|
94
|
+
metadataConfigs = _ref3.metadataConfigs,
|
|
95
|
+
_ref3$lockedImages = _ref3.lockedImages,
|
|
96
|
+
lockedImages = _ref3$lockedImages === void 0 ? [] : _ref3$lockedImages;
|
|
92
97
|
|
|
93
98
|
var _useState = useState(false),
|
|
94
99
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -129,6 +134,7 @@ function PageSelector(_ref3) {
|
|
|
129
134
|
}, pages.map(function (page, idx) {
|
|
130
135
|
return React.createElement(PageThumbnail, {
|
|
131
136
|
key: "".concat(page.id),
|
|
137
|
+
isLocked: lockedImages.includes(page.id),
|
|
132
138
|
src: page.src,
|
|
133
139
|
isActive: page.isActive,
|
|
134
140
|
onClick: function onClick() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searpent/react-image-annotate",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.43",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@editorjs/editorjs": "^2.25.0",
|
|
6
6
|
"@editorjs/paragraph": "^2.8.0",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"storybook": "start-storybook -p 9090 -s public",
|
|
60
60
|
"build": "npm run build:babel && cp ./package.json ./dist/package.json && cp ./README.md ./dist/README.md",
|
|
61
61
|
"dist": "npm run build && cd dist && npm publish",
|
|
62
|
-
"build:babel": "NODE_ENV=production babel ./src --ignore \"src/**/*.story.js\" --out-dir=./dist && rm dist/index.js && cp dist/lib.js dist/index.js && cp src/PageSelector/page-selector.css dist/PageSelector/ && cp src/Editor/annotation-plugin/annotation.css dist/Editor/annotation-plugin",
|
|
62
|
+
"build:babel": "NODE_ENV=production babel ./src --ignore \"src/**/*.story.js\" --out-dir=./dist && rm dist/index.js && cp dist/lib.js dist/index.js && cp src/PageSelector/page-selector.css dist/PageSelector/ && cp src/Locker/locker.css dist/Locker/ && cp src/Editor/annotation-plugin/annotation.css dist/Editor/annotation-plugin",
|
|
63
63
|
"build-storybook": "build-storybook",
|
|
64
64
|
"build:gh-pages": "CI=false react-scripts build && mkdir build/demo && cp build/index.html build/demo/index.html",
|
|
65
65
|
"gh-pages": "npm run build:gh-pages && gh-pages -d build",
|