@searpent/react-image-annotate 2.0.75 → 2.0.76

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 +877 -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/src/Editor/annotation-plugin/annotation.js +536 -0
  41. package/src/Editor/index.js +50 -0
  42. package/src/Editor/readOnly.js +21 -0
  43. package/{Editor → src/Editor}/tools.js +3 -2
  44. package/src/Errorer/index.js +13 -0
  45. package/src/FullImageSegmentationAnnotator/hard1.story.jpg +0 -0
  46. package/src/FullImageSegmentationAnnotator/hard2.story.jpg +0 -0
  47. package/src/FullImageSegmentationAnnotator/hard3.story.jpg +0 -0
  48. package/src/FullImageSegmentationAnnotator/index.js +7 -0
  49. package/src/FullImageSegmentationAnnotator/index.story.js +177 -0
  50. package/src/FullImageSegmentationAnnotator/orange.story.png +0 -0
  51. package/src/GroupSelectorSidebarBox/index.js +48 -0
  52. package/src/GroupsEditorSidebarBox/index.js +108 -0
  53. package/src/HelpSidebarBox/index.js +43 -0
  54. package/src/HighlightBox/index.js +143 -0
  55. package/src/HistorySidebarBox/index.js +78 -0
  56. package/src/ImageCanvas/dancing-man.story.jpg +0 -0
  57. package/src/ImageCanvas/index.js +515 -0
  58. package/src/ImageCanvas/index.story.js +314 -0
  59. package/src/ImageCanvas/mouse_mask.story.png +0 -0
  60. package/src/ImageCanvas/region-tools.js +171 -0
  61. package/src/ImageCanvas/seves_desk.story.jpg +0 -0
  62. package/{ImageCanvas → src/ImageCanvas}/styles.js +8 -12
  63. package/src/ImageCanvas/use-mouse.js +168 -0
  64. package/src/ImageCanvas/use-project-box.js +23 -0
  65. package/src/ImageCanvas/use-wasd-mode.js +50 -0
  66. package/src/ImageMask/index.js +127 -0
  67. package/src/ImageMask/load-image.js +32 -0
  68. package/src/ImageSelectorSidebarBox/index.js +54 -0
  69. package/src/KeyframeTimeline/get-time-string.js +25 -0
  70. package/src/KeyframeTimeline/index.js +223 -0
  71. package/src/KeyframesSelectorSidebarBox/index.js +93 -0
  72. package/src/LandingPage/content.md +57 -0
  73. package/src/LandingPage/github-markdown.css +964 -0
  74. package/src/LandingPage/index.js +147 -0
  75. package/src/Locker/index.js +13 -0
  76. package/src/MainLayout/RightSidebarItemsWrapper.js +21 -0
  77. package/src/MainLayout/icon-dictionary.js +79 -0
  78. package/src/MainLayout/index.js +564 -0
  79. package/src/MainLayout/index.story.js +240 -0
  80. package/{MainLayout → src/MainLayout}/styles.js +7 -6
  81. package/src/MainLayout/types.js +171 -0
  82. package/src/MainLayout/use-implied-video-regions.js +17 -0
  83. package/src/MetadataEditorSidebarBox/index.js +160 -0
  84. package/src/PageSelector/index.js +159 -0
  85. package/src/PointDistances/index.js +90 -0
  86. package/src/PreventScrollToParents/index.js +48 -0
  87. package/src/PreventScrollToParents/index.story.js +23 -0
  88. package/src/RegionLabel/index.js +236 -0
  89. package/{RegionLabel → src/RegionLabel}/styles.js +15 -12
  90. package/src/RegionSelectAndTransformBoxes/index.js +236 -0
  91. package/src/RegionSelectorSidebarBox/index.js +220 -0
  92. package/{RegionSelectorSidebarBox → src/RegionSelectorSidebarBox}/styles.js +14 -13
  93. package/src/RegionShapes/index.js +254 -0
  94. package/src/RegionTags/index.js +136 -0
  95. package/src/SettingsDialog/index.js +58 -0
  96. package/src/SettingsProvider/index.js +57 -0
  97. package/src/Shortcuts/ShortcutField.js +44 -0
  98. package/src/Shortcuts/index.js +129 -0
  99. package/src/ShortcutsManager/index.js +162 -0
  100. package/src/Sidebar/index.js +117 -0
  101. package/src/SidebarBoxContainer/index.js +93 -0
  102. package/src/SmallToolButton/index.js +57 -0
  103. package/src/TagsSidebarBox/index.js +93 -0
  104. package/src/TaskDescriptionSidebarBox/index.js +43 -0
  105. package/src/Theme/index.js +36 -0
  106. package/src/VideoOrImageCanvasBackground/index.js +170 -0
  107. package/src/colors.js +32 -0
  108. package/src/hooks/use-colors.js +75 -0
  109. package/src/hooks/use-event-callback.js +11 -0
  110. package/src/hooks/use-exclude-pattern.js +27 -0
  111. package/src/hooks/use-load-image.js +21 -0
  112. package/src/hooks/use-window-size.js +46 -0
  113. package/{hooks → src/hooks}/xpattern.js +1 -1
  114. package/src/hooks/xpattern.png +0 -0
  115. package/src/index.js +18 -0
  116. package/src/lib.js +7 -0
  117. package/src/screenshot.png +0 -0
  118. package/src/site.css +5 -0
  119. package/src/stories.js +2 -0
  120. package/src/utils/blocks-to-article.js +61 -0
  121. package/{utils → src/utils}/blocks-to-article.test.js +8 -5
  122. package/{utils → src/utils}/default-locked-until.js +1 -2
  123. package/{utils → src/utils}/filter-only-unique.js +1 -1
  124. package/src/utils/get-from-local-storage.js +7 -0
  125. package/src/utils/get-hotkey-help-text.js +11 -0
  126. package/src/utils/get-landmarks-with-transform.js +23 -0
  127. package/src/utils/photosToImages.js +67 -0
  128. package/src/utils/regions-groups.js +19 -0
  129. package/src/utils/regions-to-blocks.js +16 -0
  130. package/src/utils/saveable-actions-enum.js +5 -0
  131. package/src/utils/set-in-local-storage.js +6 -0
  132. package/src/utils/sleep.js +3 -0
  133. package/src/utils/uuid-to-hash.js +5 -0
  134. package/Annotator/exampleImages.js +0 -41
  135. package/Annotator/examplePhotos.js +0 -6980
  136. package/Annotator/index.js +0 -417
  137. package/Annotator/reducers/combine-reducers.js +0 -14
  138. package/Annotator/reducers/convert-expanding-line-to-polygon.js +0 -73
  139. package/Annotator/reducers/general-reducer.js +0 -1430
  140. package/Annotator/reducers/get-active-image.js +0 -27
  141. package/Annotator/reducers/get-implied-video-regions.js +0 -180
  142. package/Annotator/reducers/history-handler.js +0 -38
  143. package/Annotator/reducers/image-reducer.js +0 -20
  144. package/Annotator/reducers/video-reducer.js +0 -88
  145. package/ClassSelectionMenu/index.js +0 -140
  146. package/Crosshairs/index.js +0 -53
  147. package/DebugSidebarBox/index.js +0 -20
  148. package/DemoSite/Editor.js +0 -194
  149. package/DemoSite/ErrorBoundaryDialog.js +0 -64
  150. package/DemoSite/index.js +0 -40
  151. package/Editor/annotation-plugin/annotation.js +0 -647
  152. package/Editor/index.js +0 -93
  153. package/Editor/readOnly.js +0 -73
  154. package/Errorer/index.js +0 -11
  155. package/FullImageSegmentationAnnotator/index.js +0 -7
  156. package/GroupSelectorSidebarBox/index.js +0 -63
  157. package/GroupsEditorSidebarBox/index.js +0 -138
  158. package/HelpSidebarBox/index.js +0 -58
  159. package/HighlightBox/index.js +0 -102
  160. package/HistorySidebarBox/index.js +0 -71
  161. package/ImageCanvas/index.js +0 -441
  162. package/ImageCanvas/region-tools.js +0 -165
  163. package/ImageCanvas/use-mouse.js +0 -180
  164. package/ImageCanvas/use-project-box.js +0 -27
  165. package/ImageCanvas/use-wasd-mode.js +0 -62
  166. package/ImageMask/index.js +0 -133
  167. package/ImageMask/load-image.js +0 -25
  168. package/ImageSelectorSidebarBox/index.js +0 -60
  169. package/KeyframeTimeline/get-time-string.js +0 -27
  170. package/KeyframeTimeline/index.js +0 -233
  171. package/KeyframesSelectorSidebarBox/index.js +0 -93
  172. package/LandingPage/index.js +0 -159
  173. package/Locker/index.js +0 -11
  174. package/MainLayout/RightSidebarItemsWrapper.js +0 -19
  175. package/MainLayout/icon-dictionary.js +0 -104
  176. package/MainLayout/index.js +0 -526
  177. package/MainLayout/types.js +0 -0
  178. package/MainLayout/use-implied-video-regions.js +0 -13
  179. package/MetadataEditorSidebarBox/index.js +0 -231
  180. package/PageSelector/index.js +0 -180
  181. package/PointDistances/index.js +0 -73
  182. package/PreventScrollToParents/index.js +0 -51
  183. package/RegionLabel/index.js +0 -232
  184. package/RegionSelectAndTransformBoxes/index.js +0 -169
  185. package/RegionSelectorSidebarBox/index.js +0 -254
  186. package/RegionShapes/index.js +0 -294
  187. package/RegionTags/index.js +0 -144
  188. package/SettingsDialog/index.js +0 -52
  189. package/SettingsProvider/index.js +0 -60
  190. package/Shortcuts/ShortcutField.js +0 -46
  191. package/Shortcuts/index.js +0 -133
  192. package/ShortcutsManager/index.js +0 -155
  193. package/Sidebar/index.js +0 -69
  194. package/SidebarBoxContainer/index.js +0 -93
  195. package/SmallToolButton/index.js +0 -42
  196. package/TagsSidebarBox/index.js +0 -105
  197. package/TaskDescriptionSidebarBox/index.js +0 -58
  198. package/Theme/index.js +0 -30
  199. package/VideoOrImageCanvasBackground/index.js +0 -151
  200. package/colors.js +0 -14
  201. package/hooks/use-colors.js +0 -97
  202. package/hooks/use-event-callback.js +0 -10
  203. package/hooks/use-exclude-pattern.js +0 -24
  204. package/hooks/use-load-image.js +0 -26
  205. package/hooks/use-window-size.js +0 -46
  206. package/index.js +0 -3
  207. package/lib.js +0 -3
  208. package/stories.js +0 -5
  209. package/utils/blocks-to-article.js +0 -60
  210. package/utils/get-from-local-storage.js +0 -7
  211. package/utils/get-hotkey-help-text.js +0 -9
  212. package/utils/get-landmarks-with-transform.js +0 -40
  213. package/utils/photosToImages.js +0 -85
  214. package/utils/regions-groups.js +0 -28
  215. package/utils/regions-to-blocks.js +0 -18
  216. package/utils/saveable-actions-enum.js +0 -3
  217. package/utils/set-in-local-storage.js +0 -3
  218. package/utils/sleep.js +0 -7
  219. package/utils/uuid-to-hash.js +0 -5
  220. /package/{Editor → src/Editor}/annotation-plugin/annotation.css +0 -0
  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,147 @@
