@searpent/react-image-annotate 2.0.75 → 2.0.76

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 (224) hide show
  1. package/.babelrc +6 -0
  2. package/.env +1 -0
  3. package/.flowconfig +2 -0
  4. package/.github/workflows/release-on-master.yml +32 -0
  5. package/.github/workflows/test.yml +16 -0
  6. package/.prettierrc +3 -0
  7. package/.releaserc.js +18 -0
  8. package/.storybook/addons.js +2 -0
  9. package/.storybook/config.js +16 -0
  10. package/LICENSE +21 -0
  11. package/package.json +1 -1
  12. package/public/favicon.ico +0 -0
  13. package/public/index.html +38 -0
  14. package/src/Annotator/bike-pic.png +0 -0
  15. package/src/Annotator/bike-pic2.png +0 -0
  16. package/src/Annotator/dab-keyframes.story.json +1 -0
  17. package/src/Annotator/exampleImages.js +48 -0
  18. package/src/Annotator/examplePhotos.js +7603 -0
  19. package/src/Annotator/index.js +380 -0
  20. package/src/Annotator/index.story.js +877 -0
  21. package/src/Annotator/poses.story.js +150 -0
  22. package/src/Annotator/reducers/combine-reducers.js +7 -0
  23. package/src/Annotator/reducers/convert-expanding-line-to-polygon.js +53 -0
  24. package/{Annotator → src/Annotator}/reducers/fix-twisted.js +5 -3
  25. package/src/Annotator/reducers/general-reducer.js +1228 -0
  26. package/src/Annotator/reducers/get-active-image.js +21 -0
  27. package/src/Annotator/reducers/get-implied-video-regions.js +115 -0
  28. package/src/Annotator/reducers/history-handler.js +60 -0
  29. package/src/Annotator/reducers/image-reducer.js +23 -0
  30. package/src/Annotator/reducers/video-reducer.js +85 -0
  31. package/src/Annotator/video.story.js +51 -0
  32. package/src/ClassSelectionMenu/index.js +112 -0
  33. package/src/Crosshairs/index.js +64 -0
  34. package/src/DebugSidebarBox/index.js +36 -0
  35. package/src/DemoSite/Editor.js +235 -0
  36. package/src/DemoSite/ErrorBoundaryDialog.js +34 -0
  37. package/src/DemoSite/index.js +41 -0
  38. package/src/DemoSite/index.story.js +10 -0
  39. package/src/DemoSite/simple-segmentation-example.json +572 -0
  40. package/src/Editor/annotation-plugin/annotation.js +536 -0
  41. package/src/Editor/index.js +50 -0
  42. package/src/Editor/readOnly.js +21 -0
  43. package/{Editor → src/Editor}/tools.js +3 -2
  44. package/src/Errorer/index.js +13 -0
  45. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  46. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  47. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  48. package/src/FullImageSegmentationAnnotator/index.js +7 -0
  49. package/src/FullImageSegmentationAnnotator/index.story.js +177 -0
  50. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  51. package/src/GroupSelectorSidebarBox/index.js +48 -0
  52. package/src/GroupsEditorSidebarBox/index.js +108 -0
  53. package/src/HelpSidebarBox/index.js +43 -0
  54. package/src/HighlightBox/index.js +143 -0
  55. package/src/HistorySidebarBox/index.js +78 -0
  56. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  57. package/src/ImageCanvas/index.js +515 -0
  58. package/src/ImageCanvas/index.story.js +314 -0
  59. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  60. package/src/ImageCanvas/region-tools.js +171 -0
  61. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  62. package/{ImageCanvas → src/ImageCanvas}/styles.js +8 -12
  63. package/src/ImageCanvas/use-mouse.js +168 -0
  64. package/src/ImageCanvas/use-project-box.js +23 -0
  65. package/src/ImageCanvas/use-wasd-mode.js +50 -0
  66. package/src/ImageMask/index.js +127 -0
  67. package/src/ImageMask/load-image.js +32 -0
  68. package/src/ImageSelectorSidebarBox/index.js +54 -0
  69. package/src/KeyframeTimeline/get-time-string.js +25 -0
  70. package/src/KeyframeTimeline/index.js +223 -0
  71. package/src/KeyframesSelectorSidebarBox/index.js +93 -0
  72. package/src/LandingPage/content.md +57 -0
  73. package/src/LandingPage/github-markdown.css +964 -0
  74. package/src/LandingPage/index.js +147 -0
  75. package/src/Locker/index.js +13 -0
  76. package/src/MainLayout/RightSidebarItemsWrapper.js +21 -0
  77. package/src/MainLayout/icon-dictionary.js +79 -0
  78. package/src/MainLayout/index.js +564 -0
  79. package/src/MainLayout/index.story.js +240 -0
  80. package/{MainLayout → src/MainLayout}/styles.js +7 -6
  81. package/src/MainLayout/types.js +171 -0
  82. package/src/MainLayout/use-implied-video-regions.js +17 -0
  83. package/src/MetadataEditorSidebarBox/index.js +160 -0
  84. package/src/PageSelector/index.js +159 -0
  85. package/src/PointDistances/index.js +90 -0
  86. package/src/PreventScrollToParents/index.js +48 -0
  87. package/src/PreventScrollToParents/index.story.js +23 -0
  88. package/src/RegionLabel/index.js +236 -0
  89. package/{RegionLabel → src/RegionLabel}/styles.js +15 -12
  90. package/src/RegionSelectAndTransformBoxes/index.js +236 -0
  91. package/src/RegionSelectorSidebarBox/index.js +220 -0
  92. package/{RegionSelectorSidebarBox → src/RegionSelectorSidebarBox}/styles.js +14 -13
  93. package/src/RegionShapes/index.js +254 -0
  94. package/src/RegionTags/index.js +136 -0
  95. package/src/SettingsDialog/index.js +58 -0
  96. package/src/SettingsProvider/index.js +57 -0
  97. package/src/Shortcuts/ShortcutField.js +44 -0
  98. package/src/Shortcuts/index.js +129 -0
  99. package/src/ShortcutsManager/index.js +162 -0
  100. package/src/Sidebar/index.js +117 -0
  101. package/src/SidebarBoxContainer/index.js +93 -0
  102. package/src/SmallToolButton/index.js +57 -0
  103. package/src/TagsSidebarBox/index.js +93 -0
  104. package/src/TaskDescriptionSidebarBox/index.js +43 -0
  105. package/src/Theme/index.js +36 -0
  106. package/src/VideoOrImageCanvasBackground/index.js +170 -0
  107. package/src/colors.js +32 -0
  108. package/src/hooks/use-colors.js +75 -0
  109. package/src/hooks/use-event-callback.js +11 -0
  110. package/src/hooks/use-exclude-pattern.js +27 -0
  111. package/src/hooks/use-load-image.js +21 -0
  112. package/src/hooks/use-window-size.js +46 -0
  113. package/{hooks → src/hooks}/xpattern.js +1 -1
  114. package/src/hooks/xpattern.png +0 -0
  115. package/src/index.js +18 -0
  116. package/src/lib.js +7 -0
  117. package/src/screenshot.png +0 -0
  118. package/src/site.css +5 -0
  119. package/src/stories.js +2 -0
  120. package/src/utils/blocks-to-article.js +61 -0
  121. package/{utils → src/utils}/blocks-to-article.test.js +8 -5
  122. package/{utils → src/utils}/default-locked-until.js +1 -2
  123. package/{utils → src/utils}/filter-only-unique.js +1 -1
  124. package/src/utils/get-from-local-storage.js +7 -0
  125. package/src/utils/get-hotkey-help-text.js +11 -0
  126. package/src/utils/get-landmarks-with-transform.js +23 -0
  127. package/src/utils/photosToImages.js +67 -0
  128. package/src/utils/regions-groups.js +19 -0
  129. package/src/utils/regions-to-blocks.js +16 -0
  130. package/src/utils/saveable-actions-enum.js +5 -0
  131. package/src/utils/set-in-local-storage.js +6 -0
  132. package/src/utils/sleep.js +3 -0
  133. package/src/utils/uuid-to-hash.js +5 -0
  134. package/Annotator/exampleImages.js +0 -41
  135. package/Annotator/examplePhotos.js +0 -6980
  136. package/Annotator/index.js +0 -417
  137. package/Annotator/reducers/combine-reducers.js +0 -14
  138. package/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -73
  139. package/Annotator/reducers/general-reducer.js +0 -1430
  140. package/Annotator/reducers/get-active-image.js +0 -27
  141. package/Annotator/reducers/get-implied-video-regions.js +0 -180
  142. package/Annotator/reducers/history-handler.js +0 -38
  143. package/Annotator/reducers/image-reducer.js +0 -20
  144. package/Annotator/reducers/video-reducer.js +0 -88
  145. package/ClassSelectionMenu/index.js +0 -140
  146. package/Crosshairs/index.js +0 -53
  147. package/DebugSidebarBox/index.js +0 -20
  148. package/DemoSite/Editor.js +0 -194
  149. package/DemoSite/ErrorBoundaryDialog.js +0 -64
  150. package/DemoSite/index.js +0 -40
  151. package/Editor/annotation-plugin/annotation.js +0 -647
  152. package/Editor/index.js +0 -93
  153. package/Editor/readOnly.js +0 -73
  154. package/Errorer/index.js +0 -11
  155. package/FullImageSegmentationAnnotator/index.js +0 -7
  156. package/GroupSelectorSidebarBox/index.js +0 -63
  157. package/GroupsEditorSidebarBox/index.js +0 -138
  158. package/HelpSidebarBox/index.js +0 -58
  159. package/HighlightBox/index.js +0 -102
  160. package/HistorySidebarBox/index.js +0 -71
  161. package/ImageCanvas/index.js +0 -441
  162. package/ImageCanvas/region-tools.js +0 -165
  163. package/ImageCanvas/use-mouse.js +0 -180
  164. package/ImageCanvas/use-project-box.js +0 -27
  165. package/ImageCanvas/use-wasd-mode.js +0 -62
  166. package/ImageMask/index.js +0 -133
  167. package/ImageMask/load-image.js +0 -25
  168. package/ImageSelectorSidebarBox/index.js +0 -60
  169. package/KeyframeTimeline/get-time-string.js +0 -27
  170. package/KeyframeTimeline/index.js +0 -233
  171. package/KeyframesSelectorSidebarBox/index.js +0 -93
  172. package/LandingPage/index.js +0 -159
  173. package/Locker/index.js +0 -11
  174. package/MainLayout/RightSidebarItemsWrapper.js +0 -19
  175. package/MainLayout/icon-dictionary.js +0 -104
  176. package/MainLayout/index.js +0 -526
  177. package/MainLayout/types.js +0 -0
  178. package/MainLayout/use-implied-video-regions.js +0 -13
  179. package/MetadataEditorSidebarBox/index.js +0 -231
  180. package/PageSelector/index.js +0 -180
  181. package/PointDistances/index.js +0 -73
  182. package/PreventScrollToParents/index.js +0 -51
  183. package/RegionLabel/index.js +0 -232
  184. package/RegionSelectAndTransformBoxes/index.js +0 -169
  185. package/RegionSelectorSidebarBox/index.js +0 -254
  186. package/RegionShapes/index.js +0 -294
  187. package/RegionTags/index.js +0 -144
  188. package/SettingsDialog/index.js +0 -52
  189. package/SettingsProvider/index.js +0 -60
  190. package/Shortcuts/ShortcutField.js +0 -46
  191. package/Shortcuts/index.js +0 -133
  192. package/ShortcutsManager/index.js +0 -155
  193. package/Sidebar/index.js +0 -69
  194. package/SidebarBoxContainer/index.js +0 -93
  195. package/SmallToolButton/index.js +0 -42
  196. package/TagsSidebarBox/index.js +0 -105
  197. package/TaskDescriptionSidebarBox/index.js +0 -58
  198. package/Theme/index.js +0 -30
  199. package/VideoOrImageCanvasBackground/index.js +0 -151
  200. package/colors.js +0 -14
  201. package/hooks/use-colors.js +0 -97
  202. package/hooks/use-event-callback.js +0 -10
  203. package/hooks/use-exclude-pattern.js +0 -24
  204. package/hooks/use-load-image.js +0 -26
  205. package/hooks/use-window-size.js +0 -46
  206. package/index.js +0 -3
  207. package/lib.js +0 -3
  208. package/stories.js +0 -5
  209. package/utils/blocks-to-article.js +0 -60
  210. package/utils/get-from-local-storage.js +0 -7
  211. package/utils/get-hotkey-help-text.js +0 -9
  212. package/utils/get-landmarks-with-transform.js +0 -40
  213. package/utils/photosToImages.js +0 -85
  214. package/utils/regions-groups.js +0 -28
  215. package/utils/regions-to-blocks.js +0 -18
  216. package/utils/saveable-actions-enum.js +0 -3
  217. package/utils/set-in-local-storage.js +0 -3
  218. package/utils/sleep.js +0 -7
  219. package/utils/uuid-to-hash.js +0 -5
  220. /package/{Editor → src/Editor}/annotation-plugin/annotation.css +0 -0
  221. /package/{Errorer → src/Errorer}/errorer.css +0 -0
  222. /package/{Locker → src/Locker}/locker.css +0 -0
  223. /package/{PageSelector → src/PageSelector}/page-selector.css +0 -0
  224. /package/{utils → src/utils}/next-group-id.js +0 -0
