@cornerstonejs/tools 2.0.0-beta.1 → 2.0.0-beta.3
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/cjs/drawingSvg/drawCircle.js +9 -5
- package/dist/cjs/drawingSvg/drawCircle.js.map +1 -1
- package/dist/cjs/drawingSvg/drawEllipse.js +4 -4
- package/dist/cjs/drawingSvg/drawEllipse.js.map +1 -1
- package/dist/cjs/drawingSvg/drawHandles.js +4 -4
- package/dist/cjs/drawingSvg/drawHandles.js.map +1 -1
- package/dist/cjs/drawingSvg/drawLine.js +4 -4
- package/dist/cjs/drawingSvg/drawLine.js.map +1 -1
- package/dist/cjs/drawingSvg/drawPolyline.js +4 -4
- package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/cjs/drawingSvg/drawRect.js +4 -4
- package/dist/cjs/drawingSvg/drawRect.js.map +1 -1
- package/dist/cjs/drawingSvg/drawTextBox.js +4 -4
- package/dist/cjs/drawingSvg/drawTextBox.js.map +1 -1
- package/dist/cjs/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/cjs/drawingSvg/getSvgDrawingHelper.js.map +1 -1
- package/dist/cjs/drawingSvg/index.d.ts +3 -1
- package/dist/cjs/drawingSvg/index.js +5 -1
- package/dist/cjs/drawingSvg/index.js.map +1 -1
- package/dist/cjs/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
- package/dist/cjs/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +5 -5
- package/dist/cjs/drawingSvg/setAttributesIfNecessary.js.map +1 -0
- package/dist/cjs/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
- package/dist/cjs/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +5 -5
- package/dist/cjs/drawingSvg/setNewAttributesIfValid.js.map +1 -0
- package/dist/cjs/enums/Events.d.ts +2 -0
- package/dist/cjs/enums/Events.js +2 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +41 -0
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
- package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +10 -5
- package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +1 -1
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +39 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
- package/dist/cjs/eventListeners/keyboard/keyDownListener.js +8 -0
- package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +1 -1
- package/dist/cjs/eventListeners/mouse/mouseDownListener.js +7 -2
- package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +1 -1
- package/dist/cjs/eventListeners/mouse/mouseMoveListener.js +5 -1
- package/dist/cjs/eventListeners/mouse/mouseMoveListener.js.map +1 -1
- package/dist/cjs/eventListeners/touch/touchStartListener.js +10 -5
- package/dist/cjs/eventListeners/touch/touchStartListener.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +1 -0
- package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/config/getState.js +6 -3
- package/dist/cjs/stateManagement/annotation/config/getState.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/config/helpers.js +4 -2
- package/dist/cjs/stateManagement/annotation/config/helpers.js.map +1 -1
- package/dist/cjs/store/SynchronizerManager/Synchronizer.js +10 -2
- package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +5 -3
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +44 -2
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
- package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +25 -22
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js +1 -1
- package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
- package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +36 -0
- package/dist/cjs/tools/AdvancedMagnifyTool.js +448 -0
- package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.d.ts +76 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.js +352 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.js.map +1 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.js +133 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.js.map +1 -0
- package/dist/cjs/tools/MIPJumpToClickTool.js +4 -2
- package/dist/cjs/tools/MIPJumpToClickTool.js.map +1 -1
- package/dist/cjs/tools/MagnifyTool.js +2 -2
- package/dist/cjs/tools/MagnifyTool.js.map +1 -1
- package/dist/cjs/tools/OrientationMarkerTool.d.ts +88 -0
- package/dist/cjs/tools/OrientationMarkerTool.js +193 -0
- package/dist/cjs/tools/OrientationMarkerTool.js.map +1 -0
- package/dist/cjs/tools/OverlayGridTool.d.ts +31 -0
- package/dist/cjs/tools/OverlayGridTool.js +170 -0
- package/dist/cjs/tools/OverlayGridTool.js.map +1 -0
- package/dist/cjs/tools/PlanarRotateTool.js +2 -1
- package/dist/cjs/tools/PlanarRotateTool.js.map +1 -1
- package/dist/cjs/tools/ReferenceCursors.js +58 -29
- package/dist/cjs/tools/ReferenceCursors.js.map +1 -1
- package/dist/cjs/tools/ReferenceLinesTool.d.ts +3 -0
- package/dist/cjs/tools/ReferenceLinesTool.js +71 -2
- package/dist/cjs/tools/ReferenceLinesTool.js.map +1 -1
- package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
- package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
- package/dist/cjs/tools/annotation/AngleTool.d.ts +0 -1
- package/dist/cjs/tools/annotation/AngleTool.js +33 -15
- package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +15 -1
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.d.ts +0 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.js +30 -15
- package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/CircleROITool.d.ts +1 -3
- package/dist/cjs/tools/annotation/CircleROITool.js +63 -60
- package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +31 -6
- package/dist/cjs/tools/annotation/CobbAngleTool.js +294 -82
- package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js +17 -4
- package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +2 -4
- package/dist/cjs/tools/annotation/EllipticalROITool.js +67 -61
- package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/LengthTool.d.ts +0 -1
- package/dist/cjs/tools/annotation/LengthTool.js +27 -12
- package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +72 -60
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.d.ts +1 -3
- package/dist/cjs/tools/annotation/ProbeTool.js +28 -22
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.d.ts +1 -2
- package/dist/cjs/tools/annotation/RectangleROITool.js +55 -57
- package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationDisplayTool.js +4 -0
- package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.d.ts +3 -2
- package/dist/cjs/tools/base/AnnotationTool.js +27 -16
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/base/index.d.ts +2 -1
- package/dist/cjs/tools/base/index.js +3 -1
- package/dist/cjs/tools/base/index.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +3 -0
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -0
- package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
- package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +5 -6
- package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
- package/dist/cjs/tools/index.d.ts +5 -2
- package/dist/cjs/tools/index.js +8 -1
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/cjs/tools/segmentation/BrushTool.js +24 -17
- package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/PaintFillTool.js +4 -2
- package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillCircle.js +5 -7
- package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +3 -0
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js +38 -10
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +10 -0
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
- package/dist/cjs/types/CINETypes.d.ts +2 -0
- package/dist/cjs/types/CalculatorTypes.d.ts +6 -0
- package/dist/cjs/types/CalculatorTypes.js +3 -0
- package/dist/cjs/types/CalculatorTypes.js.map +1 -0
- package/dist/cjs/types/EventTypes.d.ts +16 -1
- package/dist/cjs/types/ISetToolModeOptions.d.ts +2 -2
- package/dist/cjs/types/IToolGroup.d.ts +6 -2
- package/dist/cjs/types/ToolAction.d.ts +8 -0
- package/dist/cjs/types/ToolAction.js +3 -0
- package/dist/cjs/types/ToolAction.js.map +1 -0
- package/dist/cjs/types/ToolProps.d.ts +5 -1
- package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/cjs/types/index.d.ts +4 -2
- package/dist/cjs/utilities/cine/playClip.js +13 -3
- package/dist/cjs/utilities/cine/playClip.js.map +1 -1
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +7 -4
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -1
- package/dist/cjs/utilities/getCalibratedUnits.js +10 -5
- package/dist/cjs/utilities/getCalibratedUnits.js.map +1 -1
- package/dist/cjs/utilities/getModalityUnit.js +5 -2
- package/dist/cjs/utilities/getModalityUnit.js.map +1 -1
- package/dist/cjs/utilities/index.d.ts +2 -2
- package/dist/cjs/utilities/index.js +4 -3
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +3 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.js +18 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -1
- package/dist/cjs/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
- package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js +44 -0
- package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
- package/dist/cjs/utilities/math/basic/Calculator.d.ts +8 -0
- package/dist/cjs/utilities/math/basic/Calculator.js +6 -0
- package/dist/cjs/utilities/math/basic/Calculator.js.map +1 -0
- package/dist/cjs/utilities/math/basic/index.d.ts +3 -0
- package/dist/cjs/utilities/math/basic/index.js +11 -0
- package/dist/cjs/utilities/math/basic/index.js.map +1 -0
- package/dist/cjs/utilities/math/index.d.ts +2 -1
- package/dist/cjs/utilities/math/index.js +3 -1
- package/dist/cjs/utilities/math/index.js.map +1 -1
- package/dist/cjs/utilities/math/midPoint.js +2 -1
- package/dist/cjs/utilities/math/midPoint.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/pointInPolyline.js +2 -1
- package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +1 -1
- package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
- package/dist/cjs/utilities/math/vec2/liangBarksyClip.js +10 -5
- package/dist/cjs/utilities/math/vec2/liangBarksyClip.js.map +1 -1
- package/dist/cjs/utilities/pointInShapeCallback.d.ts +7 -1
- package/dist/cjs/utilities/pointInShapeCallback.js +6 -1
- package/dist/cjs/utilities/pointInShapeCallback.js.map +1 -1
- package/dist/cjs/utilities/roundNumber.js +4 -2
- package/dist/cjs/utilities/roundNumber.js.map +1 -1
- package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
- package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js +4 -4
- package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
- package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js +2 -1
- package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
- package/dist/cjs/utilities/segmentation/utilities.d.ts +1 -2
- package/dist/cjs/utilities/segmentation/utilities.js +4 -1
- package/dist/cjs/utilities/segmentation/utilities.js.map +1 -1
- package/dist/cjs/utilities/stackPrefetch/index.d.ts +3 -2
- package/dist/cjs/utilities/stackPrefetch/index.js +8 -6
- package/dist/cjs/utilities/stackPrefetch/index.js.map +1 -1
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +227 -0
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +25 -95
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +85 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
- package/dist/esm/drawingSvg/drawCircle.js +9 -5
- package/dist/esm/drawingSvg/drawCircle.js.map +1 -1
- package/dist/esm/drawingSvg/drawEllipse.js +4 -4
- package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
- package/dist/esm/drawingSvg/drawHandles.js +4 -4
- package/dist/esm/drawingSvg/drawHandles.js.map +1 -1
- package/dist/esm/drawingSvg/drawLine.js +4 -4
- package/dist/esm/drawingSvg/drawLine.js.map +1 -1
- package/dist/esm/drawingSvg/drawPolyline.js +4 -4
- package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/esm/drawingSvg/drawRect.js +4 -4
- package/dist/esm/drawingSvg/drawRect.js.map +1 -1
- package/dist/esm/drawingSvg/drawTextBox.js +4 -4
- package/dist/esm/drawingSvg/drawTextBox.js.map +1 -1
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js.map +1 -1
- package/dist/esm/drawingSvg/index.d.ts +3 -1
- package/dist/esm/drawingSvg/index.js +3 -1
- package/dist/esm/drawingSvg/index.js.map +1 -1
- package/dist/esm/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
- package/dist/esm/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +3 -3
- package/dist/esm/drawingSvg/setAttributesIfNecessary.js.map +1 -0
- package/dist/esm/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
- package/dist/esm/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +3 -3
- package/dist/esm/drawingSvg/setNewAttributesIfValid.js.map +1 -0
- package/dist/esm/enums/Events.d.ts +2 -0
- package/dist/esm/enums/Events.js +2 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +35 -0
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
- package/dist/esm/eventDispatchers/shared/getMouseModifier.js +10 -5
- package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +1 -1
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +32 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
- package/dist/esm/eventListeners/keyboard/keyDownListener.js +8 -0
- package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +1 -1
- package/dist/esm/eventListeners/mouse/mouseDownListener.js +7 -2
- package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +1 -1
- package/dist/esm/eventListeners/mouse/mouseMoveListener.js +5 -1
- package/dist/esm/eventListeners/mouse/mouseMoveListener.js.map +1 -1
- package/dist/esm/eventListeners/touch/touchStartListener.js +10 -5
- package/dist/esm/eventListeners/touch/touchStartListener.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stateManagement/annotation/config/ToolStyle.js +1 -0
- package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
- package/dist/esm/stateManagement/annotation/config/getState.js +6 -3
- package/dist/esm/stateManagement/annotation/config/getState.js.map +1 -1
- package/dist/esm/stateManagement/annotation/config/helpers.js +4 -2
- package/dist/esm/stateManagement/annotation/config/helpers.js.map +1 -1
- package/dist/esm/store/SynchronizerManager/Synchronizer.js +10 -2
- package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +5 -3
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +45 -4
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +26 -23
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/esm/synchronizers/callbacks/voiSyncCallback.js +1 -1
- package/dist/esm/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
- package/dist/esm/tools/AdvancedMagnifyTool.d.ts +36 -0
- package/dist/esm/tools/AdvancedMagnifyTool.js +440 -0
- package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +76 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.js +346 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.js.map +1 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js +128 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js.map +1 -0
- package/dist/esm/tools/MIPJumpToClickTool.js +4 -2
- package/dist/esm/tools/MIPJumpToClickTool.js.map +1 -1
- package/dist/esm/tools/MagnifyTool.js +2 -2
- package/dist/esm/tools/MagnifyTool.js.map +1 -1
- package/dist/esm/tools/OrientationMarkerTool.d.ts +88 -0
- package/dist/esm/tools/OrientationMarkerTool.js +185 -0
- package/dist/esm/tools/OrientationMarkerTool.js.map +1 -0
- package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
- package/dist/esm/tools/OverlayGridTool.js +165 -0
- package/dist/esm/tools/OverlayGridTool.js.map +1 -0
- package/dist/esm/tools/PlanarRotateTool.js +2 -1
- package/dist/esm/tools/PlanarRotateTool.js.map +1 -1
- package/dist/esm/tools/ReferenceCursors.js +58 -29
- package/dist/esm/tools/ReferenceCursors.js.map +1 -1
- package/dist/esm/tools/ReferenceLinesTool.d.ts +3 -0
- package/dist/esm/tools/ReferenceLinesTool.js +71 -2
- package/dist/esm/tools/ReferenceLinesTool.js.map +1 -1
- package/dist/esm/tools/ScaleOverlayTool.js +2 -1
- package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
- package/dist/esm/tools/annotation/AngleTool.d.ts +0 -1
- package/dist/esm/tools/annotation/AngleTool.js +33 -15
- package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js +15 -1
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.d.ts +0 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +30 -15
- package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -3
- package/dist/esm/tools/annotation/CircleROITool.js +62 -60
- package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/CobbAngleTool.d.ts +31 -6
- package/dist/esm/tools/annotation/CobbAngleTool.js +301 -83
- package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/DragProbeTool.js +17 -4
- package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.d.ts +2 -4
- package/dist/esm/tools/annotation/EllipticalROITool.js +66 -61
- package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/esm/tools/annotation/LengthTool.d.ts +0 -1
- package/dist/esm/tools/annotation/LengthTool.js +27 -12
- package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +71 -60
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.d.ts +1 -3
- package/dist/esm/tools/annotation/ProbeTool.js +28 -22
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.d.ts +1 -2
- package/dist/esm/tools/annotation/RectangleROITool.js +54 -57
- package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationDisplayTool.js +3 -0
- package/dist/esm/tools/base/AnnotationDisplayTool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.d.ts +3 -2
- package/dist/esm/tools/base/AnnotationTool.js +26 -16
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/base/index.d.ts +2 -1
- package/dist/esm/tools/base/index.js +2 -1
- package/dist/esm/tools/base/index.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +4 -1
- package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
- package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +5 -6
- package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
- package/dist/esm/tools/index.d.ts +5 -2
- package/dist/esm/tools/index.js +5 -2
- package/dist/esm/tools/index.js.map +1 -1
- package/dist/esm/tools/segmentation/BrushTool.js +25 -18
- package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/esm/tools/segmentation/PaintFillTool.js +4 -2
- package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
- package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillCircle.js +1 -6
- package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +3 -0
- package/dist/esm/tools/segmentation/strategies/fillSphere.js +33 -9
- package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
- package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +8 -0
- package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
- package/dist/esm/types/CINETypes.d.ts +2 -0
- package/dist/esm/types/CalculatorTypes.d.ts +6 -0
- package/dist/esm/types/CalculatorTypes.js +2 -0
- package/dist/esm/types/CalculatorTypes.js.map +1 -0
- package/dist/esm/types/EventTypes.d.ts +16 -1
- package/dist/esm/types/ISetToolModeOptions.d.ts +2 -2
- package/dist/esm/types/IToolGroup.d.ts +6 -2
- package/dist/esm/types/ToolAction.d.ts +8 -0
- package/dist/esm/types/ToolAction.js +2 -0
- package/dist/esm/types/ToolAction.js.map +1 -0
- package/dist/esm/types/ToolProps.d.ts +5 -1
- package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/esm/types/index.d.ts +4 -2
- package/dist/esm/utilities/cine/playClip.js +13 -4
- package/dist/esm/utilities/cine/playClip.js.map +1 -1
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js +7 -4
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -1
- package/dist/esm/utilities/getCalibratedUnits.js +10 -5
- package/dist/esm/utilities/getCalibratedUnits.js.map +1 -1
- package/dist/esm/utilities/getModalityUnit.js +5 -2
- package/dist/esm/utilities/getModalityUnit.js.map +1 -1
- package/dist/esm/utilities/index.d.ts +2 -2
- package/dist/esm/utilities/index.js +2 -2
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +3 -1
- package/dist/esm/utilities/math/angle/angleBetweenLines.js +19 -2
- package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -1
- package/dist/esm/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
- package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +36 -0
- package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
- package/dist/esm/utilities/math/basic/Calculator.d.ts +8 -0
- package/dist/esm/utilities/math/basic/Calculator.js +4 -0
- package/dist/esm/utilities/math/basic/Calculator.js.map +1 -0
- package/dist/esm/utilities/math/basic/index.d.ts +3 -0
- package/dist/esm/utilities/math/basic/index.js +4 -0
- package/dist/esm/utilities/math/basic/index.js.map +1 -0
- package/dist/esm/utilities/math/index.d.ts +2 -1
- package/dist/esm/utilities/math/index.js +2 -1
- package/dist/esm/utilities/math/index.js.map +1 -1
- package/dist/esm/utilities/math/midPoint.js +2 -1
- package/dist/esm/utilities/math/midPoint.js.map +1 -1
- package/dist/esm/utilities/math/polyline/pointInPolyline.js +2 -1
- package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +1 -1
- package/dist/esm/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
- package/dist/esm/utilities/math/vec2/liangBarksyClip.js +10 -5
- package/dist/esm/utilities/math/vec2/liangBarksyClip.js.map +1 -1
- package/dist/esm/utilities/pointInShapeCallback.d.ts +7 -1
- package/dist/esm/utilities/pointInShapeCallback.js +6 -1
- package/dist/esm/utilities/pointInShapeCallback.js.map +1 -1
- package/dist/esm/utilities/roundNumber.js +4 -2
- package/dist/esm/utilities/roundNumber.js.map +1 -1
- package/dist/esm/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
- package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +4 -4
- package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
- package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js +2 -1
- package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
- package/dist/esm/utilities/segmentation/utilities.d.ts +1 -2
- package/dist/esm/utilities/segmentation/utilities.js +4 -1
- package/dist/esm/utilities/segmentation/utilities.js.map +1 -1
- package/dist/esm/utilities/stackPrefetch/index.d.ts +3 -2
- package/dist/esm/utilities/stackPrefetch/index.js +3 -2
- package/dist/esm/utilities/stackPrefetch/index.js.map +1 -1
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +220 -0
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +14 -81
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +77 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/drawingSvg/drawCircle.ts +17 -5
- package/src/drawingSvg/drawEllipse.ts +4 -4
- package/src/drawingSvg/drawHandles.ts +4 -4
- package/src/drawingSvg/drawLine.ts +4 -4
- package/src/drawingSvg/drawPolyline.ts +4 -4
- package/src/drawingSvg/drawRect.ts +4 -4
- package/src/drawingSvg/drawTextBox.ts +4 -4
- package/src/drawingSvg/getSvgDrawingHelper.ts +4 -1
- package/src/drawingSvg/index.ts +4 -0
- package/src/drawingSvg/{_setAttributesIfNecessary.ts → setAttributesIfNecessary.ts} +2 -2
- package/src/drawingSvg/{_setNewAttributesIfValid.ts → setNewAttributesIfValid.ts} +2 -2
- package/src/enums/Events.ts +22 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +11 -2
- package/src/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.ts +72 -0
- package/src/eventDispatchers/shared/getMouseModifier.ts +15 -5
- package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +66 -0
- package/src/eventListeners/keyboard/keyDownListener.ts +13 -0
- package/src/eventListeners/mouse/mouseDownListener.ts +10 -2
- package/src/eventListeners/mouse/mouseMoveListener.ts +7 -1
- package/src/eventListeners/touch/touchStartListener.ts +15 -5
- package/src/index.ts +8 -0
- package/src/stateManagement/annotation/config/ToolStyle.ts +1 -0
- package/src/stateManagement/annotation/config/getState.ts +7 -3
- package/src/stateManagement/annotation/config/helpers.ts +6 -2
- package/src/store/SynchronizerManager/Synchronizer.ts +16 -8
- package/src/store/ToolGroupManager/ToolGroup.ts +99 -6
- package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +3 -1
- package/src/synchronizers/callbacks/stackImageSyncCallback.ts +63 -68
- package/src/synchronizers/callbacks/voiSyncCallback.ts +1 -1
- package/src/tools/AdvancedMagnifyTool.ts +725 -0
- package/src/tools/AdvancedMagnifyViewport.ts +624 -0
- package/src/tools/AdvancedMagnifyViewportManager.ts +291 -0
- package/src/tools/MIPJumpToClickTool.ts +6 -2
- package/src/tools/MagnifyTool.ts +2 -2
- package/src/tools/OrientationMarkerTool.ts +235 -0
- package/src/tools/OverlayGridTool.ts +357 -0
- package/src/tools/PlanarRotateTool.ts +3 -1
- package/src/tools/ReferenceCursors.ts +85 -29
- package/src/tools/ReferenceLinesTool.ts +131 -3
- package/src/tools/ScaleOverlayTool.ts +3 -1
- package/src/tools/annotation/AngleTool.ts +42 -20
- package/src/tools/annotation/ArrowAnnotateTool.ts +16 -1
- package/src/tools/annotation/BidirectionalTool.ts +38 -24
- package/src/tools/annotation/CircleROITool.ts +94 -107
- package/src/tools/annotation/CobbAngleTool.ts +452 -114
- package/src/tools/annotation/DragProbeTool.ts +25 -14
- package/src/tools/annotation/EllipticalROITool.ts +88 -97
- package/src/tools/annotation/LengthTool.ts +33 -18
- package/src/tools/annotation/PlanarFreehandROITool.ts +90 -78
- package/src/tools/annotation/ProbeTool.ts +43 -49
- package/src/tools/annotation/RectangleROITool.ts +80 -92
- package/src/tools/base/AnnotationDisplayTool.ts +4 -0
- package/src/tools/base/AnnotationTool.ts +41 -18
- package/src/tools/base/index.ts +2 -1
- package/src/tools/displayTools/Contour/contourDisplay.ts +8 -0
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +4 -1
- package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +6 -1
- package/src/tools/displayTools/SegmentationDisplayTool.ts +12 -18
- package/src/tools/index.ts +8 -1
- package/src/tools/segmentation/BrushTool.ts +42 -19
- package/src/tools/segmentation/PaintFillTool.ts +10 -3
- package/src/tools/segmentation/strategies/eraseSphere.ts +2 -0
- package/src/tools/segmentation/strategies/fillCircle.ts +1 -13
- package/src/tools/segmentation/strategies/fillSphere.ts +56 -8
- package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +16 -0
- package/src/types/CINETypes.ts +8 -2
- package/src/types/CalculatorTypes.ts +7 -0
- package/src/types/EventTypes.ts +43 -0
- package/src/types/ISetToolModeOptions.ts +2 -2
- package/src/types/IToolGroup.ts +13 -3
- package/src/types/ToolAction.ts +54 -0
- package/src/types/ToolProps.ts +7 -1
- package/src/types/ToolSpecificAnnotationTypes.ts +58 -0
- package/src/types/index.ts +11 -1
- package/src/utilities/cine/playClip.ts +20 -3
- package/src/utilities/dynamicVolume/getDataInTime.ts +9 -6
- package/src/utilities/getCalibratedUnits.ts +15 -5
- package/src/utilities/getModalityUnit.ts +8 -2
- package/src/utilities/index.ts +2 -1
- package/src/utilities/math/angle/angleBetweenLines.ts +39 -9
- package/src/utilities/math/basic/BasicStatsCalculator.ts +60 -0
- package/src/utilities/math/basic/Calculator.ts +8 -0
- package/src/utilities/math/basic/index.ts +4 -0
- package/src/utilities/math/index.ts +10 -1
- package/src/utilities/math/midPoint.ts +3 -1
- package/src/utilities/math/polyline/pointInPolyline.ts +3 -1
- package/src/utilities/math/vec2/liangBarksyClip.ts +15 -5
- package/src/utilities/pointInShapeCallback.ts +15 -3
- package/src/utilities/roundNumber.ts +6 -2
- package/src/utilities/segmentation/brushSizeForToolGroup.ts +22 -4
- package/src/utilities/segmentation/thresholdVolumeByRange.ts +3 -1
- package/src/utilities/segmentation/utilities.ts +8 -1
- package/src/utilities/stackPrefetch/index.ts +3 -7
- package/src/utilities/stackPrefetch/stackContextPrefetch.ts +380 -0
- package/src/utilities/stackPrefetch/stackPrefetch.ts +37 -153
- package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +114 -0
- package/dist/cjs/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
- package/dist/cjs/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
- package/dist/cjs/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
- package/dist/cjs/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
- package/dist/esm/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
- package/dist/esm/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
- package/dist/esm/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
- package/dist/esm/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/tools",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.3",
|
|
4
4
|
"description": "Cornerstone3D Tools",
|
|
5
5
|
"main": "dist/umd/index.js",
|
|
6
6
|
"types": "dist/esm/index.d.ts",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@cornerstonejs/core": "^2.0.0-beta.
|
|
32
|
+
"@cornerstonejs/core": "^2.0.0-beta.3",
|
|
33
33
|
"lodash.clonedeep": "4.5.0",
|
|
34
34
|
"lodash.get": "^4.4.2"
|
|
35
35
|
},
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"type": "individual",
|
|
53
53
|
"url": "https://ohif.org/donate"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "d78cf780d4383a61ea0a9762bafa4104666757a4"
|
|
56
56
|
}
|
|
@@ -3,8 +3,8 @@ import { SVGDrawingHelper } from '../types';
|
|
|
3
3
|
|
|
4
4
|
import _getHash from './_getHash';
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
7
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
8
8
|
|
|
9
9
|
function drawCircle(
|
|
10
10
|
svgDrawingHelper: SVGDrawingHelper,
|
|
@@ -15,13 +15,23 @@ function drawCircle(
|
|
|
15
15
|
options = {},
|
|
16
16
|
dataId = ''
|
|
17
17
|
): void {
|
|
18
|
-
const {
|
|
18
|
+
const {
|
|
19
|
+
color,
|
|
20
|
+
fill,
|
|
21
|
+
width,
|
|
22
|
+
lineWidth,
|
|
23
|
+
lineDash,
|
|
24
|
+
fillOpacity,
|
|
25
|
+
strokeOpacity,
|
|
26
|
+
} = Object.assign(
|
|
19
27
|
{
|
|
20
28
|
color: 'dodgerblue',
|
|
21
29
|
fill: 'transparent',
|
|
22
30
|
width: '2',
|
|
23
31
|
lineDash: undefined,
|
|
24
32
|
lineWidth: undefined,
|
|
33
|
+
strokeOpacity: 1,
|
|
34
|
+
fillOpacity: 1,
|
|
25
35
|
},
|
|
26
36
|
options
|
|
27
37
|
);
|
|
@@ -42,10 +52,12 @@ function drawCircle(
|
|
|
42
52
|
fill,
|
|
43
53
|
'stroke-width': strokeWidth,
|
|
44
54
|
'stroke-dasharray': lineDash,
|
|
55
|
+
'fill-opacity': fillOpacity, // setting fill opacity
|
|
56
|
+
'stroke-opacity': strokeOpacity, // setting stroke opacity
|
|
45
57
|
};
|
|
46
58
|
|
|
47
59
|
if (existingCircleElement) {
|
|
48
|
-
|
|
60
|
+
setAttributesIfNecessary(attributes, existingCircleElement);
|
|
49
61
|
|
|
50
62
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
51
63
|
} else {
|
|
@@ -55,7 +67,7 @@ function drawCircle(
|
|
|
55
67
|
newCircleElement.setAttribute('data-id', dataId);
|
|
56
68
|
}
|
|
57
69
|
|
|
58
|
-
|
|
70
|
+
setNewAttributesIfValid(attributes, newCircleElement);
|
|
59
71
|
|
|
60
72
|
svgDrawingHelper.appendNode(newCircleElement, svgNodeHash);
|
|
61
73
|
}
|
|
@@ -2,8 +2,8 @@ import type { Types } from '@cornerstonejs/core';
|
|
|
2
2
|
import { SVGDrawingHelper } from '../types';
|
|
3
3
|
|
|
4
4
|
import _getHash from './_getHash';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
6
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
7
7
|
|
|
8
8
|
function drawEllipse(
|
|
9
9
|
svgDrawingHelper: SVGDrawingHelper,
|
|
@@ -52,7 +52,7 @@ function drawEllipse(
|
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
if (existingEllipse) {
|
|
55
|
-
|
|
55
|
+
setAttributesIfNecessary(attributes, existingEllipse);
|
|
56
56
|
|
|
57
57
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
58
58
|
} else {
|
|
@@ -62,7 +62,7 @@ function drawEllipse(
|
|
|
62
62
|
svgEllipseElement.setAttribute('data-id', dataId);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
setNewAttributesIfValid(attributes, svgEllipseElement);
|
|
66
66
|
|
|
67
67
|
svgDrawingHelper.appendNode(svgEllipseElement, svgNodeHash);
|
|
68
68
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
|
|
3
3
|
import _getHash from './_getHash';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
5
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
6
6
|
import { SVGDrawingHelper } from '../types';
|
|
7
7
|
|
|
8
8
|
function drawHandles(
|
|
@@ -75,13 +75,13 @@ function drawHandles(
|
|
|
75
75
|
const existingHandleElement = svgDrawingHelper.getSvgNode(svgNodeHash);
|
|
76
76
|
|
|
77
77
|
if (existingHandleElement) {
|
|
78
|
-
|
|
78
|
+
setAttributesIfNecessary(attributes, existingHandleElement);
|
|
79
79
|
|
|
80
80
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
81
81
|
} else {
|
|
82
82
|
const newHandleElement = document.createElementNS(svgns, type);
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
setNewAttributesIfValid(attributes, newHandleElement);
|
|
85
85
|
|
|
86
86
|
svgDrawingHelper.appendNode(newHandleElement, svgNodeHash);
|
|
87
87
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
|
|
3
3
|
import _getHash from './_getHash';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
5
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
6
6
|
import { SVGDrawingHelper } from '../types';
|
|
7
7
|
|
|
8
8
|
export default function drawLine(
|
|
@@ -53,7 +53,7 @@ export default function drawLine(
|
|
|
53
53
|
|
|
54
54
|
if (existingLine) {
|
|
55
55
|
// This is run to avoid re-rendering annotations that actually haven't changed
|
|
56
|
-
|
|
56
|
+
setAttributesIfNecessary(attributes, existingLine);
|
|
57
57
|
|
|
58
58
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
59
59
|
} else {
|
|
@@ -63,7 +63,7 @@ export default function drawLine(
|
|
|
63
63
|
newLine.setAttribute('data-id', dataId);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
setNewAttributesIfValid(attributes, newLine);
|
|
67
67
|
|
|
68
68
|
svgDrawingHelper.appendNode(newLine, svgNodeHash);
|
|
69
69
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
import _getHash from './_getHash';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
4
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
5
5
|
import { SVGDrawingHelper } from '../types';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -67,13 +67,13 @@ export default function drawPolyline(
|
|
|
67
67
|
|
|
68
68
|
if (existingPolyLine) {
|
|
69
69
|
// This is run to avoid re-rendering annotations that actually haven't changed
|
|
70
|
-
|
|
70
|
+
setAttributesIfNecessary(attributes, existingPolyLine);
|
|
71
71
|
|
|
72
72
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
73
73
|
} else {
|
|
74
74
|
const newPolyLine = document.createElementNS(svgns, 'polyline');
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
setNewAttributesIfValid(attributes, newPolyLine);
|
|
77
77
|
|
|
78
78
|
svgDrawingHelper.appendNode(newPolyLine, svgNodeHash);
|
|
79
79
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
|
|
3
3
|
import _getHash from './_getHash';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
5
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
6
6
|
import { SVGDrawingHelper } from '../types';
|
|
7
7
|
|
|
8
8
|
// <rect x="120" y="100" width="100" height="100" />
|
|
@@ -53,7 +53,7 @@ export default function drawRect(
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
if (existingRect) {
|
|
56
|
-
|
|
56
|
+
setAttributesIfNecessary(attributes, existingRect);
|
|
57
57
|
|
|
58
58
|
svgDrawingHelper.setNodeTouched(svgNodeHash);
|
|
59
59
|
} else {
|
|
@@ -63,7 +63,7 @@ export default function drawRect(
|
|
|
63
63
|
svgRectElement.setAttribute('data-id', dataId);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
setNewAttributesIfValid(attributes, svgRectElement);
|
|
67
67
|
|
|
68
68
|
svgDrawingHelper.appendNode(svgRectElement, svgNodeHash);
|
|
69
69
|
}
|
|
@@ -2,7 +2,7 @@ import type { Types } from '@cornerstonejs/core';
|
|
|
2
2
|
import { SVGDrawingHelper } from '../types';
|
|
3
3
|
|
|
4
4
|
import _getHash from './_getHash';
|
|
5
|
-
import
|
|
5
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Draws a textBox.
|
|
@@ -100,8 +100,8 @@ function _drawTextGroup(
|
|
|
100
100
|
};
|
|
101
101
|
|
|
102
102
|
// Todo: for some reason this does not work to not re-render the textBox
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
setAttributesIfNecessary(textAttributes, textElement);
|
|
104
|
+
setAttributesIfNecessary(textGroupAttributes, existingTextGroup);
|
|
105
105
|
|
|
106
106
|
textGroupBoundingBox = _drawTextBackground(existingTextGroup, background);
|
|
107
107
|
|
|
@@ -205,7 +205,7 @@ function _drawTextBackground(group: SVGGElement, color: string) {
|
|
|
205
205
|
fill: color,
|
|
206
206
|
};
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
setAttributesIfNecessary(attributes, element);
|
|
209
209
|
|
|
210
210
|
return bBox;
|
|
211
211
|
}
|
|
@@ -38,7 +38,10 @@ function getSvgDrawingHelper(element: HTMLDivElement): SVGDrawingHelper {
|
|
|
38
38
|
function _getSvgLayer(element) {
|
|
39
39
|
const viewportElement = `.${VIEWPORT_ELEMENT}`;
|
|
40
40
|
const internalDivElement = element.querySelector(viewportElement);
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
// Using :scope to make sure the right svg layer is selected otherwise it
|
|
43
|
+
// may select one from a nested viewport (eg: AdvancedMagnifyTool).
|
|
44
|
+
const svgLayer = internalDivElement.querySelector(':scope > .svg-layer');
|
|
42
45
|
|
|
43
46
|
return svgLayer;
|
|
44
47
|
}
|
package/src/drawingSvg/index.ts
CHANGED
|
@@ -8,6 +8,8 @@ import drawLinkedTextBox from './drawLinkedTextBox';
|
|
|
8
8
|
import drawRect from './drawRect';
|
|
9
9
|
import drawTextBox from './drawTextBox';
|
|
10
10
|
import drawArrow from './drawArrow';
|
|
11
|
+
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
12
|
+
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
11
13
|
|
|
12
14
|
export {
|
|
13
15
|
draw,
|
|
@@ -20,4 +22,6 @@ export {
|
|
|
20
22
|
drawRect,
|
|
21
23
|
drawTextBox,
|
|
22
24
|
drawArrow,
|
|
25
|
+
setAttributesIfNecessary,
|
|
26
|
+
setNewAttributesIfValid,
|
|
23
27
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function setAttributesIfNecessary(attributes, svgNode) {
|
|
2
2
|
Object.keys(attributes).forEach((key) => {
|
|
3
3
|
const currentValue = svgNode.getAttribute(key);
|
|
4
4
|
const newValue = attributes[key];
|
|
@@ -10,4 +10,4 @@ export function _setAttributesIfNecessary(attributes, svgNode) {
|
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export default
|
|
13
|
+
export default setAttributesIfNecessary;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function setNewAttributesIfValid(attributes, svgNode) {
|
|
2
2
|
Object.keys(attributes).forEach((key) => {
|
|
3
3
|
const newValue = attributes[key];
|
|
4
4
|
if (newValue !== undefined && newValue !== '') {
|
|
@@ -7,4 +7,4 @@ export function _setNewAttributesIfValid(attributes, svgNode) {
|
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export default
|
|
10
|
+
export default setNewAttributesIfValid;
|
package/src/enums/Events.ts
CHANGED
|
@@ -5,6 +5,28 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
enum Events {
|
|
8
|
+
///////////////////////////////////////
|
|
9
|
+
// Tools
|
|
10
|
+
///////////////////////////////////////
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Triggers on the eventTarget when a new tools is activated.
|
|
14
|
+
*
|
|
15
|
+
* Make use of {@link EventTypes.ToolActivatedEventType | Tool Activated Event Type }
|
|
16
|
+
* for typing your event listeners for this tool activated event, and see what event
|
|
17
|
+
* detail is included in {@link EventTypes.ToolActivatedEventDetail | Tool Activated Event Detail}.
|
|
18
|
+
*/
|
|
19
|
+
TOOL_ACTIVATED = 'CORNERSTONE_TOOLS_TOOL_ACTIVATED',
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Triggers on the eventTarget when a mode of a tool is changed (active, passive, enabled and disabled).
|
|
23
|
+
*
|
|
24
|
+
* Make use of {@link EventTypes.ToolModeChangedEventType | Tool Mode Changed Event Type }
|
|
25
|
+
* for typing your event listeners for this tool activated event, and see what event
|
|
26
|
+
* detail is included in {@link EventTypes.ToolModeChangedEventDetail | Tool Mode Changed Event Detail}.
|
|
27
|
+
*/
|
|
28
|
+
TOOL_MODE_CHANGED = 'CORNERSTONE_TOOLS_TOOL_MODE_CHANGED',
|
|
29
|
+
|
|
8
30
|
///////////////////////////////////////
|
|
9
31
|
// Annotations
|
|
10
32
|
///////////////////////////////////////
|
|
@@ -20,6 +20,7 @@ import filterToolsWithAnnotationsForElement from '../../store/filterToolsWithAnn
|
|
|
20
20
|
import filterMoveableAnnotationTools from '../../store/filterMoveableAnnotationTools';
|
|
21
21
|
import getActiveToolForMouseEvent from '../shared/getActiveToolForMouseEvent';
|
|
22
22
|
import getToolsWithModesForMouseEvent from '../shared/getToolsWithModesForMouseEvent';
|
|
23
|
+
import mouseDownAnnotationAction from './mouseDownAnnotationAction';
|
|
23
24
|
|
|
24
25
|
const { Active, Passive } = ToolModes;
|
|
25
26
|
|
|
@@ -39,8 +40,10 @@ const { Active, Passive } = ToolModes;
|
|
|
39
40
|
* - Next we check any tools are interactable (e.g. moving an entire length annotation rather than one of its handles:
|
|
40
41
|
* `filterMoveableAnnotationTools`). If interactable tools are found, the first tool found consumes the event and the
|
|
41
42
|
* event does not propagate further.
|
|
42
|
-
* -
|
|
43
|
+
* - If the `activeTool` has `postMouseDownCallback`, this is called. If the callback returns `true`,
|
|
43
44
|
* the event does not propagate further.
|
|
45
|
+
* - Finally, look for annotations actions that could handle the event such as showing a dropdown to allow the user
|
|
46
|
+
* change the magnifying glass zoom factor.
|
|
44
47
|
*
|
|
45
48
|
* If the event is not consumed the event will bubble to the `mouseDownActivate` handler.
|
|
46
49
|
*
|
|
@@ -133,7 +136,7 @@ export default function mouseDown(evt: EventTypes.MouseDownEventType) {
|
|
|
133
136
|
);
|
|
134
137
|
|
|
135
138
|
toggleAnnotationSelection(annotation.annotationUID, isMultiSelect);
|
|
136
|
-
tool.toolSelectedCallback(evt, annotation, 'Mouse');
|
|
139
|
+
tool.toolSelectedCallback(evt, annotation, 'Mouse', canvasCoords);
|
|
137
140
|
|
|
138
141
|
return;
|
|
139
142
|
}
|
|
@@ -148,6 +151,12 @@ export default function mouseDown(evt: EventTypes.MouseDownEventType) {
|
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
|
|
154
|
+
const actionExecuted = mouseDownAnnotationAction(evt);
|
|
155
|
+
|
|
156
|
+
if (actionExecuted) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
151
160
|
// Don't stop propagation so that mouseDownActivate can handle the event
|
|
152
161
|
}
|
|
153
162
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
+
import { state } from '../../store';
|
|
3
|
+
import { ToolModes } from '../../enums';
|
|
4
|
+
import { EventTypes } from '../../types';
|
|
5
|
+
|
|
6
|
+
// Util
|
|
7
|
+
import filterToolsWithAnnotationsForElement from '../../store/filterToolsWithAnnotationsForElement';
|
|
8
|
+
import filterMoveableAnnotationTools from '../../store/filterMoveableAnnotationTools';
|
|
9
|
+
import getToolsWithActionsForMouseEvent from '../shared/getToolsWithActionsForMouseEvent';
|
|
10
|
+
|
|
11
|
+
const { Active, Passive } = ToolModes;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Look for active or passive annotations with an action that could handle the
|
|
15
|
+
* event based on the bindings and invoke the first one found.
|
|
16
|
+
*
|
|
17
|
+
* @param evt - The normalized mouseDown event.
|
|
18
|
+
* @returns True if an action has executed or false otherwise
|
|
19
|
+
*/
|
|
20
|
+
export default function mouseDownAnnotationAction(
|
|
21
|
+
evt: EventTypes.MouseDownEventType
|
|
22
|
+
): boolean {
|
|
23
|
+
// If a tool has locked the current state it is dealing with an interaction within its own eventLoop.
|
|
24
|
+
if (state.isInteractingWithTool) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const eventDetail = evt.detail;
|
|
29
|
+
const { element } = eventDetail;
|
|
30
|
+
const enabledElement = getEnabledElement(element);
|
|
31
|
+
const { canvas: canvasCoords } = eventDetail.currentPoints;
|
|
32
|
+
|
|
33
|
+
if (!enabledElement) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Find all tools that might respond to this mouse down
|
|
38
|
+
const toolsWithActions = getToolsWithActionsForMouseEvent(evt, [
|
|
39
|
+
Active,
|
|
40
|
+
Passive,
|
|
41
|
+
]);
|
|
42
|
+
|
|
43
|
+
const tools = Array.from(toolsWithActions.keys());
|
|
44
|
+
|
|
45
|
+
// Filter tools with annotations for this element
|
|
46
|
+
const annotationToolsWithAnnotations = filterToolsWithAnnotationsForElement(
|
|
47
|
+
element,
|
|
48
|
+
tools
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Only moveable annotations (unlocked, visible and close to the canvas coordinates) may trigger actions
|
|
52
|
+
const moveableAnnotationTools = filterMoveableAnnotationTools(
|
|
53
|
+
element,
|
|
54
|
+
annotationToolsWithAnnotations,
|
|
55
|
+
canvasCoords
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// If there are annotation tools that are interactable, select the first one
|
|
59
|
+
// that isn't locked. If there's only one annotation tool, select it.
|
|
60
|
+
if (moveableAnnotationTools.length > 0) {
|
|
61
|
+
const { tool, annotation } = moveableAnnotationTools[0];
|
|
62
|
+
const action = toolsWithActions.get(tool);
|
|
63
|
+
const method =
|
|
64
|
+
typeof action.method === 'string' ? tool[action.method] : action.method;
|
|
65
|
+
|
|
66
|
+
method.call(tool, evt, annotation);
|
|
67
|
+
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
@@ -8,14 +8,24 @@ import { KeyboardBindings as kb } from '../../enums';
|
|
|
8
8
|
const getMouseModifierKey = (evt) => {
|
|
9
9
|
// The logic is a hard coded key mapping
|
|
10
10
|
if (evt.shiftKey) {
|
|
11
|
-
if (evt.ctrlKey)
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
if (evt.ctrlKey) {
|
|
12
|
+
return kb.ShiftCtrl;
|
|
13
|
+
}
|
|
14
|
+
if (evt.altKey) {
|
|
15
|
+
return kb.ShiftAlt;
|
|
16
|
+
}
|
|
17
|
+
if (evt.metaKey) {
|
|
18
|
+
return kb.ShiftMeta;
|
|
19
|
+
}
|
|
14
20
|
return kb.Shift;
|
|
15
21
|
}
|
|
16
22
|
if (evt.ctrlKey) {
|
|
17
|
-
if (evt.altKey)
|
|
18
|
-
|
|
23
|
+
if (evt.altKey) {
|
|
24
|
+
return kb.CtrlAlt;
|
|
25
|
+
}
|
|
26
|
+
if (evt.metaKey) {
|
|
27
|
+
return kb.CtrlMeta;
|
|
28
|
+
}
|
|
19
29
|
return kb.Ctrl;
|
|
20
30
|
}
|
|
21
31
|
if (evt.altKey) {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ToolGroupManager } from '../../store';
|
|
2
|
+
import { ToolModes } from '../../enums';
|
|
3
|
+
import { ToolAction, EventTypes } from '../../types';
|
|
4
|
+
|
|
5
|
+
import { keyEventListener } from '../../eventListeners';
|
|
6
|
+
import getMouseModifier from './getMouseModifier';
|
|
7
|
+
|
|
8
|
+
type ModesFilter = Array<ToolModes>;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Given the mouse event and a list of tool modes, find all tool instances
|
|
12
|
+
* with actions that were added to the tool group associated with the viewport
|
|
13
|
+
* that triggered the event.
|
|
14
|
+
*
|
|
15
|
+
* @param evt - mouseDown event triggered by a cornerstone viewport
|
|
16
|
+
* @param toolModes - List of tool modes used to filter the tools registered
|
|
17
|
+
* in the viewport's tool group
|
|
18
|
+
*/
|
|
19
|
+
export default function getToolsWithActionsForMouseEvent(
|
|
20
|
+
evt: EventTypes.MouseMoveEventType,
|
|
21
|
+
toolModes: ToolModes[]
|
|
22
|
+
): Map<any, ToolAction> {
|
|
23
|
+
const toolsWithActions = new Map();
|
|
24
|
+
const { renderingEngineId, viewportId } = evt.detail;
|
|
25
|
+
const toolGroup = ToolGroupManager.getToolGroupForViewport(
|
|
26
|
+
viewportId,
|
|
27
|
+
renderingEngineId
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (!toolGroup) {
|
|
31
|
+
return toolsWithActions;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const toolGroupToolNames = Object.keys(toolGroup.toolOptions);
|
|
35
|
+
const defaultMousePrimary = toolGroup.getDefaultMousePrimary();
|
|
36
|
+
const mouseEvent = evt.detail.event;
|
|
37
|
+
const mouseButton = mouseEvent?.buttons ?? defaultMousePrimary;
|
|
38
|
+
const modifierKey =
|
|
39
|
+
getMouseModifier(mouseEvent) || keyEventListener.getModifierKey();
|
|
40
|
+
|
|
41
|
+
for (let j = 0; j < toolGroupToolNames.length; j++) {
|
|
42
|
+
const toolName = toolGroupToolNames[j];
|
|
43
|
+
const tool = toolGroup.getToolInstance(toolName);
|
|
44
|
+
const actions = tool.configuration?.actions;
|
|
45
|
+
|
|
46
|
+
if (!actions?.length || !toolModes.includes(tool.mode)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const action = actions.find(
|
|
51
|
+
(action) =>
|
|
52
|
+
action.bindings.length &&
|
|
53
|
+
action.bindings.some(
|
|
54
|
+
(binding) =>
|
|
55
|
+
binding.mouseButton === mouseButton &&
|
|
56
|
+
binding.modifierKey === modifierKey
|
|
57
|
+
)
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
if (action) {
|
|
61
|
+
toolsWithActions.set(tool, action);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return toolsWithActions;
|
|
66
|
+
}
|
|
@@ -64,11 +64,23 @@ function keyListener(evt: KeyboardEvent): void {
|
|
|
64
64
|
triggerEvent(eventDetail.element, Events.KEY_DOWN, eventDetail);
|
|
65
65
|
|
|
66
66
|
document.addEventListener('keyup', _onKeyUp);
|
|
67
|
+
document.addEventListener('visibilitychange', _onVisibilityChange);
|
|
67
68
|
|
|
68
69
|
// Todo: handle combination of keys
|
|
69
70
|
state.element.removeEventListener('keydown', keyListener);
|
|
70
71
|
}
|
|
71
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Whenever the visibility (i.e. tab focus) changes such that the tab is NOT the
|
|
75
|
+
* active tab, reset the modifier key.
|
|
76
|
+
*/
|
|
77
|
+
function _onVisibilityChange(): void {
|
|
78
|
+
document.removeEventListener('visibilitychange', _onVisibilityChange);
|
|
79
|
+
if (document.visibilityState === 'hidden') {
|
|
80
|
+
resetModifierKey();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
72
84
|
function _onKeyUp(evt: KeyboardEvent): void {
|
|
73
85
|
const eventDetail: KeyUpEventDetail = {
|
|
74
86
|
renderingEngineId: state.renderingEngineId,
|
|
@@ -81,6 +93,7 @@ function _onKeyUp(evt: KeyboardEvent): void {
|
|
|
81
93
|
|
|
82
94
|
// Remove our temporary handlers
|
|
83
95
|
document.removeEventListener('keyup', _onKeyUp);
|
|
96
|
+
document.removeEventListener('visibilitychange', _onVisibilityChange);
|
|
84
97
|
state.element.addEventListener('keydown', keyListener);
|
|
85
98
|
|
|
86
99
|
// Restore `state` to `defaultState`
|
|
@@ -129,7 +129,9 @@ const doubleClickState: IDoubleClickState = {
|
|
|
129
129
|
function mouseDownListener(evt: MouseEvent) {
|
|
130
130
|
if (doubleClickState.doubleClickTimeout) {
|
|
131
131
|
// A second identical click will be a double click event, so ignore it
|
|
132
|
-
if (evt.buttons === doubleClickState.mouseDownEvent.buttons)
|
|
132
|
+
if (evt.buttons === doubleClickState.mouseDownEvent.buttons) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
133
135
|
|
|
134
136
|
// Record the second button or the changed button event as the initial
|
|
135
137
|
// button down state so that the multi-button event can be detected
|
|
@@ -260,7 +262,13 @@ function _onMouseDrag(evt: MouseEvent) {
|
|
|
260
262
|
deltaPoints,
|
|
261
263
|
};
|
|
262
264
|
|
|
263
|
-
triggerEvent(state.element, MOUSE_DRAG, eventDetail);
|
|
265
|
+
const consumed = !triggerEvent(state.element, MOUSE_DRAG, eventDetail);
|
|
266
|
+
|
|
267
|
+
// Events.MOUSE_DRAG was consumed, thus no other listener should handle this event.
|
|
268
|
+
if (consumed) {
|
|
269
|
+
evt.stopImmediatePropagation();
|
|
270
|
+
evt.preventDefault();
|
|
271
|
+
}
|
|
264
272
|
|
|
265
273
|
// Update the last points
|
|
266
274
|
state.lastPoints = _copyPoints(currentPoints);
|
|
@@ -27,7 +27,13 @@ function mouseMoveListener(evt: MouseEvent) {
|
|
|
27
27
|
event: evt,
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
triggerEvent(element, eventName, eventDetail);
|
|
30
|
+
const consumed = !triggerEvent(element, eventName, eventDetail);
|
|
31
|
+
|
|
32
|
+
// Events.MOUSE_MOVE was consumed, thus no other listener should handle this event.
|
|
33
|
+
if (consumed) {
|
|
34
|
+
evt.stopImmediatePropagation();
|
|
35
|
+
evt.preventDefault();
|
|
36
|
+
}
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
export default mouseMoveListener;
|