1
+ // @flow
2
+
3
+ import React from "react"
4
+ import Button from "@mui/material/Button"
5
+ import { styled } from "@mui/material/styles"
6
+ import { createTheme, ThemeProvider } from "@mui/material/styles"
7
+ import * as colors from "@mui/material/colors"
8
+ import Grid from "@mui/material/Grid"
9
+ import Markdown from "react-markdown"
10
+ import GitHubButton from "react-github-btn"
11
+ import "./github-markdown.css"
12
+ import raw from "raw.macro"
13
+ import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"
14
+ import { docco } from "react-syntax-highlighter/dist/cjs/languages/hljs/javascript"
15
+
16
+ const contentMd = raw("./content.md")
17
+ const theme = createTheme()
18
+ const RootContainer = styled("div")(({ theme }) => ({
19
+ display: "flex",
20
+ flexDirection: "column",
21
+ alignItems: "center",
22
+ }))
23
+ const ContentContainer = styled("div")(({ theme }) => ({
24
+ width: "100%",
25
+ boxSizing: "border-box",
26
+ display: "flex",
27
+ flexDirection: "column",
28
+ maxWidth: 1200,
29
+ }))
30
+ const Header = styled("div")(({ theme }) => ({
31
+ width: "100%",
32
+ display: "flex",
33
+ justifyContent: "center",
34
+ backgroundColor: colors.blue[600],
35
+ padding: 8,
36
+ boxSizing: "border-box",
37
+ }))
38
+ const HeaderButton = styled(Button)(({ theme }) => ({
39
+ color: "white",
40
+ margin: 8,
41
+ padding: 16,
42
+ paddingLeft: 24,
43
+ paddingRight: 24,
44
+ }))
45
+ const Hero = styled("div")(({ theme }) => ({
46
+ display: "flex",
47
+ justifyContent: "center",
48
+ width: "100%",
49
+ backgroundColor: colors.blue[500],
50
+ padding: 16,
51
+ color: "white",
52
+ boxSizing: "border-box",
53
+ }))
54
+ const HeroMain = styled("div")(({ theme }) => ({
55
+ fontSize: 48,
56
+ fontWeight: "bold",
57
+ paddingTop: 64,
58
+ textShadow: "0px 1px 5px rgba(0,0,0,0.3)",
59
+ }))
60
+ const HeroSub = styled("div")(({ theme }) => ({
61
+ paddingTop: 32,
62
+ lineHeight: 1.5,
63
+ fontSize: 24,
64
+ textShadow: "0px 1px 3px rgba(0,0,0,0.2)",
65
+ }))
66
+ const HeroButtons = styled("div")(({ theme }) => ({
67
+ paddingTop: 32,
68
+ paddingBottom: 48,
69
+ }))
70
+ const Section = styled("div")(({ theme }) => ({
71
+ display: "flex",
72
+ padding: 16,
73
+ paddingTop: 32,
74
+ flexDirection: "column",
75
+ }))
76
+
77
+ const CodeBlock = ({ language, value }) => {
78
+ return (
79
+ <SyntaxHighlighter language={language} style={docco}>
80
+ {value}
81
+ </SyntaxHighlighter>
82
+ )
83
+ }
84
+
85
+ function flatten(text, child) {
86
+ return typeof child === "string"
87
+ ? text + child
88
+ : React.Children.toArray(child.props.children).reduce(flatten, text)
89
+ }
90
+
91
+ function HeadingRenderer(props) {
92
+ var children = React.Children.toArray(props.children)
93
+ var text = children.reduce(flatten, "")
94
+ var slug = text.toLowerCase().replace(/\W/g, "-")
95
+ return React.createElement("h" + props.level, { id: slug }, props.children)
96
+ }
97
+
98
+ const LandingPage = () => {
99
+ return (
100
+ <ThemeProvider theme={theme}>
101
+ <RootContainer>
102
+ <Header id="about">
103
+ <ContentContainer style={{ flexDirection: "row", flexGrow: 1 }}>
104
+ <HeaderButton href="#features">Features</HeaderButton>
105
+ <HeaderButton href="#usage">Usage</HeaderButton>
106
+ <HeaderButton href="#props">Props</HeaderButton>
107
+ <HeaderButton href="./demo">Demo Playground</HeaderButton>
108
+ </ContentContainer>
109
+ </Header>
110
+ <Hero>
111
+ <ContentContainer>
112
+ <HeroMain>React Image Annotate</HeroMain>
113
+ <HeroSub>
114
+ Powerful React component for image annotations with bounding
115
+ boxes, tagging, classification, multiple images and polygon
116
+ segmentation.
117
+ </HeroSub>
118
+ <HeroButtons>
119
+ <GitHubButton
120
+ href="https://github.com/waoai/react-image-annotate"
121
+ data-size="large"
122
+ data-show-count="true"
123
+ aria-label="Star waoai/react-image-annotate on GitHub"
124
+ >
125
+ Star
126
+ </GitHubButton>
127
+ </HeroButtons>
128
+ </ContentContainer>
129
+ </Hero>
130
+ <ContentContainer className="markdown-body">
131
+ <Section className="markdown-body">
132
+ <Markdown
133
+ escapeHtml={false}
134
+ source={contentMd}
135
+ renderers={{
136
+ code: CodeBlock,
137
+ heading: HeadingRenderer,
138
+ }}
139
+ />
140
+ </Section>
141
+ </ContentContainer>
142
+ </RootContainer>
143
+ </ThemeProvider>
144
+ )
145
+ }
146
+
147
+ export default LandingPage
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import LockIcon from '@mui/icons-material/Lock';
3
+ import './locker.css';
4
+
5
+ function Locker() {
6
+ return (
7
+ <div className="locker">
8
+ <LockIcon />
9
+ </div>
10
+ );
11
+ }
12
+
13
+ export default Locker;
@@ -0,0 +1,21 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ function RightSidebarItemsWrapper({ children }) {
4
+ const elementRef = useRef();
5
+
6
+ useEffect(() => {
7
+ if (elementRef) {
8
+ const divElement = elementRef.current;
9
+ const parentEl = divElement.parentElement;
10
+ parentEl.style.overflowY = "scroll";
11
+ }
12
+ }, [])
13
+
14
+ return (
15
+ <div ref={elementRef} id="right-sidebar">
16
+ {children}
17
+ </div>
18
+ );
19
+ }
20
+
21
+ export default RightSidebarItemsWrapper;
@@ -0,0 +1,79 @@
1
+ // @flow
2
+
3
+ import React from "react"
4
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
5
+ import {
6
+ faArrowsAlt,
7
+ faMousePointer,
8
+ faExpandArrowsAlt,
9
+ faGripLines,
10
+ faTag,
11
+ faPaintBrush,
12
+ faCrosshairs,
13
+ faDrawPolygon,
14
+ faVectorSquare,
15
+ faHandPaper,
16
+ faSearch,
17
+ faMask,
18
+ faEdit,
19
+ faChartLine,
20
+ } from "@fortawesome/free-solid-svg-icons"
21
+ import FullscreenIcon from "@mui/icons-material/Fullscreen"
22
+ import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"
23
+
24
+ const faStyle = { marginTop: 4, width: 16, height: 16, marginBottom: 4 }
25
+
26
+ export const iconDictionary = {
27
+ select: () => (
28
+ <FontAwesomeIcon
29
+ style={faStyle}
30
+ size="xs"
31
+ fixedWidth
32
+ icon={faMousePointer}
33
+ />
34
+ ),
35
+ pan: () => (
36
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faHandPaper} />
37
+ ),
38
+ zoom: () => (
39
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faSearch} />
40
+ ),
41
+ "show-tags": () => (
42
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faTag} />
43
+ ),
44
+ "create-point": () => (
45
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faCrosshairs} />
46
+ ),
47
+ "create-box": () => (
48
+ <FontAwesomeIcon
49
+ style={faStyle}
50
+ size="xs"
51
+ fixedWidth
52
+ icon={faVectorSquare}
53
+ />
54
+ ),
55
+ "create-polygon": () => (
56
+ <FontAwesomeIcon
57
+ style={faStyle}
58
+ size="xs"
59
+ fixedWidth
60
+ icon={faDrawPolygon}
61
+ />
62
+ ),
63
+ "create-expanding-line": () => (
64
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faGripLines} />
65
+ ),
66
+ "create-line": () => (
67
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faChartLine} />
68
+ ),
69
+ "show-mask": () => (
70
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faMask} />
71
+ ),
72
+ "modify-allowed-area": () => (
73
+ <FontAwesomeIcon style={faStyle} size="xs" fixedWidth icon={faEdit} />
74
+ ),
75
+ "create-keypoints": AccessibilityNewIcon,
76
+ window: FullscreenIcon,
77
+ }
78
+
79
+ export default iconDictionary