@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
@@ -0,0 +1,150 @@
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 dancingManImage from "../ImageCanvas/dancing-man.story.jpg"
8
+ import dabKeyframes from "./dab-keyframes.story.json"
9
+ import Annotator from "./"
10
+
11
+ const dancingManVideo =
12
+ "https://s3.us-east-1.amazonaws.com/asset.workaround.online/developer-samples/how-to-dab.mp4"
13
+
14
+ const middlewares = [
15
+ (store) => (next) => (action) => {
16
+ actionAddon(action.type)(action)
17
+ console.log(action)
18
+ return next(action)
19
+ },
20
+ ]
21
+
22
+ storiesOf("Annotator (Poses)", module)
23
+ .add("Image", () => (
24
+ <Annotator
25
+ onExit={actionAddon("onExit")}
26
+ middlewares={middlewares}
27
+ labelImages
28
+ enabledTools={["create-keypoints"]}
29
+ keypointDefinitions={{
30
+ human: {
31
+ connections: [
32
+ ["head", "sternum"],
33
+ ["sternum", "leftElbow"],
34
+ ["sternum", "rightElbow"],
35
+ ],
36
+ landmarks: {
37
+ head: {
38
+ label: "Head",
39
+ color: "#f00",
40
+ defaultPosition: [0, -0.05],
41
+ },
42
+ sternum: {
43
+ label: "Torso",
44
+ color: "#0f0",
45
+ defaultPosition: [0, 0],
46
+ },
47
+ leftElbow: {
48
+ label: "Left Elbow",
49
+ color: "#00f",
50
+ defaultPosition: [-0.05, 0],
51
+ },
52
+ rightElbow: {
53
+ label: "Right Elbow",
54
+ color: "#00f",
55
+ defaultPosition: [0.05, 0],
56
+ },
57
+ },
58
+ },
59
+ }}
60
+ images={[
61
+ {
62
+ src: dancingManImage,
63
+ name: "Dancing Man",
64
+ regions: [
65
+ {
66
+ type: "keypoints",
67
+ id: "keypoints1",
68
+ keypointsDefinitionId: "human",
69
+ highlighted: true,
70
+ points: {
71
+ head: { x: 0.54, y: 0.2 },
72
+ sternum: { x: 0.57, y: 0.3 },
73
+ leftElbow: { x: 0.4, y: 0.39 },
74
+ rightElbow: { x: 0.7, y: 0.32 },
75
+ },
76
+ visible: true,
77
+ },
78
+ ],
79
+ },
80
+ ]}
81
+ />
82
+ ))
83
+ .add("Video", () => (
84
+ <Annotator
85
+ onExit={(...props) => {
86
+ actionAddon("onExit")(...props)
87
+ window.testPropsSavePlease = props
88
+ console.log(...props)
89
+ }}
90
+ labelImages
91
+ enabledTools={["create-box", "create-keypoints"]}
92
+ videoSrc={dancingManVideo}
93
+ keypointDefinitions={{
94
+ human: {
95
+ connections: [
96
+ ["head", "sternum"],
97
+ ["sternum", "leftShoulder"],
98
+ ["leftShoulder", "leftElbow"],
99
+ ["leftElbow", "leftHand"],
100
+ ["sternum", "rightShoulder"],
101
+ ["rightShoulder", "rightElbow"],
102
+ ["rightElbow", "rightHand"],
103
+ ],
104
+ landmarks: {
105
+ head: {
106
+ label: "Head",
107
+ color: "#f00",
108
+ defaultPosition: [0, -0.05],
109
+ },
110
+ sternum: {
111
+ label: "Torso",
112
+ color: "#0f0",
113
+ defaultPosition: [0, 0],
114
+ },
115
+ leftShoulder: {
116
+ label: "Left Shoulder",
117
+ color: "#00f",
118
+ defaultPosition: [-0.05, 0],
119
+ },
120
+ leftHand: {
121
+ label: "Left Hand",
122
+ color: "#00f",
123
+ defaultPosition: [-0.05, 0.05],
124
+ },
125
+ rightShoulder: {
126
+ label: "Right Shoulder",
127
+ color: "#00f",
128
+ defaultPosition: [0.05, 0],
129
+ },
130
+ leftElbow: {
131
+ label: "Left Elbow",
132
+ color: "#00f",
133
+ defaultPosition: [-0.08, 0.02],
134
+ },
135
+ rightElbow: {
136
+ label: "Right Elbow",
137
+ color: "#00f",
138
+ defaultPosition: [0.08, 0.02],
139
+ },
140
+ rightHand: {
141
+ label: "Right Hand",
142
+ color: "#00f",
143
+ defaultPosition: [0.05, 0.05],
144
+ },
145
+ },
146
+ },
147
+ }}
148
+ keyframes={dabKeyframes}
149
+ />
150
+ ))
@@ -0,0 +1,7 @@
1
+ export default (...reducers) =>
2
+ (state, action) => {
3
+ for (const reducer of reducers) {
4
+ state = reducer(state, action)
5
+ }
6
+ return state
7
+ }
@@ -0,0 +1,53 @@
1
+ // @flow
2
+
3
+ function clamp(num, min, max) {
4
+ return num <= min ? min : num >= max ? max : num
5
+ }
6
+
7
+ export default (expandingLine) => {
8
+ const expandingWidth = expandingLine.expandingWidth || 0.005
9
+ const pointPairs = expandingLine.points.map(({ x, y, angle, width }, i) => {
10
+ if (!angle) {
11
+ const n =
12
+ expandingLine.points[clamp(i + 1, 0, expandingLine.points.length - 1)]
13
+ const p =
14
+ expandingLine.points[clamp(i - 1, 0, expandingLine.points.length - 1)]
15
+ angle = Math.atan2(p.x - n.x, p.y - n.y) + Math.PI / 2
16
+ }
17
+ const dx = (Math.sin(angle) * (width || expandingWidth)) / 2
18
+ const dy = (Math.cos(angle) * (width || expandingWidth)) / 2
19
+ return [
20
+ { x: x + dx, y: y + dy },
21
+ { x: x - dx, y: y - dy },
22
+ ]
23
+ })
24
+ const firstSection = pointPairs.map(([p1, p2]) => p1)
25
+ const secondSection = pointPairs.map(([p1, p2]) => p2).asMutable()
26
+ secondSection.reverse()
27
+
28
+ const newPoints = firstSection.concat(secondSection).map(({ x, y }) => [x, y])
29
+
30
+ return {
31
+ ...expandingLine,
32
+ type: "polygon",
33
+ open: false,
34
+ points: newPoints,
35
+ unfinished: undefined,
36
+ candidatePoint: undefined,
37
+ }
38
+
39
+ // let { expandingWidth = 0.005, points } = region
40
+ // expandingWidth = points.slice(-1)[0].width || expandingWidth
41
+ // const lastPoint = points.slice(-1)[0]
42
+ // return (
43
+ // <>
44
+ // <polygon
45
+ // points={
46
+ // .map((p) => `${p.x * iw} ${p.y * ih}`)
47
+ // .join(" ")}
48
+ // return {
49
+ // ...expandingLine,
50
+ // unfinished: undefined,
51
+ // candidatePoint: undefined,
52
+ // }
53
+ }
@@ -1,4 +1,6 @@
1
- export default (function (pointsWithAngles) {
1
+ // @flow
2
+
3
+ export default (pointsWithAngles) => {
2
4
  // Adjacent angles should not have an angular distance of more than Math.PI
3
- return pointsWithAngles;
4
- });
5
+ return pointsWithAngles
6
+ }