@searpent/react-image-annotate 2.0.75 → 2.0.77

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 +899 -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/{Editor → src/Editor}/annotation-plugin/annotation.css +20 -0
  41. package/src/Editor/annotation-plugin/annotation.js +546 -0
  42. package/src/Editor/index.js +50 -0
  43. package/src/Editor/readOnly.js +31 -0
  44. package/{Editor → src/Editor}/tools.js +3 -2
  45. package/src/Errorer/index.js +13 -0
  46. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  47. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  48. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  49. package/src/FullImageSegmentationAnnotator/index.js +7 -0
  50. package/src/FullImageSegmentationAnnotator/index.story.js +177 -0
  51. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  52. package/src/GroupSelectorSidebarBox/index.js +48 -0
  53. package/src/GroupsEditorSidebarBox/index.js +108 -0
  54. package/src/HelpSidebarBox/index.js +43 -0
  55. package/src/HighlightBox/index.js +143 -0
  56. package/src/HistorySidebarBox/index.js +78 -0
  57. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  58. package/src/ImageCanvas/index.js +515 -0
  59. package/src/ImageCanvas/index.story.js +314 -0
  60. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  61. package/src/ImageCanvas/region-tools.js +171 -0
  62. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  63. package/{ImageCanvas → src/ImageCanvas}/styles.js +8 -12
  64. package/src/ImageCanvas/use-mouse.js +168 -0
  65. package/src/ImageCanvas/use-project-box.js +23 -0
  66. package/src/ImageCanvas/use-wasd-mode.js +50 -0
  67. package/src/ImageMask/index.js +127 -0
  68. package/src/ImageMask/load-image.js +32 -0
  69. package/src/ImageSelectorSidebarBox/index.js +54 -0
  70. package/src/KeyframeTimeline/get-time-string.js +25 -0
  71. package/src/KeyframeTimeline/index.js +223 -0
  72. package/src/KeyframesSelectorSidebarBox/index.js +93 -0
  73. package/src/LandingPage/content.md +57 -0
  74. package/src/LandingPage/github-markdown.css +964 -0
  75. package/src/LandingPage/index.js +147 -0
  76. package/src/Locker/index.js +13 -0
  77. package/src/MainLayout/RightSidebarItemsWrapper.js +21 -0
  78. package/src/MainLayout/icon-dictionary.js +79 -0
  79. package/src/MainLayout/index.js +564 -0
  80. package/src/MainLayout/index.story.js +240 -0
  81. package/{MainLayout → src/MainLayout}/styles.js +7 -6
  82. package/src/MainLayout/types.js +171 -0
  83. package/src/MainLayout/use-implied-video-regions.js +17 -0
  84. package/src/MetadataEditorSidebarBox/index.js +160 -0
  85. package/src/PageSelector/index.js +159 -0
  86. package/src/PointDistances/index.js +90 -0
  87. package/src/PreventScrollToParents/index.js +48 -0
  88. package/src/PreventScrollToParents/index.story.js +23 -0
  89. package/src/RegionLabel/index.js +236 -0
  90. package/{RegionLabel → src/RegionLabel}/styles.js +15 -12
  91. package/src/RegionSelectAndTransformBoxes/index.js +236 -0
  92. package/src/RegionSelectorSidebarBox/index.js +220 -0
  93. package/{RegionSelectorSidebarBox → src/RegionSelectorSidebarBox}/styles.js +14 -13
  94. package/src/RegionShapes/index.js +254 -0
  95. package/src/RegionTags/index.js +136 -0
  96. package/src/SettingsDialog/index.js +58 -0
  97. package/src/SettingsProvider/index.js +57 -0
  98. package/src/Shortcuts/ShortcutField.js +44 -0
  99. package/src/Shortcuts/index.js +129 -0
  100. package/src/ShortcutsManager/index.js +162 -0
  101. package/src/Sidebar/index.js +117 -0
  102. package/src/SidebarBoxContainer/index.js +93 -0
  103. package/src/SmallToolButton/index.js +57 -0
  104. package/src/TagsSidebarBox/index.js +93 -0
  105. package/src/TaskDescriptionSidebarBox/index.js +43 -0
  106. package/src/Theme/index.js +36 -0
  107. package/src/VideoOrImageCanvasBackground/index.js +170 -0
  108. package/src/colors.js +32 -0
  109. package/src/hooks/use-colors.js +95 -0
  110. package/src/hooks/use-event-callback.js +11 -0
  111. package/src/hooks/use-exclude-pattern.js +27 -0
  112. package/src/hooks/use-load-image.js +21 -0
  113. package/src/hooks/use-window-size.js +46 -0
  114. package/{hooks → src/hooks}/xpattern.js +1 -1
  115. package/src/hooks/xpattern.png +0 -0
  116. package/src/index.js +18 -0
  117. package/src/lib.js +7 -0
  118. package/src/screenshot.png +0 -0
  119. package/src/site.css +5 -0
  120. package/src/stories.js +2 -0
  121. package/src/utils/blocks-to-article.js +61 -0
  122. package/{utils → src/utils}/blocks-to-article.test.js +8 -5
  123. package/{utils → src/utils}/default-locked-until.js +1 -2
  124. package/{utils → src/utils}/filter-only-unique.js +1 -1
  125. package/src/utils/get-from-local-storage.js +7 -0
  126. package/src/utils/get-hotkey-help-text.js +11 -0
  127. package/src/utils/get-landmarks-with-transform.js +23 -0
  128. package/src/utils/photosToImages.js +67 -0
  129. package/src/utils/regions-groups.js +19 -0
  130. package/src/utils/regions-to-blocks.js +16 -0
  131. package/src/utils/saveable-actions-enum.js +5 -0
  132. package/src/utils/set-in-local-storage.js +6 -0
  133. package/src/utils/sleep.js +3 -0
  134. package/src/utils/uuid-to-hash.js +5 -0
  135. package/Annotator/exampleImages.js +0 -41
  136. package/Annotator/examplePhotos.js +0 -6980
  137. package/Annotator/index.js +0 -417
  138. package/Annotator/reducers/combine-reducers.js +0 -14
  139. package/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -73
  140. package/Annotator/reducers/general-reducer.js +0 -1430
  141. package/Annotator/reducers/get-active-image.js +0 -27
  142. package/Annotator/reducers/get-implied-video-regions.js +0 -180
  143. package/Annotator/reducers/history-handler.js +0 -38
  144. package/Annotator/reducers/image-reducer.js +0 -20
  145. package/Annotator/reducers/video-reducer.js +0 -88
  146. package/ClassSelectionMenu/index.js +0 -140
  147. package/Crosshairs/index.js +0 -53
  148. package/DebugSidebarBox/index.js +0 -20
  149. package/DemoSite/Editor.js +0 -194
  150. package/DemoSite/ErrorBoundaryDialog.js +0 -64
  151. package/DemoSite/index.js +0 -40
  152. package/Editor/annotation-plugin/annotation.js +0 -647
  153. package/Editor/index.js +0 -93
  154. package/Editor/readOnly.js +0 -73
  155. package/Errorer/index.js +0 -11
  156. package/FullImageSegmentationAnnotator/index.js +0 -7
  157. package/GroupSelectorSidebarBox/index.js +0 -63
  158. package/GroupsEditorSidebarBox/index.js +0 -138
  159. package/HelpSidebarBox/index.js +0 -58
  160. package/HighlightBox/index.js +0 -102
  161. package/HistorySidebarBox/index.js +0 -71
  162. package/ImageCanvas/index.js +0 -441
  163. package/ImageCanvas/region-tools.js +0 -165
  164. package/ImageCanvas/use-mouse.js +0 -180
  165. package/ImageCanvas/use-project-box.js +0 -27
  166. package/ImageCanvas/use-wasd-mode.js +0 -62
  167. package/ImageMask/index.js +0 -133
  168. package/ImageMask/load-image.js +0 -25
  169. package/ImageSelectorSidebarBox/index.js +0 -60
  170. package/KeyframeTimeline/get-time-string.js +0 -27
  171. package/KeyframeTimeline/index.js +0 -233
  172. package/KeyframesSelectorSidebarBox/index.js +0 -93
  173. package/LandingPage/index.js +0 -159
  174. package/Locker/index.js +0 -11
  175. package/MainLayout/RightSidebarItemsWrapper.js +0 -19
  176. package/MainLayout/icon-dictionary.js +0 -104
  177. package/MainLayout/index.js +0 -526
  178. package/MainLayout/types.js +0 -0
  179. package/MainLayout/use-implied-video-regions.js +0 -13
  180. package/MetadataEditorSidebarBox/index.js +0 -231
  181. package/PageSelector/index.js +0 -180
  182. package/PointDistances/index.js +0 -73
  183. package/PreventScrollToParents/index.js +0 -51
  184. package/RegionLabel/index.js +0 -232
  185. package/RegionSelectAndTransformBoxes/index.js +0 -169
  186. package/RegionSelectorSidebarBox/index.js +0 -254
  187. package/RegionShapes/index.js +0 -294
  188. package/RegionTags/index.js +0 -144
  189. package/SettingsDialog/index.js +0 -52
  190. package/SettingsProvider/index.js +0 -60
  191. package/Shortcuts/ShortcutField.js +0 -46
  192. package/Shortcuts/index.js +0 -133
  193. package/ShortcutsManager/index.js +0 -155
  194. package/Sidebar/index.js +0 -69
  195. package/SidebarBoxContainer/index.js +0 -93
  196. package/SmallToolButton/index.js +0 -42
  197. package/TagsSidebarBox/index.js +0 -105
  198. package/TaskDescriptionSidebarBox/index.js +0 -58
  199. package/Theme/index.js +0 -30
  200. package/VideoOrImageCanvasBackground/index.js +0 -151
  201. package/colors.js +0 -14
  202. package/hooks/use-colors.js +0 -97
  203. package/hooks/use-event-callback.js +0 -10
  204. package/hooks/use-exclude-pattern.js +0 -24
  205. package/hooks/use-load-image.js +0 -26
  206. package/hooks/use-window-size.js +0 -46
  207. package/index.js +0 -3
  208. package/lib.js +0 -3
  209. package/stories.js +0 -5
  210. package/utils/blocks-to-article.js +0 -60
  211. package/utils/get-from-local-storage.js +0 -7
  212. package/utils/get-hotkey-help-text.js +0 -9
  213. package/utils/get-landmarks-with-transform.js +0 -40
  214. package/utils/photosToImages.js +0 -85
  215. package/utils/regions-groups.js +0 -28
  216. package/utils/regions-to-blocks.js +0 -18
  217. package/utils/saveable-actions-enum.js +0 -3
  218. package/utils/set-in-local-storage.js +0 -3
  219. package/utils/sleep.js +0 -7
  220. package/utils/uuid-to-hash.js +0 -5
  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
- });