@cornerstonejs/tools 2.0.0-beta.1 → 2.0.0-beta.2
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/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 +1 -0
- package/dist/cjs/enums/Events.js +1 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +10 -5
- package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +1 -1
- 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 +2 -1
- package/dist/cjs/eventListeners/mouse/mouseDownListener.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 +3 -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 +3 -3
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +9 -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/MIPJumpToClickTool.js +4 -2
- package/dist/cjs/tools/MIPJumpToClickTool.js.map +1 -1
- 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/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 +31 -14
- 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 +29 -14
- package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/CircleROITool.d.ts +0 -1
- package/dist/cjs/tools/annotation/CircleROITool.js +56 -53
- package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +0 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.js +26 -11
- package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js +13 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +0 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.js +48 -46
- 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 +26 -11
- package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +0 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +50 -51
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.d.ts +0 -1
- package/dist/cjs/tools/annotation/ProbeTool.js +18 -13
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.d.ts +0 -1
- package/dist/cjs/tools/annotation/RectangleROITool.js +46 -48
- package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.d.ts +2 -1
- 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/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 +2 -2
- package/dist/cjs/tools/index.js +2 -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 +8 -1
- package/dist/cjs/types/ISetToolModeOptions.d.ts +2 -2
- package/dist/cjs/types/IToolGroup.d.ts +3 -2
- package/dist/cjs/types/ToolProps.d.ts +5 -1
- package/dist/cjs/types/index.d.ts +3 -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/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/stackPrefetch.js +4 -4
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- 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/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 +1 -0
- package/dist/esm/enums/Events.js +1 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/eventDispatchers/shared/getMouseModifier.js +10 -5
- package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +1 -1
- 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 +2 -1
- package/dist/esm/eventListeners/mouse/mouseDownListener.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 +3 -3
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +10 -3
- 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/MIPJumpToClickTool.js +4 -2
- package/dist/esm/tools/MIPJumpToClickTool.js.map +1 -1
- 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/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 +31 -14
- 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 +29 -14
- package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/CircleROITool.d.ts +0 -1
- package/dist/esm/tools/annotation/CircleROITool.js +55 -53
- package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/CobbAngleTool.d.ts +0 -1
- package/dist/esm/tools/annotation/CobbAngleTool.js +26 -11
- package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/DragProbeTool.js +13 -1
- package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.d.ts +0 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +47 -46
- 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 +26 -11
- package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +0 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +49 -51
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.d.ts +0 -1
- package/dist/esm/tools/annotation/ProbeTool.js +18 -13
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.d.ts +0 -1
- package/dist/esm/tools/annotation/RectangleROITool.js +45 -48
- package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.d.ts +2 -1
- 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/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 +2 -2
- package/dist/esm/tools/index.js +2 -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 +8 -1
- package/dist/esm/types/ISetToolModeOptions.d.ts +2 -2
- package/dist/esm/types/IToolGroup.d.ts +3 -2
- package/dist/esm/types/ToolProps.d.ts +5 -1
- package/dist/esm/types/index.d.ts +3 -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/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/stackPrefetch.js +4 -4
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- 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/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 +13 -0
- package/src/eventDispatchers/shared/getMouseModifier.ts +15 -5
- package/src/eventListeners/keyboard/keyDownListener.ts +13 -0
- package/src/eventListeners/mouse/mouseDownListener.ts +3 -1
- package/src/eventListeners/touch/touchStartListener.ts +15 -5
- package/src/index.ts +2 -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 +21 -5
- 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/MIPJumpToClickTool.ts +6 -2
- package/src/tools/PlanarRotateTool.ts +3 -1
- package/src/tools/ReferenceCursors.ts +85 -29
- package/src/tools/ScaleOverlayTool.ts +3 -1
- package/src/tools/annotation/AngleTool.ts +38 -19
- package/src/tools/annotation/ArrowAnnotateTool.ts +16 -1
- package/src/tools/annotation/BidirectionalTool.ts +37 -23
- package/src/tools/annotation/CircleROITool.ts +83 -89
- package/src/tools/annotation/CobbAngleTool.ts +31 -16
- package/src/tools/annotation/DragProbeTool.ts +19 -1
- package/src/tools/annotation/EllipticalROITool.ts +63 -71
- package/src/tools/annotation/LengthTool.ts +32 -17
- package/src/tools/annotation/PlanarFreehandROITool.ts +56 -59
- package/src/tools/annotation/ProbeTool.ts +26 -19
- package/src/tools/annotation/RectangleROITool.ts +67 -75
- package/src/tools/base/AnnotationTool.ts +39 -17
- package/src/tools/base/index.ts +2 -1
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +3 -0
- package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +6 -1
- package/src/tools/displayTools/SegmentationDisplayTool.ts +12 -18
- package/src/tools/index.ts +2 -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 +20 -0
- package/src/types/ISetToolModeOptions.ts +2 -2
- package/src/types/IToolGroup.ts +6 -3
- package/src/types/ToolProps.ts +7 -1
- package/src/types/index.ts +9 -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/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/stackPrefetch.ts +10 -4
- 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.2",
|
|
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.2",
|
|
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": "c154f7531c166db29a54fe41c76a22ecc7ac47c8"
|
|
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
|
}
|
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,19 @@
|
|
|
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
|
+
|
|
8
21
|
///////////////////////////////////////
|
|
9
22
|
// Annotations
|
|
10
23
|
///////////////////////////////////////
|
|
@@ -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) {
|
|
@@ -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
|
|
@@ -168,7 +168,9 @@ function touchStartListener(evt: TouchEvent) {
|
|
|
168
168
|
state.renderingEngineId = renderingEngineId;
|
|
169
169
|
state.viewportId = viewportId;
|
|
170
170
|
// this prevents multiple start firing
|
|
171
|
-
if (state.isTouchStart)
|
|
171
|
+
if (state.isTouchStart) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
172
174
|
// this will clear on touchstart and touchend
|
|
173
175
|
clearTimeout(state.pressTimeout);
|
|
174
176
|
state.pressTimeout = setTimeout(() => _onTouchPress(evt), state.pressDelay);
|
|
@@ -187,7 +189,9 @@ function touchStartListener(evt: TouchEvent) {
|
|
|
187
189
|
*/
|
|
188
190
|
function _onTouchPress(evt: TouchEvent) {
|
|
189
191
|
const totalDistance = state.accumulatedDistance.canvas;
|
|
190
|
-
if (totalDistance > state.pressMaxDistance)
|
|
192
|
+
if (totalDistance > state.pressMaxDistance) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
191
195
|
const eventDetail: EventTypes.TouchPressEventDetail = {
|
|
192
196
|
event: evt, // touchstart native event
|
|
193
197
|
eventName: TOUCH_PRESS,
|
|
@@ -384,7 +388,9 @@ function _onTouchEnd(evt: TouchEvent): void {
|
|
|
384
388
|
function _checkTouchTap(evt: TouchEvent): void {
|
|
385
389
|
const currentTime = new Date().getTime();
|
|
386
390
|
const startTime = state.startTime.getTime();
|
|
387
|
-
if (currentTime - startTime > tapState.tapToleranceMs)
|
|
391
|
+
if (currentTime - startTime > tapState.tapToleranceMs) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
388
394
|
|
|
389
395
|
// first tap, initialize the state
|
|
390
396
|
if (tapState.taps === 0) {
|
|
@@ -422,7 +428,9 @@ function _checkTouchTap(evt: TouchEvent): void {
|
|
|
422
428
|
// region where the user has the option to perform unlimited multitaps as long
|
|
423
429
|
// as they are < the tapToleranceMs value. So a tap somewhere else on the screen
|
|
424
430
|
// that is > the tapMaxDistance will start a separate and new "TapChain".
|
|
425
|
-
if (distanceFromStart > tapState.tapMaxDistance)
|
|
431
|
+
if (distanceFromStart > tapState.tapMaxDistance) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
426
434
|
|
|
427
435
|
clearTimeout(tapState.tapTimeout);
|
|
428
436
|
tapState.taps += 1;
|
|
@@ -447,7 +455,9 @@ function _checkTouchTap(evt: TouchEvent): void {
|
|
|
447
455
|
function _checkTouchSwipe(evt: TouchEvent, deltaPoints: IPoints) {
|
|
448
456
|
const currentTime = new Date().getTime();
|
|
449
457
|
const startTime = state.startTime.getTime();
|
|
450
|
-
if (state.swiped || currentTime - startTime > state.swipeToleranceMs)
|
|
458
|
+
if (state.swiped || currentTime - startTime > state.swipeToleranceMs) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
451
461
|
const [x, y] = deltaPoints.canvas;
|
|
452
462
|
const eventDetail: EventTypes.TouchSwipeEventDetail = {
|
|
453
463
|
event: evt,
|
package/src/index.ts
CHANGED
|
@@ -23,6 +23,7 @@ import * as segmentation from './stateManagement/segmentation';
|
|
|
23
23
|
import {
|
|
24
24
|
BaseTool,
|
|
25
25
|
AnnotationTool,
|
|
26
|
+
AnnotationDisplayTool,
|
|
26
27
|
PanTool,
|
|
27
28
|
TrackballRotateTool,
|
|
28
29
|
DragProbeTool,
|
|
@@ -71,6 +72,7 @@ export {
|
|
|
71
72
|
// Base Tools
|
|
72
73
|
BaseTool,
|
|
73
74
|
AnnotationTool,
|
|
75
|
+
AnnotationDisplayTool,
|
|
74
76
|
// Manipulation Tools
|
|
75
77
|
PanTool,
|
|
76
78
|
TrackballRotateTool,
|
|
@@ -11,13 +11,17 @@ import { AnnotationStyleStates } from '../../../enums';
|
|
|
11
11
|
*/
|
|
12
12
|
function getState(annotation?: Annotation): AnnotationStyleStates {
|
|
13
13
|
if (annotation) {
|
|
14
|
-
if (annotation.data && annotation.highlighted)
|
|
14
|
+
if (annotation.data && annotation.highlighted) {
|
|
15
15
|
return AnnotationStyleStates.Highlighted;
|
|
16
|
-
|
|
16
|
+
}
|
|
17
|
+
if (isAnnotationSelected(annotation.annotationUID)) {
|
|
17
18
|
return AnnotationStyleStates.Selected;
|
|
19
|
+
}
|
|
18
20
|
|
|
19
21
|
// Todo: make annotation lock api not to rely on the annotation itself
|
|
20
|
-
if (isAnnotationLocked(annotation))
|
|
22
|
+
if (isAnnotationLocked(annotation)) {
|
|
23
|
+
return AnnotationStyleStates.Locked;
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
return AnnotationStyleStates.Default;
|
|
@@ -15,8 +15,12 @@ function getHierarchalPropertyStyles(
|
|
|
15
15
|
mode?: ToolModes
|
|
16
16
|
): string[] {
|
|
17
17
|
const list = [`${property}`];
|
|
18
|
-
if (state)
|
|
19
|
-
|
|
18
|
+
if (state) {
|
|
19
|
+
list.push(`${list[0]}${state}`);
|
|
20
|
+
}
|
|
21
|
+
if (mode) {
|
|
22
|
+
list.push(`${list[list.length - 1]}${mode}`);
|
|
23
|
+
}
|
|
20
24
|
return list;
|
|
21
25
|
}
|
|
22
26
|
|
|
@@ -205,6 +205,7 @@ class Synchronizer {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
this._ignoreFiredEvents = true;
|
|
208
|
+
const promises = [];
|
|
208
209
|
try {
|
|
209
210
|
for (let i = 0; i < this._targetViewports.length; i++) {
|
|
210
211
|
const targetViewport = this._targetViewports[i];
|
|
@@ -214,19 +215,26 @@ class Synchronizer {
|
|
|
214
215
|
if (targetIsSource) {
|
|
215
216
|
continue;
|
|
216
217
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
218
|
+
promises.push(
|
|
219
|
+
this._eventHandler(
|
|
220
|
+
this,
|
|
221
|
+
sourceViewport,
|
|
222
|
+
targetViewport,
|
|
223
|
+
sourceEvent,
|
|
224
|
+
this._options
|
|
225
|
+
)
|
|
224
226
|
);
|
|
225
227
|
}
|
|
226
228
|
} catch (ex) {
|
|
227
229
|
console.warn(`Synchronizer, for: ${this._eventName}`, ex);
|
|
228
230
|
} finally {
|
|
229
|
-
|
|
231
|
+
if (promises.length) {
|
|
232
|
+
Promise.allSettled(promises).then(() => {
|
|
233
|
+
this._ignoreFiredEvents = false;
|
|
234
|
+
});
|
|
235
|
+
} else {
|
|
236
|
+
this._ignoreFiredEvents = false;
|
|
237
|
+
}
|
|
230
238
|
}
|
|
231
239
|
}
|
|
232
240
|
|
|
@@ -2,6 +2,8 @@ import { MouseBindings, ToolModes } from '../../enums';
|
|
|
2
2
|
import cloneDeep from 'lodash.clonedeep';
|
|
3
3
|
import get from 'lodash.get';
|
|
4
4
|
import {
|
|
5
|
+
triggerEvent,
|
|
6
|
+
eventTarget,
|
|
5
7
|
getRenderingEngine,
|
|
6
8
|
getRenderingEngines,
|
|
7
9
|
getEnabledElementByIds,
|
|
@@ -9,6 +11,8 @@ import {
|
|
|
9
11
|
utilities as csUtils,
|
|
10
12
|
} from '@cornerstonejs/core';
|
|
11
13
|
import type { Types } from '@cornerstonejs/core';
|
|
14
|
+
import { Events } from '../../enums';
|
|
15
|
+
import { ToolActivatedEventDetail } from '../../types/EventTypes';
|
|
12
16
|
import { state } from '../index';
|
|
13
17
|
import {
|
|
14
18
|
IToolBinding,
|
|
@@ -16,6 +20,7 @@ import {
|
|
|
16
20
|
IToolGroup,
|
|
17
21
|
SetToolBindingsType,
|
|
18
22
|
ToolOptionsType,
|
|
23
|
+
ToolConfiguration,
|
|
19
24
|
} from '../../types';
|
|
20
25
|
|
|
21
26
|
import { MouseCursor, SVGMouseCursor } from '../../cursors';
|
|
@@ -69,7 +74,7 @@ export default class ToolGroup implements IToolGroup {
|
|
|
69
74
|
const toolInstance = this._toolInstances[toolInstanceName];
|
|
70
75
|
if (!toolInstance) {
|
|
71
76
|
console.warn(
|
|
72
|
-
`'${toolInstanceName}' is not registered with this toolGroup.`
|
|
77
|
+
`'${toolInstanceName}' is not registered with this toolGroup (${this.id}).`
|
|
73
78
|
);
|
|
74
79
|
return;
|
|
75
80
|
}
|
|
@@ -83,9 +88,9 @@ export default class ToolGroup implements IToolGroup {
|
|
|
83
88
|
* to set the tool to be active or passive or in other states.
|
|
84
89
|
*
|
|
85
90
|
* @param toolName - string
|
|
86
|
-
* @param configuration - Tool configuration objects
|
|
91
|
+
* @param configuration - Tool configuration objects and a custom statistics calculator if needed
|
|
87
92
|
*/
|
|
88
|
-
addTool(toolName: string, configuration = {}): void {
|
|
93
|
+
addTool(toolName: string, configuration: ToolConfiguration = {}): void {
|
|
89
94
|
const toolDefinition = state.tools[toolName];
|
|
90
95
|
const hasToolName = typeof toolName !== 'undefined' && toolName !== '';
|
|
91
96
|
const localToolInstance = this.toolOptions[toolName];
|
|
@@ -372,6 +377,14 @@ export default class ToolGroup implements IToolGroup {
|
|
|
372
377
|
toolInstance.onSetToolActive();
|
|
373
378
|
}
|
|
374
379
|
this._renderViewports();
|
|
380
|
+
|
|
381
|
+
const eventDetail: ToolActivatedEventDetail = {
|
|
382
|
+
toolGroupId: this.id,
|
|
383
|
+
toolName,
|
|
384
|
+
toolBindingsOptions,
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
triggerEvent(eventTarget, Events.TOOL_ACTIVATED, eventDetail);
|
|
375
388
|
}
|
|
376
389
|
|
|
377
390
|
/**
|
|
@@ -593,7 +606,7 @@ export default class ToolGroup implements IToolGroup {
|
|
|
593
606
|
*/
|
|
594
607
|
public setToolConfiguration(
|
|
595
608
|
toolName: string,
|
|
596
|
-
configuration:
|
|
609
|
+
configuration: ToolConfiguration,
|
|
597
610
|
overwrite?: boolean
|
|
598
611
|
): boolean {
|
|
599
612
|
if (this._toolInstances[toolName] === undefined) {
|
|
@@ -608,7 +621,10 @@ export default class ToolGroup implements IToolGroup {
|
|
|
608
621
|
if (overwrite) {
|
|
609
622
|
_configuration = configuration;
|
|
610
623
|
} else {
|
|
611
|
-
|
|
624
|
+
// We should not deep copy here, it is the job of the application to
|
|
625
|
+
// deep copy the configuration before passing it to the toolGroup, otherwise
|
|
626
|
+
// some strange appending behaviour happens for the arrays
|
|
627
|
+
_configuration = Object.assign(
|
|
612
628
|
this._toolInstances[toolName].configuration,
|
|
613
629
|
configuration
|
|
614
630
|
);
|
|
@@ -15,7 +15,9 @@ function getToolGroupsWithToolName(toolName: string): IToolGroup[] | [] {
|
|
|
15
15
|
const toolGroupToolNames = Object.keys(toolOptions);
|
|
16
16
|
|
|
17
17
|
for (let i = 0; i < toolGroupToolNames.length; i++) {
|
|
18
|
-
if (toolName !== toolGroupToolNames[i])
|
|
18
|
+
if (toolName !== toolGroupToolNames[i]) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
19
21
|
|
|
20
22
|
/* filter out tools that don't have options */
|
|
21
23
|
if (!toolOptions[toolName]) {
|