lost-sia 2.0.1-alpha8 → 3.0.0

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 (280) hide show
  1. package/README.md +4 -0
  2. package/dist/Annotation/logic/Annotation.d.ts +17 -0
  3. package/dist/Annotation/logic/Annotation.js +1 -0
  4. package/dist/Annotation/ui/AnnotationComponent.d.ts +24 -0
  5. package/dist/Annotation/ui/AnnotationComponent.js +1 -0
  6. package/dist/Annotation/ui/atoms/AnnoBar.d.ts +15 -0
  7. package/dist/Annotation/ui/atoms/AnnoBar.js +1 -0
  8. package/dist/Annotation/ui/atoms/DaviIcon.d.ts +9 -0
  9. package/dist/Annotation/ui/atoms/DaviIcon.js +19 -0
  10. package/dist/Annotation/ui/atoms/Edge.d.ts +17 -0
  11. package/dist/Annotation/ui/atoms/Edge.js +1 -0
  12. package/dist/Annotation/ui/atoms/Node.d.ts +17 -0
  13. package/dist/Annotation/ui/atoms/Node.js +1 -0
  14. package/dist/Annotation/ui/atoms/PolygonArea.d.ts +16 -0
  15. package/dist/Annotation/ui/atoms/PolygonArea.js +1 -0
  16. package/dist/Annotation/ui/tools/BBox.d.ts +21 -0
  17. package/dist/Annotation/ui/tools/BBox.js +1 -0
  18. package/dist/Annotation/ui/tools/Line.d.ts +21 -0
  19. package/dist/Annotation/ui/tools/Line.js +1 -0
  20. package/dist/Annotation/ui/tools/Point.d.ts +16 -0
  21. package/dist/Annotation/ui/tools/Point.js +1 -0
  22. package/dist/Annotation/ui/tools/Polygon.d.ts +23 -0
  23. package/dist/Annotation/ui/tools/Polygon.js +1 -0
  24. package/dist/Canvas/Canvas.d.ts +31 -0
  25. package/dist/Canvas/Canvas.js +1 -0
  26. package/dist/Canvas/LabelInput.d.ts +11 -0
  27. package/dist/Canvas/LabelInput.js +1 -0
  28. package/dist/IconButton.d.ts +25 -0
  29. package/dist/IconButton.js +1 -0
  30. package/dist/Sia.d.ts +33 -0
  31. package/dist/Sia.js +1 -0
  32. package/dist/Toolbar/Toolbar.d.ts +21 -0
  33. package/dist/Toolbar/Toolbar.js +1 -0
  34. package/dist/Toolbar/ToolbarItems/AccessibilityTools.d.ts +7 -0
  35. package/dist/Toolbar/ToolbarItems/AccessibilityTools.js +1 -0
  36. package/dist/Toolbar/ToolbarItems/AnnoToolSelector.d.ts +11 -0
  37. package/dist/Toolbar/ToolbarItems/AnnoToolSelector.js +1 -0
  38. package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.d.ts +11 -0
  39. package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.js +1 -0
  40. package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.d.ts +11 -0
  41. package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.js +1 -0
  42. package/dist/Toolbar/ToolbarItems/ImageTools.d.ts +13 -0
  43. package/dist/Toolbar/ToolbarItems/ImageTools.js +1 -0
  44. package/dist/Toolbar/ToolbarItems/Instructions.d.ts +2 -0
  45. package/dist/Toolbar/ToolbarItems/Instructions.js +1 -0
  46. package/dist/Toolbar/ToolbarItems/InstructionsModal.d.ts +6 -0
  47. package/dist/Toolbar/ToolbarItems/InstructionsModal.js +1 -0
  48. package/dist/assets/SIA-BV1tYu3P.css +1 -0
  49. package/dist/assets/brand-icons-Cu_C0hZ4.svg +1008 -0
  50. package/dist/assets/brand-icons-F3SPCeH1.woff +0 -0
  51. package/dist/assets/brand-icons-XL9sxUpA.woff2 +0 -0
  52. package/dist/assets/brand-icons-sqJ2Pg7a.eot +0 -0
  53. package/dist/assets/brand-icons-ubhWoxly.ttf +0 -0
  54. package/dist/assets/flags-DOLqOU7Y.png +0 -0
  55. package/dist/assets/icons-BOCtAERH.woff +0 -0
  56. package/dist/assets/icons-CHzK1VD9.eot +0 -0
  57. package/dist/assets/icons-D29ZQHHw.ttf +0 -0
  58. package/dist/assets/icons-Du6TOHnR.woff2 +0 -0
  59. package/dist/assets/icons-RwhydX30.svg +1518 -0
  60. package/dist/assets/node_modules/semantic-ui-css/semantic.min-Bvulf91l.css +346 -0
  61. package/dist/assets/outline-icons-BfdLr8tr.svg +366 -0
  62. package/dist/assets/outline-icons-DD8jm0uy.ttf +0 -0
  63. package/dist/assets/outline-icons-DInHoiqI.woff2 +0 -0
  64. package/dist/assets/outline-icons-LX8adJ4n.eot +0 -0
  65. package/dist/assets/outline-icons-aQ88nltS.woff +0 -0
  66. package/dist/index.d.ts +5 -0
  67. package/dist/index.js +1 -0
  68. package/dist/models/AnnotationMode.d.ts +11 -0
  69. package/dist/models/AnnotationMode.js +1 -0
  70. package/dist/models/AnnotationStatus.d.ts +8 -0
  71. package/dist/models/AnnotationStatus.js +1 -0
  72. package/dist/models/AnnotationTool.d.ts +7 -0
  73. package/dist/models/AnnotationTool.js +1 -0
  74. package/dist/models/CanvasAction.d.ts +28 -0
  75. package/dist/models/CanvasAction.js +1 -0
  76. package/dist/models/Direction.d.ts +7 -0
  77. package/dist/models/Direction.js +1 -0
  78. package/dist/models/EditorModes.d.ts +11 -0
  79. package/dist/models/EditorModes.js +1 -0
  80. package/dist/models/KeyAction.d.ts +22 -0
  81. package/dist/models/KeyAction.js +1 -0
  82. package/dist/models/NotificationType.d.ts +7 -0
  83. package/dist/models/NotificationType.js +1 -0
  84. package/dist/models/index.d.ts +6 -0
  85. package/dist/models/index.js +1 -0
  86. package/dist/stories/AnnotationTools.stories.d.ts +40 -0
  87. package/dist/stories/Canvas/Canvas.stories.d.ts +50 -0
  88. package/dist/stories/Canvas/CanvasOffset.d.ts +13 -0
  89. package/dist/stories/Canvas/CanvasWithOffset.stories.d.ts +36 -0
  90. package/dist/stories/FilterDropdown.stories.d.ts +19 -0
  91. package/dist/stories/MinimalSia.stories.d.ts +66 -0
  92. package/dist/stories/SIA/DemoWrapper.d.ts +8 -0
  93. package/dist/stories/SIA/DemoWrapper.stories.d.ts +27 -0
  94. package/dist/stories/SIA/SIA.stories.d.ts +72 -0
  95. package/dist/stories/Toolbar/ImageTools/TagLabel.stories.d.ts +21 -0
  96. package/dist/stories/Toolbar/Instructions.stories.d.ts +11 -0
  97. package/dist/stories/Toolbar/Toolbar.stories.d.ts +37 -0
  98. package/dist/stories/exampleData/exampleAnnotations.d.ts +8 -0
  99. package/dist/stories/exampleData/exampleExternalAnnotations.d.ts +8 -0
  100. package/dist/stories/exampleData/exampleImage.d.ts +2 -0
  101. package/dist/stories/exampleData/exampleLabels.d.ts +6 -0
  102. package/dist/types.d.ts +57 -0
  103. package/dist/types.js +1 -0
  104. package/dist/utils/KeyMapper.d.ts +9 -0
  105. package/dist/utils/KeyMapper.js +1 -0
  106. package/dist/utils/TimeUtils.d.ts +4 -0
  107. package/dist/utils/TimeUtils.js +1 -0
  108. package/dist/utils/color.d.ts +2 -0
  109. package/dist/utils/color.js +1 -0
  110. package/dist/utils/index.d.ts +2 -0
  111. package/dist/utils/index.js +1 -0
  112. package/dist/utils/mouse.d.ts +6 -0
  113. package/dist/utils/mouse.js +1 -0
  114. package/dist/utils/siaIcons.js +12 -0
  115. package/dist/utils/transform.d.ts +28 -0
  116. package/dist/utils/transform.js +1 -0
  117. package/dist/utils/uiConfig.js +1 -0
  118. package/dist/utils/windowViewport.d.ts +22 -0
  119. package/dist/utils/windowViewport.js +1 -0
  120. package/package.json +19 -16
  121. package/src/AnnoExampleViewer.jsx +18 -18
  122. package/src/Annotation/logic/Annotation.ts +24 -26
  123. package/src/Annotation/ui/AnnotationComponent.tsx +115 -86
  124. package/src/Annotation/ui/atoms/AnnoBar.tsx +51 -53
  125. package/src/Annotation/ui/atoms/DaviIcon.tsx +12 -22
  126. package/src/Annotation/ui/atoms/Edge.tsx +25 -22
  127. package/src/Annotation/ui/atoms/Node.tsx +56 -50
  128. package/src/Annotation/ui/atoms/PolygonArea.tsx +30 -35
  129. package/src/Annotation/ui/tools/BBox.tsx +136 -150
  130. package/src/Annotation/ui/tools/Line.tsx +94 -91
  131. package/src/Annotation/ui/tools/Point.tsx +19 -17
  132. package/src/Annotation/ui/tools/Polygon.tsx +126 -95
  133. package/src/Canvas/Canvas.tsx +748 -594
  134. package/src/Canvas/LabelInput.tsx +68 -45
  135. package/src/IconButton.tsx +119 -0
  136. package/src/InfoBoxes/AnnoDetails.jsx +53 -53
  137. package/src/InfoBoxes/AnnoStats.jsx +41 -41
  138. package/src/InfoBoxes/InfoBox.jsx +16 -16
  139. package/src/InfoBoxes/InfoBoxArea.jsx +32 -34
  140. package/src/InfoBoxes/LabelInfo.jsx +30 -30
  141. package/src/SIASettingButton.jsx +25 -25
  142. package/src/Sia.tsx +484 -0
  143. package/src/Toolbar/Toolbar.tsx +38 -31
  144. package/src/Toolbar/ToolbarItems/AccessibilityTools.tsx +26 -46
  145. package/src/Toolbar/ToolbarItems/AnnoToolSelector.tsx +53 -46
  146. package/src/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.tsx +127 -0
  147. package/src/Toolbar/ToolbarItems/ImageToolItems/TagLabel.tsx +29 -28
  148. package/src/Toolbar/ToolbarItems/ImageTools.tsx +43 -40
  149. package/src/Toolbar/ToolbarItems/Instructions.tsx +47 -50
  150. package/src/Toolbar/ToolbarItems/InstructionsModal.tsx +8 -8
  151. package/src/index.ts +9 -13
  152. package/src/models/{AnnotationMode.tsx → AnnotationMode.ts} +1 -1
  153. package/src/models/{AnnotationStatus.tsx → AnnotationStatus.ts} +1 -1
  154. package/src/models/{AnnotationTool.tsx → AnnotationTool.ts} +1 -1
  155. package/src/models/{CanvasAction.tsx → CanvasAction.ts} +1 -1
  156. package/src/models/{Direction.tsx → Direction.ts} +1 -1
  157. package/src/models/{EditorModes.tsx → EditorModes.ts} +1 -1
  158. package/src/models/{KeyAction.tsx → KeyAction.ts} +3 -1
  159. package/src/models/NotificationType.ts +8 -0
  160. package/src/models/index.ts +6 -7
  161. package/src/siaDummyData.js +71 -71
  162. package/src/stories/AnnotationTools.mdx +27 -0
  163. package/src/stories/AnnotationTools.stories.tsx +104 -0
  164. package/src/stories/Canvas/Canvas.stories.tsx +59 -113
  165. package/src/stories/Canvas/CanvasOffset.tsx +54 -38
  166. package/src/stories/Canvas/CanvasWithOffset.stories.tsx +42 -113
  167. package/src/stories/FilterDropdown.stories.ts +13 -11
  168. package/src/stories/MinimalSIA.mdx +20 -0
  169. package/src/stories/MinimalSia.stories.tsx +90 -0
  170. package/src/stories/SIA/DemoWrapper.stories.tsx +71 -0
  171. package/src/stories/SIA/DemoWrapper.tsx +55 -0
  172. package/src/stories/SIA/SIA.stories.tsx +79 -45
  173. package/src/stories/Toolbar/ImageTools/TagLabel.stories.tsx +11 -12
  174. package/src/stories/Toolbar/Instructions.stories.tsx +11 -11
  175. package/src/stories/Toolbar/Toolbar.stories.tsx +32 -47
  176. package/src/stories/Welcome.mdx +5 -0
  177. package/src/stories/development/CoordinateSystems.mdx +25 -0
  178. package/src/stories/exampleData/exampleAnnotations.ts +65 -0
  179. package/src/stories/exampleData/exampleExternalAnnotations.ts +115 -0
  180. package/src/stories/{siaDummyData2.ts → exampleData/exampleImage.ts} +3 -264
  181. package/src/stories/exampleData/exampleLabels.ts +146 -0
  182. package/src/stories/main.scss +6 -0
  183. package/src/styles/style.scss +1 -26
  184. package/src/types.ts +67 -0
  185. package/src/utils/KeyMapper.ts +76 -74
  186. package/src/utils/TimeUtils.ts +11 -0
  187. package/src/utils/color.ts +25 -25
  188. package/src/utils/hist.js +22 -22
  189. package/src/utils/index.ts +2 -3
  190. package/src/utils/mouse.ts +45 -0
  191. package/src/utils/siaIcons.jsx +5 -7
  192. package/src/utils/transform.ts +186 -0
  193. package/src/utils/uiConfig.js +19 -22
  194. package/src/utils/windowViewport.ts +34 -0
  195. package/src/AnnoLabelInput.jsx +0 -109
  196. package/src/AnnoToolBar.jsx +0 -153
  197. package/src/Annotation/AnnoBar.jsx +0 -154
  198. package/src/Annotation/Annotation.jsx +0 -395
  199. package/src/Annotation/Annotation.scss +0 -47
  200. package/src/Annotation/BBox.jsx +0 -299
  201. package/src/Annotation/Edge.jsx +0 -92
  202. package/src/Annotation/InfSelectionArea.jsx +0 -72
  203. package/src/Annotation/Line.jsx +0 -68
  204. package/src/Annotation/Node.jsx +0 -282
  205. package/src/Annotation/Point.jsx +0 -200
  206. package/src/Annotation/Polygon.jsx +0 -404
  207. package/src/Annotation/logic/AnnotationUtils.ts +0 -30
  208. package/src/Canvas.jsx +0 -2194
  209. package/src/ImgBar.jsx +0 -131
  210. package/src/LabelInput.jsx +0 -238
  211. package/src/Prompt.jsx +0 -45
  212. package/src/SIAFilterButton.jsx +0 -186
  213. package/src/Sia.jsx +0 -478
  214. package/src/Sia2.tsx +0 -392
  215. package/src/SiaPopup.jsx +0 -15
  216. package/src/ToolBar.jsx +0 -463
  217. package/src/Toolbar/NavigationButtons.tsx +0 -21
  218. package/src/Toolbar/ToolbarItem.jsx +0 -30
  219. package/src/Toolbar/ToolbarItems/ImageToolItems/ImageLabel.tsx +0 -62
  220. package/src/Toolbar.css +0 -13
  221. package/src/ToolbarItem.jsx +0 -31
  222. package/src/filterTools.js +0 -5
  223. package/src/models/AllowedTools.tsx +0 -9
  224. package/src/models/AnnotationSettings.tsx +0 -9
  225. package/src/models/ExternalAnnotation.ts +0 -15
  226. package/src/models/Label.tsx +0 -8
  227. package/src/models/UiConfig.tsx +0 -6
  228. package/src/stories/Button.jsx +0 -54
  229. package/src/stories/Button.stories.js +0 -48
  230. package/src/stories/Header.jsx +0 -69
  231. package/src/stories/Header.stories.js +0 -28
  232. package/src/stories/Page.jsx +0 -87
  233. package/src/stories/Page.stories.js +0 -28
  234. package/src/stories/SIA2/DemoWrapper.stories.tsx +0 -167
  235. package/src/stories/SIA2/DemoWrapper.tsx +0 -54
  236. package/src/stories/SIA2/Sia2.stories.tsx +0 -62
  237. package/src/stories/Toolbar/ImageTools/ImageLabel.stories.tsx +0 -32
  238. package/src/stories/assets/accessibility.png +0 -0
  239. package/src/stories/assets/accessibility.svg +0 -5
  240. package/src/stories/assets/addon-library.png +0 -0
  241. package/src/stories/assets/assets.png +0 -0
  242. package/src/stories/assets/avif-test-image.avif +0 -0
  243. package/src/stories/assets/context.png +0 -0
  244. package/src/stories/assets/discord.svg +0 -15
  245. package/src/stories/assets/docs.png +0 -0
  246. package/src/stories/assets/figma-plugin.png +0 -0
  247. package/src/stories/assets/github.svg +0 -3
  248. package/src/stories/assets/share.png +0 -0
  249. package/src/stories/assets/styling.png +0 -0
  250. package/src/stories/assets/testing.png +0 -0
  251. package/src/stories/assets/theming.png +0 -0
  252. package/src/stories/assets/tutorials.svg +0 -12
  253. package/src/stories/assets/youtube.svg +0 -4
  254. package/src/stories/button.css +0 -30
  255. package/src/stories/header.css +0 -32
  256. package/src/stories/lost.js +0 -54
  257. package/src/stories/page.css +0 -69
  258. package/src/stories/siaDummyData.js +0 -263
  259. package/src/stories/store.js +0 -18
  260. package/src/test.js +0 -7
  261. package/src/types/annoStatus.js +0 -4
  262. package/src/types/canvasActions.js +0 -58
  263. package/src/types/cursorstyles.js +0 -3
  264. package/src/types/modes.js +0 -9
  265. package/src/types/notificationType.js +0 -11
  266. package/src/types/toolbarEvents.js +0 -35
  267. package/src/types/tools.js +0 -17
  268. package/src/types.tsx +0 -11
  269. package/src/utils/annoConversion.js +0 -145
  270. package/src/utils/annoConversion2.ts +0 -145
  271. package/src/utils/colorlut.js +0 -68
  272. package/src/utils/constraints.js +0 -81
  273. package/src/utils/index.js +0 -1
  274. package/src/utils/keyActions.js +0 -113
  275. package/src/utils/mouse.js +0 -14
  276. package/src/utils/mouse2.ts +0 -35
  277. package/src/utils/transform.js +0 -336
  278. package/src/utils/transform2.ts +0 -343
  279. package/src/utils/windowViewport.js +0 -34
  280. package/src/utils/windowViewport2.ts +0 -50
