lost-sia 2.0.1-alpha7 → 2.0.1-alpha9
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/dist/AnnoExampleViewer.cjs +1 -0
- package/dist/AnnoExampleViewer.js +1 -0
- package/dist/AnnoLabelInput.cjs +1 -0
- package/dist/AnnoLabelInput.js +1 -0
- package/dist/AnnoToolBar.cjs +19 -0
- package/dist/AnnoToolBar.js +19 -0
- package/dist/Annotation/AnnoBar.cjs +1 -0
- package/dist/Annotation/AnnoBar.js +1 -0
- package/dist/Annotation/Annotation.cjs +1 -0
- package/dist/Annotation/Annotation.js +1 -0
- package/dist/Annotation/BBox.cjs +1 -0
- package/dist/Annotation/BBox.js +1 -0
- package/dist/Annotation/Edge.cjs +1 -0
- package/dist/Annotation/Edge.js +1 -0
- package/dist/Annotation/InfSelectionArea.cjs +1 -0
- package/dist/Annotation/InfSelectionArea.js +1 -0
- package/dist/Annotation/Line.cjs +1 -0
- package/dist/Annotation/Line.js +1 -0
- package/dist/Annotation/Node.cjs +1 -0
- package/dist/Annotation/Node.js +1 -0
- package/dist/Annotation/Point.cjs +1 -0
- package/dist/Annotation/Point.js +1 -0
- package/dist/Annotation/Polygon.cjs +1 -0
- package/dist/Annotation/Polygon.js +1 -0
- package/dist/Annotation/logic/Annotation.cjs +1 -0
- package/dist/Annotation/logic/Annotation.js +1 -0
- package/dist/Annotation/logic/AnnotationUtils.cjs +1 -0
- package/dist/Annotation/logic/AnnotationUtils.js +1 -0
- package/dist/Annotation/ui/AnnotationComponent.cjs +1 -0
- package/dist/Annotation/ui/AnnotationComponent.js +1 -0
- package/dist/Annotation/ui/atoms/AnnoBar.cjs +1 -0
- package/dist/Annotation/ui/atoms/AnnoBar.js +1 -0
- package/dist/Annotation/ui/atoms/DaviIcon.cjs +19 -0
- package/dist/Annotation/ui/atoms/DaviIcon.js +19 -0
- package/dist/Annotation/ui/atoms/Edge.cjs +1 -0
- package/dist/Annotation/ui/atoms/Edge.js +1 -0
- package/dist/Annotation/ui/atoms/Node.cjs +1 -0
- package/dist/Annotation/ui/atoms/Node.js +1 -0
- package/dist/Annotation/ui/atoms/PolygonArea.cjs +1 -0
- package/dist/Annotation/ui/atoms/PolygonArea.js +1 -0
- package/dist/Annotation/ui/tools/BBox.cjs +1 -0
- package/dist/Annotation/ui/tools/BBox.js +1 -0
- package/dist/Annotation/ui/tools/Line.cjs +1 -0
- package/dist/Annotation/ui/tools/Line.js +1 -0
- package/dist/Annotation/ui/tools/Point.cjs +1 -0
- package/dist/Annotation/ui/tools/Point.js +1 -0
- package/dist/Annotation/ui/tools/Polygon.cjs +1 -0
- package/dist/Annotation/ui/tools/Polygon.js +1 -0
- package/dist/Canvas/Canvas.cjs +1 -0
- package/dist/Canvas/Canvas.js +1 -0
- package/dist/Canvas/LabelInput.cjs +1 -0
- package/dist/Canvas/LabelInput.js +1 -0
- package/dist/Canvas.cjs +1 -0
- package/dist/Canvas.js +1 -0
- package/dist/ImgBar.cjs +1 -0
- package/dist/ImgBar.js +1 -0
- package/dist/InfoBoxes/AnnoDetails.cjs +1 -0
- package/dist/InfoBoxes/AnnoDetails.js +1 -0
- package/dist/InfoBoxes/AnnoStats.cjs +1 -0
- package/dist/InfoBoxes/AnnoStats.js +1 -0
- package/dist/InfoBoxes/InfoBox.cjs +1 -0
- package/dist/InfoBoxes/InfoBox.js +1 -0
- package/dist/InfoBoxes/InfoBoxArea.cjs +1 -0
- package/dist/InfoBoxes/InfoBoxArea.js +1 -0
- package/dist/InfoBoxes/LabelInfo.cjs +1 -0
- package/dist/InfoBoxes/LabelInfo.js +1 -0
- package/dist/LabelInput.cjs +1 -0
- package/dist/LabelInput.js +1 -0
- package/dist/Prompt.cjs +1 -0
- package/dist/Prompt.js +1 -0
- package/dist/SIAFilterButton.cjs +1 -0
- package/dist/SIAFilterButton.js +1 -0
- package/dist/SIASettingButton.cjs +1 -0
- package/dist/SIASettingButton.js +1 -0
- package/dist/Sia.cjs +1 -0
- package/dist/Sia.js +1 -0
- package/dist/Sia2.cjs +1 -0
- package/dist/Sia2.js +1 -0
- package/dist/SiaPopup.cjs +1 -0
- package/dist/SiaPopup.js +1 -0
- package/dist/ToolBar.cjs +1 -0
- package/dist/ToolBar.js +1 -0
- package/dist/Toolbar/NavigationButtons.cjs +1 -0
- package/dist/Toolbar/NavigationButtons.js +1 -0
- package/dist/Toolbar/Toolbar.cjs +1 -0
- package/dist/Toolbar/Toolbar.js +1 -0
- package/dist/Toolbar/ToolbarItems/AccessibilityTools.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/AccessibilityTools.js +1 -0
- package/dist/Toolbar/ToolbarItems/AnnoToolSelector.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/AnnoToolSelector.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabel.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/ImageLabel.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/ImageToolItems/TagLabel.js +1 -0
- package/dist/Toolbar/ToolbarItems/ImageTools.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/ImageTools.js +1 -0
- package/dist/Toolbar/ToolbarItems/Instructions.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/Instructions.js +1 -0
- package/dist/Toolbar/ToolbarItems/InstructionsModal.cjs +1 -0
- package/dist/Toolbar/ToolbarItems/InstructionsModal.js +1 -0
- package/dist/ToolbarItem.cjs +1 -0
- package/dist/ToolbarItem.js +1 -0
- package/dist/_virtual/_commonjsHelpers.cjs +1 -0
- package/dist/_virtual/_commonjsHelpers.js +1 -0
- package/dist/_virtual/lodash.cjs +1 -0
- package/dist/_virtual/lodash.js +1 -0
- package/dist/assets/Annotation/Annotation-Cd5Ua5TG.css +1 -0
- package/dist/assets/SIA-BV1tYu3P.css +1 -0
- package/dist/assets/Toolbar-Cp1xyYeH.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/filterTools.cjs +1 -0
- package/dist/filterTools.js +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.js +1 -0
- package/dist/models/AllowedTools.cjs +1 -0
- package/dist/models/AllowedTools.js +1 -0
- package/dist/models/AnnotationMode.cjs +1 -0
- package/dist/models/AnnotationMode.js +1 -0
- package/dist/models/AnnotationSettings.cjs +1 -0
- package/dist/models/AnnotationSettings.js +1 -0
- package/dist/models/AnnotationStatus.cjs +1 -0
- package/dist/models/AnnotationStatus.js +1 -0
- package/dist/models/AnnotationTool.cjs +1 -0
- package/dist/models/AnnotationTool.js +1 -0
- package/dist/models/CanvasAction.cjs +1 -0
- package/dist/models/CanvasAction.js +1 -0
- package/dist/models/Direction.cjs +1 -0
- package/dist/models/Direction.js +1 -0
- package/dist/models/EditorModes.cjs +1 -0
- package/dist/models/EditorModes.js +1 -0
- package/dist/models/ExternalAnnotation.cjs +1 -0
- package/dist/models/ExternalAnnotation.js +1 -0
- package/dist/models/KeyAction.cjs +1 -0
- package/dist/models/KeyAction.js +1 -0
- package/dist/models/Label.cjs +1 -0
- package/dist/models/Label.js +1 -0
- package/dist/models/UiConfig.cjs +1 -0
- package/dist/models/UiConfig.js +1 -0
- package/dist/models/index.cjs +1 -0
- package/dist/models/index.js +1 -0
- package/dist/siaDummyData.cjs +7 -0
- package/dist/siaDummyData.js +7 -0
- package/dist/stories/Canvas/CanvasOffset.cjs +1 -0
- package/dist/stories/Canvas/CanvasOffset.js +1 -0
- package/dist/stories/FilterDropdown.stories.cjs +1 -0
- package/dist/stories/FilterDropdown.stories.js +1 -0
- package/dist/stories/SIA2/DemoWrapper.cjs +1 -0
- package/dist/stories/SIA2/DemoWrapper.js +1 -0
- package/dist/stories/siaDummyData.cjs +1 -0
- package/dist/stories/siaDummyData.js +1 -0
- package/dist/stories/siaDummyData2.cjs +7 -0
- package/dist/stories/siaDummyData2.js +7 -0
- package/dist/types/annoStatus.cjs +1 -0
- package/dist/types/annoStatus.js +1 -0
- package/dist/types/canvasActions.cjs +1 -0
- package/dist/types/canvasActions.js +1 -0
- package/dist/types/cursorstyles.cjs +1 -0
- package/dist/types/cursorstyles.js +1 -0
- package/dist/types/modes.cjs +1 -0
- package/dist/types/modes.js +1 -0
- package/dist/types/notificationType.cjs +1 -0
- package/dist/types/notificationType.js +1 -0
- package/dist/types/toolbarEvents.cjs +1 -0
- package/dist/types/toolbarEvents.js +1 -0
- package/dist/types/tools.cjs +1 -0
- package/dist/types/tools.js +1 -0
- package/dist/types.cjs +1 -0
- package/dist/types.js +1 -0
- package/dist/utils/KeyMapper.cjs +1 -0
- package/dist/utils/KeyMapper.js +1 -0
- package/dist/utils/annoConversion.cjs +1 -0
- package/dist/utils/annoConversion.js +1 -0
- package/dist/utils/annoConversion2.cjs +1 -0
- package/dist/utils/annoConversion2.js +1 -0
- package/dist/utils/color.cjs +1 -0
- package/dist/utils/color.js +1 -0
- package/dist/utils/colorlut.cjs +1 -0
- package/dist/utils/colorlut.js +1 -0
- package/dist/utils/constraints.cjs +1 -0
- package/dist/utils/constraints.js +1 -0
- package/dist/utils/hist.cjs +1 -0
- package/dist/utils/hist.js +1 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/keyActions.cjs +1 -0
- package/dist/utils/keyActions.js +1 -0
- package/dist/utils/mouse.cjs +1 -0
- package/dist/utils/mouse.js +1 -0
- package/dist/utils/mouse2.cjs +1 -0
- package/dist/utils/mouse2.js +1 -0
- package/dist/utils/siaIcons.cjs +12 -0
- package/dist/utils/siaIcons.js +12 -0
- package/dist/utils/transform.cjs +1 -0
- package/dist/utils/transform.js +1 -0
- package/dist/utils/transform2.cjs +1 -0
- package/dist/utils/transform2.js +1 -0
- package/dist/utils/uiConfig.cjs +1 -0
- package/dist/utils/uiConfig.js +1 -0
- package/dist/utils/windowViewport.cjs +1 -0
- package/dist/utils/windowViewport.js +1 -0
- package/dist/utils/windowViewport2.cjs +1 -0
- package/dist/utils/windowViewport2.js +1 -0
- package/package.json +3 -4
- package/src/Canvas.jsx +4 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),s=require("./Prompt.cjs");require("react");const t=require("semantic-ui-react"),m=e=>{const l=i=>{i.stopPropagation(),e.onRequestExample&&e.onRequestExample()},r=()=>{if(!e.lbl||!e.exampleImg)return null;const i=n.jsxs("div",{children:[e.lbl.description,n.jsx("h4",{children:"Comment:"}),e.exampleImg.anno?e.exampleImg.anno.comment:"no comment"]});return n.jsx("div",{children:n.jsxs(t.Card,{children:[n.jsx(t.Image,{onClick:a=>l(a),src:e.exampleImg.img,wrapped:!0,ui:!1}),n.jsxs(t.Card.Content,{children:[n.jsx(t.Card.Header,{children:e.lbl.label}),n.jsx(t.Card.Description,{children:i})]})]})})},c=()=>{e.onClose&&e.onClose()};return n.jsx(s,{onClick:()=>{c()},active:e.active,content:r()})};module.exports=m;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as n,jsxs as i}from"react/jsx-runtime";import c from"./Prompt.js";import"react";import{Card as t,Image as d}from"semantic-ui-react";const s=e=>{const m=l=>{l.stopPropagation(),e.onRequestExample&&e.onRequestExample()},o=()=>{if(!e.lbl||!e.exampleImg)return null;const l=i("div",{children:[e.lbl.description,n("h4",{children:"Comment:"}),e.exampleImg.anno?e.exampleImg.anno.comment:"no comment"]});return n("div",{children:i(t,{children:[n(d,{onClick:a=>m(a),src:e.exampleImg.img,wrapped:!0,ui:!1}),i(t.Content,{children:[n(t.Header,{children:e.lbl.label}),n(t.Description,{children:l})]})]})})},r=()=>{e.onClose&&e.onClose()};return n(c,{onClick:()=>{r()},active:e.active,content:o()})};export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),i=require("react"),p=require("./LabelInput.cjs"),l=require("./utils/constraints.cjs"),t=require("./types/annoStatus.cjs");class n extends i.Component{constructor(s){super(s),this.state={top:400,left:100,label:void 0,visibility:"hidden",possibleLabels:[]},this.inputGroupRef=i.createRef()}componentWillMount(){this.setPosition()}componentDidUpdate(s){this.props.visible&&this.setPosition()}setPosition(){if(this.props.mousePos){const s=this.props.mousePos.y+this.props.svg.top-10,e=this.props.mousePos.x+this.props.svg.left-10;(this.state.top!==s||this.state.left!==e)&&this.setState({top:s,left:e})}}onClose(){this.props.onClose&&this.props.onClose()}annoLabelUpdate(s){this.props.onLabelUpdate&&this.props.onLabelUpdate(s)}updateAnnoLabel(s){l.allowedToLabel(this.props.allowedActions,this.props.selectedAnno)&&this.annoLabelUpdate({...this.props.selectedAnno,labelIds:s,status:this.props.selectedAnno.status!==t.NEW?t.CHANGED:t.NEW})}render(){return this.props.visible?o.jsx("div",{ref:this.inputGroupRef,style:{position:"fixed",top:this.state.top,left:this.state.left},children:o.jsx(p,{svg:this.props.svg,onClose:()=>this.onClose(),initLabelIds:this.props.selectedAnno.labelIds,relatedId:this.props.selectedAnno.id,visible:this.props.visible,onLabelUpdate:s=>this.updateAnnoLabel(s),possibleLabelsProp:this.props.possibleLabels,multilabels:this.props.multilabels,disabled:!this.props.allowedActions.label,renderPopup:!0,focusOnRender:!0,open:!0,defaultLabel:this.props.defaultLabel})}):null}}module.exports=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import i,{Component as p}from"react";import l from"./LabelInput.js";import{allowedToLabel as n}from"./utils/constraints.js";import{CHANGED as r,NEW as o}from"./types/annoStatus.js";class c extends p{constructor(s){super(s),this.state={top:400,left:100,label:void 0,visibility:"hidden",possibleLabels:[]},this.inputGroupRef=i.createRef()}componentWillMount(){this.setPosition()}componentDidUpdate(s){this.props.visible&&this.setPosition()}setPosition(){if(this.props.mousePos){const s=this.props.mousePos.y+this.props.svg.top-10,t=this.props.mousePos.x+this.props.svg.left-10;(this.state.top!==s||this.state.left!==t)&&this.setState({top:s,left:t})}}onClose(){this.props.onClose&&this.props.onClose()}annoLabelUpdate(s){this.props.onLabelUpdate&&this.props.onLabelUpdate(s)}updateAnnoLabel(s){n(this.props.allowedActions,this.props.selectedAnno)&&this.annoLabelUpdate({...this.props.selectedAnno,labelIds:s,status:this.props.selectedAnno.status!==o?r:o})}render(){return this.props.visible?e("div",{ref:this.inputGroupRef,style:{position:"fixed",top:this.state.top,left:this.state.left},children:e(l,{svg:this.props.svg,onClose:()=>this.onClose(),initLabelIds:this.props.selectedAnno.labelIds,relatedId:this.props.selectedAnno.id,visible:this.props.visible,onLabelUpdate:s=>this.updateAnnoLabel(s),possibleLabelsProp:this.props.possibleLabels,multilabels:this.props.multilabels,disabled:!this.props.allowedActions.label,renderPopup:!0,focusOnRender:!0,open:!0,defaultLabel:this.props.defaultLabel})}):null}}export{c as default};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";const s=require("react/jsx-runtime"),o=require("react"),n=require("./utils/transform.cjs");class p extends o.Component{constructor(t){super(t),this.state={top:400,left:100,width:50,label:void 0,visibility:"hidden",possibleLabels:[]},this.inputGroupRef=o.createRef()}componentWillMount(){this.setPosition()}componentDidUpdate(t){this.props.visible&&this.setPosition()}setPosition(){if(this.props.selectedAnno){let t=n.getTopPoint(this.props.selectedAnno.data);t=n.getMostLeftPoint(t)[0];const c=this.inputGroupRef.current.getBoundingClientRect();let e=this.props.svg.top+(t.y+this.props.svg.translateY)*this.props.svg.scale-44,i=this.props.svg.left+(t.x+this.props.svg.translateX)*this.props.svg.scale-c.width/2-1;e<0&&(e=this.props.svg.top+(t.y+this.props.svg.translateY+10)*this.props.svg.scale),(this.state.top!==e||this.state.left!==i)&&this.setState({top:e,left:i})}}onClose(){this.props.onClose&&this.props.onClose()}handleClick(t){this.props.onClick&&this.props.onClick(t)}renderDaviIcon(){return s.jsx("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1190.549 841.891",width:"60px",onClick:t=>this.handleClick(t),children:s.jsxs("g",{id:"Info",children:[s.jsx("path",{id:"Maps",fill:this.props.color,d:`M620.561,817.217c-1.568-3.62-3.771-7.101-4.611-10.885
|
|
2
|
+
c-24.452-109.811-74.341-207.569-139.215-298.675c-27.507-38.628-55.814-77.404-77.438-119.371
|
|
3
|
+
C324.363,242.85,402.696,58.71,574.209,26.508c145.509-27.32,282.953,75.871,296.543,222.773
|
|
4
|
+
c4.659,50.356-7.471,97.96-32.152,141.022c-27.812,48.526-58.75,95.364-90.073,141.758
|
|
5
|
+
c-50.917,75.411-91.062,155.558-113.421,244.091c-2.438,9.652-3.936,19.543-6.271,29.227c-0.992,4.104-3.023,7.961-4.584,11.93
|
|
6
|
+
C623.021,817.277,621.789,817.247,620.561,817.217z`}),s.jsx("path",{id:"Text",fillRule:"evenodd",clipRule:"evenodd",fill:"#FFFFFF",d:`M724.709,250.898
|
|
7
|
+
c-0.055-3.974,0.047-7.949,0.033-11.923c-0.007-1.228-1.54-2.767-2.76-2.777c-2.428-0.021-4.862-0.015-7.29-0.015
|
|
8
|
+
c-22.466,0.001-44.934,0.005-67.404,0.009c-2.475,0.001-3.658,1.154-3.658,3.588c-0.001,47.365-0.001,94.73-0.001,142.096
|
|
9
|
+
c0,13.526,0,27.05,0.001,40.577c0,2.305,1.274,3.584,3.562,3.59c6.623,0.004,9.256-0.07,19.873,0.004
|
|
10
|
+
c10.618,0.072,14.146,8.543,14.146,14.189c-0.002,5.645-4.233,13.055-14.299,13.367c-13.135,0.061-26.277-0.02-39.414-0.014
|
|
11
|
+
c-14.575,0.004-29.146,0.004-43.722,0.02c-4.191-0.084-13.717-2.789-13.717-13.492s6.233-13.643,13.132-14.117
|
|
12
|
+
c4.979,0.037,13.802,0.057,20.701,0.049c1.695,0,3.11-1.537,3.11-3.361c0.003-13.912-0.004-27.823-0.004-41.736
|
|
13
|
+
c0-30.252,0-60.503,0.002-90.754c0.002-17.03,0.005-33.649,0.002-50.678c0-1.991-1.38-3.336-3.396-3.336
|
|
14
|
+
c-24.79,0-49.577,0-74.362,0c-2.133,0-3.38,1.22-3.383,3.308c-0.006,3.754-0.011,7.509,0.005,11.262
|
|
15
|
+
c-0.023,6.339-3.067,13.143-12.456,13.143c-9.389,0-14.337-4.647-14.915-13.23c-0.128-4.305,0.004-8.612,0.004-12.918
|
|
16
|
+
c0-8.392,0-16.781,0-25.173c0-0.321,0.228-5.156,4.091-9.277c3.864-4.122,8.014-3.822,8.445-3.822
|
|
17
|
+
c25.835,0.003,51.672,0.002,77.507,0.002c46.813,0.001,140.443,0.001,140.443,0.001s6.153-0.088,10.926-0.052
|
|
18
|
+
c0.3-0.008,5.713,0.363,9.178,3.994c3.46,3.631,3.046,8.407,3.046,8.635c-0.007,12.862,0.079,25.725-0.003,38.587
|
|
19
|
+
c-0.074,8.051-6.938,12.819-13.703,12.847C731.482,263.519,724.956,259.059,724.709,250.898z`})]})})}render(){return this.props.visible?s.jsx("div",{ref:this.inputGroupRef,style:{position:"fixed",top:this.state.top,left:this.state.left,cursor:"pointer"},children:this.renderDaviIcon()}):null}}module.exports=p;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{jsx as i,jsxs as n}from"react/jsx-runtime";import c,{Component as p}from"react";import{getTopPoint as r,getMostLeftPoint as l}from"./utils/transform.js";class v extends p{constructor(t){super(t),this.state={top:400,left:100,width:50,label:void 0,visibility:"hidden",possibleLabels:[]},this.inputGroupRef=c.createRef()}componentWillMount(){this.setPosition()}componentDidUpdate(t){this.props.visible&&this.setPosition()}setPosition(){if(this.props.selectedAnno){let t=r(this.props.selectedAnno.data);t=l(t)[0];const o=this.inputGroupRef.current.getBoundingClientRect();let s=this.props.svg.top+(t.y+this.props.svg.translateY)*this.props.svg.scale-44,e=this.props.svg.left+(t.x+this.props.svg.translateX)*this.props.svg.scale-o.width/2-1;s<0&&(s=this.props.svg.top+(t.y+this.props.svg.translateY+10)*this.props.svg.scale),(this.state.top!==s||this.state.left!==e)&&this.setState({top:s,left:e})}}onClose(){this.props.onClose&&this.props.onClose()}handleClick(t){this.props.onClick&&this.props.onClick(t)}renderDaviIcon(){return i("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1190.549 841.891",width:"60px",onClick:t=>this.handleClick(t),children:n("g",{id:"Info",children:[i("path",{id:"Maps",fill:this.props.color,d:`M620.561,817.217c-1.568-3.62-3.771-7.101-4.611-10.885
|
|
2
|
+
c-24.452-109.811-74.341-207.569-139.215-298.675c-27.507-38.628-55.814-77.404-77.438-119.371
|
|
3
|
+
C324.363,242.85,402.696,58.71,574.209,26.508c145.509-27.32,282.953,75.871,296.543,222.773
|
|
4
|
+
c4.659,50.356-7.471,97.96-32.152,141.022c-27.812,48.526-58.75,95.364-90.073,141.758
|
|
5
|
+
c-50.917,75.411-91.062,155.558-113.421,244.091c-2.438,9.652-3.936,19.543-6.271,29.227c-0.992,4.104-3.023,7.961-4.584,11.93
|
|
6
|
+
C623.021,817.277,621.789,817.247,620.561,817.217z`}),i("path",{id:"Text",fillRule:"evenodd",clipRule:"evenodd",fill:"#FFFFFF",d:`M724.709,250.898
|
|
7
|
+
c-0.055-3.974,0.047-7.949,0.033-11.923c-0.007-1.228-1.54-2.767-2.76-2.777c-2.428-0.021-4.862-0.015-7.29-0.015
|
|
8
|
+
c-22.466,0.001-44.934,0.005-67.404,0.009c-2.475,0.001-3.658,1.154-3.658,3.588c-0.001,47.365-0.001,94.73-0.001,142.096
|
|
9
|
+
c0,13.526,0,27.05,0.001,40.577c0,2.305,1.274,3.584,3.562,3.59c6.623,0.004,9.256-0.07,19.873,0.004
|
|
10
|
+
c10.618,0.072,14.146,8.543,14.146,14.189c-0.002,5.645-4.233,13.055-14.299,13.367c-13.135,0.061-26.277-0.02-39.414-0.014
|
|
11
|
+
c-14.575,0.004-29.146,0.004-43.722,0.02c-4.191-0.084-13.717-2.789-13.717-13.492s6.233-13.643,13.132-14.117
|
|
12
|
+
c4.979,0.037,13.802,0.057,20.701,0.049c1.695,0,3.11-1.537,3.11-3.361c0.003-13.912-0.004-27.823-0.004-41.736
|
|
13
|
+
c0-30.252,0-60.503,0.002-90.754c0.002-17.03,0.005-33.649,0.002-50.678c0-1.991-1.38-3.336-3.396-3.336
|
|
14
|
+
c-24.79,0-49.577,0-74.362,0c-2.133,0-3.38,1.22-3.383,3.308c-0.006,3.754-0.011,7.509,0.005,11.262
|
|
15
|
+
c-0.023,6.339-3.067,13.143-12.456,13.143c-9.389,0-14.337-4.647-14.915-13.23c-0.128-4.305,0.004-8.612,0.004-12.918
|
|
16
|
+
c0-8.392,0-16.781,0-25.173c0-0.321,0.228-5.156,4.091-9.277c3.864-4.122,8.014-3.822,8.445-3.822
|
|
17
|
+
c25.835,0.003,51.672,0.002,77.507,0.002c46.813,0.001,140.443,0.001,140.443,0.001s6.153-0.088,10.926-0.052
|
|
18
|
+
c0.3-0.008,5.713,0.363,9.178,3.994c3.46,3.631,3.046,8.407,3.046,8.635c-0.007,12.862,0.079,25.725-0.003,38.587
|
|
19
|
+
c-0.074,8.051-6.938,12.819-13.703,12.847C731.482,263.519,724.956,259.059,724.709,250.898z`})]})})}render(){return this.props.visible?i("div",{ref:this.inputGroupRef,style:{position:"fixed",top:this.state.top,left:this.state.left,cursor:"pointer"},children:this.renderDaviIcon()}):null}}export{v as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const i=require("react/jsx-runtime"),r=require("react"),a=require("../utils/transform.cjs"),o=require("../types/modes.cjs"),p=10,f=15;class c extends r.Component{constructor(t){super(t),this.state={top:0,left:0,width:50,height:f,fontSize:p},this.textRef=r.createRef()}componentWillMount(){this.props.mode!==o.CREATE&&this.setPosition()}componentDidUpdate(){this.props.mode!==o.CREATE&&this.setPosition()}handleClick(t){t.preventDefault(),this.props.onClick&&this.props.onClick(t)}setPosition(){let t=a.getTopPoint(this.props.anno.data);if(t=a.getMostLeftPoint(t)[0],this.textRef.current){let n=(this.textRef.current.getBoundingClientRect().width+2)/this.props.svg.scale;n!==this.state.width&&this.setState({width:n,fontSize:Math.ceil(p/this.props.svg.scale)})}let e=t.y-10,s=t.x+7;e<0&&(e=t.y+10),(this.state.top!==e||this.state.left!==s)&&this.setState({top:e,left:s})}render(){let t="";if(!this.props.possibleLabels)return null;let e;switch(this.props.anno.labelIds&&this.props.anno.labelIds.length>0?this.props.anno.labelIds.forEach((s,l)=>{e=this.props.possibleLabels.find(h=>h.id===s),l>0&&(t+=", "),t+=e.label}):this.props.defaultLabel?Number.isInteger(this.props.defaultLabel)?(e=this.props.possibleLabels.find(s=>s.id===this.props.defaultLabel),t=e.label):t=this.props.defaultLabel:t="no label",this.props.mode){case o.VIEW:return i.jsxs("g",{children:[i.jsx("rect",{x:this.state.left,y:this.state.top-6,width:this.state.width,height:this.state.height,rx:"5",opacity:"0.5",style:this.props.style}),i.jsx("text",{x:this.state.left,y:this.state.top,fill:"white",onClick:s=>this.handleClick(s),textAnchor:"start",alignmentBaseline:"central",ref:this.textRef,fontSize:this.state.fontSize+"pt",children:t}),i.jsx("rect",{x:this.state.left,y:this.state.top-6,width:this.state.width,height:this.state.height,rx:"5",opacity:"0.01",style:this.props.style})]});default:return null}}}module.exports=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as p,jsx as i}from"react/jsx-runtime";import r,{Component as f}from"react";import{getTopPoint as d,getMostLeftPoint as c}from"../utils/transform.js";import{CREATE as a,VIEW as u}from"../types/modes.js";const n=10,b=15;class R extends f{constructor(t){super(t),this.state={top:0,left:0,width:50,height:b,fontSize:n},this.textRef=r.createRef()}componentWillMount(){this.props.mode!==a&&this.setPosition()}componentDidUpdate(){this.props.mode!==a&&this.setPosition()}handleClick(t){t.preventDefault(),this.props.onClick&&this.props.onClick(t)}setPosition(){let t=d(this.props.anno.data);if(t=c(t)[0],this.textRef.current){let h=(this.textRef.current.getBoundingClientRect().width+2)/this.props.svg.scale;h!==this.state.width&&this.setState({width:h,fontSize:Math.ceil(n/this.props.svg.scale)})}let e=t.y-10,s=t.x+7;e<0&&(e=t.y+10),(this.state.top!==e||this.state.left!==s)&&this.setState({top:e,left:s})}render(){let t="";if(!this.props.possibleLabels)return null;let e;switch(this.props.anno.labelIds&&this.props.anno.labelIds.length>0?this.props.anno.labelIds.forEach((s,o)=>{e=this.props.possibleLabels.find(l=>l.id===s),o>0&&(t+=", "),t+=e.label}):this.props.defaultLabel?Number.isInteger(this.props.defaultLabel)?(e=this.props.possibleLabels.find(s=>s.id===this.props.defaultLabel),t=e.label):t=this.props.defaultLabel:t="no label",this.props.mode){case u:return p("g",{children:[i("rect",{x:this.state.left,y:this.state.top-6,width:this.state.width,height:this.state.height,rx:"5",opacity:"0.5",style:this.props.style}),i("text",{x:this.state.left,y:this.state.top,fill:"white",onClick:s=>this.handleClick(s),textAnchor:"start",alignmentBaseline:"central",ref:this.textRef,fontSize:this.state.fontSize+"pt",children:t}),i("rect",{x:this.state.left,y:this.state.top-6,width:this.state.width,height:this.state.height,rx:"5",opacity:"0.01",style:this.props.style})]});default:return null}}}export{R as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),h=require("react"),d=require("./AnnoBar.cjs"),c=require("./Point.cjs"),u=require("./BBox.cjs"),f=require("./Line.cjs"),A=require("./Polygon.cjs"),n=require("../types/modes.cjs"),i=require("../types/canvasActions.cjs"),g=require("../types/annoStatus.cjs"),C=require("../utils/colorlut.cjs"),l=require("../utils/constraints.cjs"),p=require("../utils/transform.cjs");class b extends h.Component{constructor(e){super(e),this.state={selAreaCss:"sel-area-off",visibility:"visible",anno:void 0},this.myAnno=h.createRef()}componentWillMount(){this.setState({anno:{...this.props.data}})}componentDidUpdate(e){e.data!==this.props.data&&this.setState({anno:{...this.props.data}}),e.showSingleAnno!==this.props.showSingleAnno&&(this.props.showSingleAnno===void 0?this.setVisible(!0):this.props.showSingleAnno!==this.props.data.id?this.setVisible(!1):this.setVisible(!0)),this.props.showSingleAnno===void 0&&this.state.anno.visible!==void 0&&(this.state.anno.visible?this.setVisible(!0):this.setVisible(!1))}onClick(e){e.stopPropagation(),this.performedAction(this.state.anno,i.ANNO_SELECTED)}onMouseDown(e){e.preventDefault(),this.props.onMouseDown&&this.props.onMouseDown(e)}onContextMenu(e){e.preventDefault()}handleModeChangeRequest(e,s){this.setMode(e,s)}performedAction(e,s){this.props.onAction&&this.props.onAction(e,s)}notify(e){this.props.onNotification&&this.props.onNotification(e)}performedAnnoAction(e,s){switch(s){case i.ANNO_CREATED_FINAL_NODE:case i.ANNO_EDITED:case i.ANNO_MOVED:case i.ANNO_CREATED:const t=p.correctAnnotation(e.data,this.props.svg,this.props.imageOffset);let r={...e,data:t};const a=p.getArea(t,this.props.svg,e.type,this.props.image);a!==void 0?a<this.props.canvasConfig.annos.minArea?(this.notify({title:"Annotation to small",message:"Annotation area was "+Math.round(a)+"px but needs to be bigger than "+this.props.canvasConfig.annos.minArea+" px",type:void 0}),this.setMode(r,n.DELETED)):this.performedAction(r,s):this.performedAction(r,s);break;default:this.performedAction(e,s);break}}setAnnoMode(e,s){this.setState({anno:{...e,mode:s}})}setMode(e,s){if(e.mode!==s)switch(s){case n.EDIT_LABEL:l.allowedToLabel(this.props.allowedActions)&&this.setAnnoMode(e,s);break;case n.DELETED:this.setAnnoMode(e,s);const t={...e,mode:s.DELETED};this.performedAction(t,i.ANNO_DELETED);break;case n.MOVE:this.setAnnoMode(e,s),this.performedAction(e,i.ANNO_ENTER_MOVE_MODE);break;case n.EDIT:this.setAnnoMode(e,s),this.performedAction(e,i.ANNO_ENTER_EDIT_MODE);break;default:this.setAnnoMode(e,s);break}}setVisible(e){e?this.state.visibility!=="visible"&&this.setState({visibility:"visible"}):this.state.visibility!=="hidden"&&this.setState({visibility:"hidden"})}isSelected(){return l.allowedToEdit(this.props.allowedActions,this.state.anno)?this.props.selectedAnno===this.props.data.id:!1}getResult(){return{...this.state.anno,data:this.myAnno.current.state.anno,createMode:this.myAnno.current.state.mode===n.CREATE}}getLabel(e){return this.props.possibleLabels.find(s=>s.id===e)}getColor(){return this.state.anno.labelIds&&this.state.anno.labelIds.length>0?this.getLabel(this.state.anno.labelIds[0]).color:C.getDefaultColor()}getStyle(){const e=this.getColor();return this.isSelected()?{stroke:e,fill:e,strokeWidth:this.props.uiConfig.strokeWidth/this.props.svg.scale,r:this.props.uiConfig.nodeRadius/this.props.svg.scale}:{stroke:e,fill:e,strokeWidth:this.props.uiConfig.strokeWidth/this.props.svg.scale,r:this.props.uiConfig.nodeRadius/this.props.svg.scale}}getCssClass(){return this.isSelected()?"selected":"not-selected"}renderAnno(){const e=this.props.type;switch(this.state.anno&&console.log("ANNOTATION: ",this.state.anno.mode,this.state.anno),e){case"point":return o.jsx(c,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(s,t)=>this.handleModeChangeRequest(s,t),onAction:(s,t)=>this.performedAnnoAction(s,t)});case"bBox":return o.jsx(u,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),onNodeClick:(s,t)=>this.onNodeClick(s,t),onNodeMouseDown:(s,t)=>this.onNodeMouseDown(s,t),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(s,t)=>this.handleModeChangeRequest(s,t),onAction:(s,t)=>this.performedAnnoAction(s,t)});case"polygon":return o.jsx(A,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),onNodeClick:(s,t)=>this.onNodeClick(s,t),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(s,t)=>this.handleModeChangeRequest(s,t),onAction:(s,t)=>this.performedAnnoAction(s,t)});case"line":return o.jsx(f,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),isSelected:this.isSelected(),svg:this.props.svg,onAction:(s,t)=>this.performedAnnoAction(s,t),onModeChangeRequest:(s,t)=>this.handleModeChangeRequest(s,t)});default:console.error("Wrong annoType for annotations: ",this.props.annoType)}}renderAnnoBar(){return o.jsx(d,{anno:this.state.anno,mode:this.state.anno.mode,possibleLabels:this.props.possibleLabels,onClick:e=>this.onClick(e),style:this.getStyle(),svg:this.props.svg,defaultLabel:this.props.defaultLabel})}render(){return!this.state.anno.data||!this.props.possibleLabels||this.state.anno.status===g.DELETED?null:o.jsx("g",{children:o.jsxs("g",{visibility:this.state.visibility,onClick:e=>this.onClick(e),onMouseDown:e=>this.onMouseDown(e),onContextMenu:e=>this.onContextMenu(e),children:[this.renderAnnoBar(),this.renderAnno()]})})}}module.exports=b;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as i,jsxs as a}from"react/jsx-runtime";import h,{Component as l}from"react";import p from"./AnnoBar.js";import d from"./Point.js";import c from"./BBox.js";import f from"./Line.js";import A from"./Polygon.js";import{DELETED as r,EDIT as u,MOVE as g,EDIT_LABEL as m,CREATE as C}from"../types/modes.js";import{ANNO_SELECTED as b,ANNO_CREATED as E,ANNO_MOVED as v,ANNO_EDITED as M,ANNO_CREATED_FINAL_NODE as y,ANNO_ENTER_EDIT_MODE as N,ANNO_ENTER_MOVE_MODE as D,ANNO_DELETED as S}from"../types/canvasActions.js";import{DELETED as k}from"../types/annoStatus.js";import{getDefaultColor as w}from"../utils/colorlut.js";import{allowedToLabel as T,allowedToEdit as L}from"../utils/constraints.js";import{correctAnnotation as R,getArea as O}from"../utils/transform.js";class H extends l{constructor(t){super(t),this.state={selAreaCss:"sel-area-off",visibility:"visible",anno:void 0},this.myAnno=h.createRef()}componentWillMount(){this.setState({anno:{...this.props.data}})}componentDidUpdate(t){t.data!==this.props.data&&this.setState({anno:{...this.props.data}}),t.showSingleAnno!==this.props.showSingleAnno&&(this.props.showSingleAnno===void 0?this.setVisible(!0):this.props.showSingleAnno!==this.props.data.id?this.setVisible(!1):this.setVisible(!0)),this.props.showSingleAnno===void 0&&this.state.anno.visible!==void 0&&(this.state.anno.visible?this.setVisible(!0):this.setVisible(!1))}onClick(t){t.stopPropagation(),this.performedAction(this.state.anno,b)}onMouseDown(t){t.preventDefault(),this.props.onMouseDown&&this.props.onMouseDown(t)}onContextMenu(t){t.preventDefault()}handleModeChangeRequest(t,e){this.setMode(t,e)}performedAction(t,e){this.props.onAction&&this.props.onAction(t,e)}notify(t){this.props.onNotification&&this.props.onNotification(t)}performedAnnoAction(t,e){switch(e){case y:case M:case v:case E:const s=R(t.data,this.props.svg,this.props.imageOffset);let o={...t,data:s};const n=O(s,this.props.svg,t.type,this.props.image);n!==void 0?n<this.props.canvasConfig.annos.minArea?(this.notify({title:"Annotation to small",message:"Annotation area was "+Math.round(n)+"px but needs to be bigger than "+this.props.canvasConfig.annos.minArea+" px",type:void 0}),this.setMode(o,r)):this.performedAction(o,e):this.performedAction(o,e);break;default:this.performedAction(t,e);break}}setAnnoMode(t,e){this.setState({anno:{...t,mode:e}})}setMode(t,e){if(t.mode!==e)switch(e){case m:T(this.props.allowedActions)&&this.setAnnoMode(t,e);break;case r:this.setAnnoMode(t,e);const s={...t,mode:e.DELETED};this.performedAction(s,S);break;case g:this.setAnnoMode(t,e),this.performedAction(t,D);break;case u:this.setAnnoMode(t,e),this.performedAction(t,N);break;default:this.setAnnoMode(t,e);break}}setVisible(t){t?this.state.visibility!=="visible"&&this.setState({visibility:"visible"}):this.state.visibility!=="hidden"&&this.setState({visibility:"hidden"})}isSelected(){return L(this.props.allowedActions,this.state.anno)?this.props.selectedAnno===this.props.data.id:!1}getResult(){return{...this.state.anno,data:this.myAnno.current.state.anno,createMode:this.myAnno.current.state.mode===C}}getLabel(t){return this.props.possibleLabels.find(e=>e.id===t)}getColor(){return this.state.anno.labelIds&&this.state.anno.labelIds.length>0?this.getLabel(this.state.anno.labelIds[0]).color:w()}getStyle(){const t=this.getColor();return this.isSelected()?{stroke:t,fill:t,strokeWidth:this.props.uiConfig.strokeWidth/this.props.svg.scale,r:this.props.uiConfig.nodeRadius/this.props.svg.scale}:{stroke:t,fill:t,strokeWidth:this.props.uiConfig.strokeWidth/this.props.svg.scale,r:this.props.uiConfig.nodeRadius/this.props.svg.scale}}getCssClass(){return this.isSelected()?"selected":"not-selected"}renderAnno(){const t=this.props.type;switch(this.state.anno&&console.log("ANNOTATION: ",this.state.anno.mode,this.state.anno),t){case"point":return i(d,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(e,s)=>this.handleModeChangeRequest(e,s),onAction:(e,s)=>this.performedAnnoAction(e,s)});case"bBox":return i(c,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),onNodeClick:(e,s)=>this.onNodeClick(e,s),onNodeMouseDown:(e,s)=>this.onNodeMouseDown(e,s),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(e,s)=>this.handleModeChangeRequest(e,s),onAction:(e,s)=>this.performedAnnoAction(e,s)});case"polygon":return i(A,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),onNodeClick:(e,s)=>this.onNodeClick(e,s),isSelected:this.isSelected(),svg:this.props.svg,onModeChangeRequest:(e,s)=>this.handleModeChangeRequest(e,s),onAction:(e,s)=>this.performedAnnoAction(e,s)});case"line":return i(f,{ref:this.myAnno,anno:this.state.anno,style:this.getStyle(),className:this.getCssClass(),isSelected:this.isSelected(),svg:this.props.svg,onAction:(e,s)=>this.performedAnnoAction(e,s),onModeChangeRequest:(e,s)=>this.handleModeChangeRequest(e,s)});default:console.error("Wrong annoType for annotations: ",this.props.annoType)}}renderAnnoBar(){return i(p,{anno:this.state.anno,mode:this.state.anno.mode,possibleLabels:this.props.possibleLabels,onClick:t=>this.onClick(t),style:this.getStyle(),svg:this.props.svg,defaultLabel:this.props.defaultLabel})}render(){return!this.state.anno.data||!this.props.possibleLabels||this.state.anno.status===k?null:i("g",{children:a("g",{visibility:this.state.visibility,onClick:t=>this.onClick(t),onMouseDown:t=>this.onMouseDown(t),onContextMenu:t=>this.onContextMenu(t),children:[this.renderAnnoBar(),this.renderAnno()]})})}}export{H as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const i=require("react/jsx-runtime"),d=require("react");;/* empty css */const t=require("../types/modes.cjs"),p=require("../utils/transform.cjs"),r=require("../types/canvasActions.cjs"),c=require("../utils/mouse.cjs"),l=require("./InfSelectionArea.cjs"),u=require("./Node.cjs");class M extends d.Component{constructor(e){super(e),this.state={anno:void 0}}componentDidMount(e){if(this.props.anno.mode===t.CREATE){const s=this.props.anno.data[0],o={...this.props.anno,data:[{x:s.x,y:s.y},{x:s.x+1,y:s.y},{x:s.x+1,y:s.y+1},{x:s.x,y:s.y+1}],selectedNode:2};this.setState({anno:o})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(e){e.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onNodeMouseMove(e,s){switch(this.state.anno.mode){case t.CREATE:case t.EDIT:const o=c.getMousePosition(e,this.props.svg),a=s-1<0?3:s-1,h=s+1>3?0:s+1;let n=[...this.state.anno.data];s%2===0?(n[a].x=o.x,n[s].x=o.x,n[s].y=o.y,n[h].y=o.y):(n[a].y=o.y,n[s].x=o.x,n[s].y=o.y,n[h].x=o.x),this.setState({anno:{...this.state.anno,data:n}});break}}onNodeMouseDown(e,s){switch(this.state.anno.mode){case t.VIEW:e.button===0&&this.requestModeChange({...this.state.anno,selectedNode:s},t.EDIT);break}}onNodeMouseUp(e,s){switch(this.state.anno.mode){case t.EDIT:e.button===0&&(this.requestModeChange(this.state.anno,t.VIEW),this.performedAction(this.state.anno,r.ANNO_EDITED));break;case t.CREATE:e.button===2&&(this.requestModeChange(this.state.anno,t.VIEW),this.performedAction(this.state.anno,r.ANNO_CREATED));break}}handleNodeMouseLeave(e,s){switch(this.state.anno.mode){case t.CREATE:this.requestModeChange(this.state.anno,t.VIEW),this.performedAction(this.state.anno,r.ANNO_CREATED);break}}onMouseMove(e){switch(this.state.anno.mode){case t.MOVE:this.move(e.movementX/this.props.svg.scale,e.movementY/this.props.svg.scale);break}}onMouseUp(e){switch(this.state.anno.mode){case t.MOVE:e.button===0&&(this.requestModeChange(this.state.anno,t.VIEW),this.performedAction(this.state.anno,r.ANNO_MOVED));break}}onMouseDown(e){switch(this.state.anno.mode){case t.VIEW:e.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,t.MOVE);break}}getResult(){return this.state.anno}requestModeChange(e,s){this.props.onModeChangeRequest(e,s)}performedAction(e,s){this.props.onAction&&this.props.onAction(e,s)}toPolygonStr(e){return e.map(s=>`${s.x},${s.y}`).join(" ")}move(e,s){this.setState({anno:{...this.state.anno,data:p.move(this.state.anno.data,e,s)}})}renderPolygon(){switch(this.state.anno.mode){default:return i.jsx("polygon",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:this.props.style,className:this.props.className,onMouseDown:e=>this.onMouseDown(e),onMouseUp:e=>this.onMouseUp(e)})}}renderNodes(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case t.MOVE:case t.EDIT_LABEL:return null;case t.EDIT:case t.CREATE:return i.jsx(u,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(e,s)=>this.onNodeMouseDown(e,s),onMouseUp:(e,s)=>this.onNodeMouseUp(e,s),onMouseMove:(e,s)=>this.onNodeMouseMove(e,s),onMouseLeave:(e,s)=>this.handleNodeMouseLeave(e,s)},this.state.anno.selectedNode);default:return this.state.anno.data.map((e,s)=>i.jsx(u,{anno:this.state.anno.data,idx:s,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(o,a)=>this.onNodeMouseDown(o,a),onMouseUp:(o,a)=>this.onNodeMouseUp(o,a),onMouseLeave:(o,a)=>this.handleNodeMouseLeave(o,a)},s))}}renderInfSelectionArea(){switch(this.state.anno.mode){case t.MOVE:return i.jsx(l,{enable:!0,svg:this.props.svg});default:return null}}render(){return this.state.anno?i.jsxs("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),children:[this.renderPolygon(),this.renderNodes(),this.renderInfSelectionArea()]}):null}}module.exports=M;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as h,jsxs as l}from"react/jsx-runtime";import{Component as m}from"react";/* empty css */import{CREATE as i,EDIT as p,VIEW as a,MOVE as r,EDIT_LABEL as M}from"../types/modes.js";import{move as f}from"../utils/transform.js";import{ANNO_CREATED as u,ANNO_EDITED as N,ANNO_MOVED as y}from"../types/canvasActions.js";import{getMousePosition as v}from"../utils/mouse.js";import g from"./InfSelectionArea.js";import c from"./Node.js";class q extends m{constructor(e){super(e),this.state={anno:void 0}}componentDidMount(e){if(this.props.anno.mode===i){const t=this.props.anno.data[0],s={...this.props.anno,data:[{x:t.x,y:t.y},{x:t.x+1,y:t.y},{x:t.x+1,y:t.y+1},{x:t.x,y:t.y+1}],selectedNode:2};this.setState({anno:s})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(e){e.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onNodeMouseMove(e,t){switch(this.state.anno.mode){case i:case p:const s=v(e,this.props.svg),n=t-1<0?3:t-1,d=t+1>3?0:t+1;let o=[...this.state.anno.data];t%2===0?(o[n].x=s.x,o[t].x=s.x,o[t].y=s.y,o[d].y=s.y):(o[n].y=s.y,o[t].x=s.x,o[t].y=s.y,o[d].x=s.x),this.setState({anno:{...this.state.anno,data:o}});break}}onNodeMouseDown(e,t){switch(this.state.anno.mode){case a:e.button===0&&this.requestModeChange({...this.state.anno,selectedNode:t},p);break}}onNodeMouseUp(e,t){switch(this.state.anno.mode){case p:e.button===0&&(this.requestModeChange(this.state.anno,a),this.performedAction(this.state.anno,N));break;case i:e.button===2&&(this.requestModeChange(this.state.anno,a),this.performedAction(this.state.anno,u));break}}handleNodeMouseLeave(e,t){switch(this.state.anno.mode){case i:this.requestModeChange(this.state.anno,a),this.performedAction(this.state.anno,u);break}}onMouseMove(e){switch(this.state.anno.mode){case r:this.move(e.movementX/this.props.svg.scale,e.movementY/this.props.svg.scale);break}}onMouseUp(e){switch(this.state.anno.mode){case r:e.button===0&&(this.requestModeChange(this.state.anno,a),this.performedAction(this.state.anno,y));break}}onMouseDown(e){switch(this.state.anno.mode){case a:e.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,r);break}}getResult(){return this.state.anno}requestModeChange(e,t){this.props.onModeChangeRequest(e,t)}performedAction(e,t){this.props.onAction&&this.props.onAction(e,t)}toPolygonStr(e){return e.map(t=>`${t.x},${t.y}`).join(" ")}move(e,t){this.setState({anno:{...this.state.anno,data:f(this.state.anno.data,e,t)}})}renderPolygon(){switch(this.state.anno.mode){default:return h("polygon",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:this.props.style,className:this.props.className,onMouseDown:e=>this.onMouseDown(e),onMouseUp:e=>this.onMouseUp(e)})}}renderNodes(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case r:case M:return null;case p:case i:return h(c,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(e,t)=>this.onNodeMouseDown(e,t),onMouseUp:(e,t)=>this.onNodeMouseUp(e,t),onMouseMove:(e,t)=>this.onNodeMouseMove(e,t),onMouseLeave:(e,t)=>this.handleNodeMouseLeave(e,t)},this.state.anno.selectedNode);default:return this.state.anno.data.map((e,t)=>h(c,{anno:this.state.anno.data,idx:t,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(s,n)=>this.onNodeMouseDown(s,n),onMouseUp:(s,n)=>this.onNodeMouseUp(s,n),onMouseLeave:(s,n)=>this.handleNodeMouseLeave(s,n)},t))}}renderInfSelectionArea(){switch(this.state.anno.mode){case r:return h(g,{enable:!0,svg:this.props.svg});default:return null}}render(){return this.state.anno?l("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),children:[this.renderPolygon(),this.renderNodes(),this.renderInfSelectionArea()]}):null}}export{q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),n=require("react");;/* empty css */class i extends n.Component{constructor(s){super(s),this.state={haloCss:"node-halo-off"}}componentDidUpdate(){}onMouseOver(s){this.props.isSelected&&this.setState({haloCss:"node-halo-on"})}onMouseLeave(s){this.props.isSelected&&this.setState({haloCss:"node-halo-off"})}onMouseDown(s){this.props.onMouseDown&&this.props.onMouseDown(s,this.props.idx)}onMouseUp(s){s.stopPropagation()}render(){let s,e;if(this.props.closingEdge){if(this.props.idx===0&&this.props.anno.length===1)return null;s=this.props.anno[this.props.anno.length-1],e=this.props.anno[0]}else{if(this.props.idx-1<0||this.props.idx>this.props.anno.length-1)return null;s=this.props.anno[this.props.idx-1],e=this.props.anno[this.props.idx]}return t.jsxs("g",{onMouseOver:o=>{this.onMouseOver(o)},onMouseLeave:o=>{this.onMouseLeave(o)},children:[t.jsx("line",{x1:s.x,y1:s.y,x2:e.x,y2:e.y,stroke:"black",strokeWidth:this.props.style.strokeWidth*3,className:this.state.haloCss,onMouseOver:o=>{this.onMouseOver(o)},onMouseDown:o=>this.onMouseDown(o),onMouseUp:o=>this.onMouseUp(o)}),t.jsx("line",{x1:s.x,y1:s.y,x2:e.x,y2:e.y,stroke:"black",style:this.props.style,className:this.props.className,onMouseDown:o=>this.onMouseDown(o),onMouseUp:o=>this.onMouseUp(o)})]})}}module.exports=i;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as n,jsx as t}from"react/jsx-runtime";import{Component as p}from"react";/* empty css */class l extends p{constructor(s){super(s),this.state={haloCss:"node-halo-off"}}componentDidUpdate(){}onMouseOver(s){this.props.isSelected&&this.setState({haloCss:"node-halo-on"})}onMouseLeave(s){this.props.isSelected&&this.setState({haloCss:"node-halo-off"})}onMouseDown(s){this.props.onMouseDown&&this.props.onMouseDown(s,this.props.idx)}onMouseUp(s){s.stopPropagation()}render(){let s,e;if(this.props.closingEdge){if(this.props.idx===0&&this.props.anno.length===1)return null;s=this.props.anno[this.props.anno.length-1],e=this.props.anno[0]}else{if(this.props.idx-1<0||this.props.idx>this.props.anno.length-1)return null;s=this.props.anno[this.props.idx-1],e=this.props.anno[this.props.idx]}return n("g",{onMouseOver:o=>{this.onMouseOver(o)},onMouseLeave:o=>{this.onMouseLeave(o)},children:[t("line",{x1:s.x,y1:s.y,x2:e.x,y2:e.y,stroke:"black",strokeWidth:this.props.style.strokeWidth*3,className:this.state.haloCss,onMouseOver:o=>{this.onMouseOver(o)},onMouseDown:o=>this.onMouseDown(o),onMouseUp:o=>this.onMouseUp(o)}),t("line",{x1:s.x,y1:s.y,x2:e.x,y2:e.y,stroke:"black",style:this.props.style,className:this.props.className,onMouseDown:o=>this.onMouseDown(o),onMouseUp:o=>this.onMouseUp(o)})]})}}export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const s=require("react/jsx-runtime"),t=require("react");class o extends t.Component{constructor(e){super(e),this.state={selAreaCss:"sel-area-off"}}componentDidMount(){this.props.enable?this.enableSelArea():this.disableSelArea()}componentDidUpdate(){this.props.enable?this.enableSelArea():this.disableSelArea()}onMouseMove(e){this.props.onMouseMove&&this.props.onMouseMove(e)}onMouseUp(e){this.props.onMouseUp&&this.props.onMouseUp(e)}enableSelArea(){this.state.selAreaCss!=="sel-area-on"&&this.setState({selAreaCss:"sel-area-on"})}disableSelArea(){this.state.selAreaCss!=="sel-area-off"&&this.setState({selAreaCss:"sel-area-off"})}render(){return s.jsx("circle",{cx:this.props.svg.width/2,cy:this.props.svg.height/2,r:"100%",className:this.state.selAreaCss,onMouseMove:e=>{this.onMouseMove(e)},onMouseUp:e=>{this.onMouseUp(e)}})}}module.exports=o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{Component as o}from"react";class i extends o{constructor(e){super(e),this.state={selAreaCss:"sel-area-off"}}componentDidMount(){this.props.enable?this.enableSelArea():this.disableSelArea()}componentDidUpdate(){this.props.enable?this.enableSelArea():this.disableSelArea()}onMouseMove(e){this.props.onMouseMove&&this.props.onMouseMove(e)}onMouseUp(e){this.props.onMouseUp&&this.props.onMouseUp(e)}enableSelArea(){this.state.selAreaCss!=="sel-area-on"&&this.setState({selAreaCss:"sel-area-on"})}disableSelArea(){this.state.selAreaCss!=="sel-area-off"&&this.setState({selAreaCss:"sel-area-off"})}render(){return s("circle",{cx:this.props.svg.width/2,cy:this.props.svg.height/2,r:"100%",className:this.state.selAreaCss,onMouseMove:e=>{this.onMouseMove(e)},onMouseUp:e=>{this.onMouseUp(e)}})}}export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const s=require("react/jsx-runtime");require("react");const i=require("./Polygon.cjs"),l=require("./Edge.cjs"),n=require("../types/modes.cjs");class a extends i{renderEdges(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case n.VIEW:case n.ADD:return this.state.anno.data.map((e,t)=>s.jsx(l,{anno:this.state.anno.data,idx:t,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(o,r)=>{this.onEdgeMouseDown(o,r)}},t));default:return null}}renderPolyline(){return s.jsx("polyline",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:{...this.props.style,fill:"none"},className:this.props.className})}render(){return this.state.anno?s.jsxs("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),children:[this.renderPolyline(),this.renderEdges(),this.renderNodes(),this.renderInfSelectionArea()]}):s.jsx("g",{})}}module.exports=a;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s,jsxs as r}from"react/jsx-runtime";import"react";import i from"./Polygon.js";import l from"./Edge.js";import{ADD as a,VIEW as p}from"../types/modes.js";class M extends i{renderEdges(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case p:case a:return this.state.anno.data.map((e,t)=>s(l,{anno:this.state.anno.data,idx:t,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(o,n)=>{this.onEdgeMouseDown(o,n)}},t));default:return null}}renderPolyline(){return s("polyline",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:{...this.props.style,fill:"none"},className:this.props.className})}render(){return this.state.anno?r("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),children:[this.renderPolyline(),this.renderEdges(),this.renderNodes(),this.renderInfSelectionArea()]}):s("g",{})}}export{M as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),i=require("react");;/* empty css */const t=require("../types/modes.cjs"),r=require("../types/cursorstyles.cjs");class n extends i.Component{constructor(s){super(s),this.state={haloCss:"node-halo-off",selAreaCss:"sel-area-off",nodeSelected:!1,style:{}}}componentDidMount(){this.setState({style:{...this.props.style,cursor:this.getCursorStyle(this.props.mode)}})}componentDidUpdate(s){switch(this.props.mode){case t.CREATE:(this.props.idx!==0||this.props.isPoint)&&this.turnSelAreaOn();break;case t.EDIT:this.turnSelAreaOn();break}s.mode!==this.props.mode&&this.setState({style:{...this.state.style,cursor:this.getCursorStyle(this.props.mode)}}),s.style!==this.props.style&&this.setState({style:{...this.state.style,...this.props.style,cursor:this.getCursorStyle(this.props.mode)}})}onClick(s){this.turnHaloOn(),this.props.onClick&&this.props.onClick(s,this.props.idx)}onMouseMove(s){this.props.onMouseMove&&this.props.onMouseMove(s,this.props.idx)}onContextMenu(s){s.preventDefault()}onMouseUp(s){switch(this.props.mode){case t.EDIT:switch(s.button){case 0:this.turnSelAreaOff();break}break}this.props.onMouseUp&&this.props.onMouseUp(s,this.props.idx)}onMouseDown(s){switch(s.stopPropagation(),this.props.onMouseDown&&this.props.onMouseDown(s,this.props.idx),this.props.mode){case t.CREATE:switch(s.button){case 0:this.turnSelAreaOff();break;case 2:this.turnSelAreaOff();break}break}}onMouseOver(s){this.props.isSelected&&this.turnHaloOn()}onMouseLeave(s){this.props.isSelected&&this.turnHaloOff()}onDoubleClick(s){this.props.onDoubleClick&&this.props.onDoubleClick(s,this.props.idx)}handleMouseLeave(s){this.props.onMouseLeave&&this.props.onMouseLeave(s,this.props.idx)}getCursorStyle(s){switch(s){case t.CREATE:return r.CREATE_NODE;case t.EDIT:return r.EDIT_NODE;case t.VIEW:return r.NORMAL_NODE}}turnSelAreaOn(){this.state.selAreaCss!=="sel-area-on"&&this.setState({selAreaCss:"sel-area-on"})}turnSelAreaOff(){this.state.selAreaCss!=="sel-area-off"&&this.setState({selAreaCss:"sel-area-off"})}turnHaloOn(){this.setState({haloCss:"node-halo-on"})}turnHaloOff(){this.setState({haloCss:"node-halo-off"})}renderHalo(){if(this.state.haloCss==="node-halo-off")return null;const s=this.props.anno[this.props.idx];return o.jsx("circle",{cx:s.x,cy:s.y,r:this.props.style.r*3,className:this.state.haloCss,onMouseLeave:e=>this.onMouseLeave(e)})}renderNodes(){const s=this.props.anno[this.props.idx];if(s!==void 0)return o.jsxs("g",{onClick:e=>this.onClick(e),onMouseMove:e=>this.onMouseMove(e),onContextMenu:e=>this.onContextMenu(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),onDoubleClick:e=>this.onDoubleClick(e),onMouseLeave:e=>this.handleMouseLeave(e),children:[o.jsx("circle",{cx:s.x,cy:s.y,r:"100%",className:this.state.selAreaCss}),this.renderHalo(),o.jsx("circle",{cx:s.x,cy:s.y,r:3,fill:"red",style:this.state.style,className:this.props.className,onMouseOver:e=>this.onMouseOver(e)})]})}render(){return o.jsx("g",{children:this.renderNodes()})}}module.exports=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Component as n}from"react";/* empty css */import{EDIT as o,CREATE as r,VIEW as a}from"../types/modes.js";import{NORMAL_NODE as h,EDIT_NODE as p,CREATE_NODE as l}from"../types/cursorstyles.js";class m extends n{constructor(s){super(s),this.state={haloCss:"node-halo-off",selAreaCss:"sel-area-off",nodeSelected:!1,style:{}}}componentDidMount(){this.setState({style:{...this.props.style,cursor:this.getCursorStyle(this.props.mode)}})}componentDidUpdate(s){switch(this.props.mode){case r:(this.props.idx!==0||this.props.isPoint)&&this.turnSelAreaOn();break;case o:this.turnSelAreaOn();break}s.mode!==this.props.mode&&this.setState({style:{...this.state.style,cursor:this.getCursorStyle(this.props.mode)}}),s.style!==this.props.style&&this.setState({style:{...this.state.style,...this.props.style,cursor:this.getCursorStyle(this.props.mode)}})}onClick(s){this.turnHaloOn(),this.props.onClick&&this.props.onClick(s,this.props.idx)}onMouseMove(s){this.props.onMouseMove&&this.props.onMouseMove(s,this.props.idx)}onContextMenu(s){s.preventDefault()}onMouseUp(s){switch(this.props.mode){case o:switch(s.button){case 0:this.turnSelAreaOff();break}break}this.props.onMouseUp&&this.props.onMouseUp(s,this.props.idx)}onMouseDown(s){switch(s.stopPropagation(),this.props.onMouseDown&&this.props.onMouseDown(s,this.props.idx),this.props.mode){case r:switch(s.button){case 0:this.turnSelAreaOff();break;case 2:this.turnSelAreaOff();break}break}}onMouseOver(s){this.props.isSelected&&this.turnHaloOn()}onMouseLeave(s){this.props.isSelected&&this.turnHaloOff()}onDoubleClick(s){this.props.onDoubleClick&&this.props.onDoubleClick(s,this.props.idx)}handleMouseLeave(s){this.props.onMouseLeave&&this.props.onMouseLeave(s,this.props.idx)}getCursorStyle(s){switch(s){case r:return l;case o:return p;case a:return h}}turnSelAreaOn(){this.state.selAreaCss!=="sel-area-on"&&this.setState({selAreaCss:"sel-area-on"})}turnSelAreaOff(){this.state.selAreaCss!=="sel-area-off"&&this.setState({selAreaCss:"sel-area-off"})}turnHaloOn(){this.setState({haloCss:"node-halo-on"})}turnHaloOff(){this.setState({haloCss:"node-halo-off"})}renderHalo(){if(this.state.haloCss==="node-halo-off")return null;const s=this.props.anno[this.props.idx];return t("circle",{cx:s.x,cy:s.y,r:this.props.style.r*3,className:this.state.haloCss,onMouseLeave:e=>this.onMouseLeave(e)})}renderNodes(){const s=this.props.anno[this.props.idx];if(s!==void 0)return i("g",{onClick:e=>this.onClick(e),onMouseMove:e=>this.onMouseMove(e),onContextMenu:e=>this.onContextMenu(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),onDoubleClick:e=>this.onDoubleClick(e),onMouseLeave:e=>this.handleMouseLeave(e),children:[t("circle",{cx:s.x,cy:s.y,r:"100%",className:this.state.selAreaCss}),this.renderHalo(),t("circle",{cx:s.x,cy:s.y,r:3,fill:"red",style:this.state.style,className:this.props.className,onMouseOver:e=>this.onMouseOver(e)})]})}render(){return t("g",{children:this.renderNodes()})}}export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),h=require("react"),p=require("./InfSelectionArea.cjs"),a=require("./Node.cjs"),s=require("../types/modes.cjs"),d=require("../utils/transform.cjs"),i=require("../types/canvasActions.cjs");class c extends h.Component{constructor(e){super(e),this.state={anno:void 0}}componentDidMount(e){if(this.props.anno.mode===s.CREATE){const t=this.props.anno.data[0],o={...this.props.anno,data:[{x:t.x,y:t.y}],selectedNode:0};this.setState({anno:o})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(e){e.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onMouseMove(e){switch(this.state.anno.mode){case s.MOVE:this.move(e.movementX/this.props.svg.scale,e.movementY/this.props.svg.scale);break}}onMouseUp(e){switch(this.state.anno.mode){case s.MOVE:e.button===0&&(this.requestModeChange(this.state.anno,s.VIEW),this.performedAction(this.state.anno,i.ANNO_MOVED));break;case s.CREATE:this.requestModeChange(this.state.anno,s.VIEW),this.performedAction(this.state.anno,i.ANNO_CREATED);break}}onNodeMouseDown(e,t){switch(this.state.anno.mode){case s.VIEW:e.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,s.MOVE);break}}getResult(){return this.state.anno}performedAction(e,t){this.props.onAction&&this.props.onAction(e,t)}requestModeChange(e,t){this.props.onModeChangeRequest(e,t)}move(e,t){this.setState({anno:{...this.state.anno,data:d.move(this.state.anno.data,e,t)}})}renderInfSelectionArea(){switch(this.state.anno.mode){case s.MOVE:return n.jsx(p,{enable:!0,svg:this.props.svg});default:return null}}renderNode(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case s.EDIT_LABEL:case s.MOVE:return null;case s.EDIT:case s.CREATE:return n.jsx(a,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(e,t)=>this.onNodeMouseDown(e,t),isPoint:!0},this.state.selectedNode);default:return this.state.anno.data.map((e,t)=>n.jsx(a,{anno:this.state.anno.data,idx:t,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(o,r)=>this.onNodeMouseDown(o,r),isPoint:!0},t))}}renderPoint(){return this.state.anno.data.map((e,t)=>n.jsx("circle",{cx:e.x,cy:e.y,r:10,fill:"red",style:this.props.style,className:this.props.className},t))}render(){return this.state.anno?n.jsxs("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),children:[this.renderPoint(),this.renderNode(),this.renderInfSelectionArea()]}):null}}module.exports=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o,jsxs as p}from"react/jsx-runtime";import{Component as d}from"react";import c from"./InfSelectionArea.js";import r from"./Node.js";import{CREATE as a,MOVE as s,VIEW as i,EDIT as l,EDIT_LABEL as m}from"../types/modes.js";import{move as u}from"../utils/transform.js";import{ANNO_CREATED as f,ANNO_MOVED as M}from"../types/canvasActions.js";class E extends d{constructor(t){super(t),this.state={anno:void 0}}componentDidMount(t){if(this.props.anno.mode===a){const e=this.props.anno.data[0],n={...this.props.anno,data:[{x:e.x,y:e.y}],selectedNode:0};this.setState({anno:n})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(t){t.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onMouseMove(t){switch(this.state.anno.mode){case s:this.move(t.movementX/this.props.svg.scale,t.movementY/this.props.svg.scale);break}}onMouseUp(t){switch(this.state.anno.mode){case s:t.button===0&&(this.requestModeChange(this.state.anno,i),this.performedAction(this.state.anno,M));break;case a:this.requestModeChange(this.state.anno,i),this.performedAction(this.state.anno,f);break}}onNodeMouseDown(t,e){switch(this.state.anno.mode){case i:t.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,s);break}}getResult(){return this.state.anno}performedAction(t,e){this.props.onAction&&this.props.onAction(t,e)}requestModeChange(t,e){this.props.onModeChangeRequest(t,e)}move(t,e){this.setState({anno:{...this.state.anno,data:u(this.state.anno.data,t,e)}})}renderInfSelectionArea(){switch(this.state.anno.mode){case s:return o(c,{enable:!0,svg:this.props.svg});default:return null}}renderNode(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case m:case s:return null;case l:case a:return o(r,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(t,e)=>this.onNodeMouseDown(t,e),isPoint:!0},this.state.selectedNode);default:return this.state.anno.data.map((t,e)=>o(r,{anno:this.state.anno.data,idx:e,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(n,h)=>this.onNodeMouseDown(n,h),isPoint:!0},e))}}renderPoint(){return this.state.anno.data.map((t,e)=>o("circle",{cx:t.x,cy:t.y,r:10,fill:"red",style:this.props.style,className:this.props.className},e))}render(){return this.state.anno?p("g",{onMouseMove:t=>this.onMouseMove(t),onMouseUp:t=>this.onMouseUp(t),children:[this.renderPoint(),this.renderNode(),this.renderInfSelectionArea()]}):null}}export{E as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const a=require("react/jsx-runtime"),u=require("react"),d=require("./Edge.cjs"),c=require("./Node.cjs"),l=require("./InfSelectionArea.cjs"),M=require("../utils/transform.cjs"),i=require("../types/canvasActions.cjs");;/* empty css */const o=require("../types/modes.cjs"),p=require("../utils/mouse.cjs");class N extends u.Component{constructor(e){super(e),this.state={anno:void 0}}componentDidMount(){if(this.props.anno.mode===o.CREATE){const e=this.props.anno.data[0],t={...this.props.anno,data:[{x:e.x,y:e.y},{x:e.x+1,y:e.y}],selectedNode:1};this.setState({anno:t})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(e){e.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onMouseMove(e){switch(this.state.anno.mode){case o.MOVE:this.move(e.movementX/this.props.svg.scale,e.movementY/this.props.svg.scale);break}}onMouseUp(e){switch(this.state.anno.mode){case o.MOVE:e.button===0&&(this.performedAction(this.state.anno,i.ANNO_MOVED),this.requestModeChange(this.state.anno,o.VIEW));break}}onMouseDown(e){switch(this.state.anno.mode){case o.VIEW:e.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,o.MOVE);break}}onNodeMouseUp(e,t){switch(this.state.anno.mode){case o.EDIT:this.performedAction(this.state.anno,i.ANNO_EDITED),this.requestModeChange(this.state.anno,o.VIEW);break}}onNodeMouseDown(e,t){switch(this.state.anno.mode){case o.CREATE:if(e.button===2){let s=[...this.state.anno.data];s.push({x:s[t].x,y:s[t].y});const n={...this.state.anno,data:s,selectedNode:this.state.anno.selectedNode+1};this.setState({anno:n}),this.performedAction(n,i.ANNO_CREATED_NODE)}break;case o.VIEW:e.button===0&&this.requestModeChange({...this.state.anno,selectedNode:t},o.EDIT);break;case o.ADD:e.button===0&&this.removeNode(e,t);break}}onNodeMouseMove(e,t){switch(this.state.anno.mode){case o.CREATE:this.updateAnnoByMousePos(e,t);break;case o.EDIT:e.stopPropagation(),this.updateAnnoByMousePos(e,t);break}}onNodeDoubleClick(e,t){switch(this.state.anno.mode){case o.CREATE:this.performedAction(this.state.anno,i.ANNO_CREATED_FINAL_NODE);break}}onEdgeMouseDown(e,t){switch(this.state.anno.mode){case o.ADD:this.addNode(e,t);break;case o.VIEW:e.button===0&&this.requestModeChange(this.state.anno,o.MOVE);break}}performedAction(e,t){this.props.onAction&&this.props.onAction(e,t)}toPolygonStr(e){return e.map(t=>`${t.x},${t.y}`).join(" ")}requestModeChange(e,t){this.props.onModeChangeRequest(e,t)}move(e,t){this.setState({anno:{...this.state.anno,data:M.move(this.state.anno.data,e,t)}})}addNode(e,t){const s=p.getMousePosition(e,this.props.svg);let n=this.state.anno.data.slice(0,t);n.push(s);const r=this.state.anno.data.slice(t),h={...this.state.anno,data:n.concat(r)};this.setState({anno:h}),this.performedAction(h,i.ANNO_ADDED_NODE)}removeNode(e,t){let s=[...this.state.anno.data];s.splice(t,1);const n={...this.state.anno,data:s};this.setState({anno:n}),this.performedAction(n,i.ANNO_REMOVED_SPECIFIC_NODE)}removeLastNode(){const e={...this.state.anno,data:[...this.state.anno.data.slice(0,this.state.anno.data.length-1)],selectedNode:this.state.anno.selectedNode-1};this.setState({anno:e}),this.performedAction(e,i.ANNO_REMOVED_NODE)}updateAnnoByMousePos(e,t){const s=p.getMousePosition(e,this.props.svg);let n=[...this.state.anno.data];n[t].x=s.x,n[t].y=s.y,this.setState({anno:{...this.state.anno,data:n}})}getResult(){return this.state.anno}renderNodes(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case o.MOVE:return null;case o.EDIT:case o.CREATE:return a.jsx(c,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(e,t)=>this.onNodeMouseDown(e,t),onMouseUp:(e,t)=>this.onNodeMouseUp(e,t),onDoubleClick:(e,t)=>this.onNodeDoubleClick(e,t),onMouseMove:(e,t)=>this.onNodeMouseMove(e,t)},this.state.anno.selectedNode);default:return this.state.anno.data.map((e,t)=>a.jsx(c,{anno:this.state.anno.data,idx:t,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(s,n)=>this.onNodeMouseDown(s,n),onMouseUp:(s,n)=>this.onNodeMouseUp(s,n),onDoubleClick:(s,n)=>this.onNodeDoubleClick(s,n),onMouseMove:(s,n)=>this.onNodeMouseMove(s,n)},t))}}renderEdges(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case o.VIEW:case o.ADD:let e=this.state.anno.data.map((t,s)=>a.jsx(d,{anno:this.state.anno.data,idx:s,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(n,r)=>{this.onEdgeMouseDown(n,r)}},s));return e.push(a.jsx(d,{anno:this.state.anno.data,closingEdge:!0,idx:0,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(t,s)=>{this.onEdgeMouseDown(t,s)}},e.length)),e;default:return null}}renderPolygon(){return a.jsx("polygon",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:this.props.style,className:this.props.className})}renderInfSelectionArea(){switch(this.state.anno.mode){case o.MOVE:return a.jsx(l,{enable:!0,svg:this.props.svg});default:return null}}render(){return this.state.anno?a.jsxs("g",{onMouseMove:e=>this.onMouseMove(e),onMouseUp:e=>this.onMouseUp(e),onMouseDown:e=>this.onMouseDown(e),children:[this.renderPolygon(),this.renderEdges(),this.renderNodes(),this.renderInfSelectionArea()]}):a.jsx("g",{})}}module.exports=N;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as n,jsxs as N}from"react/jsx-runtime";import{Component as M}from"react";import l from"./Edge.js";import u from"./Node.js";import D from"./InfSelectionArea.js";import{move as g}from"../utils/transform.js";import{ANNO_MOVED as f,ANNO_EDITED as A,ANNO_CREATED_NODE as w,ANNO_CREATED_FINAL_NODE as E,ANNO_ADDED_NODE as y,ANNO_REMOVED_SPECIFIC_NODE as v,ANNO_REMOVED_NODE as S}from"../types/canvasActions.js";/* empty css */import{CREATE as r,MOVE as a,VIEW as i,EDIT as h,ADD as p}from"../types/modes.js";import{getMousePosition as m}from"../utils/mouse.js";class T extends M{constructor(t){super(t),this.state={anno:void 0}}componentDidMount(){if(this.props.anno.mode===r){const t=this.props.anno.data[0],e={...this.props.anno,data:[{x:t.x,y:t.y},{x:t.x+1,y:t.y}],selectedNode:1};this.setState({anno:e})}else this.setState({anno:{...this.props.anno}})}componentDidUpdate(t){t.anno!==this.props.anno&&this.setState({anno:{...this.props.anno}})}onMouseMove(t){switch(this.state.anno.mode){case a:this.move(t.movementX/this.props.svg.scale,t.movementY/this.props.svg.scale);break}}onMouseUp(t){switch(this.state.anno.mode){case a:t.button===0&&(this.performedAction(this.state.anno,f),this.requestModeChange(this.state.anno,i));break}}onMouseDown(t){switch(this.state.anno.mode){case i:t.button===0&&this.props.isSelected&&this.requestModeChange(this.state.anno,a);break}}onNodeMouseUp(t,e){switch(this.state.anno.mode){case h:this.performedAction(this.state.anno,A),this.requestModeChange(this.state.anno,i);break}}onNodeMouseDown(t,e){switch(this.state.anno.mode){case r:if(t.button===2){let s=[...this.state.anno.data];s.push({x:s[e].x,y:s[e].y});const o={...this.state.anno,data:s,selectedNode:this.state.anno.selectedNode+1};this.setState({anno:o}),this.performedAction(o,w)}break;case i:t.button===0&&this.requestModeChange({...this.state.anno,selectedNode:e},h);break;case p:t.button===0&&this.removeNode(t,e);break}}onNodeMouseMove(t,e){switch(this.state.anno.mode){case r:this.updateAnnoByMousePos(t,e);break;case h:t.stopPropagation(),this.updateAnnoByMousePos(t,e);break}}onNodeDoubleClick(t,e){switch(this.state.anno.mode){case r:this.performedAction(this.state.anno,E);break}}onEdgeMouseDown(t,e){switch(this.state.anno.mode){case p:this.addNode(t,e);break;case i:t.button===0&&this.requestModeChange(this.state.anno,a);break}}performedAction(t,e){this.props.onAction&&this.props.onAction(t,e)}toPolygonStr(t){return t.map(e=>`${e.x},${e.y}`).join(" ")}requestModeChange(t,e){this.props.onModeChangeRequest(t,e)}move(t,e){this.setState({anno:{...this.state.anno,data:g(this.state.anno.data,t,e)}})}addNode(t,e){const s=m(t,this.props.svg);let o=this.state.anno.data.slice(0,e);o.push(s);const d=this.state.anno.data.slice(e),c={...this.state.anno,data:o.concat(d)};this.setState({anno:c}),this.performedAction(c,y)}removeNode(t,e){let s=[...this.state.anno.data];s.splice(e,1);const o={...this.state.anno,data:s};this.setState({anno:o}),this.performedAction(o,v)}removeLastNode(){const t={...this.state.anno,data:[...this.state.anno.data.slice(0,this.state.anno.data.length-1)],selectedNode:this.state.anno.selectedNode-1};this.setState({anno:t}),this.performedAction(t,S)}updateAnnoByMousePos(t,e){const s=m(t,this.props.svg);let o=[...this.state.anno.data];o[e].x=s.x,o[e].y=s.y,this.setState({anno:{...this.state.anno,data:o}})}getResult(){return this.state.anno}renderNodes(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case a:return null;case h:case r:return n(u,{anno:this.state.anno.data,idx:this.state.anno.selectedNode,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(t,e)=>this.onNodeMouseDown(t,e),onMouseUp:(t,e)=>this.onNodeMouseUp(t,e),onDoubleClick:(t,e)=>this.onNodeDoubleClick(t,e),onMouseMove:(t,e)=>this.onNodeMouseMove(t,e)},this.state.anno.selectedNode);default:return this.state.anno.data.map((t,e)=>n(u,{anno:this.state.anno.data,idx:e,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,mode:this.state.anno.mode,svg:this.props.svg,onMouseDown:(s,o)=>this.onNodeMouseDown(s,o),onMouseUp:(s,o)=>this.onNodeMouseUp(s,o),onDoubleClick:(s,o)=>this.onNodeDoubleClick(s,o),onMouseMove:(s,o)=>this.onNodeMouseMove(s,o)},e))}}renderEdges(){if(!this.props.isSelected)return null;switch(this.state.anno.mode){case i:case p:let t=this.state.anno.data.map((e,s)=>n(l,{anno:this.state.anno.data,idx:s,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(o,d)=>{this.onEdgeMouseDown(o,d)}},s));return t.push(n(l,{anno:this.state.anno.data,closingEdge:!0,idx:0,style:this.props.style,className:this.props.className,isSelected:this.props.isSelected,onMouseDown:(e,s)=>{this.onEdgeMouseDown(e,s)}},t.length)),t;default:return null}}renderPolygon(){return n("polygon",{points:this.toPolygonStr(this.state.anno.data),fill:"none",stroke:"purple",style:this.props.style,className:this.props.className})}renderInfSelectionArea(){switch(this.state.anno.mode){case a:return n(D,{enable:!0,svg:this.props.svg});default:return null}}render(){return this.state.anno?N("g",{onMouseMove:t=>this.onMouseMove(t),onMouseUp:t=>this.onMouseUp(t),onMouseDown:t=>this.onMouseDown(t),children:[this.renderPolygon(),this.renderEdges(),this.renderNodes(),this.renderInfSelectionArea()]}):n("g",{})}}export{T as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const a=require("../../models/AnnotationMode.cjs"),r=require("../../models/AnnotationStatus.cjs");class d{constructor(t,s,e,o=a.CREATE,i=r.CREATING,n=""){this.internalId=t,this.externalId=n,this.labelIds=[],this.type=s,this.mode=o,this.status=i,this.coordinates=e,this.selectedNode=1,this.timestamp=performance.now(),this.annoTime=0}}module.exports=d;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import a from"../../models/AnnotationMode.js";import r from"../../models/AnnotationStatus.js";class l{constructor(t,o,s,i=a.CREATE,e=r.CREATING,n=""){this.internalId=t,this.externalId=n,this.labelIds=[],this.type=o,this.mode=i,this.status=e,this.coordinates=s,this.selectedNode=1,this.timestamp=performance.now(),this.annoTime=0}}export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const s=(t,n)=>{const o={...t};return o.coordinates.push(n),o},a=t=>{const n={...t};return n.timestamp=performance.now(),n},r=t=>{const n={...t},o=performance.now(),e=(o-n.timestamp)/1e3;return n.annoTime+=e,n.timestamp=o,[n,e]},i={addNode:s,startAnnotimeMeasure:a,stopAnnotimeMeasure:r};module.exports=i;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=(t,n)=>{const o={...t};return o.coordinates.push(n),o},s=t=>{const n={...t};return n.timestamp=performance.now(),n},r=t=>{const n={...t},o=performance.now(),e=(o-n.timestamp)/1e3;return n.annoTime+=e,n.timestamp=o,[n,e]},i={addNode:a,startAnnotimeMeasure:s,stopAnnotimeMeasure:r};export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),h=require("../../models/AnnotationTool.cjs"),b=require("../../utils/color.cjs"),F=require("./tools/Point.cjs"),O=require("./tools/Line.cjs"),T=require("./atoms/AnnoBar.cjs"),p=require("../../models/CanvasAction.cjs"),w=require("./tools/BBox.cjs"),v=require("./tools/Polygon.cjs"),i=require("react"),r=require("../../models/AnnotationMode.cjs"),z=({scaledAnnotation:e,annotationSettings:l,possibleLabels:M,svgScale:s,pageToStageOffset:C,strokeWidth:j,nodeRadius:m,isSelected:d,isDisabled:N=!1,onFinishAnnoCreate:R,onLabelIconClicked:L,onAction:B=(n,a)=>{},onAnnoChanged:y=n=>{},onAnnotationModeChange:P=n=>{}})=>{const[n,a]=i.useState(e.coordinates),[t,u]=i.useState(e.mode),[V,g]=i.useState(!1),A=i.useRef(n);i.useEffect(()=>{A.current=n},[n]);const I=()=>{u(r.VIEW);const o={...e,coordinates:A.current};R(o)},W=o=>M.find(f=>f.id===o),q=(()=>{if(!e.labelIds||e.labelIds.length==0)return b.getDefaultColor();const o=W(e.labelIds[0]);return o===void 0||o.color===void 0?b.getDefaultColor():o.color})(),_={stroke:q,fill:q,strokeWidth:j/s,r:m/s},E=o=>{a(o);let f=o;[r.ADD,r.MOVE].includes(t)&&(f=o.slice(0,-1)),y({...e,coordinates:f})},x=o=>{t!==r.CREATE&&u(r.MOVE),a(o)},D=()=>{u(r.VIEW),y({...e,coordinates:A.current})};i.useEffect(()=>{P(t)},[t]),i.useEffect(()=>{t!==r.CREATE&&a(e.coordinates)},[e]);const k=()=>{switch(e.type){case h.Point:return c.jsx(F,{isSelected:d,annotationSettings:l,coordinates:n[0],pageToStageOffset:C,svgScale:s,style:_,onMoving:o=>{u(r.MOVE),a([o])},onMoved:D,onIsDraggingStateChanged:g});case h.Line:return c.jsx(O,{annotationSettings:l,coordinates:n,isSelected:d,pageToStageOffset:C,annotationMode:t,setAnnotationMode:u,svgScale:s,style:_,onAddNode:E,onDeleteNode:E,onMoving:x,onMoved:D,onIsDraggingStateChanged:g,onFinishAnnoCreate:I});case h.BBox:return c.jsx(w,{annotationMode:t,annotationSettings:l,startCoords:n[0],endCoords:n[1],isSelected:d,pageToStageOffset:C,style:_,svgScale:s,onDeleteNode:()=>{console.log("TODO")},onIsDraggingStateChanged:g,onFinishAnnoCreate:I,onMoving:x,onMoved:D});case h.Polygon:return c.jsx(v,{annotationSettings:l,coordinates:n,isSelected:d,isDisabled:N,pageToStageOffset:C,annotationMode:t,setAnnotationMode:u,svgScale:s,style:_,onAddNode:E,onDeleteNode:E,onMoving:x,onMoved:D,onIsDraggingStateChanged:g,onFinishAnnoCreate:I})}};return c.jsxs("g",{onClick:o=>{o.stopPropagation(),B(e,p.ANNO_SELECTED)},children:[!V&&t!==r.CREATE&&c.jsx(T,{annotationCoordinates:n,canLabel:l.canLabel,labels:M,color:q,isSelected:d,selectedLabelIds:e.labelIds,style:_,svgScale:s,onLabelIconClicked:L}),k()]})};module.exports=z;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as T,jsx as u}from"react/jsx-runtime";import D from"../../models/AnnotationTool.js";import{getDefaultColor as L}from"../../utils/color.js";import j from"./tools/Point.js";import w from"./tools/Line.js";import q from"./atoms/AnnoBar.js";import v from"../../models/CanvasAction.js";import z from"./tools/BBox.js";import G from"./tools/Polygon.js";import{useState as y,useRef as H,useEffect as b}from"react";import t from"../../models/AnnotationMode.js";const eo=({scaledAnnotation:r,annotationSettings:d,possibleLabels:A,svgScale:s,pageToStageOffset:a,strokeWidth:_,nodeRadius:x,isSelected:l,isDisabled:B=!1,onFinishAnnoCreate:P,onLabelIconClicked:R,onAction:V=(n,c)=>{},onAnnoChanged:N=n=>{},onAnnotationModeChange:W=n=>{}})=>{const[n,c]=y(r.coordinates),[e,i]=y(r.mode),[k,f]=y(!1),h=H(n);b(()=>{h.current=n},[n]);const p=()=>{i(t.VIEW);const o={...r,coordinates:h.current};P(o)},F=o=>A.find(E=>E.id===o),I=(()=>{if(!r.labelIds||r.labelIds.length==0)return L();const o=F(r.labelIds[0]);return o===void 0||o.color===void 0?L():o.color})(),m={stroke:I,fill:I,strokeWidth:_/s,r:x/s},C=o=>{c(o);let E=o;[t.ADD,t.MOVE].includes(e)&&(E=o.slice(0,-1)),N({...r,coordinates:E})},M=o=>{e!==t.CREATE&&i(t.MOVE),c(o)},g=()=>{i(t.VIEW),N({...r,coordinates:h.current})};b(()=>{W(e)},[e]),b(()=>{e!==t.CREATE&&c(r.coordinates)},[r]);const O=()=>{switch(r.type){case D.Point:return u(j,{isSelected:l,annotationSettings:d,coordinates:n[0],pageToStageOffset:a,svgScale:s,style:m,onMoving:o=>{i(t.MOVE),c([o])},onMoved:g,onIsDraggingStateChanged:f});case D.Line:return u(w,{annotationSettings:d,coordinates:n,isSelected:l,pageToStageOffset:a,annotationMode:e,setAnnotationMode:i,svgScale:s,style:m,onAddNode:C,onDeleteNode:C,onMoving:M,onMoved:g,onIsDraggingStateChanged:f,onFinishAnnoCreate:p});case D.BBox:return u(z,{annotationMode:e,annotationSettings:d,startCoords:n[0],endCoords:n[1],isSelected:l,pageToStageOffset:a,style:m,svgScale:s,onDeleteNode:()=>{console.log("TODO")},onIsDraggingStateChanged:f,onFinishAnnoCreate:p,onMoving:M,onMoved:g});case D.Polygon:return u(G,{annotationSettings:d,coordinates:n,isSelected:l,isDisabled:B,pageToStageOffset:a,annotationMode:e,setAnnotationMode:i,svgScale:s,style:m,onAddNode:C,onDeleteNode:C,onMoving:M,onMoved:g,onIsDraggingStateChanged:f,onFinishAnnoCreate:p})}};return T("g",{onClick:o=>{o.stopPropagation(),V(r,v.ANNO_SELECTED)},children:[!k&&e!==t.CREATE&&u(q,{annotationCoordinates:n,canLabel:d.canLabel,labels:A,color:I,isSelected:l,selectedLabelIds:r.labelIds,style:m,svgScale:s,onLabelIconClicked:R}),O()]})};export{eo as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),n=require("react"),d=require("../../../utils/transform2.cjs"),R=require("./DaviIcon.cjs"),z=10,l=15,F=3,W=({annotationCoordinates:y,canLabel:T,color:E,labels:b,selectedLabelIds:c=[],isSelected:p,svgScale:t,style:u,onLabelIconClicked:_})=>{const[e,m]=n.useState({x:0,y:0}),[a,P]=n.useState(0),[j,B]=n.useState(0),[f,L]=n.useState(0),[h,w]=n.useState(""),x=n.useRef(null);n.useEffect(()=>{w(A())},[c]),n.useEffect(()=>{const s=d.default.getTopPoint(y),i=d.default.getMostLeftPoints(s)[0],o={x:i.x+7/t,y:i.y-10/t};m(o);const D=Math.ceil(z/t);L(D),B(l/t)},[t]),n.useEffect(()=>{if(x===void 0)return;const o=(x.current.getBoundingClientRect().width+F)/t;P(o)},[x,h,f]);const A=()=>{const i=b.filter(o=>c.includes(o.id)).map(o=>o.name).join(", ");return i.length?i:"no label"};return r.jsxs("g",{children:[p&&T&&r.jsx(R,{x:e.x-33/t,y:e.y-30/t,color:E,size:60/t,onClick:()=>_(e)}),r.jsx("rect",{x:e.x,y:e.y-6/(t*1.2),width:a,height:j,rx:5/t,opacity:"0.5",style:u}),r.jsx("text",{x:e.x+1/t,y:e.y+6/t,fill:"white",textAnchor:"start",alignmentBaseline:"central",ref:x,fontSize:`${f}pt`,children:h}),r.jsx("rect",{x:e.x,y:e.y-6/(t*1.2),width:a,height:l,rx:5/t,opacity:"0.01",style:u,onContextMenu:s=>s.preventDefault()})]})};module.exports=W;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as _,jsx as x}from"react/jsx-runtime";import{useState as r,useRef as C,useEffect as c}from"react";import m from"../../../utils/transform2.js";import H from"./DaviIcon.js";const R=10,p=15,j=3,U=({annotationCoordinates:u,canLabel:y,color:T,labels:b,selectedLabelIds:h=[],isSelected:E,svgScale:t,style:f,onLabelIconClicked:P})=>{const[e,B]=r({x:0,y:0}),[a,L]=r(0),[w,D]=r(0),[d,z]=r(0),[l,A]=r(""),s=C(null);c(()=>{A(F())},[h]),c(()=>{const i=m.getTopPoint(u),o=m.getMostLeftPoints(i)[0],n={x:o.x+7/t,y:o.y-10/t};B(n);const W=Math.ceil(R/t);z(W),D(p/t)},[t]),c(()=>{if(s===void 0)return;const n=(s.current.getBoundingClientRect().width+j)/t;L(n)},[s,l,d]);const F=()=>{const o=b.filter(n=>h.includes(n.id)).map(n=>n.name).join(", ");return o.length?o:"no label"};return _("g",{children:[E&&y&&x(H,{x:e.x-33/t,y:e.y-30/t,color:T,size:60/t,onClick:()=>P(e)}),x("rect",{x:e.x,y:e.y-6/(t*1.2),width:a,height:w,rx:5/t,opacity:"0.5",style:f}),x("text",{x:e.x+1/t,y:e.y+6/t,fill:"white",textAnchor:"start",alignmentBaseline:"central",ref:s,fontSize:`${d}pt`,children:l}),x("rect",{x:e.x,y:e.y-6/(t*1.2),width:a,height:p,rx:5/t,opacity:"0.01",style:f,onContextMenu:i=>i.preventDefault()})]})};export{U as default};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),r=({x:n,y:s,color:e,size:t=60,onClick:l=()=>{}})=>{const i=t/1400;return c.jsxs("g",{transform:`translate(${n} ${s}) scale(${i})`,fill:e,onClick:l,children:[c.jsx("path",{id:"Maps",d:`M620.561,817.217c-1.568-3.62-3.771-7.101-4.611-10.885
|
|
2
|
+
c-24.452-109.811-74.341-207.569-139.215-298.675c-27.507-38.628-55.814-77.404-77.438-119.371
|
|
3
|
+
C324.363,242.85,402.696,58.71,574.209,26.508c145.509-27.32,282.953,75.871,296.543,222.773
|
|
4
|
+
c4.659,50.356-7.471,97.96-32.152,141.022c-27.812,48.526-58.75,95.364-90.073,141.758
|
|
5
|
+
c-50.917,75.411-91.062,155.558-113.421,244.091c-2.438,9.652-3.936,19.543-6.271,29.227c-0.992,4.104-3.023,7.961-4.584,11.93
|
|
6
|
+
C623.021,817.277,621.789,817.247,620.561,817.217z`}),c.jsx("path",{id:"Text",fillRule:"evenodd",clipRule:"evenodd",fill:"#FFFFFF",d:`M724.709,250.898
|
|
7
|
+
c-0.055-3.974,0.047-7.949,0.033-11.923c-0.007-1.228-1.54-2.767-2.76-2.777c-2.428-0.021-4.862-0.015-7.29-0.015
|
|
8
|
+
c-22.466,0.001-44.934,0.005-67.404,0.009c-2.475,0.001-3.658,1.154-3.658,3.588c-0.001,47.365-0.001,94.73-0.001,142.096
|
|
9
|
+
c0,13.526,0,27.05,0.001,40.577c0,2.305,1.274,3.584,3.562,3.59c6.623,0.004,9.256-0.07,19.873,0.004
|
|
10
|
+
c10.618,0.072,14.146,8.543,14.146,14.189c-0.002,5.645-4.233,13.055-14.299,13.367c-13.135,0.061-26.277-0.02-39.414-0.014
|
|
11
|
+
c-14.575,0.004-29.146,0.004-43.722,0.02c-4.191-0.084-13.717-2.789-13.717-13.492s6.233-13.643,13.132-14.117
|
|
12
|
+
c4.979,0.037,13.802,0.057,20.701,0.049c1.695,0,3.11-1.537,3.11-3.361c0.003-13.912-0.004-27.823-0.004-41.736
|
|
13
|
+
c0-30.252,0-60.503,0.002-90.754c0.002-17.03,0.005-33.649,0.002-50.678c0-1.991-1.38-3.336-3.396-3.336
|
|
14
|
+
c-24.79,0-49.577,0-74.362,0c-2.133,0-3.38,1.22-3.383,3.308c-0.006,3.754-0.011,7.509,0.005,11.262
|
|
15
|
+
c-0.023,6.339-3.067,13.143-12.456,13.143c-9.389,0-14.337-4.647-14.915-13.23c-0.128-4.305,0.004-8.612,0.004-12.918
|
|
16
|
+
c0-8.392,0-16.781,0-25.173c0-0.321,0.228-5.156,4.091-9.277c3.864-4.122,8.014-3.822,8.445-3.822
|
|
17
|
+
c25.835,0.003,51.672,0.002,77.507,0.002c46.813,0.001,140.443,0.001,140.443,0.001s6.153-0.088,10.926-0.052
|
|
18
|
+
c0.3-0.008,5.713,0.363,9.178,3.994c3.46,3.631,3.046,8.407,3.046,8.635c-0.007,12.862,0.079,25.725-0.003,38.587
|
|
19
|
+
c-0.074,8.051-6.938,12.819-13.703,12.847C731.482,263.519,724.956,259.059,724.709,250.898z`})]})};module.exports=r;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{jsxs as d,jsx as c}from"react/jsx-runtime";const o=({x:n,y:e,color:l,size:s=60,onClick:t=()=>{}})=>{const a=s/1400;return d("g",{transform:`translate(${n} ${e}) scale(${a})`,fill:l,onClick:t,children:[c("path",{id:"Maps",d:`M620.561,817.217c-1.568-3.62-3.771-7.101-4.611-10.885
|
|
2
|
+
c-24.452-109.811-74.341-207.569-139.215-298.675c-27.507-38.628-55.814-77.404-77.438-119.371
|
|
3
|
+
C324.363,242.85,402.696,58.71,574.209,26.508c145.509-27.32,282.953,75.871,296.543,222.773
|
|
4
|
+
c4.659,50.356-7.471,97.96-32.152,141.022c-27.812,48.526-58.75,95.364-90.073,141.758
|
|
5
|
+
c-50.917,75.411-91.062,155.558-113.421,244.091c-2.438,9.652-3.936,19.543-6.271,29.227c-0.992,4.104-3.023,7.961-4.584,11.93
|
|
6
|
+
C623.021,817.277,621.789,817.247,620.561,817.217z`}),c("path",{id:"Text",fillRule:"evenodd",clipRule:"evenodd",fill:"#FFFFFF",d:`M724.709,250.898
|
|
7
|
+
c-0.055-3.974,0.047-7.949,0.033-11.923c-0.007-1.228-1.54-2.767-2.76-2.777c-2.428-0.021-4.862-0.015-7.29-0.015
|
|
8
|
+
c-22.466,0.001-44.934,0.005-67.404,0.009c-2.475,0.001-3.658,1.154-3.658,3.588c-0.001,47.365-0.001,94.73-0.001,142.096
|
|
9
|
+
c0,13.526,0,27.05,0.001,40.577c0,2.305,1.274,3.584,3.562,3.59c6.623,0.004,9.256-0.07,19.873,0.004
|
|
10
|
+
c10.618,0.072,14.146,8.543,14.146,14.189c-0.002,5.645-4.233,13.055-14.299,13.367c-13.135,0.061-26.277-0.02-39.414-0.014
|
|
11
|
+
c-14.575,0.004-29.146,0.004-43.722,0.02c-4.191-0.084-13.717-2.789-13.717-13.492s6.233-13.643,13.132-14.117
|
|
12
|
+
c4.979,0.037,13.802,0.057,20.701,0.049c1.695,0,3.11-1.537,3.11-3.361c0.003-13.912-0.004-27.823-0.004-41.736
|
|
13
|
+
c0-30.252,0-60.503,0.002-90.754c0.002-17.03,0.005-33.649,0.002-50.678c0-1.991-1.38-3.336-3.396-3.336
|
|
14
|
+
c-24.79,0-49.577,0-74.362,0c-2.133,0-3.38,1.22-3.383,3.308c-0.006,3.754-0.011,7.509,0.005,11.262
|
|
15
|
+
c-0.023,6.339-3.067,13.143-12.456,13.143c-9.389,0-14.337-4.647-14.915-13.23c-0.128-4.305,0.004-8.612,0.004-12.918
|
|
16
|
+
c0-8.392,0-16.781,0-25.173c0-0.321,0.228-5.156,4.091-9.277c3.864-4.122,8.014-3.822,8.445-3.822
|
|
17
|
+
c25.835,0.003,51.672,0.002,77.507,0.002c46.813,0.001,140.443,0.001,140.443,0.001s6.153-0.088,10.926-0.052
|
|
18
|
+
c0.3-0.008,5.713,0.363,9.178,3.994c3.46,3.631,3.046,8.407,3.046,8.635c-0.007,12.862,0.079,25.725-0.003,38.587
|
|
19
|
+
c-0.074,8.051-6.938,12.819-13.703,12.847C731.482,263.519,724.956,259.059,724.709,250.898z`})]})};export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const d=require("react/jsx-runtime"),g=require("../../../utils/mouse2.cjs"),m=({startCoordinate:s,endCoordinate:t,isDisabled:o=!1,pageToStageOffset:n,style:r,svgScale:u,onAddNode:c=()=>{},onDoubleClick:i=()=>{},onMouseDown:x,onMouseMove:l})=>{const a=e=>{const y=g.getAntiScaledMouseStagePosition(e,n,u);c(y)};return d.jsx("line",{x1:s.x,y1:s.y,x2:t.x,y2:t.y,style:r,onClick:e=>e.ctrlKey&&a(e),onDoubleClick:i,onMouseDown:x,onMouseMove:l,onContextMenu:e=>e.preventDefault(),"stroke-dasharray":o?"10,5":"0"})};module.exports=m;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import f from"../../../utils/mouse2.js";const p=({startCoordinate:o,endCoordinate:t,isDisabled:s=!1,pageToStageOffset:r,style:n,svgScale:a,onAddNode:l=()=>{},onDoubleClick:u=()=>{},onMouseDown:x,onMouseMove:c})=>{const m=e=>{const y=f.getAntiScaledMouseStagePosition(e,r,a);l(y)};return d("line",{x1:o.x,y1:o.y,x2:t.x,y2:t.y,style:n,onClick:e=>e.ctrlKey&&m(e),onDoubleClick:u,onMouseDown:x,onMouseMove:c,onContextMenu:e=>e.preventDefault(),"stroke-dasharray":s?"10,5":"0"})};export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),n=require("react"),A=require("../../../utils/mouse2.cjs"),C=({index:x,coordinates:t,annotationSettings:r,pageToStageOffset:v,svgScale:u,style:y,onDeleteNode:m,onMoving:p,onMoved:D,onIsDraggingStateChanged:E})=>{const[g,i]=n.useState(!1),[s,l]=n.useState(!1),[c,a]=n.useState(!1),f=n.useRef(c);n.useEffect(()=>{f.current=c},[c]);const M=e=>{if(!s)return;const w=A.getAntiScaledMouseStagePosition(e,v,u);(e.movementX!==0||e.movementY!==0)&&(a(!0),p(x,w))};n.useEffect(()=>{if(E(s),!s)return;const e=()=>{l(!1),f.current&&D(),a(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[s]);const d=e=>{r.canEdit&&(e.ctrlKey?m():l(!0))},I=()=>o.jsx("circle",{cx:t.x,cy:t.y,r:12/u,onMouseLeave:e=>r.canEdit&&i(!1),onMouseDown:d,onContextMenu:e=>e.preventDefault()}),j=()=>o.jsx("circle",{cx:t.x,cy:t.y,r:"100%",style:{opacity:0},onMouseMove:e=>M(e),onContextMenu:e=>e.preventDefault()});return o.jsxs("g",{children:[s&&j(),g&&I(),o.jsx("circle",{cx:t.x,cy:t.y,r:10/u,style:y,onMouseOver:()=>{r.canEdit&&i(!0)},onMouseDown:d,onMouseMove:e=>M(e),onContextMenu:e=>e.preventDefault()})]})};module.exports=C;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as C,jsx as u}from"react/jsx-runtime";import{useState as c,useRef as H,useEffect as m}from"react";import h from"../../../utils/mouse2.js";const R=({index:v,coordinates:t,annotationSettings:o,pageToStageOffset:x,svgScale:r,style:y,onDeleteNode:p,onMoving:D,onMoved:I,onIsDraggingStateChanged:g})=>{const[A,i]=c(!1),[n,l]=c(!1),[s,a]=c(!1),f=H(s);m(()=>{f.current=s},[s]);const M=e=>{if(!n)return;const w=h.getAntiScaledMouseStagePosition(e,x,r);(e.movementX!==0||e.movementY!==0)&&(a(!0),D(v,w))};m(()=>{if(g(n),!n)return;const e=()=>{l(!1),f.current&&I(),a(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[n]);const d=e=>{o.canEdit&&(e.ctrlKey?p():l(!0))},E=()=>u("circle",{cx:t.x,cy:t.y,r:12/r,onMouseLeave:e=>o.canEdit&&i(!1),onMouseDown:d,onContextMenu:e=>e.preventDefault()});return C("g",{children:[n&&u("circle",{cx:t.x,cy:t.y,r:"100%",style:{opacity:0},onMouseMove:e=>M(e),onContextMenu:e=>e.preventDefault()}),A&&E(),u("circle",{cx:t.x,cy:t.y,r:10/r,style:y,onMouseOver:()=>{o.canEdit&&i(!0)},onMouseDown:d,onMouseMove:e=>M(e),onContextMenu:e=>e.preventDefault()})]})};export{R as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const x=require("react/jsx-runtime"),s=require("react"),C=require("../../../models/AnnotationMode.cjs"),M=({coordinates:u,isSelected:n,isDisabled:r=!1,annotationMode:l,style:a,onFinishAnnoCreate:c=()=>{},onMouseDown:i,onMouseUp:p=()=>{},onMouseMove:y})=>{const f=u.map(o=>`${o.x},${o.y}`).join(" "),[g,t]=s.useState("pointer");s.useEffect(()=>{if(r)return t("not-allowed");t(n?"grab":"pointer")},[n,r]);const e={...a};return e.cursor=g,e.fillOpacity=n?0:.3,n&&r&&(e.stroke="none"),x.jsx("polygon",{points:f,style:e,onMouseDown:o=>{n&&t("grabbing"),i(o)},onMouseUp:o=>{t("grab"),p(o)},onDoubleClick:()=>l===C.CREATE&&c(),onMouseMove:y,onContextMenu:o=>o.preventDefault()})};module.exports=M;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import{useState as c,useEffect as C}from"react";import x from"../../../models/AnnotationMode.js";const E=({coordinates:s,isSelected:n,isDisabled:e=!1,annotationMode:u,style:f,onFinishAnnoCreate:p=()=>{},onMouseDown:a,onMouseUp:l=()=>{},onMouseMove:y})=>{const i=s.map(o=>`${o.x},${o.y}`).join(" "),[g,r]=c("pointer");C(()=>{if(e)return r("not-allowed");r(n?"grab":"pointer")},[n,e]);const t={...f};return t.cursor=g,t.fillOpacity=n?0:.3,n&&e&&(t.stroke="none"),m("polygon",{points:i,style:t,onMouseDown:o=>{n&&r("grabbing"),a(o)},onMouseUp:o=>{r("grab"),l(o)},onDoubleClick:()=>u===x.CREATE&&p(),onMouseMove:y,onContextMenu:o=>o.preventDefault()})};export{E as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const A=require("react/jsx-runtime"),u=require("react"),$=require("../atoms/Node.cjs"),d=require("../../../models/AnnotationMode.cjs"),G=require("../../../utils/mouse2.cjs"),H=require("../atoms/PolygonArea.cjs"),J=require("../atoms/Edge.cjs"),K=({annotationMode:m,annotationSettings:E,pageToStageOffset:w,startCoords:R,endCoords:p,svgScale:r,isSelected:f,style:_,onDeleteNode:X,onFinishAnnoCreate:Y,onIsDraggingStateChanged:v,onMoving:y,onMoved:b})=>{const n=[R,{x:R.x,y:p.y},p,{x:p.x,y:R.y}],[g,h]=u.useState(m===d.CREATE),[l,k]=u.useState(!1),[a,D]=u.useState(!1),[I,T]=u.useState(0),[C,x]=u.useState(!1),M=u.useRef(C);u.useEffect(()=>{M.current=C},[C]);const q=e=>{E.canEdit!==!1&&f&&m!==d.CREATE&&e.button===0&&k(!0)},U=e=>{E.canEdit!==!1&&f&&m!==d.CREATE&&e.button===0&&D(!0)},j=e=>{if(l){const t=[{...n[0]},{...n[2]}].map(o=>({x:o.x+=e.movementX/r,y:o.y+=e.movementY/r}));(e.movementX!==0||e.movementY!==0)&&(x(!0),y(t))}if(m===d.CREATE){const s=G.getAntiScaledMouseStagePosition(e,w,r),o=[[...n][0],s];y(o)}};u.useEffect(()=>{if(!g)return;const e=s=>{s.button===2&&(Y(),h(!1))};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[g]),u.useEffect(()=>{if(v(l),!l)return;const e=()=>{k(!1),M.current&&b(),x(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[l]),u.useEffect(()=>{if(v(a),!a)return;const e=()=>{D(!1),M.current&&b(),x(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[a]);const z=()=>n.map((s,t)=>A.jsx($,{index:t,annotationSettings:E,coordinates:s,pageToStageOffset:w,svgScale:r,style:_,onDeleteNode:()=>{const o=[...n];o.splice(t,1),X(o)},onMoving:(o,i)=>{const c=[n[0],n[2]];switch(o){case 0:c[0]=i;break;case 1:c[0].x=i.x,c[1].y=i.y;break;case 2:c[1]=i;break;case 3:c[1].x=i.x,c[0].y=i.y;break}y(c)},onMoved:()=>b(),onIsDraggingStateChanged:v},`node_${t}`)),L=(e,s)=>{const t=[n[0],n[2]];switch(e){case 0:t[0].x+=s.movementX/r;break;case 1:t[1].y+=s.movementY/r;break;case 2:t[1].x+=s.movementX/r;break;case 3:t[0].y+=s.movementY/r;break}(s.movementX!==0||s.movementY!==0)&&(x(!0),y(t))},B=()=>n.map((s,t)=>{const o=t+1<n.length?n[t+1]:n[0],i=t%2===0?"ew-resize":"ns-resize";return A.jsx(J,{startCoordinate:s,endCoordinate:o,pageToStageOffset:w,svgScale:r,style:{..._,cursor:i},onMouseDown:U,onMouseMove:c=>{T(t),a&&L(t,c)}},`edge_${t}`)}),N=e=>A.jsx("circle",{cx:n[0].x,cy:n[0].y,r:"100%",style:{opacity:0},onMouseDown:q,onMouseMove:s=>{e&&a&&L(I,s),!e&&j(s)},onContextMenu:s=>s.preventDefault()});return A.jsxs("g",{children:[(l||m===d.CREATE)&&N(!1),A.jsx(H,{annotationSettings:E,coordinates:n,isSelected:f,annotationMode:m,pageToStageOffset:w,style:_,svgScale:r,onIsDraggingStateChanged:v,onMouseDown:q,onMouseMove:j}),a&&N(!0),f&&E.canEdit&&B(),f&&m!==d.CREATE&&z()]})};module.exports=K;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as G,jsx as y}from"react/jsx-runtime";import{useState as l,useRef as H,useEffect as x}from"react";import J from"../atoms/Node.js";import i from"../../../models/AnnotationMode.js";import K from"../../../utils/mouse2.js";import Q from"../atoms/PolygonArea.js";import V from"../atoms/Edge.js";const re=({annotationMode:m,annotationSettings:f,pageToStageOffset:w,startCoords:R,endCoords:b,svgScale:t,isSelected:E,style:C,onDeleteNode:T,onFinishAnnoCreate:U,onIsDraggingStateChanged:p,onMoving:v,onMoved:M})=>{const n=[R,{x:R.x,y:b.y},b,{x:b.x,y:R.y}],[D,j]=l(m===i.CREATE),[a,L]=l(!1),[d,N]=l(!1),[z,B]=l(0),[g,A]=l(!1),k=H(g);x(()=>{k.current=g},[g]);const X=e=>{f.canEdit!==!1&&E&&m!==i.CREATE&&e.button===0&&L(!0)},_=e=>{f.canEdit!==!1&&E&&m!==i.CREATE&&e.button===0&&N(!0)},Y=e=>{if(a){const o=[{...n[0]},{...n[2]}].map(s=>({x:s.x+=e.movementX/t,y:s.y+=e.movementY/t}));(e.movementX!==0||e.movementY!==0)&&(A(!0),v(o))}if(m===i.CREATE){const r=K.getAntiScaledMouseStagePosition(e,w,t),s=[[...n][0],r];v(s)}};x(()=>{if(!D)return;const e=r=>{r.button===2&&(U(),j(!1))};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[D]),x(()=>{if(p(a),!a)return;const e=()=>{L(!1),k.current&&M(),A(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[a]),x(()=>{if(p(d),!d)return;const e=()=>{N(!1),k.current&&M(),A(!1)};return window.addEventListener("mouseup",e),()=>{window.removeEventListener("mouseup",e)}},[d]);const $=()=>n.map((r,o)=>y(J,{index:o,annotationSettings:f,coordinates:r,pageToStageOffset:w,svgScale:t,style:C,onDeleteNode:()=>{const s=[...n];s.splice(o,1),T(s)},onMoving:(s,c)=>{const u=[n[0],n[2]];switch(s){case 0:u[0]=c;break;case 1:u[0].x=c.x,u[1].y=c.y;break;case 2:u[1]=c;break;case 3:u[1].x=c.x,u[0].y=c.y;break}v(u)},onMoved:()=>M(),onIsDraggingStateChanged:p},`node_${o}`)),h=(e,r)=>{const o=[n[0],n[2]];switch(e){case 0:o[0].x+=r.movementX/t;break;case 1:o[1].y+=r.movementY/t;break;case 2:o[1].x+=r.movementX/t;break;case 3:o[0].y+=r.movementY/t;break}(r.movementX!==0||r.movementY!==0)&&(A(!0),v(o))},q=()=>n.map((r,o)=>{const s=o+1<n.length?n[o+1]:n[0],c=o%2===0?"ew-resize":"ns-resize";return y(V,{startCoordinate:r,endCoordinate:s,pageToStageOffset:w,svgScale:t,style:{...C,cursor:c},onMouseDown:_,onMouseMove:u=>{B(o),d&&h(o,u)}},`edge_${o}`)}),I=e=>y("circle",{cx:n[0].x,cy:n[0].y,r:"100%",style:{opacity:0},onMouseDown:X,onMouseMove:r=>{e&&d&&h(z,r),!e&&Y(r)},onContextMenu:r=>r.preventDefault()});return G("g",{children:[(a||m===i.CREATE)&&I(!1),y(Q,{annotationSettings:f,coordinates:n,isSelected:E,annotationMode:m,pageToStageOffset:w,style:C,svgScale:t,onIsDraggingStateChanged:p,onMouseDown:X,onMouseMove:Y}),d&&I(!0),E&&f.canEdit&&q(),E&&m!==i.CREATE&&$()]})};export{re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const A=require("react/jsx-runtime"),l=require("react"),L=require("../atoms/Node.cjs"),i=require("../../../models/AnnotationMode.cjs"),T=require("../atoms/Edge.cjs"),M=require("../../../utils/mouse2.cjs"),X=({annotationSettings:C,coordinates:n,isSelected:v,annotationMode:o,pageToStageOffset:m,svgScale:r,style:R,onAddNode:p,onDeleteNode:N,onFinishAnnoCreate:h,onMoving:d,onMoved:w,onIsDraggingStateChanged:_})=>{const[c,y]=l.useState(!1),[f,g]=l.useState(!1),a=l.useRef(f);l.useEffect(()=>{a.current=f},[f]);const q=t=>{if(C.canEdit!==!1&&(v&&o!==i.CREATE&&t.button===0&&y(!0),t.button===2&&o==i.CREATE)){const s=M.getAntiScaledMouseStagePosition(t,m,r);let e=[...n];e.push(s),p(e)}},x=t=>{if(c){const s=n.map(e=>({x:e.x+=t.movementX/r,y:e.y+=t.movementY/r}));(t.movementX!==0||t.movementY!==0)&&(g(!0),d(s))}if(o===i.CREATE){const s=M.getAntiScaledMouseStagePosition(t,m,r);let e=[...n];n.length>1&&(e=n.slice(0,-1)),e.push(s),d(e)}};l.useEffect(()=>{if(_(c),!c)return;const t=()=>{y(!1),a.current&&w(),g(!1)};return window.addEventListener("mouseup",t),()=>{window.removeEventListener("mouseup",t)}},[c]);const j=()=>A.jsx("circle",{cx:n[0].x,cy:n[0].y,r:"100%",style:{opacity:0},onMouseDown:q,onMouseMove:x,onContextMenu:t=>t.preventDefault()}),P=()=>n.map((s,e)=>A.jsx(L,{index:e,annotationSettings:C,coordinates:s,pageToStageOffset:m,svgScale:r,style:R,onDeleteNode:()=>{const u=[...n];u.splice(e,1),N(u)},onMoving:(u,E)=>{const D=[...n];D[u]=E,d(D)},onMoved:()=>w(),onIsDraggingStateChanged:_},`node_${e}`)),b=()=>n.map((s,e)=>{if(!(e+1>=n.length))return A.jsx(T,{startCoordinate:s,endCoordinate:n[e+1],pageToStageOffset:m,svgScale:r,style:R,onAddNode:u=>{const E=[...n];E.splice(e+1,0,u),p(E)},onDoubleClick:()=>o===i.CREATE&&h(),onMouseDown:q,onMouseMove:x},`edge_${e}`)}),I=v&&o!==i.CREATE;return A.jsxs("g",{children:[(c||o===i.CREATE)&&j(),b(),I&&P()]})};module.exports=X;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as Y,jsx as d}from"react/jsx-runtime";import{useState as P,useRef as _,useEffect as b}from"react";import $ from"../atoms/Node.js";import i from"../../../models/AnnotationMode.js";import k from"../atoms/Edge.js";import x from"../../../utils/mouse2.js";const H=({annotationSettings:A,coordinates:n,isSelected:p,annotationMode:r,pageToStageOffset:l,svgScale:s,style:C,onAddNode:v,onDeleteNode:I,onFinishAnnoCreate:L,onMoving:c,onMoved:w,onIsDraggingStateChanged:R})=>{const[m,y]=P(!1),[E,g]=P(!1),D=_(E);b(()=>{D.current=E},[E]);const M=t=>{if(A.canEdit!==!1&&(p&&r!==i.CREATE&&t.button===0&&y(!0),t.button===2&&r==i.CREATE)){const o=x.getAntiScaledMouseStagePosition(t,l,s);let e=[...n];e.push(o),v(e)}},N=t=>{if(m){const o=n.map(e=>({x:e.x+=t.movementX/s,y:e.y+=t.movementY/s}));(t.movementX!==0||t.movementY!==0)&&(g(!0),c(o))}if(r===i.CREATE){const o=x.getAntiScaledMouseStagePosition(t,l,s);let e=[...n];n.length>1&&(e=n.slice(0,-1)),e.push(o),c(e)}};b(()=>{if(R(m),!m)return;const t=()=>{y(!1),D.current&&w(),g(!1)};return window.addEventListener("mouseup",t),()=>{window.removeEventListener("mouseup",t)}},[m]);const T=()=>d("circle",{cx:n[0].x,cy:n[0].y,r:"100%",style:{opacity:0},onMouseDown:M,onMouseMove:N,onContextMenu:t=>t.preventDefault()}),a=()=>n.map((o,e)=>d($,{index:e,annotationSettings:A,coordinates:o,pageToStageOffset:l,svgScale:s,style:C,onDeleteNode:()=>{const u=[...n];u.splice(e,1),I(u)},onMoving:(u,f)=>{const h=[...n];h[u]=f,c(h)},onMoved:()=>w(),onIsDraggingStateChanged:R},`node_${e}`)),j=()=>n.map((o,e)=>{if(!(e+1>=n.length))return d(k,{startCoordinate:o,endCoordinate:n[e+1],pageToStageOffset:l,svgScale:s,style:C,onAddNode:u=>{const f=[...n];f.splice(e+1,0,u),v(f)},onDoubleClick:()=>r===i.CREATE&&L(),onMouseDown:M,onMouseMove:N},`edge_${e}`)}),X=p&&r!==i.CREATE;return Y("g",{children:[(m||r===i.CREATE)&&T(),j(),X&&a()]})};export{H as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),d=require("../atoms/Node.cjs"),j=({annotationSettings:n,coordinates:e,isSelected:o,pageToStageOffset:t,svgScale:i,style:s,onMoving:r,onMoved:u,onIsDraggingStateChanged:x})=>c.jsx(d,{index:0,annotationSettings:n,coordinates:e,pageToStageOffset:t,svgScale:i,style:s,onDeleteNode:()=>{},onMoving:(m,_)=>o&&r(_),onMoved:()=>u([e]),onIsDraggingStateChanged:x});module.exports=j;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as x}from"react/jsx-runtime";import l from"../atoms/Node.js";const M=({annotationSettings:e,coordinates:o,isSelected:n,pageToStageOffset:t,svgScale:r,style:d,onMoving:i,onMoved:m,onIsDraggingStateChanged:f})=>x(l,{index:0,annotationSettings:e,coordinates:o,pageToStageOffset:t,svgScale:r,style:d,onDeleteNode:()=>{},onMoving:(s,p)=>n&&i(p),onMoved:()=>m([o]),onIsDraggingStateChanged:f});export{M as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const A=require("react/jsx-runtime"),f=require("react"),X=require("../atoms/Node.cjs"),Y=require("../atoms/PolygonArea.cjs"),c=require("../../../models/AnnotationMode.cjs"),$=require("../atoms/Edge.cjs"),b=require("../../../utils/mouse2.cjs"),k=({annotationSettings:C,coordinates:n,isSelected:i,isDisabled:q=!1,annotationMode:u,pageToStageOffset:l,svgScale:o,style:d,onAddNode:x,onDeleteNode:h,onFinishAnnoCreate:j,onMoving:_,onMoved:P,onIsDraggingStateChanged:v})=>{const[m,D]=f.useState(!1),[w,M]=f.useState(!1),N=f.useRef(w);f.useEffect(()=>{N.current=w},[w]);const R=s=>{if(C.canEdit!==!1&&(i&&u!==c.CREATE&&s.button===0&&D(!0),s.button===2&&u==c.CREATE)){const t=b.getAntiScaledMouseStagePosition(s,l,o);let e=[...n];e.push(t),x(e)}},p=s=>{if(m){const t=n.map(e=>({x:e.x+=s.movementX/o,y:e.y+=s.movementY/o}));(s.movementX!==0||s.movementY!==0)&&(M(!0),_(t))}if(u===c.CREATE){const t=b.getAntiScaledMouseStagePosition(s,l,o);let e=[...n];n.length>1&&(e=n.slice(0,-1)),e.push(t),_(e)}};f.useEffect(()=>{if(v(m),!m)return;const s=()=>{D(!1),N.current&&P(),M(!1)};return window.addEventListener("mouseup",s),()=>{window.removeEventListener("mouseup",s)}},[m]);const I=()=>n.map((t,e)=>A.jsx(X,{index:e,annotationSettings:C,coordinates:t,pageToStageOffset:l,svgScale:o,style:d,onDeleteNode:()=>{const r=[...n];r.splice(e,1),h(r)},onMoving:(r,y)=>{const E=[...n];E[r]=y,_(E)},onMoved:()=>P(),onIsDraggingStateChanged:v},`node_${e}`)),L=()=>n.map((t,e)=>{const r=e+1<n.length?n[e+1]:n[0];return A.jsx($,{startCoordinate:t,endCoordinate:r,isDisabled:q&&i,pageToStageOffset:l,svgScale:o,style:d,onAddNode:y=>{const E=[...n];E.splice(e+1,0,y),x(E)},onDoubleClick:()=>u===c.CREATE&&j(),onMouseDown:R,onMouseMove:p},`edge_${e}`)}),T=()=>A.jsx("circle",{cx:n[0].x,cy:n[0].y,r:"100%",style:{opacity:0},onMouseDown:R,onMouseMove:p,onContextMenu:s=>s.preventDefault()});return A.jsxs("g",{children:[(m||u===c.CREATE)&&T(),A.jsx(Y,{annotationSettings:C,coordinates:n,isSelected:i,isDisabled:q,annotationMode:u,pageToStageOffset:l,style:d,svgScale:o,onFinishAnnoCreate:j,onIsDraggingStateChanged:v,onMouseDown:R,onMouseMove:p}),i&&C.canEdit&&L(),i&&u!==c.CREATE&&I()]})};module.exports=k;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as $,jsx as c}from"react/jsx-runtime";import{useState as j,useRef as k,useEffect as I}from"react";import U from"../atoms/Node.js";import g from"../atoms/PolygonArea.js";import m from"../../../models/AnnotationMode.js";import q from"../atoms/Edge.js";import L from"../../../utils/mouse2.js";const V=({annotationSettings:i,coordinates:o,isSelected:l,isDisabled:P=!1,annotationMode:t,pageToStageOffset:f,svgScale:s,style:p,onAddNode:D,onDeleteNode:T,onFinishAnnoCreate:M,onMoving:C,onMoved:N,onIsDraggingStateChanged:d})=>{const[E,b]=j(!1),[v,h]=j(!1),x=k(v);I(()=>{x.current=v},[v]);const w=r=>{if(i.canEdit!==!1&&(l&&t!==m.CREATE&&r.button===0&&b(!0),r.button===2&&t==m.CREATE)){const n=L.getAntiScaledMouseStagePosition(r,f,s);let e=[...o];e.push(n),D(e)}},y=r=>{if(E){const n=o.map(e=>({x:e.x+=r.movementX/s,y:e.y+=r.movementY/s}));(r.movementX!==0||r.movementY!==0)&&(h(!0),C(n))}if(t===m.CREATE){const n=L.getAntiScaledMouseStagePosition(r,f,s);let e=[...o];o.length>1&&(e=o.slice(0,-1)),e.push(n),C(e)}};I(()=>{if(d(E),!E)return;const r=()=>{b(!1),x.current&&N(),h(!1)};return window.addEventListener("mouseup",r),()=>{window.removeEventListener("mouseup",r)}},[E]);const X=()=>o.map((n,e)=>c(U,{index:e,annotationSettings:i,coordinates:n,pageToStageOffset:f,svgScale:s,style:p,onDeleteNode:()=>{const u=[...o];u.splice(e,1),T(u)},onMoving:(u,R)=>{const A=[...o];A[u]=R,C(A)},onMoved:()=>N(),onIsDraggingStateChanged:d},`node_${e}`)),Y=()=>o.map((n,e)=>{const u=e+1<o.length?o[e+1]:o[0];return c(q,{startCoordinate:n,endCoordinate:u,isDisabled:P&&l,pageToStageOffset:f,svgScale:s,style:p,onAddNode:R=>{const A=[...o];A.splice(e+1,0,R),D(A)},onDoubleClick:()=>t===m.CREATE&&M(),onMouseDown:w,onMouseMove:y},`edge_${e}`)}),_=()=>c("circle",{cx:o[0].x,cy:o[0].y,r:"100%",style:{opacity:0},onMouseDown:w,onMouseMove:y,onContextMenu:r=>r.preventDefault()});return $("g",{children:[(E||t===m.CREATE)&&_(),c(g,{annotationSettings:i,coordinates:o,isSelected:l,isDisabled:P,annotationMode:t,pageToStageOffset:f,style:p,svgScale:s,onFinishAnnoCreate:M,onIsDraggingStateChanged:d,onMouseDown:w,onMouseMove:y}),l&&i.canEdit&&Y(),l&&t!==m.CREATE&&X()]})};export{V as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const l=require("react/jsx-runtime"),c=require("react"),L=require("../models/AnnotationTool.cjs"),d=require("../models/EditorModes.cjs"),Se=require("../utils/KeyMapper.cjs"),i=require("../models/KeyAction.cjs"),ee=require("../Annotation/logic/Annotation.cjs"),xe=require("../models/CanvasAction.cjs"),ve=require("../Annotation/ui/AnnotationComponent.cjs"),we=require("../utils/mouse2.cjs"),v=require("../models/AnnotationMode.cjs"),be=require("./LabelInput.cjs"),pe=require("@fortawesome/react-fontawesome"),ke=require("@fortawesome/free-solid-svg-icons"),Re=require("../models/AnnotationStatus.cjs"),Ve=({annotations:ne=[],annotationSettings:w,image:K,isImageJunk:P=!1,isPolygonSelectionMode:j=!1,polygonOperationResult:b={annotationsToDelete:[],polygonsToCreate:[]},possibleLabels:q,preventScrolling:W=!0,selectedAnnotation:u,selectedAnnoTool:p,toolbarHeight:oe=0,uiConfig:Y,onAnnoCreated:te,onAnnoCreationFinished:se,onAnnoChanged:B,onRequestNewAnnoId:F,onSelectAnnotation:X})=>{const[M,g]=c.useState(d.VIEW),[A,U]=c.useState(0),[m,G]=c.useState({x:-1,y:-1}),[a,H]=c.useState([-1,-1]),[O,ce]=c.useState([-1,-1]),[E,$]=c.useState([-1,-1]),[r,y]=c.useState(1),[T,_]=c.useState([0,0]),[D,I]=c.useState(),N=c.useRef(null),C=c.useRef(null),ae=new Se(e=>de(e)),re=e=>{g(d.CREATE);const n=S([e]);p===L.BBox&&n.push(n[0]);const o=F(),t=new ee(o,p,n);if(te(t),p===L.Point){const s={...t,coordinates:[e]};R(s)}},ie=()=>{g(d.VIEW),U(0),G({x:-1,y:-1}),H([-1,-1]),$([-1,-1]),y(1),_([0,0]),I(void 0)};c.useEffect(()=>{ie()},[K]),c.useEffect(()=>{const{top:e,left:n}=C.current.getBoundingClientRect(),o={x:n+window.scrollX,y:e+window.scrollY};G(o)},[C,A,T]);const le=(e,n)=>{if(e[0]===0||e[1]===0||n[0]===0||n[1]===0)return 0;const o=n[0]/e[0],t=n[1]/e[1];return Math.min(o,t)},de=e=>{switch(e){case i.EDIT_LABEL:console.log("KeyAction TODO: EDIT_LABEL");break;case i.DELETE_ANNO:console.log("KeyAction TODO: DELETE_ANNO");break;case i.TOGGLE_ANNO_COMMENT_INPUT:console.log("KeyAction TODO: TOGGLE_ANNO_COMMENT_INPUT");break;case i.DELETE_ANNO_IN_CREATION:console.log("KeyAction TODO: DELETE_ANNO_IN_CREATION");break;case i.ENTER_ANNO_ADD_MODE:console.log("KeyAction TODO: ENTER_ANNO_ADD_MODE");break;case i.LEAVE_ANNO_ADD_MODE:console.log("KeyAction TODO: LEAVE_ANNO_ADD_MODE");break;case i.UNDO:console.log("KeyAction TODO: UNDO");break;case i.REDO:console.log("KeyAction TODO: REDO");break;case i.TRAVERSE_ANNOS:console.log("KeyAction TODO: TRAVERSE_ANNOS");break;case i.CAM_MOVE_LEFT:h(20*r,0);break;case i.CAM_MOVE_RIGHT:h(-20*r,0);break;case i.CAM_MOVE_UP:h(0,20*r);break;case i.CAM_MOVE_DOWN:h(0,-20*r);break;case i.CAM_MOVE_STOP:console.log("KeyAction TODO: CAM_MOVE_STOP");break;case i.COPY_ANNOTATION:console.log("KeyAction TODO: COPY_ANNOTATION");break;case i.PASTE_ANNOTATION:console.log("KeyAction TODO: PASTE_ANNOTATION");break;case i.RECREATE_ANNO:console.log("KeyAction TODO: RECREATE_ANNO");break;default:console.log("Unknown KeyAction",e);break}},h=(e,n)=>{let o=T[0]+e/r,t=T[1]+n/r;const s=O[0]*-.25,x=O[1]*-.25,f=O[0]*.75,V=O[1]*.75;o<s&&(o+=25),o>f&&(o-=25),t<x&&(t+=25),t>V&&(t-=25),_([o,t])},ue=e=>e.map(o=>({x:o.x*a[0],y:o.y*a[1]})),Ee=e=>{const n=E[0]/a[0];return e.map(t=>({x:t.x*n,y:t.y*n}))},k=e=>{const n=ue(e);return Ee(n)},Oe=(e=>E[0]<=0||E[1]<=0||a[0]<=0||a[1]<=0?[]:ne.map(o=>({...o,coordinates:k(o.coordinates)})))();c.useEffect(()=>{if(N.current===null)return;const{width:e,height:n}=N.current.getBoundingClientRect(),o=n-oe;ce([e,o])},[N]),c.useEffect(()=>{if(C.current===null)return;const{width:e,height:n}=C.current.getBoundingClientRect();H([e,n])},[C]),c.useEffect(()=>{if(O[0]<=0||O[1]<=0||a[0]<=0||a[1]<=0)return;const e=le(a,O);U(e)},[O,a]),c.useEffect(()=>{if(A===0)return;const e=[a[0]*A,a[1]*A];$(e)},[A]),c.useEffect(()=>{if(!j)return;const e=F();b.polygonsToCreate!==void 0&&b.polygonsToCreate.forEach(n=>{const o=new ee(e,L.Polygon,k(n),v.VIEW,Re.CREATED);R(o)})},[b]);const R=e=>{g(d.VIEW),e.mode=v.VIEW;const n=S(e.coordinates);e.coordinates=n,B(e),se(e)},ge=e=>{e.preventDefault(),ae.keyDown(e.key)},Ae=e=>{e.preventDefault()},Te=e=>{if(e.button!==0){if(e.button===1)g(d.CAMERA_MOVE);else if(e.button===2){if(!w.canCreate)return;const n=we.getAntiScaledMouseStagePosition(e,m,r);re(n)}}},fe=e=>e.map(o=>({x:o.x/A,y:o.y/A})),Ce=()=>{W&&(document.body.style.overflow="hidden")},_e=e=>{switch(e.button){case 1:g(d.VIEW);break}},z=e=>{M===d.CAMERA_MOVE&&h(e.movementX,e.movementY)},Ie=()=>{W&&(document.body.style.overflow="")},Ne=e=>{const o=e.deltaY<0?1:-1,t=N.current.getBoundingClientRect(),s=e.clientX-t.left,x=e.clientY-t.top;let f=o>0?r*1.25:r/1.25;const V=(s-T[0]*r)/r,De=(x-T[1]*r)/r,Q=s/f-V,Z=x/f-De;f<1?(y(1),_([0,0])):f>200?(y(200),_([Q,Z])):(y(f),_([Q,Z]))},he=(e,n)=>{switch(n){case xe.ANNO_SELECTED:const o={...e,coordinates:S([...e.coordinates])};X(o);break;default:console.log("Unknown Canvas Action:",n)}},S=e=>fe(e).map(s=>(s.x<0&&(s.x=0),s.y<0&&(s.y=0),s.x>a[0]&&(s.x=a[0]),s.y>a[1]&&(s.y=a[1]),s)).map(s=>({x:s.x/a[0],y:s.y/a[1]})),J=e=>{const n=S(e.coordinates),o={...e,coordinates:n};B(o)},Me=e=>{const n={x:e.x*r+m.x,y:e.y*r+m.y};I(n)},me=()=>{if(M===d.CAMERA_MOVE)return"";const e=Oe.map(n=>{if(!([d.CREATE,d.MOVE].includes(M)&&n.internalId!==(u==null?void 0:u.internalId)))return l.jsx(ve,{scaledAnnotation:n,annotationSettings:w,possibleLabels:q,svgScale:r,pageToStageOffset:m,nodeRadius:Y.nodeRadius,strokeWidth:Y.strokeWidth,isSelected:n.internalId===(u==null?void 0:u.internalId),isDisabled:j&&n.internalId===(u==null?void 0:u.internalId),onFinishAnnoCreate:R,onLabelIconClicked:Me,onAction:he,onAnnoChanged:J,onAnnotationModeChange:t=>{t===v.MOVE&&g(d.MOVE),M===d.MOVE&&t===v.VIEW&&g(d.VIEW)}},`annotationComponent_${n.internalId}`)});return l.jsx("g",{children:e})},ye=()=>l.jsx("circle",{cx:E[0]/2,cy:E[1]/2,r:"100%",style:{opacity:0},onContextMenu:e=>e.preventDefault(),onClick:()=>{I(void 0)}});return l.jsxs("div",{ref:N,style:{width:"100%",height:"100%"},children:[D&&l.jsx("div",{style:{position:"absolute",left:D.x,top:D.y},children:l.jsx(be,{selectedLabelsIds:u.labelIds,possibleLabels:q,isMultilabel:w.canHaveMultipleLabels,onLabelSelect:e=>{I(void 0);const n={...u,coordinates:k(u.coordinates),labelIds:[...e]};J(n)}})}),P&&l.jsxs("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center",color:"white"},children:[l.jsx(pe.FontAwesomeIcon,{icon:ke.faBan,size:"5x",style:{marginBottom:15}}),l.jsx("h2",{children:"Marked as Junk"})]}),l.jsxs("svg",{width:"100%",height:"100%",onKeyDown:ge,onKeyUp:Ae,onMouseMove:z,tabIndex:0,children:[l.jsxs("g",{transform:`scale(${r}) translate(${T[0]}, ${T[1]})`,onMouseOver:Ce,onMouseLeave:Ie,onMouseUp:_e,onWheel:Ne,onMouseMove:z,onClick:()=>{X(void 0)},children:[l.jsx("image",{onContextMenu:e=>e.preventDefault(),onMouseDown:Te,href:K,ref:C,width:E[0]>0?E[0]:void 0,height:E[1]>0?E[1]:void 0}),me()]}),D&&ye(),P&&l.jsx("rect",{x:"0",y:"0",width:E[0],height:E[1],style:{opacity:.8},onContextMenu:e=>e.preventDefault(),onClick:()=>{I(void 0)}})]})]})};module.exports=Ve;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as w,jsx as O}from"react/jsx-runtime";import{useState as E,useRef as ne,useEffect as A}from"react";import P from"../models/AnnotationTool.js";import i from"../models/EditorModes.js";import we from"../utils/KeyMapper.js";import c from"../models/KeyAction.js";import te from"../Annotation/logic/Annotation.js";import Se from"../models/CanvasAction.js";import xe from"../Annotation/ui/AnnotationComponent.js";import ke from"../utils/mouse2.js";import S from"../models/AnnotationMode.js";import Re from"./LabelInput.js";import{FontAwesomeIcon as Ve}from"@fortawesome/react-fontawesome";import{faBan as Le}from"@fortawesome/free-solid-svg-icons";import Ke from"../models/AnnotationStatus.js";const eo=({annotations:se=[],annotationSettings:x,image:W,isImageJunk:Y=!1,isPolygonSelectionMode:B=!1,polygonOperationResult:k={annotationsToDelete:[],polygonsToCreate:[]},possibleLabels:F,preventScrolling:X=!0,selectedAnnotation:l,selectedAnnoTool:R,toolbarHeight:re=0,uiConfig:U,onAnnoCreated:ae,onAnnoCreationFinished:ce,onAnnoChanged:G,onRequestNewAnnoId:H,onSelectAnnotation:$})=>{const[_,g]=E(i.VIEW),[f,j]=E(0),[y,z]=E({x:-1,y:-1}),[r,J]=E([-1,-1]),[u,ie]=E([-1,-1]),[d,Q]=E([-1,-1]),[a,p]=E(1),[T,I]=E([0,0]),[D,N]=E(),h=ne(null),C=ne(null),le=new we(e=>ue(e)),de=e=>{g(i.CREATE);const o=b([e]);R===P.BBox&&o.push(o[0]);const n=H(),t=new te(n,R,o);if(ae(t),R===P.Point){const s={...t,coordinates:[e]};L(s)}},Oe=()=>{g(i.VIEW),j(0),z({x:-1,y:-1}),J([-1,-1]),Q([-1,-1]),p(1),I([0,0]),N(void 0)};A(()=>{Oe()},[W]),A(()=>{const{top:e,left:o}=C.current.getBoundingClientRect(),n={x:o+window.scrollX,y:e+window.scrollY};z(n)},[C,f,T]);const Ee=(e,o)=>{if(e[0]===0||e[1]===0||o[0]===0||o[1]===0)return 0;const n=o[0]/e[0],t=o[1]/e[1];return Math.min(n,t)},ue=e=>{switch(e){case c.EDIT_LABEL:console.log("KeyAction TODO: EDIT_LABEL");break;case c.DELETE_ANNO:console.log("KeyAction TODO: DELETE_ANNO");break;case c.TOGGLE_ANNO_COMMENT_INPUT:console.log("KeyAction TODO: TOGGLE_ANNO_COMMENT_INPUT");break;case c.DELETE_ANNO_IN_CREATION:console.log("KeyAction TODO: DELETE_ANNO_IN_CREATION");break;case c.ENTER_ANNO_ADD_MODE:console.log("KeyAction TODO: ENTER_ANNO_ADD_MODE");break;case c.LEAVE_ANNO_ADD_MODE:console.log("KeyAction TODO: LEAVE_ANNO_ADD_MODE");break;case c.UNDO:console.log("KeyAction TODO: UNDO");break;case c.REDO:console.log("KeyAction TODO: REDO");break;case c.TRAVERSE_ANNOS:console.log("KeyAction TODO: TRAVERSE_ANNOS");break;case c.CAM_MOVE_LEFT:M(20*a,0);break;case c.CAM_MOVE_RIGHT:M(-20*a,0);break;case c.CAM_MOVE_UP:M(0,20*a);break;case c.CAM_MOVE_DOWN:M(0,-20*a);break;case c.CAM_MOVE_STOP:console.log("KeyAction TODO: CAM_MOVE_STOP");break;case c.COPY_ANNOTATION:console.log("KeyAction TODO: COPY_ANNOTATION");break;case c.PASTE_ANNOTATION:console.log("KeyAction TODO: PASTE_ANNOTATION");break;case c.RECREATE_ANNO:console.log("KeyAction TODO: RECREATE_ANNO");break;default:console.log("Unknown KeyAction",e);break}},M=(e,o)=>{let n=T[0]+e/a,t=T[1]+o/a;const s=u[0]*-.25,v=u[1]*-.25,m=u[0]*.75,K=u[1]*.75;n<s&&(n+=25),n>m&&(n-=25),t<v&&(t+=25),t>K&&(t-=25),I([n,t])},ge=e=>e.map(n=>({x:n.x*r[0],y:n.y*r[1]})),fe=e=>{const o=d[0]/r[0];return e.map(t=>({x:t.x*o,y:t.y*o}))},V=e=>{const o=ge(e);return fe(o)},Te=(e=>d[0]<=0||d[1]<=0||r[0]<=0||r[1]<=0?[]:se.map(n=>({...n,coordinates:V(n.coordinates)})))();A(()=>{if(h.current===null)return;const{width:e,height:o}=h.current.getBoundingClientRect(),n=o-re;ie([e,n])},[h]),A(()=>{if(C.current===null)return;const{width:e,height:o}=C.current.getBoundingClientRect();J([e,o])},[C]),A(()=>{if(u[0]<=0||u[1]<=0||r[0]<=0||r[1]<=0)return;const e=Ee(r,u);j(e)},[u,r]),A(()=>{if(f===0)return;const e=[r[0]*f,r[1]*f];Q(e)},[f]),A(()=>{if(!B)return;const e=H();k.polygonsToCreate!==void 0&&k.polygonsToCreate.forEach(o=>{const n=new te(e,P.Polygon,V(o),S.VIEW,Ke.CREATED);L(n)})},[k]);const L=e=>{g(i.VIEW),e.mode=S.VIEW;const o=b(e.coordinates);e.coordinates=o,G(e),ce(e)},me=e=>{e.preventDefault(),le.keyDown(e.key)},Ae=e=>{e.preventDefault()},Ce=e=>{if(e.button!==0){if(e.button===1)g(i.CAMERA_MOVE);else if(e.button===2){if(!x.canCreate)return;const o=ke.getAntiScaledMouseStagePosition(e,y,a);de(o)}}},Ie=e=>e.map(n=>({x:n.x/f,y:n.y/f})),Ne=()=>{X&&(document.body.style.overflow="hidden")},he=e=>{switch(e.button){case 1:g(i.VIEW);break}},Z=e=>{_===i.CAMERA_MOVE&&M(e.movementX,e.movementY)},Me=()=>{X&&(document.body.style.overflow="")},_e=e=>{const n=e.deltaY<0?1:-1,t=h.current.getBoundingClientRect(),s=e.clientX-t.left,v=e.clientY-t.top;let m=n>0?a*1.25:a/1.25;const K=(s-T[0]*a)/a,ve=(v-T[1]*a)/a,ee=s/m-K,oe=v/m-ve;m<1?(p(1),I([0,0])):m>200?(p(200),I([ee,oe])):(p(m),I([ee,oe]))},ye=(e,o)=>{switch(o){case Se.ANNO_SELECTED:const n={...e,coordinates:b([...e.coordinates])};$(n);break;default:console.log("Unknown Canvas Action:",o)}},b=e=>Ie(e).map(s=>(s.x<0&&(s.x=0),s.y<0&&(s.y=0),s.x>r[0]&&(s.x=r[0]),s.y>r[1]&&(s.y=r[1]),s)).map(s=>({x:s.x/r[0],y:s.y/r[1]})),q=e=>{const o=b(e.coordinates),n={...e,coordinates:o};G(n)},pe=e=>{const o={x:e.x*a+y.x,y:e.y*a+y.y};N(o)},De=()=>{if(_===i.CAMERA_MOVE)return"";const e=Te.map(o=>{if(!([i.CREATE,i.MOVE].includes(_)&&o.internalId!==(l==null?void 0:l.internalId)))return O(xe,{scaledAnnotation:o,annotationSettings:x,possibleLabels:F,svgScale:a,pageToStageOffset:y,nodeRadius:U.nodeRadius,strokeWidth:U.strokeWidth,isSelected:o.internalId===(l==null?void 0:l.internalId),isDisabled:B&&o.internalId===(l==null?void 0:l.internalId),onFinishAnnoCreate:L,onLabelIconClicked:pe,onAction:ye,onAnnoChanged:q,onAnnotationModeChange:t=>{t===S.MOVE&&g(i.MOVE),_===i.MOVE&&t===S.VIEW&&g(i.VIEW)}},`annotationComponent_${o.internalId}`)});return O("g",{children:e})},be=()=>O("circle",{cx:d[0]/2,cy:d[1]/2,r:"100%",style:{opacity:0},onContextMenu:e=>e.preventDefault(),onClick:()=>{N(void 0)}});return w("div",{ref:h,style:{width:"100%",height:"100%"},children:[D&&O("div",{style:{position:"absolute",left:D.x,top:D.y},children:O(Re,{selectedLabelsIds:l.labelIds,possibleLabels:F,isMultilabel:x.canHaveMultipleLabels,onLabelSelect:e=>{N(void 0);const o={...l,coordinates:V(l.coordinates),labelIds:[...e]};q(o)}})}),Y&&w("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center",color:"white"},children:[O(Ve,{icon:Le,size:"5x",style:{marginBottom:15}}),O("h2",{children:"Marked as Junk"})]}),w("svg",{width:"100%",height:"100%",onKeyDown:me,onKeyUp:Ae,onMouseMove:Z,tabIndex:0,children:[w("g",{transform:`scale(${a}) translate(${T[0]}, ${T[1]})`,onMouseOver:Ne,onMouseLeave:Me,onMouseUp:he,onWheel:_e,onMouseMove:Z,onClick:()=>{$(void 0)},children:[O("image",{onContextMenu:e=>e.preventDefault(),onMouseDown:Ce,href:W,ref:C,width:d[0]>0?d[0]:void 0,height:d[1]>0?d[1]:void 0}),De()]}),D&&be(),Y&&O("rect",{x:"0",y:"0",width:d[0],height:d[1],style:{opacity:.8},onContextMenu:e=>e.preventDefault(),onClick:()=>{N(void 0)}})]})]})};export{eo as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),x=require("react"),n=require("@coreui/react"),h=({selectedLabelsIds:r,possibleLabels:d,isMultilabel:u=!1,onLabelSelect:a})=>{const[i,c]=x.useState(""),o=d.filter(e=>e.name.toLowerCase().includes(i.toLowerCase())),p=e=>{let s=[];if(u){s=[...r];const l=r.indexOf(e.id);l!==-1?s.splice(l,1):s.push(e.id)}else s=[e.id];a(s)};return t.jsx(n.CDropdown,{visible:!0,children:t.jsxs(n.CDropdownMenu,{style:{minWidth:"250px"},children:[t.jsx("div",{className:"px-3 py-2",children:t.jsx(n.CFormInput,{placeholder:"Filter label...",value:i,onChange:e=>c(e.target.value),autoFocus:!0})}),o.length>0?o.map(e=>t.jsx(n.CDropdownItem,{onClick:()=>p(e),children:e.name},e.id)):t.jsx(n.CDropdownItem,{disabled:!0,children:"No results"})]})})};module.exports=h;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r,jsxs as c}from"react/jsx-runtime";import{useState as f}from"react";import{CDropdown as h,CDropdownMenu as C,CFormInput as x,CDropdownItem as l}from"@coreui/react";const I=({selectedLabelsIds:o,possibleLabels:d,isMultilabel:a=!1,onLabelSelect:u})=>{const[n,p]=f(""),i=d.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())),m=e=>{let t=[];if(a){t=[...o];const s=o.indexOf(e.id);s!==-1?t.splice(s,1):t.push(e.id)}else t=[e.id];u(t)};return r(h,{visible:!0,children:c(C,{style:{minWidth:"250px"},children:[r("div",{className:"px-3 py-2",children:r(x,{placeholder:"Filter label...",value:n,onChange:e=>p(e.target.value),autoFocus:!0})}),i.length>0?i.map(e=>r(l,{onClick:()=>m(e),children:e.name},e.id)):r(l,{disabled:!0,children:"No results"})]})})};export{I as default};
|