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,3 +0,0 @@
1
- export const CREATE_NODE = "crosshair";
2
- export const EDIT_NODE = "crosshair";
3
- export const NORMAL_NODE = "default";
@@ -1,9 +0,0 @@
1
- export const VIEW = "view";
2
- export const EDIT = "edit";
3
- export const CREATE = "create";
4
- export const MOVE = "move";
5
- export const ADD = "add";
6
- export const REMOVE_NODE = "removeNode";
7
- export const CAMERA_MOVE = "cameraMove";
8
- export const EDIT_LABEL = "editLabel";
9
- export const DELETED = "deleted";
@@ -1,11 +0,0 @@
1
- const INFO = "info";
2
- const SUCCESS = "success";
3
- const WARNING = "warning";
4
- const ERROR = "error";
5
-
6
- export default {
7
- INFO,
8
- SUCCESS,
9
- WARNING,
10
- ERROR,
11
- };
@@ -1,35 +0,0 @@
1
- export const TOOL_SELECTED = "toolSelected";
2
- export const GET_NEXT_IMAGE = "getNextImage";
3
- export const GET_PREV_IMAGE = "getPrevImage";
4
- export const TASK_FINISHED = "taskFinished";
5
- export const SHOW_IMAGE_LABEL_INPUT = "showImageLabelInput";
6
- export const IMG_IS_JUNK = "imageIsJunk";
7
- export const DELETE_ALL_ANNOS = "deleteAllAnnos";
8
- export const SET_FULLSCREEN = "setFullscreen";
9
- export const SHOW_ANNO_DETAILS = "showAnnoDetails";
10
- export const SHOW_LABEL_INFO = "showLabelInfo";
11
- export const SHOW_ANNO_STATS = "showAnnoStats";
12
- export const EDIT_STROKE_WIDTH = "editStrokeWidth";
13
- export const EDIT_NODE_RADIUS = "editNodeRadius";
14
- export const APPLY_FILTER = "applyFilter";
15
- export const SAVE = "save";
16
- export const CLEAR_SAM_HELPER_ANNOS = "clearSamHelperAnnos"; // for clearing SAM helper annotations
17
-
18
- export default {
19
- TOOL_SELECTED,
20
- GET_NEXT_IMAGE,
21
- GET_PREV_IMAGE,
22
- TASK_FINISHED,
23
- SHOW_IMAGE_LABEL_INPUT,
24
- IMG_IS_JUNK,
25
- DELETE_ALL_ANNOS,
26
- SET_FULLSCREEN,
27
- SHOW_ANNO_DETAILS,
28
- SHOW_LABEL_INFO,
29
- SHOW_ANNO_STATS,
30
- EDIT_STROKE_WIDTH,
31
- EDIT_NODE_RADIUS,
32
- APPLY_FILTER,
33
- SAVE,
34
- CLEAR_POINTS: CLEAR_SAM_HELPER_ANNOS,
35
- };
@@ -1,17 +0,0 @@
1
- export const POINT = "point";
2
- export const BBOX = "bBox";
3
- export const LINE = "line";
4
- export const POLYGON = "polygon";
5
- export const POSITIVE_POINT = "positivePoint"; // for positive point SAM
6
- export const NEGATIVE_POINT = "negativePoint"; // for negative point SAM
7
- export const SAM_BBOX = "samBBox"; // bbox for guiding SAM
8
-
9
- export default {
10
- POINT,
11
- BBOX,
12
- LINE,
13
- POLYGON,
14
- POSITIVE_POINT,
15
- NEGATIVE_POINT,
16
- SAM_BBOX,
17
- };
package/src/types.tsx DELETED
@@ -1,11 +0,0 @@
1
- import Annotation from "./Annotation/logic/Annotation";
2
-
3
- export type Point = {
4
- x: number;
5
- y: number;
6
- };
7
-
8
- export type PolygonOperationResult = {
9
- polygonsToCreate: Point[][];
10
- annotationsToDelete: Annotation[];
11
- };
@@ -1,145 +0,0 @@
1
- import * as transform from "./transform";
2
- import * as annoStatus from "../types/annoStatus";
3
- import * as modes from "../types/modes";
4
- import { uniqueId } from "lodash-es";
5
-
6
- function _fixBackendAnnoElement(element) {
7
- return {
8
- ...element,
9
- id: element.id ? element.id : uniqueId("new"),
10
- annoTime: element.annoTime ? element.annoTime : 0.0,
11
- mode: element.mode ? element.mode : modes.VIEW,
12
- status: element.status ? element.status : annoStatus.DATABASE,
13
- labelIds: element.labelIds ? element.labelIds : [],
14
- };
15
- }
16
-
17
- export function fixBackendAnnos(backendAnnos) {
18
- let annos = {
19
- bBoxes: [
20
- ...backendAnnos.bBoxes.map((element) => {
21
- return _fixBackendAnnoElement(element);
22
- }),
23
- ],
24
- lines: [
25
- ...backendAnnos.lines.map((element) => {
26
- return _fixBackendAnnoElement(element);
27
- }),
28
- ],
29
- polygons: [
30
- ...backendAnnos.polygons.map((element) => {
31
- return _fixBackendAnnoElement(element);
32
- }),
33
- ],
34
- points: [
35
- ...backendAnnos.points.map((element) => {
36
- return _fixBackendAnnoElement(element);
37
- }),
38
- ],
39
- };
40
- // console.log("fixBackendAnnos", annos);
41
- return annos;
42
- }
43
-
44
- export function backendAnnosToCanvas(backendAnnos, imgSize, imgOffset) {
45
- let annos = [
46
- ...backendAnnos.bBoxes.map((element) => {
47
- return {
48
- ...element,
49
- type: "bBox",
50
- mode: element.mode ? element.mode : modes.VIEW,
51
- status: element.status ? element.status : annoStatus.DATABASE,
52
- };
53
- }),
54
- ...backendAnnos.lines.map((element) => {
55
- return {
56
- ...element,
57
- type: "line",
58
- mode: element.mode ? element.mode : modes.VIEW,
59
- status: element.status ? element.status : annoStatus.DATABASE,
60
- };
61
- }),
62
- ...backendAnnos.polygons.map((element) => {
63
- return {
64
- ...element,
65
- type: "polygon",
66
- mode: element.mode ? element.mode : modes.VIEW,
67
- status: element.status ? element.status : annoStatus.DATABASE,
68
- };
69
- }),
70
- ...backendAnnos.points.map((element) => {
71
- return {
72
- ...element,
73
- type: "point",
74
- mode: element.mode ? element.mode : modes.VIEW,
75
- status: element.status ? element.status : annoStatus.DATABASE,
76
- };
77
- }),
78
- ];
79
- annos = annos.map((el) => {
80
- return {
81
- ...el,
82
- data: transform.toSia(el.data, imgSize, el.type, imgOffset),
83
- };
84
- });
85
- // this.setState({annos: [...annos]})
86
- return annos;
87
- }
88
-
89
- export function canvasToBackendSingleAnno(
90
- anno,
91
- imgSize,
92
- removeFrontedId = false,
93
- imgOffset = { x: 0, y: 0 },
94
- ) {
95
- var annoId;
96
- if (removeFrontedId) {
97
- // If an annotation will be send to backend,
98
- // ids of new created annoations need to be set to
99
- // undefined.
100
- annoId = typeof anno.id === "string" ? undefined : anno.id;
101
- } else {
102
- annoId = anno.id;
103
- }
104
- return {
105
- ...anno,
106
- id: annoId,
107
- mode: modes.VIEW,
108
- data: transform.toBackend(anno.data, imgSize, anno.type, imgOffset),
109
- };
110
- }
111
-
112
- export function canvasToBackendAnnos(
113
- annos,
114
- imgSize,
115
- forBackendPost = false,
116
- imgOffset = { x: 0, y: 0 },
117
- ) {
118
- let myAnnos = annos;
119
- const bAnnos = myAnnos.map((el) => {
120
- return canvasToBackendSingleAnno(el, imgSize, forBackendPost, imgOffset);
121
- });
122
-
123
- const backendFormat = {
124
- bBoxes: bAnnos.filter((el) => {
125
- return el.type === "bBox";
126
- }),
127
- lines: bAnnos.filter((el) => {
128
- return el.type === "line";
129
- }),
130
- points: bAnnos.filter((el) => {
131
- return el.type === "point";
132
- }),
133
- polygons: bAnnos.filter((el) => {
134
- return el.type === "polygon";
135
- }),
136
- };
137
- return backendFormat;
138
- }
139
-
140
- export default {
141
- fixBackendAnnos,
142
- backendAnnosToCanvas,
143
- canvasToBackendSingleAnno,
144
- canvasToBackendAnnos,
145
- };
@@ -1,145 +0,0 @@
1
- import * as transform from "./transform";
2
- import * as annoStatus from "../types/annoStatus";
3
- import * as modes from "../types/modes";
4
- import _ from "lodash";
5
-
6
- function _fixBackendAnnoElement(element) {
7
- return {
8
- ...element,
9
- id: element.id ? element.id : _.uniqueId("new"),
10
- annoTime: element.annoTime ? element.annoTime : 0.0,
11
- mode: element.mode ? element.mode : modes.VIEW,
12
- status: element.status ? element.status : annoStatus.DATABASE,
13
- labelIds: element.labelIds ? element.labelIds : [],
14
- };
15
- }
16
-
17
- export function fixBackendAnnos(backendAnnos) {
18
- let annos = {
19
- bBoxes: [
20
- ...backendAnnos.bBoxes.map((element) => {
21
- return _fixBackendAnnoElement(element);
22
- }),
23
- ],
24
- lines: [
25
- ...backendAnnos.lines.map((element) => {
26
- return _fixBackendAnnoElement(element);
27
- }),
28
- ],
29
- polygons: [
30
- ...backendAnnos.polygons.map((element) => {
31
- return _fixBackendAnnoElement(element);
32
- }),
33
- ],
34
- points: [
35
- ...backendAnnos.points.map((element) => {
36
- return _fixBackendAnnoElement(element);
37
- }),
38
- ],
39
- };
40
- // console.log("fixBackendAnnos", annos);
41
- return annos;
42
- }
43
-
44
- export function backendAnnosToCanvas(backendAnnos, imgSize, imgOffset) {
45
- let annos = [
46
- ...backendAnnos.bBoxes.map((element) => {
47
- return {
48
- ...element,
49
- type: "bBox",
50
- mode: element.mode ? element.mode : modes.VIEW,
51
- status: element.status ? element.status : annoStatus.DATABASE,
52
- };
53
- }),
54
- ...backendAnnos.lines.map((element) => {
55
- return {
56
- ...element,
57
- type: "line",
58
- mode: element.mode ? element.mode : modes.VIEW,
59
- status: element.status ? element.status : annoStatus.DATABASE,
60
- };
61
- }),
62
- ...backendAnnos.polygons.map((element) => {
63
- return {
64
- ...element,
65
- type: "polygon",
66
- mode: element.mode ? element.mode : modes.VIEW,
67
- status: element.status ? element.status : annoStatus.DATABASE,
68
- };
69
- }),
70
- ...backendAnnos.points.map((element) => {
71
- return {
72
- ...element,
73
- type: "point",
74
- mode: element.mode ? element.mode : modes.VIEW,
75
- status: element.status ? element.status : annoStatus.DATABASE,
76
- };
77
- }),
78
- ];
79
- annos = annos.map((el) => {
80
- return {
81
- ...el,
82
- data: transform.toSia(el.data, imgSize, el.type, imgOffset),
83
- };
84
- });
85
- // this.setState({annos: [...annos]})
86
- return annos;
87
- }
88
-
89
- export function canvasToBackendSingleAnno(
90
- anno,
91
- imgSize,
92
- removeFrontedId = false,
93
- imgOffset = { x: 0, y: 0 },
94
- ) {
95
- var annoId;
96
- if (removeFrontedId) {
97
- // If an annotation will be send to backend,
98
- // ids of new created annoations need to be set to
99
- // undefined.
100
- annoId = typeof anno.id === "string" ? undefined : anno.id;
101
- } else {
102
- annoId = anno.id;
103
- }
104
- return {
105
- ...anno,
106
- id: annoId,
107
- mode: modes.VIEW,
108
- data: transform.toBackend(anno.data, imgSize, anno.type, imgOffset),
109
- };
110
- }
111
-
112
- export function canvasToBackendAnnos(
113
- annos,
114
- imgSize,
115
- forBackendPost = false,
116
- imgOffset = { x: 0, y: 0 },
117
- ) {
118
- let myAnnos = annos;
119
- const bAnnos = myAnnos.map((el) => {
120
- return canvasToBackendSingleAnno(el, imgSize, forBackendPost, imgOffset);
121
- });
122
-
123
- const backendFormat = {
124
- bBoxes: bAnnos.filter((el) => {
125
- return el.type === "bBox";
126
- }),
127
- lines: bAnnos.filter((el) => {
128
- return el.type === "line";
129
- }),
130
- points: bAnnos.filter((el) => {
131
- return el.type === "point";
132
- }),
133
- polygons: bAnnos.filter((el) => {
134
- return el.type === "polygon";
135
- }),
136
- };
137
- return backendFormat;
138
- }
139
-
140
- export default {
141
- fixBackendAnnos,
142
- backendAnnosToCanvas,
143
- canvasToBackendSingleAnno,
144
- canvasToBackendAnnos,
145
- };
@@ -1,68 +0,0 @@
1
- // const colors30 = ["#dc9769",
2
- // "#5c69d6",
3
- // "#51a630",
4
- // "#9a59cc",
5
- // "#a1bb37",
6
- // "#c043a6",
7
- // "#5fc666",
8
- // "#de4282",
9
- // "#58c699",
10
- // "#d2404e",
11
- // "#42c0c7",
12
- // "#d95130",
13
- // "#598cdd",
14
- // "#df8830",
15
- // "#50a2d1",
16
- // "#c8a73f",
17
- // "#d87ed5",
18
- // "#3e7f38",
19
- // "#af94d8",
20
- // "#7b8b2d",
21
- // "#635ea2",
22
- // "#a1b56d",
23
- // "#a93e62",
24
- // "#3e8d68",
25
- // "#df82ab",
26
- // "#616c2c",
27
- // "#955282",
28
- // "#91692d",
29
- // "#d47776",
30
- // "#a94e2c"]
31
-
32
- const colors20 = [
33
- "#46aed7",
34
- "#e28f81",
35
- "#50b897",
36
- "#88712f",
37
- "#9cb067",
38
- "#a4527d",
39
- "#a55046",
40
- "#6e90da",
41
- "#487b3b",
42
- "#6360a7",
43
- "#cd8fd3",
44
- "#d5a442",
45
- "#cf7635",
46
- "#da4971",
47
- "#a4b137",
48
- "#d44da4",
49
- "#aa54be",
50
- "#5ab74d",
51
- "#7166d9",
52
- "#d14734",
53
- ];
54
-
55
- const colors = colors20;
56
- const nColors = 20;
57
-
58
- export function getColor(n) {
59
- if (n) {
60
- return colors[n % nColors];
61
- } else {
62
- return getDefaultColor();
63
- }
64
- }
65
-
66
- export function getDefaultColor() {
67
- return colors[0];
68
- }
@@ -1,81 +0,0 @@
1
- import * as annoStatus from "../types/annoStatus";
2
-
3
- /**
4
- * Check if labels can be changed for a specific annotation
5
- *
6
- * @param allowedActions Actions that are allowed, read from config
7
- * @param anno Annotation that should be checked
8
- * @returns {Boolean}
9
- */
10
- export function allowedToLabel(allowedActions, anno) {
11
- if (allowedActions.label) {
12
- return true;
13
- // const status = anno.status
14
- // if (!status) return true
15
- // if (status !== annoStatus.NEW){
16
- // if (allowedActions.edit.label){
17
- // return true
18
- // } else {
19
- // // console.warn('You may not edit the label of this annotation as defined by config!', anno)
20
- // return false
21
- // }
22
- // } else {
23
- // // Return always true if labeling is allowed in general
24
- // // and annotation was not edited (it was NEW)
25
- // return true
26
- // }
27
- } else {
28
- // console.warn(
29
- // "You may not edit the label of this annotation as defined by config!",
30
- // anno,
31
- // );
32
- return false;
33
- }
34
- }
35
-
36
- // /**
37
- // * Check if config allows to delete a specific annotation.
38
- // *
39
- // * @param allowedActions Actions that are allowed, read from config
40
- // * @param anno Annotation that should be checked
41
- // * @returns {Boolean}
42
- // */
43
- // export function allowedToDelete(allowedActions, anno){
44
- // const status = anno.status
45
- // if (!status) return true
46
- // if (status !== annoStatus.NEW){
47
- // if(allowedActions.edit.delete){
48
- // return true
49
- // } else {
50
- // // console.warn('You may not delete this annotation as defined by config!', anno)
51
- // return false
52
- // }
53
- // } else {
54
- // return true
55
- // }
56
- // }
57
-
58
- /**
59
- * Check if config allows to edit a specific annotation.
60
- *
61
- * @param allowedActions Actions that are allowed, read from config
62
- * @param anno Annotation that should be checked
63
- * @returns {Boolean}
64
- */
65
- export function allowedToEdit(allowedActions, anno) {
66
- const status = anno.status;
67
- if (!status) return true;
68
- if (status !== annoStatus.NEW) {
69
- if (allowedActions.edit) {
70
- return true;
71
- } else {
72
- // console.warn(
73
- // "You may not edit bounds of this annotation as defined by config!",
74
- // anno,
75
- // );
76
- return false;
77
- }
78
- } else {
79
- return true;
80
- }
81
- }
@@ -1 +0,0 @@
1
- export { uiConfig, SIA_INITIAL_UI_CONFIG } from "./uiConfig";
@@ -1,113 +0,0 @@
1
- export const EDIT_LABEL = "editLabel";
2
- export const DELETE_ANNO = "deleteAnno";
3
- export const ENTER_ANNO_ADD_MODE = "enterAnnoAddMode";
4
- export const LEAVE_ANNO_ADD_MODE = "leaveAnnoAddMode";
5
- export const UNDO = "undo";
6
- export const REDO = "redo";
7
- export const TRAVERSE_ANNOS = "traverseAnnos";
8
- export const CAM_MOVE_UP = "camMoveUp";
9
- export const CAM_MOVE_DOWN = "camMoveDown";
10
- export const CAM_MOVE_LEFT = "camMoveLeft";
11
- export const CAM_MOVE_RIGHT = "camMoveRight";
12
- export const CAM_MOVE_STOP = "camMoveStop";
13
- export const COPY_ANNOTATION = "copyAnnotation";
14
- export const PASTE_ANNOTATION = "pasteAnnotation";
15
- export const RECREATE_ANNO = "recreateAnnotation";
16
- export const DELETE_ANNO_IN_CREATION = "deleteAnnoInCreation";
17
- export const TOGGLE_ANNO_COMMENT_INPUT = "toggleAnnoCommentInput";
18
-
19
- class KeyMapper {
20
- constructor(keyActionHandler = undefined) {
21
- this.controlDown = false;
22
- this.shiftDown = false;
23
- this.keyActionHandler = keyActionHandler;
24
- }
25
-
26
- keyDown(key) {
27
- switch (key) {
28
- case "Enter":
29
- this.triggerKeyAction(EDIT_LABEL);
30
- break;
31
- case "Delete":
32
- this.triggerKeyAction(DELETE_ANNO);
33
- break;
34
- case "Backspace":
35
- this.triggerKeyAction(DELETE_ANNO);
36
- break;
37
- case "Control":
38
- this.controlDown = true;
39
- this.triggerKeyAction(ENTER_ANNO_ADD_MODE);
40
- break;
41
- case "Shift":
42
- this.shiftDown = true;
43
- break;
44
- case "z":
45
- if (this.controlDown) {
46
- this.triggerKeyAction(UNDO);
47
- }
48
- break;
49
- case "r":
50
- if (this.controlDown) {
51
- this.triggerKeyAction(REDO);
52
- }
53
- break;
54
- case "Tab":
55
- this.triggerKeyAction(TRAVERSE_ANNOS);
56
- break;
57
- case "w":
58
- this.triggerKeyAction(CAM_MOVE_UP);
59
- break;
60
- case "s":
61
- this.triggerKeyAction(CAM_MOVE_DOWN);
62
- break;
63
- case "a":
64
- this.triggerKeyAction(CAM_MOVE_LEFT);
65
- break;
66
- case "d":
67
- this.triggerKeyAction(CAM_MOVE_RIGHT);
68
- break;
69
- case "e":
70
- this.triggerKeyAction(RECREATE_ANNO);
71
- break;
72
- case "c":
73
- if (this.controlDown) {
74
- this.triggerKeyAction(COPY_ANNOTATION);
75
- } else {
76
- this.triggerKeyAction(TOGGLE_ANNO_COMMENT_INPUT);
77
- }
78
- break;
79
- case "v":
80
- if (this.controlDown) {
81
- this.triggerKeyAction(PASTE_ANNOTATION);
82
- }
83
- break;
84
- case "Escape":
85
- this.triggerKeyAction(DELETE_ANNO_IN_CREATION);
86
- break;
87
- default:
88
- break;
89
- }
90
- }
91
-
92
- keyUp(key) {
93
- switch (key) {
94
- case "Control":
95
- this.controlDown = false;
96
- this.triggerKeyAction(LEAVE_ANNO_ADD_MODE);
97
- break;
98
- case "Shift":
99
- this.shiftDown = false;
100
- break;
101
- default:
102
- break;
103
- }
104
- }
105
-
106
- triggerKeyAction(keyAction) {
107
- if (this.keyActionHandler) {
108
- this.keyActionHandler(keyAction);
109
- }
110
- }
111
- }
112
-
113
- export default KeyMapper;
@@ -1,14 +0,0 @@
1
- export function getMousePosition(e, svg) {
2
- const absPos = getMousePositionAbs(e, svg);
3
- return {
4
- x: absPos.x / svg.scale - svg.translateX,
5
- y: absPos.y / svg.scale - svg.translateY,
6
- };
7
- }
8
-
9
- export function getMousePositionAbs(e, svg) {
10
- return {
11
- x: e.pageX - svg.left,
12
- y: e.pageY - svg.top,
13
- };
14
- }
@@ -1,35 +0,0 @@
1
- import { Point } from "../types";
2
-
3
- /**
4
- * returns the position of the pouse relative to the (scaled) stage
5
- * the coordinates are
6
- * @param e the mouse event
7
- * @param pageToStageOffset vector2 from the start of the page to the start of the stage
8
- * @param svgScale the scaling factor of the canvas svg element (can be zoomed in by user)
9
- * @returns
10
- */
11
- const getAntiScaledMouseStagePosition = (
12
- e: MouseEvent,
13
- pageToStageOffset: Point,
14
- svgScale: number,
15
- ): Point => {
16
- // get page coordinates of current mouse position relative to the start of the page
17
- // https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_view/Coordinate_systems
18
- // convert them into stage coordinates by subtrating the offset between image and page
19
- const mousePositionInStageCoordinates: Point = {
20
- x: e.pageX - pageToStageOffset.x,
21
- y: e.pageY - pageToStageOffset.y,
22
- };
23
-
24
- // now we need to counter the stage scaling, because it will be automatically applied when rendering the annotation coordinates
25
- const antiScaledMousePositionInStageCoordinates: Point = {
26
- x: mousePositionInStageCoordinates.x / svgScale,
27
- y: mousePositionInStageCoordinates.y / svgScale,
28
- };
29
-
30
- return antiScaledMousePositionInStageCoordinates;
31
- };
32
-
33
- export default {
34
- getAntiScaledMouseStagePosition,
35
- };