@searpent/react-image-annotate 2.0.77 → 2.0.79

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/Annotator/exampleImages.js +41 -0
  2. package/Annotator/examplePhotos.js +6980 -0
  3. package/Annotator/index.js +417 -0
  4. package/Annotator/reducers/combine-reducers.js +14 -0
  5. package/Annotator/reducers/convert-expanding-line-to-polygon.js +73 -0
  6. package/{src/Annotator → Annotator}/reducers/fix-twisted.js +3 -5
  7. package/Annotator/reducers/general-reducer.js +1430 -0
  8. package/Annotator/reducers/get-active-image.js +27 -0
  9. package/Annotator/reducers/get-implied-video-regions.js +180 -0
  10. package/Annotator/reducers/history-handler.js +38 -0
  11. package/Annotator/reducers/image-reducer.js +20 -0
  12. package/Annotator/reducers/video-reducer.js +88 -0
  13. package/ClassSelectionMenu/index.js +140 -0
  14. package/Crosshairs/index.js +53 -0
  15. package/DebugSidebarBox/index.js +20 -0
  16. package/DemoSite/Editor.js +194 -0
  17. package/DemoSite/ErrorBoundaryDialog.js +64 -0
  18. package/DemoSite/index.js +40 -0
  19. package/Editor/annotation-plugin/annotation.js +702 -0
  20. package/Editor/index.js +93 -0
  21. package/Editor/readOnly.js +123 -0
  22. package/{src/Editor → Editor}/tools.js +2 -3
  23. package/Errorer/index.js +11 -0
  24. package/FullImageSegmentationAnnotator/index.js +7 -0
  25. package/GroupSelectorSidebarBox/index.js +63 -0
  26. package/GroupsEditorSidebarBox/index.js +138 -0
  27. package/HelpSidebarBox/index.js +58 -0
  28. package/HighlightBox/index.js +102 -0
  29. package/HistorySidebarBox/index.js +71 -0
  30. package/ImageCanvas/index.js +441 -0
  31. package/ImageCanvas/region-tools.js +165 -0
  32. package/{src/ImageCanvas → ImageCanvas}/styles.js +12 -8
  33. package/ImageCanvas/use-mouse.js +180 -0
  34. package/ImageCanvas/use-project-box.js +27 -0
  35. package/ImageCanvas/use-wasd-mode.js +62 -0
  36. package/ImageMask/index.js +133 -0
  37. package/ImageMask/load-image.js +25 -0
  38. package/ImageSelectorSidebarBox/index.js +60 -0
  39. package/KeyframeTimeline/get-time-string.js +27 -0
  40. package/KeyframeTimeline/index.js +233 -0
  41. package/KeyframesSelectorSidebarBox/index.js +93 -0
  42. package/LandingPage/index.js +159 -0
  43. package/Locker/index.js +11 -0
  44. package/MainLayout/RightSidebarItemsWrapper.js +19 -0
  45. package/MainLayout/icon-dictionary.js +104 -0
  46. package/MainLayout/index.js +526 -0
  47. package/{src/MainLayout → MainLayout}/styles.js +6 -7
  48. package/MainLayout/types.js +0 -0
  49. package/MainLayout/use-implied-video-regions.js +13 -0
  50. package/MetadataEditorSidebarBox/index.js +231 -0
  51. package/PageSelector/index.js +180 -0
  52. package/PointDistances/index.js +73 -0
  53. package/PreventScrollToParents/index.js +51 -0
  54. package/RegionLabel/index.js +232 -0
  55. package/{src/RegionLabel → RegionLabel}/styles.js +12 -15
  56. package/RegionSelectAndTransformBoxes/index.js +169 -0
  57. package/RegionSelectorSidebarBox/index.js +254 -0
  58. package/{src/RegionSelectorSidebarBox → RegionSelectorSidebarBox}/styles.js +13 -14
  59. package/RegionShapes/index.js +294 -0
  60. package/RegionTags/index.js +144 -0
  61. package/SettingsDialog/index.js +52 -0
  62. package/SettingsProvider/index.js +60 -0
  63. package/Shortcuts/ShortcutField.js +46 -0
  64. package/Shortcuts/index.js +133 -0
  65. package/ShortcutsManager/index.js +155 -0
  66. package/Sidebar/index.js +69 -0
  67. package/SidebarBoxContainer/index.js +93 -0
  68. package/SmallToolButton/index.js +42 -0
  69. package/TagsSidebarBox/index.js +105 -0
  70. package/TaskDescriptionSidebarBox/index.js +58 -0
  71. package/Theme/index.js +30 -0
  72. package/VideoOrImageCanvasBackground/index.js +151 -0
  73. package/colors.js +14 -0
  74. package/hooks/use-colors.js +127 -0
  75. package/hooks/use-event-callback.js +10 -0
  76. package/hooks/use-exclude-pattern.js +24 -0
  77. package/hooks/use-load-image.js +26 -0
  78. package/hooks/use-window-size.js +46 -0
  79. package/{src/hooks → hooks}/xpattern.js +1 -1
  80. package/index.js +3 -0
  81. package/lib.js +3 -0
  82. package/package.json +1 -1
  83. package/stories.js +5 -0
  84. package/utils/blocks-to-article.js +60 -0
  85. package/{src/utils → utils}/blocks-to-article.test.js +5 -8
  86. package/{src/utils → utils}/default-locked-until.js +2 -1
  87. package/{src/utils → utils}/filter-only-unique.js +1 -1
  88. package/utils/get-from-local-storage.js +7 -0
  89. package/utils/get-hotkey-help-text.js +9 -0
  90. package/utils/get-landmarks-with-transform.js +40 -0
  91. package/utils/photosToImages.js +85 -0
  92. package/utils/regions-groups.js +28 -0
  93. package/utils/regions-to-blocks.js +18 -0
  94. package/utils/saveable-actions-enum.js +3 -0
  95. package/utils/set-in-local-storage.js +3 -0
  96. package/utils/sleep.js +7 -0
  97. package/utils/uuid-to-hash.js +5 -0
  98. package/.babelrc +0 -6
  99. package/.env +0 -1
  100. package/.flowconfig +0 -2
  101. package/.github/workflows/release-on-master.yml +0 -32
  102. package/.github/workflows/test.yml +0 -16
  103. package/.prettierrc +0 -3
  104. package/.releaserc.js +0 -18
  105. package/.storybook/addons.js +0 -2
  106. package/.storybook/config.js +0 -16
  107. package/LICENSE +0 -21
  108. package/public/favicon.ico +0 -0
  109. package/public/index.html +0 -38
  110. package/src/Annotator/bike-pic.png +0 -0
  111. package/src/Annotator/bike-pic2.png +0 -0
  112. package/src/Annotator/dab-keyframes.story.json +0 -1
  113. package/src/Annotator/exampleImages.js +0 -48
  114. package/src/Annotator/examplePhotos.js +0 -7603
  115. package/src/Annotator/index.js +0 -380
  116. package/src/Annotator/index.story.js +0 -899
  117. package/src/Annotator/poses.story.js +0 -150
  118. package/src/Annotator/reducers/combine-reducers.js +0 -7
  119. package/src/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -53
  120. package/src/Annotator/reducers/general-reducer.js +0 -1228
  121. package/src/Annotator/reducers/get-active-image.js +0 -21
  122. package/src/Annotator/reducers/get-implied-video-regions.js +0 -115
  123. package/src/Annotator/reducers/history-handler.js +0 -60
  124. package/src/Annotator/reducers/image-reducer.js +0 -23
  125. package/src/Annotator/reducers/video-reducer.js +0 -85
  126. package/src/Annotator/video.story.js +0 -51
  127. package/src/ClassSelectionMenu/index.js +0 -112
  128. package/src/Crosshairs/index.js +0 -64
  129. package/src/DebugSidebarBox/index.js +0 -36
  130. package/src/DemoSite/Editor.js +0 -235
  131. package/src/DemoSite/ErrorBoundaryDialog.js +0 -34
  132. package/src/DemoSite/index.js +0 -41
  133. package/src/DemoSite/index.story.js +0 -10
  134. package/src/DemoSite/simple-segmentation-example.json +0 -572
  135. package/src/Editor/annotation-plugin/annotation.js +0 -546
  136. package/src/Editor/index.js +0 -50
  137. package/src/Editor/readOnly.js +0 -31
  138. package/src/Errorer/index.js +0 -13
  139. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  140. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  141. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  142. package/src/FullImageSegmentationAnnotator/index.js +0 -7
  143. package/src/FullImageSegmentationAnnotator/index.story.js +0 -177
  144. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  145. package/src/GroupSelectorSidebarBox/index.js +0 -48
  146. package/src/GroupsEditorSidebarBox/index.js +0 -108
  147. package/src/HelpSidebarBox/index.js +0 -43
  148. package/src/HighlightBox/index.js +0 -143
  149. package/src/HistorySidebarBox/index.js +0 -78
  150. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  151. package/src/ImageCanvas/index.js +0 -515
  152. package/src/ImageCanvas/index.story.js +0 -314
  153. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  154. package/src/ImageCanvas/region-tools.js +0 -171
  155. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  156. package/src/ImageCanvas/use-mouse.js +0 -168
  157. package/src/ImageCanvas/use-project-box.js +0 -23
  158. package/src/ImageCanvas/use-wasd-mode.js +0 -50
  159. package/src/ImageMask/index.js +0 -127
  160. package/src/ImageMask/load-image.js +0 -32
  161. package/src/ImageSelectorSidebarBox/index.js +0 -54
  162. package/src/KeyframeTimeline/get-time-string.js +0 -25
  163. package/src/KeyframeTimeline/index.js +0 -223
  164. package/src/KeyframesSelectorSidebarBox/index.js +0 -93
  165. package/src/LandingPage/content.md +0 -57
  166. package/src/LandingPage/github-markdown.css +0 -964
  167. package/src/LandingPage/index.js +0 -147
  168. package/src/Locker/index.js +0 -13
  169. package/src/MainLayout/RightSidebarItemsWrapper.js +0 -21
  170. package/src/MainLayout/icon-dictionary.js +0 -79
  171. package/src/MainLayout/index.js +0 -564
  172. package/src/MainLayout/index.story.js +0 -240
  173. package/src/MainLayout/types.js +0 -171
  174. package/src/MainLayout/use-implied-video-regions.js +0 -17
  175. package/src/MetadataEditorSidebarBox/index.js +0 -160
  176. package/src/PageSelector/index.js +0 -159
  177. package/src/PointDistances/index.js +0 -90
  178. package/src/PreventScrollToParents/index.js +0 -48
  179. package/src/PreventScrollToParents/index.story.js +0 -23
  180. package/src/RegionLabel/index.js +0 -236
  181. package/src/RegionSelectAndTransformBoxes/index.js +0 -236
  182. package/src/RegionSelectorSidebarBox/index.js +0 -220
  183. package/src/RegionShapes/index.js +0 -254
  184. package/src/RegionTags/index.js +0 -136
  185. package/src/SettingsDialog/index.js +0 -58
  186. package/src/SettingsProvider/index.js +0 -57
  187. package/src/Shortcuts/ShortcutField.js +0 -44
  188. package/src/Shortcuts/index.js +0 -129
  189. package/src/ShortcutsManager/index.js +0 -162
  190. package/src/Sidebar/index.js +0 -117
  191. package/src/SidebarBoxContainer/index.js +0 -93
  192. package/src/SmallToolButton/index.js +0 -57
  193. package/src/TagsSidebarBox/index.js +0 -93
  194. package/src/TaskDescriptionSidebarBox/index.js +0 -43
  195. package/src/Theme/index.js +0 -36
  196. package/src/VideoOrImageCanvasBackground/index.js +0 -170
  197. package/src/colors.js +0 -32
  198. package/src/hooks/use-colors.js +0 -95
  199. package/src/hooks/use-event-callback.js +0 -11
  200. package/src/hooks/use-exclude-pattern.js +0 -27
  201. package/src/hooks/use-load-image.js +0 -21
  202. package/src/hooks/use-window-size.js +0 -46
  203. package/src/hooks/xpattern.png +0 -0
  204. package/src/index.js +0 -18
  205. package/src/lib.js +0 -7
  206. package/src/screenshot.png +0 -0
  207. package/src/site.css +0 -5
  208. package/src/stories.js +0 -2
  209. package/src/utils/blocks-to-article.js +0 -61
  210. package/src/utils/get-from-local-storage.js +0 -7
  211. package/src/utils/get-hotkey-help-text.js +0 -11
  212. package/src/utils/get-landmarks-with-transform.js +0 -23
  213. package/src/utils/photosToImages.js +0 -67
  214. package/src/utils/regions-groups.js +0 -19
  215. package/src/utils/regions-to-blocks.js +0 -16
  216. package/src/utils/saveable-actions-enum.js +0 -5
  217. package/src/utils/set-in-local-storage.js +0 -6
  218. package/src/utils/sleep.js +0 -3
  219. package/src/utils/uuid-to-hash.js +0 -5
  220. /package/{src/Editor → Editor}/annotation-plugin/annotation.css +0 -0
  221. /package/{src/Errorer → Errorer}/errorer.css +0 -0
  222. /package/{src/Locker → Locker}/locker.css +0 -0
  223. /package/{src/PageSelector → PageSelector}/page-selector.css +0 -0
  224. /package/{src/utils → utils}/next-group-id.js +0 -0
