@searpent/react-image-annotate 2.0.0 → 2.0.3

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 (174) hide show
  1. package/Annotator/index.js +169 -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/GroupSelectorSidebarBox/index.js +63 -0
  19. package/HighlightBox/index.js +99 -0
  20. package/HistorySidebarBox/index.js +71 -0
  21. package/ImageCanvas/index.js +424 -0
  22. package/ImageCanvas/region-tools.js +165 -0
  23. package/{src/ImageCanvas → ImageCanvas}/styles.js +12 -8
  24. package/ImageCanvas/use-mouse.js +180 -0
  25. package/ImageCanvas/use-project-box.js +27 -0
  26. package/ImageCanvas/use-wasd-mode.js +62 -0
  27. package/ImageMask/index.js +133 -0
  28. package/ImageMask/load-image.js +25 -0
  29. package/ImageSelectorSidebarBox/index.js +60 -0
  30. package/KeyframeTimeline/get-time-string.js +27 -0
  31. package/KeyframeTimeline/index.js +233 -0
  32. package/KeyframesSelectorSidebarBox/index.js +93 -0
  33. package/LandingPage/index.js +159 -0
  34. package/MainLayout/icon-dictionary.js +104 -0
  35. package/MainLayout/index.js +366 -0
  36. package/{src/MainLayout → MainLayout}/styles.js +6 -7
  37. package/MainLayout/types.js +0 -0
  38. package/MainLayout/use-implied-video-regions.js +13 -0
  39. package/PointDistances/index.js +73 -0
  40. package/PreventScrollToParents/index.js +51 -0
  41. package/RegionLabel/index.js +191 -0
  42. package/{src/RegionLabel → RegionLabel}/styles.js +12 -15
  43. package/RegionSelectAndTransformBoxes/index.js +167 -0
  44. package/RegionSelectorSidebarBox/index.js +248 -0
  45. package/{src/RegionSelectorSidebarBox → RegionSelectorSidebarBox}/styles.js +13 -14
  46. package/RegionShapes/index.js +274 -0
  47. package/RegionTags/index.js +138 -0
  48. package/SettingsDialog/index.js +52 -0
  49. package/SettingsProvider/index.js +53 -0
  50. package/Shortcuts/ShortcutField.js +46 -0
  51. package/Shortcuts/index.js +133 -0
  52. package/ShortcutsManager/index.js +155 -0
  53. package/Sidebar/index.js +69 -0
  54. package/SidebarBoxContainer/index.js +93 -0
  55. package/SmallToolButton/index.js +42 -0
  56. package/TagsSidebarBox/index.js +105 -0
  57. package/TaskDescriptionSidebarBox/index.js +58 -0
  58. package/Theme/index.js +30 -0
  59. package/VideoOrImageCanvasBackground/index.js +151 -0
  60. package/colors.js +14 -0
  61. package/hooks/use-event-callback.js +10 -0
  62. package/hooks/use-exclude-pattern.js +24 -0
  63. package/hooks/use-load-image.js +26 -0
  64. package/hooks/use-window-size.js +46 -0
  65. package/{src/hooks → hooks}/xpattern.js +1 -1
  66. package/index.js +3 -0
  67. package/lib.js +3 -0
  68. package/package.json +1 -1
  69. package/stories.js +5 -0
  70. package/utils/get-from-local-storage.js +7 -0
  71. package/utils/get-hotkey-help-text.js +9 -0
  72. package/utils/get-landmarks-with-transform.js +40 -0
  73. package/utils/set-in-local-storage.js +3 -0
  74. package/.babelrc +0 -6
  75. package/.env +0 -1
  76. package/.flowconfig +0 -2
  77. package/.github/workflows/release-on-master.yml +0 -32
  78. package/.github/workflows/test.yml +0 -16
  79. package/.prettierrc +0 -3
  80. package/.releaserc.js +0 -18
  81. package/.storybook/addons.js +0 -2
  82. package/.storybook/config.js +0 -16
  83. package/LICENSE +0 -21
  84. package/public/favicon.ico +0 -0
  85. package/public/index.html +0 -38
  86. package/src/Annotator/bike-pic.png +0 -0
  87. package/src/Annotator/bike-pic2.png +0 -0
  88. package/src/Annotator/dab-keyframes.story.json +0 -1
  89. package/src/Annotator/index.js +0 -206
  90. package/src/Annotator/index.story.js +0 -727
  91. package/src/Annotator/poses.story.js +0 -150
  92. package/src/Annotator/reducers/combine-reducers.js +0 -7
  93. package/src/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -53
  94. package/src/Annotator/reducers/general-reducer.js +0 -914
  95. package/src/Annotator/reducers/get-active-image.js +0 -21
  96. package/src/Annotator/reducers/get-implied-video-regions.js +0 -115
  97. package/src/Annotator/reducers/history-handler.js +0 -60
  98. package/src/Annotator/reducers/image-reducer.js +0 -23
  99. package/src/Annotator/reducers/video-reducer.js +0 -85
  100. package/src/Annotator/video.story.js +0 -51
  101. package/src/ClassSelectionMenu/index.js +0 -108
  102. package/src/Crosshairs/index.js +0 -64
  103. package/src/DebugSidebarBox/index.js +0 -36
  104. package/src/DemoSite/Editor.js +0 -235
  105. package/src/DemoSite/ErrorBoundaryDialog.js +0 -34
  106. package/src/DemoSite/index.js +0 -41
  107. package/src/DemoSite/index.story.js +0 -10
  108. package/src/DemoSite/simple-segmentation-example.json +0 -572
  109. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  110. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  111. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  112. package/src/FullImageSegmentationAnnotator/index.js +0 -7
  113. package/src/FullImageSegmentationAnnotator/index.story.js +0 -177
  114. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  115. package/src/HighlightBox/index.js +0 -143
  116. package/src/HistorySidebarBox/index.js +0 -78
  117. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  118. package/src/ImageCanvas/index.js +0 -488
  119. package/src/ImageCanvas/index.story.js +0 -214
  120. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  121. package/src/ImageCanvas/region-tools.js +0 -171
  122. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  123. package/src/ImageCanvas/use-mouse.js +0 -168
  124. package/src/ImageCanvas/use-project-box.js +0 -23
  125. package/src/ImageCanvas/use-wasd-mode.js +0 -50
  126. package/src/ImageMask/index.js +0 -127
  127. package/src/ImageMask/load-image.js +0 -32
  128. package/src/ImageSelectorSidebarBox/index.js +0 -54
  129. package/src/KeyframeTimeline/get-time-string.js +0 -25
  130. package/src/KeyframeTimeline/index.js +0 -223
  131. package/src/KeyframesSelectorSidebarBox/index.js +0 -93
  132. package/src/LandingPage/content.md +0 -57
  133. package/src/LandingPage/github-markdown.css +0 -964
  134. package/src/LandingPage/index.js +0 -147
  135. package/src/MainLayout/icon-dictionary.js +0 -79
  136. package/src/MainLayout/index.js +0 -420
  137. package/src/MainLayout/index.story.js +0 -240
  138. package/src/MainLayout/types.js +0 -156
  139. package/src/MainLayout/use-implied-video-regions.js +0 -17
  140. package/src/PointDistances/index.js +0 -90
  141. package/src/PreventScrollToParents/index.js +0 -48
  142. package/src/PreventScrollToParents/index.story.js +0 -23
  143. package/src/RegionLabel/index.js +0 -201
  144. package/src/RegionSelectAndTransformBoxes/index.js +0 -234
  145. package/src/RegionSelectorSidebarBox/index.js +0 -216
  146. package/src/RegionShapes/index.js +0 -236
  147. package/src/RegionTags/index.js +0 -130
  148. package/src/SettingsDialog/index.js +0 -58
  149. package/src/SettingsProvider/index.js +0 -44
  150. package/src/Shortcuts/ShortcutField.js +0 -44
  151. package/src/Shortcuts/index.js +0 -129
  152. package/src/ShortcutsManager/index.js +0 -162
  153. package/src/Sidebar/index.js +0 -117
  154. package/src/SidebarBoxContainer/index.js +0 -93
  155. package/src/SmallToolButton/index.js +0 -57
  156. package/src/TagsSidebarBox/index.js +0 -93
  157. package/src/TaskDescriptionSidebarBox/index.js +0 -43
  158. package/src/Theme/index.js +0 -36
  159. package/src/VideoOrImageCanvasBackground/index.js +0 -170
  160. package/src/colors.js +0 -32
  161. package/src/hooks/use-event-callback.js +0 -11
  162. package/src/hooks/use-exclude-pattern.js +0 -27
  163. package/src/hooks/use-load-image.js +0 -21
  164. package/src/hooks/use-window-size.js +0 -46
  165. package/src/hooks/xpattern.png +0 -0
  166. package/src/index.js +0 -18
  167. package/src/lib.js +0 -7
  168. package/src/screenshot.png +0 -0
  169. package/src/site.css +0 -5
  170. package/src/stories.js +0 -2
  171. package/src/utils/get-from-local-storage.js +0 -7
  172. package/src/utils/get-hotkey-help-text.js +0 -11
  173. package/src/utils/get-landmarks-with-transform.js +0 -23
  174. package/src/utils/set-in-local-storage.js +0 -6
