@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,417 +0,0 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
5
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
6
- import React, { useCallback, useEffect, useReducer } from "react";
7
- import makeImmutable, { without } from "seamless-immutable";
8
- import intersection from "lodash/intersection";
9
- import MainLayout from "../MainLayout";
10
- import SettingsProvider from "../SettingsProvider";
11
- import combineReducers from "./reducers/combine-reducers.js";
12
- import generalReducer from "./reducers/general-reducer.js";
13
- import getFromLocalStorage from "../utils/get-from-local-storage";
14
- import historyHandler from "./reducers/history-handler.js";
15
- import imageReducer from "./reducers/image-reducer.js";
16
- import useEventCallback from "use-event-callback";
17
- import videoReducer from "./reducers/video-reducer.js";
18
- import { reacalcActionsEnum } from "../utils/saveable-actions-enum";
19
- import sleep from '../utils/sleep';
20
- export var Annotator = function Annotator(_ref) {
21
- var images = _ref.images,
22
- allowedArea = _ref.allowedArea,
23
- _ref$selectedImage = _ref.selectedImage,
24
- selectedImage = _ref$selectedImage === void 0 ? images && images.length > 0 ? 0 : undefined : _ref$selectedImage,
25
- showPointDistances = _ref.showPointDistances,
26
- pointDistancePrecision = _ref.pointDistancePrecision,
27
- _ref$showTags = _ref.showTags,
28
- showTags = _ref$showTags === void 0 ? getFromLocalStorage("showTags", true) : _ref$showTags,
29
- _ref$enabledTools = _ref.enabledTools,
30
- enabledTools = _ref$enabledTools === void 0 ? ["select", "create-point", "create-box", "create-polygon", "create-line", "create-expanding-line", "show-mask"] : _ref$enabledTools,
31
- _ref$selectedTool = _ref.selectedTool,
32
- selectedTool = _ref$selectedTool === void 0 ? "select" : _ref$selectedTool,
33
- _ref$regionTagList = _ref.regionTagList,
34
- regionTagList = _ref$regionTagList === void 0 ? [] : _ref$regionTagList,
35
- _ref$regionClsList = _ref.regionClsList,
36
- regionClsList = _ref$regionClsList === void 0 ? [] : _ref$regionClsList,
37
- _ref$imageTagList = _ref.imageTagList,
38
- imageTagList = _ref$imageTagList === void 0 ? [] : _ref$imageTagList,
39
- _ref$imageClsList = _ref.imageClsList,
40
- imageClsList = _ref$imageClsList === void 0 ? [] : _ref$imageClsList,
41
- _ref$keyframes = _ref.keyframes,
42
- keyframes = _ref$keyframes === void 0 ? {} : _ref$keyframes,
43
- _ref$taskDescription = _ref.taskDescription,
44
- taskDescription = _ref$taskDescription === void 0 ? "" : _ref$taskDescription,
45
- _ref$help = _ref.help,
46
- help = _ref$help === void 0 ? "" : _ref$help,
47
- _ref$fullImageSegment = _ref.fullImageSegmentationMode,
48
- fullImageSegmentationMode = _ref$fullImageSegment === void 0 ? false : _ref$fullImageSegment,
49
- RegionEditLabel = _ref.RegionEditLabel,
50
- videoSrc = _ref.videoSrc,
51
- _ref$videoTime = _ref.videoTime,
52
- videoTime = _ref$videoTime === void 0 ? 0 : _ref$videoTime,
53
- videoName = _ref.videoName,
54
- onExit = _ref.onExit,
55
- onNextImage = _ref.onNextImage,
56
- onPrevImage = _ref.onPrevImage,
57
- keypointDefinitions = _ref.keypointDefinitions,
58
- _ref$autoSegmentation = _ref.autoSegmentationOptions,
59
- autoSegmentationOptions = _ref$autoSegmentation === void 0 ? {
60
- type: "autoseg"
61
- } : _ref$autoSegmentation,
62
- hideHeader = _ref.hideHeader,
63
- hideHeaderText = _ref.hideHeaderText,
64
- hideNext = _ref.hideNext,
65
- hidePrev = _ref.hidePrev,
66
- hideClone = _ref.hideClone,
67
- hideSettings = _ref.hideSettings,
68
- hideFullScreen = _ref.hideFullScreen,
69
- hideSave = _ref.hideSave,
70
- allowComments = _ref.allowComments,
71
- onImagesChange = _ref.onImagesChange,
72
- groups = _ref.groups,
73
- onGroupSelect = _ref.onGroupSelect,
74
- hideHistory = _ref.hideHistory,
75
- hideNotEditingLabel = _ref.hideNotEditingLabel,
76
- showEditor = _ref.showEditor,
77
- showPageSelector = _ref.showPageSelector,
78
- _ref$clsColors = _ref.clsColors,
79
- clsColors = _ref$clsColors === void 0 ? {} : _ref$clsColors,
80
- groupColors = _ref.groupColors,
81
- onSelectedImageChange = _ref.onSelectedImageChange,
82
- albumMetadata = _ref.albumMetadata,
83
- metadataConfigs = _ref.metadataConfigs,
84
- _ref$save = _ref.save,
85
- save = _ref$save === void 0 ? function () {} : _ref$save,
86
- _ref$fetchImage = _ref.fetchImage,
87
- fetchImage = _ref$fetchImage === void 0 ? function () {} : _ref$fetchImage;
88
-
89
- if (typeof selectedImage === "string") {
90
- selectedImage = (images || []).findIndex(function (img) {
91
- return img.src === selectedImage;
92
- });
93
- if (selectedImage === -1) selectedImage = undefined;
94
- }
95
-
96
- var annotationType = images ? "image" : "video";
97
-
98
- var _useReducer = useReducer(historyHandler(combineReducers(annotationType === "image" ? imageReducer : videoReducer, generalReducer)), makeImmutable(_objectSpread({
99
- annotationType: annotationType,
100
- showTags: showTags,
101
- allowedArea: allowedArea,
102
- showPointDistances: showPointDistances,
103
- pointDistancePrecision: pointDistancePrecision,
104
- selectedTool: selectedTool,
105
- fullImageSegmentationMode: fullImageSegmentationMode,
106
- autoSegmentationOptions: autoSegmentationOptions,
107
- mode: null,
108
- taskDescription: taskDescription,
109
- help: help,
110
- showMask: true,
111
- labelImages: imageClsList.length > 0 || imageTagList.length > 0,
112
- regionClsList: regionClsList,
113
- regionTagList: regionTagList,
114
- imageClsList: imageClsList,
115
- imageTagList: imageTagList,
116
- currentVideoTime: videoTime,
117
- enabledTools: enabledTools,
118
- history: [],
119
- videoName: videoName,
120
- keypointDefinitions: keypointDefinitions,
121
- allowComments: allowComments
122
- }, annotationType === "image" ? {
123
- selectedImage: selectedImage,
124
- images: images,
125
- selectedImageFrameTime: images && images.length > 0 ? images[0].frameTime : undefined
126
- } : {
127
- videoSrc: videoSrc,
128
- keyframes: keyframes
129
- }, {
130
- imagesUpdatedAt: null,
131
- imagesSavedAt: null,
132
- albumMetadata: albumMetadata,
133
- metadataConfigs: metadataConfigs,
134
- toPollImages: _toConsumableArray(images.filter(function (i) {
135
- return i.lockedUntil;
136
- }).map(function (i) {
137
- return i.id;
138
- })),
139
- toSaveImage: null
140
- }))),
141
- _useReducer2 = _slicedToArray(_useReducer, 2),
142
- state = _useReducer2[0],
143
- dispatchToReducer = _useReducer2[1];
144
-
145
- var dispatch = useEventCallback(function (action) {
146
- if (action.type === "HEADER_BUTTON_CLICKED") {
147
- if (["Exit", "Done", "Save", "Complete"].includes(action.buttonName)) {
148
- return onExit(without(state, "history"));
149
- } else if (action.buttonName === "Next" && onNextImage) {
150
- return onNextImage(without(state, "history"));
151
- } else if (action.buttonName === "Prev" && onPrevImage) {
152
- return onPrevImage(without(state, "history"));
153
- }
154
- }
155
-
156
- dispatchToReducer(action);
157
- });
158
- var onRegionClassAdded = useEventCallback(function (cls) {
159
- dispatchToReducer({
160
- type: "ON_CLS_ADDED",
161
- cls: cls
162
- });
163
- });
164
-
165
- var handleMetadataChange = function handleMetadataChange(params) {
166
- dispatchToReducer(_objectSpread({
167
- type: "UPDATE_METADATA"
168
- }, params));
169
- };
170
-
171
- var handleAddGroup = function handleAddGroup(group) {
172
- dispatchToReducer({
173
- type: "ADD_GROUP",
174
- group: group
175
- });
176
- };
177
-
178
- var handleRecalcClicked = useCallback(function (_ref2) {
179
- var imageId = _ref2.imageId;
180
- dispatchToReducer({
181
- type: "RECALC_CLICKED",
182
- imageId: imageId
183
- });
184
- }, [dispatchToReducer]); // detect on page change if anything changed, if so trigger save and recalc
185
-
186
- useEffect(function () {
187
- var selectedImage = state.selectedImage,
188
- previouslySelectedImage = state.previouslySelectedImage,
189
- lastAction = state.lastAction;
190
-
191
- if ((lastAction === null || lastAction === void 0 ? void 0 : lastAction.type) === 'SELECT_IMAGE' && selectedImage !== previouslySelectedImage) {
192
- var _state$images$previou, _state$images$previou2;
193
-
194
- // save if previously selected image has any changes
195
- if (((_state$images$previou = state.images[previouslySelectedImage]) === null || _state$images$previou === void 0 ? void 0 : (_state$images$previou2 = _state$images$previou.saveableActions) === null || _state$images$previou2 === void 0 ? void 0 : _state$images$previou2.length) > 0) {
196
- var _state$images$previou3, _state$images$previou4;
197
-
198
- // decide wheather recalc is needed
199
- var triggerRecalc = intersection(reacalcActionsEnum, state.images[previouslySelectedImage].saveableActions).length > 0; // decide whether album metadata should be updated
200
-
201
- var toSaveMetadata = [];
202
-
203
- if ((_state$images$previou3 = state.images[previouslySelectedImage]) === null || _state$images$previou3 === void 0 ? void 0 : (_state$images$previou4 = _state$images$previou3.saveableActions) === null || _state$images$previou4 === void 0 ? void 0 : _state$images$previou4.includes("UPDATE_ALBUM_METADATA")) {
204
- toSaveMetadata = state.albumMetadata;
205
- } // set this image to be saved
206
-
207
-
208
- dispatchToReducer({
209
- type: "SAVE_IMAGE",
210
- image: _objectSpread({}, state.images[previouslySelectedImage]),
211
- triggerRecalc: triggerRecalc,
212
- toSaveMetadata: toSaveMetadata
213
- });
214
- }
215
- }
216
- }, [state.previouslySelectedImage, state.selectedImage, state.images, state, save]); // handle save of image
217
-
218
- useEffect(function () {
219
- if (state.toSaveImage !== null) {
220
- // metadata on album level
221
- var saveHandler =
222
- /*#__PURE__*/
223
- function () {
224
- var _ref3 = _asyncToGenerator(
225
- /*#__PURE__*/
226
- _regeneratorRuntime.mark(function _callee(image, triggerRecalc, albumMetadata) {
227
- var _ref4, lockedUntil;
228
-
229
- return _regeneratorRuntime.wrap(function _callee$(_context) {
230
- while (1) {
231
- switch (_context.prev = _context.next) {
232
- case 0:
233
- dispatchToReducer({
234
- type: "IMAGE_UPDATE_INIT",
235
- imageId: image.id
236
- });
237
- _context.prev = 1;
238
- _context.next = 4;
239
- return save({
240
- image: image,
241
- triggerRecalc: triggerRecalc,
242
- albumMetadata: albumMetadata
243
- });
244
-
245
- case 4:
246
- _ref4 = _context.sent;
247
- lockedUntil = _ref4.lockedUntil;
248
- dispatchToReducer({
249
- type: "IMAGE_UPDATE_SUCCESS",
250
- imageId: image.id,
251
- lockedUntil: lockedUntil
252
- });
253
- _context.next = 12;
254
- break;
255
-
256
- case 9:
257
- _context.prev = 9;
258
- _context.t0 = _context["catch"](1);
259
- dispatchToReducer({
260
- type: "IMAGE_UPDATE_FAIL",
261
- imageId: image.id,
262
- error: _context.t0
263
- });
264
-
265
- case 12:
266
- case "end":
267
- return _context.stop();
268
- }
269
- }
270
- }, _callee, null, [[1, 9]]);
271
- }));
272
-
273
- return function saveHandler(_x, _x2, _x3) {
274
- return _ref3.apply(this, arguments);
275
- };
276
- }();
277
-
278
- var _state$toSaveImage = state.toSaveImage,
279
- image = _state$toSaveImage.image,
280
- triggerRecalc = _state$toSaveImage.triggerRecalc,
281
- toSaveMetadata = _state$toSaveImage.toSaveMetadata;
282
- saveHandler(image, triggerRecalc, toSaveMetadata);
283
- }
284
- }, [save, state.toSaveImage]); // polling of images
285
-
286
- useEffect(function () {
287
- if (state.toPollImages.length > 0) {
288
- var polledImages = state.toPollImages.reduce(function (acc, imageId) {
289
- function pollImage(_x4, _x5) {
290
- return _pollImage.apply(this, arguments);
291
- } // make recursive calling of polling function
292
-
293
-
294
- function _pollImage() {
295
- _pollImage = _asyncToGenerator(
296
- /*#__PURE__*/
297
- _regeneratorRuntime.mark(function _callee2(fetchImage, imageId) {
298
- var tries,
299
- _ref5,
300
- image,
301
- _args2 = arguments;
302
-
303
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
304
- while (1) {
305
- switch (_context2.prev = _context2.next) {
306
- case 0:
307
- tries = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : 5;
308
-
309
- if (!(tries === 0)) {
310
- _context2.next = 4;
311
- break;
312
- }
313
-
314
- dispatchToReducer({
315
- type: "IMAGE_POLL_TIMEOUT",
316
- imageId: imageId
317
- });
318
- return _context2.abrupt("return");
319
-
320
- case 4:
321
- _context2.next = 6;
322
- return fetchImage({
323
- imageId: imageId
324
- });
325
-
326
- case 6:
327
- _ref5 = _context2.sent;
328
- image = _ref5.image;
329
-
330
- if (image.lockedUntil) {
331
- _context2.next = 11;
332
- break;
333
- }
334
-
335
- dispatchToReducer({
336
- type: "IMAGE_POLL_SUCCESS",
337
- image: image
338
- });
339
- return _context2.abrupt("return");
340
-
341
- case 11:
342
- _context2.next = 13;
343
- return sleep(5000);
344
-
345
- case 13:
346
- _context2.next = 15;
347
- return pollImage(fetchImage, imageId, tries - 1);
348
-
349
- case 15:
350
- return _context2.abrupt("return", _context2.sent);
351
-
352
- case 16:
353
- case "end":
354
- return _context2.stop();
355
- }
356
- }
357
- }, _callee2);
358
- }));
359
- return _pollImage.apply(this, arguments);
360
- }
361
-
362
- pollImage(fetchImage, imageId, 10);
363
- return imageId;
364
- }, []);
365
- dispatchToReducer({
366
- type: "IMAGE_POLL_INIT",
367
- imageIds: polledImages
368
- });
369
- }
370
- }, [fetchImage, state.toPollImages]);
371
- useEffect(function () {
372
- if (selectedImage === undefined) return;
373
- dispatchToReducer({
374
- type: "SELECT_IMAGE",
375
- imageIndex: selectedImage,
376
- image: state.images[selectedImage]
377
- }); // eslint-disable-next-line react-hooks/exhaustive-deps
378
- }, [onImagesChange, selectedImage]);
379
- if (!images && !videoSrc) return 'Missing required prop "images" or "videoSrc"';
380
-
381
- var _ref6 = state.imagesSavedAt < state.imagesUpdatedAt ? [true, true] : [false, false],
382
- _ref7 = _slicedToArray(_ref6, 2),
383
- recalcActive = _ref7[0],
384
- saveActive = _ref7[1];
385
-
386
- return React.createElement(SettingsProvider, {
387
- clsColors: clsColors,
388
- groupColors: groupColors
389
- }, React.createElement(MainLayout, {
390
- RegionEditLabel: RegionEditLabel,
391
- alwaysShowNextButton: Boolean(onNextImage),
392
- alwaysShowPrevButton: Boolean(onPrevImage),
393
- state: state,
394
- dispatch: dispatch,
395
- onRegionClassAdded: onRegionClassAdded,
396
- hideHeader: hideHeader,
397
- hideHeaderText: hideHeaderText,
398
- hideNext: hideNext,
399
- hidePrev: hidePrev,
400
- hideClone: hideClone,
401
- hideSettings: hideSettings,
402
- hideFullScreen: hideFullScreen,
403
- hideSave: hideSave,
404
- groups: groups,
405
- onGroupSelect: onGroupSelect,
406
- hideHistory: hideHistory,
407
- hideNotEditingLabel: hideNotEditingLabel,
408
- showEditor: showEditor,
409
- showPageSelector: showPageSelector,
410
- saveActive: recalcActive,
411
- recalcActive: saveActive,
412
- onMetadataChange: handleMetadataChange,
413
- onAddGroup: handleAddGroup,
414
- onRecalcClick: handleRecalcClicked
415
- }));
416
- };
417
- export default Annotator;
@@ -1,14 +0,0 @@
1
- export default (function () {
2
- for (var _len = arguments.length, reducers = new Array(_len), _key = 0; _key < _len; _key++) {
3
- reducers[_key] = arguments[_key];
4
- }
5
-
6
- return function (state, action) {
7
- for (var _i = 0, _reducers = reducers; _i < _reducers.length; _i++) {
8
- var reducer = _reducers[_i];
9
- state = reducer(state, action);
10
- }
11
-
12
- return state;
13
- };
14
- });
@@ -1,73 +0,0 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
-
4
- function clamp(num, min, max) {
5
- return num <= min ? min : num >= max ? max : num;
6
- }
7
-
8
- export default (function (expandingLine) {
9
- var expandingWidth = expandingLine.expandingWidth || 0.005;
10
- var pointPairs = expandingLine.points.map(function (_ref, i) {
11
- var x = _ref.x,
12
- y = _ref.y,
13
- angle = _ref.angle,
14
- width = _ref.width;
15
-
16
- if (!angle) {
17
- var n = expandingLine.points[clamp(i + 1, 0, expandingLine.points.length - 1)];
18
- var p = expandingLine.points[clamp(i - 1, 0, expandingLine.points.length - 1)];
19
- angle = Math.atan2(p.x - n.x, p.y - n.y) + Math.PI / 2;
20
- }
21
-
22
- var dx = Math.sin(angle) * (width || expandingWidth) / 2;
23
- var dy = Math.cos(angle) * (width || expandingWidth) / 2;
24
- return [{
25
- x: x + dx,
26
- y: y + dy
27
- }, {
28
- x: x - dx,
29
- y: y - dy
30
- }];
31
- });
32
- var firstSection = pointPairs.map(function (_ref2) {
33
- var _ref3 = _slicedToArray(_ref2, 2),
34
- p1 = _ref3[0],
35
- p2 = _ref3[1];
36
-
37
- return p1;
38
- });
39
- var secondSection = pointPairs.map(function (_ref4) {
40
- var _ref5 = _slicedToArray(_ref4, 2),
41
- p1 = _ref5[0],
42
- p2 = _ref5[1];
43
-
44
- return p2;
45
- }).asMutable();
46
- secondSection.reverse();
47
- var newPoints = firstSection.concat(secondSection).map(function (_ref6) {
48
- var x = _ref6.x,
49
- y = _ref6.y;
50
- return [x, y];
51
- });
52
- return _objectSpread({}, expandingLine, {
53
- type: "polygon",
54
- open: false,
55
- points: newPoints,
56
- unfinished: undefined,
57
- candidatePoint: undefined // let { expandingWidth = 0.005, points } = region
58
- // expandingWidth = points.slice(-1)[0].width || expandingWidth
59
- // const lastPoint = points.slice(-1)[0]
60
- // return (
61
- // <>
62
- // <polygon
63
- // points={
64
- // .map((p) => `${p.x * iw} ${p.y * ih}`)
65
- // .join(" ")}
66
- // return {
67
- // ...expandingLine,
68
- // unfinished: undefined,
69
- // candidatePoint: undefined,
70
- // }
71
-
72
- });
73
- });