@cornerstonejs/tools 0.56.1 → 0.56.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/tools/CrosshairsTool.d.ts +1 -0
- package/dist/cjs/tools/CrosshairsTool.js +4 -1
- package/dist/cjs/tools/CrosshairsTool.js.map +1 -1
- package/dist/esm/tools/CrosshairsTool.d.ts +1 -0
- package/dist/esm/tools/CrosshairsTool.js +4 -1
- package/dist/esm/tools/CrosshairsTool.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -4
- package/src/constants/COLOR_LUT.ts +262 -0
- package/src/constants/index.ts +3 -0
- package/src/cursors/ImageMouseCursor.ts +39 -0
- package/src/cursors/MouseCursor.ts +114 -0
- package/src/cursors/SVGCursorDescriptor.ts +462 -0
- package/src/cursors/SVGMouseCursor.ts +145 -0
- package/src/cursors/elementCursor.ts +69 -0
- package/src/cursors/index.ts +24 -0
- package/src/cursors/setCursorForElement.ts +33 -0
- package/src/drawingSvg/_getHash.ts +9 -0
- package/src/drawingSvg/_setAttributesIfNecessary.ts +13 -0
- package/src/drawingSvg/_setNewAttributesIfValid.ts +10 -0
- package/src/drawingSvg/clearByToolType.ts +26 -0
- package/src/drawingSvg/draw.ts +16 -0
- package/src/drawingSvg/drawArrow.ts +82 -0
- package/src/drawingSvg/drawCircle.ts +62 -0
- package/src/drawingSvg/drawEllipse.ts +71 -0
- package/src/drawingSvg/drawHandles.ts +87 -0
- package/src/drawingSvg/drawLine.ts +70 -0
- package/src/drawingSvg/drawLink.ts +76 -0
- package/src/drawingSvg/drawLinkedTextBox.ts +64 -0
- package/src/drawingSvg/drawPolyline.ts +80 -0
- package/src/drawingSvg/drawRect.ts +70 -0
- package/src/drawingSvg/drawTextBox.ts +213 -0
- package/src/drawingSvg/getSvgDrawingHelper.ts +98 -0
- package/src/drawingSvg/index.ts +23 -0
- package/src/enums/AnnotationStyleStates.ts +22 -0
- package/src/enums/Events.ts +242 -0
- package/src/enums/SegmentationRepresentations.ts +12 -0
- package/src/enums/ToolBindings.ts +37 -0
- package/src/enums/ToolModes.ts +31 -0
- package/src/enums/Touch.ts +8 -0
- package/src/enums/index.js +16 -0
- package/src/eventDispatchers/annotationModifiedEventDispatcher.ts +41 -0
- package/src/eventDispatchers/cameraModifiedEventDispatcher.ts +41 -0
- package/src/eventDispatchers/imageRenderedEventDispatcher.ts +37 -0
- package/src/eventDispatchers/imageSpacingCalibratedEventDispatcher.ts +50 -0
- package/src/eventDispatchers/index.js +15 -0
- package/src/eventDispatchers/keyboardEventHandlers/index.js +4 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +29 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyUp.ts +33 -0
- package/src/eventDispatchers/keyboardToolEventDispatcher.ts +28 -0
- package/src/eventDispatchers/mouseEventHandlers/index.js +19 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseClick.ts +13 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDoubleClick.ts +13 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +196 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDownActivate.ts +35 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDrag.ts +25 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseMove.ts +70 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseUp.ts +9 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseWheel.ts +13 -0
- package/src/eventDispatchers/mouseToolEventDispatcher.ts +64 -0
- package/src/eventDispatchers/shared/customCallbackHandler.ts +73 -0
- package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +58 -0
- package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +61 -0
- package/src/eventDispatchers/shared/getActiveToolForTouchEvent.ts +64 -0
- package/src/eventDispatchers/shared/getMouseModifier.ts +30 -0
- package/src/eventDispatchers/shared/getToolsWithModesForMouseEvent.ts +56 -0
- package/src/eventDispatchers/shared/getToolsWithModesForTouchEvent.ts +54 -0
- package/src/eventDispatchers/touchEventHandlers/index.js +15 -0
- package/src/eventDispatchers/touchEventHandlers/touchDrag.ts +23 -0
- package/src/eventDispatchers/touchEventHandlers/touchEnd.ts +9 -0
- package/src/eventDispatchers/touchEventHandlers/touchPress.ts +13 -0
- package/src/eventDispatchers/touchEventHandlers/touchStart.ts +174 -0
- package/src/eventDispatchers/touchEventHandlers/touchStartActivate.ts +36 -0
- package/src/eventDispatchers/touchEventHandlers/touchTap.ts +9 -0
- package/src/eventDispatchers/touchToolEventDispatcher.ts +51 -0
- package/src/eventListeners/annotations/annotationModifiedListener.ts +22 -0
- package/src/eventListeners/annotations/annotationSelectionListener.ts +29 -0
- package/src/eventListeners/annotations/index.ts +4 -0
- package/src/eventListeners/index.ts +28 -0
- package/src/eventListeners/keyboard/index.ts +16 -0
- package/src/eventListeners/keyboard/keyDownListener.ts +99 -0
- package/src/eventListeners/mouse/getMouseEventPoints.ts +66 -0
- package/src/eventListeners/mouse/index.ts +55 -0
- package/src/eventListeners/mouse/mouseDoubleClickListener.ts +55 -0
- package/src/eventListeners/mouse/mouseDownListener.ts +519 -0
- package/src/eventListeners/mouse/mouseMoveListener.ts +33 -0
- package/src/eventListeners/segmentation/index.ts +11 -0
- package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +61 -0
- package/src/eventListeners/segmentation/segmentationModifiedEventListener.ts +32 -0
- package/src/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.ts +15 -0
- package/src/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.ts +16 -0
- package/src/eventListeners/touch/getTouchEventPoints.ts +75 -0
- package/src/eventListeners/touch/index.ts +37 -0
- package/src/eventListeners/touch/preventGhostClick.js +72 -0
- package/src/eventListeners/touch/touchStartListener.ts +499 -0
- package/src/eventListeners/wheel/index.ts +27 -0
- package/src/eventListeners/wheel/normalizeWheel.ts +69 -0
- package/src/eventListeners/wheel/wheelListener.ts +51 -0
- package/src/index.ts +133 -0
- package/src/init.ts +187 -0
- package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +399 -0
- package/src/stateManagement/annotation/annotationLocking.ts +178 -0
- package/src/stateManagement/annotation/annotationSelection.ts +163 -0
- package/src/stateManagement/annotation/annotationState.ts +180 -0
- package/src/stateManagement/annotation/annotationVisibility.ts +156 -0
- package/src/stateManagement/annotation/config/ToolStyle.ts +265 -0
- package/src/stateManagement/annotation/config/getFont.ts +36 -0
- package/src/stateManagement/annotation/config/getState.ts +26 -0
- package/src/stateManagement/annotation/config/helpers.ts +55 -0
- package/src/stateManagement/annotation/config/index.ts +5 -0
- package/src/stateManagement/annotation/helpers/state.ts +83 -0
- package/src/stateManagement/annotation/index.ts +15 -0
- package/src/stateManagement/index.js +40 -0
- package/src/stateManagement/segmentation/SegmentationStateManager.ts +491 -0
- package/src/stateManagement/segmentation/activeSegmentation.ts +60 -0
- package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +77 -0
- package/src/stateManagement/segmentation/addSegmentations.ts +27 -0
- package/src/stateManagement/segmentation/config/index.ts +29 -0
- package/src/stateManagement/segmentation/config/segmentationColor.ts +132 -0
- package/src/stateManagement/segmentation/config/segmentationConfig.ts +195 -0
- package/src/stateManagement/segmentation/config/segmentationVisibility.ts +171 -0
- package/src/stateManagement/segmentation/helpers/index.ts +3 -0
- package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +35 -0
- package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +41 -0
- package/src/stateManagement/segmentation/index.ts +22 -0
- package/src/stateManagement/segmentation/removeSegmentationsFromToolGroup.ts +85 -0
- package/src/stateManagement/segmentation/segmentIndex.ts +38 -0
- package/src/stateManagement/segmentation/segmentLocking.ts +72 -0
- package/src/stateManagement/segmentation/segmentationState.ts +429 -0
- package/src/stateManagement/segmentation/triggerSegmentationEvents.ts +157 -0
- package/src/store/SynchronizerManager/Synchronizer.ts +344 -0
- package/src/store/SynchronizerManager/createSynchronizer.ts +41 -0
- package/src/store/SynchronizerManager/destroy.ts +14 -0
- package/src/store/SynchronizerManager/destroySynchronizer.ts +25 -0
- package/src/store/SynchronizerManager/getAllSynchronizers.ts +12 -0
- package/src/store/SynchronizerManager/getSynchronizer.ts +13 -0
- package/src/store/SynchronizerManager/getSynchronizersForViewport.ts +44 -0
- package/src/store/SynchronizerManager/index.js +15 -0
- package/src/store/ToolGroupManager/ToolGroup.ts +679 -0
- package/src/store/ToolGroupManager/createToolGroup.ts +33 -0
- package/src/store/ToolGroupManager/destroy.ts +24 -0
- package/src/store/ToolGroupManager/destroyToolGroup.ts +26 -0
- package/src/store/ToolGroupManager/getAllToolGroups.ts +12 -0
- package/src/store/ToolGroupManager/getToolGroup.ts +14 -0
- package/src/store/ToolGroupManager/getToolGroupForViewport.ts +44 -0
- package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +33 -0
- package/src/store/ToolGroupManager/index.ts +17 -0
- package/src/store/addEnabledElement.ts +137 -0
- package/src/store/addTool.ts +56 -0
- package/src/store/cancelActiveManipulations.ts +30 -0
- package/src/store/filterMoveableAnnotationTools.ts +61 -0
- package/src/store/filterToolsWithAnnotationsForElement.ts +51 -0
- package/src/store/filterToolsWithMoveableHandles.ts +51 -0
- package/src/store/index.ts +29 -0
- package/src/store/removeEnabledElement.ts +132 -0
- package/src/store/state.ts +57 -0
- package/src/store/svgNodeCache.ts +7 -0
- package/src/synchronizers/callbacks/areViewportsCoplanar .ts +12 -0
- package/src/synchronizers/callbacks/cameraSyncCallback.ts +33 -0
- package/src/synchronizers/callbacks/stackImageSyncCallback.ts +157 -0
- package/src/synchronizers/callbacks/voiSyncCallback.ts +51 -0
- package/src/synchronizers/callbacks/zoomPanSyncCallback.ts +43 -0
- package/src/synchronizers/index.ts +11 -0
- package/src/synchronizers/synchronizers/createCameraPositionSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/createStackImageSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/createVOISynchronizer.ts +24 -0
- package/src/synchronizers/synchronizers/createZoomPanSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/index.ts +11 -0
- package/src/tools/CrosshairsTool.ts +2693 -0
- package/src/tools/MIPJumpToClickTool.ts +99 -0
- package/src/tools/MagnifyTool.ts +319 -0
- package/src/tools/PanTool.ts +58 -0
- package/src/tools/PlanarRotateTool.ts +77 -0
- package/src/tools/ReferenceCursors.ts +466 -0
- package/src/tools/ReferenceLinesTool.ts +279 -0
- package/src/tools/ScaleOverlayTool.ts +685 -0
- package/src/tools/StackScrollTool.ts +97 -0
- package/src/tools/StackScrollToolMouseWheelTool.ts +58 -0
- package/src/tools/TrackballRotateTool.ts +141 -0
- package/src/tools/VolumeRotateMouseWheelTool.ts +86 -0
- package/src/tools/WindowLevelTool.ts +260 -0
- package/src/tools/ZoomTool.ts +293 -0
- package/src/tools/annotation/AngleTool.ts +835 -0
- package/src/tools/annotation/ArrowAnnotateTool.ts +820 -0
- package/src/tools/annotation/BidirectionalTool.ts +1350 -0
- package/src/tools/annotation/CircleROITool.ts +1070 -0
- package/src/tools/annotation/CobbAngleTool.ts +815 -0
- package/src/tools/annotation/DragProbeTool.ts +213 -0
- package/src/tools/annotation/EllipticalROITool.ts +1223 -0
- package/src/tools/annotation/LengthTool.ts +861 -0
- package/src/tools/annotation/PlanarFreehandROITool.ts +636 -0
- package/src/tools/annotation/ProbeTool.ts +681 -0
- package/src/tools/annotation/RectangleROITool.ts +1028 -0
- package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +488 -0
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +462 -0
- package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +331 -0
- package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +74 -0
- package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +612 -0
- package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +74 -0
- package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +407 -0
- package/src/tools/base/AnnotationDisplayTool.ts +228 -0
- package/src/tools/base/AnnotationTool.ts +307 -0
- package/src/tools/base/BaseTool.ts +215 -0
- package/src/tools/base/index.ts +4 -0
- package/src/tools/displayTools/Contour/addContourToElement.ts +135 -0
- package/src/tools/displayTools/Contour/contourDisplay.ts +252 -0
- package/src/tools/displayTools/Contour/index.ts +3 -0
- package/src/tools/displayTools/Contour/removeContourFromElement.ts +35 -0
- package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +57 -0
- package/src/tools/displayTools/Labelmap/index.ts +4 -0
- package/src/tools/displayTools/Labelmap/labelmapConfig.ts +37 -0
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +461 -0
- package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +27 -0
- package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +30 -0
- package/src/tools/displayTools/SegmentationDisplayTool.ts +198 -0
- package/src/tools/index.ts +84 -0
- package/src/tools/segmentation/BrushTool.ts +474 -0
- package/src/tools/segmentation/CircleScissorsTool.ts +365 -0
- package/src/tools/segmentation/PaintFillTool.ts +370 -0
- package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +471 -0
- package/src/tools/segmentation/RectangleROIThresholdTool.ts +281 -0
- package/src/tools/segmentation/RectangleScissorsTool.ts +382 -0
- package/src/tools/segmentation/SphereScissorsTool.ts +368 -0
- package/src/tools/segmentation/strategies/eraseCircle.ts +30 -0
- package/src/tools/segmentation/strategies/eraseRectangle.ts +81 -0
- package/src/tools/segmentation/strategies/eraseSphere.ts +27 -0
- package/src/tools/segmentation/strategies/fillCircle.ts +185 -0
- package/src/tools/segmentation/strategies/fillRectangle.ts +110 -0
- package/src/tools/segmentation/strategies/fillSphere.ts +88 -0
- package/src/tools/segmentation/strategies/index.ts +9 -0
- package/src/types/AnnotationGroupSelector.ts +7 -0
- package/src/types/AnnotationStyle.ts +42 -0
- package/src/types/AnnotationTypes.ts +109 -0
- package/src/types/BoundsIJK.ts +5 -0
- package/src/types/CINETypes.ts +32 -0
- package/src/types/ContourTypes.ts +26 -0
- package/src/types/CursorTypes.ts +12 -0
- package/src/types/EventTypes.ts +657 -0
- package/src/types/FloodFillTypes.ts +19 -0
- package/src/types/IAnnotationManager.ts +89 -0
- package/src/types/IDistance.ts +16 -0
- package/src/types/IPoints.ts +18 -0
- package/src/types/ISetToolModeOptions.ts +29 -0
- package/src/types/ISynchronizerEventHandler.ts +11 -0
- package/src/types/IToolClassReference.ts +5 -0
- package/src/types/IToolGroup.ts +72 -0
- package/src/types/ITouchPoints.ts +14 -0
- package/src/types/InteractionTypes.ts +6 -0
- package/src/types/InternalToolTypes.ts +19 -0
- package/src/types/JumpToSliceOptions.ts +7 -0
- package/src/types/LabelmapTypes.ts +41 -0
- package/src/types/PlanarBoundingBox.ts +8 -0
- package/src/types/SVGDrawingHelper.ts +10 -0
- package/src/types/ScrollOptions.ts +9 -0
- package/src/types/SegmentationStateTypes.ts +248 -0
- package/src/types/ToolHandle.ts +26 -0
- package/src/types/ToolProps.ts +16 -0
- package/src/types/ToolSpecificAnnotationTypes.ts +311 -0
- package/src/types/index.ts +115 -0
- package/src/utilities/boundingBox/extend2DBoundingBoxInViewAxis.ts +29 -0
- package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +57 -0
- package/src/utilities/boundingBox/index.ts +4 -0
- package/src/utilities/calibrateImageSpacing.ts +46 -0
- package/src/utilities/cine/events.ts +9 -0
- package/src/utilities/cine/index.ts +5 -0
- package/src/utilities/cine/playClip.ts +435 -0
- package/src/utilities/cine/state.ts +18 -0
- package/src/utilities/clip.js +30 -0
- package/src/utilities/debounce.js +217 -0
- package/src/utilities/drawing/getTextBoxCoordsCanvas.ts +45 -0
- package/src/utilities/drawing/index.ts +3 -0
- package/src/utilities/dynamicVolume/getDataInTime.ts +110 -0
- package/src/utilities/dynamicVolume/index.ts +2 -0
- package/src/utilities/getAnnotationNearPoint.ts +130 -0
- package/src/utilities/getModalityUnit.ts +11 -0
- package/src/utilities/getToolsWithModesForElement.ts +52 -0
- package/src/utilities/index.ts +68 -0
- package/src/utilities/isObject.js +29 -0
- package/src/utilities/math/angle/angleBetweenLines.ts +29 -0
- package/src/utilities/math/circle/_types.ts +6 -0
- package/src/utilities/math/circle/getCanvasCircleCorners.ts +23 -0
- package/src/utilities/math/circle/getCanvasCircleRadius.ts +16 -0
- package/src/utilities/math/circle/index.ts +4 -0
- package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +26 -0
- package/src/utilities/math/ellipse/index.ts +4 -0
- package/src/utilities/math/ellipse/pointInEllipse.ts +38 -0
- package/src/utilities/math/ellipse/pointInEllipsoidWithConstraint.ts +35 -0
- package/src/utilities/math/index.ts +8 -0
- package/src/utilities/math/line/distanceToPoint.ts +24 -0
- package/src/utilities/math/line/distanceToPointSquared.ts +44 -0
- package/src/utilities/math/line/index.ts +5 -0
- package/src/utilities/math/line/intersectLine.ts +92 -0
- package/src/utilities/math/midPoint.ts +24 -0
- package/src/utilities/math/point/distanceToPoint.ts +22 -0
- package/src/utilities/math/point/index.ts +3 -0
- package/src/utilities/math/polyline/addCanvasPointsToArray.ts +62 -0
- package/src/utilities/math/polyline/calculateAreaOfPoints.ts +23 -0
- package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +182 -0
- package/src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts +99 -0
- package/src/utilities/math/polyline/index.ts +19 -0
- package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +36 -0
- package/src/utilities/math/polyline/pointCanProjectOnLine.ts +57 -0
- package/src/utilities/math/polyline/pointsAreWithinCloseContourProximity.ts +15 -0
- package/src/utilities/math/rectangle/distanceToPoint.ts +82 -0
- package/src/utilities/math/rectangle/index.ts +3 -0
- package/src/utilities/math/sphere/index.ts +3 -0
- package/src/utilities/math/sphere/pointInSphere.ts +31 -0
- package/src/utilities/math/vec2/findClosestPoint.ts +40 -0
- package/src/utilities/math/vec2/index.ts +4 -0
- package/src/utilities/math/vec2/liangBarksyClip.ts +84 -0
- package/src/utilities/orientation/getOrientationStringLPS.ts +52 -0
- package/src/utilities/orientation/index.ts +4 -0
- package/src/utilities/orientation/invertOrientationStringLPS.ts +21 -0
- package/src/utilities/planar/filterAnnotationsForDisplay.ts +68 -0
- package/src/utilities/planar/filterAnnotationsWithinSlice.ts +85 -0
- package/src/utilities/planar/getPointInLineOfSightWithCriteria.ts +104 -0
- package/src/utilities/planar/getWorldWidthAndHeightFromCorners.ts +51 -0
- package/src/utilities/planar/getWorldWidthAndHeightFromTwoPoints.ts +51 -0
- package/src/utilities/planar/index.ts +18 -0
- package/src/utilities/planarFreehandROITool/index.ts +7 -0
- package/src/utilities/planarFreehandROITool/interpolateAnnotation.ts +87 -0
- package/src/utilities/planarFreehandROITool/interpolatePoints.ts +214 -0
- package/src/utilities/planarFreehandROITool/interpolation/algorithms/bspline.ts +55 -0
- package/src/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts +90 -0
- package/src/utilities/pointInShapeCallback.ts +138 -0
- package/src/utilities/pointInSurroundingSphereCallback.ts +188 -0
- package/src/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.ts +76 -0
- package/src/utilities/rectangleROITool/index.ts +3 -0
- package/src/utilities/scroll.ts +62 -0
- package/src/utilities/segmentation/brushSizeForToolGroup.ts +72 -0
- package/src/utilities/segmentation/brushThresholdForToolGroup.ts +65 -0
- package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +74 -0
- package/src/utilities/segmentation/createMergedLabelmapForIndex.ts +65 -0
- package/src/utilities/segmentation/floodFill.ts +194 -0
- package/src/utilities/segmentation/getDefaultRepresentationConfig.ts +20 -0
- package/src/utilities/segmentation/index.ts +33 -0
- package/src/utilities/segmentation/isValidRepresentationConfig.ts +22 -0
- package/src/utilities/segmentation/rectangleROIThresholdVolumeByRange.ts +91 -0
- package/src/utilities/segmentation/thresholdSegmentationByRange.ts +129 -0
- package/src/utilities/segmentation/thresholdVolumeByRange.ts +150 -0
- package/src/utilities/segmentation/triggerSegmentationRender.ts +206 -0
- package/src/utilities/segmentation/utilities.ts +116 -0
- package/src/utilities/stackPrefetch/index.ts +8 -0
- package/src/utilities/stackPrefetch/stackPrefetch.ts +405 -0
- package/src/utilities/stackPrefetch/state.ts +17 -0
- package/src/utilities/throttle.js +69 -0
- package/src/utilities/touch/index.ts +246 -0
- package/src/utilities/triggerAnnotationRender.ts +237 -0
- package/src/utilities/triggerAnnotationRenderForViewportIds.ts +18 -0
- package/src/utilities/viewport/index.ts +5 -0
- package/src/utilities/viewport/isViewportPreScaled.ts +24 -0
- package/src/utilities/viewport/jumpToSlice.ts +73 -0
- package/src/utilities/viewport/jumpToWorld.ts +58 -0
- package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +28 -0
- package/src/utilities/viewportFilters/filterViewportsWithParallelNormals.ts +26 -0
- package/src/utilities/viewportFilters/filterViewportsWithSameOrientation.ts +15 -0
- package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +72 -0
- package/src/utilities/viewportFilters/getViewportIdsWithToolToRender.ts +45 -0
- package/src/utilities/viewportFilters/index.ts +11 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { eventTarget, triggerEvent } from '@cornerstonejs/core';
|
|
2
|
+
import { Events } from '../../enums';
|
|
3
|
+
import { AnnotationSelectionChangeEventDetail } from '../../types/EventTypes';
|
|
4
|
+
import { getAnnotation } from './annotationState';
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Constants
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const selectedAnnotationUIDs: Set<string> = new Set();
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* Interface (Public API)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Set a given annotationUID as selected or deselected based on the provided
|
|
18
|
+
* selected value.
|
|
19
|
+
*
|
|
20
|
+
* @param annotationUID - The annotation UID to be selected
|
|
21
|
+
* @param selected - When true, the annotation is selected. When false, the annotation is deselected.
|
|
22
|
+
* @param preserveSelected - When true, preserves existing
|
|
23
|
+
* selections (i.e., the given annotation is appended to the selection set).
|
|
24
|
+
* When false (the default behavior) the currently selected items are discarded
|
|
25
|
+
* (i.e., the given annotation instance replaces the currently selected ones).
|
|
26
|
+
*/
|
|
27
|
+
function setAnnotationSelected(
|
|
28
|
+
annotationUID: string,
|
|
29
|
+
selected = true,
|
|
30
|
+
preserveSelected = false
|
|
31
|
+
): void {
|
|
32
|
+
if (selected) {
|
|
33
|
+
selectAnnotation(annotationUID, preserveSelected);
|
|
34
|
+
} else {
|
|
35
|
+
deselectAnnotation(annotationUID);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Set a given annotation as selected.
|
|
41
|
+
*
|
|
42
|
+
* @param annotationUID - The annotation UID to be selected
|
|
43
|
+
* @param preserveSelected - When true, preserves existing
|
|
44
|
+
* selections (i.e., the given annotation is appended to the selection set).
|
|
45
|
+
* When false (the default behavior) the currently selected items are discarded
|
|
46
|
+
* (i.e., the given annotation instance replaces the currently selected ones).
|
|
47
|
+
*/
|
|
48
|
+
function selectAnnotation(
|
|
49
|
+
annotationUID: string,
|
|
50
|
+
preserveSelected = false
|
|
51
|
+
): void {
|
|
52
|
+
const detail = makeEventDetail();
|
|
53
|
+
if (!preserveSelected) {
|
|
54
|
+
clearSelectionSet(selectedAnnotationUIDs, detail);
|
|
55
|
+
}
|
|
56
|
+
if (annotationUID && !selectedAnnotationUIDs.has(annotationUID)) {
|
|
57
|
+
selectedAnnotationUIDs.add(annotationUID);
|
|
58
|
+
detail.added.push(annotationUID);
|
|
59
|
+
}
|
|
60
|
+
publish(detail, selectedAnnotationUIDs);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Deselect one or all annotations.
|
|
65
|
+
*
|
|
66
|
+
* @param annotationUID - If an annotation is provided that instance will be removed from
|
|
67
|
+
* the internal selection set. If none is given, ALL selections will be cleared.
|
|
68
|
+
*/
|
|
69
|
+
function deselectAnnotation(annotationUID?: string): void {
|
|
70
|
+
const detail = makeEventDetail();
|
|
71
|
+
if (annotationUID) {
|
|
72
|
+
if (selectedAnnotationUIDs.delete(annotationUID)) {
|
|
73
|
+
detail.removed.push(annotationUID);
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
clearSelectionSet(selectedAnnotationUIDs, detail);
|
|
77
|
+
}
|
|
78
|
+
publish(detail, selectedAnnotationUIDs);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Return an array of ALL the selected annotationUIDs
|
|
83
|
+
* @returns An array of Annotation UIDs
|
|
84
|
+
*/
|
|
85
|
+
function getAnnotationsSelected(): Array<string> {
|
|
86
|
+
return Array.from(selectedAnnotationUIDs);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Given a tool name, return ALL the annotationUIDs for that tool that are selected
|
|
91
|
+
* @param toolName - The name of the tool you want to get the selected annotation for
|
|
92
|
+
* @returns An array of annotationUIDs
|
|
93
|
+
*/
|
|
94
|
+
function getAnnotationsSelectedByToolName(toolName: string): Array<string> {
|
|
95
|
+
return getAnnotationsSelected().filter((annotationUID) => {
|
|
96
|
+
const annotation = getAnnotation(annotationUID);
|
|
97
|
+
return annotation.metadata.toolName === toolName;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Given an annotationUID, return true if it is selected, false
|
|
103
|
+
* otherwise.
|
|
104
|
+
* @param annotationUID - Annotation UID
|
|
105
|
+
* @returns A boolean value.
|
|
106
|
+
*/
|
|
107
|
+
function isAnnotationSelected(annotationUID: string): boolean {
|
|
108
|
+
return selectedAnnotationUIDs.has(annotationUID);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Return the number of the selected annotation
|
|
113
|
+
* @returns The size of the selected annotation set
|
|
114
|
+
*/
|
|
115
|
+
function getAnnotationsSelectedCount(): number {
|
|
116
|
+
return selectedAnnotationUIDs.size;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
* Private Helpers
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
function makeEventDetail(): AnnotationSelectionChangeEventDetail {
|
|
124
|
+
return Object.freeze({
|
|
125
|
+
added: [],
|
|
126
|
+
removed: [],
|
|
127
|
+
selection: [],
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function clearSelectionSet(
|
|
132
|
+
selectionSet: Set<string>,
|
|
133
|
+
detail: AnnotationSelectionChangeEventDetail
|
|
134
|
+
): void {
|
|
135
|
+
selectionSet.forEach((value) => {
|
|
136
|
+
if (selectionSet.delete(value)) {
|
|
137
|
+
detail.removed.push(value);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function publish(
|
|
143
|
+
detail: AnnotationSelectionChangeEventDetail,
|
|
144
|
+
selectionSet: Set<string>
|
|
145
|
+
) {
|
|
146
|
+
if (detail.added.length > 0 || detail.removed.length > 0) {
|
|
147
|
+
selectionSet.forEach((item) => void detail.selection.push(item));
|
|
148
|
+
triggerEvent(eventTarget, Events.ANNOTATION_SELECTION_CHANGE, detail);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/*
|
|
153
|
+
* Exports
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
export {
|
|
157
|
+
setAnnotationSelected,
|
|
158
|
+
getAnnotationsSelected,
|
|
159
|
+
getAnnotationsSelectedByToolName,
|
|
160
|
+
getAnnotationsSelectedCount,
|
|
161
|
+
deselectAnnotation,
|
|
162
|
+
isAnnotationSelected,
|
|
163
|
+
};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import {
|
|
2
|
+
triggerEvent,
|
|
3
|
+
eventTarget,
|
|
4
|
+
utilities as csUtils,
|
|
5
|
+
} from '@cornerstonejs/core';
|
|
6
|
+
import { Events } from '../../enums';
|
|
7
|
+
import { defaultFrameOfReferenceSpecificAnnotationManager } from './FrameOfReferenceSpecificAnnotationManager';
|
|
8
|
+
import { Annotations, Annotation } from '../../types/AnnotationTypes';
|
|
9
|
+
import { AnnotationRemovedEventDetail } from '../../types/EventTypes';
|
|
10
|
+
import { AnnotationGroupSelector } from '../../types';
|
|
11
|
+
import {
|
|
12
|
+
triggerAnnotationAddedForElement,
|
|
13
|
+
triggerAnnotationAddedForFOR,
|
|
14
|
+
} from './helpers/state';
|
|
15
|
+
|
|
16
|
+
// our default annotation manager
|
|
17
|
+
let defaultManager = defaultFrameOfReferenceSpecificAnnotationManager;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* It returns the default annotations manager.
|
|
21
|
+
* @returns the singleton default annotations manager.
|
|
22
|
+
*/
|
|
23
|
+
function getAnnotationManager() {
|
|
24
|
+
return defaultManager;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Set the annotation manager to be used for rendering, adding, removing, etc.
|
|
29
|
+
* @param annotationManager - The annotation manager to be used
|
|
30
|
+
*/
|
|
31
|
+
function setAnnotationManager(annotationManager) {
|
|
32
|
+
defaultManager = annotationManager;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// set back to default frameOfReferenceSpecificAnnotationManager
|
|
36
|
+
function resetAnnotationManager() {
|
|
37
|
+
defaultManager = defaultFrameOfReferenceSpecificAnnotationManager;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns the annotations for a given tool with the provided options that is
|
|
42
|
+
* used to filter annotations based on the annotation manager.
|
|
43
|
+
*
|
|
44
|
+
* In our default implementation, the options are the element and/or the FrameOfReferenceUID.
|
|
45
|
+
* Hence, the getAnnotations function will return the annotations for the given tool
|
|
46
|
+
* that are associated with the FrameOfReferenceUID.
|
|
47
|
+
*
|
|
48
|
+
* @param toolName - The name of the tool.
|
|
49
|
+
* @param annotationGroupSelector - element or FrameOfReferenceUID that is used
|
|
50
|
+
* to group annotations in the annotation manager.
|
|
51
|
+
* @returns The annotations corresponding to the Frame of Reference and the toolName.
|
|
52
|
+
*/
|
|
53
|
+
function getAnnotations(
|
|
54
|
+
toolName: string,
|
|
55
|
+
annotationGroupSelector: AnnotationGroupSelector
|
|
56
|
+
): Annotations {
|
|
57
|
+
const manager = getAnnotationManager();
|
|
58
|
+
const groupKey = manager.getGroupKey(annotationGroupSelector);
|
|
59
|
+
return manager.getAnnotations(groupKey, toolName) as Annotations;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Add the annotation to the annotation manager along with the options that is
|
|
64
|
+
* used to filter the annotation manager and the annotation group that
|
|
65
|
+
* the annotation belongs to.
|
|
66
|
+
*
|
|
67
|
+
* As a result, our default implementation will add the annotation to the
|
|
68
|
+
* default manager using the FrameOfReferenceUID as the group key.
|
|
69
|
+
*
|
|
70
|
+
* @param annotation - The annotation that is being added to the annotations manager.
|
|
71
|
+
* @param annotationGroupSelector - element or FrameOfReferenceUID that is used
|
|
72
|
+
* to group annotations in the annotation manager.
|
|
73
|
+
*/
|
|
74
|
+
function addAnnotation(
|
|
75
|
+
annotation: Annotation,
|
|
76
|
+
annotationGroupSelector: AnnotationGroupSelector
|
|
77
|
+
): string {
|
|
78
|
+
if (annotation.annotationUID === undefined) {
|
|
79
|
+
annotation.annotationUID = csUtils.uuidv4() as string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const manager = getAnnotationManager();
|
|
83
|
+
const groupKey = manager.getGroupKey(annotationGroupSelector);
|
|
84
|
+
|
|
85
|
+
manager.addAnnotation(annotation, groupKey);
|
|
86
|
+
|
|
87
|
+
// if the annotation manager selector is an element, trigger the
|
|
88
|
+
// annotation added event for that element.
|
|
89
|
+
if (annotationGroupSelector instanceof HTMLDivElement) {
|
|
90
|
+
triggerAnnotationAddedForElement(annotation, annotationGroupSelector);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// if no element is provided, render all viewports that have the
|
|
94
|
+
// same frame of reference.
|
|
95
|
+
// Todo: we should do something else here for other types of annotation managers.
|
|
96
|
+
triggerAnnotationAddedForFOR(annotation);
|
|
97
|
+
|
|
98
|
+
return annotation.annotationUID;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Get the number of annotations for a given tool with the provided options that is
|
|
103
|
+
* used to filter annotations based on the annotation manager.
|
|
104
|
+
*
|
|
105
|
+
* In our default implementation, the options are the element and/or the FrameOfReferenceUID.
|
|
106
|
+
* Hence, the getNumberOfAnnotations function will return the number of annotations for the given tool
|
|
107
|
+
* that are associated with the FrameOfReferenceUID.
|
|
108
|
+
*
|
|
109
|
+
* @param toolName - The name of the tool
|
|
110
|
+
* @param annotationGroupSelector - element or FrameOfReferenceUID that is used
|
|
111
|
+
* to group annotations in the annotation manager.
|
|
112
|
+
*
|
|
113
|
+
*/
|
|
114
|
+
function getNumberOfAnnotations(
|
|
115
|
+
toolName: string,
|
|
116
|
+
annotationGroupSelector: AnnotationGroupSelector
|
|
117
|
+
): number {
|
|
118
|
+
const manager = getAnnotationManager();
|
|
119
|
+
const groupKey = manager.getGroupKey(annotationGroupSelector);
|
|
120
|
+
|
|
121
|
+
return manager.getNumberOfAnnotations(groupKey, toolName);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Remove the annotation by UID of the annotation.
|
|
126
|
+
* @param annotationUID - The unique identifier for the annotation.
|
|
127
|
+
*/
|
|
128
|
+
function removeAnnotation(annotationUID: string): void {
|
|
129
|
+
const manager = getAnnotationManager();
|
|
130
|
+
const annotation = manager.getAnnotation(annotationUID);
|
|
131
|
+
|
|
132
|
+
// no need to continue in case there is no annotation.
|
|
133
|
+
if (!annotation) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
manager.removeAnnotation(annotationUID);
|
|
138
|
+
|
|
139
|
+
// trigger annotation removed
|
|
140
|
+
const eventType = Events.ANNOTATION_REMOVED;
|
|
141
|
+
|
|
142
|
+
const eventDetail: AnnotationRemovedEventDetail = {
|
|
143
|
+
annotation,
|
|
144
|
+
annotationManagerUID: manager.uid,
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
triggerEvent(eventTarget, eventType, eventDetail);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Get the Annotation object by its UID
|
|
152
|
+
* @param annotationUID - The unique identifier of the annotation.
|
|
153
|
+
*/
|
|
154
|
+
function getAnnotation(annotationUID: string): Annotation {
|
|
155
|
+
const manager = getAnnotationManager();
|
|
156
|
+
const annotation = manager.getAnnotation(annotationUID);
|
|
157
|
+
|
|
158
|
+
return annotation;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* It removes all annotations from the default annotation manager
|
|
163
|
+
*/
|
|
164
|
+
function removeAllAnnotations(): void {
|
|
165
|
+
const manager = getAnnotationManager();
|
|
166
|
+
manager.removeAllAnnotations();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export {
|
|
170
|
+
getAnnotations,
|
|
171
|
+
getNumberOfAnnotations,
|
|
172
|
+
addAnnotation,
|
|
173
|
+
getAnnotation,
|
|
174
|
+
removeAnnotation,
|
|
175
|
+
removeAllAnnotations,
|
|
176
|
+
// annotation manager
|
|
177
|
+
setAnnotationManager,
|
|
178
|
+
getAnnotationManager,
|
|
179
|
+
resetAnnotationManager,
|
|
180
|
+
};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { eventTarget, triggerEvent } from '@cornerstonejs/core';
|
|
2
|
+
import { getAnnotation } from './annotationState';
|
|
3
|
+
import { Events } from '../../enums';
|
|
4
|
+
import { Annotation } from '../../types';
|
|
5
|
+
import { AnnotationVisibilityChangeEventDetail } from '../../types/EventTypes';
|
|
6
|
+
import {
|
|
7
|
+
isAnnotationSelected,
|
|
8
|
+
deselectAnnotation,
|
|
9
|
+
} from './annotationSelection';
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* It stores all hidden annotation uids.
|
|
13
|
+
*/
|
|
14
|
+
const globalHiddenAnnotationUIDsSet: Set<string> = new Set();
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* Interface (Public API)
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Set the "visible" state of a given annotation instance.
|
|
22
|
+
*
|
|
23
|
+
* @event ANNOTATION_VISIBILITY_CHANGE
|
|
24
|
+
*
|
|
25
|
+
* @param annotationUID - The annotation uid which will have
|
|
26
|
+
* its visible state changed. An event will only be triggered if the visible state
|
|
27
|
+
* of the given annotation instance changed.
|
|
28
|
+
* @param visible - A boolean value indicating if the instance should
|
|
29
|
+
* be visible (true) or not (false)
|
|
30
|
+
*/
|
|
31
|
+
function setAnnotationVisibility(annotationUID: string, visible = true): void {
|
|
32
|
+
const detail = makeEventDetail();
|
|
33
|
+
if (annotationUID) {
|
|
34
|
+
if (visible) {
|
|
35
|
+
show(annotationUID, globalHiddenAnnotationUIDsSet, detail);
|
|
36
|
+
} else {
|
|
37
|
+
hide(annotationUID, globalHiddenAnnotationUIDsSet, detail);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
publish(detail);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Clears all the hidden annotations.
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
function showAllAnnotations(): void {
|
|
48
|
+
const detail = makeEventDetail();
|
|
49
|
+
globalHiddenAnnotationUIDsSet.forEach((annotationUID) => {
|
|
50
|
+
show(annotationUID, globalHiddenAnnotationUIDsSet, detail);
|
|
51
|
+
});
|
|
52
|
+
publish(detail);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Given an annotation UID, return true if it is visible, false if hidden and undefined if does not exist.
|
|
57
|
+
* @param annotationUID - The annotation uid to tell if is visible or not.
|
|
58
|
+
* @returns A boolean value or value if does not exist.
|
|
59
|
+
*/
|
|
60
|
+
function isAnnotationVisible(annotationUID: string): boolean | undefined {
|
|
61
|
+
const annotation = getAnnotation(annotationUID);
|
|
62
|
+
|
|
63
|
+
if (annotation) {
|
|
64
|
+
return !globalHiddenAnnotationUIDsSet.has(annotationUID);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* It decorates given annotation with isVisible property.
|
|
69
|
+
* It properly initializes the isVisible on annotation(the property will be create if does not exist yet)
|
|
70
|
+
*
|
|
71
|
+
* @param annotation - The annotation object to be checked.
|
|
72
|
+
*/
|
|
73
|
+
function checkAndDefineIsVisibleProperty(annotation: Annotation): void {
|
|
74
|
+
if (annotation) {
|
|
75
|
+
const isVisible = annotation.isVisible ?? true;
|
|
76
|
+
if (shouldDefineIsVisibleProperty(annotation)) {
|
|
77
|
+
Object.defineProperty(annotation, 'isVisible', {
|
|
78
|
+
configurable: false,
|
|
79
|
+
enumerable: true,
|
|
80
|
+
set: setIsVisible,
|
|
81
|
+
get: getIsVisible,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
setAnnotationVisibility(annotation.annotationUID, isVisible);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* Private Helpers
|
|
90
|
+
*/
|
|
91
|
+
function makeEventDetail(): AnnotationVisibilityChangeEventDetail {
|
|
92
|
+
return Object.freeze({
|
|
93
|
+
lastVisible: [],
|
|
94
|
+
lastHidden: [],
|
|
95
|
+
hidden: [],
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function show(
|
|
100
|
+
annotationUID: string,
|
|
101
|
+
annotationUIDsSet: Set<string>,
|
|
102
|
+
detail: AnnotationVisibilityChangeEventDetail
|
|
103
|
+
): void {
|
|
104
|
+
if (annotationUIDsSet.delete(annotationUID)) {
|
|
105
|
+
detail.lastVisible.push(annotationUID);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function hide(
|
|
110
|
+
annotationUID: string,
|
|
111
|
+
annotationUIDsSet: Set<string>,
|
|
112
|
+
detail: AnnotationVisibilityChangeEventDetail
|
|
113
|
+
): void {
|
|
114
|
+
if (!annotationUIDsSet.has(annotationUID)) {
|
|
115
|
+
annotationUIDsSet.add(annotationUID);
|
|
116
|
+
if (isAnnotationSelected(annotationUID)) {
|
|
117
|
+
deselectAnnotation(annotationUID);
|
|
118
|
+
}
|
|
119
|
+
detail.lastHidden.push(annotationUID);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function publish(detail: AnnotationVisibilityChangeEventDetail) {
|
|
124
|
+
if (detail.lastHidden.length > 0 || detail.lastVisible.length > 0) {
|
|
125
|
+
globalHiddenAnnotationUIDsSet.forEach(
|
|
126
|
+
(item) => void detail.hidden.push(item)
|
|
127
|
+
);
|
|
128
|
+
triggerEvent(eventTarget, Events.ANNOTATION_VISIBILITY_CHANGE, detail);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function shouldDefineIsVisibleProperty(annotation: Annotation): boolean {
|
|
133
|
+
const descriptor = Object.getOwnPropertyDescriptor(annotation, 'isVisible');
|
|
134
|
+
if (descriptor) {
|
|
135
|
+
return (
|
|
136
|
+
descriptor.configurable &&
|
|
137
|
+
(descriptor.set !== setIsVisible || descriptor.get !== getIsVisible)
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
return Object.isExtensible(annotation);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function setIsVisible(hidden: boolean) {
|
|
144
|
+
setAnnotationVisibility((this as Annotation).annotationUID, hidden);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function getIsVisible() {
|
|
148
|
+
return isAnnotationVisible((this as Annotation).annotationUID);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export {
|
|
152
|
+
setAnnotationVisibility,
|
|
153
|
+
showAllAnnotations,
|
|
154
|
+
isAnnotationVisible,
|
|
155
|
+
checkAndDefineIsVisibleProperty,
|
|
156
|
+
};
|