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.
- package/README.md +4 -0
- package/dist/Annotation/logic/Annotation.d.ts +17 -0
- package/dist/Annotation/logic/Annotation.js +1 -0
- package/dist/Annotation/ui/AnnotationComponent.d.ts +24 -0
- package/dist/Annotation/ui/AnnotationComponent.js +1 -0
- package/dist/Annotation/ui/atoms/AnnoBar.d.ts +15 -0
- package/dist/Annotation/ui/atoms/AnnoBar.js +1 -0
- package/dist/Annotation/ui/atoms/DaviIcon.d.ts +9 -0
- package/dist/Annotation/ui/atoms/DaviIcon.js +19 -0
- package/dist/Annotation/ui/atoms/Edge.d.ts +17 -0
- package/dist/Annotation/ui/atoms/Edge.js +1 -0
- package/dist/Annotation/ui/atoms/Node.d.ts +17 -0
- package/dist/Annotation/ui/atoms/Node.js +1 -0
- package/dist/Annotation/ui/atoms/PolygonArea.d.ts +16 -0
- package/dist/Annotation/ui/atoms/PolygonArea.js +1 -0
- package/dist/Annotation/ui/tools/BBox.d.ts +21 -0
- package/dist/Annotation/ui/tools/BBox.js +1 -0
- package/dist/Annotation/ui/tools/Line.d.ts +21 -0
- package/dist/Annotation/ui/tools/Line.js +1 -0
- package/dist/Annotation/ui/tools/Point.d.ts +16 -0
- package/dist/Annotation/ui/tools/Point.js +1 -0
- package/dist/Annotation/ui/tools/Polygon.d.ts +23 -0
- package/dist/Annotation/ui/tools/Polygon.js +1 -0
- package/dist/Canvas/Canvas.d.ts +31 -0
- package/dist/Canvas/Canvas.js +1 -0
- package/dist/Canvas/LabelInput.d.ts +11 -0
- package/dist/Canvas/LabelInput.js +1 -0
- package/dist/IconButton.d.ts +25 -0
- package/dist/IconButton.js +1 -0
- package/dist/Sia.d.ts +33 -0
- package/dist/Sia.js +1 -0
- package/dist/Toolbar/Toolbar.d.ts +21 -0
- package/dist/Toolbar/Toolbar.js +1 -0
- package/dist/Toolbar/ToolbarItems/AccessibilityTools.d.ts +7 -0
- package/dist/Toolbar/ToolbarItems/AccessibilityTools.js +1 -0
- package/dist/Toolbar/ToolbarItems/AnnoToolSelector.d.ts +11 -0
- package/dist/Toolbar/ToolbarItems/AnnoToolSelector.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.d.ts +11 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.d.ts +11 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageTools.d.ts +13 -0
- package/dist/Toolbar/ToolbarItems/ImageTools.js +1 -0
- package/dist/Toolbar/ToolbarItems/Instructions.d.ts +2 -0
- package/dist/Toolbar/ToolbarItems/Instructions.js +1 -0
- package/dist/Toolbar/ToolbarItems/InstructionsModal.d.ts +6 -0
- package/dist/Toolbar/ToolbarItems/InstructionsModal.js +1 -0
- package/dist/assets/SIA-BV1tYu3P.css +1 -0
- package/dist/assets/brand-icons-Cu_C0hZ4.svg +1008 -0
- package/dist/assets/brand-icons-F3SPCeH1.woff +0 -0
- package/dist/assets/brand-icons-XL9sxUpA.woff2 +0 -0
- package/dist/assets/brand-icons-sqJ2Pg7a.eot +0 -0
- package/dist/assets/brand-icons-ubhWoxly.ttf +0 -0
- package/dist/assets/flags-DOLqOU7Y.png +0 -0
- package/dist/assets/icons-BOCtAERH.woff +0 -0
- package/dist/assets/icons-CHzK1VD9.eot +0 -0
- package/dist/assets/icons-D29ZQHHw.ttf +0 -0
- package/dist/assets/icons-Du6TOHnR.woff2 +0 -0
- package/dist/assets/icons-RwhydX30.svg +1518 -0
- package/dist/assets/node_modules/semantic-ui-css/semantic.min-Bvulf91l.css +346 -0
- package/dist/assets/outline-icons-BfdLr8tr.svg +366 -0
- package/dist/assets/outline-icons-DD8jm0uy.ttf +0 -0
- package/dist/assets/outline-icons-DInHoiqI.woff2 +0 -0
- package/dist/assets/outline-icons-LX8adJ4n.eot +0 -0
- package/dist/assets/outline-icons-aQ88nltS.woff +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -0
- package/dist/models/AnnotationMode.d.ts +11 -0
- package/dist/models/AnnotationMode.js +1 -0
- package/dist/models/AnnotationStatus.d.ts +8 -0
- package/dist/models/AnnotationStatus.js +1 -0
- package/dist/models/AnnotationTool.d.ts +7 -0
- package/dist/models/AnnotationTool.js +1 -0
- package/dist/models/CanvasAction.d.ts +28 -0
- package/dist/models/CanvasAction.js +1 -0
- package/dist/models/Direction.d.ts +7 -0
- package/dist/models/Direction.js +1 -0
- package/dist/models/EditorModes.d.ts +11 -0
- package/dist/models/EditorModes.js +1 -0
- package/dist/models/KeyAction.d.ts +22 -0
- package/dist/models/KeyAction.js +1 -0
- package/dist/models/NotificationType.d.ts +7 -0
- package/dist/models/NotificationType.js +1 -0
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.js +1 -0
- package/dist/stories/AnnotationTools.stories.d.ts +40 -0
- package/dist/stories/Canvas/Canvas.stories.d.ts +50 -0
- package/dist/stories/Canvas/CanvasOffset.d.ts +13 -0
- package/dist/stories/Canvas/CanvasWithOffset.stories.d.ts +36 -0
- package/dist/stories/FilterDropdown.stories.d.ts +19 -0
- package/dist/stories/MinimalSia.stories.d.ts +66 -0
- package/dist/stories/SIA/DemoWrapper.d.ts +8 -0
- package/dist/stories/SIA/DemoWrapper.stories.d.ts +27 -0
- package/dist/stories/SIA/SIA.stories.d.ts +72 -0
- package/dist/stories/Toolbar/ImageTools/TagLabel.stories.d.ts +21 -0
- package/dist/stories/Toolbar/Instructions.stories.d.ts +11 -0
- package/dist/stories/Toolbar/Toolbar.stories.d.ts +37 -0
- package/dist/stories/exampleData/exampleAnnotations.d.ts +8 -0
- package/dist/stories/exampleData/exampleExternalAnnotations.d.ts +8 -0
- package/dist/stories/exampleData/exampleImage.d.ts +2 -0
- package/dist/stories/exampleData/exampleLabels.d.ts +6 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.js +1 -0
- package/dist/utils/KeyMapper.d.ts +9 -0
- package/dist/utils/KeyMapper.js +1 -0
- package/dist/utils/TimeUtils.d.ts +4 -0
- package/dist/utils/TimeUtils.js +1 -0
- package/dist/utils/color.d.ts +2 -0
- package/dist/utils/color.js +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/mouse.d.ts +6 -0
- package/dist/utils/mouse.js +1 -0
- package/dist/utils/siaIcons.js +12 -0
- package/dist/utils/transform.d.ts +28 -0
- package/dist/utils/transform.js +1 -0
- package/dist/utils/uiConfig.js +1 -0
- package/dist/utils/windowViewport.d.ts +22 -0
- package/dist/utils/windowViewport.js +1 -0
- package/package.json +19 -16
- package/src/AnnoExampleViewer.jsx +18 -18
- package/src/Annotation/logic/Annotation.ts +24 -26
- package/src/Annotation/ui/AnnotationComponent.tsx +115 -86
- package/src/Annotation/ui/atoms/AnnoBar.tsx +51 -53
- package/src/Annotation/ui/atoms/DaviIcon.tsx +12 -22
- package/src/Annotation/ui/atoms/Edge.tsx +25 -22
- package/src/Annotation/ui/atoms/Node.tsx +56 -50
- package/src/Annotation/ui/atoms/PolygonArea.tsx +30 -35
- package/src/Annotation/ui/tools/BBox.tsx +136 -150
- package/src/Annotation/ui/tools/Line.tsx +94 -91
- package/src/Annotation/ui/tools/Point.tsx +19 -17
- package/src/Annotation/ui/tools/Polygon.tsx +126 -95
- package/src/Canvas/Canvas.tsx +748 -594
- package/src/Canvas/LabelInput.tsx +68 -45
- package/src/IconButton.tsx +119 -0
- package/src/InfoBoxes/AnnoDetails.jsx +53 -53
- package/src/InfoBoxes/AnnoStats.jsx +41 -41
- package/src/InfoBoxes/InfoBox.jsx +16 -16
- package/src/InfoBoxes/InfoBoxArea.jsx +32 -34
- package/src/InfoBoxes/LabelInfo.jsx +30 -30
- package/src/SIASettingButton.jsx +25 -25
- package/src/Sia.tsx +484 -0
- package/src/Toolbar/Toolbar.tsx +38 -31
- package/src/Toolbar/ToolbarItems/AccessibilityTools.tsx +26 -46
- package/src/Toolbar/ToolbarItems/AnnoToolSelector.tsx +53 -46
- package/src/Toolbar/ToolbarItems/ImageToolItems/ImageLabelInput.tsx +127 -0
- package/src/Toolbar/ToolbarItems/ImageToolItems/TagLabel.tsx +29 -28
- package/src/Toolbar/ToolbarItems/ImageTools.tsx +43 -40
- package/src/Toolbar/ToolbarItems/Instructions.tsx +47 -50
- package/src/Toolbar/ToolbarItems/InstructionsModal.tsx +8 -8
- package/src/index.ts +9 -13
- package/src/models/{AnnotationMode.tsx → AnnotationMode.ts} +1 -1
- package/src/models/{AnnotationStatus.tsx → AnnotationStatus.ts} +1 -1
- package/src/models/{AnnotationTool.tsx → AnnotationTool.ts} +1 -1
- package/src/models/{CanvasAction.tsx → CanvasAction.ts} +1 -1
- package/src/models/{Direction.tsx → Direction.ts} +1 -1
- package/src/models/{EditorModes.tsx → EditorModes.ts} +1 -1
- package/src/models/{KeyAction.tsx → KeyAction.ts} +3 -1
- package/src/models/NotificationType.ts +8 -0
- package/src/models/index.ts +6 -7
- package/src/siaDummyData.js +71 -71
- package/src/stories/AnnotationTools.mdx +27 -0
- package/src/stories/AnnotationTools.stories.tsx +104 -0
- package/src/stories/Canvas/Canvas.stories.tsx +59 -113
- package/src/stories/Canvas/CanvasOffset.tsx +54 -38
- package/src/stories/Canvas/CanvasWithOffset.stories.tsx +42 -113
- package/src/stories/FilterDropdown.stories.ts +13 -11
- package/src/stories/MinimalSIA.mdx +20 -0
- package/src/stories/MinimalSia.stories.tsx +90 -0
- package/src/stories/SIA/DemoWrapper.stories.tsx +71 -0
- package/src/stories/SIA/DemoWrapper.tsx +55 -0
- package/src/stories/SIA/SIA.stories.tsx +79 -45
- package/src/stories/Toolbar/ImageTools/TagLabel.stories.tsx +11 -12
- package/src/stories/Toolbar/Instructions.stories.tsx +11 -11
- package/src/stories/Toolbar/Toolbar.stories.tsx +32 -47
- package/src/stories/Welcome.mdx +5 -0
- package/src/stories/development/CoordinateSystems.mdx +25 -0
- package/src/stories/exampleData/exampleAnnotations.ts +65 -0
- package/src/stories/exampleData/exampleExternalAnnotations.ts +115 -0
- package/src/stories/{siaDummyData2.ts → exampleData/exampleImage.ts} +3 -264
- package/src/stories/exampleData/exampleLabels.ts +146 -0
- package/src/stories/main.scss +6 -0
- package/src/styles/style.scss +1 -26
- package/src/types.ts +67 -0
- package/src/utils/KeyMapper.ts +76 -74
- package/src/utils/TimeUtils.ts +11 -0
- package/src/utils/color.ts +25 -25
- package/src/utils/hist.js +22 -22
- package/src/utils/index.ts +2 -3
- package/src/utils/mouse.ts +45 -0
- package/src/utils/siaIcons.jsx +5 -7
- package/src/utils/transform.ts +186 -0
- package/src/utils/uiConfig.js +19 -22
- package/src/utils/windowViewport.ts +34 -0
- package/src/AnnoLabelInput.jsx +0 -109
- package/src/AnnoToolBar.jsx +0 -153
- package/src/Annotation/AnnoBar.jsx +0 -154
- package/src/Annotation/Annotation.jsx +0 -395
- package/src/Annotation/Annotation.scss +0 -47
- package/src/Annotation/BBox.jsx +0 -299
- package/src/Annotation/Edge.jsx +0 -92
- package/src/Annotation/InfSelectionArea.jsx +0 -72
- package/src/Annotation/Line.jsx +0 -68
- package/src/Annotation/Node.jsx +0 -282
- package/src/Annotation/Point.jsx +0 -200
- package/src/Annotation/Polygon.jsx +0 -404
- package/src/Annotation/logic/AnnotationUtils.ts +0 -30
- package/src/Canvas.jsx +0 -2194
- package/src/ImgBar.jsx +0 -131
- package/src/LabelInput.jsx +0 -238
- package/src/Prompt.jsx +0 -45
- package/src/SIAFilterButton.jsx +0 -186
- package/src/Sia.jsx +0 -478
- package/src/Sia2.tsx +0 -392
- package/src/SiaPopup.jsx +0 -15
- package/src/ToolBar.jsx +0 -463
- package/src/Toolbar/NavigationButtons.tsx +0 -21
- package/src/Toolbar/ToolbarItem.jsx +0 -30
- package/src/Toolbar/ToolbarItems/ImageToolItems/ImageLabel.tsx +0 -62
- package/src/Toolbar.css +0 -13
- package/src/ToolbarItem.jsx +0 -31
- package/src/filterTools.js +0 -5
- package/src/models/AllowedTools.tsx +0 -9
- package/src/models/AnnotationSettings.tsx +0 -9
- package/src/models/ExternalAnnotation.ts +0 -15
- package/src/models/Label.tsx +0 -8
- package/src/models/UiConfig.tsx +0 -6
- package/src/stories/Button.jsx +0 -54
- package/src/stories/Button.stories.js +0 -48
- package/src/stories/Header.jsx +0 -69
- package/src/stories/Header.stories.js +0 -28
- package/src/stories/Page.jsx +0 -87
- package/src/stories/Page.stories.js +0 -28
- package/src/stories/SIA2/DemoWrapper.stories.tsx +0 -167
- package/src/stories/SIA2/DemoWrapper.tsx +0 -54
- package/src/stories/SIA2/Sia2.stories.tsx +0 -62
- package/src/stories/Toolbar/ImageTools/ImageLabel.stories.tsx +0 -32
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +0 -5
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +0 -15
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +0 -3
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +0 -12
- package/src/stories/assets/youtube.svg +0 -4
- package/src/stories/button.css +0 -30
- package/src/stories/header.css +0 -32
- package/src/stories/lost.js +0 -54
- package/src/stories/page.css +0 -69
- package/src/stories/siaDummyData.js +0 -263
- package/src/stories/store.js +0 -18
- package/src/test.js +0 -7
- package/src/types/annoStatus.js +0 -4
- package/src/types/canvasActions.js +0 -58
- package/src/types/cursorstyles.js +0 -3
- package/src/types/modes.js +0 -9
- package/src/types/notificationType.js +0 -11
- package/src/types/toolbarEvents.js +0 -35
- package/src/types/tools.js +0 -17
- package/src/types.tsx +0 -11
- package/src/utils/annoConversion.js +0 -145
- package/src/utils/annoConversion2.ts +0 -145
- package/src/utils/colorlut.js +0 -68
- package/src/utils/constraints.js +0 -81
- package/src/utils/index.js +0 -1
- package/src/utils/keyActions.js +0 -113
- package/src/utils/mouse.js +0 -14
- package/src/utils/mouse2.ts +0 -35
- package/src/utils/transform.js +0 -336
- package/src/utils/transform2.ts +0 -343
- package/src/utils/windowViewport.js +0 -34
- package/src/utils/windowViewport2.ts +0 -50
package/src/types/modes.js
DELETED
|
@@ -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,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
|
-
};
|
package/src/types/tools.js
DELETED
|
@@ -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,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
|
-
};
|
package/src/utils/colorlut.js
DELETED
|
@@ -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
|
-
}
|
package/src/utils/constraints.js
DELETED
|
@@ -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
|
-
}
|
package/src/utils/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { uiConfig, SIA_INITIAL_UI_CONFIG } from "./uiConfig";
|
package/src/utils/keyActions.js
DELETED
|
@@ -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;
|
package/src/utils/mouse.js
DELETED
|
@@ -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
|
-
}
|
package/src/utils/mouse2.ts
DELETED
|
@@ -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
|
-
};
|