@@ -1,206 +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
- }
59
-
60
- export const Annotator = ({
61
- images,
62
- allowedArea,
63
- selectedImage = images && images.length > 0 ? 0 : undefined,
64
- showPointDistances,
65
- pointDistancePrecision,
66
- showTags = getFromLocalStorage("showTags", true),
67
- enabledTools = [
68
- "select",
69
- "create-point",
70
- "create-box",
71
- "create-polygon",
72
- "create-line",
73
- "create-expanding-line",
74
- "show-mask",
75
- ],
76
- selectedTool = "select",
77
- regionTagList = [],
78
- regionClsList = [],
79
- imageTagList = [],
80
- imageClsList = [],
81
- keyframes = {},
82
- taskDescription = "",
83
- fullImageSegmentationMode = false,
84
- RegionEditLabel,
85
- videoSrc,
86
- videoTime = 0,
87
- videoName,
88
- onExit,
89
- onNextImage,
90
- onPrevImage,
91
- keypointDefinitions,
92
- autoSegmentationOptions = { type: "autoseg" },
93
- hideHeader,
94
- hideHeaderText,
95
- hideNext,
96
- hidePrev,
97
- hideClone,
98
- hideSettings,
99
- hideFullScreen,
100
- hideSave,
101
- allowComments,
102
- }: Props) => {
103
- if (typeof selectedImage === "string") {
104
- selectedImage = (images || []).findIndex((img) => img.src === selectedImage)
105
- if (selectedImage === -1) selectedImage = undefined
106
- }
107
- const annotationType = images ? "image" : "video"
108
- const [state, dispatchToReducer] = useReducer(
109
- historyHandler(
110
- combineReducers(
111
- annotationType === "image" ? imageReducer : videoReducer,
112
- generalReducer
113
- )
114
- ),
115
- makeImmutable({
116
- annotationType,
117
- showTags,
118
- allowedArea,
119
- showPointDistances,
120
- pointDistancePrecision,
121
- selectedTool,
122
- fullImageSegmentationMode: fullImageSegmentationMode,
123
- autoSegmentationOptions,
124
- mode: null,
125
- taskDescription,
126
- showMask: true,
127
- labelImages: imageClsList.length > 0 || imageTagList.length > 0,
128
- regionClsList,
129
- regionTagList,
130
- imageClsList,
131
- imageTagList,
132
- currentVideoTime: videoTime,
133
- enabledTools,
134
- history: [],
135
- videoName,
136
- keypointDefinitions,
137
- allowComments,
138
- ...(annotationType === "image"
139
- ? {
140
- selectedImage,
141
- images,
142
- selectedImageFrameTime:
143
- images && images.length > 0 ? images[0].frameTime : undefined,
144
- }
145
- : {
146
- videoSrc,
147
- keyframes,
148
- }),
149
- })
150
- )
151
-
152
- const dispatch = useEventCallback((action: Action) => {
153
- if (action.type === "HEADER_BUTTON_CLICKED") {
154
- if (["Exit", "Done", "Save", "Complete"].includes(action.buttonName)) {
155
- return onExit(without(state, "history"))
156
- } else if (action.buttonName === "Next" && onNextImage) {
157
- return onNextImage(without(state, "history"))
158
- } else if (action.buttonName === "Prev" && onPrevImage) {
159
- return onPrevImage(without(state, "history"))
160
- }
161
- }
162
- dispatchToReducer(action)
163
- })
164
-
165
- const onRegionClassAdded = useEventCallback((cls) => {
166
- dispatchToReducer({
167
- type: "ON_CLS_ADDED",
168
- cls: cls,
169
- })
170
- })
171
-
172
- useEffect(() => {
173
- if (selectedImage === undefined) return
174
- dispatchToReducer({
175
- type: "SELECT_IMAGE",
176
- imageIndex: selectedImage,
177
- image: state.images[selectedImage],
178
- })
179
- }, [selectedImage, state.images])
180
-
181
- if (!images && !videoSrc)
182
- return 'Missing required prop "images" or "videoSrc"'
183
-
184
- return (
185
- <SettingsProvider>
186
- <MainLayout
187
- RegionEditLabel={RegionEditLabel}
188
- alwaysShowNextButton={Boolean(onNextImage)}
189
- alwaysShowPrevButton={Boolean(onPrevImage)}
190
- state={state}
191
- dispatch={dispatch}
192
- onRegionClassAdded={onRegionClassAdded}
193
- hideHeader={hideHeader}
194
- hideHeaderText={hideHeaderText}
195
- hideNext={hideNext}
196
- hidePrev={hidePrev}
197
- hideClone={hideClone}
198
- hideSettings={hideSettings}
199
- hideFullScreen={hideFullScreen}
200
- hideSave={hideSave}
201
- />
202
- </SettingsProvider>
203
- )
204
- }
205
-
206
- export default Annotator