@searpent/react-image-annotate 2.0.5 → 2.0.8

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