@searpent/react-image-annotate 2.0.1 → 2.0.2

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 (173) hide show
  1. package/Annotator/index.js +161 -0
  2. package/Annotator/reducers/combine-reducers.js +14 -0
  3. package/Annotator/reducers/convert-expanding-line-to-polygon.js +73 -0
  4. package/{src/Annotator → Annotator}/reducers/fix-twisted.js +3 -5
  5. package/Annotator/reducers/general-reducer.js +1058 -0
  6. package/Annotator/reducers/get-active-image.js +27 -0
  7. package/Annotator/reducers/get-implied-video-regions.js +180 -0
  8. package/Annotator/reducers/history-handler.js +38 -0
  9. package/Annotator/reducers/image-reducer.js +20 -0
  10. package/Annotator/reducers/video-reducer.js +88 -0
  11. package/ClassSelectionMenu/index.js +135 -0
  12. package/Crosshairs/index.js +53 -0
  13. package/DebugSidebarBox/index.js +20 -0
  14. package/DemoSite/Editor.js +194 -0
  15. package/DemoSite/ErrorBoundaryDialog.js +64 -0
  16. package/DemoSite/index.js +40 -0
  17. package/FullImageSegmentationAnnotator/index.js +7 -0
  18. package/HighlightBox/index.js +99 -0
  19. package/HistorySidebarBox/index.js +71 -0
  20. package/ImageCanvas/index.js +424 -0
  21. package/ImageCanvas/region-tools.js +165 -0
  22. package/{src/ImageCanvas → ImageCanvas}/styles.js +12 -8
  23. package/ImageCanvas/use-mouse.js +180 -0
  24. package/ImageCanvas/use-project-box.js +27 -0
  25. package/ImageCanvas/use-wasd-mode.js +62 -0
  26. package/ImageMask/index.js +133 -0
  27. package/ImageMask/load-image.js +25 -0
  28. package/ImageSelectorSidebarBox/index.js +60 -0
  29. package/KeyframeTimeline/get-time-string.js +27 -0
  30. package/KeyframeTimeline/index.js +233 -0
  31. package/KeyframesSelectorSidebarBox/index.js +93 -0
  32. package/LandingPage/index.js +159 -0
  33. package/MainLayout/icon-dictionary.js +104 -0
  34. package/MainLayout/index.js +352 -0
  35. package/{src/MainLayout → MainLayout}/styles.js +6 -7
  36. package/MainLayout/types.js +0 -0
  37. package/MainLayout/use-implied-video-regions.js +13 -0
  38. package/PointDistances/index.js +73 -0
  39. package/PreventScrollToParents/index.js +51 -0
  40. package/RegionLabel/index.js +191 -0
  41. package/{src/RegionLabel → RegionLabel}/styles.js +12 -15
  42. package/RegionSelectAndTransformBoxes/index.js +167 -0
  43. package/RegionSelectorSidebarBox/index.js +248 -0
  44. package/{src/RegionSelectorSidebarBox → RegionSelectorSidebarBox}/styles.js +13 -14
  45. package/RegionShapes/index.js +274 -0
  46. package/RegionTags/index.js +138 -0
  47. package/SettingsDialog/index.js +52 -0
  48. package/SettingsProvider/index.js +53 -0
  49. package/Shortcuts/ShortcutField.js +46 -0
  50. package/Shortcuts/index.js +133 -0
  51. package/ShortcutsManager/index.js +155 -0
  52. package/Sidebar/index.js +69 -0
  53. package/SidebarBoxContainer/index.js +93 -0
  54. package/SmallToolButton/index.js +42 -0
  55. package/TagsSidebarBox/index.js +105 -0
  56. package/TaskDescriptionSidebarBox/index.js +58 -0
  57. package/Theme/index.js +30 -0
  58. package/VideoOrImageCanvasBackground/index.js +151 -0
  59. package/colors.js +14 -0
  60. package/hooks/use-event-callback.js +10 -0
  61. package/hooks/use-exclude-pattern.js +24 -0
  62. package/hooks/use-load-image.js +26 -0
  63. package/hooks/use-window-size.js +46 -0
  64. package/{src/hooks → hooks}/xpattern.js +1 -1
  65. package/index.js +3 -0
  66. package/lib.js +3 -0
  67. package/package.json +1 -1
  68. package/stories.js +5 -0
  69. package/utils/get-from-local-storage.js +7 -0
  70. package/utils/get-hotkey-help-text.js +9 -0
  71. package/utils/get-landmarks-with-transform.js +40 -0
  72. package/utils/set-in-local-storage.js +3 -0
  73. package/.babelrc +0 -6
  74. package/.env +0 -1
  75. package/.flowconfig +0 -2
  76. package/.github/workflows/release-on-master.yml +0 -32
  77. package/.github/workflows/test.yml +0 -16
  78. package/.prettierrc +0 -3
  79. package/.releaserc.js +0 -18
  80. package/.storybook/addons.js +0 -2
  81. package/.storybook/config.js +0 -16
  82. package/LICENSE +0 -21
  83. package/public/favicon.ico +0 -0
  84. package/public/index.html +0 -38
  85. package/src/Annotator/bike-pic.png +0 -0
  86. package/src/Annotator/bike-pic2.png +0 -0
  87. package/src/Annotator/dab-keyframes.story.json +0 -1
  88. package/src/Annotator/index.js +0 -211
  89. package/src/Annotator/index.story.js +0 -758
  90. package/src/Annotator/poses.story.js +0 -150
  91. package/src/Annotator/reducers/combine-reducers.js +0 -7
  92. package/src/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -53
  93. package/src/Annotator/reducers/general-reducer.js +0 -914
  94. package/src/Annotator/reducers/get-active-image.js +0 -21
  95. package/src/Annotator/reducers/get-implied-video-regions.js +0 -115
  96. package/src/Annotator/reducers/history-handler.js +0 -60
  97. package/src/Annotator/reducers/image-reducer.js +0 -23
  98. package/src/Annotator/reducers/video-reducer.js +0 -85
  99. package/src/Annotator/video.story.js +0 -51
  100. package/src/ClassSelectionMenu/index.js +0 -108
  101. package/src/Crosshairs/index.js +0 -64
  102. package/src/DebugSidebarBox/index.js +0 -36
  103. package/src/DemoSite/Editor.js +0 -235
  104. package/src/DemoSite/ErrorBoundaryDialog.js +0 -34
  105. package/src/DemoSite/index.js +0 -41
  106. package/src/DemoSite/index.story.js +0 -10
  107. package/src/DemoSite/simple-segmentation-example.json +0 -572
  108. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  109. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  110. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  111. package/src/FullImageSegmentationAnnotator/index.js +0 -7
  112. package/src/FullImageSegmentationAnnotator/index.story.js +0 -177
  113. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  114. package/src/HighlightBox/index.js +0 -143
  115. package/src/HistorySidebarBox/index.js +0 -78
  116. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  117. package/src/ImageCanvas/index.js +0 -488
  118. package/src/ImageCanvas/index.story.js +0 -214
  119. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  120. package/src/ImageCanvas/region-tools.js +0 -171
  121. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  122. package/src/ImageCanvas/use-mouse.js +0 -168
  123. package/src/ImageCanvas/use-project-box.js +0 -23
  124. package/src/ImageCanvas/use-wasd-mode.js +0 -50
  125. package/src/ImageMask/index.js +0 -127
  126. package/src/ImageMask/load-image.js +0 -32
  127. package/src/ImageSelectorSidebarBox/index.js +0 -54
  128. package/src/KeyframeTimeline/get-time-string.js +0 -25
  129. package/src/KeyframeTimeline/index.js +0 -223
  130. package/src/KeyframesSelectorSidebarBox/index.js +0 -93
  131. package/src/LandingPage/content.md +0 -57
  132. package/src/LandingPage/github-markdown.css +0 -964
  133. package/src/LandingPage/index.js +0 -147
  134. package/src/MainLayout/icon-dictionary.js +0 -79
  135. package/src/MainLayout/index.js +0 -420
  136. package/src/MainLayout/index.story.js +0 -240
  137. package/src/MainLayout/types.js +0 -156
  138. package/src/MainLayout/use-implied-video-regions.js +0 -17
  139. package/src/PointDistances/index.js +0 -90
  140. package/src/PreventScrollToParents/index.js +0 -48
  141. package/src/PreventScrollToParents/index.story.js +0 -23
  142. package/src/RegionLabel/index.js +0 -201
  143. package/src/RegionSelectAndTransformBoxes/index.js +0 -234
  144. package/src/RegionSelectorSidebarBox/index.js +0 -216
  145. package/src/RegionShapes/index.js +0 -236
  146. package/src/RegionTags/index.js +0 -130
  147. package/src/SettingsDialog/index.js +0 -58
  148. package/src/SettingsProvider/index.js +0 -44
  149. package/src/Shortcuts/ShortcutField.js +0 -44
  150. package/src/Shortcuts/index.js +0 -129
  151. package/src/ShortcutsManager/index.js +0 -162
  152. package/src/Sidebar/index.js +0 -117
  153. package/src/SidebarBoxContainer/index.js +0 -93
  154. package/src/SmallToolButton/index.js +0 -57
  155. package/src/TagsSidebarBox/index.js +0 -93
  156. package/src/TaskDescriptionSidebarBox/index.js +0 -43
  157. package/src/Theme/index.js +0 -36
  158. package/src/VideoOrImageCanvasBackground/index.js +0 -170
  159. package/src/colors.js +0 -32
  160. package/src/hooks/use-event-callback.js +0 -11
  161. package/src/hooks/use-exclude-pattern.js +0 -27
  162. package/src/hooks/use-load-image.js +0 -21
  163. package/src/hooks/use-window-size.js +0 -46
  164. package/src/hooks/xpattern.png +0 -0
  165. package/src/index.js +0 -18
  166. package/src/lib.js +0 -7
  167. package/src/screenshot.png +0 -0
  168. package/src/site.css +0 -5
  169. package/src/stories.js +0 -2
  170. package/src/utils/get-from-local-storage.js +0 -7
  171. package/src/utils/get-hotkey-help-text.js +0 -11
  172. package/src/utils/get-landmarks-with-transform.js +0 -23
  173. package/src/utils/set-in-local-storage.js +0 -6
