@searpent/react-image-annotate 2.0.74 → 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/{Editor → src/Editor}/annotation-plugin/annotation.css +2 -0
  41. package/src/Editor/annotation-plugin/annotation.js +536 -0
  42. package/src/Editor/index.js +50 -0
  43. package/src/Editor/readOnly.js +21 -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 +75 -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 -642
  153. package/Editor/index.js +0 -93
  154. package/Editor/readOnly.js +0 -68
  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 -94
  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
@@ -1,232 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
3
- import React, { useRef, memo } from "react";
4
- import Paper from "@mui/material/Paper";
5
- import { makeStyles } from "@mui/styles";
6
- import { createTheme, ThemeProvider } from "@mui/material/styles";
7
- import styles from "./styles";
8
- import classnames from "classnames";
9
- import IconButton from "@mui/material/IconButton";
10
- import Button from "@mui/material/Button";
11
- import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
12
- import DeleteForeverIcon from '@mui/icons-material/DeleteForever';
13
- import CheckIcon from "@mui/icons-material/Check";
14
- import TextField from "@mui/material/TextField";
15
- import Select from "react-select";
16
- import CreatableSelect from "react-select/creatable";
17
- import uuidToHash from '../utils/uuid-to-hash';
18
- import { asMutable } from "seamless-immutable";
19
- var theme = createTheme();
20
- var useStyles = makeStyles(function (theme) {
21
- return styles;
22
- });
23
- export var RegionLabel = function RegionLabel(_ref) {
24
- var region = _ref.region,
25
- editing = _ref.editing,
26
- allowedClasses = _ref.allowedClasses,
27
- allowedTags = _ref.allowedTags,
28
- onDelete = _ref.onDelete,
29
- _onChange = _ref.onChange,
30
- onClose = _ref.onClose,
31
- onOpen = _ref.onOpen,
32
- onRegionClassAdded = _ref.onRegionClassAdded,
33
- allowComments = _ref.allowComments,
34
- hideNotEditingLabel = _ref.hideNotEditingLabel,
35
- allowedGroups = _ref.allowedGroups,
36
- onDeleteGroup = _ref.onDeleteGroup;
37
- var classes = useStyles();
38
- var commentInputRef = useRef(null);
39
-
40
- var onCommentInputClick = function onCommentInputClick(_) {
41
- // The TextField wraps the <input> tag with two divs
42
- var commentInput = commentInputRef.current.children[0].children[0];
43
- if (commentInput) return commentInput.focus();
44
- };
45
-
46
- if (hideNotEditingLabel && !editing) return null;
47
- var allowedGroupsForSelect = allowedGroups ? allowedGroups.map(function (g) {
48
- return {
49
- value: "".concat(g.id),
50
- label: g.label || uuidToHash(g.id)
51
- };
52
- }) : [];
53
- return React.createElement(ThemeProvider, {
54
- theme: theme
55
- }, React.createElement(Paper, {
56
- onClick: function onClick() {
57
- return !editing ? onOpen(region) : null;
58
- },
59
- className: classnames(classes.regionInfo, {
60
- highlighted: region.highlighted
61
- })
62
- }, !editing ? React.createElement("div", null, region.cls && React.createElement("div", {
63
- className: "name"
64
- }, React.createElement("div", {
65
- className: "circle",
66
- style: {
67
- backgroundColor: region.color
68
- }
69
- }), region.cls), region.tags && React.createElement("div", {
70
- className: "tags"
71
- }, region.tags.map(function (t) {
72
- return React.createElement("div", {
73
- key: t,
74
- className: "tag"
75
- }, t);
76
- }))) : React.createElement("div", {
77
- style: {
78
- width: 200
79
- }
80
- }, React.createElement("div", {
81
- style: {
82
- display: "flex",
83
- flexDirection: "row"
84
- }
85
- }, React.createElement("div", {
86
- style: {
87
- display: "flex",
88
- backgroundColor: region.color || "#888",
89
- color: "#fff",
90
- padding: 4,
91
- paddingLeft: 8,
92
- paddingRight: 8,
93
- borderRadius: 4,
94
- fontWeight: "bold",
95
- textShadow: "0px 0px 5px rgba(0,0,0,0.4)"
96
- }
97
- }, region.type), React.createElement("div", {
98
- style: {
99
- flexGrow: 1
100
- }
101
- }), React.createElement(IconButton, {
102
- onClick: function onClick() {
103
- return onDelete(region);
104
- },
105
- tabIndex: -1,
106
- style: {
107
- width: 22,
108
- height: 22
109
- },
110
- size: "small",
111
- variant: "outlined"
112
- }, React.createElement(DeleteOutlineIcon, {
113
- style: {
114
- marginTop: -8,
115
- width: 16,
116
- height: 16
117
- }
118
- })), React.createElement(IconButton, {
119
- onClick: function onClick() {
120
- return onDeleteGroup(region.groupId);
121
- },
122
- tabIndex: -1,
123
- style: {
124
- width: 22,
125
- height: 22
126
- },
127
- size: "small",
128
- variant: "outlined"
129
- }, React.createElement(DeleteForeverIcon, {
130
- style: {
131
- marginTop: -8,
132
- width: 16,
133
- height: 16
134
- }
135
- }))), (allowedClasses || []).length > 0 && React.createElement("div", {
136
- style: {
137
- marginTop: 6
138
- }
139
- }, React.createElement(CreatableSelect, {
140
- placeholder: "Classification",
141
- onChange: function onChange(o, actionMeta) {
142
- if (actionMeta.action == "create-option") {
143
- onRegionClassAdded(o.value);
144
- }
145
-
146
- return _onChange(_objectSpread({}, region, {
147
- cls: o.value
148
- }));
149
- },
150
- value: region.cls ? {
151
- label: region.cls,
152
- value: region.cls
153
- } : null,
154
- options: asMutable(allowedClasses.map(function (c) {
155
- return {
156
- value: c,
157
- label: c
158
- };
159
- }))
160
- })), (allowedGroups || []).length > 0 && React.createElement(Select, {
161
- onChange: function onChange(newGroup) {
162
- return _onChange(_objectSpread({}, region, {
163
- groupId: newGroup.value
164
- }));
165
- },
166
- placeholder: "Group",
167
- value: allowedGroupsForSelect.find(function (g) {
168
- return g.value === region.groupId;
169
- }),
170
- options: _toConsumableArray(allowedGroupsForSelect)
171
- }), (allowedTags || []).length > 0 && React.createElement("div", {
172
- style: {
173
- marginTop: 4
174
- }
175
- }, React.createElement(Select, {
176
- onChange: function onChange(newTags) {
177
- return _onChange(_objectSpread({}, region, {
178
- tags: newTags.map(function (t) {
179
- return t.value;
180
- })
181
- }));
182
- },
183
- placeholder: "Tags",
184
- value: (region.tags || []).map(function (c) {
185
- return {
186
- label: c,
187
- value: c
188
- };
189
- }),
190
- isMulti: true,
191
- options: asMutable(allowedTags.map(function (c) {
192
- return {
193
- value: c,
194
- label: c
195
- };
196
- }))
197
- })), allowComments && React.createElement(TextField, {
198
- InputProps: {
199
- className: classes.commentBox
200
- },
201
- fullWidth: true,
202
- multiline: true,
203
- rows: 3,
204
- ref: commentInputRef,
205
- onClick: onCommentInputClick,
206
- value: region.comment || "",
207
- onChange: function onChange(event) {
208
- return _onChange(_objectSpread({}, region, {
209
- comment: event.target.value
210
- }));
211
- }
212
- }), onClose && React.createElement("div", {
213
- style: {
214
- marginTop: 4,
215
- display: "flex"
216
- }
217
- }, React.createElement("div", {
218
- style: {
219
- flexGrow: 1
220
- }
221
- }), React.createElement(Button, {
222
- onClick: function onClick() {
223
- return onClose(region);
224
- },
225
- size: "small",
226
- variant: "contained",
227
- color: "primary"
228
- }, React.createElement(CheckIcon, null))))));
229
- };
230
- export default memo(RegionLabel, function (prevProps, nextProps) {
231
- return prevProps.editing === nextProps.editing && prevProps.region === nextProps.region;
232
- });
@@ -1,169 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import React, { Fragment, memo } from "react";
3
- import HighlightBox from "../HighlightBox";
4
- import { styled } from "@mui/material/styles";
5
- import { createTheme, ThemeProvider } from "@mui/material/styles";
6
- import PreventScrollToParents from "../PreventScrollToParents";
7
- import Tooltip from "@mui/material/Tooltip";
8
- var theme = createTheme();
9
- var TransformGrabber = styled("div")(function (_ref) {
10
- var theme = _ref.theme;
11
- return {
12
- width: 8,
13
- height: 8,
14
- zIndex: 10,
15
- backgroundColor: "#454545",
16
- border: "2px solid black",
17
- borderRadius: "50%",
18
- position: "absolute"
19
- };
20
- });
21
- var boxCursorMap = [["nw-resize", "n-resize", "ne-resize"], ["w-resize", "grab", "e-resize"], ["sw-resize", "s-resize", "se-resize"]];
22
-
23
- var arePropsEqual = function arePropsEqual(prev, next) {
24
- return prev.region === next.region && prev.dragWithPrimary === next.dragWithPrimary && prev.createWithPrimary === next.createWithPrimary && prev.zoomWithPrimary === next.zoomWithPrimary && prev.mat === next.mat;
25
- };
26
-
27
- export var RegionSelectAndTransformBox = memo(function (_ref2) {
28
- var r = _ref2.region,
29
- mouseEvents = _ref2.mouseEvents,
30
- projectRegionBox = _ref2.projectRegionBox,
31
- dragWithPrimary = _ref2.dragWithPrimary,
32
- createWithPrimary = _ref2.createWithPrimary,
33
- zoomWithPrimary = _ref2.zoomWithPrimary,
34
- onBeginMovePoint = _ref2.onBeginMovePoint,
35
- onSelectRegion = _ref2.onSelectRegion,
36
- layoutParams = _ref2.layoutParams,
37
- _ref2$fullImageSegmen = _ref2.fullImageSegmentationMode,
38
- fullImageSegmentationMode = _ref2$fullImageSegmen === void 0 ? false : _ref2$fullImageSegmen,
39
- mat = _ref2.mat,
40
- onBeginBoxTransform = _ref2.onBeginBoxTransform,
41
- onBeginMovePolygonPoint = _ref2.onBeginMovePolygonPoint,
42
- onBeginMoveKeypoint = _ref2.onBeginMoveKeypoint,
43
- onAddPolygonPoint = _ref2.onAddPolygonPoint,
44
- showHighlightBox = _ref2.showHighlightBox;
45
- var pbox = projectRegionBox(r);
46
- var _layoutParams$current = layoutParams.current,
47
- iw = _layoutParams$current.iw,
48
- ih = _layoutParams$current.ih;
49
- return React.createElement(ThemeProvider, {
50
- theme: theme
51
- }, React.createElement(Fragment, null, React.createElement(PreventScrollToParents, null, showHighlightBox && r.type !== "polygon" && React.createElement(HighlightBox, {
52
- region: r,
53
- mouseEvents: mouseEvents,
54
- dragWithPrimary: dragWithPrimary,
55
- createWithPrimary: createWithPrimary,
56
- zoomWithPrimary: zoomWithPrimary,
57
- onBeginMovePoint: onBeginMovePoint,
58
- onSelectRegion: onSelectRegion,
59
- pbox: pbox
60
- }), r.type === "box" && !dragWithPrimary && !zoomWithPrimary && !r.locked && r.highlighted && mat.a < 1.2 && [[0, 0], [0.5, 0], [1, 0], [1, 0.5], [1, 1], [0.5, 1], [0, 1], [0, 0.5], [0.5, 0.5]].map(function (_ref3, i) {
61
- var _ref4 = _slicedToArray(_ref3, 2),
62
- px = _ref4[0],
63
- py = _ref4[1];
64
-
65
- return React.createElement(TransformGrabber, Object.assign({
66
- key: i
67
- }, mouseEvents, {
68
- onMouseDown: function onMouseDown(e) {
69
- if (e.button === 0) return onBeginBoxTransform(r, [px * 2 - 1, py * 2 - 1]);
70
- mouseEvents.onMouseDown(e);
71
- },
72
- style: {
73
- left: pbox.x - 4 - 2 + pbox.w * px,
74
- top: pbox.y - 4 - 2 + pbox.h * py,
75
- cursor: boxCursorMap[py * 2][px * 2],
76
- borderRadius: px === 0.5 && py === 0.5 ? 4 : undefined
77
- }
78
- }));
79
- }), r.type === "polygon" && !dragWithPrimary && !zoomWithPrimary && !r.locked && r.highlighted && r.points.map(function (_ref5, i) {
80
- var _ref6 = _slicedToArray(_ref5, 2),
81
- px = _ref6[0],
82
- py = _ref6[1];
83
-
84
- var proj = mat.clone().inverse().applyToPoint(px * iw, py * ih);
85
- return React.createElement(TransformGrabber, Object.assign({
86
- key: i
87
- }, mouseEvents, {
88
- onMouseDown: function onMouseDown(e) {
89
- if (e.button === 0 && (!r.open || i === 0)) return onBeginMovePolygonPoint(r, i);
90
- mouseEvents.onMouseDown(e);
91
- },
92
- style: {
93
- cursor: !r.open ? "move" : i === 0 ? "pointer" : undefined,
94
- zIndex: 10,
95
- pointerEvents: r.open && i === r.points.length - 1 ? "none" : undefined,
96
- left: proj.x - 4,
97
- top: proj.y - 4
98
- }
99
- }));
100
- }), r.type === "polygon" && r.highlighted && !dragWithPrimary && !zoomWithPrimary && !r.locked && !r.open && r.points.length > 1 && r.points.map(function (p1, i) {
101
- return [p1, r.points[(i + 1) % r.points.length]];
102
- }).map(function (_ref7) {
103
- var _ref8 = _slicedToArray(_ref7, 2),
104
- p1 = _ref8[0],
105
- p2 = _ref8[1];
106
-
107
- return [(p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2];
108
- }).map(function (pa, i) {
109
- var proj = mat.clone().inverse().applyToPoint(pa[0] * iw, pa[1] * ih);
110
- return React.createElement(TransformGrabber, Object.assign({
111
- key: i
112
- }, mouseEvents, {
113
- onMouseDown: function onMouseDown(e) {
114
- if (e.button === 0) return onAddPolygonPoint(r, pa, i + 1);
115
- mouseEvents.onMouseDown(e);
116
- },
117
- style: {
118
- cursor: "copy",
119
- zIndex: 10,
120
- left: proj.x - 4,
121
- top: proj.y - 4,
122
- border: "2px dotted #fff",
123
- opacity: 0.5
124
- }
125
- }));
126
- }), r.type === "keypoints" && !dragWithPrimary && !zoomWithPrimary && !r.locked && r.highlighted && Object.entries(r.points).map(function (_ref9, i) {
127
- var _ref10 = _slicedToArray(_ref9, 2),
128
- keypointId = _ref10[0],
129
- _ref10$ = _ref10[1],
130
- px = _ref10$.x,
131
- py = _ref10$.y;
132
-
133
- var proj = mat.clone().inverse().applyToPoint(px * iw, py * ih);
134
- return React.createElement(Tooltip, {
135
- title: keypointId,
136
- key: i
137
- }, React.createElement(TransformGrabber, Object.assign({
138
- key: i
139
- }, mouseEvents, {
140
- onMouseDown: function onMouseDown(e) {
141
- if (e.button === 0 && (!r.open || i === 0)) return onBeginMoveKeypoint(r, keypointId);
142
- mouseEvents.onMouseDown(e);
143
- },
144
- style: {
145
- cursor: !r.open ? "move" : i === 0 ? "pointer" : undefined,
146
- zIndex: 10,
147
- pointerEvents: r.open && i === r.points.length - 1 ? "none" : undefined,
148
- left: proj.x - 4,
149
- top: proj.y - 4
150
- }
151
- })));
152
- }))));
153
- }, arePropsEqual);
154
- export var RegionSelectAndTransformBoxes = memo(function (props) {
155
- return props.regions.filter(function (r) {
156
- return r.visible || r.visible === undefined;
157
- }).filter(function (r) {
158
- return !r.locked;
159
- }).map(function (r, i) {
160
- return React.createElement(RegionSelectAndTransformBox, Object.assign({
161
- key: r.id
162
- }, props, {
163
- region: r
164
- }));
165
- });
166
- }, function (n, p) {
167
- return n.regions === p.regions && n.mat === p.mat;
168
- });
169
- export default RegionSelectAndTransformBoxes;
@@ -1,254 +0,0 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
- import React, { Fragment, useState, memo } from "react";
4
- import SidebarBoxContainer from "../SidebarBoxContainer";
5
- import { makeStyles } from "@mui/styles";
6
- import { createTheme, ThemeProvider } from "@mui/material/styles";
7
- import { styled } from "@mui/material/styles";
8
- import { grey } from "@mui/material/colors";
9
- import RegionIcon from "@mui/icons-material/PictureInPicture";
10
- import Grid from "@mui/material/Grid";
11
- import ReorderIcon from "@mui/icons-material/SwapVert";
12
- import PieChartIcon from "@mui/icons-material/PieChart";
13
- import TrashIcon from "@mui/icons-material/Delete";
14
- import LockIcon from "@mui/icons-material/Lock";
15
- import UnlockIcon from "@mui/icons-material/LockOpen";
16
- import VisibleIcon from "@mui/icons-material/Visibility";
17
- import VisibleOffIcon from "@mui/icons-material/VisibilityOff";
18
- import styles from "./styles";
19
- import classnames from "classnames";
20
- import isEqual from "lodash/isEqual";
21
- import useColors from "../hooks/use-colors";
22
- var theme = createTheme();
23
- var useStyles = makeStyles(function (theme) {
24
- return styles;
25
- });
26
- var HeaderSep = styled("div")(function (_ref) {
27
- var theme = _ref.theme;
28
- return {
29
- borderTop: "1px solid ".concat(grey[200]),
30
- marginTop: 2,
31
- marginBottom: 2
32
- };
33
- });
34
-
35
- var Chip = function Chip(_ref2) {
36
- var color = _ref2.color,
37
- text = _ref2.text;
38
- var classes = useStyles();
39
- return React.createElement("span", {
40
- className: classes.chip
41
- }, React.createElement("div", {
42
- className: "color",
43
- style: {
44
- backgroundColor: color
45
- }
46
- }), React.createElement("div", {
47
- className: "text"
48
- }, text));
49
- };
50
-
51
- var RowLayout = function RowLayout(_ref3) {
52
- var header = _ref3.header,
53
- highlighted = _ref3.highlighted,
54
- order = _ref3.order,
55
- classification = _ref3.classification,
56
- area = _ref3.area,
57
- tags = _ref3.tags,
58
- trash = _ref3.trash,
59
- lock = _ref3.lock,
60
- visible = _ref3.visible,
61
- onClick = _ref3.onClick;
62
- var classes = useStyles();
63
-
64
- var _useState = useState(false),
65
- _useState2 = _slicedToArray(_useState, 2),
66
- mouseOver = _useState2[0],
67
- changeMouseOver = _useState2[1];
68
-
69
- return React.createElement("div", {
70
- onClick: onClick,
71
- onMouseEnter: function onMouseEnter() {
72
- return changeMouseOver(true);
73
- },
74
- onMouseLeave: function onMouseLeave() {
75
- return changeMouseOver(false);
76
- },
77
- className: classnames(classes.row, {
78
- header: header,
79
- highlighted: highlighted
80
- })
81
- }, React.createElement(Grid, {
82
- container: true,
83
- alignItems: "center"
84
- }, React.createElement(Grid, {
85
- item: true,
86
- xs: 2
87
- }, React.createElement("div", {
88
- style: {
89
- textAlign: "right",
90
- paddingRight: 10
91
- }
92
- }, order)), React.createElement(Grid, {
93
- item: true,
94
- xs: 5
95
- }, classification), React.createElement(Grid, {
96
- item: true,
97
- xs: 2
98
- }, React.createElement("div", {
99
- style: {
100
- textAlign: "right",
101
- paddingRight: 6
102
- }
103
- }, area)), React.createElement(Grid, {
104
- item: true,
105
- xs: 1
106
- }, trash), React.createElement(Grid, {
107
- item: true,
108
- xs: 1
109
- }, lock), React.createElement(Grid, {
110
- item: true,
111
- xs: 1
112
- }, visible)));
113
- };
114
-
115
- var RowHeader = function RowHeader() {
116
- return React.createElement(RowLayout, {
117
- header: true,
118
- highlighted: false,
119
- order: React.createElement(ReorderIcon, {
120
- className: "icon"
121
- }),
122
- classification: React.createElement("div", {
123
- style: {
124
- paddingLeft: 10
125
- }
126
- }, "Class"),
127
- area: React.createElement(PieChartIcon, {
128
- className: "icon"
129
- }),
130
- trash: React.createElement(TrashIcon, {
131
- className: "icon"
132
- }),
133
- lock: React.createElement(LockIcon, {
134
- className: "icon"
135
- }),
136
- visible: React.createElement(VisibleIcon, {
137
- className: "icon"
138
- })
139
- });
140
- };
141
-
142
- var MemoRowHeader = memo(RowHeader);
143
-
144
- var Row = function Row(_ref4) {
145
- var r = _ref4.region,
146
- highlighted = _ref4.highlighted,
147
- onSelectRegion = _ref4.onSelectRegion,
148
- onDeleteRegion = _ref4.onDeleteRegion,
149
- onChangeRegion = _ref4.onChangeRegion,
150
- visible = _ref4.visible,
151
- locked = _ref4.locked,
152
- color = _ref4.color,
153
- cls = _ref4.cls,
154
- index = _ref4.index;
155
-
156
- var _useColors = useColors(),
157
- groupColor = _useColors.groupColor;
158
-
159
- var gc = groupColor(r.groupId);
160
- return React.createElement(RowLayout, {
161
- header: false,
162
- highlighted: highlighted,
163
- onClick: function onClick() {
164
- return onSelectRegion(r);
165
- },
166
- order: "#".concat(index + 1),
167
- classification: React.createElement(Chip, {
168
- text: cls || "",
169
- color: color || gc || "lime"
170
- }),
171
- area: "",
172
- trash: React.createElement(TrashIcon, {
173
- onClick: function onClick() {
174
- return onDeleteRegion(r);
175
- },
176
- className: "icon2"
177
- }),
178
- lock: r.locked ? React.createElement(LockIcon, {
179
- onClick: function onClick() {
180
- return onChangeRegion(_objectSpread({}, r, {
181
- locked: false
182
- }));
183
- },
184
- className: "icon2"
185
- }) : React.createElement(UnlockIcon, {
186
- onClick: function onClick() {
187
- return onChangeRegion(_objectSpread({}, r, {
188
- locked: true
189
- }));
190
- },
191
- className: "icon2"
192
- }),
193
- visible: r.visible || r.visible === undefined ? React.createElement(VisibleIcon, {
194
- onClick: function onClick() {
195
- return onChangeRegion(_objectSpread({}, r, {
196
- visible: false
197
- }));
198
- },
199
- className: "icon2"
200
- }) : React.createElement(VisibleOffIcon, {
201
- onClick: function onClick() {
202
- return onChangeRegion(_objectSpread({}, r, {
203
- visible: true
204
- }));
205
- },
206
- className: "icon2"
207
- })
208
- });
209
- };
210
-
211
- var MemoRow = memo(Row, function (prevProps, nextProps) {
212
- return prevProps.highlighted === nextProps.highlighted && prevProps.visible === nextProps.visible && prevProps.locked === nextProps.locked && prevProps.id === nextProps.id && prevProps.index === nextProps.index && prevProps.cls === nextProps.cls && prevProps.color === nextProps.color;
213
- });
214
- var emptyArr = [];
215
- export var RegionSelectorSidebarBox = function RegionSelectorSidebarBox(_ref5) {
216
- var _ref5$regions = _ref5.regions,
217
- regions = _ref5$regions === void 0 ? emptyArr : _ref5$regions,
218
- onDeleteRegion = _ref5.onDeleteRegion,
219
- onChangeRegion = _ref5.onChangeRegion,
220
- onSelectRegion = _ref5.onSelectRegion;
221
- var classes = useStyles();
222
- return React.createElement(ThemeProvider, {
223
- theme: theme
224
- }, React.createElement(SidebarBoxContainer, {
225
- title: "Regions",
226
- subTitle: "",
227
- icon: React.createElement(RegionIcon, {
228
- style: {
229
- color: grey[700]
230
- }
231
- }),
232
- expandedByDefault: true
233
- }, React.createElement("div", {
234
- className: classes.container
235
- }, React.createElement(MemoRowHeader, null), React.createElement(HeaderSep, null), regions.map(function (r, i) {
236
- return React.createElement(MemoRow, Object.assign({
237
- key: r.id
238
- }, r, {
239
- region: r,
240
- index: i,
241
- onSelectRegion: onSelectRegion,
242
- onDeleteRegion: onDeleteRegion,
243
- onChangeRegion: onChangeRegion
244
- }));
245
- }))));
246
- };
247
-
248
- var mapUsedRegionProperties = function mapUsedRegionProperties(r) {
249
- return [r.id, r.color, r.locked, r.visible, r.highlighted];
250
- };
251
-
252
- export default memo(RegionSelectorSidebarBox, function (prevProps, nextProps) {
253
- return isEqual((prevProps.regions || emptyArr).map(mapUsedRegionProperties), (nextProps.regions || emptyArr).map(mapUsedRegionProperties));
254
- });