@@ -1,395 +0,0 @@
1
- import React, { Component } from "react";
2
-
3
- import AnnoBar from "./AnnoBar";
4
- import Point from "./Point";
5
- import BBox from "./BBox";
6
- import Line from "./Line";
7
- import Polygon from "./Polygon";
8
- import * as modes from "../types/modes";
9
- import * as canvasActions from "../types/canvasActions";
10
- import * as annoStatus from "../types/annoStatus";
11
- import * as colorlut from "../utils/colorlut";
12
- import * as constraints from "../utils/constraints";
13
- import * as transform from "../utils/transform";
14
- import * as notificationType from "../types/notificationType";
15
-
16
- class Annotation extends Component {
17
- constructor(props) {
18
- super(props);
19
- this.state = {
20
- // mode: modes.VIEW,
21
- selAreaCss: "sel-area-off",
22
- visibility: "visible",
23
- anno: undefined,
24
- };
25
- this.myAnno = React.createRef();
26
- }
27
-
28
- componentWillMount() {
29
- this.setState({ anno: { ...this.props.data } });
30
- }
31
-
32
- componentDidUpdate(prevProps) {
33
- if (prevProps.data !== this.props.data) {
34
- this.setState({ anno: { ...this.props.data } });
35
- }
36
- if (prevProps.showSingleAnno !== this.props.showSingleAnno) {
37
- if (this.props.showSingleAnno === undefined) {
38
- this.setVisible(true);
39
- } else {
40
- if (this.props.showSingleAnno !== this.props.data.id) {
41
- this.setVisible(false);
42
- } else {
43
- this.setVisible(true);
44
- }
45
- }
46
- }
47
- if (this.props.showSingleAnno === undefined) {
48
- if (this.state.anno.visible !== undefined) {
49
- if (this.state.anno.visible) {
50
- this.setVisible(true);
51
- } else {
52
- this.setVisible(false);
53
- }
54
- }
55
- }
56
- }
57
-
58
- /*************
59
- * EVENTS *
60
- **************/
61
- onClick(e) {
62
- e.stopPropagation();
63
- this.performedAction(this.state.anno, canvasActions.ANNO_SELECTED);
64
- }
65
-
66
- onMouseDown(e) {
67
- e.preventDefault();
68
- if (this.props.onMouseDown) {
69
- this.props.onMouseDown(e);
70
- }
71
- }
72
-
73
- onContextMenu(e) {
74
- e.preventDefault();
75
- }
76
-
77
- handleModeChangeRequest(anno, mode) {
78
- this.setMode(anno, mode);
79
- }
80
-
81
- /*************
82
- * LOGIC *
83
- *************/
84
-
85
- /**
86
- * Trigger callback when this annotation performed an action
87
- *
88
- * @param {String} pAction
89
- */
90
- performedAction(anno, pAction) {
91
- if (this.props.onAction) {
92
- this.props.onAction(anno, pAction);
93
- }
94
- }
95
-
96
- notify(messageObj) {
97
- if (this.props.onNotification) {
98
- this.props.onNotification(messageObj);
99
- }
100
- }
101
-
102
- /**
103
- * Handle a performed action from a specific annotation
104
- *
105
- * @param {list} annoData - Annotation data that define a box, line,
106
- * polygon, point
107
- * @param {string} pAction - The performed action
108
- * @param {int} selectedNode - The node of the annotation that
109
- * was selected
110
- */
111
- performedAnnoAction(anno, pAction) {
112
- switch (pAction) {
113
- case canvasActions.ANNO_CREATED_FINAL_NODE:
114
- case canvasActions.ANNO_EDITED:
115
- case canvasActions.ANNO_MOVED:
116
- case canvasActions.ANNO_CREATED:
117
- // Check if annoation is within image bounds
118
- const corrected = transform.correctAnnotation(
119
- anno.data,
120
- this.props.svg,
121
- this.props.imageOffset,
122
- );
123
- let newAnno = { ...anno, data: corrected };
124
- const area = transform.getArea(
125
- corrected,
126
- this.props.svg,
127
- anno.type,
128
- this.props.image,
129
- );
130
- if (area !== undefined) {
131
- if (area < this.props.canvasConfig.annos.minArea) {
132
- this.notify({
133
- title: "Annotation to small",
134
- message:
135
- "Annotation area was " +
136
- Math.round(area) +
137
- "px but needs to be bigger than " +
138
- this.props.canvasConfig.annos.minArea +
139
- " px",
140
- type: notificationType.WARNING,
141
- });
142
- // newAnno = {...newAnno, mode: modes.DELETED}
143
- this.setMode(newAnno, modes.DELETED);
144
- } else {
145
- this.performedAction(newAnno, pAction);
146
- }
147
- } else {
148
- this.performedAction(newAnno, pAction);
149
- }
150
- break;
151
- default:
152
- this.performedAction(anno, pAction);
153
- break;
154
- }
155
- }
156
-
157
- setAnnoMode(anno, mode) {
158
- this.setState({
159
- anno: {
160
- ...anno,
161
- mode: mode,
162
- },
163
- });
164
- }
165
-
166
- setMode(anno, mode) {
167
- if (anno.mode !== mode) {
168
- switch (mode) {
169
- case modes.EDIT_LABEL:
170
- if (constraints.allowedToLabel(this.props.allowedActions, anno)) {
171
- this.setAnnoMode(anno, mode);
172
- }
173
- break;
174
- case modes.DELETED:
175
- // if(constraints.allowedToDelete(
176
- // this.props.allowedActions,
177
- // anno
178
- // )){
179
- this.setAnnoMode(anno, mode);
180
- const newAnno = {
181
- ...anno,
182
- // status: annoStatus.DELETED
183
- mode: mode.DELETED,
184
- };
185
- // this.setState({
186
- // anno: newAnno
187
- // })
188
- this.performedAction(newAnno, canvasActions.ANNO_DELETED);
189
- // }
190
- break;
191
- case modes.MOVE:
192
- this.setAnnoMode(anno, mode);
193
- this.performedAction(anno, canvasActions.ANNO_ENTER_MOVE_MODE);
194
- break;
195
- case modes.EDIT:
196
- this.setAnnoMode(anno, mode);
197
- this.performedAction(anno, canvasActions.ANNO_ENTER_EDIT_MODE);
198
- break;
199
- default:
200
- this.setAnnoMode(anno, mode);
201
- break;
202
- }
203
- }
204
- }
205
-
206
- setVisible(visible) {
207
- if (visible) {
208
- if (this.state.visibility !== "visible") {
209
- this.setState({ visibility: "visible" });
210
- }
211
- } else {
212
- if (this.state.visibility !== "hidden") {
213
- this.setState({ visibility: "hidden" });
214
- }
215
- }
216
- }
217
-
218
- isSelected() {
219
- if (constraints.allowedToEdit(this.props.allowedActions, this.state.anno)) {
220
- return this.props.selectedAnno === this.props.data.id;
221
- } else {
222
- return false;
223
- }
224
- }
225
-
226
- getResult() {
227
- return {
228
- ...this.state.anno,
229
- data: this.myAnno.current.state.anno,
230
- createMode: this.myAnno.current.state.mode === modes.CREATE,
231
- };
232
- }
233
-
234
- getLabel(lblId) {
235
- return this.props.possibleLabels.find((e) => {
236
- return e.id === lblId;
237
- });
238
- }
239
-
240
- getColor() {
241
- if (this.state.anno.labelIds && this.state.anno.labelIds.length > 0) {
242
- return this.getLabel(this.state.anno.labelIds[0]).color;
243
- } else {
244
- return colorlut.getDefaultColor();
245
- }
246
- }
247
-
248
- getStyle() {
249
- const color = this.getColor();
250
- if (this.isSelected()) {
251
- return {
252
- stroke: color,
253
- fill: color,
254
- strokeWidth: this.props.uiConfig.strokeWidth / this.props.svg.scale,
255
- r: this.props.uiConfig.nodeRadius / this.props.svg.scale,
256
- };
257
- } else {
258
- return {
259
- stroke: color,
260
- fill: color,
261
- strokeWidth: this.props.uiConfig.strokeWidth / this.props.svg.scale,
262
- r: this.props.uiConfig.nodeRadius / this.props.svg.scale,
263
- };
264
- }
265
- }
266
-
267
- getCssClass() {
268
- if (this.isSelected()) {
269
- return "selected";
270
- } else {
271
- return "not-selected";
272
- }
273
- }
274
-
275
- /*************
276
- * RENDERING *
277
- **************/
278
- renderAnno() {
279
- const type = this.props.type;
280
- // const allowedToEdit = constraints.allowedToEditBounds(
281
- // this.props.allowedActions,
282
- // this.state.anno
283
- // )
284
- if (this.state.anno){console.log('ANNOTATION: ', this.state.anno.mode, this.state.anno)}
285
- switch (type) {
286
- case "point":
287
- return (
288
- <Point
289
- ref={this.myAnno}
290
- anno={this.state.anno}
291
- style={this.getStyle()}
292
- className={this.getCssClass()}
293
- isSelected={this.isSelected()}
294
- svg={this.props.svg}
295
- onModeChangeRequest={(anno, mode) =>
296
- this.handleModeChangeRequest(anno, mode)
297
- }
298
- onAction={(anno, pAction) =>
299
- this.performedAnnoAction(anno, pAction)
300
- }
301
- />
302
- );
303
- case "bBox":
304
- return (
305
- <BBox
306
- ref={this.myAnno}
307
- anno={this.state.anno}
308
- style={this.getStyle()}
309
- className={this.getCssClass()}
310
- onNodeClick={(e, idx) => this.onNodeClick(e, idx)}
311
- onNodeMouseDown={(e, idx) => this.onNodeMouseDown(e, idx)}
312
- isSelected={this.isSelected()}
313
- svg={this.props.svg}
314
- onModeChangeRequest={(anno, mode) =>
315
- this.handleModeChangeRequest(anno, mode)
316
- }
317
- onAction={(anno, pAction) =>
318
- this.performedAnnoAction(anno, pAction)
319
- }
320
- />
321
- );
322
- case "polygon":
323
- return (
324
- <Polygon
325
- ref={this.myAnno}
326
- anno={this.state.anno}
327
- style={this.getStyle()}
328
- className={this.getCssClass()}
329
- onNodeClick={(e, idx) => this.onNodeClick(e, idx)}
330
- isSelected={this.isSelected()}
331
- svg={this.props.svg}
332
- onModeChangeRequest={(anno, mode) =>
333
- this.handleModeChangeRequest(anno, mode)
334
- }
335
- onAction={(anno, pAction) =>
336
- this.performedAnnoAction(anno, pAction)
337
- }
338
- />
339
- );
340
- case "line":
341
- return (
342
- <Line
343
- ref={this.myAnno}
344
- anno={this.state.anno}
345
- style={this.getStyle()}
346
- className={this.getCssClass()}
347
- isSelected={this.isSelected()}
348
- svg={this.props.svg}
349
- onAction={(anno, pAction) =>
350
- this.performedAnnoAction(anno, pAction)
351
- }
352
- onModeChangeRequest={(anno, mode) =>
353
- this.handleModeChangeRequest(anno, mode)
354
- }
355
- />
356
- );
357
- default:
358
- console.error("Wrong annoType for annotations: ", this.props.annoType);
359
- }
360
- }
361
-
362
- renderAnnoBar() {
363
- return (
364
- <AnnoBar
365
- anno={this.state.anno}
366
- mode={this.state.anno.mode}
367
- possibleLabels={this.props.possibleLabels}
368
- onClick={(e) => this.onClick(e)}
369
- style={this.getStyle()}
370
- svg={this.props.svg}
371
- defaultLabel={this.props.defaultLabel}
372
- />
373
- );
374
- }
375
- render() {
376
- if (!this.state.anno.data) return null;
377
- if (!this.props.possibleLabels) return null;
378
- if (this.state.anno.status === annoStatus.DELETED) return null;
379
- return (
380
- <g>
381
- <g
382
- visibility={this.state.visibility}
383
- onClick={(e) => this.onClick(e)}
384
- onMouseDown={(e) => this.onMouseDown(e)}
385
- onContextMenu={(e) => this.onContextMenu(e)}
386
- >
387
- {this.renderAnnoBar()}
388
- {this.renderAnno()}
389
- </g>
390
- </g>
391
- );
392
- }
393
- }
394
-
395
- export default Annotation;
@@ -1,47 +0,0 @@
1
- //*******************
2
- //* General styling *
3
- //*******************
4
- .sel-area-off {
5
- fill: none;
6
- }
7
-
8
- .sel-area-on {
9
- fill: blue;
10
- fill-opacity: 0.001;
11
- }
12
-
13
- //**********************
14
- //* Annotation styling *
15
- //**********************
16
- .selected {
17
- fill-opacity: 0.01;
18
- cursor: grab;
19
- }
20
-
21
- circle.selected {
22
- fill-opacity: 1;
23
- }
24
-
25
- .not-selected {
26
- fill-opacity: 0.3;
27
- }
28
-
29
- circle.not-selected {
30
- fill-opacity: 1;
31
- }
32
-
33
- //****************
34
- //* Node styling *
35
- //****************
36
- .node-halo-on {
37
- fill: orange;
38
- stroke: orange;
39
- fill-opacity: 0.1;
40
- stroke-opacity: 0.2;
41
- cursor: grab;
42
- }
43
-
44
- .node-halo-off {
45
- fill: none;
46
- stroke: none;
47
- }