@@ -1,46 +0,0 @@
1
- // @flow
2
-
3
- import { useEffect } from "react"
4
-
5
- import { useRafState, useInterval } from "react-use"
6
-
7
- const useWindowSize = (initialWidth = Infinity, initialHeight = Infinity) => {
8
- const isClient = typeof window !== "undefined"
9
- const [state, setState] = useRafState({
10
- width: isClient ? window.innerWidth : initialWidth,
11
- height: isClient ? window.innerHeight : initialHeight,
12
- })
13
-
14
- useEffect(() => {
15
- if (!isClient) return
16
- const handler = () => {
17
- setState({
18
- width: window.innerWidth,
19
- height: window.innerHeight,
20
- })
21
- }
22
-
23
- window.addEventListener("resize", handler)
24
-
25
- return () => {
26
- window.removeEventListener("resize", handler)
27
- }
28
- }, [])
29
-
30
- useInterval(() => {
31
- if (!isClient) return
32
- if (
33
- window.innerWidth !== state.width ||
34
- window.innerHeight !== state.height
35
- ) {
36
- setState({
37
- width: window.innerWidth,
38
- height: window.innerHeight,
39
- })
40
- }
41
- }, 100)
42
-
43
- return state
44
- }
45
-
46
- export default useWindowSize
Binary file
package/src/index.js DELETED
@@ -1,18 +0,0 @@
1
- // @flow
2
-
3
- import React from "react"
4
- import ReactDOM from "react-dom"
5
- import Theme from "./Theme"
6
- import DemoSite from "./DemoSite"
7
- import LandingPage from "./LandingPage"
8
- import "./site.css"
9
-
10
- const Site = () => {
11
- const path = window.location.pathname
12
- .replace(/\/$/, "")
13
- .split("/")
14
- .slice(-1)[0]
15
- return <Theme>{path === "demo" ? <DemoSite /> : <LandingPage />}</Theme>
16
- }
17
-
18
- ReactDOM.render(<Site />, document.getElementById("root"))
package/src/lib.js DELETED
@@ -1,7 +0,0 @@
1
- // @flow
2
-
3
- import Annotator from "./Annotator"
4
-
5
- export { Annotator }
6
-
7
- export default Annotator
Binary file
package/src/site.css DELETED
@@ -1,5 +0,0 @@
1
- html,
2
- body {
3
- padding: 0;
4
- margin: 0;
5
- }
package/src/stories.js DELETED
@@ -1,2 +0,0 @@
1
- const importAll = (r) => r.keys().map(r)
2
- importAll(require.context("./", true, /\.story\.js$/))
@@ -1,61 +0,0 @@
1
- import { whitespaceCharactersToHTML } from '../Editor/annotation-plugin/annotation';
2
-
3
- function sanitizedText(text) {
4
- const escapedWhitespaces = whitespaceCharactersToHTML(text);
5
-
6
- // remove whitespaces
7
- const trimmed = escapedWhitespaces.trim();
8
-
9
- // replace dashes at the end of sentence
10
- const noTrailingDash = trimmed.replace(/-$/, "")
11
-
12
- return noTrailingDash;
13
- }
14
-
15
- function getConnectingSymbol(labelName) {
16
- switch (labelName) {
17
- case 'text':
18
- return "";
19
- case 'appendix':
20
- return "<br><br>"
21
- default:
22
- return "<br>"
23
- }
24
- }
25
-
26
- function blocksToArticle(blocks) {
27
- const renamedBlocks = blocks.map(b => {
28
- const newBlock = {
29
- ...b, data: {
30
- ...b.data,
31
- labelName: b.data.labelName === 'interview' ? 'text' : b.data.labelName
32
- }
33
- }
34
- return newBlock
35
- })
36
-
37
- const article = renamedBlocks.reduce((acc, curr) => {
38
- const { labelName, text } = curr?.data;
39
- if (acc[labelName] === undefined) {
40
- acc[labelName] = ""
41
- }
42
-
43
- let connectingSymbol = getConnectingSymbol(labelName);
44
-
45
- // if last symbol is dot, next sentence should start with space
46
- if (acc[labelName].charAt(acc[labelName].length - 1) === "." && connectingSymbol === "") {
47
- connectingSymbol = " "
48
- }
49
-
50
- acc[labelName] = acc[labelName] + connectingSymbol + sanitizedText(text);
51
-
52
- return acc;
53
- }, {
54
- title: "",
55
- text: ""
56
- })
57
-
58
- return article;
59
- }
60
-
61
- export default blocksToArticle;
@@ -1,7 +0,0 @@
1
- export default (key, defaultValue) => {
2
- try {
3
- return JSON.parse(window.localStorage[`__REACT_IMAGE_ANNOTATE_${key}`])
4
- } catch (e) {
5
- return defaultValue
6
- }
7
- }
@@ -1,11 +0,0 @@
1
- import { getApplicationKeyMap } from "react-hotkeys"
2
-
3
- export const getHotkeyHelpText = (commandName) => {
4
- const firstSequence =
5
- getApplicationKeyMap()[commandName]?.sequences?.[0]?.sequence
6
-
7
- if (!firstSequence) return ""
8
- return ` (${firstSequence})`
9
- }
10
-
11
- export default getHotkeyHelpText
@@ -1,23 +0,0 @@
1
- // @flow
2
- import type { KeypointDefinition } from "../ImageCanvas/region-tools"
3
-
4
- type Parameters = {
5
- center: { x: number, y: number },
6
- scale: number,
7
- landmarks: {
8
- [string]: KeypointDefinition,
9
- },
10
- }
11
-
12
- export default ({ center, scale, landmarks }: Parameters) => {
13
- const points = {}
14
- for (const [keypointId, { defaultPosition }] of (Object.entries(
15
- landmarks
16
- ): any)) {
17
- points[keypointId] = {
18
- x: defaultPosition[0] * scale + center.x,
19
- y: defaultPosition[1] * scale + center.y,
20
- }
21
- }
22
- return points
23
- }
@@ -1,67 +0,0 @@
1
- function labelAndTextFromResultText(resultText) {
2
- if (!resultText) { return {} }
3
- const parsedResultText = JSON.parse(resultText);
4
- const label = parsedResultText[0].label;
5
- const text = parsedResultText[0].text;
6
- return { label, text }
7
- }
8
-
9
- function extractionEngineModelResultsToRegions(modelResults) {
10
- return modelResults.map(r => {
11
- const { label, text } = labelAndTextFromResultText(r.text);
12
- return {
13
- id: r.id,
14
- type: "box",
15
- visible: r.label === 'metadata' ? false : true,
16
- cls: label,
17
- highlighted: false,
18
- groupHighlighted: false,
19
- x: r.box.X1,
20
- y: r.box.Y1,
21
- w: r.box.X2 - r.box.X1,
22
- h: r.box.Y2 - r.box.Y1,
23
- groupId: r.groupId,
24
- text: text,
25
- }
26
- })
27
- }
28
-
29
- function metadataEngineModelResultsToRegions(modelResults) {
30
- return modelResults.map(r => {
31
- return {
32
- id: r.id,
33
- type: "box",
34
- visible: false,
35
- cls: "metadata",
36
- highlighted: false,
37
- groupHighlighted: false,
38
- x: r.box.X1,
39
- y: r.box.Y1,
40
- w: r.box.X2 - r.box.X1,
41
- h: r.box.Y2 - r.box.Y1,
42
- groupId: r.groupId,
43
- text: r.text,
44
- }
45
- })
46
- }
47
-
48
-
49
- function modelResultsToRegions(modelResults) {
50
- const extractionEngineRegions = extractionEngineModelResultsToRegions(modelResults.find(mr => mr.name === 'extraction-engine')?.results || [])
51
- const metadataEngineRegions = metadataEngineModelResultsToRegions(modelResults.find(mr => mr.name === 'metadata-engine')?.results || [])
52
- return [...extractionEngineRegions, ...metadataEngineRegions]
53
- }
54
-
55
- function photosToImages(photos) {
56
- return photos.map(photo => ({
57
- id: photo.id,
58
- src: photo.fullsize.key,
59
- thumbnail: photo.thumbnail.key,
60
- name: photo.fullsize.key,
61
- regions: modelResultsToRegions(photo.modelResults.v1),
62
- metadata: photo.metadata,
63
- lockedUntil: photo.lockedUntil,
64
- }))
65
- }
66
-
67
- export default photosToImages;
@@ -1,19 +0,0 @@
1
- const MAX_GROUP_LENGTH = 20;
2
-
3
- function regionsGroups(regions) {
4
- if (!regions) {
5
- return []
6
- }
7
- const groups = regions.reduce((acc, curr) => {
8
- const { groupId } = curr;
9
- if (acc.some(e => e.id === groupId)) {
10
- return acc
11
- }
12
- acc.push({ id: groupId, label: curr?.text?.substring(0, MAX_GROUP_LENGTH) || groupId })
13
- return acc;
14
- }, [])
15
-
16
- return groups;
17
- }
18
-
19
- export default regionsGroups;
@@ -1,16 +0,0 @@
1
- function regionsToBlocks(regions, clsColor) {
2
- return regions.map(r => ({
3
- id: r.id,
4
- type: "annotation",
5
- data: {
6
- text: r.text || '',
7
- labelName: r.cls,
8
- groupColor: r.groupColor,
9
- groupId: r.groupId,
10
- clsColor: clsColor(r.cls),
11
- highlighted: r.highlighted,
12
- }
13
- }))
14
- }
15
-
16
- export default regionsToBlocks;
@@ -1,5 +0,0 @@
1
- const reacalcActionsEnum = ["MOUSE_UP_RESIZE_BOX", "DELETE_REGION", "DELETE_GROUP", "MOUSE_UP_MOVE_REGION", "SELECT_CLASSIFICATION", "CHANGE_REGION"]
2
-
3
- const saveableActionsEnum = [reacalcActionsEnum, "UPDATE_REGIONS", "UPDATE_METADATA", "UPDATE_ALBUM_METADATA"];
4
-
5
- export { saveableActionsEnum, reacalcActionsEnum };
@@ -1,6 +0,0 @@
1
- export default (key, val) => {
2
- window.localStorage.setItem(
3
- `__REACT_IMAGE_ANNOTATE_${key}`,
4
- JSON.stringify(val)
5
- )
6
- }
@@ -1,3 +0,0 @@
1
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
2
-
3
- export default sleep;
@@ -1,5 +0,0 @@
1
- const uuidToHash = (id) => {
2
- return id.slice(0, 8)
3
- }
4
-
5
- export default uuidToHash;
File without changes
File without changes
File without changes