@@ -1,758 +0,0 @@
1
- // @flow
2
-
3
- import React, { useState } from "react"
4
-
5
- import { storiesOf } from "@storybook/react"
6
- import { action as actionAddon } from "@storybook/addon-actions"
7
- import exampleImage from "../ImageCanvas/seves_desk.story.jpg"
8
- import bikeImg1 from "./bike-pic.png"
9
- import bikeImg2 from "./bike-pic2.png"
10
- import { HotKeys } from "react-hotkeys"
11
- import { defaultKeyMap } from "../ShortcutsManager"
12
-
13
- import Annotator from "./"
14
-
15
- import { testRegions } from "../ImageCanvas/index.story"
16
-
17
- const middlewares = [
18
- (store) => (next) => (action) => {
19
- actionAddon(action.type)(action)
20
- return next(action)
21
- },
22
- ]
23
-
24
- storiesOf("Annotator", module)
25
- .add("Basic", () => (
26
- <Annotator
27
- onExit={actionAddon("onExit")}
28
- middlewares={middlewares}
29
- labelImages
30
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
31
- regionTagList={["tag1", "tag2", "tag3"]}
32
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
33
- imageTagList={["tag1", "tag2", "tag3"]}
34
- images={[
35
- {
36
- src: exampleImage,
37
- name: "Seve's Desk",
38
- regions: testRegions,
39
- },
40
- {
41
- src: "https://loremflickr.com/100/100/cars?lock=1",
42
- name: "Frame 0036",
43
- },
44
- {
45
- src: "https://loremflickr.com/100/100/cars?lock=2",
46
- name: "Frame 0037",
47
- },
48
- {
49
- src: "https://loremflickr.com/100/100/cars?lock=3",
50
- name: "Frame 0038",
51
- },
52
- ]}
53
- />
54
- ))
55
- .add("Basic with onImagesChange", () => (
56
- <Annotator
57
- onExit={actionAddon("onExit")}
58
- middlewares={middlewares}
59
- labelImages
60
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
61
- regionTagList={["tag1", "tag2", "tag3"]}
62
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
63
- imageTagList={["tag1", "tag2", "tag3"]}
64
- onImagesChange={(images) => console.log("images changed to:", images)}
65
- images={[
66
- {
67
- src: exampleImage,
68
- name: "Seve's Desk",
69
- regions: testRegions,
70
- },
71
- {
72
- src: "https://loremflickr.com/100/100/cars?lock=1",
73
- name: "Frame 0036",
74
- },
75
- {
76
- src: "https://loremflickr.com/100/100/cars?lock=2",
77
- name: "Frame 0037",
78
- },
79
- {
80
- src: "https://loremflickr.com/100/100/cars?lock=3",
81
- name: "Frame 0038",
82
- },
83
- ]}
84
- />
85
- ))
86
- .add("Basic - Allow Comments", () => (
87
- <Annotator
88
- onExit={actionAddon("onExit")}
89
- middlewares={middlewares}
90
- labelImages
91
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
92
- regionTagList={["tag1", "tag2", "tag3"]}
93
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
94
- imageTagList={["tag1", "tag2", "tag3"]}
95
- images={[
96
- {
97
- src: exampleImage,
98
- name: "Seve's Desk",
99
- regions: testRegions,
100
- },
101
- {
102
- src: "https://loremflickr.com/100/100/cars?lock=1",
103
- name: "Frame 0036",
104
- },
105
- {
106
- src: "https://loremflickr.com/100/100/cars?lock=2",
107
- name: "Frame 0037",
108
- },
109
- {
110
- src: "https://loremflickr.com/100/100/cars?lock=3",
111
- name: "Frame 0038",
112
- },
113
- ]}
114
- allowComments
115
- />
116
- ))
117
- .add("Fixed Size Container", () => (
118
- <div style={{ width: 500, height: 500 }}>
119
- <Annotator
120
- onExit={actionAddon("onExit")}
121
- middlewares={[
122
- (store) => (next) => (action) => {
123
- actionAddon(action.type)(action)
124
- return next(action)
125
- },
126
- ]}
127
- labelImages
128
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
129
- regionTagList={["tag1", "tag2", "tag3"]}
130
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
131
- imageTagList={["tag1", "tag2", "tag3"]}
132
- images={[
133
- {
134
- src: exampleImage,
135
- name: "Seve's Desk",
136
- regions: testRegions,
137
- },
138
- {
139
- src: "https://loremflickr.com/100/100/cars?lock=1",
140
- name: "Frame 0036",
141
- },
142
- {
143
- src: "https://loremflickr.com/100/100/cars?lock=2",
144
- name: "Frame 0037",
145
- },
146
- {
147
- src: "https://loremflickr.com/100/100/cars?lock=3",
148
- name: "Frame 0038",
149
- },
150
- ]}
151
- />
152
- </div>
153
- ))
154
- .add("Shrunk Annotator (Test Fullscreen)", () => (
155
- <div style={{ padding: 100 }}>
156
- <Annotator
157
- onExit={actionAddon("onExit")}
158
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
159
- regionTagList={["tag1", "tag2", "tag3"]}
160
- middlewares={[
161
- (store) => (next) => (action) => {
162
- actionAddon(action.type)(action)
163
- return next(action)
164
- },
165
- ]}
166
- images={[
167
- {
168
- src: exampleImage,
169
- name: "Seve's Desk",
170
- regions: testRegions,
171
- },
172
- ]}
173
- />
174
- </div>
175
- ))
176
- .add("Annotator w/o No Region Labels or Image Labels", () => (
177
- <Annotator
178
- onExit={actionAddon("onExit")}
179
- middlewares={middlewares}
180
- images={[
181
- {
182
- src: exampleImage,
183
- name: "Seve's Desk",
184
- regions: testRegions,
185
- },
186
- ]}
187
- />
188
- ))
189
- .add("Annotator with no enabled tools", () => (
190
- <Annotator
191
- onExit={actionAddon("onExit")}
192
- enabledTools={[]}
193
- showTags={false}
194
- middlewares={middlewares}
195
- images={[
196
- {
197
- src: exampleImage,
198
- name: "Seve's Desk",
199
- regions: testRegions,
200
- },
201
- ]}
202
- />
203
- ))
204
- .add("Bounding Box Annotator with output to console.log", () => (
205
- <Annotator
206
- onExit={(out) => {
207
- window.lastOutput = out
208
- console.log(out)
209
- }}
210
- taskDescription={`## Annotate Hands\nDraw a bounding box around each hand.`}
211
- enabledTools={["select", "create-box"]}
212
- regionClsList={["Hand", "Face"]}
213
- regionTagList={["Open Pinch", "Closed Pinch", "In Frame"]}
214
- showTags={false}
215
- images={[
216
- {
217
- src: "https://s3.amazonaws.com/jobstorage.workaround.online/Atheer/video-frames/VID_20190111_161054.mp4_frame017.png",
218
- name: "Bounding Box Test",
219
- regions: [],
220
- },
221
- {
222
- src: "https://s3.amazonaws.com/jobstorage.workaround.online/Atheer/video-frames/VID_20190111_161054.mp4_frame001.png",
223
- name: "Bounding Box Test",
224
- regions: [],
225
- },
226
- ]}
227
- />
228
- ))
229
- .add("Bounding Box Annotator with allowed area", () => (
230
- <Annotator
231
- taskDescription={`## Annotate Hands\nDraw a bounding box around each hand.`}
232
- enabledTools={["select", "create-box"]}
233
- regionClsList={["Hand", "Face"]}
234
- regionTagList={["Open Pinch", "Closed Pinch", "In Frame"]}
235
- showTags={false}
236
- allowedArea={{ x: 0, y: 0.6, w: 0.3, h: 0.3 }}
237
- images={[
238
- {
239
- src: "https://s3.amazonaws.com/jobstorage.workaround.online/Atheer/video-frames/VID_20190111_161054.mp4_frame017.png",
240
- name: "Bounding Box Test",
241
- regions: [],
242
- },
243
- ]}
244
- />
245
- ))
246
- .add("Car Annotation", () => (
247
- <Annotator
248
- onExit={actionAddon("onExit")}
249
- middlewares={middlewares}
250
- labelImages
251
- regionClsList={["Car", "Sign", "Construction Barrier"]}
252
- regionTagList={["Moving", "Stopped", "Obstacle"]}
253
- imageClsList={["On Street", "Sidewalk", "Other"]}
254
- // imageTagList={["tag1", "tag2", "tag3"]}
255
- images={[
256
- {
257
- src: bikeImg1,
258
- name: "Frame 03021",
259
- regions: [
260
- {
261
- cls: "Car",
262
- color: "hsl(82,100%,50%)",
263
- h: 0.45921666772960146,
264
- w: 0.3932156342484836,
265
- x: 0.6302148980776354,
266
- y: 0.5559504689545722,
267
- type: "box",
268
- id: "8776160642957009",
269
- tags: ["Stopped"],
270
- highlighted: false,
271
- editingLabels: false,
272
- },
273
- {
274
- cls: "Car",
275
- color: "hsl(264,100%,50%)",
276
- type: "box",
277
- id: "885140028730734",
278
- tags: ["Moving"],
279
- w: 0.2627711048576583,
280
- x: 0.20751775748638238,
281
- y: 0.5566583219431673,
282
- h: 0.268717618171478,
283
- highlighted: false,
284
- editingLabels: false,
285
- },
286
- {
287
- cls: "Car",
288
- color: "hsl(127,100%,50%)",
289
- w: 0.033016094117647055,
290
- x: 0.5051247779336334,
291
- y: 0.5396378545840628,
292
- h: 0.03423999999999994,
293
- type: "box",
294
- id: "5952553512262024",
295
- tags: ["Stopped"],
296
- highlighted: false,
297
- editingLabels: false,
298
- },
299
- {
300
- type: "box",
301
- x: 0.7847296794208894,
302
- y: 0.3635007199404308,
303
- w: 0.04871147880041349,
304
- h: 0.10995961095800888,
305
- highlighted: true,
306
- editingLabels: false,
307
- color: "hsl(268,100%,50%)",
308
- id: "5647593040225252",
309
- cls: "Sign",
310
- },
311
- ],
312
- },
313
- {
314
- src: bikeImg2,
315
- name: "Frame 03022",
316
- regions: [
317
- {
318
- type: "box",
319
- x: 0.12226982552783494,
320
- y: 0.5578947368421052,
321
- w: 0.3301518695958121,
322
- h: 0.33562583001232194,
323
- highlighted: false,
324
- editingLabels: false,
325
- color: "hsl(171,100%,50%)",
326
- id: "014393439034159128",
327
- cls: "Car",
328
- tags: ["Stopped"],
329
- },
330
- {
331
- type: "box",
332
- x: 0.5018477698901193,
333
- y: 0.5954194079501558,
334
- w: 0.07194249496837657,
335
- h: 0.06826906557009338,
336
- highlighted: false,
337
- editingLabels: false,
338
- color: "hsl(17,100%,50%)",
339
- id: "02954614542034717",
340
- cls: "Car",
341
- tags: ["Moving"],
342
- },
343
- {
344
- type: "box",
345
- x: 0.6483083881082046,
346
- y: 0.6217109311709718,
347
- w: 0.08786544324705947,
348
- h: 0.20450608002345438,
349
- highlighted: true,
350
- editingLabels: true,
351
- color: "hsl(337,100%,50%)",
352
- id: "9124138360972984",
353
- cls: "Construction Barrier",
354
- tags: ["Obstacle"],
355
- },
356
- {
357
- type: "box",
358
- x: 0.7628671305695606,
359
- y: 0.6299511028935285,
360
- w: 0.12734928166820647,
361
- h: 0.2689292407634438,
362
- highlighted: false,
363
- editingLabels: false,
364
- color: "hsl(89,100%,50%)",
365
- id: "5960600741979638",
366
- cls: "Construction Barrier",
367
- },
368
- {
369
- type: "box",
370
- x: 0.5871362440754417,
371
- y: 0.6232091442114366,
372
- w: 0.06562102723514573,
373
- h: 0.15281773012741662,
374
- highlighted: false,
375
- editingLabels: false,
376
- color: "hsl(326,100%,50%)",
377
- id: "7955287536996538",
378
- cls: "Construction Barrier",
379
- },
380
- {
381
- type: "box",
382
- x: 0.42943330004934643,
383
- y: 0.6054718359824862,
384
- w: 0.053210066743122564,
385
- h: 0.054984658299147116,
386
- highlighted: false,
387
- editingLabels: false,
388
- color: "hsl(66,100%,50%)",
389
- id: "49573139861381166",
390
- cls: "Car",
391
- tags: ["Stopped"],
392
- },
393
- ],
394
- },
395
- ]}
396
- onExit={(out) => {
397
- window.lastOutput = out
398
- console.log(JSON.stringify(out.images))
399
- }}
400
- />
401
- ))
402
- .add("Annotator blocks scroll from propagating", () => (
403
- <div style={{ height: "200vh" }}>
404
- <Annotator
405
- onExit={actionAddon("onExit")}
406
- showTags={false}
407
- middlewares={[
408
- (store) => (next) => (action) => {
409
- actionAddon(action.type)(action)
410
- return next(action)
411
- },
412
- ]}
413
- images={[
414
- {
415
- src: exampleImage,
416
- name: "Seve's Desk",
417
- regions: testRegions,
418
- },
419
- ]}
420
- />
421
- <div style={{ color: "red" }}>You shouldn't be able to see this</div>
422
- </div>
423
- ))
424
- .add("Annotator should not expand beyond parent", () => (
425
- <div
426
- style={{
427
- width: "100vw",
428
- height: "100vh",
429
- padding: 100,
430
- boxSizing: "border-box",
431
- }}
432
- >
433
- <Annotator
434
- onExit={actionAddon("onExit")}
435
- showTags={false}
436
- middlewares={[
437
- (store) => (next) => (action) => {
438
- actionAddon(action.type)(action)
439
- return next(action)
440
- },
441
- ]}
442
- images={[
443
- {
444
- src: exampleImage,
445
- name: "Seve's Desk",
446
- regions: testRegions,
447
- },
448
- ]}
449
- />
450
- </div>
451
- ))
452
- .add("Video with frames as each image", () => (
453
- <div
454
- style={{
455
- width: "100vw",
456
- height: "100vh",
457
- boxSizing: "border-box",
458
- }}
459
- >
460
- <Annotator
461
- onExit={actionAddon("onExit")}
462
- showTags={false}
463
- middlewares={[
464
- (store) => (next) => (action) => {
465
- actionAddon(action.type)(action)
466
- return next(action)
467
- },
468
- ]}
469
- images={[
470
- {
471
- src: "https://s3.amazonaws.com/asset.workaround.online/SampleVideo_1280x720_1mb.mp4",
472
- frameTime: 0,
473
- name: "Frame 1",
474
- },
475
- {
476
- src: "https://s3.amazonaws.com/asset.workaround.online/SampleVideo_1280x720_1mb.mp4",
477
- frameTime: 4500,
478
- name: "Frame 2",
479
- },
480
- ]}
481
- />
482
- </div>
483
- ))
484
- .add("Keyframe video", () => (
485
- <div
486
- style={{
487
- width: "100vw",
488
- height: "100vh",
489
- boxSizing: "border-box",
490
- }}
491
- >
492
- <Annotator
493
- onExit={(...args) => {
494
- console.log(...args)
495
- actionAddon("onExit")(...args)
496
- }}
497
- showTags
498
- videoSrc="https://s3.amazonaws.com/asset.workaround.online/SampleVideo_1280x720_1mb.mp4"
499
- videoTime={1000}
500
- keyframes={{
501
- 0: {
502
- regions: [
503
- {
504
- type: "point",
505
- x: 0.1608187134502924,
506
- y: 0.5769980506822612,
507
- highlighted: true,
508
- editingLabels: false,
509
- color: "hsl(238,100%,50%)",
510
- id: "9995495728521284",
511
- },
512
- {
513
- type: "box",
514
- x: 0.089171974522293,
515
- y: 0.36801132342533616,
516
- w: 0.30573248407643316,
517
- h: 0.4170794998820476,
518
- highlighted: true,
519
- editingLabels: false,
520
- color: "hsl(263,100%,50%)",
521
- id: "04858393322065635",
522
- },
523
- ],
524
- },
525
- 3333: {
526
- regions: [
527
- {
528
- type: "point",
529
- x: 0.1608187134502924,
530
- y: 0.5769980506822612,
531
- highlighted: true,
532
- editingLabels: false,
533
- color: "hsl(238,100%,50%)",
534
- id: "9995495728521284",
535
- },
536
- {
537
- type: "box",
538
- x: 0.14861995753715496,
539
- y: 0.0934182590233546,
540
- w: 0.3163481953290871,
541
- h: 0.7596131163010142,
542
- highlighted: true,
543
- editingLabels: false,
544
- color: "hsl(263,100%,50%)",
545
- id: "04858393322065635",
546
- },
547
- ],
548
- },
549
- }}
550
- />
551
- </div>
552
- ))
553
- .add("Override Next/Prev Button Handling", () => {
554
- const images = [
555
- exampleImage,
556
- "https://loremflickr.com/100/100/cars?lock=1",
557
- "https://loremflickr.com/100/100/cars?lock=2",
558
- ]
559
- const [selectedImageIndex, changeSelectedImageIndex] = useState(0)
560
-
561
- return (
562
- <Annotator
563
- onExit={actionAddon("onExit")}
564
- onNextImage={() => {
565
- actionAddon("onNextImage")()
566
- changeSelectedImageIndex((selectedImageIndex + 1) % 3)
567
- }}
568
- onPrevImage={() => {
569
- actionAddon("onPrevImage")()
570
- changeSelectedImageIndex((selectedImageIndex - 1 + 3) % 3)
571
- }}
572
- labelImages
573
- selectedImage={images[selectedImageIndex]}
574
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
575
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
576
- images={[
577
- {
578
- src: exampleImage,
579
- name: "Seve's Desk",
580
- },
581
- {
582
- src: images[1],
583
- name: "Frame 0036",
584
- },
585
- {
586
- src: images[2],
587
- name: "Frame 0037",
588
- },
589
- ]}
590
- />
591
- )
592
- })
593
- .add("Override RegionEditLabel", () => {
594
- const images = [
595
- exampleImage,
596
- "https://loremflickr.com/100/100/cars?lock=1",
597
- "https://loremflickr.com/100/100/cars?lock=2",
598
- ]
599
-
600
- const NewRegionEditLabel = ({
601
- region,
602
- editing,
603
- onDelete,
604
- onChange,
605
- onClose,
606
- onOpen,
607
- }) => {
608
- return (
609
- <div style={{ backgroundColor: "white" }}>
610
- I'm the closed part
611
- <div style={{ display: editing ? "block" : "none" }}>
612
- I'm the part that shows when it's being edited!
613
- <button onClick={() => onDelete(region)}>Delete This Region</button>
614
- <button
615
- onClick={() => onChange({ ...region, cls: "awesome-value" })}
616
- >
617
- Set Classification to "awesome-value"
618
- </button>
619
- <button onClick={() => onClose(region)}>Close the edit mode</button>
620
- </div>
621
- </div>
622
- )
623
- }
624
-
625
- return (
626
- <Annotator
627
- onExit={actionAddon("onExit")}
628
- labelImages
629
- selectedImage={images[0]}
630
- RegionEditLabel={NewRegionEditLabel}
631
- images={[
632
- {
633
- src: exampleImage,
634
- name: "Seve's Desk",
635
- },
636
- {
637
- src: images[1],
638
- name: "Frame 0036",
639
- },
640
- {
641
- src: images[2],
642
- name: "Frame 0037",
643
- },
644
- ]}
645
- />
646
- )
647
- })
648
- .add("Two on sample page w/ hotkeys", () => {
649
- return (
650
- <HotKeys keyMap={defaultKeyMap}>
651
- <div>
652
- <div style={{ height: 600 }}>
653
- <Annotator
654
- onExit={actionAddon("onExit")}
655
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
656
- imageClsList={["Alpha", "Beta", "Charlie", "Delta"]}
657
- middlewares={[
658
- (store) => (next) => (action) => {
659
- actionAddon(action.type)(action)
660
- return next(action)
661
- },
662
- ]}
663
- images={[
664
- {
665
- src: exampleImage,
666
- name: "Seve's Desk",
667
- regions: testRegions,
668
- },
669
- ]}
670
- />
671
- </div>
672
- <div style={{ height: 600 }}>
673
- <Annotator
674
- onExit={actionAddon("onExit")}
675
- middlewares={[
676
- (store) => (next) => (action) => {
677
- actionAddon(action.type)(action)
678
- return next(action)
679
- },
680
- ]}
681
- images={[
682
- {
683
- src: exampleImage,
684
- name: "Seve's Desk",
685
- regions: testRegions,
686
- },
687
- ]}
688
- />
689
- </div>
690
- </div>
691
- </HotKeys>
692
- )
693
- })
694
- .add("CORs Error (Pixel Segmentation)", () => (
695
- <Annotator
696
- onExit={actionAddon("onExit")}
697
- middlewares={middlewares}
698
- labelImages
699
- fullImageSegmentationMode
700
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
701
- images={[
702
- {
703
- src: "https://placebear.com/200/300",
704
- name: "Frame 0036",
705
- },
706
- ]}
707
- />
708
- ))
709
- .add("Modify Allowed Area", () => (
710
- <Annotator
711
- onExit={actionAddon("onExit")}
712
- middlewares={middlewares}
713
- labelImages
714
- fullImageSegmentationMode
715
- allowedArea={{ x: 0, y: 0.6, w: 0.3, h: 0.3 }}
716
- enabledTools={["modify-allowed-area"]}
717
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
718
- images={[
719
- {
720
- src: exampleImage,
721
- name: "Frame 0036",
722
- },
723
- ]}
724
- />
725
- ))
726
- .add("Hide Next, Hide Header Text", () => (
727
- <Annotator
728
- onExit={actionAddon("onExit")}
729
- labelImages
730
- hideNext
731
- hideHeaderText
732
- fullImageSegmentationMode
733
- enabledTools={["modify-allowed-area"]}
734
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
735
- images={[
736
- {
737
- src: exampleImage,
738
- name: "Frame 0036",
739
- },
740
- ]}
741
- />
742
- ))
743
- .add("Hide Header", () => (
744
- <Annotator
745
- onExit={actionAddon("onExit")}
746
- labelImages
747
- hideHeader
748
- fullImageSegmentationMode
749
- enabledTools={["modify-allowed-area"]}
750
- regionClsList={["Alpha", "Beta", "Charlie", "Delta"]}
751
- images={[
752
- {
753
- src: exampleImage,
754
- name: "Frame 0036",
755
- },
756
- ]}
757
- />
758
- ))