@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,211 +0,0 @@
1
- // @flow
2
-
3
- import type {
4
- Action,
5
- Image,
6
- MainLayoutState,
7
- Mode,
8
- ToolEnum,
9
- } from "../MainLayout/types"
10
- import React, { useEffect, useReducer } from "react"
11
- import makeImmutable, { without } from "seamless-immutable"
12
-
13
- import type { KeypointsDefinition } from "../ImageCanvas/region-tools"
14
- import MainLayout from "../MainLayout"
15
- import type { Node } from "react"
16
- import SettingsProvider from "../SettingsProvider"
17
- import combineReducers from "./reducers/combine-reducers.js"
18
- import generalReducer from "./reducers/general-reducer.js"
19
- import getFromLocalStorage from "../utils/get-from-local-storage"
20
- import historyHandler from "./reducers/history-handler.js"
21
- import imageReducer from "./reducers/image-reducer.js"
22
- import useEventCallback from "use-event-callback"
23
- import videoReducer from "./reducers/video-reducer.js"
24
-
25
- type Props = {
26
- taskDescription?: string,
27
- allowedArea?: { x: number, y: number, w: number, h: number },
28
- regionTagList?: Array<string>,
29
- regionClsList?: Array<string>,
30
- imageTagList?: Array<string>,
31
- imageClsList?: Array<string>,
32
- enabledTools?: Array<string>,
33
- selectedTool?: String,
34
- showTags?: boolean,
35
- selectedImage?: string | number,
36
- images?: Array<Image>,
37
- showPointDistances?: boolean,
38
- pointDistancePrecision?: number,
39
- RegionEditLabel?: Node,
40
- onExit: (MainLayoutState) => any,
41
- videoTime?: number,
42
- videoSrc?: string,
43
- keyframes?: Object,
44
- videoName?: string,
45
- keypointDefinitions: KeypointsDefinition,
46
- fullImageSegmentationMode?: boolean,
47
- autoSegmentationOptions?:
48
- | {| type: "simple" |}
49
- | {| type: "autoseg", maxClusters ?: number, slicWeightFactor ?: number |},
50
- hideHeader ?: boolean,
51
- hideHeaderText ?: boolean,
52
- hideNext ?: boolean,
53
- hidePrev ?: boolean,
54
- hideClone ?: boolean,
55
- hideSettings ?: boolean,
56
- hideFullScreen ?: boolean,
57
- hideSave ?: boolean,
58
- onImagesChange ?: (any) => any,
59
- }
60
-
61
- export const Annotator = ({
62
- images,
63
- allowedArea,
64
- selectedImage = images && images.length > 0 ? 0 : undefined,
65
- showPointDistances,
66
- pointDistancePrecision,
67
- showTags = getFromLocalStorage("showTags", true),
68
- enabledTools = [
69
- "select",
70
- "create-point",
71
- "create-box",
72
- "create-polygon",
73
- "create-line",
74
- "create-expanding-line",
75
- "show-mask",
76
- ],
77
- selectedTool = "select",
78
- regionTagList = [],
79
- regionClsList = [],
80
- imageTagList = [],
81
- imageClsList = [],
82
- keyframes = {},
83
- taskDescription = "",
84
- fullImageSegmentationMode = false,
85
- RegionEditLabel,
86
- videoSrc,
87
- videoTime = 0,
88
- videoName,
89
- onExit,
90
- onNextImage,
91
- onPrevImage,
92
- keypointDefinitions,
93
- autoSegmentationOptions = { type: "autoseg" },
94
- hideHeader,
95
- hideHeaderText,
96
- hideNext,
97
- hidePrev,
98
- hideClone,
99
- hideSettings,
100
- hideFullScreen,
101
- hideSave,
102
- allowComments,
103
- onImagesChange,
104
- }: Props) => {
105
- if (typeof selectedImage === "string") {
106
- selectedImage = (images || []).findIndex((img) => img.src === selectedImage)
107
- if (selectedImage === -1) selectedImage = undefined
108
- }
109
- const annotationType = images ? "image" : "video"
110
- const [state, dispatchToReducer] = useReducer(
111
- historyHandler(
112
- combineReducers(
113
- annotationType === "image" ? imageReducer : videoReducer,
114
- generalReducer
115
- )
116
- ),
117
- makeImmutable({
118
- annotationType,
119
- showTags,
120
- allowedArea,
121
- showPointDistances,
122
- pointDistancePrecision,
123
- selectedTool,
124
- fullImageSegmentationMode: fullImageSegmentationMode,
125
- autoSegmentationOptions,
126
- mode: null,
127
- taskDescription,
128
- showMask: true,
129
- labelImages: imageClsList.length > 0 || imageTagList.length > 0,
130
- regionClsList,
131
- regionTagList,
132
- imageClsList,
133
- imageTagList,
134
- currentVideoTime: videoTime,
135
- enabledTools,
136
- history: [],
137
- videoName,
138
- keypointDefinitions,
139
- allowComments,
140
- ...(annotationType === "image"
141
- ? {
142
- selectedImage,
143
- images,
144
- selectedImageFrameTime:
145
- images && images.length > 0 ? images[0].frameTime : undefined,
146
- }
147
- : {
148
- videoSrc,
149
- keyframes,
150
- }),
151
- })
152
- )
153
-
154
- const dispatch = useEventCallback((action: Action) => {
155
- if (action.type === "HEADER_BUTTON_CLICKED") {
156
- if (["Exit", "Done", "Save", "Complete"].includes(action.buttonName)) {
157
- return onExit(without(state, "history"))
158
- } else if (action.buttonName === "Next" && onNextImage) {
159
- return onNextImage(without(state, "history"))
160
- } else if (action.buttonName === "Prev" && onPrevImage) {
161
- return onPrevImage(without(state, "history"))
162
- }
163
- }
164
- dispatchToReducer(action)
165
- })
166
-
167
- const onRegionClassAdded = useEventCallback((cls) => {
168
- dispatchToReducer({
169
- type: "ON_CLS_ADDED",
170
- cls: cls,
171
- })
172
- })
173
-
174
- useEffect(() => {
175
- if (onImagesChange) {
176
- onImagesChange({ selectedImage, images: state.images })
177
- }
178
- if (selectedImage === undefined) return
179
- dispatchToReducer({
180
- type: "SELECT_IMAGE",
181
- imageIndex: selectedImage,
182
- image: state.images[selectedImage],
183
- })
184
- }, [onImagesChange, selectedImage, state.images])
185
-
186
- if (!images && !videoSrc)
187
- return 'Missing required prop "images" or "videoSrc"'
188
-
189
- return (
190
- <SettingsProvider>
191
- <MainLayout
192
- RegionEditLabel={RegionEditLabel}
193
- alwaysShowNextButton={Boolean(onNextImage)}
194
- alwaysShowPrevButton={Boolean(onPrevImage)}
195
- state={state}
196
- dispatch={dispatch}
197
- onRegionClassAdded={onRegionClassAdded}
198
- hideHeader={hideHeader}
199
- hideHeaderText={hideHeaderText}
200
- hideNext={hideNext}
201
- hidePrev={hidePrev}
202
- hideClone={hideClone}
203
- hideSettings={hideSettings}
204
- hideFullScreen={hideFullScreen}
205
- hideSave={hideSave}
206
- />
207
- </SettingsProvider>
208
- )
209
- }
210
-
211
- export default Annotator