@@ -1,231 +0,0 @@
1
- import React, { memo } from "react";
2
- import SidebarBoxContainer from "../SidebarBoxContainer";
3
- import DescriptionIcon from "@mui/icons-material/Description";
4
- import { styled } from "@mui/material/styles";
5
- import { createTheme, ThemeProvider } from "@mui/material/styles";
6
- import { grey } from "@mui/material/colors";
7
- var MetadataItemDiv = styled("div")(function (_ref) {
8
- var theme = _ref.theme;
9
- return {
10
- display: "flex",
11
- flexDirection: "row",
12
- marginBottom: ".5em",
13
- "& > label": {
14
- fontSize: "1rem",
15
- marginBottom: ".5em",
16
- textTransform: "capitalize",
17
- wordWrap: "break-word"
18
- },
19
- label: {
20
- width: "50%"
21
- },
22
- select: {
23
- width: "100%"
24
- }
25
- };
26
- });
27
-
28
- var MetadataItem = function MetadataItem(_ref2) {
29
- var _metadataConfig$optio, _metadataConfig$optio2;
30
-
31
- var name = _ref2.name,
32
- value = _ref2.value,
33
- metadataId = _ref2.metadataId,
34
- imageIndex = _ref2.imageIndex,
35
- groupId = _ref2.groupId,
36
- onChange = _ref2.onChange,
37
- _ref2$metadataConfig = _ref2.metadataConfig,
38
- metadataConfig = _ref2$metadataConfig === void 0 ? {} : _ref2$metadataConfig;
39
-
40
- var handleChange = function handleChange(e) {
41
- e.preventDefault();
42
- var _e$target = e.target,
43
- name = _e$target.name,
44
- value = _e$target.value;
45
- onChange({
46
- name: name,
47
- value: value,
48
- imageIndex: imageIndex,
49
- groupId: groupId,
50
- metadataId: metadataId
51
- });
52
- };
53
-
54
- return React.createElement(MetadataItemDiv, null, React.createElement("label", {
55
- for: name
56
- }, name), React.createElement("div", {
57
- style: {
58
- width: "50%"
59
- }
60
- }, (metadataConfig === null || metadataConfig === void 0 ? void 0 : metadataConfig.selectable) !== true && React.createElement(React.Fragment, null, React.createElement("input", {
61
- type: "text",
62
- value: value,
63
- name: name,
64
- onChange: handleChange,
65
- id: name,
66
- list: "".concat(name, "-list"),
67
- style: {
68
- width: "100%"
69
- }
70
- }), React.createElement("datalist", {
71
- id: "".concat(name, "-list")
72
- }, metadataConfig === null || metadataConfig === void 0 ? void 0 : (_metadataConfig$optio = metadataConfig.options) === null || _metadataConfig$optio === void 0 ? void 0 : _metadataConfig$optio.map(function (opt) {
73
- if (opt.value && opt.label) {
74
- return React.createElement("option", {
75
- key: opt.value,
76
- value: opt.value
77
- }, opt.label);
78
- }
79
-
80
- return React.createElement("option", {
81
- key: opt,
82
- value: opt
83
- });
84
- }))), (metadataConfig === null || metadataConfig === void 0 ? void 0 : metadataConfig.selectable) === true && React.createElement("select", {
85
- name: name,
86
- id: name,
87
- onChange: handleChange,
88
- style: {
89
- width: '100%'
90
- }
91
- }, metadataConfig === null || metadataConfig === void 0 ? void 0 : (_metadataConfig$optio2 = metadataConfig.options) === null || _metadataConfig$optio2 === void 0 ? void 0 : _metadataConfig$optio2.map(function (opt) {
92
- if (opt.value && opt.label) {
93
- return React.createElement("option", {
94
- key: opt.value,
95
- value: opt.value,
96
- selected: opt.value === value
97
- }, opt.label);
98
- }
99
-
100
- return React.createElement("option", {
101
- key: opt,
102
- value: opt
103
- });
104
- }))));
105
- };
106
-
107
- var MetadataList = function MetadataList(_ref3) {
108
- var title = _ref3.title,
109
- metadata = _ref3.metadata,
110
- imageIndex = _ref3.imageIndex,
111
- onMetadataChange = _ref3.onMetadataChange,
112
- _ref3$metadataConfigs = _ref3.metadataConfigs,
113
- metadataConfigs = _ref3$metadataConfigs === void 0 ? [] : _ref3$metadataConfigs,
114
- groupId = _ref3.groupId;
115
- return React.createElement("div", null, React.createElement("h2", null, title), metadata && metadata.map(function (_ref4) {
116
- var key = _ref4.key,
117
- value = _ref4.value,
118
- metadataId = _ref4.metadataId;
119
- return React.createElement(MetadataItem, {
120
- name: key,
121
- value: value,
122
- imageIndex: imageIndex,
123
- metadataId: metadataId,
124
- groupId: groupId,
125
- onChange: onMetadataChange,
126
- metadataConfig: metadataConfigs.find(function (i) {
127
- return i.key === key;
128
- })
129
- });
130
- }));
131
- };
132
-
133
- var theme = createTheme();
134
- var DivContainer = styled("div")(function (_ref5) {
135
- var theme = _ref5.theme;
136
- return {
137
- paddingLeft: 16,
138
- paddingRight: 16,
139
- fontSize: 12,
140
- "& h1": {
141
- fontSize: 18
142
- },
143
- "& h2": {
144
- fontSize: 14
145
- },
146
- "& h3": {
147
- fontSize: 12
148
- },
149
- "& h4": {
150
- fontSize: 12
151
- },
152
- "& h5": {
153
- fontSize: 12
154
- },
155
- "& h6": {
156
- fontSize: 12
157
- },
158
- "& p": {
159
- fontSize: 12
160
- },
161
- "& a": {},
162
- "& img": {
163
- width: "100%"
164
- }
165
- };
166
- });
167
- export var MetadataEditorSidebarBox = function MetadataEditorSidebarBox(_ref6) {
168
- var _state$images$state$s, _state$images$state$s2, _state$images$state$s3, _state$images$state$s4;
169
-
170
- var state = _ref6.state,
171
- onMetadataChange = _ref6.onMetadataChange;
172
- var metadataConfigs = state.metadataConfigs || [];
173
- var selectedPhotoMetadata = state === null || state === void 0 ? void 0 : (_state$images$state$s = state.images[state.selectedImage]) === null || _state$images$state$s === void 0 ? void 0 : _state$images$state$s.metadata;
174
- var selectedGroupId = state === null || state === void 0 ? void 0 : (_state$images$state$s2 = state.images[state.selectedImage]) === null || _state$images$state$s2 === void 0 ? void 0 : (_state$images$state$s3 = _state$images$state$s2.regions) === null || _state$images$state$s3 === void 0 ? void 0 : (_state$images$state$s4 = _state$images$state$s3.find(function (r) {
175
- return r.highlighted === true;
176
- })) === null || _state$images$state$s4 === void 0 ? void 0 : _state$images$state$s4.groupId;
177
- var articleMetadata = []; // example: [{key: "previousArticleId", value "123-123-123-123-123"}]
178
-
179
- if (selectedGroupId !== undefined) {
180
- var articleMetadataRegion = state === null || state === void 0 ? void 0 : state.images[state.selectedImage].regions.find(function (r) {
181
- return r.cls === 'metadata' && "".concat(r.groupId) === selectedGroupId;
182
- });
183
-
184
- if (articleMetadataRegion) {
185
- var metadata = JSON.parse(articleMetadataRegion.text);
186
- articleMetadata = metadata;
187
- }
188
- }
189
-
190
- return React.createElement(ThemeProvider, {
191
- theme: theme
192
- }, React.createElement(SidebarBoxContainer, {
193
- title: "Metadata",
194
- icon: React.createElement(DescriptionIcon, {
195
- style: {
196
- color: grey[700]
197
- }
198
- }),
199
- expandedByDefault: true
200
- }, React.createElement(DivContainer, {
201
- style: {
202
- height: "600px"
203
- }
204
- }, articleMetadata.length > 0 && React.createElement(MetadataList, {
205
- title: "Article",
206
- metadata: articleMetadata,
207
- imageIndex: state.selectedImage,
208
- groupId: selectedGroupId,
209
- onMetadataChange: onMetadataChange,
210
- metadataConfigs: metadataConfigs.filter(function (mfc) {
211
- return mfc.level === 'photo_metadata-engine';
212
- })
213
- }), selectedPhotoMetadata && React.createElement(MetadataList, {
214
- title: "Page",
215
- metadata: selectedPhotoMetadata,
216
- imageIndex: state.selectedImage,
217
- onMetadataChange: onMetadataChange,
218
- metadataConfigs: metadataConfigs.filter(function (mfc) {
219
- return mfc.level === 'photo';
220
- })
221
- }), React.createElement(MetadataList, {
222
- title: "Issue",
223
- metadata: state.albumMetadata,
224
- onMetadataChange: onMetadataChange,
225
- id: "metadata-album",
226
- metadataConfigs: metadataConfigs.filter(function (mfc) {
227
- return mfc.level === 'album';
228
- })
229
- }))));
230
- };
231
- export default memo(MetadataEditorSidebarBox);
@@ -1,180 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import React, { useState } from 'react';
3
- import classnames from "classnames";
4
- import './page-selector.css';
5
- import Locker from '../Locker';
6
- import Errorer from '../Errorer';
7
-
8
- function PageThumbnail(_ref) {
9
- var _metadata$find, _metadata$find$call;
10
-
11
- var src = _ref.src,
12
- isActive = _ref.isActive,
13
- onClick = _ref.onClick,
14
- metadata = _ref.metadata,
15
- showMetadata = _ref.showMetadata,
16
- imageIndex = _ref.imageIndex,
17
- imageId = _ref.imageId,
18
- onMetadataChange = _ref.onMetadataChange,
19
- _ref$metadataConfigs = _ref.metadataConfigs,
20
- metadataConfigs = _ref$metadataConfigs === void 0 ? [] : _ref$metadataConfigs,
21
- isLocked = _ref.isLocked,
22
- error = _ref.error,
23
- onRecalcClick = _ref.onRecalcClick,
24
- _ref$isRecalcReady = _ref.isRecalcReady,
25
- isRecalcReady = _ref$isRecalcReady === void 0 ? false : _ref$isRecalcReady;
26
-
27
- var handleChange = function handleChange(e) {
28
- e.preventDefault();
29
- var _e$target = e.target,
30
- name = _e$target.name,
31
- value = _e$target.value;
32
- onMetadataChange({
33
- name: name,
34
- value: value,
35
- imageIndex: imageIndex
36
- });
37
- };
38
-
39
- var handleRecalcClick = function handleRecalcClick(e) {
40
- e.stopPropagation();
41
- onRecalcClick({
42
- imageId: imageId
43
- });
44
- };
45
-
46
- var pageNumber = metadata === null || metadata === void 0 ? void 0 : (_metadata$find = metadata.find) === null || _metadata$find === void 0 ? void 0 : (_metadata$find$call = _metadata$find.call(metadata, function (md) {
47
- return md.key === 'pageNumber';
48
- })) === null || _metadata$find$call === void 0 ? void 0 : _metadata$find$call.value;
49
- return React.createElement("div", {
50
- role: "button",
51
- tabIndex: 0,
52
- className: classnames('ps-page-thumbnail', {
53
- 'ps-page-thumbnail-is-active': isActive
54
- }),
55
- onClick: onClick
56
- }, isLocked && React.createElement(Locker, null), error && React.createElement(Errorer, {
57
- errorMessage: error.message
58
- }), React.createElement("div", {
59
- className: "ps-page-thumbnail-image-wrapper"
60
- }, isRecalcReady && React.createElement("div", {
61
- className: "ps-page-thumbnail-recalc-wrapper"
62
- }, React.createElement("button", {
63
- className: "recalc-button",
64
- onClick: handleRecalcClick
65
- }, "Extract")), React.createElement("img", {
66
- src: src,
67
- alt: "",
68
- className: "ps-page-thumbnail-image"
69
- }), React.createElement("div", {
70
- className: "page-number-wrapper"
71
- }, pageNumber !== undefined && !showMetadata && React.createElement("span", {
72
- className: "page-number"
73
- }, pageNumber))), React.createElement("div", {
74
- className: "ps-page-thumbnail-metadata-wrapper"
75
- }, metadata.map(function (_ref2) {
76
- var _metadataConfigs$find;
77
-
78
- var key = _ref2.key,
79
- value = _ref2.value;
80
- return React.createElement(React.Fragment, null, React.createElement("label", {
81
- for: key
82
- }, key), React.createElement("input", {
83
- type: "text",
84
- value: value,
85
- name: key,
86
- onChange: handleChange,
87
- onClick: function onClick(e) {
88
- return e.stopPropagation();
89
- },
90
- id: key,
91
- list: "".concat(key, "-list")
92
- }), React.createElement("datalist", {
93
- id: "".concat(key, "-list")
94
- }, (_metadataConfigs$find = metadataConfigs.find(function (mcf) {
95
- return mcf.key === key;
96
- })) === null || _metadataConfigs$find === void 0 ? void 0 : _metadataConfigs$find.options.map(function (opt) {
97
- return React.createElement("option", {
98
- key: opt,
99
- value: opt
100
- });
101
- })));
102
- })));
103
- }
104
-
105
- function isLocked(page) {
106
- var _Date$parse;
107
-
108
- var lockedUntil = page.lockedUntil; // needs to be defined and greater than current time
109
-
110
- if (((_Date$parse = Date.parse(lockedUntil)) === null || _Date$parse === void 0 ? void 0 : _Date$parse.valueOf()) > new Date().valueOf()) {
111
- return true;
112
- }
113
-
114
- return false;
115
- }
116
-
117
- function PageSelector(_ref3) {
118
- var pages = _ref3.pages,
119
- onPageClick = _ref3.onPageClick,
120
- onMetadataChange = _ref3.onMetadataChange,
121
- metadataConfigs = _ref3.metadataConfigs,
122
- onRecalcClick = _ref3.onRecalcClick;
123
-
124
- var _useState = useState(false),
125
- _useState2 = _slicedToArray(_useState, 2),
126
- showMetadata = _useState2[0],
127
- setShowMetadata = _useState2[1];
128
-
129
- return React.createElement("div", {
130
- className: classnames('page-selector', {
131
- 'page-selector--opened': showMetadata
132
- })
133
- }, React.createElement("div", {
134
- className: "top-buttons"
135
- }, React.createElement("div", {
136
- className: "show-metadata-wrapper"
137
- }, React.createElement("label", {
138
- className: "switch mr-2"
139
- }, React.createElement("input", {
140
- id: "show-metadata",
141
- type: "checkbox",
142
- value: showMetadata,
143
- onChange: function onChange() {
144
- return setShowMetadata(function (prev) {
145
- return !prev;
146
- });
147
- }
148
- }), React.createElement("span", {
149
- className: "slider round"
150
- })), React.createElement("label", null, "Metadata"))), React.createElement("div", {
151
- className: "pages"
152
- }, pages.map(function (page, idx) {
153
- return React.createElement(PageThumbnail, {
154
- key: "".concat(page.id),
155
- isLocked: isLocked(page),
156
- error: page.syncError,
157
- src: page.src,
158
- isActive: page.isActive,
159
- onClick: function onClick() {
160
- return onPageClick(idx);
161
- },
162
- metadata: page.metadata,
163
- showMetadata: showMetadata,
164
- imageIndex: idx,
165
- imageId: page.id,
166
- onMetadataChange: onMetadataChange,
167
- metadataConfigs: metadataConfigs,
168
- onRecalcClick: onRecalcClick,
169
- isRecalcReady: page.isRecalcReady
170
- });
171
- })));
172
- }
173
-
174
- PageSelector.defaultProps = {
175
- onPageClick: function onPageClick() {},
176
- recalcActive: false,
177
- saveActive: false,
178
- pageNumber: undefined
179
- };
180
- export default PageSelector;
@@ -1,73 +0,0 @@
1
- import React, { Fragment } from "react";
2
- import { styled } from "@mui/material/styles";
3
- import { createTheme, ThemeProvider } from "@mui/material/styles";
4
- var theme = createTheme();
5
- var Svg = styled("svg")(function (_ref) {
6
- var theme = _ref.theme;
7
- return {
8
- pointerEvents: "none",
9
- position: "absolute",
10
- zIndex: 1,
11
- left: 0,
12
- top: 0,
13
- width: "100%",
14
- height: "100%",
15
- "& text": {
16
- fill: "#fff"
17
- },
18
- "& path": {
19
- vectorEffect: "non-scaling-stroke",
20
- strokeWidth: 2,
21
- opacity: 0.5,
22
- stroke: "#FFF",
23
- fill: "none",
24
- strokeDasharray: 5,
25
- animationDuration: "4s",
26
- animationTimingFunction: "linear",
27
- animationIterationCount: "infinite",
28
- animationPlayState: "running"
29
- }
30
- };
31
- });
32
- export var PointDistances = function PointDistances(_ref2) {
33
- var projectRegionBox = _ref2.projectRegionBox,
34
- regions = _ref2.regions,
35
- pointDistancePrecision = _ref2.pointDistancePrecision,
36
- realSize = _ref2.realSize;
37
- return React.createElement(ThemeProvider, {
38
- theme: theme
39
- }, React.createElement(Svg, null, regions.filter(function (r1) {
40
- return r1.type === "point";
41
- }).flatMap(function (r1, i1) {
42
- return regions.filter(function (r2, i2) {
43
- return i2 > i1;
44
- }).filter(function (r2) {
45
- return r2.type === "point";
46
- }).map(function (r2) {
47
- var pr1 = projectRegionBox(r1);
48
- var pr2 = projectRegionBox(r2);
49
- var prm = {
50
- x: (pr1.x + pr1.w / 2 + pr2.x + pr2.w / 2) / 2,
51
- y: (pr1.y + pr1.h / 2 + pr2.y + pr2.h / 2) / 2
52
- };
53
- var displayDistance;
54
-
55
- if (realSize) {
56
- var w = realSize.w,
57
- h = realSize.h,
58
- unitName = realSize.unitName;
59
- displayDistance = Math.sqrt(Math.pow(r1.x * w - r2.x * w, 2) + Math.pow(r1.y * h - r2.y * h, 2)).toFixed(pointDistancePrecision) + unitName;
60
- } else {
61
- displayDistance = (Math.sqrt(Math.pow(r1.x - r2.x, 2) + Math.pow(r1.y - r2.y, 2)) * 100).toFixed(pointDistancePrecision) + "%";
62
- }
63
-
64
- return React.createElement(Fragment, null, React.createElement("path", {
65
- d: "M".concat(pr1.x + pr1.w / 2, ",").concat(pr1.y + pr1.h / 2, " L").concat(pr2.x + pr2.w / 2, ",").concat(pr2.y + pr2.h / 2)
66
- }), React.createElement("text", {
67
- x: prm.x,
68
- y: prm.y
69
- }, displayDistance));
70
- });
71
- })));
72
- };
73
- export default PointDistances;
@@ -1,51 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- import React, { useState } from "react";
4
- import { RemoveScroll } from "react-remove-scroll";
5
- import { styled } from "@mui/material/styles";
6
- import { createTheme, ThemeProvider } from "@mui/material/styles";
7
- import useEventCallback from "use-event-callback";
8
- var theme = createTheme();
9
- var Container = styled("div")(function (_ref) {
10
- var theme = _ref.theme;
11
- return {
12
- "& > div": {
13
- width: "100%",
14
- height: "100%"
15
- }
16
- };
17
- });
18
- export var PreventScrollToParents = function PreventScrollToParents(_ref2) {
19
- var children = _ref2.children,
20
- otherProps = _objectWithoutProperties(_ref2, ["children"]);
21
-
22
- var _useState = useState(false),
23
- _useState2 = _slicedToArray(_useState, 2),
24
- mouseOver = _useState2[0],
25
- changeMouseOver = _useState2[1];
26
-
27
- var onMouseMove = useEventCallback(function (e) {
28
- if (!mouseOver) changeMouseOver(true);
29
-
30
- if (otherProps.onMouseMove) {
31
- otherProps.onMouseMove(e);
32
- }
33
- });
34
- var onMouseLeave = useEventCallback(function (e) {
35
- setTimeout(function () {
36
- if (mouseOver) {
37
- changeMouseOver(false);
38
- }
39
- }, 100);
40
- });
41
- return React.createElement(ThemeProvider, {
42
- theme: theme
43
- }, React.createElement(Container, Object.assign({}, otherProps, {
44
- onMouseMove: onMouseMove,
45
- onMouseLeave: onMouseLeave
46
- }), React.createElement(RemoveScroll, {
47
- enabled: mouseOver,
48
- removeScrollBar: false
49
- }, children)));
50
- };
51
- export default PreventScrollToParents;