@cornerstonejs/tools 2.0.0-beta.2 → 2.0.0-beta.20

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.
Files changed (2855) hide show
  1. package/dist/esm/constants/COLOR_LUT.js +0 -1
  2. package/dist/esm/constants/index.js +0 -1
  3. package/dist/esm/cursors/ImageMouseCursor.js +0 -1
  4. package/dist/esm/cursors/MouseCursor.js +0 -1
  5. package/dist/esm/cursors/SVGCursorDescriptor.js +0 -1
  6. package/dist/esm/cursors/SVGMouseCursor.js +0 -1
  7. package/dist/esm/cursors/elementCursor.js +0 -1
  8. package/dist/esm/cursors/index.js +0 -1
  9. package/dist/esm/cursors/setCursorForElement.js +0 -1
  10. package/dist/esm/drawingSvg/_getHash.js +0 -1
  11. package/dist/esm/drawingSvg/clearByToolType.js +0 -1
  12. package/dist/esm/drawingSvg/draw.js +0 -1
  13. package/dist/esm/drawingSvg/drawArrow.js +1 -2
  14. package/dist/esm/drawingSvg/drawCircle.js +1 -2
  15. package/dist/esm/drawingSvg/drawEllipse.js +6 -43
  16. package/dist/esm/drawingSvg/drawEllipseByCoordinates.d.ts +4 -0
  17. package/dist/esm/drawingSvg/drawEllipseByCoordinates.js +46 -0
  18. package/dist/esm/drawingSvg/drawHandle.d.ts +4 -0
  19. package/dist/esm/drawingSvg/drawHandle.js +60 -0
  20. package/dist/esm/drawingSvg/drawHandles.js +4 -61
  21. package/dist/esm/drawingSvg/drawLine.js +1 -2
  22. package/dist/esm/drawingSvg/drawLink.js +0 -1
  23. package/dist/esm/drawingSvg/drawLinkedTextBox.js +0 -1
  24. package/dist/esm/drawingSvg/drawPath.d.ts +11 -0
  25. package/dist/esm/drawingSvg/drawPath.js +48 -0
  26. package/dist/esm/drawingSvg/drawPolyline.d.ts +3 -1
  27. package/dist/esm/drawingSvg/drawPolyline.js +5 -11
  28. package/dist/esm/drawingSvg/drawRect.js +6 -39
  29. package/dist/esm/drawingSvg/drawRectByCoordinates.d.ts +3 -0
  30. package/dist/esm/drawingSvg/drawRectByCoordinates.js +52 -0
  31. package/dist/esm/drawingSvg/drawRedactionRect.d.ts +1 -0
  32. package/dist/esm/drawingSvg/drawRedactionRect.js +37 -0
  33. package/dist/esm/drawingSvg/drawTextBox.js +0 -1
  34. package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -2
  35. package/dist/esm/drawingSvg/index.d.ts +6 -1
  36. package/dist/esm/drawingSvg/index.js +6 -2
  37. package/dist/esm/drawingSvg/setAttributesIfNecessary.js +0 -1
  38. package/dist/esm/drawingSvg/setNewAttributesIfValid.js +0 -1
  39. package/dist/esm/enums/AnnotationStyleStates.d.ts +2 -1
  40. package/dist/esm/enums/AnnotationStyleStates.js +1 -1
  41. package/dist/esm/enums/ChangeTypes.d.ts +9 -0
  42. package/dist/esm/enums/ChangeTypes.js +10 -0
  43. package/dist/esm/enums/Events.d.ts +5 -0
  44. package/dist/esm/enums/Events.js +5 -1
  45. package/dist/esm/enums/SegmentationRepresentations.d.ts +2 -1
  46. package/dist/esm/enums/SegmentationRepresentations.js +1 -1
  47. package/dist/esm/enums/StrategyCallbacks.d.ts +14 -0
  48. package/dist/esm/enums/StrategyCallbacks.js +15 -0
  49. package/dist/esm/enums/ToolBindings.js +0 -1
  50. package/dist/esm/enums/ToolModes.js +0 -1
  51. package/dist/esm/enums/Touch.js +0 -1
  52. package/dist/esm/enums/WorkerTypes.d.ts +8 -0
  53. package/dist/esm/enums/WorkerTypes.js +9 -0
  54. package/dist/esm/enums/index.d.ts +11 -8
  55. package/dist/esm/enums/index.js +4 -2
  56. package/dist/esm/eventDispatchers/annotationInterpolationEventDispatcher.js +17 -0
  57. package/dist/esm/eventDispatchers/annotationModifiedEventDispatcher.js +1 -2
  58. package/dist/esm/eventDispatchers/cameraModifiedEventDispatcher.js +0 -1
  59. package/dist/esm/eventDispatchers/cameraResetEventDispatcher.js +26 -0
  60. package/dist/esm/eventDispatchers/imageRenderedEventDispatcher.js +0 -1
  61. package/dist/esm/eventDispatchers/imageSpacingCalibratedEventDispatcher.js +0 -1
  62. package/dist/esm/eventDispatchers/index.d.ts +9 -7
  63. package/dist/esm/eventDispatchers/index.js +3 -2
  64. package/dist/esm/eventDispatchers/keyboardEventHandlers/index.d.ts +2 -2
  65. package/dist/esm/eventDispatchers/keyboardEventHandlers/index.js +0 -1
  66. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +18 -8
  67. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyUp.js +0 -1
  68. package/dist/esm/eventDispatchers/keyboardToolEventDispatcher.js +0 -1
  69. package/dist/esm/eventDispatchers/mouseEventHandlers/index.d.ts +8 -8
  70. package/dist/esm/eventDispatchers/mouseEventHandlers/index.js +0 -1
  71. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseClick.js +0 -1
  72. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDoubleClick.js +0 -1
  73. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -2
  74. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownActivate.js +0 -1
  75. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
  76. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +34 -0
  77. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDrag.js +0 -1
  78. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseMove.js +0 -1
  79. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseUp.js +0 -1
  80. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseWheel.js +0 -1
  81. package/dist/esm/eventDispatchers/mouseToolEventDispatcher.js +0 -1
  82. package/dist/esm/eventDispatchers/shared/customCallbackHandler.js +0 -1
  83. package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +4 -2
  84. package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js +0 -1
  85. package/dist/esm/eventDispatchers/shared/getActiveToolForTouchEvent.js +0 -1
  86. package/dist/esm/eventDispatchers/shared/getMouseModifier.js +0 -1
  87. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts +3 -0
  88. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +28 -0
  89. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
  90. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +32 -0
  91. package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.d.ts +1 -1
  92. package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.js +0 -1
  93. package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.d.ts +1 -1
  94. package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.js +0 -1
  95. package/dist/esm/eventDispatchers/touchEventHandlers/index.d.ts +6 -6
  96. package/dist/esm/eventDispatchers/touchEventHandlers/index.js +0 -1
  97. package/dist/esm/eventDispatchers/touchEventHandlers/touchDrag.js +0 -1
  98. package/dist/esm/eventDispatchers/touchEventHandlers/touchEnd.js +0 -1
  99. package/dist/esm/eventDispatchers/touchEventHandlers/touchPress.js +0 -1
  100. package/dist/esm/eventDispatchers/touchEventHandlers/touchStart.js +0 -1
  101. package/dist/esm/eventDispatchers/touchEventHandlers/touchStartActivate.js +0 -1
  102. package/dist/esm/eventDispatchers/touchEventHandlers/touchTap.js +0 -1
  103. package/dist/esm/eventDispatchers/touchToolEventDispatcher.js +0 -1
  104. package/dist/esm/eventListeners/annotations/annotationCompletedListener.d.ts +2 -0
  105. package/dist/esm/eventListeners/annotations/annotationCompletedListener.js +8 -0
  106. package/dist/esm/eventListeners/annotations/annotationModifiedListener.js +2 -5
  107. package/dist/esm/eventListeners/annotations/annotationRemovedListener.d.ts +2 -0
  108. package/dist/esm/eventListeners/annotations/annotationRemovedListener.js +8 -0
  109. package/dist/esm/eventListeners/annotations/annotationSelectionListener.js +1 -2
  110. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +5 -0
  111. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +232 -0
  112. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationRemoved.d.ts +2 -0
  113. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationRemoved.js +5 -0
  114. package/dist/esm/eventListeners/annotations/contourSegmentation/index.d.ts +2 -0
  115. package/dist/esm/eventListeners/annotations/contourSegmentation/index.js +2 -0
  116. package/dist/esm/eventListeners/annotations/index.d.ts +3 -1
  117. package/dist/esm/eventListeners/annotations/index.js +3 -2
  118. package/dist/esm/eventListeners/index.d.ts +3 -3
  119. package/dist/esm/eventListeners/index.js +3 -4
  120. package/dist/esm/eventListeners/keyboard/index.js +0 -1
  121. package/dist/esm/eventListeners/keyboard/keyDownListener.js +1 -3
  122. package/dist/esm/eventListeners/mouse/getMouseEventPoints.js +0 -1
  123. package/dist/esm/eventListeners/mouse/index.js +0 -1
  124. package/dist/esm/eventListeners/mouse/mouseDoubleClickListener.js +0 -1
  125. package/dist/esm/eventListeners/mouse/mouseDownListener.js +5 -2
  126. package/dist/esm/eventListeners/mouse/mouseMoveListener.js +5 -2
  127. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +112 -0
  128. package/dist/esm/eventListeners/segmentation/index.d.ts +2 -1
  129. package/dist/esm/eventListeners/segmentation/index.js +2 -2
  130. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts +3 -0
  131. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +76 -0
  132. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +5 -31
  133. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +2 -12
  134. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +10 -3
  135. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +2 -3
  136. package/dist/esm/eventListeners/touch/getTouchEventPoints.js +0 -1
  137. package/dist/esm/eventListeners/touch/index.js +0 -1
  138. package/dist/esm/eventListeners/touch/preventGhostClick.js +0 -1
  139. package/dist/esm/eventListeners/touch/touchStartListener.js +0 -9
  140. package/dist/esm/eventListeners/wheel/index.js +0 -1
  141. package/dist/esm/eventListeners/wheel/normalizeWheel.js +0 -1
  142. package/dist/esm/eventListeners/wheel/wheelListener.js +0 -1
  143. package/dist/esm/index.d.ts +3 -2
  144. package/dist/esm/index.js +3 -3
  145. package/dist/esm/init.js +7 -2
  146. package/dist/esm/stateManagement/annotation/AnnotationGroup.d.ts +18 -0
  147. package/dist/esm/stateManagement/annotation/AnnotationGroup.js +69 -0
  148. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +3 -2
  149. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +39 -13
  150. package/dist/esm/stateManagement/annotation/annotationLocking.js +0 -1
  151. package/dist/esm/stateManagement/annotation/annotationSelection.js +1 -2
  152. package/dist/esm/stateManagement/annotation/annotationState.d.ts +8 -1
  153. package/dist/esm/stateManagement/annotation/annotationState.js +74 -15
  154. package/dist/esm/stateManagement/annotation/annotationVisibility.js +0 -1
  155. package/dist/esm/stateManagement/annotation/config/ToolStyle.js +23 -19
  156. package/dist/esm/stateManagement/annotation/config/getFont.js +0 -1
  157. package/dist/esm/stateManagement/annotation/config/getState.js +3 -1
  158. package/dist/esm/stateManagement/annotation/config/helpers.js +0 -1
  159. package/dist/esm/stateManagement/annotation/config/index.js +0 -1
  160. package/dist/esm/stateManagement/annotation/helpers/state.d.ts +7 -1
  161. package/dist/esm/stateManagement/annotation/helpers/state.js +40 -9
  162. package/dist/esm/stateManagement/annotation/index.d.ts +2 -1
  163. package/dist/esm/stateManagement/annotation/index.js +2 -2
  164. package/dist/esm/stateManagement/annotation/utilities/defineProperties.d.ts +4 -0
  165. package/dist/esm/stateManagement/annotation/utilities/defineProperties.js +22 -0
  166. package/dist/esm/stateManagement/index.d.ts +20 -15
  167. package/dist/esm/stateManagement/index.js +3 -4
  168. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +28 -19
  169. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +196 -136
  170. package/dist/esm/stateManagement/segmentation/activeSegmentation.d.ts +4 -4
  171. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +6 -16
  172. package/dist/esm/stateManagement/segmentation/addRepresentation.d.ts +3 -0
  173. package/dist/esm/stateManagement/segmentation/addRepresentation.js +51 -0
  174. package/dist/esm/stateManagement/segmentation/addRepresentationData.d.ts +12 -0
  175. package/dist/esm/stateManagement/segmentation/addRepresentationData.js +29 -0
  176. package/dist/esm/stateManagement/segmentation/addRepresentations.d.ts +3 -0
  177. package/dist/esm/stateManagement/segmentation/addRepresentations.js +9 -0
  178. package/dist/esm/stateManagement/segmentation/addSegmentations.js +1 -3
  179. package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
  180. package/dist/esm/stateManagement/segmentation/config/index.js +2 -3
  181. package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +6 -7
  182. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +18 -12
  183. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +8 -8
  184. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +19 -14
  185. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +7 -5
  186. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +29 -73
  187. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +17 -0
  188. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +54 -0
  189. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +21 -0
  190. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +94 -0
  191. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.d.ts +17 -0
  192. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +90 -0
  193. package/dist/esm/stateManagement/segmentation/helpers/getRepresentationRenderingConfig.d.ts +2 -0
  194. package/dist/esm/stateManagement/segmentation/helpers/getRepresentationRenderingConfig.js +11 -0
  195. package/dist/esm/stateManagement/segmentation/helpers/index.js +0 -1
  196. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +13 -2
  197. package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js +6 -7
  198. package/dist/esm/stateManagement/segmentation/index.d.ts +7 -3
  199. package/dist/esm/stateManagement/segmentation/index.js +7 -4
  200. package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts +4 -0
  201. package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js +6 -0
  202. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.d.ts +8 -0
  203. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +102 -0
  204. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/createAndAddContourSegmentationsFromClippedSurfaces.d.ts +3 -0
  205. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/createAndAddContourSegmentationsFromClippedSurfaces.js +71 -0
  206. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.d.ts +3 -0
  207. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.js +20 -0
  208. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/updateContoursOnCameraModified.d.ts +1 -0
  209. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/updateContoursOnCameraModified.js +25 -0
  210. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts +2 -0
  211. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +6 -0
  212. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts +7 -0
  213. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +152 -0
  214. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts +6 -0
  215. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js +53 -0
  216. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts +6 -0
  217. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +100 -0
  218. package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts +4 -0
  219. package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js +7 -0
  220. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts +3 -0
  221. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js +36 -0
  222. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +3 -0
  223. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +44 -0
  224. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts +5 -0
  225. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +39 -0
  226. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts +12 -0
  227. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +77 -0
  228. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts +1 -0
  229. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +58 -0
  230. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -0
  231. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +63 -0
  232. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +3 -0
  233. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +46 -0
  234. package/dist/esm/stateManagement/segmentation/polySeg/index.d.ts +5 -0
  235. package/dist/esm/stateManagement/segmentation/polySeg/index.js +5 -0
  236. package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts +1 -0
  237. package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.js +23 -0
  238. package/dist/esm/stateManagement/segmentation/removeRepresentationsFromViewport.d.ts +2 -0
  239. package/dist/esm/stateManagement/segmentation/removeRepresentationsFromViewport.js +23 -0
  240. package/dist/esm/stateManagement/segmentation/segmentIndex.js +12 -2
  241. package/dist/esm/stateManagement/segmentation/segmentLocking.js +0 -1
  242. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +30 -16
  243. package/dist/esm/stateManagement/segmentation/segmentationState.js +80 -51
  244. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +2 -2
  245. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +6 -19
  246. package/dist/esm/store/SynchronizerManager/Synchronizer.d.ts +2 -0
  247. package/dist/esm/store/SynchronizerManager/Synchronizer.js +30 -5
  248. package/dist/esm/store/SynchronizerManager/createSynchronizer.js +0 -1
  249. package/dist/esm/store/SynchronizerManager/destroy.js +0 -1
  250. package/dist/esm/store/SynchronizerManager/destroySynchronizer.js +0 -1
  251. package/dist/esm/store/SynchronizerManager/getAllSynchronizers.js +0 -1
  252. package/dist/esm/store/SynchronizerManager/getSynchronizer.js +0 -1
  253. package/dist/esm/store/SynchronizerManager/getSynchronizersForViewport.js +0 -1
  254. package/dist/esm/store/SynchronizerManager/index.d.ts +6 -6
  255. package/dist/esm/store/SynchronizerManager/index.js +0 -1
  256. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +16 -3
  257. package/dist/esm/store/ToolGroupManager/ToolGroup.js +108 -15
  258. package/dist/esm/store/ToolGroupManager/createToolGroup.js +0 -1
  259. package/dist/esm/store/ToolGroupManager/destroy.js +0 -1
  260. package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +0 -5
  261. package/dist/esm/store/ToolGroupManager/getAllToolGroups.js +0 -1
  262. package/dist/esm/store/ToolGroupManager/getToolGroup.js +0 -1
  263. package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.d.ts +1 -1
  264. package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.js +4 -1
  265. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +0 -1
  266. package/dist/esm/store/ToolGroupManager/index.js +0 -1
  267. package/dist/esm/store/addEnabledElement.js +4 -3
  268. package/dist/esm/store/addTool.d.ts +1 -0
  269. package/dist/esm/store/addTool.js +4 -1
  270. package/dist/esm/store/cancelActiveManipulations.js +0 -1
  271. package/dist/esm/store/filterMoveableAnnotationTools.js +0 -1
  272. package/dist/esm/store/filterToolsWithAnnotationsForElement.js +0 -1
  273. package/dist/esm/store/filterToolsWithMoveableHandles.js +0 -1
  274. package/dist/esm/store/index.d.ts +2 -2
  275. package/dist/esm/store/index.js +2 -3
  276. package/dist/esm/store/removeEnabledElement.js +4 -3
  277. package/dist/esm/store/state.js +9 -3
  278. package/dist/esm/store/svgNodeCache.js +0 -1
  279. package/dist/esm/synchronizers/callbacks/areViewportsCoplanar .d.ts +1 -1
  280. package/dist/esm/synchronizers/callbacks/areViewportsCoplanar .js +0 -1
  281. package/dist/esm/synchronizers/callbacks/cameraSyncCallback.js +0 -1
  282. package/dist/esm/synchronizers/callbacks/imageSliceSyncCallback.d.ts +3 -0
  283. package/dist/esm/synchronizers/callbacks/imageSliceSyncCallback.js +68 -0
  284. package/dist/esm/synchronizers/callbacks/presentationViewSyncCallback.d.ts +2 -0
  285. package/dist/esm/synchronizers/callbacks/presentationViewSyncCallback.js +12 -0
  286. package/dist/esm/synchronizers/callbacks/slabThicknessSyncCallback.d.ts +2 -0
  287. package/dist/esm/synchronizers/callbacks/slabThicknessSyncCallback.js +15 -0
  288. package/dist/esm/synchronizers/callbacks/voiSyncCallback.d.ts +1 -1
  289. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js +13 -5
  290. package/dist/esm/synchronizers/callbacks/zoomPanSyncCallback.js +0 -1
  291. package/dist/esm/synchronizers/index.d.ts +5 -2
  292. package/dist/esm/synchronizers/index.js +5 -3
  293. package/dist/esm/synchronizers/synchronizers/createCameraPositionSynchronizer.js +0 -1
  294. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.d.ts +2 -0
  295. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.js +10 -0
  296. package/dist/esm/synchronizers/synchronizers/createPresentationViewSynchronizer.d.ts +3 -0
  297. package/dist/esm/synchronizers/synchronizers/createPresentationViewSynchronizer.js +8 -0
  298. package/dist/esm/synchronizers/synchronizers/createSlabThicknessSynchronizer.d.ts +2 -0
  299. package/dist/esm/synchronizers/synchronizers/createSlabThicknessSynchronizer.js +8 -0
  300. package/dist/esm/synchronizers/synchronizers/createVOISynchronizer.d.ts +3 -2
  301. package/dist/esm/synchronizers/synchronizers/createVOISynchronizer.js +6 -3
  302. package/dist/esm/synchronizers/synchronizers/createZoomPanSynchronizer.js +0 -1
  303. package/dist/esm/synchronizers/synchronizers/index.d.ts +4 -2
  304. package/dist/esm/synchronizers/synchronizers/index.js +4 -3
  305. package/dist/esm/tools/AdvancedMagnifyTool.d.ts +41 -0
  306. package/dist/esm/tools/AdvancedMagnifyTool.js +425 -0
  307. package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +76 -0
  308. package/dist/esm/tools/AdvancedMagnifyViewport.js +351 -0
  309. package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +37 -0
  310. package/dist/esm/tools/AdvancedMagnifyViewportManager.js +161 -0
  311. package/dist/esm/tools/AnnotationEraserTool.d.ts +10 -0
  312. package/dist/esm/tools/AnnotationEraserTool.js +52 -0
  313. package/dist/esm/tools/CrosshairsTool.d.ts +4 -2
  314. package/dist/esm/tools/CrosshairsTool.js +55 -13
  315. package/dist/esm/tools/MIPJumpToClickTool.js +2 -2
  316. package/dist/esm/tools/MagnifyTool.d.ts +1 -0
  317. package/dist/esm/tools/MagnifyTool.js +10 -5
  318. package/dist/esm/tools/OrientationMarkerTool.d.ts +94 -0
  319. package/dist/esm/tools/OrientationMarkerTool.js +277 -0
  320. package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
  321. package/dist/esm/tools/OverlayGridTool.js +164 -0
  322. package/dist/esm/tools/PanTool.js +0 -1
  323. package/dist/esm/tools/PlanarRotateTool.js +2 -3
  324. package/dist/esm/tools/ReferenceCursors.js +2 -4
  325. package/dist/esm/tools/ReferenceLinesTool.d.ts +6 -2
  326. package/dist/esm/tools/ReferenceLinesTool.js +83 -7
  327. package/dist/esm/tools/ScaleOverlayTool.js +4 -4
  328. package/dist/esm/tools/SculptorTool/CircleSculptCursor.d.ts +20 -0
  329. package/dist/esm/tools/SculptorTool/CircleSculptCursor.js +107 -0
  330. package/dist/esm/tools/SculptorTool.d.ts +41 -0
  331. package/dist/esm/tools/SculptorTool.js +289 -0
  332. package/dist/esm/tools/SegmentationIntersectionTool.d.ts +18 -0
  333. package/dist/esm/tools/SegmentationIntersectionTool.js +177 -0
  334. package/dist/esm/tools/StackScrollTool.d.ts +0 -1
  335. package/dist/esm/tools/StackScrollTool.js +3 -13
  336. package/dist/esm/tools/StackScrollToolMouseWheelTool.d.ts +1 -0
  337. package/dist/esm/tools/StackScrollToolMouseWheelTool.js +4 -3
  338. package/dist/esm/tools/TrackballRotateTool.d.ts +8 -0
  339. package/dist/esm/tools/TrackballRotateTool.js +75 -2
  340. package/dist/esm/tools/VolumeRotateMouseWheelTool.js +2 -3
  341. package/dist/esm/tools/WindowLevelRegionTool.d.ts +26 -0
  342. package/dist/esm/tools/WindowLevelRegionTool.js +222 -0
  343. package/dist/esm/tools/WindowLevelTool.js +22 -22
  344. package/dist/esm/tools/ZoomTool.js +2 -6
  345. package/dist/esm/tools/annotation/AngleTool.js +27 -33
  346. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +21 -41
  347. package/dist/esm/tools/annotation/BidirectionalTool.js +42 -51
  348. package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -2
  349. package/dist/esm/tools/annotation/CircleROITool.js +64 -77
  350. package/dist/esm/tools/annotation/CobbAngleTool.d.ts +31 -5
  351. package/dist/esm/tools/annotation/CobbAngleTool.js +291 -95
  352. package/dist/esm/tools/annotation/DragProbeTool.js +12 -9
  353. package/dist/esm/tools/annotation/EllipticalROITool.d.ts +2 -3
  354. package/dist/esm/tools/annotation/EllipticalROITool.js +105 -134
  355. package/dist/esm/tools/annotation/KeyImageTool.d.ts +34 -0
  356. package/dist/esm/tools/annotation/KeyImageTool.js +175 -0
  357. package/dist/esm/tools/annotation/LengthTool.js +27 -44
  358. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.d.ts +10 -0
  359. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +89 -0
  360. package/dist/esm/tools/annotation/LivewireContourTool.d.ts +63 -0
  361. package/dist/esm/tools/annotation/LivewireContourTool.js +502 -0
  362. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +10 -0
  363. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +30 -0
  364. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +12 -10
  365. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +207 -189
  366. package/dist/esm/tools/annotation/ProbeTool.d.ts +1 -2
  367. package/dist/esm/tools/annotation/ProbeTool.js +67 -48
  368. package/dist/esm/tools/annotation/RectangleROITool.d.ts +1 -1
  369. package/dist/esm/tools/annotation/RectangleROITool.js +62 -76
  370. package/dist/esm/tools/annotation/SplineContourSegmentationTool.d.ts +8 -0
  371. package/dist/esm/tools/annotation/SplineContourSegmentationTool.js +17 -0
  372. package/dist/esm/tools/annotation/SplineROITool.d.ts +71 -0
  373. package/dist/esm/tools/annotation/SplineROITool.js +726 -0
  374. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.d.ts +36 -0
  375. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +462 -0
  376. package/dist/esm/tools/annotation/VideoRedactionTool.d.ts +46 -0
  377. package/dist/esm/tools/annotation/VideoRedactionTool.js +458 -0
  378. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +40 -20
  379. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +58 -34
  380. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js +8 -9
  381. package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +1 -2
  382. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +33 -21
  383. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +2 -3
  384. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +69 -22
  385. package/dist/esm/tools/annotation/splines/BSpline.d.ts +5 -0
  386. package/dist/esm/tools/annotation/splines/BSpline.js +9 -0
  387. package/dist/esm/tools/annotation/splines/CardinalSpline.d.ts +12 -0
  388. package/dist/esm/tools/annotation/splines/CardinalSpline.js +32 -0
  389. package/dist/esm/tools/annotation/splines/CatmullRomSpline.d.ts +5 -0
  390. package/dist/esm/tools/annotation/splines/CatmullRomSpline.js +7 -0
  391. package/dist/esm/tools/annotation/splines/CubicSpline.d.ts +13 -0
  392. package/dist/esm/tools/annotation/splines/CubicSpline.js +164 -0
  393. package/dist/esm/tools/annotation/splines/LinearSpline.d.ts +5 -0
  394. package/dist/esm/tools/annotation/splines/LinearSpline.js +7 -0
  395. package/dist/esm/tools/annotation/splines/QuadraticBezier.d.ts +6 -0
  396. package/dist/esm/tools/annotation/splines/QuadraticBezier.js +15 -0
  397. package/dist/esm/tools/annotation/splines/QuadraticSpline.d.ts +9 -0
  398. package/dist/esm/tools/annotation/splines/QuadraticSpline.js +13 -0
  399. package/dist/esm/tools/annotation/splines/Spline.d.ts +51 -0
  400. package/dist/esm/tools/annotation/splines/Spline.js +395 -0
  401. package/dist/esm/tools/base/AnnotationDisplayTool.d.ts +1 -1
  402. package/dist/esm/tools/base/AnnotationDisplayTool.js +8 -3
  403. package/dist/esm/tools/base/AnnotationTool.d.ts +19 -1
  404. package/dist/esm/tools/base/AnnotationTool.js +75 -13
  405. package/dist/esm/tools/base/BaseTool.d.ts +3 -1
  406. package/dist/esm/tools/base/BaseTool.js +24 -11
  407. package/dist/esm/tools/base/ContourBaseTool.d.ts +23 -0
  408. package/dist/esm/tools/base/ContourBaseTool.js +150 -0
  409. package/dist/esm/tools/base/ContourSegmentationBaseTool.d.ts +17 -0
  410. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +166 -0
  411. package/dist/esm/tools/base/index.js +0 -1
  412. package/dist/esm/tools/displayTools/Contour/contourConfig.js +10 -5
  413. package/dist/esm/tools/displayTools/Contour/contourDisplay.d.ts +5 -7
  414. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +33 -65
  415. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.d.ts +9 -0
  416. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.js +10 -0
  417. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.d.ts +6 -0
  418. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +128 -0
  419. package/dist/esm/tools/displayTools/Contour/contourHandler/utils.d.ts +4 -0
  420. package/dist/esm/tools/displayTools/Contour/contourHandler/utils.js +41 -0
  421. package/dist/esm/tools/displayTools/Contour/index.js +0 -1
  422. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js +11 -9
  423. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +2 -1
  424. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +26 -12
  425. package/dist/esm/tools/displayTools/Labelmap/index.d.ts +2 -1
  426. package/dist/esm/tools/displayTools/Labelmap/index.js +2 -2
  427. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +2 -1
  428. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +12 -6
  429. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +129 -108
  430. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +2 -8
  431. package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.d.ts +4 -0
  432. package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.js +32 -0
  433. package/dist/esm/tools/displayTools/SegmentationRenderingEngine.d.ts +19 -0
  434. package/dist/esm/tools/displayTools/SegmentationRenderingEngine.js +136 -0
  435. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +3 -0
  436. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +63 -0
  437. package/dist/esm/tools/displayTools/Surface/index.d.ts +2 -0
  438. package/dist/esm/tools/displayTools/Surface/index.js +2 -0
  439. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.js +11 -0
  440. package/dist/esm/tools/displayTools/Surface/surfaceConfig.d.ts +3 -0
  441. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +8 -0
  442. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.d.ts +10 -0
  443. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +63 -0
  444. package/dist/esm/tools/distancePointToContour.d.ts +3 -0
  445. package/dist/esm/tools/distancePointToContour.js +18 -0
  446. package/dist/esm/tools/index.d.ts +20 -5
  447. package/dist/esm/tools/index.js +20 -6
  448. package/dist/esm/tools/segmentation/BrushTool.d.ts +74 -3
  449. package/dist/esm/tools/segmentation/BrushTool.js +269 -95
  450. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.d.ts +63 -0
  451. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +340 -0
  452. package/dist/esm/tools/segmentation/CircleScissorsTool.d.ts +4 -2
  453. package/dist/esm/tools/segmentation/CircleScissorsTool.js +38 -22
  454. package/dist/esm/tools/segmentation/PaintFillTool.js +29 -10
  455. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +3 -0
  456. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +83 -17
  457. package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js +6 -13
  458. package/dist/esm/tools/segmentation/RectangleScissorsTool.d.ts +3 -1
  459. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +35 -25
  460. package/dist/esm/tools/segmentation/SegmentSelectTool.d.ts +20 -0
  461. package/dist/esm/tools/segmentation/SegmentSelectTool.js +109 -0
  462. package/dist/esm/tools/segmentation/SphereScissorsTool.d.ts +4 -2
  463. package/dist/esm/tools/segmentation/SphereScissorsTool.js +41 -26
  464. package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +92 -0
  465. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +133 -0
  466. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts +6 -0
  467. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +47 -0
  468. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts +7 -0
  469. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +67 -0
  470. package/dist/esm/tools/segmentation/strategies/compositions/erase.d.ts +5 -0
  471. package/dist/esm/tools/segmentation/strategies/compositions/erase.js +6 -0
  472. package/dist/esm/tools/segmentation/strategies/compositions/index.d.ts +36 -0
  473. package/dist/esm/tools/segmentation/strategies/compositions/index.js +18 -0
  474. package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.d.ts +5 -0
  475. package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.js +123 -0
  476. package/dist/esm/tools/segmentation/strategies/compositions/preview.d.ts +8 -0
  477. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +84 -0
  478. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.d.ts +5 -0
  479. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +20 -0
  480. package/dist/esm/tools/segmentation/strategies/compositions/setValue.d.ts +8 -0
  481. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +27 -0
  482. package/dist/esm/tools/segmentation/strategies/compositions/threshold.d.ts +5 -0
  483. package/dist/esm/tools/segmentation/strategies/compositions/threshold.js +22 -0
  484. package/dist/esm/tools/segmentation/strategies/eraseCircle.d.ts +2 -15
  485. package/dist/esm/tools/segmentation/strategies/eraseCircle.js +6 -9
  486. package/dist/esm/tools/segmentation/strategies/eraseRectangle.d.ts +4 -8
  487. package/dist/esm/tools/segmentation/strategies/eraseRectangle.js +4 -21
  488. package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +2 -15
  489. package/dist/esm/tools/segmentation/strategies/eraseSphere.js +6 -8
  490. package/dist/esm/tools/segmentation/strategies/fillCircle.d.ts +13 -16
  491. package/dist/esm/tools/segmentation/strategies/fillCircle.js +63 -66
  492. package/dist/esm/tools/segmentation/strategies/fillRectangle.d.ts +2 -7
  493. package/dist/esm/tools/segmentation/strategies/fillRectangle.js +46 -18
  494. package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +6 -17
  495. package/dist/esm/tools/segmentation/strategies/fillSphere.js +45 -51
  496. package/dist/esm/tools/segmentation/strategies/index.js +0 -1
  497. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.d.ts +11 -0
  498. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +74 -0
  499. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +1 -1
  500. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +4 -5
  501. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -0
  502. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +16 -0
  503. package/dist/esm/types/AnnotationGroupSelector.d.ts +1 -1
  504. package/dist/esm/types/AnnotationGroupSelector.js +0 -1
  505. package/dist/esm/types/AnnotationRenderContext.d.ts +11 -0
  506. package/dist/esm/types/AnnotationRenderContext.js +1 -0
  507. package/dist/esm/types/AnnotationStyle.d.ts +7 -7
  508. package/dist/esm/types/AnnotationStyle.js +0 -1
  509. package/dist/esm/types/AnnotationTypes.d.ts +12 -14
  510. package/dist/esm/types/AnnotationTypes.js +0 -1
  511. package/dist/esm/types/BoundsIJK.d.ts +1 -1
  512. package/dist/esm/types/BoundsIJK.js +0 -1
  513. package/dist/esm/types/CINETypes.d.ts +2 -2
  514. package/dist/esm/types/CINETypes.js +0 -1
  515. package/dist/esm/types/CalculatorTypes.d.ts +33 -3
  516. package/dist/esm/types/CalculatorTypes.js +0 -1
  517. package/dist/esm/types/CardinalSplineProps.d.ts +5 -0
  518. package/dist/esm/types/CardinalSplineProps.js +1 -0
  519. package/dist/esm/types/ClosestControlPoint.d.ts +4 -0
  520. package/dist/esm/types/ClosestControlPoint.js +1 -0
  521. package/dist/esm/types/ClosestPoint.d.ts +5 -0
  522. package/dist/esm/types/ClosestPoint.js +1 -0
  523. package/dist/esm/types/ClosestSplinePoint.d.ts +4 -0
  524. package/dist/esm/types/ClosestSplinePoint.js +1 -0
  525. package/dist/esm/types/ContourAnnotation.d.ts +18 -0
  526. package/dist/esm/types/ContourAnnotation.js +6 -0
  527. package/dist/esm/types/ContourSegmentationAnnotation.d.ts +24 -0
  528. package/dist/esm/types/ContourSegmentationAnnotation.js +1 -0
  529. package/dist/esm/types/ContourTypes.d.ts +11 -4
  530. package/dist/esm/types/ContourTypes.js +0 -1
  531. package/dist/esm/types/ControlPointInfo.d.ts +5 -0
  532. package/dist/esm/types/ControlPointInfo.js +1 -0
  533. package/dist/esm/types/CursorTypes.d.ts +2 -2
  534. package/dist/esm/types/CursorTypes.js +0 -1
  535. package/dist/esm/types/EventTypes.d.ts +111 -85
  536. package/dist/esm/types/EventTypes.js +0 -1
  537. package/dist/esm/types/FloodFillTypes.d.ts +7 -7
  538. package/dist/esm/types/FloodFillTypes.js +0 -1
  539. package/dist/esm/types/IAnnotationManager.js +0 -1
  540. package/dist/esm/types/IDistance.d.ts +1 -1
  541. package/dist/esm/types/IDistance.js +0 -1
  542. package/dist/esm/types/IPoints.d.ts +1 -1
  543. package/dist/esm/types/IPoints.js +0 -1
  544. package/dist/esm/types/ISculptToolShape.d.ts +12 -0
  545. package/dist/esm/types/ISculptToolShape.js +1 -0
  546. package/dist/esm/types/ISetToolModeOptions.d.ts +5 -5
  547. package/dist/esm/types/ISetToolModeOptions.js +0 -1
  548. package/dist/esm/types/ISpline.d.ts +30 -0
  549. package/dist/esm/types/ISpline.js +1 -0
  550. package/dist/esm/types/ISynchronizerEventHandler.d.ts +1 -1
  551. package/dist/esm/types/ISynchronizerEventHandler.js +0 -1
  552. package/dist/esm/types/IToolClassReference.d.ts +1 -1
  553. package/dist/esm/types/IToolClassReference.js +0 -1
  554. package/dist/esm/types/IToolGroup.d.ts +10 -4
  555. package/dist/esm/types/IToolGroup.js +0 -1
  556. package/dist/esm/types/ITouchPoints.d.ts +1 -1
  557. package/dist/esm/types/ITouchPoints.js +0 -1
  558. package/dist/esm/types/InteractionTypes.d.ts +1 -1
  559. package/dist/esm/types/InteractionTypes.js +0 -1
  560. package/dist/esm/types/InternalToolTypes.d.ts +3 -3
  561. package/dist/esm/types/InternalToolTypes.js +0 -1
  562. package/dist/esm/types/InterpolationTypes.d.ts +20 -0
  563. package/dist/esm/types/InterpolationTypes.js +1 -0
  564. package/dist/esm/types/JumpToSliceOptions.d.ts +1 -1
  565. package/dist/esm/types/JumpToSliceOptions.js +0 -1
  566. package/dist/esm/types/LabelmapToolOperationData.d.ts +19 -0
  567. package/dist/esm/types/LabelmapToolOperationData.js +1 -0
  568. package/dist/esm/types/LabelmapTypes.d.ts +12 -3
  569. package/dist/esm/types/LabelmapTypes.js +0 -1
  570. package/dist/esm/types/PlanarBoundingBox.d.ts +1 -1
  571. package/dist/esm/types/PlanarBoundingBox.js +0 -1
  572. package/dist/esm/types/PolySeg.d.ts +6 -0
  573. package/dist/esm/types/PolySeg.js +1 -0
  574. package/dist/esm/types/SVGDrawingHelper.d.ts +1 -1
  575. package/dist/esm/types/SVGDrawingHelper.js +0 -1
  576. package/dist/esm/types/ScrollOptions.d.ts +2 -1
  577. package/dist/esm/types/ScrollOptions.js +0 -1
  578. package/dist/esm/types/SegmentationStateTypes.d.ts +51 -30
  579. package/dist/esm/types/SegmentationStateTypes.js +0 -1
  580. package/dist/esm/types/SplineCurveSegment.d.ts +14 -0
  581. package/dist/esm/types/SplineCurveSegment.js +1 -0
  582. package/dist/esm/types/SplineLineSegment.d.ts +10 -0
  583. package/dist/esm/types/SplineLineSegment.js +1 -0
  584. package/dist/esm/types/SplineProps.d.ts +5 -0
  585. package/dist/esm/types/SplineProps.js +1 -0
  586. package/dist/esm/types/SurfaceTypes.d.ts +4 -0
  587. package/dist/esm/types/SurfaceTypes.js +1 -0
  588. package/dist/esm/types/ToolAction.d.ts +8 -0
  589. package/dist/esm/types/ToolAction.js +1 -0
  590. package/dist/esm/types/ToolHandle.d.ts +3 -3
  591. package/dist/esm/types/ToolHandle.js +0 -1
  592. package/dist/esm/types/ToolProps.d.ts +4 -4
  593. package/dist/esm/types/ToolProps.js +0 -1
  594. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +154 -11
  595. package/dist/esm/types/ToolSpecificAnnotationTypes.js +0 -1
  596. package/dist/esm/types/index.d.ts +29 -10
  597. package/dist/esm/types/index.js +0 -1
  598. package/dist/esm/utilities/BucketQueue.d.ts +20 -0
  599. package/dist/esm/utilities/BucketQueue.js +78 -0
  600. package/dist/esm/utilities/annotationFrameRange.d.ts +13 -0
  601. package/dist/esm/utilities/annotationFrameRange.js +42 -0
  602. package/dist/esm/utilities/annotationHydration.d.ts +8 -0
  603. package/dist/esm/utilities/annotationHydration.js +82 -0
  604. package/dist/esm/utilities/boundingBox/extend2DBoundingBoxInViewAxis.js +0 -1
  605. package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.d.ts +4 -2
  606. package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js +43 -26
  607. package/dist/esm/utilities/boundingBox/index.d.ts +2 -2
  608. package/dist/esm/utilities/boundingBox/index.js +2 -3
  609. package/dist/esm/utilities/calibrateImageSpacing.js +0 -1
  610. package/dist/esm/utilities/cine/events.js +0 -1
  611. package/dist/esm/utilities/cine/index.js +0 -1
  612. package/dist/esm/utilities/cine/playClip.d.ts +1 -1
  613. package/dist/esm/utilities/cine/playClip.js +35 -15
  614. package/dist/esm/utilities/cine/state.d.ts +2 -1
  615. package/dist/esm/utilities/cine/state.js +4 -2
  616. package/dist/esm/utilities/clip.js +0 -1
  617. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts +2 -0
  618. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +21 -0
  619. package/dist/esm/utilities/contourSegmentation/areSameSegment.d.ts +2 -0
  620. package/dist/esm/utilities/contourSegmentation/areSameSegment.js +6 -0
  621. package/dist/esm/utilities/contourSegmentation/index.d.ts +4 -0
  622. package/dist/esm/utilities/contourSegmentation/index.js +4 -0
  623. package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts +3 -0
  624. package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.js +3 -0
  625. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts +2 -0
  626. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +17 -0
  627. package/dist/esm/utilities/contours/AnnotationToPointData.d.ts +11 -0
  628. package/dist/esm/utilities/contours/AnnotationToPointData.js +38 -0
  629. package/dist/esm/utilities/contours/RectangleROIStartEndThreshold.d.ts +6 -0
  630. package/dist/esm/utilities/contours/RectangleROIStartEndThreshold.js +40 -0
  631. package/dist/esm/utilities/contours/areCoplanarContours.d.ts +2 -0
  632. package/dist/esm/utilities/contours/areCoplanarContours.js +15 -0
  633. package/dist/esm/utilities/contours/calculatePerimeter.d.ts +2 -0
  634. package/dist/esm/utilities/contours/calculatePerimeter.js +16 -0
  635. package/dist/esm/utilities/contours/contourFinder.d.ts +7 -0
  636. package/dist/esm/utilities/contours/contourFinder.js +62 -0
  637. package/dist/esm/utilities/contours/detectContourHoles.d.ts +5 -0
  638. package/dist/esm/utilities/contours/detectContourHoles.js +73 -0
  639. package/dist/esm/utilities/contours/findHandlePolylineIndex.d.ts +2 -0
  640. package/dist/esm/utilities/contours/findHandlePolylineIndex.js +31 -0
  641. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.d.ts +4 -0
  642. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +109 -0
  643. package/dist/esm/utilities/contours/getContourHolesDataCanvas.d.ts +3 -0
  644. package/dist/esm/utilities/contours/getContourHolesDataCanvas.js +14 -0
  645. package/dist/esm/utilities/contours/getContourHolesDataWorld.d.ts +3 -0
  646. package/dist/esm/utilities/contours/getContourHolesDataWorld.js +5 -0
  647. package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts +11 -0
  648. package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.js +45 -0
  649. package/dist/esm/utilities/contours/index.d.ts +14 -0
  650. package/dist/esm/utilities/contours/index.js +14 -0
  651. package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts +3 -0
  652. package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js +4 -0
  653. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.d.ts +2 -0
  654. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js +38 -0
  655. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts +7 -0
  656. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js +106 -0
  657. package/dist/esm/utilities/contours/interpolation/getInterpolationData.d.ts +7 -0
  658. package/dist/esm/utilities/contours/interpolation/getInterpolationData.js +47 -0
  659. package/dist/esm/utilities/contours/interpolation/getInterpolationDataCollection.d.ts +4 -0
  660. package/dist/esm/utilities/contours/interpolation/getInterpolationDataCollection.js +14 -0
  661. package/dist/esm/utilities/contours/interpolation/index.d.ts +2 -0
  662. package/dist/esm/utilities/contours/interpolation/index.js +2 -0
  663. package/dist/esm/utilities/contours/interpolation/interpolate.d.ts +11 -0
  664. package/dist/esm/utilities/contours/interpolation/interpolate.js +339 -0
  665. package/dist/esm/utilities/contours/interpolation/selectHandles.d.ts +4 -0
  666. package/dist/esm/utilities/contours/interpolation/selectHandles.js +162 -0
  667. package/dist/esm/utilities/contours/interpolation/updateChildInterpolationUID.d.ts +2 -0
  668. package/dist/esm/utilities/contours/interpolation/updateChildInterpolationUID.js +12 -0
  669. package/dist/esm/utilities/contours/reverseIfAntiClockwise.d.ts +2 -0
  670. package/dist/esm/utilities/contours/reverseIfAntiClockwise.js +11 -0
  671. package/dist/esm/utilities/contours/updateContourPolyline.d.ts +16 -0
  672. package/dist/esm/utilities/contours/updateContourPolyline.js +48 -0
  673. package/dist/esm/utilities/debounce.js +0 -1
  674. package/dist/esm/utilities/drawing/getTextBoxCoordsCanvas.js +0 -1
  675. package/dist/esm/utilities/drawing/index.js +0 -1
  676. package/dist/esm/utilities/dynamicVolume/generateImageFromTimeData.js +0 -1
  677. package/dist/esm/utilities/dynamicVolume/getDataInTime.d.ts +1 -1
  678. package/dist/esm/utilities/dynamicVolume/getDataInTime.js +71 -27
  679. package/dist/esm/utilities/dynamicVolume/index.js +0 -1
  680. package/dist/esm/utilities/getAnnotationNearPoint.js +0 -1
  681. package/dist/esm/utilities/getCalibratedUnits.d.ts +21 -5
  682. package/dist/esm/utilities/getCalibratedUnits.js +129 -22
  683. package/dist/esm/utilities/getPixelValueUnits.d.ts +6 -0
  684. package/dist/esm/utilities/getPixelValueUnits.js +26 -0
  685. package/dist/esm/utilities/getSphereBoundsInfo.d.ts +11 -0
  686. package/dist/esm/utilities/getSphereBoundsInfo.js +41 -0
  687. package/dist/esm/utilities/getToolsWithModesForElement.d.ts +1 -1
  688. package/dist/esm/utilities/getToolsWithModesForElement.js +0 -1
  689. package/dist/esm/utilities/getVOIMultipliers.d.ts +5 -0
  690. package/dist/esm/utilities/getVOIMultipliers.js +18 -0
  691. package/dist/esm/utilities/getViewportForAnnotation.d.ts +3 -0
  692. package/dist/esm/utilities/getViewportForAnnotation.js +5 -0
  693. package/dist/esm/utilities/getViewportsForAnnotation.d.ts +3 -0
  694. package/dist/esm/utilities/getViewportsForAnnotation.js +16 -0
  695. package/dist/esm/utilities/index.d.ts +16 -4
  696. package/dist/esm/utilities/index.js +16 -5
  697. package/dist/esm/utilities/isObject.js +0 -1
  698. package/dist/esm/utilities/livewire/LiveWirePath.d.ts +19 -0
  699. package/dist/esm/utilities/livewire/LiveWirePath.js +71 -0
  700. package/dist/esm/utilities/livewire/LivewireScissors.d.ts +38 -0
  701. package/dist/esm/utilities/livewire/LivewireScissors.js +305 -0
  702. package/dist/esm/utilities/math/aabb/distanceToPoint.d.ts +2 -0
  703. package/dist/esm/utilities/math/aabb/distanceToPoint.js +4 -0
  704. package/dist/esm/utilities/math/aabb/distanceToPointSquared.d.ts +2 -0
  705. package/dist/esm/utilities/math/aabb/distanceToPointSquared.js +20 -0
  706. package/dist/esm/utilities/math/aabb/index.d.ts +3 -0
  707. package/dist/esm/utilities/math/aabb/index.js +3 -0
  708. package/dist/esm/utilities/math/aabb/intersectAABB.d.ts +2 -0
  709. package/dist/esm/utilities/math/aabb/intersectAABB.js +6 -0
  710. package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +3 -1
  711. package/dist/esm/utilities/math/angle/angleBetweenLines.js +19 -3
  712. package/dist/esm/utilities/math/basic/BasicStatsCalculator.d.ts +13 -6
  713. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +83 -27
  714. package/dist/esm/utilities/math/basic/Calculator.d.ts +2 -2
  715. package/dist/esm/utilities/math/basic/Calculator.js +0 -1
  716. package/dist/esm/utilities/math/basic/index.js +0 -1
  717. package/dist/esm/utilities/math/circle/_types.d.ts +1 -1
  718. package/dist/esm/utilities/math/circle/_types.js +0 -1
  719. package/dist/esm/utilities/math/circle/getCanvasCircleCorners.js +0 -1
  720. package/dist/esm/utilities/math/circle/getCanvasCircleRadius.js +0 -1
  721. package/dist/esm/utilities/math/circle/index.js +0 -1
  722. package/dist/esm/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +2 -3
  723. package/dist/esm/utilities/math/ellipse/getCanvasEllipseCorners.js +0 -1
  724. package/dist/esm/utilities/math/ellipse/index.d.ts +2 -2
  725. package/dist/esm/utilities/math/ellipse/index.js +2 -3
  726. package/dist/esm/utilities/math/ellipse/pointInEllipse.d.ts +10 -8
  727. package/dist/esm/utilities/math/ellipse/pointInEllipse.js +34 -15
  728. package/dist/esm/utilities/math/ellipse/pointInEllipsoidWithConstraint.d.ts +1 -1
  729. package/dist/esm/utilities/math/ellipse/pointInEllipsoidWithConstraint.js +0 -1
  730. package/dist/esm/utilities/math/index.d.ts +6 -5
  731. package/dist/esm/utilities/math/index.js +6 -6
  732. package/dist/esm/utilities/math/line/distanceToPoint.js +0 -1
  733. package/dist/esm/utilities/math/line/distanceToPointSquared.js +2 -22
  734. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.d.ts +5 -0
  735. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +29 -0
  736. package/dist/esm/utilities/math/line/index.d.ts +3 -1
  737. package/dist/esm/utilities/math/line/index.js +3 -2
  738. package/dist/esm/utilities/math/line/intersectLine.js +0 -1
  739. package/dist/esm/utilities/math/line/isPointOnLineSegment.d.ts +2 -0
  740. package/dist/esm/utilities/math/line/isPointOnLineSegment.js +18 -0
  741. package/dist/esm/utilities/math/midPoint.js +0 -1
  742. package/dist/esm/utilities/math/point/distanceToPoint.d.ts +3 -1
  743. package/dist/esm/utilities/math/point/distanceToPoint.js +2 -7
  744. package/dist/esm/utilities/math/point/distanceToPointSquared.d.ts +4 -0
  745. package/dist/esm/utilities/math/point/distanceToPointSquared.js +11 -0
  746. package/dist/esm/utilities/math/point/index.d.ts +3 -2
  747. package/dist/esm/utilities/math/point/index.js +3 -3
  748. package/dist/esm/utilities/math/point/mirror.d.ts +2 -0
  749. package/dist/esm/utilities/math/point/mirror.js +7 -0
  750. package/dist/esm/utilities/math/polyline/addCanvasPointsToArray.js +5 -1
  751. package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.d.ts +2 -0
  752. package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.js +55 -0
  753. package/dist/esm/utilities/math/polyline/combinePolyline.d.ts +4 -0
  754. package/dist/esm/utilities/math/polyline/combinePolyline.js +186 -0
  755. package/dist/esm/utilities/math/polyline/containsPoint.d.ts +5 -0
  756. package/dist/esm/utilities/math/polyline/containsPoint.js +39 -0
  757. package/dist/esm/utilities/math/polyline/containsPoints.d.ts +2 -0
  758. package/dist/esm/utilities/math/polyline/containsPoints.js +9 -0
  759. package/dist/esm/utilities/math/polyline/decimate.d.ts +2 -0
  760. package/dist/esm/utilities/math/polyline/decimate.js +46 -0
  761. package/dist/esm/utilities/math/polyline/getAABB.d.ts +4 -0
  762. package/dist/esm/utilities/math/polyline/getAABB.js +40 -0
  763. package/dist/esm/utilities/math/polyline/getArea.d.ts +2 -0
  764. package/dist/esm/utilities/math/polyline/getArea.js +10 -0
  765. package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts +5 -0
  766. package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.js +44 -0
  767. package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts +2 -0
  768. package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js +21 -0
  769. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts +2 -0
  770. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js +13 -0
  771. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts +2 -0
  772. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js +15 -0
  773. package/dist/esm/utilities/math/polyline/getLinesIntersection.d.ts +2 -0
  774. package/dist/esm/utilities/math/polyline/getLinesIntersection.js +51 -0
  775. package/dist/esm/utilities/math/polyline/getNormal2.d.ts +2 -0
  776. package/dist/esm/utilities/math/polyline/getNormal2.js +5 -0
  777. package/dist/esm/utilities/math/polyline/getNormal3.d.ts +2 -0
  778. package/dist/esm/utilities/math/polyline/getNormal3.js +25 -0
  779. package/dist/esm/utilities/math/polyline/getSignedArea.d.ts +2 -0
  780. package/dist/esm/utilities/math/polyline/getSignedArea.js +19 -0
  781. package/dist/esm/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js +0 -1
  782. package/dist/esm/utilities/math/polyline/getWindingDirection.d.ts +2 -0
  783. package/dist/esm/utilities/math/polyline/getWindingDirection.js +5 -0
  784. package/dist/esm/utilities/math/polyline/index.d.ts +19 -3
  785. package/dist/esm/utilities/math/polyline/index.js +19 -4
  786. package/dist/esm/utilities/math/polyline/intersectPolyline.d.ts +2 -0
  787. package/dist/esm/utilities/math/polyline/intersectPolyline.js +13 -0
  788. package/dist/esm/utilities/math/polyline/isClosed.d.ts +2 -0
  789. package/dist/esm/utilities/math/polyline/isClosed.js +12 -0
  790. package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.d.ts +4 -0
  791. package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.js +25 -0
  792. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +4 -3
  793. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -1
  794. package/dist/esm/utilities/math/polyline/pointCanProjectOnLine.js +0 -1
  795. package/dist/esm/utilities/math/polyline/pointsAreWithinCloseContourProximity.js +0 -1
  796. package/dist/esm/utilities/math/polyline/projectTo2D.d.ts +5 -0
  797. package/dist/esm/utilities/math/polyline/projectTo2D.js +25 -0
  798. package/dist/esm/utilities/math/rectangle/distanceToPoint.js +0 -1
  799. package/dist/esm/utilities/math/rectangle/index.js +0 -1
  800. package/dist/esm/utilities/math/sphere/index.js +0 -1
  801. package/dist/esm/utilities/math/sphere/pointInSphere.d.ts +3 -2
  802. package/dist/esm/utilities/math/sphere/pointInSphere.js +5 -5
  803. package/dist/esm/utilities/math/vec2/findClosestPoint.js +0 -1
  804. package/dist/esm/utilities/math/vec2/index.js +0 -1
  805. package/dist/esm/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  806. package/dist/esm/utilities/math/vec2/liangBarksyClip.js +0 -1
  807. package/dist/esm/utilities/math/vec3/interpolateVec3.d.ts +2 -0
  808. package/dist/esm/utilities/math/vec3/interpolateVec3.js +8 -0
  809. package/dist/esm/utilities/orientation/getOrientationStringLPS.js +0 -1
  810. package/dist/esm/utilities/orientation/index.js +0 -1
  811. package/dist/esm/utilities/orientation/invertOrientationStringLPS.js +0 -1
  812. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.d.ts +2 -2
  813. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js +15 -22
  814. package/dist/esm/utilities/planar/filterAnnotationsWithinSlice.js +0 -1
  815. package/dist/esm/utilities/planar/getPointInLineOfSightWithCriteria.js +0 -1
  816. package/dist/esm/utilities/planar/getWorldWidthAndHeightFromCorners.js +0 -1
  817. package/dist/esm/utilities/planar/getWorldWidthAndHeightFromTwoPoints.js +0 -1
  818. package/dist/esm/utilities/planar/index.d.ts +3 -1
  819. package/dist/esm/utilities/planar/index.js +3 -2
  820. package/dist/esm/utilities/planar/isPlaneIntersectingAABB.d.ts +1 -0
  821. package/dist/esm/utilities/planar/isPlaneIntersectingAABB.js +27 -0
  822. package/dist/esm/utilities/planarFreehandROITool/index.d.ts +3 -3
  823. package/dist/esm/utilities/planarFreehandROITool/index.js +3 -4
  824. package/dist/esm/utilities/planarFreehandROITool/interpolation/algorithms/bspline.js +0 -1
  825. package/dist/esm/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.js +0 -1
  826. package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.d.ts +3 -0
  827. package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js +39 -0
  828. package/dist/esm/utilities/planarFreehandROITool/smoothPoints.d.ts +3 -0
  829. package/dist/esm/utilities/planarFreehandROITool/smoothPoints.js +91 -0
  830. package/dist/esm/utilities/pointInShapeCallback.d.ts +8 -7
  831. package/dist/esm/utilities/pointInShapeCallback.js +34 -27
  832. package/dist/esm/utilities/pointInSurroundingSphereCallback.js +0 -1
  833. package/dist/esm/utilities/pointToString.d.ts +1 -0
  834. package/dist/esm/utilities/pointToString.js +8 -0
  835. package/dist/esm/utilities/polyData/utils.d.ts +5 -0
  836. package/dist/esm/utilities/polyData/utils.js +53 -0
  837. package/dist/esm/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.d.ts +1 -1
  838. package/dist/esm/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.js +2 -3
  839. package/dist/esm/utilities/rectangleROITool/index.d.ts +2 -1
  840. package/dist/esm/utilities/rectangleROITool/index.js +2 -2
  841. package/dist/esm/utilities/rectangleROITool/isAxisAlignedRectangle.d.ts +2 -0
  842. package/dist/esm/utilities/rectangleROITool/isAxisAlignedRectangle.js +22 -0
  843. package/dist/esm/utilities/scroll.d.ts +2 -2
  844. package/dist/esm/utilities/scroll.js +22 -16
  845. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts +11 -0
  846. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +177 -0
  847. package/dist/esm/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.d.ts +2 -0
  848. package/dist/esm/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.js +66 -0
  849. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +2 -3
  850. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.d.ts +1 -1
  851. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +13 -8
  852. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.d.ts +1 -0
  853. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js +23 -0
  854. package/dist/esm/utilities/segmentation/createBidirectionalToolData.d.ts +14 -0
  855. package/dist/esm/utilities/segmentation/createBidirectionalToolData.js +35 -0
  856. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.d.ts +8 -8
  857. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +2 -4
  858. package/dist/esm/utilities/segmentation/createMergedLabelmapForIndex.js +0 -1
  859. package/dist/esm/utilities/segmentation/findLargestBidirectional.d.ts +1 -0
  860. package/dist/esm/utilities/segmentation/findLargestBidirectional.js +95 -0
  861. package/dist/esm/utilities/segmentation/floodFill.js +16 -23
  862. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js +0 -1
  863. package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts +1 -0
  864. package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.js +13 -0
  865. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.d.ts +7 -0
  866. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +72 -0
  867. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.d.ts +11 -0
  868. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +73 -0
  869. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.d.ts +4 -0
  870. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +102 -0
  871. package/dist/esm/utilities/segmentation/index.d.ts +10 -1
  872. package/dist/esm/utilities/segmentation/index.js +10 -2
  873. package/dist/esm/utilities/segmentation/invalidateBrushCursor.d.ts +1 -0
  874. package/dist/esm/utilities/segmentation/invalidateBrushCursor.js +23 -0
  875. package/dist/esm/utilities/segmentation/isLineInSegment.d.ts +9 -0
  876. package/dist/esm/utilities/segmentation/isLineInSegment.js +49 -0
  877. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js +0 -1
  878. package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.d.ts +3 -2
  879. package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +1 -1
  880. package/dist/esm/utilities/segmentation/segmentContourAction.d.ts +17 -0
  881. package/dist/esm/utilities/segmentation/segmentContourAction.js +96 -0
  882. package/dist/esm/utilities/segmentation/thresholdSegmentationByRange.js +0 -1
  883. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.d.ts +2 -1
  884. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js +1 -2
  885. package/dist/esm/utilities/segmentation/triggerSegmentationRender.d.ts +2 -17
  886. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +4 -103
  887. package/dist/esm/utilities/segmentation/triggerSegmentationRenderForViewports.d.ts +3 -0
  888. package/dist/esm/utilities/segmentation/triggerSegmentationRenderForViewports.js +6 -0
  889. package/dist/esm/utilities/segmentation/utilities.d.ts +3 -3
  890. package/dist/esm/utilities/segmentation/utilities.js +5 -6
  891. package/dist/esm/utilities/stackPrefetch/index.d.ts +3 -2
  892. package/dist/esm/utilities/stackPrefetch/index.js +3 -3
  893. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
  894. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +216 -0
  895. package/dist/esm/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
  896. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +16 -85
  897. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
  898. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +77 -0
  899. package/dist/esm/utilities/stackPrefetch/state.js +0 -1
  900. package/dist/esm/utilities/throttle.js +0 -1
  901. package/dist/esm/utilities/touch/index.js +0 -1
  902. package/dist/esm/utilities/triggerAnnotationRender.js +4 -5
  903. package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.d.ts +2 -0
  904. package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.js +24 -0
  905. package/dist/esm/utilities/triggerAnnotationRenderForViewportIds.d.ts +1 -2
  906. package/dist/esm/utilities/triggerAnnotationRenderForViewportIds.js +13 -3
  907. package/dist/esm/utilities/viewport/index.js +0 -1
  908. package/dist/esm/utilities/viewport/isViewportPreScaled.js +5 -3
  909. package/dist/esm/utilities/viewport/jumpToSlice.js +0 -1
  910. package/dist/esm/utilities/viewport/jumpToWorld.js +0 -1
  911. package/dist/esm/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.d.ts +1 -1
  912. package/dist/esm/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js +0 -1
  913. package/dist/esm/utilities/viewportFilters/filterViewportsWithParallelNormals.js +0 -1
  914. package/dist/esm/utilities/viewportFilters/filterViewportsWithSameOrientation.js +0 -1
  915. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.d.ts +1 -1
  916. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +0 -1
  917. package/dist/esm/utilities/viewportFilters/getViewportIdsWithToolToRender.js +0 -1
  918. package/dist/esm/utilities/viewportFilters/index.js +0 -1
  919. package/dist/esm/utilities/voi/colorbar/Colorbar.d.ts +44 -0
  920. package/dist/esm/utilities/voi/colorbar/Colorbar.js +242 -0
  921. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.d.ts +29 -0
  922. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +179 -0
  923. package/dist/esm/utilities/voi/colorbar/ColorbarTicks.d.ts +46 -0
  924. package/dist/esm/utilities/voi/colorbar/ColorbarTicks.js +280 -0
  925. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.d.ts +24 -0
  926. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +133 -0
  927. package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.d.ts +3 -0
  928. package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.js +4 -0
  929. package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.d.ts +3 -0
  930. package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.js +4 -0
  931. package/dist/esm/utilities/voi/colorbar/common/index.d.ts +4 -0
  932. package/dist/esm/utilities/voi/colorbar/common/index.js +4 -0
  933. package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.d.ts +3 -0
  934. package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.js +4 -0
  935. package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.d.ts +3 -0
  936. package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.js +9 -0
  937. package/dist/esm/utilities/voi/colorbar/common/isRangeValid.d.ts +3 -0
  938. package/dist/esm/utilities/voi/colorbar/common/isRangeValid.js +4 -0
  939. package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.d.ts +6 -0
  940. package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js +7 -0
  941. package/dist/esm/utilities/voi/colorbar/enums/index.d.ts +1 -0
  942. package/dist/esm/utilities/voi/colorbar/enums/index.js +1 -0
  943. package/dist/esm/utilities/voi/colorbar/index.d.ts +6 -0
  944. package/dist/esm/utilities/voi/colorbar/index.js +4 -0
  945. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.d.ts +12 -0
  946. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +1 -0
  947. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.d.ts +11 -0
  948. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +1 -0
  949. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.d.ts +4 -0
  950. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +1 -0
  951. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.d.ts +7 -0
  952. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +1 -0
  953. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.d.ts +4 -0
  954. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +1 -0
  955. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.d.ts +7 -0
  956. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +1 -0
  957. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.d.ts +8 -0
  958. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +1 -0
  959. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.d.ts +2 -0
  960. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +1 -0
  961. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.d.ts +5 -0
  962. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +1 -0
  963. package/dist/esm/utilities/voi/colorbar/types/index.d.ts +8 -0
  964. package/dist/esm/utilities/voi/colorbar/types/index.js +1 -0
  965. package/dist/esm/utilities/voi/index.d.ts +3 -0
  966. package/dist/esm/utilities/voi/index.js +3 -0
  967. package/dist/esm/utilities/voi/windowlevel/calculateMinMaxMean.d.ts +6 -0
  968. package/dist/esm/utilities/voi/windowlevel/calculateMinMaxMean.js +25 -0
  969. package/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.d.ts +11 -0
  970. package/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js +48 -0
  971. package/dist/esm/utilities/voi/windowlevel/getLuminanceFromRegion.d.ts +2 -0
  972. package/dist/esm/utilities/voi/windowlevel/getLuminanceFromRegion.js +27 -0
  973. package/dist/esm/utilities/voi/windowlevel/index.d.ts +4 -0
  974. package/dist/esm/utilities/voi/windowlevel/index.js +4 -0
  975. package/dist/esm/widgets/Widget.d.ts +17 -0
  976. package/dist/esm/widgets/Widget.js +66 -0
  977. package/dist/esm/widgets/types/WidgetProps.d.ts +4 -0
  978. package/dist/esm/widgets/types/WidgetProps.js +1 -0
  979. package/dist/esm/widgets/types/WidgetSize.d.ts +4 -0
  980. package/dist/esm/widgets/types/WidgetSize.js +1 -0
  981. package/dist/esm/widgets/types/index.d.ts +2 -0
  982. package/dist/esm/widgets/types/index.js +1 -0
  983. package/dist/esm/workers/polySegConverters.d.ts +1 -0
  984. package/dist/esm/workers/polySegConverters.js +339 -0
  985. package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
  986. package/dist/umd/78.index.js +3 -0
  987. package/dist/umd/78.index.js.LICENSE.txt +5 -0
  988. package/dist/umd/78.index.js.map +1 -0
  989. package/dist/umd/985.index.js +2 -0
  990. package/dist/umd/985.index.js.map +1 -0
  991. package/dist/umd/index.js +1 -2
  992. package/dist/umd/index.js.map +1 -1
  993. package/package.json +21 -10
  994. package/dist/cjs/constants/COLOR_LUT.d.ts +0 -2
  995. package/dist/cjs/constants/COLOR_LUT.js +0 -261
  996. package/dist/cjs/constants/COLOR_LUT.js.map +0 -1
  997. package/dist/cjs/constants/index.d.ts +0 -2
  998. package/dist/cjs/constants/index.js +0 -9
  999. package/dist/cjs/constants/index.js.map +0 -1
  1000. package/dist/cjs/cursors/ImageMouseCursor.d.ts +0 -9
  1001. package/dist/cjs/cursors/ImageMouseCursor.js +0 -29
  1002. package/dist/cjs/cursors/ImageMouseCursor.js.map +0 -1
  1003. package/dist/cjs/cursors/MouseCursor.d.ts +0 -12
  1004. package/dist/cjs/cursors/MouseCursor.js +0 -93
  1005. package/dist/cjs/cursors/MouseCursor.js.map +0 -1
  1006. package/dist/cjs/cursors/SVGCursorDescriptor.d.ts +0 -9
  1007. package/dist/cjs/cursors/SVGCursorDescriptor.js +0 -403
  1008. package/dist/cjs/cursors/SVGCursorDescriptor.js.map +0 -1
  1009. package/dist/cjs/cursors/SVGMouseCursor.d.ts +0 -6
  1010. package/dist/cjs/cursors/SVGMouseCursor.js +0 -78
  1011. package/dist/cjs/cursors/SVGMouseCursor.js.map +0 -1
  1012. package/dist/cjs/cursors/elementCursor.d.ts +0 -6
  1013. package/dist/cjs/cursors/elementCursor.js +0 -43
  1014. package/dist/cjs/cursors/elementCursor.js.map +0 -1
  1015. package/dist/cjs/cursors/index.d.ts +0 -8
  1016. package/dist/cjs/cursors/index.js +0 -45
  1017. package/dist/cjs/cursors/index.js.map +0 -1
  1018. package/dist/cjs/cursors/setCursorForElement.d.ts +0 -2
  1019. package/dist/cjs/cursors/setCursorForElement.js +0 -21
  1020. package/dist/cjs/cursors/setCursorForElement.js.map +0 -1
  1021. package/dist/cjs/drawingSvg/_getHash.d.ts +0 -2
  1022. package/dist/cjs/drawingSvg/_getHash.js +0 -7
  1023. package/dist/cjs/drawingSvg/_getHash.js.map +0 -1
  1024. package/dist/cjs/drawingSvg/clearByToolType.d.ts +0 -2
  1025. package/dist/cjs/drawingSvg/clearByToolType.js +0 -19
  1026. package/dist/cjs/drawingSvg/clearByToolType.js.map +0 -1
  1027. package/dist/cjs/drawingSvg/draw.d.ts +0 -2
  1028. package/dist/cjs/drawingSvg/draw.js +0 -13
  1029. package/dist/cjs/drawingSvg/draw.js.map +0 -1
  1030. package/dist/cjs/drawingSvg/drawArrow.d.ts +0 -3
  1031. package/dist/cjs/drawingSvg/drawArrow.js +0 -51
  1032. package/dist/cjs/drawingSvg/drawArrow.js.map +0 -1
  1033. package/dist/cjs/drawingSvg/drawCircle.d.ts +0 -4
  1034. package/dist/cjs/drawingSvg/drawCircle.js +0 -48
  1035. package/dist/cjs/drawingSvg/drawCircle.js.map +0 -1
  1036. package/dist/cjs/drawingSvg/drawEllipse.d.ts +0 -4
  1037. package/dist/cjs/drawingSvg/drawEllipse.js +0 -51
  1038. package/dist/cjs/drawingSvg/drawEllipse.js.map +0 -1
  1039. package/dist/cjs/drawingSvg/drawHandles.d.ts +0 -4
  1040. package/dist/cjs/drawingSvg/drawHandles.js +0 -69
  1041. package/dist/cjs/drawingSvg/drawHandles.js.map +0 -1
  1042. package/dist/cjs/drawingSvg/drawLine.d.ts +0 -3
  1043. package/dist/cjs/drawingSvg/drawLine.js +0 -51
  1044. package/dist/cjs/drawingSvg/drawLine.js.map +0 -1
  1045. package/dist/cjs/drawingSvg/drawLink.d.ts +0 -4
  1046. package/dist/cjs/drawingSvg/drawLink.js +0 -32
  1047. package/dist/cjs/drawingSvg/drawLink.js.map +0 -1
  1048. package/dist/cjs/drawingSvg/drawLinkedTextBox.d.ts +0 -4
  1049. package/dist/cjs/drawingSvg/drawLinkedTextBox.js +0 -21
  1050. package/dist/cjs/drawingSvg/drawLinkedTextBox.js.map +0 -1
  1051. package/dist/cjs/drawingSvg/drawPolyline.d.ts +0 -9
  1052. package/dist/cjs/drawingSvg/drawPolyline.js +0 -50
  1053. package/dist/cjs/drawingSvg/drawPolyline.js.map +0 -1
  1054. package/dist/cjs/drawingSvg/drawRect.d.ts +0 -3
  1055. package/dist/cjs/drawingSvg/drawRect.js +0 -47
  1056. package/dist/cjs/drawingSvg/drawRect.js.map +0 -1
  1057. package/dist/cjs/drawingSvg/drawTextBox.d.ts +0 -4
  1058. package/dist/cjs/drawingSvg/drawTextBox.js +0 -126
  1059. package/dist/cjs/drawingSvg/drawTextBox.js.map +0 -1
  1060. package/dist/cjs/drawingSvg/getSvgDrawingHelper.d.ts +0 -3
  1061. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js +0 -68
  1062. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js.map +0 -1
  1063. package/dist/cjs/drawingSvg/index.d.ts +0 -13
  1064. package/dist/cjs/drawingSvg/index.js +0 -31
  1065. package/dist/cjs/drawingSvg/index.js.map +0 -1
  1066. package/dist/cjs/drawingSvg/setAttributesIfNecessary.d.ts +0 -2
  1067. package/dist/cjs/drawingSvg/setAttributesIfNecessary.js +0 -18
  1068. package/dist/cjs/drawingSvg/setAttributesIfNecessary.js.map +0 -1
  1069. package/dist/cjs/drawingSvg/setNewAttributesIfValid.d.ts +0 -2
  1070. package/dist/cjs/drawingSvg/setNewAttributesIfValid.js +0 -14
  1071. package/dist/cjs/drawingSvg/setNewAttributesIfValid.js.map +0 -1
  1072. package/dist/cjs/enums/AnnotationStyleStates.d.ts +0 -7
  1073. package/dist/cjs/enums/AnnotationStyleStates.js +0 -11
  1074. package/dist/cjs/enums/AnnotationStyleStates.js.map +0 -1
  1075. package/dist/cjs/enums/Events.d.ts +0 -35
  1076. package/dist/cjs/enums/Events.js +0 -39
  1077. package/dist/cjs/enums/Events.js.map +0 -1
  1078. package/dist/cjs/enums/SegmentationRepresentations.d.ts +0 -5
  1079. package/dist/cjs/enums/SegmentationRepresentations.js +0 -9
  1080. package/dist/cjs/enums/SegmentationRepresentations.js.map +0 -1
  1081. package/dist/cjs/enums/ToolBindings.d.ts +0 -24
  1082. package/dist/cjs/enums/ToolBindings.js +0 -31
  1083. package/dist/cjs/enums/ToolBindings.js.map +0 -1
  1084. package/dist/cjs/enums/ToolModes.d.ts +0 -7
  1085. package/dist/cjs/enums/ToolModes.js +0 -11
  1086. package/dist/cjs/enums/ToolModes.js.map +0 -1
  1087. package/dist/cjs/enums/Touch.d.ts +0 -7
  1088. package/dist/cjs/enums/Touch.js +0 -12
  1089. package/dist/cjs/enums/Touch.js.map +0 -1
  1090. package/dist/cjs/enums/index.d.ts +0 -8
  1091. package/dist/cjs/enums/index.js +0 -20
  1092. package/dist/cjs/enums/index.js.map +0 -1
  1093. package/dist/cjs/eventDispatchers/annotationModifiedEventDispatcher.js +0 -24
  1094. package/dist/cjs/eventDispatchers/annotationModifiedEventDispatcher.js.map +0 -1
  1095. package/dist/cjs/eventDispatchers/cameraModifiedEventDispatcher.js +0 -32
  1096. package/dist/cjs/eventDispatchers/cameraModifiedEventDispatcher.js.map +0 -1
  1097. package/dist/cjs/eventDispatchers/imageRenderedEventDispatcher.js +0 -21
  1098. package/dist/cjs/eventDispatchers/imageRenderedEventDispatcher.js.map +0 -1
  1099. package/dist/cjs/eventDispatchers/imageSpacingCalibratedEventDispatcher.d.ts +0 -5
  1100. package/dist/cjs/eventDispatchers/imageSpacingCalibratedEventDispatcher.js +0 -32
  1101. package/dist/cjs/eventDispatchers/imageSpacingCalibratedEventDispatcher.js.map +0 -1
  1102. package/dist/cjs/eventDispatchers/index.d.ts +0 -7
  1103. package/dist/cjs/eventDispatchers/index.js +0 -19
  1104. package/dist/cjs/eventDispatchers/index.js.map +0 -1
  1105. package/dist/cjs/eventDispatchers/keyboardEventHandlers/index.d.ts +0 -3
  1106. package/dist/cjs/eventDispatchers/keyboardEventHandlers/index.js +0 -11
  1107. package/dist/cjs/eventDispatchers/keyboardEventHandlers/index.js.map +0 -1
  1108. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.d.ts +0 -2
  1109. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +0 -21
  1110. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +0 -1
  1111. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyUp.d.ts +0 -2
  1112. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyUp.js +0 -23
  1113. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyUp.js.map +0 -1
  1114. package/dist/cjs/eventDispatchers/keyboardToolEventDispatcher.d.ts +0 -5
  1115. package/dist/cjs/eventDispatchers/keyboardToolEventDispatcher.js +0 -21
  1116. package/dist/cjs/eventDispatchers/keyboardToolEventDispatcher.js.map +0 -1
  1117. package/dist/cjs/eventDispatchers/mouseEventHandlers/index.d.ts +0 -9
  1118. package/dist/cjs/eventDispatchers/mouseEventHandlers/index.js +0 -23
  1119. package/dist/cjs/eventDispatchers/mouseEventHandlers/index.js.map +0 -1
  1120. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseClick.d.ts +0 -2
  1121. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseClick.js +0 -9
  1122. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseClick.js.map +0 -1
  1123. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDoubleClick.d.ts +0 -2
  1124. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDoubleClick.js +0 -9
  1125. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDoubleClick.js.map +0 -1
  1126. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.d.ts +0 -2
  1127. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +0 -85
  1128. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +0 -1
  1129. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownActivate.d.ts +0 -2
  1130. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownActivate.js +0 -26
  1131. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownActivate.js.map +0 -1
  1132. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDrag.d.ts +0 -2
  1133. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDrag.js +0 -20
  1134. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDrag.js.map +0 -1
  1135. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseMove.d.ts +0 -2
  1136. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseMove.js +0 -44
  1137. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseMove.js.map +0 -1
  1138. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseUp.d.ts +0 -2
  1139. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseUp.js +0 -9
  1140. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseUp.js.map +0 -1
  1141. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseWheel.d.ts +0 -2
  1142. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseWheel.js +0 -9
  1143. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseWheel.js.map +0 -1
  1144. package/dist/cjs/eventDispatchers/mouseToolEventDispatcher.d.ts +0 -5
  1145. package/dist/cjs/eventDispatchers/mouseToolEventDispatcher.js +0 -33
  1146. package/dist/cjs/eventDispatchers/mouseToolEventDispatcher.js.map +0 -1
  1147. package/dist/cjs/eventDispatchers/shared/customCallbackHandler.d.ts +0 -1
  1148. package/dist/cjs/eventDispatchers/shared/customCallbackHandler.js +0 -36
  1149. package/dist/cjs/eventDispatchers/shared/customCallbackHandler.js.map +0 -1
  1150. package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.d.ts +0 -2
  1151. package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +0 -30
  1152. package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +0 -1
  1153. package/dist/cjs/eventDispatchers/shared/getActiveToolForMouseEvent.d.ts +0 -2
  1154. package/dist/cjs/eventDispatchers/shared/getActiveToolForMouseEvent.js +0 -36
  1155. package/dist/cjs/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +0 -1
  1156. package/dist/cjs/eventDispatchers/shared/getActiveToolForTouchEvent.d.ts +0 -2
  1157. package/dist/cjs/eventDispatchers/shared/getActiveToolForTouchEvent.js +0 -36
  1158. package/dist/cjs/eventDispatchers/shared/getActiveToolForTouchEvent.js.map +0 -1
  1159. package/dist/cjs/eventDispatchers/shared/getMouseModifier.d.ts +0 -3
  1160. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +0 -35
  1161. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +0 -1
  1162. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForMouseEvent.d.ts +0 -5
  1163. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForMouseEvent.js +0 -27
  1164. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForMouseEvent.js.map +0 -1
  1165. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForTouchEvent.d.ts +0 -5
  1166. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForTouchEvent.js +0 -27
  1167. package/dist/cjs/eventDispatchers/shared/getToolsWithModesForTouchEvent.js.map +0 -1
  1168. package/dist/cjs/eventDispatchers/touchEventHandlers/index.d.ts +0 -7
  1169. package/dist/cjs/eventDispatchers/touchEventHandlers/index.js +0 -19
  1170. package/dist/cjs/eventDispatchers/touchEventHandlers/index.js.map +0 -1
  1171. package/dist/cjs/eventDispatchers/touchEventHandlers/touchDrag.d.ts +0 -2
  1172. package/dist/cjs/eventDispatchers/touchEventHandlers/touchDrag.js +0 -20
  1173. package/dist/cjs/eventDispatchers/touchEventHandlers/touchDrag.js.map +0 -1
  1174. package/dist/cjs/eventDispatchers/touchEventHandlers/touchEnd.d.ts +0 -2
  1175. package/dist/cjs/eventDispatchers/touchEventHandlers/touchEnd.js +0 -9
  1176. package/dist/cjs/eventDispatchers/touchEventHandlers/touchEnd.js.map +0 -1
  1177. package/dist/cjs/eventDispatchers/touchEventHandlers/touchPress.d.ts +0 -2
  1178. package/dist/cjs/eventDispatchers/touchEventHandlers/touchPress.js +0 -9
  1179. package/dist/cjs/eventDispatchers/touchEventHandlers/touchPress.js.map +0 -1
  1180. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStart.d.ts +0 -2
  1181. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStart.js +0 -86
  1182. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStart.js.map +0 -1
  1183. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStartActivate.d.ts +0 -2
  1184. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStartActivate.js +0 -26
  1185. package/dist/cjs/eventDispatchers/touchEventHandlers/touchStartActivate.js.map +0 -1
  1186. package/dist/cjs/eventDispatchers/touchEventHandlers/touchTap.d.ts +0 -2
  1187. package/dist/cjs/eventDispatchers/touchEventHandlers/touchTap.js +0 -9
  1188. package/dist/cjs/eventDispatchers/touchEventHandlers/touchTap.js.map +0 -1
  1189. package/dist/cjs/eventDispatchers/touchToolEventDispatcher.d.ts +0 -5
  1190. package/dist/cjs/eventDispatchers/touchToolEventDispatcher.js +0 -28
  1191. package/dist/cjs/eventDispatchers/touchToolEventDispatcher.js.map +0 -1
  1192. package/dist/cjs/eventListeners/annotations/annotationModifiedListener.d.ts +0 -2
  1193. package/dist/cjs/eventListeners/annotations/annotationModifiedListener.js +0 -14
  1194. package/dist/cjs/eventListeners/annotations/annotationModifiedListener.js.map +0 -1
  1195. package/dist/cjs/eventListeners/annotations/annotationSelectionListener.d.ts +0 -2
  1196. package/dist/cjs/eventListeners/annotations/annotationSelectionListener.js +0 -18
  1197. package/dist/cjs/eventListeners/annotations/annotationSelectionListener.js.map +0 -1
  1198. package/dist/cjs/eventListeners/annotations/index.d.ts +0 -3
  1199. package/dist/cjs/eventListeners/annotations/index.js +0 -11
  1200. package/dist/cjs/eventListeners/annotations/index.js.map +0 -1
  1201. package/dist/cjs/eventListeners/index.d.ts +0 -7
  1202. package/dist/cjs/eventListeners/index.js +0 -23
  1203. package/dist/cjs/eventListeners/index.js.map +0 -1
  1204. package/dist/cjs/eventListeners/keyboard/index.d.ts +0 -9
  1205. package/dist/cjs/eventListeners/keyboard/index.js +0 -39
  1206. package/dist/cjs/eventListeners/keyboard/index.js.map +0 -1
  1207. package/dist/cjs/eventListeners/keyboard/keyDownListener.d.ts +0 -4
  1208. package/dist/cjs/eventListeners/keyboard/keyDownListener.js +0 -74
  1209. package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +0 -1
  1210. package/dist/cjs/eventListeners/mouse/getMouseEventPoints.d.ts +0 -2
  1211. package/dist/cjs/eventListeners/mouse/getMouseEventPoints.js +0 -32
  1212. package/dist/cjs/eventListeners/mouse/getMouseEventPoints.js.map +0 -1
  1213. package/dist/cjs/eventListeners/mouse/index.d.ts +0 -7
  1214. package/dist/cjs/eventListeners/mouse/index.js +0 -53
  1215. package/dist/cjs/eventListeners/mouse/index.js.map +0 -1
  1216. package/dist/cjs/eventListeners/mouse/mouseDoubleClickListener.d.ts +0 -2
  1217. package/dist/cjs/eventListeners/mouse/mouseDoubleClickListener.js +0 -38
  1218. package/dist/cjs/eventListeners/mouse/mouseDoubleClickListener.js.map +0 -1
  1219. package/dist/cjs/eventListeners/mouse/mouseDownListener.d.ts +0 -4
  1220. package/dist/cjs/eventListeners/mouse/mouseDownListener.js +0 -256
  1221. package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +0 -1
  1222. package/dist/cjs/eventListeners/mouse/mouseMoveListener.d.ts +0 -2
  1223. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js +0 -27
  1224. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js.map +0 -1
  1225. package/dist/cjs/eventListeners/segmentation/index.d.ts +0 -5
  1226. package/dist/cjs/eventListeners/segmentation/index.js +0 -15
  1227. package/dist/cjs/eventListeners/segmentation/index.js.map +0 -1
  1228. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.d.ts +0 -3
  1229. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +0 -67
  1230. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +0 -1
  1231. package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.d.ts +0 -3
  1232. package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js +0 -18
  1233. package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js.map +0 -1
  1234. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.d.ts +0 -3
  1235. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +0 -12
  1236. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +0 -1
  1237. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.d.ts +0 -3
  1238. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +0 -12
  1239. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +0 -1
  1240. package/dist/cjs/eventListeners/touch/getTouchEventPoints.d.ts +0 -2
  1241. package/dist/cjs/eventListeners/touch/getTouchEventPoints.js +0 -42
  1242. package/dist/cjs/eventListeners/touch/getTouchEventPoints.js.map +0 -1
  1243. package/dist/cjs/eventListeners/touch/index.d.ts +0 -7
  1244. package/dist/cjs/eventListeners/touch/index.js +0 -23
  1245. package/dist/cjs/eventListeners/touch/index.js.map +0 -1
  1246. package/dist/cjs/eventListeners/touch/preventGhostClick.d.ts +0 -7
  1247. package/dist/cjs/eventListeners/touch/preventGhostClick.js +0 -50
  1248. package/dist/cjs/eventListeners/touch/preventGhostClick.js.map +0 -1
  1249. package/dist/cjs/eventListeners/touch/touchStartListener.d.ts +0 -2
  1250. package/dist/cjs/eventListeners/touch/touchStartListener.js +0 -287
  1251. package/dist/cjs/eventListeners/touch/touchStartListener.js.map +0 -1
  1252. package/dist/cjs/eventListeners/wheel/index.d.ts +0 -7
  1253. package/dist/cjs/eventListeners/wheel/index.js +0 -18
  1254. package/dist/cjs/eventListeners/wheel/index.js.map +0 -1
  1255. package/dist/cjs/eventListeners/wheel/normalizeWheel.d.ts +0 -6
  1256. package/dist/cjs/eventListeners/wheel/normalizeWheel.js +0 -52
  1257. package/dist/cjs/eventListeners/wheel/normalizeWheel.js.map +0 -1
  1258. package/dist/cjs/eventListeners/wheel/wheelListener.d.ts +0 -2
  1259. package/dist/cjs/eventListeners/wheel/wheelListener.js +0 -40
  1260. package/dist/cjs/eventListeners/wheel/wheelListener.js.map +0 -1
  1261. package/dist/cjs/index.d.ts +0 -13
  1262. package/dist/cjs/index.js +0 -95
  1263. package/dist/cjs/index.js.map +0 -1
  1264. package/dist/cjs/init.d.ts +0 -3
  1265. package/dist/cjs/init.js +0 -90
  1266. package/dist/cjs/init.js.map +0 -1
  1267. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +0 -24
  1268. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +0 -191
  1269. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +0 -1
  1270. package/dist/cjs/stateManagement/annotation/annotationLocking.d.ts +0 -8
  1271. package/dist/cjs/stateManagement/annotation/annotationLocking.js +0 -96
  1272. package/dist/cjs/stateManagement/annotation/annotationLocking.js.map +0 -1
  1273. package/dist/cjs/stateManagement/annotation/annotationSelection.d.ts +0 -7
  1274. package/dist/cjs/stateManagement/annotation/annotationSelection.js +0 -80
  1275. package/dist/cjs/stateManagement/annotation/annotationSelection.js.map +0 -1
  1276. package/dist/cjs/stateManagement/annotation/annotationState.d.ts +0 -12
  1277. package/dist/cjs/stateManagement/annotation/annotationState.js +0 -75
  1278. package/dist/cjs/stateManagement/annotation/annotationState.js.map +0 -1
  1279. package/dist/cjs/stateManagement/annotation/annotationVisibility.d.ts +0 -6
  1280. package/dist/cjs/stateManagement/annotation/annotationVisibility.js +0 -94
  1281. package/dist/cjs/stateManagement/annotation/annotationVisibility.js.map +0 -1
  1282. package/dist/cjs/stateManagement/annotation/config/ToolStyle.d.ts +0 -18
  1283. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +0 -123
  1284. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +0 -1
  1285. package/dist/cjs/stateManagement/annotation/config/getFont.d.ts +0 -4
  1286. package/dist/cjs/stateManagement/annotation/config/getFont.js +0 -10
  1287. package/dist/cjs/stateManagement/annotation/config/getFont.js.map +0 -1
  1288. package/dist/cjs/stateManagement/annotation/config/getState.d.ts +0 -4
  1289. package/dist/cjs/stateManagement/annotation/config/getState.js +0 -21
  1290. package/dist/cjs/stateManagement/annotation/config/getState.js.map +0 -1
  1291. package/dist/cjs/stateManagement/annotation/config/helpers.d.ts +0 -4
  1292. package/dist/cjs/stateManagement/annotation/config/helpers.js +0 -28
  1293. package/dist/cjs/stateManagement/annotation/config/helpers.js.map +0 -1
  1294. package/dist/cjs/stateManagement/annotation/config/index.d.ts +0 -4
  1295. package/dist/cjs/stateManagement/annotation/config/index.js +0 -13
  1296. package/dist/cjs/stateManagement/annotation/config/index.js.map +0 -1
  1297. package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +0 -4
  1298. package/dist/cjs/stateManagement/annotation/helpers/state.js +0 -49
  1299. package/dist/cjs/stateManagement/annotation/helpers/state.js.map +0 -1
  1300. package/dist/cjs/stateManagement/annotation/index.d.ts +0 -7
  1301. package/dist/cjs/stateManagement/annotation/index.js +0 -42
  1302. package/dist/cjs/stateManagement/annotation/index.js.map +0 -1
  1303. package/dist/cjs/stateManagement/index.d.ts +0 -15
  1304. package/dist/cjs/stateManagement/index.js +0 -46
  1305. package/dist/cjs/stateManagement/index.js.map +0 -1
  1306. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.d.ts +0 -33
  1307. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +0 -217
  1308. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +0 -1
  1309. package/dist/cjs/stateManagement/segmentation/activeSegmentation.d.ts +0 -4
  1310. package/dist/cjs/stateManagement/segmentation/activeSegmentation.js +0 -22
  1311. package/dist/cjs/stateManagement/segmentation/activeSegmentation.js.map +0 -1
  1312. package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -3
  1313. package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentations.js +0 -50
  1314. package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentations.js.map +0 -1
  1315. package/dist/cjs/stateManagement/segmentation/addSegmentations.d.ts +0 -3
  1316. package/dist/cjs/stateManagement/segmentation/addSegmentations.js +0 -17
  1317. package/dist/cjs/stateManagement/segmentation/addSegmentations.js.map +0 -1
  1318. package/dist/cjs/stateManagement/segmentation/config/index.d.ts +0 -4
  1319. package/dist/cjs/stateManagement/segmentation/config/index.js +0 -42
  1320. package/dist/cjs/stateManagement/segmentation/config/index.js.map +0 -1
  1321. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.d.ts +0 -7
  1322. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js +0 -71
  1323. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js.map +0 -1
  1324. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.d.ts +0 -13
  1325. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js +0 -70
  1326. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js.map +0 -1
  1327. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.d.ts +0 -5
  1328. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +0 -119
  1329. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +0 -1
  1330. package/dist/cjs/stateManagement/segmentation/helpers/index.d.ts +0 -2
  1331. package/dist/cjs/stateManagement/segmentation/helpers/index.js +0 -9
  1332. package/dist/cjs/stateManagement/segmentation/helpers/index.js.map +0 -1
  1333. package/dist/cjs/stateManagement/segmentation/helpers/normalizeSegmentationInput.d.ts +0 -3
  1334. package/dist/cjs/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +0 -19
  1335. package/dist/cjs/stateManagement/segmentation/helpers/normalizeSegmentationInput.js.map +0 -1
  1336. package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.d.ts +0 -3
  1337. package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js +0 -49
  1338. package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +0 -1
  1339. package/dist/cjs/stateManagement/segmentation/index.d.ts +0 -10
  1340. package/dist/cjs/stateManagement/segmentation/index.js +0 -48
  1341. package/dist/cjs/stateManagement/segmentation/index.js.map +0 -1
  1342. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +0 -2
  1343. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +0 -45
  1344. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +0 -1
  1345. package/dist/cjs/stateManagement/segmentation/segmentIndex.d.ts +0 -3
  1346. package/dist/cjs/stateManagement/segmentation/segmentIndex.js +0 -21
  1347. package/dist/cjs/stateManagement/segmentation/segmentIndex.js.map +0 -1
  1348. package/dist/cjs/stateManagement/segmentation/segmentLocking.d.ts +0 -4
  1349. package/dist/cjs/stateManagement/segmentation/segmentLocking.js +0 -39
  1350. package/dist/cjs/stateManagement/segmentation/segmentLocking.js.map +0 -1
  1351. package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +0 -24
  1352. package/dist/cjs/stateManagement/segmentation/segmentationState.js +0 -155
  1353. package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +0 -1
  1354. package/dist/cjs/stateManagement/segmentation/triggerSegmentationEvents.d.ts +0 -6
  1355. package/dist/cjs/stateManagement/segmentation/triggerSegmentationEvents.js +0 -66
  1356. package/dist/cjs/stateManagement/segmentation/triggerSegmentationEvents.js.map +0 -1
  1357. package/dist/cjs/store/SynchronizerManager/Synchronizer.d.ts +0 -33
  1358. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +0 -188
  1359. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +0 -1
  1360. package/dist/cjs/store/SynchronizerManager/createSynchronizer.d.ts +0 -4
  1361. package/dist/cjs/store/SynchronizerManager/createSynchronizer.js +0 -18
  1362. package/dist/cjs/store/SynchronizerManager/createSynchronizer.js.map +0 -1
  1363. package/dist/cjs/store/SynchronizerManager/destroy.d.ts +0 -2
  1364. package/dist/cjs/store/SynchronizerManager/destroy.js +0 -11
  1365. package/dist/cjs/store/SynchronizerManager/destroy.js.map +0 -1
  1366. package/dist/cjs/store/SynchronizerManager/destroySynchronizer.d.ts +0 -2
  1367. package/dist/cjs/store/SynchronizerManager/destroySynchronizer.js +0 -13
  1368. package/dist/cjs/store/SynchronizerManager/destroySynchronizer.js.map +0 -1
  1369. package/dist/cjs/store/SynchronizerManager/getAllSynchronizers.d.ts +0 -3
  1370. package/dist/cjs/store/SynchronizerManager/getAllSynchronizers.js +0 -8
  1371. package/dist/cjs/store/SynchronizerManager/getAllSynchronizers.js.map +0 -1
  1372. package/dist/cjs/store/SynchronizerManager/getSynchronizer.d.ts +0 -3
  1373. package/dist/cjs/store/SynchronizerManager/getSynchronizer.js +0 -8
  1374. package/dist/cjs/store/SynchronizerManager/getSynchronizer.js.map +0 -1
  1375. package/dist/cjs/store/SynchronizerManager/getSynchronizersForViewport.d.ts +0 -3
  1376. package/dist/cjs/store/SynchronizerManager/getSynchronizersForViewport.js +0 -21
  1377. package/dist/cjs/store/SynchronizerManager/getSynchronizersForViewport.js.map +0 -1
  1378. package/dist/cjs/store/SynchronizerManager/index.d.ts +0 -7
  1379. package/dist/cjs/store/SynchronizerManager/index.js +0 -19
  1380. package/dist/cjs/store/SynchronizerManager/index.js.map +0 -1
  1381. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +0 -34
  1382. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +0 -356
  1383. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +0 -1
  1384. package/dist/cjs/store/ToolGroupManager/createToolGroup.d.ts +0 -3
  1385. package/dist/cjs/store/ToolGroupManager/createToolGroup.js +0 -19
  1386. package/dist/cjs/store/ToolGroupManager/createToolGroup.js.map +0 -1
  1387. package/dist/cjs/store/ToolGroupManager/destroy.d.ts +0 -2
  1388. package/dist/cjs/store/ToolGroupManager/destroy.js +0 -16
  1389. package/dist/cjs/store/ToolGroupManager/destroy.js.map +0 -1
  1390. package/dist/cjs/store/ToolGroupManager/destroyToolGroup.d.ts +0 -2
  1391. package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js +0 -15
  1392. package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js.map +0 -1
  1393. package/dist/cjs/store/ToolGroupManager/getAllToolGroups.d.ts +0 -3
  1394. package/dist/cjs/store/ToolGroupManager/getAllToolGroups.js +0 -8
  1395. package/dist/cjs/store/ToolGroupManager/getAllToolGroups.js.map +0 -1
  1396. package/dist/cjs/store/ToolGroupManager/getToolGroup.d.ts +0 -3
  1397. package/dist/cjs/store/ToolGroupManager/getToolGroup.js +0 -8
  1398. package/dist/cjs/store/ToolGroupManager/getToolGroup.js.map +0 -1
  1399. package/dist/cjs/store/ToolGroupManager/getToolGroupForViewport.d.ts +0 -3
  1400. package/dist/cjs/store/ToolGroupManager/getToolGroupForViewport.js +0 -17
  1401. package/dist/cjs/store/ToolGroupManager/getToolGroupForViewport.js.map +0 -1
  1402. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.d.ts +0 -3
  1403. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js +0 -24
  1404. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js.map +0 -1
  1405. package/dist/cjs/store/ToolGroupManager/index.d.ts +0 -8
  1406. package/dist/cjs/store/ToolGroupManager/index.js +0 -21
  1407. package/dist/cjs/store/ToolGroupManager/index.js.map +0 -1
  1408. package/dist/cjs/store/addEnabledElement.d.ts +0 -2
  1409. package/dist/cjs/store/addEnabledElement.js +0 -70
  1410. package/dist/cjs/store/addEnabledElement.js.map +0 -1
  1411. package/dist/cjs/store/addTool.d.ts +0 -3
  1412. package/dist/cjs/store/addTool.js +0 -33
  1413. package/dist/cjs/store/addTool.js.map +0 -1
  1414. package/dist/cjs/store/cancelActiveManipulations.d.ts +0 -1
  1415. package/dist/cjs/store/cancelActiveManipulations.js +0 -23
  1416. package/dist/cjs/store/cancelActiveManipulations.js.map +0 -1
  1417. package/dist/cjs/store/filterMoveableAnnotationTools.d.ts +0 -3
  1418. package/dist/cjs/store/filterMoveableAnnotationTools.js +0 -24
  1419. package/dist/cjs/store/filterMoveableAnnotationTools.js.map +0 -1
  1420. package/dist/cjs/store/filterToolsWithAnnotationsForElement.d.ts +0 -3
  1421. package/dist/cjs/store/filterToolsWithAnnotationsForElement.js +0 -26
  1422. package/dist/cjs/store/filterToolsWithAnnotationsForElement.js.map +0 -1
  1423. package/dist/cjs/store/filterToolsWithMoveableHandles.d.ts +0 -3
  1424. package/dist/cjs/store/filterToolsWithMoveableHandles.js +0 -25
  1425. package/dist/cjs/store/filterToolsWithMoveableHandles.js.map +0 -1
  1426. package/dist/cjs/store/index.d.ts +0 -10
  1427. package/dist/cjs/store/index.js +0 -49
  1428. package/dist/cjs/store/index.js.map +0 -1
  1429. package/dist/cjs/store/removeEnabledElement.d.ts +0 -3
  1430. package/dist/cjs/store/removeEnabledElement.js +0 -82
  1431. package/dist/cjs/store/removeEnabledElement.js.map +0 -1
  1432. package/dist/cjs/store/state.d.ts +0 -17
  1433. package/dist/cjs/store/state.js +0 -59
  1434. package/dist/cjs/store/state.js.map +0 -1
  1435. package/dist/cjs/store/svgNodeCache.d.ts +0 -3
  1436. package/dist/cjs/store/svgNodeCache.js +0 -10
  1437. package/dist/cjs/store/svgNodeCache.js.map +0 -1
  1438. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .d.ts +0 -2
  1439. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .js +0 -11
  1440. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .js.map +0 -1
  1441. package/dist/cjs/synchronizers/callbacks/cameraSyncCallback.d.ts +0 -3
  1442. package/dist/cjs/synchronizers/callbacks/cameraSyncCallback.js +0 -15
  1443. package/dist/cjs/synchronizers/callbacks/cameraSyncCallback.js.map +0 -1
  1444. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.d.ts +0 -3
  1445. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +0 -82
  1446. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +0 -1
  1447. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.d.ts +0 -2
  1448. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js +0 -30
  1449. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js.map +0 -1
  1450. package/dist/cjs/synchronizers/callbacks/zoomPanSyncCallback.d.ts +0 -3
  1451. package/dist/cjs/synchronizers/callbacks/zoomPanSyncCallback.js +0 -23
  1452. package/dist/cjs/synchronizers/callbacks/zoomPanSyncCallback.js.map +0 -1
  1453. package/dist/cjs/synchronizers/index.d.ts +0 -5
  1454. package/dist/cjs/synchronizers/index.js +0 -15
  1455. package/dist/cjs/synchronizers/index.js.map +0 -1
  1456. package/dist/cjs/synchronizers/synchronizers/createCameraPositionSynchronizer.d.ts +0 -2
  1457. package/dist/cjs/synchronizers/synchronizers/createCameraPositionSynchronizer.js +0 -15
  1458. package/dist/cjs/synchronizers/synchronizers/createCameraPositionSynchronizer.js.map +0 -1
  1459. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +0 -2
  1460. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -15
  1461. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  1462. package/dist/cjs/synchronizers/synchronizers/createVOISynchronizer.d.ts +0 -6
  1463. package/dist/cjs/synchronizers/synchronizers/createVOISynchronizer.js +0 -14
  1464. package/dist/cjs/synchronizers/synchronizers/createVOISynchronizer.js.map +0 -1
  1465. package/dist/cjs/synchronizers/synchronizers/createZoomPanSynchronizer.d.ts +0 -2
  1466. package/dist/cjs/synchronizers/synchronizers/createZoomPanSynchronizer.js +0 -15
  1467. package/dist/cjs/synchronizers/synchronizers/createZoomPanSynchronizer.js.map +0 -1
  1468. package/dist/cjs/synchronizers/synchronizers/index.d.ts +0 -5
  1469. package/dist/cjs/synchronizers/synchronizers/index.js +0 -15
  1470. package/dist/cjs/synchronizers/synchronizers/index.js.map +0 -1
  1471. package/dist/cjs/tools/CrosshairsTool.d.ts +0 -71
  1472. package/dist/cjs/tools/CrosshairsTool.js +0 -1437
  1473. package/dist/cjs/tools/CrosshairsTool.js.map +0 -1
  1474. package/dist/cjs/tools/MIPJumpToClickTool.d.ts +0 -9
  1475. package/dist/cjs/tools/MIPJumpToClickTool.js +0 -63
  1476. package/dist/cjs/tools/MIPJumpToClickTool.js.map +0 -1
  1477. package/dist/cjs/tools/MagnifyTool.d.ts +0 -25
  1478. package/dist/cjs/tools/MagnifyTool.js +0 -180
  1479. package/dist/cjs/tools/MagnifyTool.js.map +0 -1
  1480. package/dist/cjs/tools/PanTool.d.ts +0 -10
  1481. package/dist/cjs/tools/PanTool.js +0 -42
  1482. package/dist/cjs/tools/PanTool.js.map +0 -1
  1483. package/dist/cjs/tools/PlanarRotateTool.d.ts +0 -10
  1484. package/dist/cjs/tools/PlanarRotateTool.js +0 -56
  1485. package/dist/cjs/tools/PlanarRotateTool.js.map +0 -1
  1486. package/dist/cjs/tools/ReferenceCursors.d.ts +0 -27
  1487. package/dist/cjs/tools/ReferenceCursors.js +0 -317
  1488. package/dist/cjs/tools/ReferenceCursors.js.map +0 -1
  1489. package/dist/cjs/tools/ReferenceLinesTool.d.ts +0 -25
  1490. package/dist/cjs/tools/ReferenceLinesTool.js +0 -153
  1491. package/dist/cjs/tools/ReferenceLinesTool.js.map +0 -1
  1492. package/dist/cjs/tools/ScaleOverlayTool.d.ts +0 -40
  1493. package/dist/cjs/tools/ScaleOverlayTool.js +0 -400
  1494. package/dist/cjs/tools/ScaleOverlayTool.js.map +0 -1
  1495. package/dist/cjs/tools/StackScrollTool.d.ts +0 -13
  1496. package/dist/cjs/tools/StackScrollTool.js +0 -70
  1497. package/dist/cjs/tools/StackScrollTool.js.map +0 -1
  1498. package/dist/cjs/tools/StackScrollToolMouseWheelTool.d.ts +0 -16
  1499. package/dist/cjs/tools/StackScrollToolMouseWheelTool.js +0 -38
  1500. package/dist/cjs/tools/StackScrollToolMouseWheelTool.js.map +0 -1
  1501. package/dist/cjs/tools/TrackballRotateTool.d.ts +0 -11
  1502. package/dist/cjs/tools/TrackballRotateTool.js +0 -105
  1503. package/dist/cjs/tools/TrackballRotateTool.js.map +0 -1
  1504. package/dist/cjs/tools/VolumeRotateMouseWheelTool.d.ts +0 -10
  1505. package/dist/cjs/tools/VolumeRotateMouseWheelTool.js +0 -55
  1506. package/dist/cjs/tools/VolumeRotateMouseWheelTool.js.map +0 -1
  1507. package/dist/cjs/tools/WindowLevelTool.d.ts +0 -37
  1508. package/dist/cjs/tools/WindowLevelTool.js +0 -198
  1509. package/dist/cjs/tools/WindowLevelTool.js.map +0 -1
  1510. package/dist/cjs/tools/ZoomTool.d.ts +0 -19
  1511. package/dist/cjs/tools/ZoomTool.js +0 -189
  1512. package/dist/cjs/tools/ZoomTool.js.map +0 -1
  1513. package/dist/cjs/tools/annotation/AngleTool.d.ts +0 -36
  1514. package/dist/cjs/tools/annotation/AngleTool.js +0 -483
  1515. package/dist/cjs/tools/annotation/AngleTool.js.map +0 -1
  1516. package/dist/cjs/tools/annotation/ArrowAnnotateTool.d.ts +0 -38
  1517. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +0 -470
  1518. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +0 -1
  1519. package/dist/cjs/tools/annotation/BidirectionalTool.d.ts +0 -42
  1520. package/dist/cjs/tools/annotation/BidirectionalTool.js +0 -765
  1521. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +0 -1
  1522. package/dist/cjs/tools/annotation/CircleROITool.d.ts +0 -39
  1523. package/dist/cjs/tools/annotation/CircleROITool.js +0 -606
  1524. package/dist/cjs/tools/annotation/CircleROITool.js.map +0 -1
  1525. package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +0 -37
  1526. package/dist/cjs/tools/annotation/CobbAngleTool.js +0 -517
  1527. package/dist/cjs/tools/annotation/CobbAngleTool.js.map +0 -1
  1528. package/dist/cjs/tools/annotation/DragProbeTool.d.ts +0 -25
  1529. package/dist/cjs/tools/annotation/DragProbeTool.js +0 -137
  1530. package/dist/cjs/tools/annotation/DragProbeTool.js.map +0 -1
  1531. package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +0 -45
  1532. package/dist/cjs/tools/annotation/EllipticalROITool.js +0 -705
  1533. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +0 -1
  1534. package/dist/cjs/tools/annotation/LengthTool.d.ts +0 -37
  1535. package/dist/cjs/tools/annotation/LengthTool.js +0 -470
  1536. package/dist/cjs/tools/annotation/LengthTool.js.map +0 -1
  1537. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +0 -40
  1538. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +0 -478
  1539. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +0 -1
  1540. package/dist/cjs/tools/annotation/ProbeTool.d.ts +0 -35
  1541. package/dist/cjs/tools/annotation/ProbeTool.js +0 -336
  1542. package/dist/cjs/tools/annotation/ProbeTool.js.map +0 -1
  1543. package/dist/cjs/tools/annotation/RectangleROITool.d.ts +0 -40
  1544. package/dist/cjs/tools/annotation/RectangleROITool.js +0 -587
  1545. package/dist/cjs/tools/annotation/RectangleROITool.js.map +0 -1
  1546. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts +0 -2
  1547. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +0 -241
  1548. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +0 -1
  1549. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.d.ts +0 -2
  1550. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +0 -263
  1551. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +0 -1
  1552. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.d.ts +0 -2
  1553. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js +0 -149
  1554. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +0 -1
  1555. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.d.ts +0 -4
  1556. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +0 -45
  1557. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +0 -1
  1558. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts +0 -2
  1559. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +0 -318
  1560. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +0 -1
  1561. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.d.ts +0 -2
  1562. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +0 -51
  1563. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +0 -1
  1564. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.d.ts +0 -2
  1565. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js +0 -173
  1566. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js.map +0 -1
  1567. package/dist/cjs/tools/base/AnnotationDisplayTool.d.ts +0 -13
  1568. package/dist/cjs/tools/base/AnnotationDisplayTool.js +0 -65
  1569. package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +0 -1
  1570. package/dist/cjs/tools/base/AnnotationTool.d.ts +0 -19
  1571. package/dist/cjs/tools/base/AnnotationTool.js +0 -127
  1572. package/dist/cjs/tools/base/AnnotationTool.js.map +0 -1
  1573. package/dist/cjs/tools/base/BaseTool.d.ts +0 -31
  1574. package/dist/cjs/tools/base/BaseTool.js +0 -86
  1575. package/dist/cjs/tools/base/BaseTool.js.map +0 -1
  1576. package/dist/cjs/tools/base/index.d.ts +0 -4
  1577. package/dist/cjs/tools/base/index.js +0 -13
  1578. package/dist/cjs/tools/base/index.js.map +0 -1
  1579. package/dist/cjs/tools/displayTools/Contour/addContourSetsToElement.d.ts +0 -3
  1580. package/dist/cjs/tools/displayTools/Contour/addContourSetsToElement.js +0 -73
  1581. package/dist/cjs/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
  1582. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -3
  1583. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js +0 -14
  1584. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
  1585. package/dist/cjs/tools/displayTools/Contour/contourConfig.d.ts +0 -3
  1586. package/dist/cjs/tools/displayTools/Contour/contourConfig.js +0 -17
  1587. package/dist/cjs/tools/displayTools/Contour/contourConfig.js.map +0 -1
  1588. package/dist/cjs/tools/displayTools/Contour/contourConfigCache.d.ts +0 -9
  1589. package/dist/cjs/tools/displayTools/Contour/contourConfigCache.js +0 -17
  1590. package/dist/cjs/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
  1591. package/dist/cjs/tools/displayTools/Contour/contourDisplay.d.ts +0 -11
  1592. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +0 -118
  1593. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +0 -1
  1594. package/dist/cjs/tools/displayTools/Contour/index.d.ts +0 -2
  1595. package/dist/cjs/tools/displayTools/Contour/index.js +0 -9
  1596. package/dist/cjs/tools/displayTools/Contour/index.js.map +0 -1
  1597. package/dist/cjs/tools/displayTools/Contour/removeContourFromElement.js +0 -14
  1598. package/dist/cjs/tools/displayTools/Contour/removeContourFromElement.js.map +0 -1
  1599. package/dist/cjs/tools/displayTools/Contour/updateContourSets.d.ts +0 -3
  1600. package/dist/cjs/tools/displayTools/Contour/updateContourSets.js +0 -98
  1601. package/dist/cjs/tools/displayTools/Contour/updateContourSets.js.map +0 -1
  1602. package/dist/cjs/tools/displayTools/Contour/utils.d.ts +0 -6
  1603. package/dist/cjs/tools/displayTools/Contour/utils.js +0 -63
  1604. package/dist/cjs/tools/displayTools/Contour/utils.js.map +0 -1
  1605. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +0 -2
  1606. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +0 -33
  1607. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +0 -1
  1608. package/dist/cjs/tools/displayTools/Labelmap/index.d.ts +0 -3
  1609. package/dist/cjs/tools/displayTools/Labelmap/index.js +0 -11
  1610. package/dist/cjs/tools/displayTools/Labelmap/index.js.map +0 -1
  1611. package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.d.ts +0 -5
  1612. package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js +0 -32
  1613. package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js.map +0 -1
  1614. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.d.ts +0 -11
  1615. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +0 -278
  1616. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +0 -1
  1617. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.d.ts +0 -2
  1618. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js +0 -15
  1619. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +0 -1
  1620. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -3
  1621. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js +0 -19
  1622. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
  1623. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.d.ts +0 -12
  1624. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +0 -86
  1625. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +0 -1
  1626. package/dist/cjs/tools/index.d.ts +0 -36
  1627. package/dist/cjs/tools/index.js +0 -79
  1628. package/dist/cjs/tools/index.js.map +0 -1
  1629. package/dist/cjs/tools/segmentation/BrushTool.d.ts +0 -24
  1630. package/dist/cjs/tools/segmentation/BrushTool.js +0 -284
  1631. package/dist/cjs/tools/segmentation/BrushTool.js.map +0 -1
  1632. package/dist/cjs/tools/segmentation/CircleScissorsTool.d.ts +0 -30
  1633. package/dist/cjs/tools/segmentation/CircleScissorsTool.js +0 -212
  1634. package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +0 -1
  1635. package/dist/cjs/tools/segmentation/PaintFillTool.d.ts +0 -13
  1636. package/dist/cjs/tools/segmentation/PaintFillTool.js +0 -218
  1637. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +0 -1
  1638. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +0 -56
  1639. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js +0 -247
  1640. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +0 -1
  1641. package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.d.ts +0 -45
  1642. package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js +0 -157
  1643. package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js.map +0 -1
  1644. package/dist/cjs/tools/segmentation/RectangleScissorsTool.d.ts +0 -30
  1645. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js +0 -217
  1646. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js.map +0 -1
  1647. package/dist/cjs/tools/segmentation/SphereScissorsTool.d.ts +0 -31
  1648. package/dist/cjs/tools/segmentation/SphereScissorsTool.js +0 -214
  1649. package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +0 -1
  1650. package/dist/cjs/tools/segmentation/strategies/eraseCircle.d.ts +0 -15
  1651. package/dist/cjs/tools/segmentation/strategies/eraseCircle.js +0 -10
  1652. package/dist/cjs/tools/segmentation/strategies/eraseCircle.js.map +0 -1
  1653. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.d.ts +0 -12
  1654. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.js +0 -35
  1655. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.js.map +0 -1
  1656. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +0 -15
  1657. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js +0 -12
  1658. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +0 -1
  1659. package/dist/cjs/tools/segmentation/strategies/fillCircle.d.ts +0 -17
  1660. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +0 -83
  1661. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +0 -1
  1662. package/dist/cjs/tools/segmentation/strategies/fillRectangle.d.ts +0 -13
  1663. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js +0 -46
  1664. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js.map +0 -1
  1665. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +0 -17
  1666. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +0 -62
  1667. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +0 -1
  1668. package/dist/cjs/tools/segmentation/strategies/index.d.ts +0 -3
  1669. package/dist/cjs/tools/segmentation/strategies/index.js +0 -10
  1670. package/dist/cjs/tools/segmentation/strategies/index.js.map +0 -1
  1671. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +0 -3
  1672. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +0 -10
  1673. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +0 -1
  1674. package/dist/cjs/types/AnnotationGroupSelector.d.ts +0 -2
  1675. package/dist/cjs/types/AnnotationGroupSelector.js +0 -3
  1676. package/dist/cjs/types/AnnotationGroupSelector.js.map +0 -1
  1677. package/dist/cjs/types/AnnotationStyle.d.ts +0 -30
  1678. package/dist/cjs/types/AnnotationStyle.js +0 -3
  1679. package/dist/cjs/types/AnnotationStyle.js.map +0 -1
  1680. package/dist/cjs/types/AnnotationTypes.d.ts +0 -45
  1681. package/dist/cjs/types/AnnotationTypes.js +0 -3
  1682. package/dist/cjs/types/AnnotationTypes.js.map +0 -1
  1683. package/dist/cjs/types/BoundsIJK.d.ts +0 -3
  1684. package/dist/cjs/types/BoundsIJK.js +0 -3
  1685. package/dist/cjs/types/BoundsIJK.js.map +0 -1
  1686. package/dist/cjs/types/CINETypes.d.ts +0 -29
  1687. package/dist/cjs/types/CINETypes.js +0 -3
  1688. package/dist/cjs/types/CINETypes.js.map +0 -1
  1689. package/dist/cjs/types/CalculatorTypes.d.ts +0 -6
  1690. package/dist/cjs/types/CalculatorTypes.js +0 -3
  1691. package/dist/cjs/types/CalculatorTypes.js.map +0 -1
  1692. package/dist/cjs/types/ContourTypes.d.ts +0 -14
  1693. package/dist/cjs/types/ContourTypes.js +0 -3
  1694. package/dist/cjs/types/ContourTypes.js.map +0 -1
  1695. package/dist/cjs/types/CursorTypes.d.ts +0 -11
  1696. package/dist/cjs/types/CursorTypes.js +0 -3
  1697. package/dist/cjs/types/CursorTypes.js.map +0 -1
  1698. package/dist/cjs/types/EventTypes.d.ts +0 -207
  1699. package/dist/cjs/types/EventTypes.js +0 -3
  1700. package/dist/cjs/types/EventTypes.js.map +0 -1
  1701. package/dist/cjs/types/FloodFillTypes.d.ts +0 -15
  1702. package/dist/cjs/types/FloodFillTypes.js +0 -3
  1703. package/dist/cjs/types/FloodFillTypes.js.map +0 -1
  1704. package/dist/cjs/types/IAnnotationManager.d.ts +0 -14
  1705. package/dist/cjs/types/IAnnotationManager.js +0 -3
  1706. package/dist/cjs/types/IAnnotationManager.js.map +0 -1
  1707. package/dist/cjs/types/IDistance.d.ts +0 -7
  1708. package/dist/cjs/types/IDistance.js +0 -3
  1709. package/dist/cjs/types/IDistance.js.map +0 -1
  1710. package/dist/cjs/types/IPoints.d.ts +0 -8
  1711. package/dist/cjs/types/IPoints.js +0 -3
  1712. package/dist/cjs/types/IPoints.js.map +0 -1
  1713. package/dist/cjs/types/ISetToolModeOptions.d.ts +0 -16
  1714. package/dist/cjs/types/ISetToolModeOptions.js +0 -3
  1715. package/dist/cjs/types/ISetToolModeOptions.js.map +0 -1
  1716. package/dist/cjs/types/ISynchronizerEventHandler.d.ts +0 -5
  1717. package/dist/cjs/types/ISynchronizerEventHandler.js +0 -3
  1718. package/dist/cjs/types/ISynchronizerEventHandler.js.map +0 -1
  1719. package/dist/cjs/types/IToolClassReference.d.ts +0 -3
  1720. package/dist/cjs/types/IToolClassReference.js +0 -3
  1721. package/dist/cjs/types/IToolClassReference.js.map +0 -1
  1722. package/dist/cjs/types/IToolGroup.d.ts +0 -57
  1723. package/dist/cjs/types/IToolGroup.js +0 -3
  1724. package/dist/cjs/types/IToolGroup.js.map +0 -1
  1725. package/dist/cjs/types/ITouchPoints.d.ts +0 -11
  1726. package/dist/cjs/types/ITouchPoints.js +0 -3
  1727. package/dist/cjs/types/ITouchPoints.js.map +0 -1
  1728. package/dist/cjs/types/InteractionTypes.d.ts +0 -2
  1729. package/dist/cjs/types/InteractionTypes.js +0 -3
  1730. package/dist/cjs/types/InteractionTypes.js.map +0 -1
  1731. package/dist/cjs/types/InternalToolTypes.d.ts +0 -15
  1732. package/dist/cjs/types/InternalToolTypes.js +0 -3
  1733. package/dist/cjs/types/InternalToolTypes.js.map +0 -1
  1734. package/dist/cjs/types/JumpToSliceOptions.d.ts +0 -6
  1735. package/dist/cjs/types/JumpToSliceOptions.js +0 -3
  1736. package/dist/cjs/types/JumpToSliceOptions.js.map +0 -1
  1737. package/dist/cjs/types/LabelmapTypes.d.ts +0 -21
  1738. package/dist/cjs/types/LabelmapTypes.js +0 -3
  1739. package/dist/cjs/types/LabelmapTypes.js.map +0 -1
  1740. package/dist/cjs/types/PlanarBoundingBox.d.ts +0 -7
  1741. package/dist/cjs/types/PlanarBoundingBox.js +0 -3
  1742. package/dist/cjs/types/PlanarBoundingBox.js.map +0 -1
  1743. package/dist/cjs/types/SVGDrawingHelper.d.ts +0 -9
  1744. package/dist/cjs/types/SVGDrawingHelper.js +0 -3
  1745. package/dist/cjs/types/SVGDrawingHelper.js.map +0 -1
  1746. package/dist/cjs/types/ScrollOptions.d.ts +0 -7
  1747. package/dist/cjs/types/ScrollOptions.js +0 -3
  1748. package/dist/cjs/types/ScrollOptions.js.map +0 -1
  1749. package/dist/cjs/types/SegmentationStateTypes.d.ts +0 -76
  1750. package/dist/cjs/types/SegmentationStateTypes.js +0 -3
  1751. package/dist/cjs/types/SegmentationStateTypes.js.map +0 -1
  1752. package/dist/cjs/types/ToolHandle.d.ts +0 -15
  1753. package/dist/cjs/types/ToolHandle.js +0 -3
  1754. package/dist/cjs/types/ToolHandle.js.map +0 -1
  1755. package/dist/cjs/types/ToolProps.d.ts +0 -13
  1756. package/dist/cjs/types/ToolProps.js +0 -3
  1757. package/dist/cjs/types/ToolProps.js.map +0 -1
  1758. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +0 -298
  1759. package/dist/cjs/types/ToolSpecificAnnotationTypes.js +0 -3
  1760. package/dist/cjs/types/ToolSpecificAnnotationTypes.js.map +0 -1
  1761. package/dist/cjs/types/index.d.ts +0 -30
  1762. package/dist/cjs/types/index.js +0 -3
  1763. package/dist/cjs/types/index.js.map +0 -1
  1764. package/dist/cjs/utilities/boundingBox/extend2DBoundingBoxInViewAxis.d.ts +0 -3
  1765. package/dist/cjs/utilities/boundingBox/extend2DBoundingBoxInViewAxis.js +0 -13
  1766. package/dist/cjs/utilities/boundingBox/extend2DBoundingBoxInViewAxis.js.map +0 -1
  1767. package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.d.ts +0 -3
  1768. package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js +0 -40
  1769. package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js.map +0 -1
  1770. package/dist/cjs/utilities/boundingBox/index.d.ts +0 -3
  1771. package/dist/cjs/utilities/boundingBox/index.js +0 -11
  1772. package/dist/cjs/utilities/boundingBox/index.js.map +0 -1
  1773. package/dist/cjs/utilities/calibrateImageSpacing.d.ts +0 -2
  1774. package/dist/cjs/utilities/calibrateImageSpacing.js +0 -22
  1775. package/dist/cjs/utilities/calibrateImageSpacing.js.map +0 -1
  1776. package/dist/cjs/utilities/cine/events.d.ts +0 -5
  1777. package/dist/cjs/utilities/cine/events.js +0 -9
  1778. package/dist/cjs/utilities/cine/events.js.map +0 -1
  1779. package/dist/cjs/utilities/cine/index.d.ts +0 -4
  1780. package/dist/cjs/utilities/cine/index.js +0 -15
  1781. package/dist/cjs/utilities/cine/index.js.map +0 -1
  1782. package/dist/cjs/utilities/cine/playClip.d.ts +0 -4
  1783. package/dist/cjs/utilities/cine/playClip.js +0 -290
  1784. package/dist/cjs/utilities/cine/playClip.js.map +0 -1
  1785. package/dist/cjs/utilities/cine/state.d.ts +0 -4
  1786. package/dist/cjs/utilities/cine/state.js +0 -18
  1787. package/dist/cjs/utilities/cine/state.js.map +0 -1
  1788. package/dist/cjs/utilities/clip.d.ts +0 -3
  1789. package/dist/cjs/utilities/clip.js +0 -14
  1790. package/dist/cjs/utilities/clip.js.map +0 -1
  1791. package/dist/cjs/utilities/debounce.d.ts +0 -6
  1792. package/dist/cjs/utilities/debounce.js +0 -119
  1793. package/dist/cjs/utilities/debounce.js.map +0 -1
  1794. package/dist/cjs/utilities/drawing/getTextBoxCoordsCanvas.d.ts +0 -2
  1795. package/dist/cjs/utilities/drawing/getTextBoxCoordsCanvas.js +0 -28
  1796. package/dist/cjs/utilities/drawing/getTextBoxCoordsCanvas.js.map +0 -1
  1797. package/dist/cjs/utilities/drawing/index.d.ts +0 -2
  1798. package/dist/cjs/utilities/drawing/index.js +0 -9
  1799. package/dist/cjs/utilities/drawing/index.js.map +0 -1
  1800. package/dist/cjs/utilities/dynamicVolume/generateImageFromTimeData.d.ts +0 -3
  1801. package/dist/cjs/utilities/dynamicVolume/generateImageFromTimeData.js +0 -45
  1802. package/dist/cjs/utilities/dynamicVolume/generateImageFromTimeData.js.map +0 -1
  1803. package/dist/cjs/utilities/dynamicVolume/getDataInTime.d.ts +0 -7
  1804. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +0 -67
  1805. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +0 -1
  1806. package/dist/cjs/utilities/dynamicVolume/index.d.ts +0 -4
  1807. package/dist/cjs/utilities/dynamicVolume/index.js +0 -11
  1808. package/dist/cjs/utilities/dynamicVolume/index.js.map +0 -1
  1809. package/dist/cjs/utilities/getAnnotationNearPoint.d.ts +0 -5
  1810. package/dist/cjs/utilities/getAnnotationNearPoint.js +0 -75
  1811. package/dist/cjs/utilities/getAnnotationNearPoint.js.map +0 -1
  1812. package/dist/cjs/utilities/getCalibratedUnits.d.ts +0 -6
  1813. package/dist/cjs/utilities/getCalibratedUnits.js +0 -40
  1814. package/dist/cjs/utilities/getCalibratedUnits.js.map +0 -1
  1815. package/dist/cjs/utilities/getModalityUnit.d.ts +0 -6
  1816. package/dist/cjs/utilities/getModalityUnit.js +0 -27
  1817. package/dist/cjs/utilities/getModalityUnit.js.map +0 -1
  1818. package/dist/cjs/utilities/getToolsWithModesForElement.d.ts +0 -4
  1819. package/dist/cjs/utilities/getToolsWithModesForElement.js +0 -28
  1820. package/dist/cjs/utilities/getToolsWithModesForElement.js.map +0 -1
  1821. package/dist/cjs/utilities/index.d.ts +0 -29
  1822. package/dist/cjs/utilities/index.js +0 -87
  1823. package/dist/cjs/utilities/index.js.map +0 -1
  1824. package/dist/cjs/utilities/isObject.d.ts +0 -2
  1825. package/dist/cjs/utilities/isObject.js +0 -8
  1826. package/dist/cjs/utilities/isObject.js.map +0 -1
  1827. package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +0 -4
  1828. package/dist/cjs/utilities/math/angle/angleBetweenLines.js +0 -17
  1829. package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +0 -1
  1830. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.d.ts +0 -14
  1831. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js +0 -44
  1832. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +0 -1
  1833. package/dist/cjs/utilities/math/basic/Calculator.d.ts +0 -8
  1834. package/dist/cjs/utilities/math/basic/Calculator.js +0 -6
  1835. package/dist/cjs/utilities/math/basic/Calculator.js.map +0 -1
  1836. package/dist/cjs/utilities/math/basic/index.d.ts +0 -3
  1837. package/dist/cjs/utilities/math/basic/index.js +0 -11
  1838. package/dist/cjs/utilities/math/basic/index.js.map +0 -1
  1839. package/dist/cjs/utilities/math/circle/_types.d.ts +0 -5
  1840. package/dist/cjs/utilities/math/circle/_types.js +0 -3
  1841. package/dist/cjs/utilities/math/circle/_types.js.map +0 -1
  1842. package/dist/cjs/utilities/math/circle/getCanvasCircleCorners.d.ts +0 -3
  1843. package/dist/cjs/utilities/math/circle/getCanvasCircleCorners.js +0 -12
  1844. package/dist/cjs/utilities/math/circle/getCanvasCircleCorners.js.map +0 -1
  1845. package/dist/cjs/utilities/math/circle/getCanvasCircleRadius.d.ts +0 -2
  1846. package/dist/cjs/utilities/math/circle/getCanvasCircleRadius.js +0 -9
  1847. package/dist/cjs/utilities/math/circle/getCanvasCircleRadius.js.map +0 -1
  1848. package/dist/cjs/utilities/math/circle/index.d.ts +0 -3
  1849. package/dist/cjs/utilities/math/circle/index.js +0 -11
  1850. package/dist/cjs/utilities/math/circle/index.js.map +0 -1
  1851. package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +0 -9
  1852. package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.js +0 -10
  1853. package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.js.map +0 -1
  1854. package/dist/cjs/utilities/math/ellipse/index.d.ts +0 -3
  1855. package/dist/cjs/utilities/math/ellipse/index.js +0 -11
  1856. package/dist/cjs/utilities/math/ellipse/index.js.map +0 -1
  1857. package/dist/cjs/utilities/math/ellipse/pointInEllipse.d.ts +0 -9
  1858. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js +0 -20
  1859. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js.map +0 -1
  1860. package/dist/cjs/utilities/math/ellipse/pointInEllipsoidWithConstraint.d.ts +0 -9
  1861. package/dist/cjs/utilities/math/ellipse/pointInEllipsoidWithConstraint.js +0 -6
  1862. package/dist/cjs/utilities/math/ellipse/pointInEllipsoidWithConstraint.js.map +0 -1
  1863. package/dist/cjs/utilities/math/index.d.ts +0 -8
  1864. package/dist/cjs/utilities/math/index.js +0 -41
  1865. package/dist/cjs/utilities/math/index.js.map +0 -1
  1866. package/dist/cjs/utilities/math/line/distanceToPoint.d.ts +0 -2
  1867. package/dist/cjs/utilities/math/line/distanceToPoint.js +0 -14
  1868. package/dist/cjs/utilities/math/line/distanceToPoint.js.map +0 -1
  1869. package/dist/cjs/utilities/math/line/distanceToPointSquared.d.ts +0 -2
  1870. package/dist/cjs/utilities/math/line/distanceToPointSquared.js +0 -27
  1871. package/dist/cjs/utilities/math/line/distanceToPointSquared.js.map +0 -1
  1872. package/dist/cjs/utilities/math/line/index.d.ts +0 -4
  1873. package/dist/cjs/utilities/math/line/index.js +0 -13
  1874. package/dist/cjs/utilities/math/line/index.js.map +0 -1
  1875. package/dist/cjs/utilities/math/line/intersectLine.d.ts +0 -2
  1876. package/dist/cjs/utilities/math/line/intersectLine.js +0 -45
  1877. package/dist/cjs/utilities/math/line/intersectLine.js.map +0 -1
  1878. package/dist/cjs/utilities/math/midPoint.d.ts +0 -5
  1879. package/dist/cjs/utilities/math/midPoint.js +0 -19
  1880. package/dist/cjs/utilities/math/midPoint.js.map +0 -1
  1881. package/dist/cjs/utilities/math/point/distanceToPoint.d.ts +0 -2
  1882. package/dist/cjs/utilities/math/point/distanceToPoint.js +0 -12
  1883. package/dist/cjs/utilities/math/point/distanceToPoint.js.map +0 -1
  1884. package/dist/cjs/utilities/math/point/index.d.ts +0 -2
  1885. package/dist/cjs/utilities/math/point/index.js +0 -9
  1886. package/dist/cjs/utilities/math/point/index.js.map +0 -1
  1887. package/dist/cjs/utilities/math/polyline/addCanvasPointsToArray.d.ts +0 -4
  1888. package/dist/cjs/utilities/math/polyline/addCanvasPointsToArray.js +0 -36
  1889. package/dist/cjs/utilities/math/polyline/addCanvasPointsToArray.js.map +0 -1
  1890. package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -2
  1891. package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.js +0 -14
  1892. package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
  1893. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -9
  1894. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js +0 -160
  1895. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
  1896. package/dist/cjs/utilities/math/polyline/getSubPixelSpacingAndXYDirections.d.ts +0 -7
  1897. package/dist/cjs/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js +0 -72
  1898. package/dist/cjs/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js.map +0 -1
  1899. package/dist/cjs/utilities/math/polyline/index.d.ts +0 -7
  1900. package/dist/cjs/utilities/math/polyline/index.js +0 -20
  1901. package/dist/cjs/utilities/math/polyline/index.js.map +0 -1
  1902. package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +0 -23
  1903. package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -3
  1904. package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.js.map +0 -1
  1905. package/dist/cjs/utilities/math/polyline/pointCanProjectOnLine.d.ts +0 -3
  1906. package/dist/cjs/utilities/math/polyline/pointCanProjectOnLine.js +0 -35
  1907. package/dist/cjs/utilities/math/polyline/pointCanProjectOnLine.js.map +0 -1
  1908. package/dist/cjs/utilities/math/polyline/pointInPolyline.d.ts +0 -2
  1909. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +0 -15
  1910. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +0 -1
  1911. package/dist/cjs/utilities/math/polyline/pointsAreWithinCloseContourProximity.d.ts +0 -3
  1912. package/dist/cjs/utilities/math/polyline/pointsAreWithinCloseContourProximity.js +0 -8
  1913. package/dist/cjs/utilities/math/polyline/pointsAreWithinCloseContourProximity.js.map +0 -1
  1914. package/dist/cjs/utilities/math/rectangle/distanceToPoint.d.ts +0 -2
  1915. package/dist/cjs/utilities/math/rectangle/distanceToPoint.js +0 -61
  1916. package/dist/cjs/utilities/math/rectangle/distanceToPoint.js.map +0 -1
  1917. package/dist/cjs/utilities/math/rectangle/index.d.ts +0 -2
  1918. package/dist/cjs/utilities/math/rectangle/index.js +0 -9
  1919. package/dist/cjs/utilities/math/rectangle/index.js.map +0 -1
  1920. package/dist/cjs/utilities/math/sphere/index.d.ts +0 -2
  1921. package/dist/cjs/utilities/math/sphere/index.js +0 -9
  1922. package/dist/cjs/utilities/math/sphere/index.js.map +0 -1
  1923. package/dist/cjs/utilities/math/sphere/pointInSphere.d.ts +0 -8
  1924. package/dist/cjs/utilities/math/sphere/pointInSphere.js +0 -11
  1925. package/dist/cjs/utilities/math/sphere/pointInSphere.js.map +0 -1
  1926. package/dist/cjs/utilities/math/vec2/findClosestPoint.d.ts +0 -2
  1927. package/dist/cjs/utilities/math/vec2/findClosestPoint.js +0 -21
  1928. package/dist/cjs/utilities/math/vec2/findClosestPoint.js.map +0 -1
  1929. package/dist/cjs/utilities/math/vec2/index.d.ts +0 -3
  1930. package/dist/cjs/utilities/math/vec2/index.js +0 -11
  1931. package/dist/cjs/utilities/math/vec2/index.js.map +0 -1
  1932. package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +0 -1
  1933. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js +0 -72
  1934. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js.map +0 -1
  1935. package/dist/cjs/utilities/orientation/getOrientationStringLPS.d.ts +0 -2
  1936. package/dist/cjs/utilities/orientation/getOrientationStringLPS.js +0 -45
  1937. package/dist/cjs/utilities/orientation/getOrientationStringLPS.js.map +0 -1
  1938. package/dist/cjs/utilities/orientation/index.d.ts +0 -3
  1939. package/dist/cjs/utilities/orientation/index.js +0 -11
  1940. package/dist/cjs/utilities/orientation/index.js.map +0 -1
  1941. package/dist/cjs/utilities/orientation/invertOrientationStringLPS.d.ts +0 -1
  1942. package/dist/cjs/utilities/orientation/invertOrientationStringLPS.js +0 -14
  1943. package/dist/cjs/utilities/orientation/invertOrientationStringLPS.js.map +0 -1
  1944. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.d.ts +0 -3
  1945. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js +0 -36
  1946. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js.map +0 -1
  1947. package/dist/cjs/utilities/planar/filterAnnotationsWithinSlice.d.ts +0 -3
  1948. package/dist/cjs/utilities/planar/filterAnnotationsWithinSlice.js +0 -46
  1949. package/dist/cjs/utilities/planar/filterAnnotationsWithinSlice.js.map +0 -1
  1950. package/dist/cjs/utilities/planar/getPointInLineOfSightWithCriteria.d.ts +0 -2
  1951. package/dist/cjs/utilities/planar/getPointInLineOfSightWithCriteria.js +0 -45
  1952. package/dist/cjs/utilities/planar/getPointInLineOfSightWithCriteria.js.map +0 -1
  1953. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromCorners.d.ts +0 -5
  1954. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromCorners.js +0 -22
  1955. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromCorners.js.map +0 -1
  1956. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromTwoPoints.d.ts +0 -5
  1957. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromTwoPoints.js +0 -22
  1958. package/dist/cjs/utilities/planar/getWorldWidthAndHeightFromTwoPoints.js.map +0 -1
  1959. package/dist/cjs/utilities/planar/index.d.ts +0 -12
  1960. package/dist/cjs/utilities/planar/index.js +0 -21
  1961. package/dist/cjs/utilities/planar/index.js.map +0 -1
  1962. package/dist/cjs/utilities/planarFreehandROITool/index.d.ts +0 -6
  1963. package/dist/cjs/utilities/planarFreehandROITool/index.js +0 -12
  1964. package/dist/cjs/utilities/planarFreehandROITool/index.js.map +0 -1
  1965. package/dist/cjs/utilities/planarFreehandROITool/interpolateAnnotation.d.ts +0 -3
  1966. package/dist/cjs/utilities/planarFreehandROITool/interpolateAnnotation.js +0 -47
  1967. package/dist/cjs/utilities/planarFreehandROITool/interpolateAnnotation.js.map +0 -1
  1968. package/dist/cjs/utilities/planarFreehandROITool/interpolatePoints.d.ts +0 -3
  1969. package/dist/cjs/utilities/planarFreehandROITool/interpolatePoints.js +0 -97
  1970. package/dist/cjs/utilities/planarFreehandROITool/interpolatePoints.js.map +0 -1
  1971. package/dist/cjs/utilities/planarFreehandROITool/interpolation/algorithms/bspline.d.ts +0 -2
  1972. package/dist/cjs/utilities/planarFreehandROITool/interpolation/algorithms/bspline.js +0 -28
  1973. package/dist/cjs/utilities/planarFreehandROITool/interpolation/algorithms/bspline.js.map +0 -1
  1974. package/dist/cjs/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.d.ts +0 -2
  1975. package/dist/cjs/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.js +0 -46
  1976. package/dist/cjs/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.js.map +0 -1
  1977. package/dist/cjs/utilities/pointInShapeCallback.d.ts +0 -17
  1978. package/dist/cjs/utilities/pointInShapeCallback.js +0 -78
  1979. package/dist/cjs/utilities/pointInShapeCallback.js.map +0 -1
  1980. package/dist/cjs/utilities/pointInSurroundingSphereCallback.d.ts +0 -4
  1981. package/dist/cjs/utilities/pointInSurroundingSphereCallback.js +0 -70
  1982. package/dist/cjs/utilities/pointInSurroundingSphereCallback.js.map +0 -1
  1983. package/dist/cjs/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.d.ts +0 -5
  1984. package/dist/cjs/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.js +0 -51
  1985. package/dist/cjs/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.js.map +0 -1
  1986. package/dist/cjs/utilities/rectangleROITool/index.d.ts +0 -2
  1987. package/dist/cjs/utilities/rectangleROITool/index.js +0 -9
  1988. package/dist/cjs/utilities/rectangleROITool/index.js.map +0 -1
  1989. package/dist/cjs/utilities/roundNumber.d.ts +0 -2
  1990. package/dist/cjs/utilities/roundNumber.js +0 -27
  1991. package/dist/cjs/utilities/roundNumber.js.map +0 -1
  1992. package/dist/cjs/utilities/scroll.d.ts +0 -4
  1993. package/dist/cjs/utilities/scroll.js +0 -56
  1994. package/dist/cjs/utilities/scroll.js.map +0 -1
  1995. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.d.ts +0 -2
  1996. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js +0 -49
  1997. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js.map +0 -1
  1998. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.d.ts +0 -3
  1999. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js +0 -49
  2000. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js.map +0 -1
  2001. package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.d.ts +0 -18
  2002. package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.js +0 -45
  2003. package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.js.map +0 -1
  2004. package/dist/cjs/utilities/segmentation/createMergedLabelmapForIndex.d.ts +0 -3
  2005. package/dist/cjs/utilities/segmentation/createMergedLabelmapForIndex.js +0 -37
  2006. package/dist/cjs/utilities/segmentation/createMergedLabelmapForIndex.js.map +0 -1
  2007. package/dist/cjs/utilities/segmentation/floodFill.d.ts +0 -4
  2008. package/dist/cjs/utilities/segmentation/floodFill.js +0 -131
  2009. package/dist/cjs/utilities/segmentation/floodFill.js.map +0 -1
  2010. package/dist/cjs/utilities/segmentation/getDefaultRepresentationConfig.d.ts +0 -2
  2011. package/dist/cjs/utilities/segmentation/getDefaultRepresentationConfig.js +0 -18
  2012. package/dist/cjs/utilities/segmentation/getDefaultRepresentationConfig.js.map +0 -1
  2013. package/dist/cjs/utilities/segmentation/index.d.ts +0 -12
  2014. package/dist/cjs/utilities/segmentation/index.js +0 -31
  2015. package/dist/cjs/utilities/segmentation/index.js.map +0 -1
  2016. package/dist/cjs/utilities/segmentation/isValidRepresentationConfig.d.ts +0 -2
  2017. package/dist/cjs/utilities/segmentation/isValidRepresentationConfig.js +0 -17
  2018. package/dist/cjs/utilities/segmentation/isValidRepresentationConfig.js.map +0 -1
  2019. package/dist/cjs/utilities/segmentation/rectangleROIThresholdVolumeByRange.d.ts +0 -19
  2020. package/dist/cjs/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +0 -38
  2021. package/dist/cjs/utilities/segmentation/rectangleROIThresholdVolumeByRange.js.map +0 -1
  2022. package/dist/cjs/utilities/segmentation/thresholdSegmentationByRange.d.ts +0 -4
  2023. package/dist/cjs/utilities/segmentation/thresholdSegmentationByRange.js +0 -54
  2024. package/dist/cjs/utilities/segmentation/thresholdSegmentationByRange.js.map +0 -1
  2025. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.d.ts +0 -10
  2026. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js +0 -73
  2027. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js.map +0 -1
  2028. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.d.ts +0 -18
  2029. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js +0 -110
  2030. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js.map +0 -1
  2031. package/dist/cjs/utilities/segmentation/utilities.d.ts +0 -12
  2032. package/dist/cjs/utilities/segmentation/utilities.js +0 -79
  2033. package/dist/cjs/utilities/segmentation/utilities.js.map +0 -1
  2034. package/dist/cjs/utilities/stackPrefetch/index.d.ts +0 -2
  2035. package/dist/cjs/utilities/stackPrefetch/index.js +0 -9
  2036. package/dist/cjs/utilities/stackPrefetch/index.js.map +0 -1
  2037. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.d.ts +0 -8
  2038. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +0 -230
  2039. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +0 -1
  2040. package/dist/cjs/utilities/stackPrefetch/state.d.ts +0 -3
  2041. package/dist/cjs/utilities/stackPrefetch/state.js +0 -18
  2042. package/dist/cjs/utilities/stackPrefetch/state.js.map +0 -1
  2043. package/dist/cjs/utilities/throttle.d.ts +0 -5
  2044. package/dist/cjs/utilities/throttle.js +0 -25
  2045. package/dist/cjs/utilities/throttle.js.map +0 -1
  2046. package/dist/cjs/utilities/touch/index.d.ts +0 -10
  2047. package/dist/cjs/utilities/touch/index.js +0 -163
  2048. package/dist/cjs/utilities/touch/index.js.map +0 -1
  2049. package/dist/cjs/utilities/triggerAnnotationRender.d.ts +0 -22
  2050. package/dist/cjs/utilities/triggerAnnotationRender.js +0 -124
  2051. package/dist/cjs/utilities/triggerAnnotationRender.js.map +0 -1
  2052. package/dist/cjs/utilities/triggerAnnotationRenderForViewportIds.d.ts +0 -3
  2053. package/dist/cjs/utilities/triggerAnnotationRenderForViewportIds.js +0 -19
  2054. package/dist/cjs/utilities/triggerAnnotationRenderForViewportIds.js.map +0 -1
  2055. package/dist/cjs/utilities/viewport/index.d.ts +0 -4
  2056. package/dist/cjs/utilities/viewport/index.js +0 -13
  2057. package/dist/cjs/utilities/viewport/index.js.map +0 -1
  2058. package/dist/cjs/utilities/viewport/isViewportPreScaled.d.ts +0 -3
  2059. package/dist/cjs/utilities/viewport/isViewportPreScaled.js +0 -20
  2060. package/dist/cjs/utilities/viewport/isViewportPreScaled.js.map +0 -1
  2061. package/dist/cjs/utilities/viewport/jumpToSlice.d.ts +0 -3
  2062. package/dist/cjs/utilities/viewport/jumpToSlice.js +0 -53
  2063. package/dist/cjs/utilities/viewport/jumpToSlice.js.map +0 -1
  2064. package/dist/cjs/utilities/viewport/jumpToWorld.d.ts +0 -2
  2065. package/dist/cjs/utilities/viewport/jumpToWorld.js +0 -36
  2066. package/dist/cjs/utilities/viewport/jumpToWorld.js.map +0 -1
  2067. package/dist/cjs/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.d.ts +0 -2
  2068. package/dist/cjs/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js +0 -15
  2069. package/dist/cjs/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js.map +0 -1
  2070. package/dist/cjs/utilities/viewportFilters/filterViewportsWithParallelNormals.d.ts +0 -2
  2071. package/dist/cjs/utilities/viewportFilters/filterViewportsWithParallelNormals.js +0 -15
  2072. package/dist/cjs/utilities/viewportFilters/filterViewportsWithParallelNormals.js.map +0 -1
  2073. package/dist/cjs/utilities/viewportFilters/filterViewportsWithSameOrientation.d.ts +0 -2
  2074. package/dist/cjs/utilities/viewportFilters/filterViewportsWithSameOrientation.js +0 -14
  2075. package/dist/cjs/utilities/viewportFilters/filterViewportsWithSameOrientation.js.map +0 -1
  2076. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.d.ts +0 -2
  2077. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js +0 -32
  2078. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +0 -1
  2079. package/dist/cjs/utilities/viewportFilters/getViewportIdsWithToolToRender.d.ts +0 -1
  2080. package/dist/cjs/utilities/viewportFilters/getViewportIdsWithToolToRender.js +0 -24
  2081. package/dist/cjs/utilities/viewportFilters/getViewportIdsWithToolToRender.js.map +0 -1
  2082. package/dist/cjs/utilities/viewportFilters/index.d.ts +0 -5
  2083. package/dist/cjs/utilities/viewportFilters/index.js +0 -15
  2084. package/dist/cjs/utilities/viewportFilters/index.js.map +0 -1
  2085. package/dist/esm/constants/COLOR_LUT.js.map +0 -1
  2086. package/dist/esm/constants/index.js.map +0 -1
  2087. package/dist/esm/cursors/ImageMouseCursor.js.map +0 -1
  2088. package/dist/esm/cursors/MouseCursor.js.map +0 -1
  2089. package/dist/esm/cursors/SVGCursorDescriptor.js.map +0 -1
  2090. package/dist/esm/cursors/SVGMouseCursor.js.map +0 -1
  2091. package/dist/esm/cursors/elementCursor.js.map +0 -1
  2092. package/dist/esm/cursors/index.js.map +0 -1
  2093. package/dist/esm/cursors/setCursorForElement.js.map +0 -1
  2094. package/dist/esm/drawingSvg/_getHash.js.map +0 -1
  2095. package/dist/esm/drawingSvg/clearByToolType.js.map +0 -1
  2096. package/dist/esm/drawingSvg/draw.js.map +0 -1
  2097. package/dist/esm/drawingSvg/drawArrow.js.map +0 -1
  2098. package/dist/esm/drawingSvg/drawCircle.js.map +0 -1
  2099. package/dist/esm/drawingSvg/drawEllipse.js.map +0 -1
  2100. package/dist/esm/drawingSvg/drawHandles.js.map +0 -1
  2101. package/dist/esm/drawingSvg/drawLine.js.map +0 -1
  2102. package/dist/esm/drawingSvg/drawLink.js.map +0 -1
  2103. package/dist/esm/drawingSvg/drawLinkedTextBox.js.map +0 -1
  2104. package/dist/esm/drawingSvg/drawPolyline.js.map +0 -1
  2105. package/dist/esm/drawingSvg/drawRect.js.map +0 -1
  2106. package/dist/esm/drawingSvg/drawTextBox.js.map +0 -1
  2107. package/dist/esm/drawingSvg/getSvgDrawingHelper.js.map +0 -1
  2108. package/dist/esm/drawingSvg/index.js.map +0 -1
  2109. package/dist/esm/drawingSvg/setAttributesIfNecessary.js.map +0 -1
  2110. package/dist/esm/drawingSvg/setNewAttributesIfValid.js.map +0 -1
  2111. package/dist/esm/enums/AnnotationStyleStates.js.map +0 -1
  2112. package/dist/esm/enums/Events.js.map +0 -1
  2113. package/dist/esm/enums/SegmentationRepresentations.js.map +0 -1
  2114. package/dist/esm/enums/ToolBindings.js.map +0 -1
  2115. package/dist/esm/enums/ToolModes.js.map +0 -1
  2116. package/dist/esm/enums/Touch.js.map +0 -1
  2117. package/dist/esm/enums/index.js.map +0 -1
  2118. package/dist/esm/eventDispatchers/annotationModifiedEventDispatcher.js.map +0 -1
  2119. package/dist/esm/eventDispatchers/cameraModifiedEventDispatcher.js.map +0 -1
  2120. package/dist/esm/eventDispatchers/imageRenderedEventDispatcher.js.map +0 -1
  2121. package/dist/esm/eventDispatchers/imageSpacingCalibratedEventDispatcher.js.map +0 -1
  2122. package/dist/esm/eventDispatchers/index.js.map +0 -1
  2123. package/dist/esm/eventDispatchers/keyboardEventHandlers/index.js.map +0 -1
  2124. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +0 -1
  2125. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyUp.js.map +0 -1
  2126. package/dist/esm/eventDispatchers/keyboardToolEventDispatcher.js.map +0 -1
  2127. package/dist/esm/eventDispatchers/mouseEventHandlers/index.js.map +0 -1
  2128. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseClick.js.map +0 -1
  2129. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDoubleClick.js.map +0 -1
  2130. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +0 -1
  2131. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownActivate.js.map +0 -1
  2132. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDrag.js.map +0 -1
  2133. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseMove.js.map +0 -1
  2134. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseUp.js.map +0 -1
  2135. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseWheel.js.map +0 -1
  2136. package/dist/esm/eventDispatchers/mouseToolEventDispatcher.js.map +0 -1
  2137. package/dist/esm/eventDispatchers/shared/customCallbackHandler.js.map +0 -1
  2138. package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +0 -1
  2139. package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +0 -1
  2140. package/dist/esm/eventDispatchers/shared/getActiveToolForTouchEvent.js.map +0 -1
  2141. package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +0 -1
  2142. package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.js.map +0 -1
  2143. package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.js.map +0 -1
  2144. package/dist/esm/eventDispatchers/touchEventHandlers/index.js.map +0 -1
  2145. package/dist/esm/eventDispatchers/touchEventHandlers/touchDrag.js.map +0 -1
  2146. package/dist/esm/eventDispatchers/touchEventHandlers/touchEnd.js.map +0 -1
  2147. package/dist/esm/eventDispatchers/touchEventHandlers/touchPress.js.map +0 -1
  2148. package/dist/esm/eventDispatchers/touchEventHandlers/touchStart.js.map +0 -1
  2149. package/dist/esm/eventDispatchers/touchEventHandlers/touchStartActivate.js.map +0 -1
  2150. package/dist/esm/eventDispatchers/touchEventHandlers/touchTap.js.map +0 -1
  2151. package/dist/esm/eventDispatchers/touchToolEventDispatcher.js.map +0 -1
  2152. package/dist/esm/eventListeners/annotations/annotationModifiedListener.js.map +0 -1
  2153. package/dist/esm/eventListeners/annotations/annotationSelectionListener.js.map +0 -1
  2154. package/dist/esm/eventListeners/annotations/index.js.map +0 -1
  2155. package/dist/esm/eventListeners/index.js.map +0 -1
  2156. package/dist/esm/eventListeners/keyboard/index.js.map +0 -1
  2157. package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +0 -1
  2158. package/dist/esm/eventListeners/mouse/getMouseEventPoints.js.map +0 -1
  2159. package/dist/esm/eventListeners/mouse/index.js.map +0 -1
  2160. package/dist/esm/eventListeners/mouse/mouseDoubleClickListener.js.map +0 -1
  2161. package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +0 -1
  2162. package/dist/esm/eventListeners/mouse/mouseMoveListener.js.map +0 -1
  2163. package/dist/esm/eventListeners/segmentation/index.js.map +0 -1
  2164. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +0 -1
  2165. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js.map +0 -1
  2166. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +0 -1
  2167. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +0 -1
  2168. package/dist/esm/eventListeners/touch/getTouchEventPoints.js.map +0 -1
  2169. package/dist/esm/eventListeners/touch/index.js.map +0 -1
  2170. package/dist/esm/eventListeners/touch/preventGhostClick.js.map +0 -1
  2171. package/dist/esm/eventListeners/touch/touchStartListener.js.map +0 -1
  2172. package/dist/esm/eventListeners/wheel/index.js.map +0 -1
  2173. package/dist/esm/eventListeners/wheel/normalizeWheel.js.map +0 -1
  2174. package/dist/esm/eventListeners/wheel/wheelListener.js.map +0 -1
  2175. package/dist/esm/index.js.map +0 -1
  2176. package/dist/esm/init.js.map +0 -1
  2177. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +0 -1
  2178. package/dist/esm/stateManagement/annotation/annotationLocking.js.map +0 -1
  2179. package/dist/esm/stateManagement/annotation/annotationSelection.js.map +0 -1
  2180. package/dist/esm/stateManagement/annotation/annotationState.js.map +0 -1
  2181. package/dist/esm/stateManagement/annotation/annotationVisibility.js.map +0 -1
  2182. package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +0 -1
  2183. package/dist/esm/stateManagement/annotation/config/getFont.js.map +0 -1
  2184. package/dist/esm/stateManagement/annotation/config/getState.js.map +0 -1
  2185. package/dist/esm/stateManagement/annotation/config/helpers.js.map +0 -1
  2186. package/dist/esm/stateManagement/annotation/config/index.js.map +0 -1
  2187. package/dist/esm/stateManagement/annotation/helpers/state.js.map +0 -1
  2188. package/dist/esm/stateManagement/annotation/index.js.map +0 -1
  2189. package/dist/esm/stateManagement/index.js.map +0 -1
  2190. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +0 -1
  2191. package/dist/esm/stateManagement/segmentation/activeSegmentation.js.map +0 -1
  2192. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -3
  2193. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js +0 -32
  2194. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js.map +0 -1
  2195. package/dist/esm/stateManagement/segmentation/addSegmentations.js.map +0 -1
  2196. package/dist/esm/stateManagement/segmentation/config/index.js.map +0 -1
  2197. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js.map +0 -1
  2198. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js.map +0 -1
  2199. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +0 -1
  2200. package/dist/esm/stateManagement/segmentation/helpers/index.js.map +0 -1
  2201. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js.map +0 -1
  2202. package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +0 -1
  2203. package/dist/esm/stateManagement/segmentation/index.js.map +0 -1
  2204. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +0 -2
  2205. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +0 -40
  2206. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +0 -1
  2207. package/dist/esm/stateManagement/segmentation/segmentIndex.js.map +0 -1
  2208. package/dist/esm/stateManagement/segmentation/segmentLocking.js.map +0 -1
  2209. package/dist/esm/stateManagement/segmentation/segmentationState.js.map +0 -1
  2210. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js.map +0 -1
  2211. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +0 -1
  2212. package/dist/esm/store/SynchronizerManager/createSynchronizer.js.map +0 -1
  2213. package/dist/esm/store/SynchronizerManager/destroy.js.map +0 -1
  2214. package/dist/esm/store/SynchronizerManager/destroySynchronizer.js.map +0 -1
  2215. package/dist/esm/store/SynchronizerManager/getAllSynchronizers.js.map +0 -1
  2216. package/dist/esm/store/SynchronizerManager/getSynchronizer.js.map +0 -1
  2217. package/dist/esm/store/SynchronizerManager/getSynchronizersForViewport.js.map +0 -1
  2218. package/dist/esm/store/SynchronizerManager/index.js.map +0 -1
  2219. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +0 -1
  2220. package/dist/esm/store/ToolGroupManager/createToolGroup.js.map +0 -1
  2221. package/dist/esm/store/ToolGroupManager/destroy.js.map +0 -1
  2222. package/dist/esm/store/ToolGroupManager/destroyToolGroup.js.map +0 -1
  2223. package/dist/esm/store/ToolGroupManager/getAllToolGroups.js.map +0 -1
  2224. package/dist/esm/store/ToolGroupManager/getToolGroup.js.map +0 -1
  2225. package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.js.map +0 -1
  2226. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js.map +0 -1
  2227. package/dist/esm/store/ToolGroupManager/index.js.map +0 -1
  2228. package/dist/esm/store/addEnabledElement.js.map +0 -1
  2229. package/dist/esm/store/addTool.js.map +0 -1
  2230. package/dist/esm/store/cancelActiveManipulations.js.map +0 -1
  2231. package/dist/esm/store/filterMoveableAnnotationTools.js.map +0 -1
  2232. package/dist/esm/store/filterToolsWithAnnotationsForElement.js.map +0 -1
  2233. package/dist/esm/store/filterToolsWithMoveableHandles.js.map +0 -1
  2234. package/dist/esm/store/index.js.map +0 -1
  2235. package/dist/esm/store/removeEnabledElement.js.map +0 -1
  2236. package/dist/esm/store/state.js.map +0 -1
  2237. package/dist/esm/store/svgNodeCache.js.map +0 -1
  2238. package/dist/esm/synchronizers/callbacks/areViewportsCoplanar .js.map +0 -1
  2239. package/dist/esm/synchronizers/callbacks/cameraSyncCallback.js.map +0 -1
  2240. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.d.ts +0 -3
  2241. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +0 -65
  2242. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +0 -1
  2243. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js.map +0 -1
  2244. package/dist/esm/synchronizers/callbacks/zoomPanSyncCallback.js.map +0 -1
  2245. package/dist/esm/synchronizers/index.js.map +0 -1
  2246. package/dist/esm/synchronizers/synchronizers/createCameraPositionSynchronizer.js.map +0 -1
  2247. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +0 -2
  2248. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -9
  2249. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  2250. package/dist/esm/synchronizers/synchronizers/createVOISynchronizer.js.map +0 -1
  2251. package/dist/esm/synchronizers/synchronizers/createZoomPanSynchronizer.js.map +0 -1
  2252. package/dist/esm/synchronizers/synchronizers/index.js.map +0 -1
  2253. package/dist/esm/tools/CrosshairsTool.js.map +0 -1
  2254. package/dist/esm/tools/MIPJumpToClickTool.js.map +0 -1
  2255. package/dist/esm/tools/MagnifyTool.js.map +0 -1
  2256. package/dist/esm/tools/PanTool.js.map +0 -1
  2257. package/dist/esm/tools/PlanarRotateTool.js.map +0 -1
  2258. package/dist/esm/tools/ReferenceCursors.js.map +0 -1
  2259. package/dist/esm/tools/ReferenceLinesTool.js.map +0 -1
  2260. package/dist/esm/tools/ScaleOverlayTool.js.map +0 -1
  2261. package/dist/esm/tools/StackScrollTool.js.map +0 -1
  2262. package/dist/esm/tools/StackScrollToolMouseWheelTool.js.map +0 -1
  2263. package/dist/esm/tools/TrackballRotateTool.js.map +0 -1
  2264. package/dist/esm/tools/VolumeRotateMouseWheelTool.js.map +0 -1
  2265. package/dist/esm/tools/WindowLevelTool.js.map +0 -1
  2266. package/dist/esm/tools/ZoomTool.js.map +0 -1
  2267. package/dist/esm/tools/annotation/AngleTool.js.map +0 -1
  2268. package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +0 -1
  2269. package/dist/esm/tools/annotation/BidirectionalTool.js.map +0 -1
  2270. package/dist/esm/tools/annotation/CircleROITool.js.map +0 -1
  2271. package/dist/esm/tools/annotation/CobbAngleTool.js.map +0 -1
  2272. package/dist/esm/tools/annotation/DragProbeTool.js.map +0 -1
  2273. package/dist/esm/tools/annotation/EllipticalROITool.js.map +0 -1
  2274. package/dist/esm/tools/annotation/LengthTool.js.map +0 -1
  2275. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +0 -1
  2276. package/dist/esm/tools/annotation/ProbeTool.js.map +0 -1
  2277. package/dist/esm/tools/annotation/RectangleROITool.js.map +0 -1
  2278. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +0 -1
  2279. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +0 -1
  2280. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +0 -1
  2281. package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +0 -1
  2282. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +0 -1
  2283. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +0 -1
  2284. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js.map +0 -1
  2285. package/dist/esm/tools/base/AnnotationDisplayTool.js.map +0 -1
  2286. package/dist/esm/tools/base/AnnotationTool.js.map +0 -1
  2287. package/dist/esm/tools/base/BaseTool.js.map +0 -1
  2288. package/dist/esm/tools/base/index.js.map +0 -1
  2289. package/dist/esm/tools/displayTools/Contour/addContourSetsToElement.d.ts +0 -3
  2290. package/dist/esm/tools/displayTools/Contour/addContourSetsToElement.js +0 -66
  2291. package/dist/esm/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
  2292. package/dist/esm/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -3
  2293. package/dist/esm/tools/displayTools/Contour/addOrUpdateContourSets.js +0 -10
  2294. package/dist/esm/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
  2295. package/dist/esm/tools/displayTools/Contour/contourConfig.js.map +0 -1
  2296. package/dist/esm/tools/displayTools/Contour/contourConfigCache.d.ts +0 -9
  2297. package/dist/esm/tools/displayTools/Contour/contourConfigCache.js +0 -11
  2298. package/dist/esm/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
  2299. package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +0 -1
  2300. package/dist/esm/tools/displayTools/Contour/index.js.map +0 -1
  2301. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js.map +0 -1
  2302. package/dist/esm/tools/displayTools/Contour/updateContourSets.d.ts +0 -3
  2303. package/dist/esm/tools/displayTools/Contour/updateContourSets.js +0 -93
  2304. package/dist/esm/tools/displayTools/Contour/updateContourSets.js.map +0 -1
  2305. package/dist/esm/tools/displayTools/Contour/utils.d.ts +0 -6
  2306. package/dist/esm/tools/displayTools/Contour/utils.js +0 -53
  2307. package/dist/esm/tools/displayTools/Contour/utils.js.map +0 -1
  2308. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +0 -1
  2309. package/dist/esm/tools/displayTools/Labelmap/index.js.map +0 -1
  2310. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js.map +0 -1
  2311. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +0 -1
  2312. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +0 -1
  2313. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -3
  2314. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js +0 -17
  2315. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
  2316. package/dist/esm/tools/displayTools/SegmentationDisplayTool.d.ts +0 -12
  2317. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +0 -81
  2318. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +0 -1
  2319. package/dist/esm/tools/index.js.map +0 -1
  2320. package/dist/esm/tools/segmentation/BrushTool.js.map +0 -1
  2321. package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +0 -1
  2322. package/dist/esm/tools/segmentation/PaintFillTool.js.map +0 -1
  2323. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +0 -1
  2324. package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js.map +0 -1
  2325. package/dist/esm/tools/segmentation/RectangleScissorsTool.js.map +0 -1
  2326. package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +0 -1
  2327. package/dist/esm/tools/segmentation/strategies/eraseCircle.js.map +0 -1
  2328. package/dist/esm/tools/segmentation/strategies/eraseRectangle.js.map +0 -1
  2329. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +0 -1
  2330. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +0 -1
  2331. package/dist/esm/tools/segmentation/strategies/fillRectangle.js.map +0 -1
  2332. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +0 -1
  2333. package/dist/esm/tools/segmentation/strategies/index.js.map +0 -1
  2334. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +0 -1
  2335. package/dist/esm/types/AnnotationGroupSelector.js.map +0 -1
  2336. package/dist/esm/types/AnnotationStyle.js.map +0 -1
  2337. package/dist/esm/types/AnnotationTypes.js.map +0 -1
  2338. package/dist/esm/types/BoundsIJK.js.map +0 -1
  2339. package/dist/esm/types/CINETypes.js.map +0 -1
  2340. package/dist/esm/types/CalculatorTypes.js.map +0 -1
  2341. package/dist/esm/types/ContourTypes.js.map +0 -1
  2342. package/dist/esm/types/CursorTypes.js.map +0 -1
  2343. package/dist/esm/types/EventTypes.js.map +0 -1
  2344. package/dist/esm/types/FloodFillTypes.js.map +0 -1
  2345. package/dist/esm/types/IAnnotationManager.js.map +0 -1
  2346. package/dist/esm/types/IDistance.js.map +0 -1
  2347. package/dist/esm/types/IPoints.js.map +0 -1
  2348. package/dist/esm/types/ISetToolModeOptions.js.map +0 -1
  2349. package/dist/esm/types/ISynchronizerEventHandler.js.map +0 -1
  2350. package/dist/esm/types/IToolClassReference.js.map +0 -1
  2351. package/dist/esm/types/IToolGroup.js.map +0 -1
  2352. package/dist/esm/types/ITouchPoints.js.map +0 -1
  2353. package/dist/esm/types/InteractionTypes.js.map +0 -1
  2354. package/dist/esm/types/InternalToolTypes.js.map +0 -1
  2355. package/dist/esm/types/JumpToSliceOptions.js.map +0 -1
  2356. package/dist/esm/types/LabelmapTypes.js.map +0 -1
  2357. package/dist/esm/types/PlanarBoundingBox.js.map +0 -1
  2358. package/dist/esm/types/SVGDrawingHelper.js.map +0 -1
  2359. package/dist/esm/types/ScrollOptions.js.map +0 -1
  2360. package/dist/esm/types/SegmentationStateTypes.js.map +0 -1
  2361. package/dist/esm/types/ToolHandle.js.map +0 -1
  2362. package/dist/esm/types/ToolProps.js.map +0 -1
  2363. package/dist/esm/types/ToolSpecificAnnotationTypes.js.map +0 -1
  2364. package/dist/esm/types/index.js.map +0 -1
  2365. package/dist/esm/utilities/boundingBox/extend2DBoundingBoxInViewAxis.js.map +0 -1
  2366. package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js.map +0 -1
  2367. package/dist/esm/utilities/boundingBox/index.js.map +0 -1
  2368. package/dist/esm/utilities/calibrateImageSpacing.js.map +0 -1
  2369. package/dist/esm/utilities/cine/events.js.map +0 -1
  2370. package/dist/esm/utilities/cine/index.js.map +0 -1
  2371. package/dist/esm/utilities/cine/playClip.js.map +0 -1
  2372. package/dist/esm/utilities/cine/state.js.map +0 -1
  2373. package/dist/esm/utilities/clip.js.map +0 -1
  2374. package/dist/esm/utilities/debounce.js.map +0 -1
  2375. package/dist/esm/utilities/drawing/getTextBoxCoordsCanvas.js.map +0 -1
  2376. package/dist/esm/utilities/drawing/index.js.map +0 -1
  2377. package/dist/esm/utilities/dynamicVolume/generateImageFromTimeData.js.map +0 -1
  2378. package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +0 -1
  2379. package/dist/esm/utilities/dynamicVolume/index.js.map +0 -1
  2380. package/dist/esm/utilities/getAnnotationNearPoint.js.map +0 -1
  2381. package/dist/esm/utilities/getCalibratedUnits.js.map +0 -1
  2382. package/dist/esm/utilities/getModalityUnit.d.ts +0 -6
  2383. package/dist/esm/utilities/getModalityUnit.js +0 -24
  2384. package/dist/esm/utilities/getModalityUnit.js.map +0 -1
  2385. package/dist/esm/utilities/getToolsWithModesForElement.js.map +0 -1
  2386. package/dist/esm/utilities/index.js.map +0 -1
  2387. package/dist/esm/utilities/isObject.js.map +0 -1
  2388. package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +0 -1
  2389. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +0 -1
  2390. package/dist/esm/utilities/math/basic/Calculator.js.map +0 -1
  2391. package/dist/esm/utilities/math/basic/index.js.map +0 -1
  2392. package/dist/esm/utilities/math/circle/_types.js.map +0 -1
  2393. package/dist/esm/utilities/math/circle/getCanvasCircleCorners.js.map +0 -1
  2394. package/dist/esm/utilities/math/circle/getCanvasCircleRadius.js.map +0 -1
  2395. package/dist/esm/utilities/math/circle/index.js.map +0 -1
  2396. package/dist/esm/utilities/math/ellipse/getCanvasEllipseCorners.js.map +0 -1
  2397. package/dist/esm/utilities/math/ellipse/index.js.map +0 -1
  2398. package/dist/esm/utilities/math/ellipse/pointInEllipse.js.map +0 -1
  2399. package/dist/esm/utilities/math/ellipse/pointInEllipsoidWithConstraint.js.map +0 -1
  2400. package/dist/esm/utilities/math/index.js.map +0 -1
  2401. package/dist/esm/utilities/math/line/distanceToPoint.js.map +0 -1
  2402. package/dist/esm/utilities/math/line/distanceToPointSquared.js.map +0 -1
  2403. package/dist/esm/utilities/math/line/index.js.map +0 -1
  2404. package/dist/esm/utilities/math/line/intersectLine.js.map +0 -1
  2405. package/dist/esm/utilities/math/midPoint.js.map +0 -1
  2406. package/dist/esm/utilities/math/point/distanceToPoint.js.map +0 -1
  2407. package/dist/esm/utilities/math/point/index.js.map +0 -1
  2408. package/dist/esm/utilities/math/polyline/addCanvasPointsToArray.js.map +0 -1
  2409. package/dist/esm/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -2
  2410. package/dist/esm/utilities/math/polyline/calculateAreaOfPoints.js +0 -11
  2411. package/dist/esm/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
  2412. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -9
  2413. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js +0 -154
  2414. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
  2415. package/dist/esm/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js.map +0 -1
  2416. package/dist/esm/utilities/math/polyline/index.js.map +0 -1
  2417. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js.map +0 -1
  2418. package/dist/esm/utilities/math/polyline/pointCanProjectOnLine.js.map +0 -1
  2419. package/dist/esm/utilities/math/polyline/pointInPolyline.d.ts +0 -2
  2420. package/dist/esm/utilities/math/polyline/pointInPolyline.js +0 -12
  2421. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +0 -1
  2422. package/dist/esm/utilities/math/polyline/pointsAreWithinCloseContourProximity.js.map +0 -1
  2423. package/dist/esm/utilities/math/rectangle/distanceToPoint.js.map +0 -1
  2424. package/dist/esm/utilities/math/rectangle/index.js.map +0 -1
  2425. package/dist/esm/utilities/math/sphere/index.js.map +0 -1
  2426. package/dist/esm/utilities/math/sphere/pointInSphere.js.map +0 -1
  2427. package/dist/esm/utilities/math/vec2/findClosestPoint.js.map +0 -1
  2428. package/dist/esm/utilities/math/vec2/index.js.map +0 -1
  2429. package/dist/esm/utilities/math/vec2/liangBarksyClip.js.map +0 -1
  2430. package/dist/esm/utilities/orientation/getOrientationStringLPS.js.map +0 -1
  2431. package/dist/esm/utilities/orientation/index.js.map +0 -1
  2432. package/dist/esm/utilities/orientation/invertOrientationStringLPS.js.map +0 -1
  2433. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js.map +0 -1
  2434. package/dist/esm/utilities/planar/filterAnnotationsWithinSlice.js.map +0 -1
  2435. package/dist/esm/utilities/planar/getPointInLineOfSightWithCriteria.js.map +0 -1
  2436. package/dist/esm/utilities/planar/getWorldWidthAndHeightFromCorners.js.map +0 -1
  2437. package/dist/esm/utilities/planar/getWorldWidthAndHeightFromTwoPoints.js.map +0 -1
  2438. package/dist/esm/utilities/planar/index.js.map +0 -1
  2439. package/dist/esm/utilities/planarFreehandROITool/index.js.map +0 -1
  2440. package/dist/esm/utilities/planarFreehandROITool/interpolateAnnotation.d.ts +0 -3
  2441. package/dist/esm/utilities/planarFreehandROITool/interpolateAnnotation.js +0 -40
  2442. package/dist/esm/utilities/planarFreehandROITool/interpolateAnnotation.js.map +0 -1
  2443. package/dist/esm/utilities/planarFreehandROITool/interpolatePoints.d.ts +0 -3
  2444. package/dist/esm/utilities/planarFreehandROITool/interpolatePoints.js +0 -88
  2445. package/dist/esm/utilities/planarFreehandROITool/interpolatePoints.js.map +0 -1
  2446. package/dist/esm/utilities/planarFreehandROITool/interpolation/algorithms/bspline.js.map +0 -1
  2447. package/dist/esm/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.js.map +0 -1
  2448. package/dist/esm/utilities/pointInShapeCallback.js.map +0 -1
  2449. package/dist/esm/utilities/pointInSurroundingSphereCallback.js.map +0 -1
  2450. package/dist/esm/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.js.map +0 -1
  2451. package/dist/esm/utilities/rectangleROITool/index.js.map +0 -1
  2452. package/dist/esm/utilities/roundNumber.d.ts +0 -2
  2453. package/dist/esm/utilities/roundNumber.js +0 -25
  2454. package/dist/esm/utilities/roundNumber.js.map +0 -1
  2455. package/dist/esm/utilities/scroll.js.map +0 -1
  2456. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js.map +0 -1
  2457. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js.map +0 -1
  2458. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js.map +0 -1
  2459. package/dist/esm/utilities/segmentation/createMergedLabelmapForIndex.js.map +0 -1
  2460. package/dist/esm/utilities/segmentation/floodFill.js.map +0 -1
  2461. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js.map +0 -1
  2462. package/dist/esm/utilities/segmentation/index.js.map +0 -1
  2463. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js.map +0 -1
  2464. package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js.map +0 -1
  2465. package/dist/esm/utilities/segmentation/thresholdSegmentationByRange.js.map +0 -1
  2466. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js.map +0 -1
  2467. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js.map +0 -1
  2468. package/dist/esm/utilities/segmentation/utilities.js.map +0 -1
  2469. package/dist/esm/utilities/stackPrefetch/index.js.map +0 -1
  2470. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +0 -1
  2471. package/dist/esm/utilities/stackPrefetch/state.js.map +0 -1
  2472. package/dist/esm/utilities/throttle.js.map +0 -1
  2473. package/dist/esm/utilities/touch/index.js.map +0 -1
  2474. package/dist/esm/utilities/triggerAnnotationRender.js.map +0 -1
  2475. package/dist/esm/utilities/triggerAnnotationRenderForViewportIds.js.map +0 -1
  2476. package/dist/esm/utilities/viewport/index.js.map +0 -1
  2477. package/dist/esm/utilities/viewport/isViewportPreScaled.js.map +0 -1
  2478. package/dist/esm/utilities/viewport/jumpToSlice.js.map +0 -1
  2479. package/dist/esm/utilities/viewport/jumpToWorld.js.map +0 -1
  2480. package/dist/esm/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js.map +0 -1
  2481. package/dist/esm/utilities/viewportFilters/filterViewportsWithParallelNormals.js.map +0 -1
  2482. package/dist/esm/utilities/viewportFilters/filterViewportsWithSameOrientation.js.map +0 -1
  2483. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +0 -1
  2484. package/dist/esm/utilities/viewportFilters/getViewportIdsWithToolToRender.js.map +0 -1
  2485. package/dist/esm/utilities/viewportFilters/index.js.map +0 -1
  2486. package/dist/umd/index.js.LICENSE.txt +0 -1
  2487. package/src/constants/COLOR_LUT.ts +0 -262
  2488. package/src/constants/index.ts +0 -3
  2489. package/src/cursors/ImageMouseCursor.ts +0 -39
  2490. package/src/cursors/MouseCursor.ts +0 -114
  2491. package/src/cursors/SVGCursorDescriptor.ts +0 -460
  2492. package/src/cursors/SVGMouseCursor.ts +0 -145
  2493. package/src/cursors/elementCursor.ts +0 -69
  2494. package/src/cursors/index.ts +0 -24
  2495. package/src/cursors/setCursorForElement.ts +0 -33
  2496. package/src/drawingSvg/_getHash.ts +0 -9
  2497. package/src/drawingSvg/clearByToolType.ts +0 -26
  2498. package/src/drawingSvg/draw.ts +0 -16
  2499. package/src/drawingSvg/drawArrow.ts +0 -82
  2500. package/src/drawingSvg/drawCircle.ts +0 -76
  2501. package/src/drawingSvg/drawEllipse.ts +0 -71
  2502. package/src/drawingSvg/drawHandles.ts +0 -91
  2503. package/src/drawingSvg/drawLine.ts +0 -70
  2504. package/src/drawingSvg/drawLink.ts +0 -76
  2505. package/src/drawingSvg/drawLinkedTextBox.ts +0 -64
  2506. package/src/drawingSvg/drawPolyline.ts +0 -80
  2507. package/src/drawingSvg/drawRect.ts +0 -70
  2508. package/src/drawingSvg/drawTextBox.ts +0 -213
  2509. package/src/drawingSvg/getSvgDrawingHelper.ts +0 -98
  2510. package/src/drawingSvg/index.ts +0 -27
  2511. package/src/drawingSvg/setAttributesIfNecessary.ts +0 -13
  2512. package/src/drawingSvg/setNewAttributesIfValid.ts +0 -10
  2513. package/src/enums/AnnotationStyleStates.ts +0 -22
  2514. package/src/enums/Events.ts +0 -255
  2515. package/src/enums/SegmentationRepresentations.ts +0 -12
  2516. package/src/enums/ToolBindings.ts +0 -37
  2517. package/src/enums/ToolModes.ts +0 -31
  2518. package/src/enums/Touch.ts +0 -8
  2519. package/src/enums/index.js +0 -16
  2520. package/src/eventDispatchers/annotationModifiedEventDispatcher.ts +0 -41
  2521. package/src/eventDispatchers/cameraModifiedEventDispatcher.ts +0 -41
  2522. package/src/eventDispatchers/imageRenderedEventDispatcher.ts +0 -37
  2523. package/src/eventDispatchers/imageSpacingCalibratedEventDispatcher.ts +0 -50
  2524. package/src/eventDispatchers/index.js +0 -15
  2525. package/src/eventDispatchers/keyboardEventHandlers/index.js +0 -4
  2526. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +0 -29
  2527. package/src/eventDispatchers/keyboardEventHandlers/keyUp.ts +0 -33
  2528. package/src/eventDispatchers/keyboardToolEventDispatcher.ts +0 -28
  2529. package/src/eventDispatchers/mouseEventHandlers/index.js +0 -19
  2530. package/src/eventDispatchers/mouseEventHandlers/mouseClick.ts +0 -13
  2531. package/src/eventDispatchers/mouseEventHandlers/mouseDoubleClick.ts +0 -13
  2532. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +0 -196
  2533. package/src/eventDispatchers/mouseEventHandlers/mouseDownActivate.ts +0 -35
  2534. package/src/eventDispatchers/mouseEventHandlers/mouseDrag.ts +0 -25
  2535. package/src/eventDispatchers/mouseEventHandlers/mouseMove.ts +0 -70
  2536. package/src/eventDispatchers/mouseEventHandlers/mouseUp.ts +0 -9
  2537. package/src/eventDispatchers/mouseEventHandlers/mouseWheel.ts +0 -13
  2538. package/src/eventDispatchers/mouseToolEventDispatcher.ts +0 -64
  2539. package/src/eventDispatchers/shared/customCallbackHandler.ts +0 -73
  2540. package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +0 -59
  2541. package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +0 -63
  2542. package/src/eventDispatchers/shared/getActiveToolForTouchEvent.ts +0 -67
  2543. package/src/eventDispatchers/shared/getMouseModifier.ts +0 -40
  2544. package/src/eventDispatchers/shared/getToolsWithModesForMouseEvent.ts +0 -56
  2545. package/src/eventDispatchers/shared/getToolsWithModesForTouchEvent.ts +0 -54
  2546. package/src/eventDispatchers/touchEventHandlers/index.js +0 -15
  2547. package/src/eventDispatchers/touchEventHandlers/touchDrag.ts +0 -23
  2548. package/src/eventDispatchers/touchEventHandlers/touchEnd.ts +0 -9
  2549. package/src/eventDispatchers/touchEventHandlers/touchPress.ts +0 -13
  2550. package/src/eventDispatchers/touchEventHandlers/touchStart.ts +0 -174
  2551. package/src/eventDispatchers/touchEventHandlers/touchStartActivate.ts +0 -36
  2552. package/src/eventDispatchers/touchEventHandlers/touchTap.ts +0 -9
  2553. package/src/eventDispatchers/touchToolEventDispatcher.ts +0 -51
  2554. package/src/eventListeners/annotations/annotationModifiedListener.ts +0 -22
  2555. package/src/eventListeners/annotations/annotationSelectionListener.ts +0 -29
  2556. package/src/eventListeners/annotations/index.ts +0 -4
  2557. package/src/eventListeners/index.ts +0 -28
  2558. package/src/eventListeners/keyboard/index.ts +0 -16
  2559. package/src/eventListeners/keyboard/keyDownListener.ts +0 -112
  2560. package/src/eventListeners/mouse/getMouseEventPoints.ts +0 -66
  2561. package/src/eventListeners/mouse/index.ts +0 -55
  2562. package/src/eventListeners/mouse/mouseDoubleClickListener.ts +0 -55
  2563. package/src/eventListeners/mouse/mouseDownListener.ts +0 -537
  2564. package/src/eventListeners/mouse/mouseMoveListener.ts +0 -33
  2565. package/src/eventListeners/segmentation/index.ts +0 -11
  2566. package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +0 -61
  2567. package/src/eventListeners/segmentation/segmentationModifiedEventListener.ts +0 -32
  2568. package/src/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.ts +0 -15
  2569. package/src/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.ts +0 -16
  2570. package/src/eventListeners/touch/getTouchEventPoints.ts +0 -75
  2571. package/src/eventListeners/touch/index.ts +0 -37
  2572. package/src/eventListeners/touch/preventGhostClick.js +0 -72
  2573. package/src/eventListeners/touch/touchStartListener.ts +0 -509
  2574. package/src/eventListeners/wheel/index.ts +0 -27
  2575. package/src/eventListeners/wheel/normalizeWheel.ts +0 -69
  2576. package/src/eventListeners/wheel/wheelListener.ts +0 -51
  2577. package/src/index.ts +0 -135
  2578. package/src/init.ts +0 -187
  2579. package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +0 -399
  2580. package/src/stateManagement/annotation/annotationLocking.ts +0 -178
  2581. package/src/stateManagement/annotation/annotationSelection.ts +0 -163
  2582. package/src/stateManagement/annotation/annotationState.ts +0 -180
  2583. package/src/stateManagement/annotation/annotationVisibility.ts +0 -156
  2584. package/src/stateManagement/annotation/config/ToolStyle.ts +0 -266
  2585. package/src/stateManagement/annotation/config/getFont.ts +0 -36
  2586. package/src/stateManagement/annotation/config/getState.ts +0 -30
  2587. package/src/stateManagement/annotation/config/helpers.ts +0 -59
  2588. package/src/stateManagement/annotation/config/index.ts +0 -5
  2589. package/src/stateManagement/annotation/helpers/state.ts +0 -83
  2590. package/src/stateManagement/annotation/index.ts +0 -15
  2591. package/src/stateManagement/index.js +0 -40
  2592. package/src/stateManagement/segmentation/SegmentationStateManager.ts +0 -513
  2593. package/src/stateManagement/segmentation/activeSegmentation.ts +0 -60
  2594. package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +0 -77
  2595. package/src/stateManagement/segmentation/addSegmentations.ts +0 -27
  2596. package/src/stateManagement/segmentation/config/index.ts +0 -29
  2597. package/src/stateManagement/segmentation/config/segmentationColor.ts +0 -133
  2598. package/src/stateManagement/segmentation/config/segmentationConfig.ts +0 -195
  2599. package/src/stateManagement/segmentation/config/segmentationVisibility.ts +0 -194
  2600. package/src/stateManagement/segmentation/helpers/index.ts +0 -3
  2601. package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +0 -35
  2602. package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +0 -41
  2603. package/src/stateManagement/segmentation/index.ts +0 -22
  2604. package/src/stateManagement/segmentation/removeSegmentationsFromToolGroup.ts +0 -90
  2605. package/src/stateManagement/segmentation/segmentIndex.ts +0 -38
  2606. package/src/stateManagement/segmentation/segmentLocking.ts +0 -72
  2607. package/src/stateManagement/segmentation/segmentationState.ts +0 -430
  2608. package/src/stateManagement/segmentation/triggerSegmentationEvents.ts +0 -157
  2609. package/src/store/SynchronizerManager/Synchronizer.ts +0 -367
  2610. package/src/store/SynchronizerManager/createSynchronizer.ts +0 -44
  2611. package/src/store/SynchronizerManager/destroy.ts +0 -14
  2612. package/src/store/SynchronizerManager/destroySynchronizer.ts +0 -25
  2613. package/src/store/SynchronizerManager/getAllSynchronizers.ts +0 -12
  2614. package/src/store/SynchronizerManager/getSynchronizer.ts +0 -13
  2615. package/src/store/SynchronizerManager/getSynchronizersForViewport.ts +0 -44
  2616. package/src/store/SynchronizerManager/index.js +0 -15
  2617. package/src/store/ToolGroupManager/ToolGroup.ts +0 -706
  2618. package/src/store/ToolGroupManager/createToolGroup.ts +0 -33
  2619. package/src/store/ToolGroupManager/destroy.ts +0 -24
  2620. package/src/store/ToolGroupManager/destroyToolGroup.ts +0 -26
  2621. package/src/store/ToolGroupManager/getAllToolGroups.ts +0 -12
  2622. package/src/store/ToolGroupManager/getToolGroup.ts +0 -14
  2623. package/src/store/ToolGroupManager/getToolGroupForViewport.ts +0 -44
  2624. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +0 -35
  2625. package/src/store/ToolGroupManager/index.ts +0 -17
  2626. package/src/store/addEnabledElement.ts +0 -137
  2627. package/src/store/addTool.ts +0 -56
  2628. package/src/store/cancelActiveManipulations.ts +0 -30
  2629. package/src/store/filterMoveableAnnotationTools.ts +0 -61
  2630. package/src/store/filterToolsWithAnnotationsForElement.ts +0 -51
  2631. package/src/store/filterToolsWithMoveableHandles.ts +0 -51
  2632. package/src/store/index.ts +0 -29
  2633. package/src/store/removeEnabledElement.ts +0 -132
  2634. package/src/store/state.ts +0 -57
  2635. package/src/store/svgNodeCache.ts +0 -7
  2636. package/src/synchronizers/callbacks/areViewportsCoplanar .ts +0 -12
  2637. package/src/synchronizers/callbacks/cameraSyncCallback.ts +0 -33
  2638. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +0 -152
  2639. package/src/synchronizers/callbacks/voiSyncCallback.ts +0 -55
  2640. package/src/synchronizers/callbacks/zoomPanSyncCallback.ts +0 -43
  2641. package/src/synchronizers/index.ts +0 -11
  2642. package/src/synchronizers/synchronizers/createCameraPositionSynchronizer.ts +0 -25
  2643. package/src/synchronizers/synchronizers/createStackImageSynchronizer.ts +0 -25
  2644. package/src/synchronizers/synchronizers/createVOISynchronizer.ts +0 -33
  2645. package/src/synchronizers/synchronizers/createZoomPanSynchronizer.ts +0 -25
  2646. package/src/synchronizers/synchronizers/index.ts +0 -11
  2647. package/src/tools/CrosshairsTool.ts +0 -2707
  2648. package/src/tools/MIPJumpToClickTool.ts +0 -109
  2649. package/src/tools/MagnifyTool.ts +0 -319
  2650. package/src/tools/PanTool.ts +0 -58
  2651. package/src/tools/PlanarRotateTool.ts +0 -79
  2652. package/src/tools/ReferenceCursors.ts +0 -522
  2653. package/src/tools/ReferenceLinesTool.ts +0 -279
  2654. package/src/tools/ScaleOverlayTool.ts +0 -687
  2655. package/src/tools/StackScrollTool.ts +0 -97
  2656. package/src/tools/StackScrollToolMouseWheelTool.ts +0 -49
  2657. package/src/tools/TrackballRotateTool.ts +0 -141
  2658. package/src/tools/VolumeRotateMouseWheelTool.ts +0 -86
  2659. package/src/tools/WindowLevelTool.ts +0 -281
  2660. package/src/tools/ZoomTool.ts +0 -295
  2661. package/src/tools/annotation/AngleTool.ts +0 -860
  2662. package/src/tools/annotation/ArrowAnnotateTool.ts +0 -849
  2663. package/src/tools/annotation/BidirectionalTool.ts +0 -1369
  2664. package/src/tools/annotation/CircleROITool.ts +0 -1098
  2665. package/src/tools/annotation/CobbAngleTool.ts +0 -905
  2666. package/src/tools/annotation/DragProbeTool.ts +0 -249
  2667. package/src/tools/annotation/EllipticalROITool.ts +0 -1244
  2668. package/src/tools/annotation/LengthTool.ts +0 -881
  2669. package/src/tools/annotation/PlanarFreehandROITool.ts +0 -968
  2670. package/src/tools/annotation/ProbeTool.ts +0 -673
  2671. package/src/tools/annotation/RectangleROITool.ts +0 -1040
  2672. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +0 -491
  2673. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +0 -493
  2674. package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +0 -331
  2675. package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +0 -74
  2676. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +0 -615
  2677. package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +0 -86
  2678. package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +0 -407
  2679. package/src/tools/base/AnnotationDisplayTool.ts +0 -175
  2680. package/src/tools/base/AnnotationTool.ts +0 -360
  2681. package/src/tools/base/BaseTool.ts +0 -219
  2682. package/src/tools/base/index.ts +0 -5
  2683. package/src/tools/displayTools/Contour/addContourSetsToElement.ts +0 -113
  2684. package/src/tools/displayTools/Contour/addOrUpdateContourSets.ts +0 -28
  2685. package/src/tools/displayTools/Contour/contourConfig.ts +0 -18
  2686. package/src/tools/displayTools/Contour/contourConfigCache.ts +0 -37
  2687. package/src/tools/displayTools/Contour/contourDisplay.ts +0 -175
  2688. package/src/tools/displayTools/Contour/index.ts +0 -3
  2689. package/src/tools/displayTools/Contour/removeContourFromElement.ts +0 -35
  2690. package/src/tools/displayTools/Contour/updateContourSets.ts +0 -155
  2691. package/src/tools/displayTools/Contour/utils.ts +0 -116
  2692. package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +0 -57
  2693. package/src/tools/displayTools/Labelmap/index.ts +0 -4
  2694. package/src/tools/displayTools/Labelmap/labelmapConfig.ts +0 -37
  2695. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +0 -508
  2696. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +0 -32
  2697. package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +0 -30
  2698. package/src/tools/displayTools/SegmentationDisplayTool.ts +0 -192
  2699. package/src/tools/index.ts +0 -85
  2700. package/src/tools/segmentation/BrushTool.ts +0 -497
  2701. package/src/tools/segmentation/CircleScissorsTool.ts +0 -365
  2702. package/src/tools/segmentation/PaintFillTool.ts +0 -377
  2703. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +0 -469
  2704. package/src/tools/segmentation/RectangleROIThresholdTool.ts +0 -280
  2705. package/src/tools/segmentation/RectangleScissorsTool.ts +0 -382
  2706. package/src/tools/segmentation/SphereScissorsTool.ts +0 -368
  2707. package/src/tools/segmentation/strategies/eraseCircle.ts +0 -30
  2708. package/src/tools/segmentation/strategies/eraseRectangle.ts +0 -77
  2709. package/src/tools/segmentation/strategies/eraseSphere.ts +0 -29
  2710. package/src/tools/segmentation/strategies/fillCircle.ts +0 -169
  2711. package/src/tools/segmentation/strategies/fillRectangle.ts +0 -106
  2712. package/src/tools/segmentation/strategies/fillSphere.ts +0 -136
  2713. package/src/tools/segmentation/strategies/index.ts +0 -9
  2714. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +0 -16
  2715. package/src/types/AnnotationGroupSelector.ts +0 -7
  2716. package/src/types/AnnotationStyle.ts +0 -43
  2717. package/src/types/AnnotationTypes.ts +0 -109
  2718. package/src/types/BoundsIJK.ts +0 -5
  2719. package/src/types/CINETypes.ts +0 -38
  2720. package/src/types/CalculatorTypes.ts +0 -7
  2721. package/src/types/ContourTypes.ts +0 -34
  2722. package/src/types/CursorTypes.ts +0 -12
  2723. package/src/types/EventTypes.ts +0 -698
  2724. package/src/types/FloodFillTypes.ts +0 -19
  2725. package/src/types/IAnnotationManager.ts +0 -89
  2726. package/src/types/IDistance.ts +0 -16
  2727. package/src/types/IPoints.ts +0 -18
  2728. package/src/types/ISetToolModeOptions.ts +0 -29
  2729. package/src/types/ISynchronizerEventHandler.ts +0 -12
  2730. package/src/types/IToolClassReference.ts +0 -5
  2731. package/src/types/IToolGroup.ts +0 -78
  2732. package/src/types/ITouchPoints.ts +0 -14
  2733. package/src/types/InteractionTypes.ts +0 -6
  2734. package/src/types/InternalToolTypes.ts +0 -19
  2735. package/src/types/JumpToSliceOptions.ts +0 -7
  2736. package/src/types/LabelmapTypes.ts +0 -41
  2737. package/src/types/PlanarBoundingBox.ts +0 -8
  2738. package/src/types/SVGDrawingHelper.ts +0 -10
  2739. package/src/types/ScrollOptions.ts +0 -9
  2740. package/src/types/SegmentationStateTypes.ts +0 -262
  2741. package/src/types/ToolHandle.ts +0 -26
  2742. package/src/types/ToolProps.ts +0 -22
  2743. package/src/types/ToolSpecificAnnotationTypes.ts +0 -312
  2744. package/src/types/index.ts +0 -125
  2745. package/src/utilities/boundingBox/extend2DBoundingBoxInViewAxis.ts +0 -29
  2746. package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +0 -57
  2747. package/src/utilities/boundingBox/index.ts +0 -4
  2748. package/src/utilities/calibrateImageSpacing.ts +0 -43
  2749. package/src/utilities/cine/events.ts +0 -9
  2750. package/src/utilities/cine/index.ts +0 -5
  2751. package/src/utilities/cine/playClip.ts +0 -455
  2752. package/src/utilities/cine/state.ts +0 -18
  2753. package/src/utilities/clip.js +0 -30
  2754. package/src/utilities/debounce.js +0 -217
  2755. package/src/utilities/drawing/getTextBoxCoordsCanvas.ts +0 -45
  2756. package/src/utilities/drawing/index.ts +0 -3
  2757. package/src/utilities/dynamicVolume/generateImageFromTimeData.ts +0 -68
  2758. package/src/utilities/dynamicVolume/getDataInTime.ts +0 -113
  2759. package/src/utilities/dynamicVolume/index.ts +0 -5
  2760. package/src/utilities/getAnnotationNearPoint.ts +0 -130
  2761. package/src/utilities/getCalibratedUnits.ts +0 -76
  2762. package/src/utilities/getModalityUnit.ts +0 -35
  2763. package/src/utilities/getToolsWithModesForElement.ts +0 -52
  2764. package/src/utilities/index.ts +0 -70
  2765. package/src/utilities/isObject.js +0 -29
  2766. package/src/utilities/math/angle/angleBetweenLines.ts +0 -31
  2767. package/src/utilities/math/basic/BasicStatsCalculator.ts +0 -60
  2768. package/src/utilities/math/basic/Calculator.ts +0 -8
  2769. package/src/utilities/math/basic/index.ts +0 -4
  2770. package/src/utilities/math/circle/_types.ts +0 -6
  2771. package/src/utilities/math/circle/getCanvasCircleCorners.ts +0 -23
  2772. package/src/utilities/math/circle/getCanvasCircleRadius.ts +0 -16
  2773. package/src/utilities/math/circle/index.ts +0 -4
  2774. package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +0 -26
  2775. package/src/utilities/math/ellipse/index.ts +0 -4
  2776. package/src/utilities/math/ellipse/pointInEllipse.ts +0 -38
  2777. package/src/utilities/math/ellipse/pointInEllipsoidWithConstraint.ts +0 -35
  2778. package/src/utilities/math/index.ts +0 -17
  2779. package/src/utilities/math/line/distanceToPoint.ts +0 -24
  2780. package/src/utilities/math/line/distanceToPointSquared.ts +0 -44
  2781. package/src/utilities/math/line/index.ts +0 -5
  2782. package/src/utilities/math/line/intersectLine.ts +0 -92
  2783. package/src/utilities/math/midPoint.ts +0 -26
  2784. package/src/utilities/math/point/distanceToPoint.ts +0 -22
  2785. package/src/utilities/math/point/index.ts +0 -3
  2786. package/src/utilities/math/polyline/addCanvasPointsToArray.ts +0 -62
  2787. package/src/utilities/math/polyline/calculateAreaOfPoints.ts +0 -23
  2788. package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +0 -275
  2789. package/src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts +0 -99
  2790. package/src/utilities/math/polyline/index.ts +0 -19
  2791. package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +0 -37
  2792. package/src/utilities/math/polyline/pointCanProjectOnLine.ts +0 -57
  2793. package/src/utilities/math/polyline/pointInPolyline.ts +0 -19
  2794. package/src/utilities/math/polyline/pointsAreWithinCloseContourProximity.ts +0 -15
  2795. package/src/utilities/math/rectangle/distanceToPoint.ts +0 -82
  2796. package/src/utilities/math/rectangle/index.ts +0 -3
  2797. package/src/utilities/math/sphere/index.ts +0 -3
  2798. package/src/utilities/math/sphere/pointInSphere.ts +0 -31
  2799. package/src/utilities/math/vec2/findClosestPoint.ts +0 -40
  2800. package/src/utilities/math/vec2/index.ts +0 -4
  2801. package/src/utilities/math/vec2/liangBarksyClip.ts +0 -94
  2802. package/src/utilities/orientation/getOrientationStringLPS.ts +0 -52
  2803. package/src/utilities/orientation/index.ts +0 -4
  2804. package/src/utilities/orientation/invertOrientationStringLPS.ts +0 -21
  2805. package/src/utilities/planar/filterAnnotationsForDisplay.ts +0 -68
  2806. package/src/utilities/planar/filterAnnotationsWithinSlice.ts +0 -111
  2807. package/src/utilities/planar/getPointInLineOfSightWithCriteria.ts +0 -104
  2808. package/src/utilities/planar/getWorldWidthAndHeightFromCorners.ts +0 -51
  2809. package/src/utilities/planar/getWorldWidthAndHeightFromTwoPoints.ts +0 -51
  2810. package/src/utilities/planar/index.ts +0 -18
  2811. package/src/utilities/planarFreehandROITool/index.ts +0 -7
  2812. package/src/utilities/planarFreehandROITool/interpolateAnnotation.ts +0 -87
  2813. package/src/utilities/planarFreehandROITool/interpolatePoints.ts +0 -214
  2814. package/src/utilities/planarFreehandROITool/interpolation/algorithms/bspline.ts +0 -55
  2815. package/src/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts +0 -90
  2816. package/src/utilities/pointInShapeCallback.ts +0 -150
  2817. package/src/utilities/pointInSurroundingSphereCallback.ts +0 -188
  2818. package/src/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.ts +0 -76
  2819. package/src/utilities/rectangleROITool/index.ts +0 -3
  2820. package/src/utilities/roundNumber.ts +0 -38
  2821. package/src/utilities/scroll.ts +0 -106
  2822. package/src/utilities/segmentation/brushSizeForToolGroup.ts +0 -90
  2823. package/src/utilities/segmentation/brushThresholdForToolGroup.ts +0 -65
  2824. package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +0 -74
  2825. package/src/utilities/segmentation/createMergedLabelmapForIndex.ts +0 -65
  2826. package/src/utilities/segmentation/floodFill.ts +0 -194
  2827. package/src/utilities/segmentation/getDefaultRepresentationConfig.ts +0 -20
  2828. package/src/utilities/segmentation/index.ts +0 -33
  2829. package/src/utilities/segmentation/isValidRepresentationConfig.ts +0 -22
  2830. package/src/utilities/segmentation/rectangleROIThresholdVolumeByRange.ts +0 -91
  2831. package/src/utilities/segmentation/thresholdSegmentationByRange.ts +0 -129
  2832. package/src/utilities/segmentation/thresholdVolumeByRange.ts +0 -152
  2833. package/src/utilities/segmentation/triggerSegmentationRender.ts +0 -206
  2834. package/src/utilities/segmentation/utilities.ts +0 -123
  2835. package/src/utilities/stackPrefetch/index.ts +0 -8
  2836. package/src/utilities/stackPrefetch/stackPrefetch.ts +0 -411
  2837. package/src/utilities/stackPrefetch/state.ts +0 -17
  2838. package/src/utilities/throttle.js +0 -69
  2839. package/src/utilities/touch/index.ts +0 -246
  2840. package/src/utilities/triggerAnnotationRender.ts +0 -237
  2841. package/src/utilities/triggerAnnotationRenderForViewportIds.ts +0 -18
  2842. package/src/utilities/viewport/index.ts +0 -5
  2843. package/src/utilities/viewport/isViewportPreScaled.ts +0 -24
  2844. package/src/utilities/viewport/jumpToSlice.ts +0 -73
  2845. package/src/utilities/viewport/jumpToWorld.ts +0 -58
  2846. package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +0 -28
  2847. package/src/utilities/viewportFilters/filterViewportsWithParallelNormals.ts +0 -26
  2848. package/src/utilities/viewportFilters/filterViewportsWithSameOrientation.ts +0 -15
  2849. package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +0 -72
  2850. package/src/utilities/viewportFilters/getViewportIdsWithToolToRender.ts +0 -45
  2851. package/src/utilities/viewportFilters/index.ts +0 -11
  2852. /package/dist/{cjs/eventDispatchers/annotationModifiedEventDispatcher.d.ts → esm/eventDispatchers/annotationInterpolationEventDispatcher.d.ts} +0 -0
  2853. /package/dist/{cjs/eventDispatchers/cameraModifiedEventDispatcher.d.ts → esm/eventDispatchers/cameraResetEventDispatcher.d.ts} +0 -0
  2854. /package/dist/{cjs/eventDispatchers/imageRenderedEventDispatcher.d.ts → esm/eventListeners/segmentation/imageChangeEventListener.d.ts} +0 -0
  2855. /package/dist/{cjs/tools/displayTools/Contour/removeContourFromElement.d.ts → esm/tools/displayTools/Surface/removeSurfaceFromElement.d.ts} +0 -0
package/dist/umd/index.js CHANGED
@@ -1,3 +1,2 @@
1
- /*! For license information please see index.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("gl-matrix"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder")):"function"==typeof define&&define.amd?define(["@cornerstonejs/core","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Common/Core/CellArray","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Common/Core/DataArray","@kitware/vtk.js/Filters/General/AppendPolyData","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Rendering/Core/Mapper","gl-matrix","@kitware/vtk.js/Common/Core/Math","@kitware/vtk.js/Common/Core/MatrixBuilder"],t):"object"==typeof exports?exports.cornerstoneTools3D=t(require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("gl-matrix"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder")):e.cornerstoneTools3D=t(e.cornerstone3D,e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Common/Core/CellArray"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Common/Core/DataArray"],e["@kitware/vtk.js/Filters/General/AppendPolyData"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e.window,e["@kitware/vtk.js/Common/Core/Math"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"])}(self,(function(e,t,n,r,o,a,i,l,c,s,d,u,v){return function(){var f={907:function(e,t,n){e=n.nmd(e);var r="__lodash_hash_undefined__",o=9007199254740991,a="[object Arguments]",i="[object Boolean]",l="[object Date]",c="[object Function]",s="[object GeneratorFunction]",d="[object Map]",u="[object Number]",v="[object Object]",f="[object Promise]",g="[object RegExp]",h="[object Set]",p="[object String]",m="[object Symbol]",w="[object WeakMap]",E="[object ArrayBuffer]",y="[object DataView]",I="[object Float32Array]",b="[object Float64Array]",C="[object Int8Array]",T="[object Int16Array]",_="[object Int32Array]",D="[object Uint8Array]",O="[object Uint8ClampedArray]",S="[object Uint16Array]",x="[object Uint32Array]",M=/\w*$/,k=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,P={};P[a]=P["[object Array]"]=P[E]=P[y]=P[i]=P[l]=P[I]=P[b]=P[C]=P[T]=P[_]=P[d]=P[u]=P[v]=P[g]=P[h]=P[p]=P[m]=P[D]=P[O]=P[S]=P[x]=!0,P["[object Error]"]=P[c]=P[w]=!1;var N="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,A="object"==typeof self&&self&&self.Object===Object&&self,L=N||A||Function("return this")(),U=t&&!t.nodeType&&t,V=U&&e&&!e.nodeType&&e,B=V&&V.exports===U;function j(e,t){return e.set(t[0],t[1]),e}function H(e,t){return e.add(t),e}function W(e,t,n,r){var o=-1,a=e?e.length:0;for(r&&a&&(n=e[++o]);++o<a;)n=t(n,e[o],o,e);return n}function F(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function G(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function q(e,t){return function(n){return e(t(n))}}function z(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var K,Y=Array.prototype,J=Function.prototype,$=Object.prototype,Z=L["__core-js_shared__"],X=(K=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+K:"",Q=J.toString,ee=$.hasOwnProperty,te=$.toString,ne=RegExp("^"+Q.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),re=B?L.Buffer:void 0,oe=L.Symbol,ae=L.Uint8Array,ie=q(Object.getPrototypeOf,Object),le=Object.create,ce=$.propertyIsEnumerable,se=Y.splice,de=Object.getOwnPropertySymbols,ue=re?re.isBuffer:void 0,ve=q(Object.keys,Object),fe=Le(L,"DataView"),ge=Le(L,"Map"),he=Le(L,"Promise"),pe=Le(L,"Set"),me=Le(L,"WeakMap"),we=Le(Object,"create"),Ee=He(fe),ye=He(ge),Ie=He(he),be=He(pe),Ce=He(me),Te=oe?oe.prototype:void 0,_e=Te?Te.valueOf:void 0;function De(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Oe(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Se(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function xe(e){this.__data__=new Oe(e)}function Me(e,t,n){var r=e[t];ee.call(e,t)&&We(r,n)&&(void 0!==n||t in e)||(e[t]=n)}function ke(e,t){for(var n=e.length;n--;)if(We(e[n][0],t))return n;return-1}function Re(e,t,n,r,o,f,w){var k;if(r&&(k=f?r(e,o,f,w):r(e)),void 0!==k)return k;if(!Ke(e))return e;var R=Fe(e);if(R){if(k=function(e){var t=e.length,n=e.constructor(t);return t&&"string"==typeof e[0]&&ee.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!t)return function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}(e,k)}else{var N=Ve(e),A=N==c||N==s;if(qe(e))return function(e,t){if(t)return e.slice();var n=new e.constructor(e.length);return e.copy(n),n}(e,t);if(N==v||N==a||A&&!f){if(F(e))return f?e:{};if(k=function(e){return"function"!=typeof e.constructor||je(e)?{}:Ke(t=ie(e))?le(t):{};var t}(A?{}:e),!t)return function(e,t){return Ne(e,Ue(e),t)}(e,function(e,t){return e&&Ne(t,Ye(t),e)}(k,e))}else{if(!P[N])return f?e:{};k=function(e,t,n,r){var o,a=e.constructor;switch(t){case E:return Pe(e);case i:case l:return new a(+e);case y:return function(e,t){var n=t?Pe(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,r);case I:case b:case C:case T:case _:case D:case O:case S:case x:return function(e,t){var n=t?Pe(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(e,r);case d:return function(e,t,n){return W(t?n(G(e),!0):G(e),j,new e.constructor)}(e,r,n);case u:case p:return new a(e);case g:return function(e){var t=new e.constructor(e.source,M.exec(e));return t.lastIndex=e.lastIndex,t}(e);case h:return function(e,t,n){return W(t?n(z(e),!0):z(e),H,new e.constructor)}(e,r,n);case m:return o=e,_e?Object(_e.call(o)):{}}}(e,N,Re,t)}}w||(w=new xe);var L=w.get(e);if(L)return L;if(w.set(e,k),!R)var U=n?function(e){return function(e,t,n){var r=t(e);return Fe(e)?r:function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}(r,n(e))}(e,Ye,Ue)}(e):Ye(e);return function(e,t){for(var n=-1,r=e?e.length:0;++n<r&&!1!==t(e[n],n););}(U||e,(function(o,a){U&&(o=e[a=o]),Me(k,a,Re(o,t,n,r,a,e,w))})),k}function Pe(e){var t=new e.constructor(e.byteLength);return new ae(t).set(new ae(e)),t}function Ne(e,t,n,r){n||(n={});for(var o=-1,a=t.length;++o<a;){var i=t[o],l=r?r(n[i],e[i],i,n,e):void 0;Me(n,i,void 0===l?e[i]:l)}return n}function Ae(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function Le(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){return!(!Ke(e)||(t=e,X&&X in t))&&(ze(e)||F(e)?ne:k).test(He(e));var t}(n)?n:void 0}De.prototype.clear=function(){this.__data__=we?we(null):{}},De.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},De.prototype.get=function(e){var t=this.__data__;if(we){var n=t[e];return n===r?void 0:n}return ee.call(t,e)?t[e]:void 0},De.prototype.has=function(e){var t=this.__data__;return we?void 0!==t[e]:ee.call(t,e)},De.prototype.set=function(e,t){return this.__data__[e]=we&&void 0===t?r:t,this},Oe.prototype.clear=function(){this.__data__=[]},Oe.prototype.delete=function(e){var t=this.__data__,n=ke(t,e);return!(n<0||(n==t.length-1?t.pop():se.call(t,n,1),0))},Oe.prototype.get=function(e){var t=this.__data__,n=ke(t,e);return n<0?void 0:t[n][1]},Oe.prototype.has=function(e){return ke(this.__data__,e)>-1},Oe.prototype.set=function(e,t){var n=this.__data__,r=ke(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Se.prototype.clear=function(){this.__data__={hash:new De,map:new(ge||Oe),string:new De}},Se.prototype.delete=function(e){return Ae(this,e).delete(e)},Se.prototype.get=function(e){return Ae(this,e).get(e)},Se.prototype.has=function(e){return Ae(this,e).has(e)},Se.prototype.set=function(e,t){return Ae(this,e).set(e,t),this},xe.prototype.clear=function(){this.__data__=new Oe},xe.prototype.delete=function(e){return this.__data__.delete(e)},xe.prototype.get=function(e){return this.__data__.get(e)},xe.prototype.has=function(e){return this.__data__.has(e)},xe.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Oe){var r=n.__data__;if(!ge||r.length<199)return r.push([e,t]),this;n=this.__data__=new Se(r)}return n.set(e,t),this};var Ue=de?q(de,Object):function(){return[]},Ve=function(e){return te.call(e)};function Be(e,t){return!!(t=null==t?o:t)&&("number"==typeof e||R.test(e))&&e>-1&&e%1==0&&e<t}function je(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||$)}function He(e){if(null!=e){try{return Q.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function We(e,t){return e===t||e!=e&&t!=t}(fe&&Ve(new fe(new ArrayBuffer(1)))!=y||ge&&Ve(new ge)!=d||he&&Ve(he.resolve())!=f||pe&&Ve(new pe)!=h||me&&Ve(new me)!=w)&&(Ve=function(e){var t=te.call(e),n=t==v?e.constructor:void 0,r=n?He(n):void 0;if(r)switch(r){case Ee:return y;case ye:return d;case Ie:return f;case be:return h;case Ce:return w}return t});var Fe=Array.isArray;function Ge(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}(e.length)&&!ze(e)}var qe=ue||function(){return!1};function ze(e){var t=Ke(e)?te.call(e):"";return t==c||t==s}function Ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ye(e){return Ge(e)?function(e,t){var n=Fe(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&Ge(e)}(e)&&ee.call(e,"callee")&&(!ce.call(e,"callee")||te.call(e)==a)}(e)?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],r=n.length,o=!!r;for(var i in e)!t&&!ee.call(e,i)||o&&("length"==i||Be(i,r))||n.push(i);return n}(e):function(e){if(!je(e))return ve(e);var t=[];for(var n in Object(e))ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return Re(e,!0,!0)}},485:function(e,t,n){var r,o="__lodash_hash_undefined__",a=1/0,i="[object Function]",l="[object GeneratorFunction]",c="[object Symbol]",s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d=/^\w*$/,u=/^\./,v=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,f=/\\(\\)?/g,g=/^\[object .+?Constructor\]$/,h="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,m=h||p||Function("return this")(),w=Array.prototype,E=Function.prototype,y=Object.prototype,I=m["__core-js_shared__"],b=(r=/[^.]+$/.exec(I&&I.keys&&I.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",C=E.toString,T=y.hasOwnProperty,_=y.toString,D=RegExp("^"+C.call(T).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),O=m.Symbol,S=w.splice,x=V(m,"Map"),M=V(Object,"create"),k=O?O.prototype:void 0,R=k?k.toString:void 0;function P(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function N(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function A(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function L(e,t){for(var n,r,o=e.length;o--;)if((n=e[o][0])===(r=t)||n!=n&&r!=r)return o;return-1}function U(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){if(!F(e)||b&&b in e)return!1;var t=function(e){var t=F(e)?_.call(e):"";return t==i||t==l}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?D:g;return t.test(function(e){if(null!=e){try{return C.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}P.prototype.clear=function(){this.__data__=M?M(null):{}},P.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},P.prototype.get=function(e){var t=this.__data__;if(M){var n=t[e];return n===o?void 0:n}return T.call(t,e)?t[e]:void 0},P.prototype.has=function(e){var t=this.__data__;return M?void 0!==t[e]:T.call(t,e)},P.prototype.set=function(e,t){return this.__data__[e]=M&&void 0===t?o:t,this},N.prototype.clear=function(){this.__data__=[]},N.prototype.delete=function(e){var t=this.__data__,n=L(t,e);return!(n<0||(n==t.length-1?t.pop():S.call(t,n,1),0))},N.prototype.get=function(e){var t=this.__data__,n=L(t,e);return n<0?void 0:t[n][1]},N.prototype.has=function(e){return L(this.__data__,e)>-1},N.prototype.set=function(e,t){var n=this.__data__,r=L(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},A.prototype.clear=function(){this.__data__={hash:new P,map:new(x||N),string:new P}},A.prototype.delete=function(e){return U(this,e).delete(e)},A.prototype.get=function(e){return U(this,e).get(e)},A.prototype.has=function(e){return U(this,e).has(e)},A.prototype.set=function(e,t){return U(this,e).set(e,t),this};var B=H((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(G(e))return R?R.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}(t);var n=[];return u.test(e)&&n.push(""),e.replace(v,(function(e,t,r,o){n.push(r?o.replace(f,"$1"):t||e)})),n}));function j(e){if("string"==typeof e||G(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}function H(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i),i};return n.cache=new(H.Cache||A),n}H.Cache=A;var W=Array.isArray;function F(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function G(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&_.call(e)==c}e.exports=function(e,t,n){var r=null==e?void 0:function(e,t){var n;t=function(e,t){if(W(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!G(e))||d.test(e)||!s.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:W(n=t)?n:B(n);for(var r=0,o=t.length;null!=e&&r<o;)e=e[j(t[r++])];return r&&r==o?e:void 0}(e,t);return void 0===r?n:r}},396:function(e){"use strict";e.exports=r},785:function(e){"use strict";e.exports=i},807:function(e){"use strict";e.exports=u},847:function(e){"use strict";e.exports=v},348:function(e){"use strict";e.exports=o},441:function(e){"use strict";e.exports=t},70:function(e){"use strict";e.exports=a},127:function(e){"use strict";e.exports=l},474:function(e){"use strict";e.exports=c},795:function(e){"use strict";e.exports=n},610:function(e){"use strict";e.exports=s},953:function(t){"use strict";t.exports=e},976:function(e){"use strict";e.exports=d},609:function(e,t,n){var r=n(425).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},l="function"==typeof Symbol?Symbol:{},c=l.iterator||"@@iterator",s=l.asyncIterator||"@@asyncIterator",d=l.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function v(e,t,n,r){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),l=new S(r||[]);return i(a,"_invoke",{value:T(e,n,l)}),a}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=v;var g={};function h(){}function p(){}function m(){}var w={};u(w,c,(function(){return this}));var E=Object.getPrototypeOf,y=E&&E(E(x([])));y&&y!==n&&a.call(y,c)&&(w=y);var I=m.prototype=h.prototype=Object.create(w);function b(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(o,i,l,c){var s=f(e[o],e,i);if("throw"!==s.type){var d=s.arg,u=d.value;return u&&"object"==r(u)&&a.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,l,c)}),(function(e){n("throw",e,l,c)})):t.resolve(u).then((function(e){d.value=e,l(d)}),(function(e){return n("throw",e,l,c)}))}c(s.arg)}var o;i(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(a,a):a()}})}function T(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=_(i,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=f(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===g)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var o=f(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,g;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,g):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function D(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(D,this),this.reset(!0)}function x(e){if(e){var t=e[c];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(a.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:M}}function M(){return{value:void 0,done:!0}}return p.prototype=m,i(I,"constructor",{value:m,configurable:!0}),i(m,"constructor",{value:p,configurable:!0}),p.displayName=u(m,d,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,d,"GeneratorFunction")),e.prototype=Object.create(I),e},t.awrap=function(e){return{__await:e}},b(C.prototype),u(C.prototype,s,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new C(v(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(I),u(I,d,"Generator"),u(I,c,(function(){return this})),u(I,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=x,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var l=a.call(o,"catchLoc"),c=a.call(o,"finallyLoc");if(l&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:x(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),g}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},425:function(e){function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},841:function(e,t,n){var r=n(609)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},g={};function h(e){var t=g[e];if(void 0!==t)return t.exports;var n=g[e]={id:e,loaded:!1,exports:{}};return f[e](n,n.exports,h),n.loaded=!0,n.exports}h.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return h.d(t,{a:t}),t},h.d=function(e,t){for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),h.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},h.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},h.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e};var p={};return function(){"use strict";h.r(p),h.d(p,{AngleTool:function(){return Wg},AnnotationDisplayTool:function(){return Ks},AnnotationTool:function(){return $s},ArrowAnnotateTool:function(){return Bg},BaseTool:function(){return Ra},BidirectionalTool:function(){return Ag},BrushTool:function(){return Ss},CONSTANTS:function(){return u},CircleROITool:function(){return kg},CircleScissorsTool:function(){return ch},CobbAngleTool:function(){return zg},CrosshairsTool:function(){return mg},DragProbeTool:function(){return Wf},EllipticalROITool:function(){return _g},Enums:function(){return K},LengthTool:function(){return cg},MIPJumpToClickTool:function(){return og},MagnifyTool:function(){return Jg},PaintFillTool:function(){return gh},PanTool:function(){return Pf},PlanarFreehandROITool:function(){return ef},PlanarRotateTool:function(){return Zf},ProbeTool:function(){return Bf},RectangleROIStartEndThresholdTool:function(){return Id},RectangleROIThresholdTool:function(){return wd},RectangleROITool:function(){return pd},RectangleScissorsTool:function(){return ih},ReferenceCursors:function(){return Zg},ReferenceLines:function(){return yg},ReferenceLinesTool:function(){return yg},ScaleOverlayTool:function(){return eh},SegmentationDisplayTool:function(){return Li},SphereScissorsTool:function(){return dh},StackScrollMouseWheelTool:function(){return Qf},StackScrollTool:function(){return Yf},Synchronizer:function(){return ll},SynchronizerManager:function(){return c},ToolGroupManager:function(){return d},TrackballRotateTool:function(){return Af},Types:function(){return W},VolumeRotateMouseWheelTool:function(){return ng},WindowLevelTool:function(){return Gf},ZoomTool:function(){return zf},addTool:function(){return el},annotation:function(){return G},cancelActiveManipulations:function(){return rl},cursors:function(){return H},destroy:function(){return Zi},drawing:function(){return f},init:function(){return $i},removeTool:function(){return tl},segmentation:function(){return z},state:function(){return Ge},synchronizers:function(){return v},utilities:function(){return j}});var e={};h.r(e),h.d(e,{checkAndDefineIsLockedProperty:function(){return ue},getAnnotationsLocked:function(){return ce},getAnnotationsLockedCount:function(){return de},isAnnotationLocked:function(){return se},setAnnotationLocked:function(){return ie},unlockAllAnnotations:function(){return le}});var t={};h.r(t),h.d(t,{deselectAnnotation:function(){return Ee},getAnnotationsSelected:function(){return ye},getAnnotationsSelectedByToolName:function(){return Ie},getAnnotationsSelectedCount:function(){return Ce},isAnnotationSelected:function(){return be},setAnnotationSelected:function(){return we}});var n={};h.r(n),h.d(n,{checkAndDefineIsVisibleProperty:function(){return ke},isAnnotationVisible:function(){return Me},setAnnotationVisibility:function(){return Se},showAllAnnotations:function(){return xe}});var r={};h.r(r),h.d(r,{addAnnotation:function(){return et},getAnnotation:function(){return rt},getAnnotationManager:function(){return $e},getAnnotations:function(){return Qe},getNumberOfAnnotations:function(){return tt},removeAllAnnotations:function(){return ot},removeAnnotation:function(){return nt},resetAnnotationManager:function(){return Xe},setAnnotationManager:function(){return Ze}});var o={};h.r(o),h.d(o,{triggerSegmentationDataModified:function(){return _t},triggerSegmentationModified:function(){return Tt},triggerSegmentationRemoved:function(){return It},triggerSegmentationRepresentationModified:function(){return Ct},triggerSegmentationRepresentationRemoved:function(){return bt}});var a={};h.r(a),h.d(a,{addColorLUT:function(){return $t},addSegmentation:function(){return Rt},addSegmentationRepresentation:function(){return Wt},getAllSegmentationRepresentations:function(){return Nt},getColorLUT:function(){return Jt},getDefaultSegmentationStateManager:function(){return xt},getGlobalConfig:function(){return Ft},getSegmentSpecificRepresentationConfig:function(){return jt},getSegmentation:function(){return Mt},getSegmentationRepresentationByUID:function(){return qt},getSegmentationRepresentationSpecificConfig:function(){return Bt},getSegmentationRepresentations:function(){return Pt},getSegmentations:function(){return kt},getToolGroupIdsWithSegmentation:function(){return At},getToolGroupSpecificConfig:function(){return Lt},removeColorLUT:function(){return Yt},removeSegmentation:function(){return zt},removeSegmentationRepresentation:function(){return Kt},setGlobalConfig:function(){return Gt},setSegmentSpecificRepresentationConfig:function(){return Ht},setSegmentationRepresentationSpecificConfig:function(){return Vt},setToolGroupSpecificConfig:function(){return Ut}});var i={};h.r(i),h.d(i,{copyPoints:function(){return Jn},copyPointsList:function(){return Yn},getDeltaDistance:function(){return qn},getDeltaDistanceBetweenIPoints:function(){return Kn},getDeltaPoints:function(){return Gn},getDeltaRotation:function(){return zn},getMeanPoints:function(){return $n},getMeanTouchPoints:function(){return Zn}});var l={};h.r(l),h.d(l,{getSegmentationVisibility:function(){return Sa},setSegmentVisibility:function(){return Ma},setSegmentationVisibility:function(){return Oa},setSegmentsVisibility:function(){return xa}});var c={};h.r(c),h.d(c,{createSynchronizer:function(){return cl},destroy:function(){return sl},destroySynchronizer:function(){return vl},getAllSynchronizers:function(){return ul},getSynchronizer:function(){return dl},getSynchronizersForViewport:function(){return ra}});var s={};h.r(s),h.d(s,{hideElementCursor:function(){return $l},initElementCursor:function(){return Kl},resetElementCursor:function(){return Jl},setElementCursor:function(){return Yl}});var d={};h.r(d),h.d(d,{createToolGroup:function(){return rc},destroy:function(){return Yi},destroyToolGroup:function(){return zi},getAllToolGroups:function(){return oc},getToolGroup:function(){return sa},getToolGroupForViewport:function(){return jr},getToolGroupsWithToolName:function(){return Ye}});var u={};h.r(u),h.d(u,{COLOR_LUT:function(){return st}});var v={};h.r(v),h.d(v,{createCameraPositionSynchronizer:function(){return lc},createStackImageSynchronizer:function(){return _c},createVOISynchronizer:function(){return sc},createZoomPanSynchronizer:function(){return vc}});var f={};h.r(f),h.d(f,{draw:function(){return Br},drawArrow:function(){return Hc},drawCircle:function(){return xc},drawEllipse:function(){return Mc},drawHandles:function(){return kc},drawLine:function(){return Rc},drawLinkedTextBox:function(){return Bc},drawPolyline:function(){return Nc},drawRect:function(){return jc},drawTextBox:function(){return Uc},setAttributesIfNecessary:function(){return Oc},setNewAttributesIfValid:function(){return Sc}});var g={};h.r(g),h.d(g,{getActiveSegmentationRepresentation:function(){return ps},setActiveSegmentationRepresentation:function(){return ms}});var m={};h.r(m),h.d(m,{getLockedSegments:function(){return ys},isSegmentIndexLocked:function(){return ws},setSegmentIndexLocked:function(){return Es}});var w={};h.r(w),h.d(w,{getActiveSegmentIndex:function(){return bs},setActiveSegmentIndex:function(){return Is}});var E={};h.r(E),h.d(E,{addColorLUT:function(){return Cs},getColorForSegmentIndex:function(){return _s},setColorForSegmentIndex:function(){return Ds},setColorLUT:function(){return Ts}});var y={};h.r(y),h.d(y,{createLabelmapVolumeForViewport:function(){return kd},createMergedLabelmapForIndex:function(){return Sd},floodFill:function(){return Ad},getBrushSizeForToolGroup:function(){return Ud},getBrushThresholdForToolGroup:function(){return Bd},getDefaultRepresentationConfig:function(){return Md},isValidRepresentationConfig:function(){return xd},rectangleROIThresholdVolumeByRange:function(){return Od},setBrushSizeForToolGroup:function(){return Ld},setBrushThresholdForToolGroup:function(){return Vd},thresholdSegmentationByRange:function(){return jd},thresholdVolumeByRange:function(){return Rs},triggerSegmentationRender:function(){return ji}});var I={};h.r(I),h.d(I,{getTextBoxCoordsCanvas:function(){return id}});var b={};h.r(b),h.d(b,{findClosestPoint:function(){return Vc},liangBarksyClip:function(){return qd}});var C={};h.r(C),h.d(C,{getCanvasEllipseCorners:function(){return ls},pointInEllipse:function(){return cs}});var T={};h.r(T),h.d(T,{distanceToPoint:function(){return od},distanceToPointSquared:function(){return rd},intersectLine:function(){return Kd}});var _={};h.r(_),h.d(_,{distanceToPoint:function(){return ad}});var D={};h.r(D),h.d(D,{addCanvasPointsToArray:function(){return ru},calculateAreaOfPoints:function(){return au},getClosestIntersectionWithPolyline:function(){return Jd},getFirstIntersectionWithPolyline:function(){return Yd},getSubPixelSpacingAndXYDirections:function(){return tu},pointCanProjectOnLine:function(){return ou},pointsAreWithinCloseContourProximity:function(){return nu}});var O={};h.r(O),h.d(O,{distanceToPoint:function(){return iu}});var S={};h.r(S),h.d(S,{BasicStatsCalculator:function(){return vd},Calculator:function(){return ud}});var x={};h.r(x),h.d(x,{BasicStatsCalculator:function(){return S},ellipse:function(){return C},lineSegment:function(){return T},point:function(){return O},polyline:function(){return D},rectangle:function(){return _},vec2:function(){return b}});var M={};h.r(M),h.d(M,{default:function(){return uu},filterAnnotationsForDisplay:function(){return Gs},filterAnnotationsWithinSlice:function(){return Fs},getPointInLineOfSightWithCriteria:function(){return su},getWorldWidthAndHeightFromCorners:function(){return ld}});var k={};h.r(k),h.d(k,{filterViewportsWithFrameOfReferenceUID:function(){return Ps},filterViewportsWithParallelNormals:function(){return Bs},filterViewportsWithToolEnabled:function(){return Us},getViewportIdsWithToolToRender:function(){return js}});var R={};h.r(R),h.d(R,{getOrientationStringLPS:function(){return vu},invertOrientationStringLPS:function(){return fu}});var P={};h.r(P),h.d(P,{Events:function(){return hu},addToolState:function(){return mu},getToolState:function(){return wu},playClip:function(){return Tu},stopClip:function(){return _u}});var N={};h.r(N),h.d(N,{extend2DBoundingBoxInViewAxis:function(){return bd},getBoundingBoxAroundShape:function(){return Xc}});var A={};h.r(A),h.d(A,{default:function(){return nf},interpolateAnnotation:function(){return tf}});var L={};h.r(L),h.d(L,{getBoundsIJKFromRectangleAnnotations:function(){return Cd}});var U={};h.r(U),h.d(U,{disable:function(){return mf},enable:function(){return pf},getConfiguration:function(){return wf},setConfiguration:function(){return Ef}});var V={};h.r(V),h.d(V,{isViewportPreScaled:function(){return sd},jumpToSlice:function(){return Ec},jumpToWorld:function(){return yf}});var B={};h.r(B),h.d(B,{generateImageFromTimeData:function(){return bf},getDataInTime:function(){return If}});var j={};h.r(j),h.d(j,{boundingBox:function(){return N},calibrateImageSpacing:function(){return $c},cine:function(){return P},clip:function(){return gc},debounce:function(){return Kc},drawing:function(){return I},dynamicVolume:function(){return B},getAnnotationNearPoint:function(){return Fc},getAnnotationNearPointOnEnabledElement:function(){return Gc},isObject:function(){return zc},jumpToSlice:function(){return Ec},math:function(){return x},orientation:function(){return R},planar:function(){return M},planarFreehandROITool:function(){return A},pointInShapeCallback:function(){return Zc},pointInSurroundingSphereCallback:function(){return es},rectangleROITool:function(){return L},roundNumber:function(){return ts},scroll:function(){return hc},segmentation:function(){return y},stackPrefetch:function(){return U},throttle:function(){return Yc},touch:function(){return i},triggerAnnotationRender:function(){return Yr},triggerAnnotationRenderForViewportIds:function(){return aa},triggerEvent:function(){return Y.triggerEvent},viewport:function(){return V},viewportFilters:function(){return k}});var H={};h.r(H),h.d(H,{CursorNames:function(){return Tf},CursorSVG:function(){return kl},ImageMouseCursor:function(){return Cl},MouseCursor:function(){return ml},SVGMouseCursor:function(){return Hl},elementCursor:function(){return s},registerCursor:function(){return Pl},setCursorForElement:function(){return Cf}});var W={};h.r(W);var F={};h.r(F),h.d(F,{getFont:function(){return _f},getState:function(){return qs},style:function(){return Ul}});var G={};h.r(G),h.d(G,{FrameOfReferenceSpecificAnnotationManager:function(){return He},config:function(){return F},locking:function(){return e},selection:function(){return t},state:function(){return r},visibility:function(){return n}});var q={};h.r(q),h.d(q,{color:function(){return E},getGlobalConfig:function(){return ma},getGlobalRepresentationConfig:function(){return Ea},getSegmentSpecificConfig:function(){return _a},getSegmentationRepresentationSpecificConfig:function(){return Ca},getToolGroupSpecificConfig:function(){return Ia},setGlobalConfig:function(){return wa},setGlobalRepresentationConfig:function(){return ya},setSegmentSpecificConfig:function(){return Da},setSegmentationRepresentationSpecificConfig:function(){return Ta},setToolGroupSpecificConfig:function(){return ba},visibility:function(){return l}});var z={};h.r(z),h.d(z,{activeSegmentation:function(){return g},addSegmentationRepresentations:function(){return kf},addSegmentations:function(){return Of},config:function(){return q},removeSegmentationsFromToolGroup:function(){return qi},segmentIndex:function(){return w},segmentLocking:function(){return m},state:function(){return a},triggerSegmentationEvents:function(){return o}});var K={};h.r(K),h.d(K,{AnnotationStyleStates:function(){return bl},Events:function(){return $},KeyboardBindings:function(){return wo},MouseBindings:function(){return mo},SegmentationRepresentations:function(){return ut},Swipe:function(){return Wn},ToolModes:function(){return ze}});var Y=h(953),J=function(e){return e.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",e.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",e.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",e.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",e.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",e.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",e.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",e.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",e.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",e.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",e.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",e.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",e.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",e.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",e.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",e.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",e.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",e.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",e.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",e.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",e.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",e.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",e.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",e.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",e.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",e.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",e.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",e.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",e.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",e.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",e.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",e.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE",e}(J||{}),$=J;function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function X(e){var t=function(e,t){if("object"!==Z(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Z(t)?t:String(t)}function Q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,X(r.key),r)}}function ee(e,t,n){return t&&Q(e.prototype,t),n&&Q(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function te(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ne(e,t,n){return(t=X(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=h(907),oe=h.n(re),ae=new Set;function ie(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=ve();e&&(t?function(e,t,n){t.has(e)||(t.add(e),n.added.push(e))}(e,ae,n):fe(e,ae,n)),ge(n,ae)}function le(){var e=ve();!function(e,t){e.forEach((function(n){fe(n,e,t)}))}(ae,e),ge(e,ae)}function ce(){return Array.from(ae)}function se(e){return ae.has(e)}function de(){return ae.size}function ue(e){if(e){var t=!!e.isLocked;(function(e){var t=Object.getOwnPropertyDescriptor(e,"isLocked");return t?t.configurable&&(t.set!==he||t.get!==pe):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isLocked",{configurable:!1,enumerable:!0,set:he,get:pe}),ie(e,t)}}function ve(){return Object.freeze({added:[],removed:[],locked:[]})}function fe(e,t,n){t.delete(e)&&n.removed.push(e)}function ge(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((function(t){e.locked.push(t)})),(0,Y.triggerEvent)(Y.eventTarget,$.ANNOTATION_LOCK_CHANGE,e))}function he(e){ie(this,e)}function pe(){return se(this)}var me=new Set;function we(e){arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?Ee(e):function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Te();t||_e(me,n),e&&!me.has(e)&&(me.add(e),n.added.push(e)),De(n,me)}(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function Ee(e){var t=Te();e?me.delete(e)&&t.removed.push(e):_e(me,t),De(t,me)}function ye(){return Array.from(me)}function Ie(e){return ye().filter((function(t){return rt(t).metadata.toolName===e}))}function be(e){return me.has(e)}function Ce(){return me.size}function Te(){return Object.freeze({added:[],removed:[],selection:[]})}function _e(e,t){e.forEach((function(n){e.delete(n)&&t.removed.push(n)}))}function De(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((function(t){e.selection.push(t)})),(0,Y.triggerEvent)(Y.eventTarget,$.ANNOTATION_SELECTION_CHANGE,e))}var Oe=new Set;function Se(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Re();e&&(t?Pe(e,Oe,n):function(e,t,n){t.has(e)||(t.add(e),be(e)&&Ee(e),n.lastHidden.push(e))}(e,Oe,n)),Ne(n)}function xe(){var e=Re();Oe.forEach((function(t){Pe(t,Oe,e)})),Ne(e)}function Me(e){if(rt(e))return!Oe.has(e)}function ke(e){if(e){var t,n=null===(t=e.isVisible)||void 0===t||t;(function(e){var t=Object.getOwnPropertyDescriptor(e,"isVisible");return t?t.configurable&&(t.set!==Ae||t.get!==Le):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isVisible",{configurable:!1,enumerable:!0,set:Ae,get:Le}),Se(e.annotationUID,n)}}function Re(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function Pe(e,t,n){t.delete(e)&&n.lastVisible.push(e)}function Ne(e){(e.lastHidden.length>0||e.lastVisible.length>0)&&(Oe.forEach((function(t){e.hidden.push(t)})),(0,Y.triggerEvent)(Y.eventTarget,$.ANNOTATION_VISIBILITY_CHANGE,e))}function Ae(e){Se(this.annotationUID,e)}function Le(){return Me(this.annotationUID)}function Ue(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ve(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ve(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function Ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Be=ee((function e(t){var n=this;te(this,e),ne(this,"annotations",void 0),ne(this,"uid",void 0),ne(this,"getGroupKey",(function(e){if("string"==typeof e)return e;var t=e,n=(0,Y.getEnabledElement)(t);if(!n)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return n.FrameOfReferenceUID})),ne(this,"_imageVolumeModifiedHandler",(function(e){var t=e.detail.FrameOfReferenceUID,r=n.annotations[t];r&&Object.keys(r).forEach((function(e){r[e].forEach((function(e){void 0!==e.invalidated&&(e.invalidated=!0)}))}))})),ne(this,"getFramesOfReference",(function(){return Object.keys(n.annotations)})),ne(this,"getAnnotations",(function(e,t){var r=n.annotations;return r[e]?t?r[e][t]:r[e]:[]})),ne(this,"getAnnotation",(function(e){var t=n.annotations;for(var r in t){var o=t[r];for(var a in o){var i,l=Ue(o[a]);try{for(l.s();!(i=l.n()).done;){var c=i.value;if(e===c.annotationUID)return c}}catch(e){l.e(e)}finally{l.f()}}}})),ne(this,"getNumberOfAnnotations",(function(e,t){var r=n.getAnnotations(e,t);if(!r.length)return 0;if(t)return r.length;var o=0;for(var a in r)o+=r[a].length;return o})),ne(this,"addAnnotation",(function(e,t){var r=e.metadata,o=r.FrameOfReferenceUID,a=r.toolName;t=t||o;var i=n.annotations,l=i[t];l||(i[t]={},l=i[t]);var c=l[a];c||(l[a]=[],c=l[a]),c.push(e),ue(e),ke(e)})),ne(this,"removeAnnotation",(function(e){var t=n.annotations;for(var r in t){var o=t[r];for(var a in o){var i=o[a],l=i.findIndex((function(t){return t.annotationUID===e}));-1!==l&&(i.splice(l,1),0===i.length&&delete o[a])}0===Object.keys(o).length&&delete t[r]}})),ne(this,"removeAnnotations",(function(e,t){var r=n.annotations;r[e]&&(t?delete r[e][t]:delete r[e])})),ne(this,"saveAnnotations",(function(e,t){var r=n.annotations;if(e&&t){var o=r[e];if(!o)return;var a=o[t];return oe()(a)}if(e){var i=r[e];return oe()(i)}return oe()(r)})),ne(this,"restoreAnnotations",(function(e,t,r){var o=n.annotations;if(t&&r){var a=o[t];a||(o[t]={},a=o[t]),a[r]=e}else t?o[t]=e:n.annotations=oe()(e)})),ne(this,"getNumberOfAllAnnotations",(function(){var e=0,t=n.annotations;for(var r in t){var o=t[r];for(var a in o)e+=o[a].length}return e})),ne(this,"removeAllAnnotations",(function(){n.annotations={}})),t||(t=Y.utilities.uuidv4()),this.annotations={},this.uid=t,Y.eventTarget.addEventListener(Y.Enums.Events.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)})),je=new Be("DEFAULT"),He=Be,We={},Fe={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:We,enabledElements:[],handleRadius:6},Ge={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:We,enabledElements:[],handleRadius:6};var qe=function(e){return e.Active="Active",e.Passive="Passive",e.Enabled="Enabled",e.Disabled="Disabled",e}(qe||{}),ze=qe,Ke=[ze.Active,ze.Passive,ze.Enabled],Ye=function(e){return Ge.toolGroups.filter((function(t){for(var n=t.toolOptions,r=Object.keys(n),o=0;o<r.length;o++)if(e===r[o]&&n[e]&&Ke.includes(n[e].mode))return!0;return!1}))},Je=je;function $e(){return Je}function Ze(e){Je=e}function Xe(){Je=je}function Qe(e,t){var n=$e(),r=n.getGroupKey(t);return n.getAnnotations(r,e)}function et(e,t){void 0===e.annotationUID&&(e.annotationUID=Y.utilities.uuidv4());var n=$e(),r=n.getGroupKey(t);return n.addAnnotation(e,r),t instanceof HTMLDivElement?function(e,t){var n=(0,Y.getEnabledElement)(t),r=n.renderingEngine,o=n.viewportId,a=$.ANNOTATION_ADDED,i={annotation:e,viewportId:o,renderingEngineId:r.id};(0,Y.triggerEvent)(Y.eventTarget,a,i)}(e,t):function(e){var t=e.metadata.toolName,n=Ye(t);if(n.length){var r=[];if(n.forEach((function(t){t.viewportsInfo.forEach((function(t){var n=t.renderingEngineId,o=t.viewportId,a=(0,Y.getEnabledElementByIds)(o,n).FrameOfReferenceUID;e.metadata.FrameOfReferenceUID===a&&r.push(t)}))})),r.length){var o=$.ANNOTATION_ADDED;r.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,a={annotation:e,viewportId:r,renderingEngineId:n};(0,Y.triggerEvent)(Y.eventTarget,o,a)}))}}}(e),e.annotationUID}function tt(e,t){var n=$e(),r=n.getGroupKey(t);return n.getNumberOfAnnotations(r,e)}function nt(e){var t=$e(),n=t.getAnnotation(e);if(n){t.removeAnnotation(e);var r=$.ANNOTATION_REMOVED,o={annotation:n,annotationManagerUID:t.uid};(0,Y.triggerEvent)(Y.eventTarget,r,o)}}function rt(e){return $e().getAnnotation(e)}function ot(){$e().removeAllAnnotations()}function at(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function it(e,t){if(e){if("string"==typeof e)return at(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?at(e,t):void 0}}function lt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],c=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(e,t)||it(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var ct,st=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]],dt=function(e){return e.Labelmap="LABELMAP",e.Contour="CONTOUR",e}(dt||{}),ut=dt,vt={renderOutline:!0,outlineWidthActive:2,outlineWidthInactive:2,outlineOpacity:1,outlineOpacityInactive:.85,renderFill:!0,fillAlpha:1,fillAlphaInactive:0},ft={renderOutline:!0,outlineWidthActive:3,outlineWidthInactive:2,renderFill:!0,renderFillInactive:!0,fillAlpha:.7,fillAlphaInactive:.65,outlineOpacity:1,outlineOpacityInactive:.85},gt=function(){return ft};function ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ht(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var mt=gt(),wt=vt,Et={colorLUT:[],segmentations:[],globalConfig:{renderInactiveSegmentations:!0,representations:(ct={},ne(ct,ut.Labelmap,mt),ne(ct,ut.Contour,wt),ct)},toolGroups:{}},yt=new(function(){function e(t){te(this,e),ne(this,"state",void 0),ne(this,"uid",void 0),t||(t=Y.utilities.uuidv4()),this.state=oe()(Et),this.uid=t}return ee(e,[{key:"getState",value:function(){return this.state}},{key:"getToolGroups",value:function(){return Object.keys(this.state.toolGroups)}},{key:"getColorLUT",value:function(e){return this.state.colorLUT[e]}},{key:"resetState",value:function(){this.state=oe()(Et)}},{key:"getSegmentation",value:function(e){return this.state.segmentations.find((function(t){return t.segmentationId===e}))}},{key:"addSegmentation",value:function(e){if(this._initDefaultColorLUTIfNecessary(),this.getSegmentation(e.segmentationId))throw new Error("Segmentation with id ".concat(e.segmentationId," already exists"));this.state.segmentations.push(e)}},{key:"getSegmentationRepresentations",value:function(e){var t=this.state.toolGroups[e];if(t)return t.segmentationRepresentations}},{key:"getAllSegmentationRepresentations",value:function(){var e={};return Object.entries(this.state.toolGroups).forEach((function(t){var n=lt(t,2),r=n[0],o=n[1];e[r]=o.segmentationRepresentations})),e}},{key:"addSegmentationRepresentation",value:function(e,t){this.state.toolGroups[e]||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{}}),this.state.toolGroups[e].segmentationRepresentations.push(t),this._handleActiveSegmentation(e,t)}},{key:"getGlobalConfig",value:function(){return this.state.globalConfig}},{key:"setGlobalConfig",value:function(e){this.state.globalConfig=e}},{key:"getSegmentationRepresentationByUID",value:function(e,t){return this.getSegmentationRepresentations(e).find((function(e){return e.segmentationRepresentationUID===t}))}},{key:"removeSegmentation",value:function(e){this.state.segmentations=this.state.segmentations.filter((function(t){return t.segmentationId!==e}))}},{key:"removeSegmentationRepresentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No viewport specific segmentation state found for viewport ".concat(e));var r=n.findIndex((function(e){return e.segmentationRepresentationUID===t}));-1===r&&console.warn("No viewport specific segmentation state data found for viewport ".concat(e," and segmentation data UID ").concat(t));var o=n[r];n.splice(r,1),this._handleActiveSegmentation(e,o)}},{key:"setActiveSegmentationRepresentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No segmentation data found for toolGroupId: ".concat(e));var r=n.find((function(e){return e.segmentationRepresentationUID===t}));if(!r)throw new Error("No segmentation data found for segmentation data UID ".concat(t));r.active=!0,this._handleActiveSegmentation(e,r)}},{key:"getToolGroupSpecificConfig",value:function(e){var t=this.state.toolGroups[e];if(t)return t.config}},{key:"getSegmentationRepresentationSpecificConfig",value:function(e,t){var n=this.getSegmentationRepresentationByUID(e,t);if(n)return n.segmentationRepresentationSpecificConfig}},{key:"setSegmentationRepresentationSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);r&&(r.segmentationRepresentationSpecificConfig=n)}},{key:"getSegmentSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);if(r)return r.segmentSpecificConfig[n]}},{key:"setSegmentSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);r&&(r.segmentSpecificConfig=n)}},{key:"setSegmentationRepresentationConfig",value:function(e,t){var n=this.state.toolGroups[e];n||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{renderInactiveSegmentations:!0,representations:{}}},n=this.state.toolGroups[e]),n.config=pt(pt({},n.config),t)}},{key:"addColorLUT",value:function(e,t){this.state.colorLUT[t]&&console.log("Color LUT table already exists, overwriting"),this.state.colorLUT[t]=e}},{key:"removeColorLUT",value:function(e){delete this.state.colorLUT[e]}},{key:"_handleActiveSegmentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);0!==n.length&&(1!==n.length&&0!==n.filter((function(e){return e.active})).length?t.active&&n.forEach((function(e){e.segmentationRepresentationUID!==t.segmentationRepresentationUID&&(e.active=!1)})):n[0].active=!0)}},{key:"_initDefaultColorLUTIfNecessary",value:function(){0!==this.state.colorLUT.length&&this.state.colorLUT[0]||this.addColorLUT(st,0)}}]),e}())("DEFAULT");function It(e){var t={segmentationId:e};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_REMOVED,t)}function bt(e,t){var n={toolGroupId:e,segmentationRepresentationUID:t};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_REPRESENTATION_REMOVED,n)}function Ct(e,t){var n={toolGroupId:e,segmentationRepresentationUID:t};t?(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_REPRESENTATION_MODIFIED,n):(Pt(e)||[]).forEach((function(t){var n=t.segmentationRepresentationUID,r={toolGroupId:e,segmentationRepresentationUID:n};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_REPRESENTATION_MODIFIED,r)}))}function Tt(e){(e?[e]:kt().map((function(e){return e.segmentationId}))).forEach((function(e){var t={segmentationId:e};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_MODIFIED,t)}))}function _t(e,t){var n={segmentationId:e,modifiedSlicesToUse:t};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_DATA_MODIFIED,n)}function Dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ot(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dt(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var St=function(e){var t=e.segmentationId,n=e.representation;return{segmentationId:t,cachedStats:{},segmentLabels:{},label:null,segmentsLocked:new Set,type:n.type,activeSegmentIndex:1,representationData:ne({},n.type,Ot({},n.data))}};function xt(){return yt}function Mt(e){return xt().getSegmentation(e)}function kt(){return xt().getState().segmentations}function Rt(e,t){var n=xt(),r=St(e);n.addSegmentation(r),t||Tt(r.segmentationId)}function Pt(e){return xt().getSegmentationRepresentations(e)}function Nt(){return xt().getAllSegmentationRepresentations()}function At(e){if(!e)throw new Error("getToolGroupIdsWithSegmentation: segmentationId is empty");var t=xt(),n=t.getState(),r=Object.keys(n.toolGroups),o=[];return r.forEach((function(n){t.getSegmentationRepresentations(n).forEach((function(t){t.segmentationId===e&&o.push(n)}))})),o}function Lt(e){return xt().getToolGroupSpecificConfig(e)}function Ut(e,t,n){xt().setSegmentationRepresentationConfig(e,t),n||Ct(e)}function Vt(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];xt().setSegmentationRepresentationSpecificConfig(e,t,n),r||Ct(e,t)}function Bt(e,t){return xt().getSegmentationRepresentationSpecificConfig(e,t)}function jt(e,t,n){return xt().getSegmentSpecificConfig(e,t,n)}function Ht(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];xt().setSegmentSpecificConfig(e,t,n),r||Ct(e,t)}function Wt(e,t,n){xt().addSegmentationRepresentation(e,t),n||Ct(e,t.segmentationRepresentationUID)}function Ft(){return xt().getGlobalConfig()}function Gt(e,t){xt().setGlobalConfig(e),t||Tt()}function qt(e,t){return xt().getSegmentationRepresentationByUID(e,t)}function zt(e){xt().removeSegmentation(e),It(e)}function Kt(e,t){xt().removeSegmentationRepresentation(e,t),bt(e,t)}function Yt(e){xt().removeColorLUT(e)}function Jt(e){return xt().getColorLUT(e)}function $t(e,t){xt().addColorLUT(e,t)}function Zt(e,t){var n=t||e.currentTarget,r=(0,Y.getEnabledElement)(n).viewport,o=function(e){return[e.clientX,e.clientY]}(e),a=function(e){return[e.pageX,e.pageY]}(e),i=function(e,t){var n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,a);return{page:a,client:o,canvas:i,world:r.canvasToWorld(i)}}var Xt=function(e){var t=e.currentTarget,n=(0,Y.getEnabledElement)(t),r=n.viewportId,o=n.renderingEngineId,a=Zt(e,t),i={event:e,eventName:$.MOUSE_DOUBLE_CLICK,viewportId:r,renderingEngineId:o,camera:{},element:t,startPoints:a,lastPoints:a,currentPoints:a,deltaPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};!(0,Y.triggerEvent)(t,$.MOUSE_DOUBLE_CLICK,i)&&(e.stopImmediatePropagation(),e.preventDefault())},Qt=$.MOUSE_MOVE,en=function(e){var t=e.currentTarget,n=(0,Y.getEnabledElement)(t),r={renderingEngineId:n.renderingEngineId,viewportId:n.viewportId,camera:{},element:t,currentPoints:Zt(e),eventName:Qt,event:e};(0,Y.triggerEvent)(t,Qt,r)},tn=$.MOUSE_DOWN,nn=$.MOUSE_DOWN_ACTIVATE,rn=$.MOUSE_CLICK,on=$.MOUSE_UP,an=$.MOUSE_DRAG,ln=3,cn={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}},sn={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}},dn={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function un(e){var t=Zt(e,sn.element),n=yn(sn.element,sn.lastPoints),r=In(t,n);if(dn.doubleClickTimeout){if(!gn(r.canvas))return;pn()}var o={event:e,eventName:an,mouseButton:sn.mouseButton,renderingEngineId:sn.renderingEngineId,viewportId:sn.viewportId,camera:{},element:sn.element,startPoints:En(sn.startPoints),lastPoints:En(n),currentPoints:t,deltaPoints:r};(0,Y.triggerEvent)(sn.element,an,o),sn.lastPoints=En(t)}function vn(e){if(clearTimeout(sn.preventClickTimeout),dn.doubleClickTimeout)dn.mouseUpEvent?wn():(dn.mouseUpEvent=e,sn.element.addEventListener("mousemove",fn));else{var t=sn.isClickEvent?rn:on,n=Zt(e,sn.element),r=In(n,sn.lastPoints),o={event:e,eventName:t,mouseButton:sn.mouseButton,element:sn.element,renderingEngineId:sn.renderingEngineId,viewportId:sn.viewportId,camera:{},startPoints:En(sn.startPoints),lastPoints:En(sn.lastPoints),currentPoints:n,deltaPoints:r};(0,Y.triggerEvent)(o.element,t,o),wn()}document.removeEventListener("mousemove",un)}function fn(e){gn(In(Zt(e,sn.element),yn(sn.element,sn.lastPoints)).canvas)&&(pn(),en(e))}function gn(e){return Math.abs(e[0])+Math.abs(e[1])>ln}function hn(){sn.isClickEvent=!1}function pn(){dn.ignoreDoubleClick=!0;var e,t,n,r=dn.mouseDownEvent,o=dn.mouseUpEvent;mn(),e=r,t=In(sn.startPoints,sn.startPoints),n={event:e,eventName:tn,element:sn.element,mouseButton:sn.mouseButton,renderingEngineId:sn.renderingEngineId,viewportId:sn.viewportId,camera:{},startPoints:sn.startPoints,lastPoints:sn.startPoints,currentPoints:sn.startPoints,deltaPoints:t},sn.lastPoints=En(n.lastPoints),(0,Y.triggerEvent)(n.element,tn,n)&&(0,Y.triggerEvent)(n.element,nn,n),o&&vn(o)}function mn(){dn.doubleClickTimeout&&(clearTimeout(dn.doubleClickTimeout),dn.doubleClickTimeout=null),dn.mouseDownEvent=null,dn.mouseUpEvent=null}function wn(){var e,t;document.removeEventListener("mouseup",vn),null===(e=sn.element)||void 0===e||e.removeEventListener("mousemove",fn),null===(t=sn.element)||void 0===t||t.addEventListener("mousemove",en),mn(),sn=JSON.parse(JSON.stringify(cn))}function En(e){return JSON.parse(JSON.stringify(e))}function yn(e,t){var n=(0,Y.getEnabledElement)(e).viewport.canvasToWorld(t.canvas);return{page:t.page,client:t.client,canvas:t.canvas,world:n}}function In(e,t){return{page:bn(e.page,t.page),client:bn(e.client,t.client),canvas:bn(e.canvas,t.canvas),world:(n=e.world,r=t.world,[n[0]-r[0],n[1]-r[1],n[2]-r[2]])};var n,r}function bn(e,t){return[e[0]-t[0],e[1]-t[1]]}function Cn(e){dn.ignoreDoubleClick?(dn.ignoreDoubleClick=!1,e.stopImmediatePropagation(),e.preventDefault()):wn()}var Tn=function(e){if(dn.doubleClickTimeout){if(e.buttons===dn.mouseDownEvent.buttons)return;return dn.mouseDownEvent=e,void pn()}dn.doubleClickTimeout=setTimeout(pn,1===e.buttons?400:150),dn.mouseDownEvent=e,dn.ignoreDoubleClick=!1,sn.element=e.currentTarget,sn.mouseButton=e.buttons;var t=(0,Y.getEnabledElement)(sn.element),n=t.renderingEngineId,r=t.viewportId;sn.renderingEngineId=n,sn.viewportId=r,sn.preventClickTimeout=setTimeout(hn,sn.clickDelay),sn.element.removeEventListener("mousemove",en);var o=Zt(e,sn.element);sn.startPoints=En(o),sn.lastPoints=En(o),document.addEventListener("mouseup",vn),document.addEventListener("mousemove",un)};function _n(e){e.removeEventListener("dblclick",Xt),e.removeEventListener("mousedown",Tn),e.removeEventListener("mousemove",en),e.removeEventListener("dblclick",Cn,{capture:!0})}var Dn={enable:function(e){_n(e),e.addEventListener("dblclick",Xt),e.addEventListener("mousedown",Tn),e.addEventListener("mousemove",en),e.addEventListener("dblclick",Cn,{capture:!0})},disable:_n},On=function(e){var t=e.currentTarget,n=(0,Y.getEnabledElement)(t),r=n.renderingEngineId,o=n.viewportId;if(!(e.deltaY>-1&&e.deltaY<1)){e.preventDefault();var a=function(e){var t=0,n=0,r=0,o=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),r=10*t,o=10*n,"deltaY"in e&&(o=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||o)&&e.deltaMode&&(1===e.deltaMode?(r*=40,o*=40):(r*=800,o*=800)),r&&!t&&(t=r<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:o}}(e),i=a.spinX,l=a.spinY,c=a.pixelX,s=a.pixelY,d=l<0?-1:1,u={event:e,eventName:$.MOUSE_WHEEL,renderingEngineId:r,viewportId:o,element:t,camera:{},detail:e,wheel:{spinX:i,spinY:l,pixelX:c,pixelY:s,direction:d},points:Zt(e)};(0,Y.triggerEvent)(t,$.MOUSE_WHEEL,u)}};function Sn(e){e.removeEventListener("wheel",On)}var xn,Mn,kn={enable:function(e){Sn(e),e.addEventListener("wheel",On,{passive:!1})},disable:Sn},Rn={mouse:0,touch:1};function Pn(e,t){var n=Date.now();if(e!==xn){if(n-Mn<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;xn=e}Mn=n}var Nn=Pn.bind(null,Rn.mouse),An=Pn.bind(null,Rn.touch);function Ln(e,t,n){var r=n?Nn:An;t.forEach((function(t){e.addEventListener(t,r,{passive:!1})}))}function Un(e,t,n){var r=n?Nn:An;t.forEach((function(t){e.removeEventListener(t,r)}))}var Vn=["mousedown","mouseup","mousemove"],Bn=["touchstart","touchend"];function jn(e){Un(e,Vn,Rn.mouse),Un(e,Bn,Rn.touch)}var Hn={enable:function(e){jn(e),Ln(e,Vn,Rn.mouse),Ln(e,Bn,Rn.touch)},disable:jn},Wn=function(e){return e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e}(Wn||{});function Fn(e,t){var n=t||e.currentTarget,r="touchend"===e.type?e.changedTouches:e.touches;return Object.keys(r).map((function(e){var t=function(e){return[e.clientX,e.clientY]}(r[e]),o=function(e){return[e.pageX,e.pageY]}(r[e]),a=function(e,t){var n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,o);return{page:o,client:t,canvas:a,world:(0,Y.getEnabledElement)(n).viewport.canvasToWorld(a),touch:{identifier:e,radiusX:r[e].radiusX,radiusY:r[e].radiusY,force:r[e].force,rotationAngle:r[e].rotationAngle}}}))}function Gn(e,t){var n,r,o=$n(e),a=$n(t);return{page:Xn(o.page,a.page),client:Xn(o.client,a.client),canvas:Xn(o.canvas,a.canvas),world:(n=o.world,r=a.world,[n[0]-r[0],n[1]-r[1],n[2]-r[2]])}}function qn(e,t){var n=$n(e),r=$n(t);return{page:er(n.page,r.page),client:er(n.client,r.client),canvas:er(n.canvas,r.canvas),world:tr(n.world,r.world)}}function zn(e,t){}function Kn(e,t){var n=Qn(e),r=Qn(t);return{page:n.page-r.page,client:n.client-r.client,canvas:n.canvas-r.canvas,world:n.world-r.world}}function Yn(e){return JSON.parse(JSON.stringify(e))}function Jn(e){return JSON.parse(JSON.stringify(e))}function $n(e){return e.reduce((function(t,n){return{page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length]}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function Zn(e){return e.reduce((function(t,n){return{page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length],touch:{identifier:null,radiusX:t.touch.radiusX+n.touch.radiusX/e.length,radiusY:t.touch.radiusY+n.touch.radiusY/e.length,force:t.touch.force+n.touch.force/e.length,rotationAngle:t.touch.rotationAngle+n.touch.rotationAngle/e.length}}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function Xn(e,t){return[e[0]-t[0],e[1]-t[1]]}function Qn(e){for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e.length;r++)n<r&&t.push({page:er(e[n].page,e[r].page),client:er(e[n].client,e[r].client),canvas:er(e[n].canvas,e[r].canvas),world:tr(e[n].world,e[r].world)});return t.reduce((function(e,n){return{page:e.page+n.page/t.length,client:e.client+n.client/t.length,canvas:e.canvas+n.canvas/t.length,world:e.world+n.world/t.length}}),{page:0,client:0,canvas:0,world:0})}function er(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function tr(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))}function nr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function rr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?nr(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var or=Y.Settings.getRuntimeSettings(),ar=$.TOUCH_START,ir=$.TOUCH_START_ACTIVATE,lr=$.TOUCH_PRESS,cr=$.TOUCH_DRAG,sr=$.TOUCH_END,dr=$.TOUCH_TAP,ur=$.TOUCH_SWIPE,vr={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},fr={page:0,client:0,canvas:0,world:0},gr={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[rr(rr({},vr),{},{touch:null})],lastPointsList:[rr(rr({},vr),{},{touch:null})],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:fr,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},hr={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[rr(rr({},vr),{},{touch:null})],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300},pr=JSON.parse(JSON.stringify(gr)),mr=JSON.parse(JSON.stringify(hr));function wr(e,t,n){return or.get("debug")&&("CORNERSTONE_TOOLS_TOUCH_DRAG"===t?console.debug(t):console.debug(t,n)),(0,Y.triggerEvent)(e,t,n)}function Er(e){var t=Fn(e,pr.element),n=Ir(pr.element,pr.lastPointsList),r=t.length===n.length?Gn(t,n):vr,o=t.length===n.length?Kn(t,n):fr,a=t.length===n.length?qn(t,pr.lastPointsList):fr;pr.accumulatedDistance={page:pr.accumulatedDistance.page+a.page,client:pr.accumulatedDistance.client+a.client,canvas:pr.accumulatedDistance.canvas+a.canvas,world:pr.accumulatedDistance.world+a.world};var i={event:e,eventName:cr,renderingEngineId:pr.renderingEngineId,viewportId:pr.viewportId,camera:{},element:pr.element,startPoints:Zn(pr.startPointsList),lastPoints:Zn(n),currentPoints:Zn(t),startPointsList:Yn(pr.startPointsList),lastPointsList:Yn(n),currentPointsList:t,deltaPoints:r,deltaDistance:o};wr(pr.element,cr,i),function(e,t){var n=(new Date).getTime(),r=pr.startTime.getTime();if(!(pr.swiped||n-r>pr.swipeToleranceMs)){var o=lt(t.canvas,2),a=o[0],i=o[1],l={event:e,eventName:ur,renderingEngineId:pr.renderingEngineId,viewportId:pr.viewportId,camera:{},element:pr.element,swipe:null};Math.abs(a)>pr.swipeDistanceThreshold&&(l.swipe=a>0?Wn.RIGHT:Wn.LEFT,wr(l.element,ur,l),pr.swiped=!0),Math.abs(i)>pr.swipeDistanceThreshold&&(l.swipe=i>0?Wn.DOWN:Wn.UP,wr(l.element,ur,l),pr.swiped=!0)}}(e,r),pr.lastPointsList=Yn(t)}function yr(e){clearTimeout(pr.pressTimeout);var t=Fn(e,pr.element),n=Ir(pr.element,pr.lastPointsList),r=t.length===n.length?Gn(t,n):Gn(t,t),o=t.length===n.length?Kn(t,n):Kn(t,t),a={event:e,eventName:sr,element:pr.element,renderingEngineId:pr.renderingEngineId,viewportId:pr.viewportId,camera:{},startPointsList:Yn(pr.startPointsList),lastPointsList:Yn(n),currentPointsList:t,startPoints:Zn(pr.startPointsList),lastPoints:Zn(n),currentPoints:Zn(t),deltaPoints:r,deltaDistance:o};wr(a.element,sr,a),function(e){if(!((new Date).getTime()-pr.startTime.getTime()>mr.tapToleranceMs||(0===mr.taps&&(mr.element=pr.element,mr.renderingEngineId=pr.renderingEngineId,mr.viewportId=pr.viewportId,mr.startPointsList=pr.startPointsList),mr.taps>0&&(mr.element!=pr.element||mr.renderingEngineId!=pr.renderingEngineId||mr.viewportId!=pr.viewportId)))){var t=Fn(e,mr.element);qn(t,mr.startPointsList).canvas>mr.tapMaxDistance||(clearTimeout(mr.tapTimeout),mr.taps+=1,mr.tapTimeout=setTimeout((function(){var n={event:e,eventName:dr,element:mr.element,renderingEngineId:mr.renderingEngineId,viewportId:mr.viewportId,camera:{},currentPointsList:t,currentPoints:Zn(t),taps:mr.taps};wr(n.element,dr,n),mr=JSON.parse(JSON.stringify(hr))}),mr.tapToleranceMs))}}(e),pr=JSON.parse(JSON.stringify(gr)),document.removeEventListener("touchmove",Er),document.removeEventListener("touchend",yr)}function Ir(e,t){var n=(0,Y.getEnabledElement)(e).viewport;return t.map((function(e){var t=n.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:t,touch:e.touch}}))}var br=function(e){pr.element=e.currentTarget;var t=(0,Y.getEnabledElement)(pr.element),n=t.renderingEngineId,r=t.viewportId;pr.renderingEngineId=n,pr.viewportId=r,pr.isTouchStart||(clearTimeout(pr.pressTimeout),pr.pressTimeout=setTimeout((function(){return function(e){if(!(pr.accumulatedDistance.canvas>pr.pressMaxDistance)){var t={event:e,eventName:lr,renderingEngineId:pr.renderingEngineId,viewportId:pr.viewportId,camera:{},element:pr.element,startPointsList:Yn(pr.startPointsList),lastPointsList:Yn(pr.lastPointsList),startPoints:Jn(Zn(pr.startPointsList)),lastPoints:Jn(Zn(pr.lastPointsList))};wr(t.element,lr,t)}}(e)}),pr.pressDelay),function(e){pr.isTouchStart=!0,pr.startTime=new Date;var t=Fn(e,pr.element),n=Zn(t),r=vr,o=fr,a={event:e,eventName:ar,element:pr.element,renderingEngineId:pr.renderingEngineId,viewportId:pr.viewportId,camera:{},startPointsList:t,lastPointsList:t,currentPointsList:t,startPoints:n,lastPoints:n,currentPoints:n,deltaPoints:r,deltaDistance:o};pr.startPointsList=Yn(a.startPointsList),pr.lastPointsList=Yn(a.lastPointsList),wr(a.element,ar,a)&&wr(a.element,ir,a)}(e),document.addEventListener("touchmove",Er),document.addEventListener("touchend",yr))};function Cr(e){Hn.disable(e),e.removeEventListener("touchstart",br)}var Tr={enable:function(e){Cr(e),Hn.enable(e),e.addEventListener("touchstart",br,{passive:!1})},disable:Cr},_r={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null},Dr={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function Or(e){Dr.element=e.currentTarget;var t=(0,Y.getEnabledElement)(Dr.element),n=t.renderingEngineId,r=t.viewportId;Dr.renderingEngineId=n,Dr.viewportId=r,Dr.key=e.key,Dr.keyCode=e.keyCode,e.preventDefault();var o={renderingEngineId:Dr.renderingEngineId,viewportId:Dr.viewportId,element:Dr.element,key:Dr.key,keyCode:Dr.keyCode};(0,Y.triggerEvent)(o.element,$.KEY_DOWN,o),document.addEventListener("keyup",xr),document.addEventListener("visibilitychange",Sr),Dr.element.removeEventListener("keydown",Or)}function Sr(){document.removeEventListener("visibilitychange",Sr),"hidden"===document.visibilityState&&Mr()}function xr(e){var t={renderingEngineId:Dr.renderingEngineId,viewportId:Dr.viewportId,element:Dr.element,key:Dr.key,keyCode:Dr.keyCode};document.removeEventListener("keyup",xr),document.removeEventListener("visibilitychange",Sr),Dr.element.addEventListener("keydown",Or),Dr=oe()(_r),(0,Y.triggerEvent)(t.element,$.KEY_UP,t)}function Mr(){Dr.keyCode=void 0}var kr=Or;function Rr(e){e.removeEventListener("keydown",kr)}var Pr={enable:function(e){Rr(e),e.addEventListener("keydown",kr)},disable:Rr,getModifierKey:function(){return Dr.keyCode}};function Nr(e){return function(e){if(Array.isArray(e))return at(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||it(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ar(e,t){if(Ge.svgNodeCache[e])return Ge.svgNodeCache[e][t]?Ge.svgNodeCache[e][t].domRef:void 0}function Lr(e,t,n,r){if(!Ge.svgNodeCache[t])return null;Ge.svgNodeCache[t][r]={touched:!0,domRef:n},e.appendChild(n)}function Ur(e,t){Ge.svgNodeCache[e]&&Ge.svgNodeCache[e][t]&&(Ge.svgNodeCache[e][t].touched=!0)}function Vr(e,t){Ge.svgNodeCache[t]&&Object.keys(Ge.svgNodeCache[t]).forEach((function(n){var r=Ge.svgNodeCache[t][n];!r.touched&&r.domRef&&(e.removeChild(r.domRef),delete Ge.svgNodeCache[t][n])}))}var Br=function(e,t){var n=function(e){var t=(0,Y.getEnabledElement)(e),n=t.viewportId,r=t.renderingEngineId,o="".concat(n,":").concat(r),a=function(e){var t=".".concat("viewport-element");return e.querySelector(t).querySelector(".svg-layer")}(e);return Object.keys(Ge.svgNodeCache[o]).forEach((function(e){Ge.svgNodeCache[o][e].touched=!1})),{svgLayerElement:a,svgNodeCacheForCanvas:Ge.svgNodeCache,getSvgNode:Ar.bind(this,o),appendNode:Lr.bind(this,a,o),setNodeTouched:Ur.bind(this,o),clearUntouched:Vr.bind(this,a,o)}}(e);t(n),n.clearUntouched()},jr=function(e,t){var n=Ge.toolGroups.filter((function(n){return n.viewportsInfo.some((function(n){return n.renderingEngineId===t&&(!n.viewportId||n.viewportId===e)}))}));if(n.length){if(n.length>1)throw new Error("Multiple tool groups found for renderingEngineId: ".concat(t," and viewportId: ").concat(e,". You should only\n have one tool group per viewport in a renderingEngine."));return n[0]}};function Hr(e,t){var n=(0,Y.getEnabledElement)(e),r=n.renderingEngineId,o=n.viewportId,a=jr(o,r);if(!a)return[];for(var i=[],l=Object.keys(a.toolOptions),c=0;c<l.length;c++){var s=l[c],d=a.toolOptions[s];if(d&&t.includes(d.mode)){var u=a.getToolInstance(s);i.push(u)}}return i}function Wr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Fr=ze.Active,Gr=ze.Passive,qr=ze.Enabled,zr=function(){function e(){var t=this;te(this,e),ne(this,"hasBeenDestroyed",void 0),ne(this,"_needsRender",new Set),ne(this,"_animationFrameSet",!1),ne(this,"_animationFrameHandle",null),ne(this,"_viewportElements",void 0),ne(this,"_renderFlaggedViewports",(function(){t._throwIfDestroyed();for(var e=Array.from(t._viewportElements.values()),n=0;n<e.length;n++){var r=e[n];if(t._needsRender.has(r)&&(t._triggerRender(r),t._needsRender.delete(r),0===t._needsRender.size))return t._animationFrameSet=!1,void(t._animationFrameHandle=null)}})),this._viewportElements=new Map}return ee(e,[{key:"addViewportElement",value:function(e,t){this._viewportElements.set(e,t)}},{key:"removeViewportElement",value:function(e,t){this._viewportElements.delete(e),this._needsRender.delete(t),this._reset()}},{key:"renderViewport",value:function(e){this._setViewportsToBeRenderedNextFrame([e])}},{key:"_throwIfDestroyed",value:function(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}},{key:"_setAllViewportsToBeRenderedNextFrame",value:function(){var e=this;Nr(this._viewportElements.values()).forEach((function(t){e._needsRender.add(t)})),this._renderFlaggedViewports()}},{key:"_setViewportsToBeRenderedNextFrame",value:function(e){var t=this,n=Nr(this._viewportElements.values());e.forEach((function(e){-1!==n.indexOf(e)&&t._needsRender.add(e)})),this._render()}},{key:"_render",value:function(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}},{key:"_triggerRender",value:function(e){var t=(0,Y.getEnabledElement)(e);if(t)if((0,Y.getRenderingEngine)(t.renderingEngineId)){var n=Hr(e,[Fr,Gr,qr]),r=t.renderingEngineId,o=t.viewportId,a={element:e,renderingEngineId:r,viewportId:o};Br(e,(function(r){var o=!1;n.forEach((function(e){if(e.renderAnnotation){var n=e.renderAnnotation(t,r);o=o||n}})),o&&(0,Y.triggerEvent)(e,$.ANNOTATION_RENDERED,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Wr(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},a))}))}else console.warn("rendering Engine has been destroyed");else console.warn("Element has been disabled")}},{key:"_reset",value:function(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}]),e}(),Kr=new zr,Yr=function(e){Kr.renderViewport(e)},Jr=function(e){Yr(e.detail.element)},$r={enable:function(e){e.addEventListener(Y.Enums.Events.IMAGE_RENDERED,Jr)},disable:function(e){e.removeEventListener(Y.Enums.Events.IMAGE_RENDERED,Jr)}};function Zr(e,t,n){var r=e.detail,o=r.renderingEngineId,a=r.viewportId,i=jr(a,o);if(!i)return[];for(var l=[],c=Object.keys(i.toolOptions),s=0;s<c.length;s++){var d=c[s],u=i.toolOptions[d],v=null!=n&&u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===n}));if(t.includes(u.mode)&&(!n||v)){var f=i.getToolInstance(d);l.push(f)}}return l}var Xr=ze.Active,Qr=ze.Passive,eo=ze.Enabled,to=function(e){Zr(e,[Xr,Qr,eo]).forEach((function(t){t.onCameraModified&&t.onCameraModified(e)}))},no={enable:function(e){e.addEventListener(Y.Enums.Events.CAMERA_MODIFIED,to)},disable:function(e){e.removeEventListener(Y.Enums.Events.CAMERA_MODIFIED,to)}},ro=ze.Active,oo=ze.Passive,ao=ze.Enabled,io=function(e){Zr(e,[ro,oo,ao]).forEach((function(t){t.onImageSpacingCalibrated&&t.onImageSpacingCalibrated(e)}))},lo={enable:function(e){e.addEventListener(Y.Enums.Events.IMAGE_SPACING_CALIBRATED,io)},disable:function(e){e.removeEventListener(Y.Enums.Events.IMAGE_SPACING_CALIBRATED,io)}},co=ze.Active;function so(e,t,n){if(Ge.isInteractingWithTool)return!1;var r,o=n.detail,a=o.renderingEngineId,i=o.viewportId,l=jr(i,a);if(!l)return!1;for(var c=Object.keys(l.toolOptions),s=0;s<c.length;s++){var d=c[s],u=l.toolOptions[d],v=l.getToolInstance(d);if(u.mode===co&&"function"==typeof v[t]){r=l.getToolInstance(d);break}}r&&r[t](n)}var uo=so.bind(null,"Mouse","mouseClickCallback");function vo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function fo(e,t,n){var r="touch"===(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse")?36:6,o=[];return t.forEach((function(t){var a,i=t.tool,l=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return vo(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?vo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t.annotations);try{for(l.s();!(a=l.n()).done;){var c=a.value;if(!c.isLocked&&c.isVisible){var s=i.getHandleNearImagePoint(e,c,n,r);if(s){o.push({tool:i,annotation:c,handle:s});break}}}}catch(e){l.e(e)}finally{l.f()}})),o}function go(e,t){for(var n=[],r=0;r<t.length;r++){var o,a=t[r];if(a){var i=Qe(a.constructor.toolName,e);null!==(o=i)&&void 0!==o&&o.length&&("function"==typeof a.filterInteractableAnnotationsForElement&&(i=a.filterInteractableAnnotationsForElement(e,i)),i.length>0&&n.push({tool:a,annotations:i}))}else console.warn("undefined tool in filterToolsWithAnnotationsForElement")}return n}function ho(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function po(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse",o="touch"===r?36:6,a=[];return t.forEach((function(t){var i,l=t.tool,c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ho(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ho(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t.annotations);try{for(c.s();!(i=c.n()).done;){var s=i.value;if(!s.isLocked&&s.isVisible&&l.isPointNearTool(e,s,n,o,r)){a.push({tool:l,annotation:s});break}}}catch(e){c.e(e)}finally{c.f()}})),a}var mo=function(e){return e[e.Primary=1]="Primary",e[e.Secondary=2]="Secondary",e[e.Primary_And_Secondary=3]="Primary_And_Secondary",e[e.Auxiliary=4]="Auxiliary",e[e.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",e[e.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",e[e.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",e[e.Fourth_Button=8]="Fourth_Button",e[e.Fifth_Button=16]="Fifth_Button",e}(mo||{}),wo=function(e){return e[e.Shift=16]="Shift",e[e.Ctrl=17]="Ctrl",e[e.Alt=18]="Alt",e[e.Meta=91]="Meta",e[e.ShiftCtrl=1617]="ShiftCtrl",e[e.ShiftAlt=1618]="ShiftAlt",e[e.ShiftMeta=1691]="ShiftMeta",e[e.CtrlAlt=1718]="CtrlAlt",e[e.CtrlMeta=1791]="CtrlMeta",e[e.AltMeta=1891]="AltMeta",e}(wo||{}),Eo=function(e){return e.shiftKey?e.ctrlKey?wo.ShiftCtrl:e.altKey?wo.ShiftAlt:e.metaKey?wo.ShiftMeta:wo.Shift:e.ctrlKey?e.altKey?wo.CtrlAlt:e.metaKey?wo.CtrlMeta:wo.Ctrl:e.altKey?e.metaKey&&wo.AltMeta||wo.Alt:e.metaKey?wo.Meta:void 0},yo=ze.Active;function Io(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=e.detail.event,a=Eo(o)||Pr.getModifierKey(),i=jr(r,n);if(!i)return null;for(var l=Object.keys(i.toolOptions),c=i.getDefaultMousePrimary(),s=0;s<l.length;s++){var d=l[s],u=i.toolOptions[d],v=u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===(o?o.buttons:c)&&e.modifierKey===a}));if(u.mode===yo&&v)return i.getToolInstance(d)}}var bo=ze.Active,Co=ze.Passive;function To(e){if(!Ge.isInteractingWithTool){var t=Io(e);if(t&&"function"==typeof t.preMouseDownCallback&&t.preMouseDownCallback(e))return;var n=1===e.detail.event.buttons,r=Zr(e,[bo],e.detail.event.buttons),o=n?Zr(e,[Co]):void 0,a=[].concat(Nr(r||[]),Nr(o||[])),i=e.detail,l=i.element,c=go(l,a),s=i.currentPoints.canvas,d=fo(l,c,s,"mouse"),u=!!e.detail.event.shiftKey;if(d.length>0){var v=_o(d),f=v.tool,g=v.annotation,h=v.handle;return Do(g.annotationUID,u),void f.handleSelectedCallback(e,g,h,"Mouse")}var p=po(l,c,s,"mouse");if(p.length>0){var m=_o(p),w=m.tool,E=m.annotation;return Do(E.annotationUID,u),void w.toolSelectedCallback(e,E,"Mouse")}if(t&&"function"==typeof t.postMouseDownCallback&&t.postMouseDownCallback(e))return}}function _o(e){return e.length>1&&e.find((function(e){return!se(e.annotation)&&Me(e.annotation.annotationUID)}))||e[0]}function Do(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?be(e)?we(e,!1):we(e,!0,!0):we(e,!0,!1)}function Oo(e){if(!Ge.isInteractingWithTool){var t=Io(e);t&&(Ge.isMultiPartToolActive||t.addNewAnnotation&&we(t.addNewAnnotation(e,"mouse").annotationUID))}}var So=so.bind(null,"Mouse","doubleClickCallback");function xo(e){if(!Ge.isInteractingWithTool){var t=Io(e);!t||"function"!=typeof t.mouseDragCallback||t.mouseDragCallback(e)}}function Mo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ko=ze.Active,Ro=ze.Passive;function Po(e){if(!Ge.isInteractingWithTool&&!Ge.isMultiPartToolActive){var t,n=Zr(e,[ko,Ro]),r=e.detail.element,o=go(r,n),a=n.filter((function(e){return!o.some((function(t){return t.tool.getToolName()===e.getToolName()}))})),i=!1,l=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Mo(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Mo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(l.s();!(t=l.n()).done;){var c=t.value,s=c.tool,d=c.annotations;"function"==typeof s.mouseMoveCallback&&(i=s.mouseMoveCallback(e,d)||i)}}catch(e){l.e(e)}finally{l.f()}a.forEach((function(t){"function"==typeof t.mouseMoveCallback&&t.mouseMoveCallback(e)})),!0===i&&Yr(r)}}var No=so.bind(null,"Mouse","mouseUpCallback"),Ao=so.bind(null,"MouseWheel","mouseWheelCallback"),Lo={enable:function(e){e.addEventListener($.MOUSE_CLICK,uo),e.addEventListener($.MOUSE_DOWN,To),e.addEventListener($.MOUSE_DOWN_ACTIVATE,Oo),e.addEventListener($.MOUSE_DOUBLE_CLICK,So),e.addEventListener($.MOUSE_DRAG,xo),e.addEventListener($.MOUSE_MOVE,Po),e.addEventListener($.MOUSE_UP,No),e.addEventListener($.MOUSE_WHEEL,Ao)},disable:function(e){e.removeEventListener($.MOUSE_CLICK,uo),e.removeEventListener($.MOUSE_DOWN,To),e.removeEventListener($.MOUSE_DOWN_ACTIVATE,Oo),e.removeEventListener($.MOUSE_DOUBLE_CLICK,So),e.removeEventListener($.MOUSE_DRAG,xo),e.removeEventListener($.MOUSE_MOVE,Po),e.removeEventListener($.MOUSE_UP,No),e.removeEventListener($.MOUSE_WHEEL,Ao)}},Uo=ze.Active;function Vo(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=sn.mouseButton,a=Pr.getModifierKey(),i=jr(r,n);if(!i)return null;for(var l=Object.keys(i.toolOptions),c=i.getDefaultMousePrimary(),s=0;s<l.length;s++){var d=l[s],u=i.toolOptions[d],v=u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===(null!=o?o:c)&&e.modifierKey===a}));if(u.mode===Uo&&v)return i.getToolInstance(d)}}function Bo(e){var t=Vo(e);if(t){var n=e.detail,r=n.renderingEngineId,o=n.viewportId,a=jr(o,r),i=t.getToolName();Object.keys(a.toolOptions).includes(i)&&a.setViewportsCursorByToolName(i)}}function jo(e){var t=Vo(e);if(t){var n=e.detail,r=n.renderingEngineId,o=n.viewportId,a=jr(o,r);Mr();var i=t.getToolName();Object.keys(a.toolOptions).includes(i)&&a.setViewportsCursorByToolName(i)}}var Ho={enable:function(e){e.addEventListener($.KEY_DOWN,Bo),e.addEventListener($.KEY_UP,jo)},disable:function(e){e.removeEventListener($.KEY_DOWN,Bo),e.removeEventListener($.KEY_UP,jo)}},Wo=ze.Active;function Fo(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=e.detail.event,a=jr(r,n);if(!a)return null;for(var i=Object.keys(a.toolOptions),l=Object.keys(o.touches).length,c=Eo(o)||Pr.getModifierKey(),s=a.getDefaultMousePrimary(),d=0;d<i.length;d++){var u=i[d],v=a.toolOptions[u],f=v.bindings.length&&v.bindings.some((function(e){return(e.numTouchPoints===l||1===l&&e.mouseButton===s)&&e.modifierKey===c}));if(v.mode===Wo&&f)return a.getToolInstance(u)}}function Go(e,t,n){var r=e.detail,o=r.renderingEngineId,a=r.viewportId,i=jr(a,o);if(!i)return[];for(var l=[],c=Object.keys(i.toolOptions),s=0;s<c.length;s++){var d=c[s],u=i.toolOptions[d],v=null!=n&&u.bindings.length&&u.bindings.some((function(e){return e.numTouchPoints===n}));if(t.includes(u.mode)&&(!n||v)){var f=i.getToolInstance(d);l.push(f)}}return l}var qo=ze.Active,zo=ze.Passive;function Ko(e){if(!Ge.isInteractingWithTool){var t=Fo(e);if(t&&"function"==typeof t.preTouchStartCallback&&t.preTouchStartCallback(e))return;var n=1===Object.keys(e.detail.event.touches).length,r=Go(e,[qo],Object.keys(e.detail.event.touches).length),o=n?Go(e,[zo]):void 0,a=[].concat(Nr(r||[]),Nr(o||[]),[t]),i=e.detail,l=i.element,c=go(l,a),s=i.currentPoints.canvas,d=fo(l,c,s,"touch");if(d.length>0){var u=Yo(d),v=u.tool,f=u.annotation,g=u.handle;return Jo(f.annotationUID,!1),void v.handleSelectedCallback(e,f,g,"Touch")}var h=po(l,c,s,"touch");if(h.length>0){var p=Yo(h),m=p.tool,w=p.annotation;return Jo(w.annotationUID,!1),void m.toolSelectedCallback(e,w,"Touch")}if(t&&"function"==typeof t.postTouchStartCallback&&t.postTouchStartCallback(e))return}}function Yo(e){return e.length>1&&e.find((function(e){return!se(e.annotation)&&Me(e.annotation.annotationUID)}))||e[0]}function Jo(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?be(e)?we(e,!1):we(e,!0,!0):we(e,!0,!1)}function $o(e){if(!Ge.isInteractingWithTool){var t=Fo(e);t&&(Ge.isMultiPartToolActive||t.addNewAnnotation&&we(t.addNewAnnotation(e,"touch").annotationUID))}}function Zo(e){if(!Ge.isInteractingWithTool){var t=Fo(e);!t||"function"!=typeof t.touchDragCallback||t.touchDragCallback(e)}}var Xo=so.bind(null,"Touch","touchEndCallback"),Qo=so.bind(null,"Touch","touchTapCallback"),ea=so.bind(null,"Touch","touchPressCallback"),ta={enable:function(e){e.addEventListener($.TOUCH_START,Ko),e.addEventListener($.TOUCH_START_ACTIVATE,$o),e.addEventListener($.TOUCH_DRAG,Zo),e.addEventListener($.TOUCH_END,Xo),e.addEventListener($.TOUCH_TAP,Qo),e.addEventListener($.TOUCH_PRESS,ea)},disable:function(e){e.removeEventListener($.TOUCH_START,Ko),e.removeEventListener($.TOUCH_START_ACTIVATE,$o),e.removeEventListener($.TOUCH_DRAG,Zo),e.removeEventListener($.TOUCH_END,Xo),e.removeEventListener($.TOUCH_PRESS,ea)}};function na(e){var t,n=e.detail,r=n.element,o=n.viewportId,a=function(e){var t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg"),r="svg-layer-".concat(e);n.classList.add("svg-layer"),n.setAttribute("id",r),n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.style.width="100%",n.style.height="100%",n.style.pointerEvents="none",n.style.position="absolute";var o=document.createElementNS(t,"defs"),a=document.createElementNS(t,"filter"),i=document.createElementNS(t,"feOffset"),l=document.createElementNS(t,"feColorMatrix"),c=document.createElementNS(t,"feBlend");return a.setAttribute("id","shadow-".concat(r)),a.setAttribute("filterUnits","userSpaceOnUse"),i.setAttribute("result","offOut"),i.setAttribute("in","SourceGraphic"),i.setAttribute("dx","0.5"),i.setAttribute("dy","0.5"),l.setAttribute("result","matrixOut"),l.setAttribute("in","offOut"),l.setAttribute("in2","matrix"),l.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),c.setAttribute("in","SourceGraphic"),c.setAttribute("in2","matrixOut"),c.setAttribute("mode","normal"),a.appendChild(i),a.appendChild(l),a.appendChild(c),o.appendChild(a),n.appendChild(o),n}(o);!function(e){var t=e.dataset,n=t.viewportUid,r=t.renderingEngineUid,o="".concat(n,":").concat(r);Ge.svgNodeCache[o]={}}(r),t=a,r.querySelector("div.viewport-element").appendChild(t),Kr.addViewportElement(o,r),Dn.enable(r),kn.enable(r),Tr.enable(r),Pr.enable(r),$r.enable(r),no.enable(r),lo.enable(r),Lo.enable(r),Ho.enable(r),ta.enable(r),Ge.enabledElements.push(r)}var ra=function(e,t){var n=[];if(!t&&!e)throw new Error("At least one of renderingEngineId or viewportId should be given");for(var r=0;r<Ge.synchronizers.length;r++){var o=Ge.synchronizers[r],a=!o.isDisabled(),i=o.hasSourceViewport(t,e),l=o.hasTargetViewport(t,e);a&&(i||l)&&n.push(o)}return n},oa=function(e){var t=e.detail,n=t.element,r=t.viewportId;!function(e){var t=e.dataset,n=t.viewportUid,r=t.renderingEngineUid,o="".concat(n,":").concat(r);delete Ge.svgNodeCache[o]}(n),function(e){var t=e.querySelector("div.".concat("viewport-element")),n=t.querySelector("svg");n&&t.removeChild(n)}(n),Kr.removeViewportElement(r,n),Dn.disable(n),kn.disable(n),Tr.disable(n),Pr.disable(n),$r.disable(n),no.disable(n),lo.disable(n),Lo.disable(n),Ho.disable(n),ta.disable(n),function(e){var t=(0,Y.getEnabledElement)(e);ra(t.viewportId,t.renderingEngineId).forEach((function(e){e.remove(t)}))}(n),function(e){var t=(0,Y.getEnabledElement)(e),n=t.renderingEngineId,r=t.viewportId,o=jr(r,n);o&&o.removeViewports(n,r)}(n),function(e){var t=Ge.enabledElements.findIndex((function(t){return t===e}));t>-1&&Ge.enabledElements.splice(t,1)}(n)},aa=function(e,t){t.length&&t.forEach((function(t){var n=e.getViewport(t).element;Yr(n)}))},ia=function(e){var t=e.detail,n=t.viewportId,r=t.renderingEngineId,o=(0,Y.getRenderingEngine)(r);aa(o,[n])},la=function(e){e.detail.removed.length&&(0,Y.getRenderingEngines)().forEach((function(e){var t=e.getViewports().map((function(e){return e.id}));aa(e,t)}))},ca=function(e){var t=e.detail.segmentationId;At(t).forEach((function(e){Pt(e).forEach((function(n){n.segmentationId===t&&Ct(e,n.segmentationRepresentationUID)}))}))},sa=function(e){return Ge.toolGroups.find((function(t){return t.id===e}))};function da(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ua(e,t){return ua=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ua(e,t)}function va(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ua(e,t)}function fa(e,t){if(t&&("object"===Z(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return da(e)}function ga(e){return ga=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ga(e)}function ha(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pa(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ha(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ha(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ma(){return Ft()}function wa(e){Gt(e)}function Ea(e){return ma().representations[e]}function ya(e,t){var n=ma();wa(pa(pa({},n),{},{representations:pa(pa({},n.representations),{},ne({},e,pa(pa({},n.representations[e]),t)))}))}function Ia(e){return Lt(e)}function ba(e,t){Ut(e,t)}function Ca(e,t){return Bt(e,t)}function Ta(e,t,n){Vt(e,t,n)}function _a(e,t,n){return jt(e,t,n)}function Da(e,t,n){Ht(e,t,n)}function Oa(e,t,n){var r=Pt(e);if(r){var o=r.find((function(e){return e.segmentationRepresentationUID===t}));if(o){var a=o.segmentsHidden,i=function(e){var t=Mt(e);if(t.type===ut.Labelmap){for(var n=Y.cache.getVolume(e).getScalarData(),r={},o=0;o<n.length;o++){var a=n[o];0===a||r[a]||(r[a]=!0)}return Object.keys(r).map((function(e){return parseInt(e,10)}))}if(t.type===ut.Contour){var i,l=null===(i=t.representationData.CONTOUR)||void 0===i?void 0:i.geometryIds;if(!l)throw new Error("No geometryIds found for segmentationId ".concat(e));return l.map((function(e){return Y.cache.getGeometry(e).data.getSegmentIndex()}))}}(o.segmentationId);n?a.clear():i.forEach((function(e){a.add(e)})),Ct(e,o.segmentationRepresentationUID)}}}function Sa(e,t){var n=Pt(e).find((function(e){return e.segmentationRepresentationUID===t}));if(n)return 0===n.segmentsHidden.size}function xa(e,t,n,r){var o=qt(e,t);o&&(n.forEach((function(e){r?o.segmentsHidden.delete(e):o.segmentsHidden.add(e)})),Ct(e,t))}function Ma(e,t,n,r){var o=qt(e,t);o&&(r?o.segmentsHidden.delete(n):o.segmentsHidden.add(n),Ct(e,t))}var ka=function(){function e(t,n){te(this,e),ne(this,"supportedInteractionTypes",void 0),ne(this,"configuration",void 0),ne(this,"toolGroupId",void 0),ne(this,"mode",void 0);var r=Y.utilities.deepMerge(n,t),o=r.configuration,a=void 0===o?{}:o,i=r.supportedInteractionTypes,l=r.toolGroupId;a.strategies||(a.strategies={},a.defaultStrategy=void 0,a.activeStrategy=void 0,a.strategyOptions={}),this.toolGroupId=l,this.supportedInteractionTypes=i||[],this.configuration=Object.assign({},a),this.mode=ze.Disabled}return ee(e,[{key:"getToolName",value:function(){return this.constructor.toolName}},{key:"applyActiveStrategy",value:function(e,t){var n=this.configuration;return n.strategies[n.activeStrategy].call(this,e,t)}},{key:"setConfiguration",value:function(e){this.configuration=Y.utilities.deepMerge(this.configuration,e)}},{key:"setActiveStrategy",value:function(e){this.setConfiguration({activeStrategy:e})}},{key:"getTargetVolumeId",value:function(e){var t;if(this.configuration.volumeId)return this.configuration.volumeId;var n=e.getActors();return n?null===(t=n.find((function(e){return"vtkVolume"===e.actor.getClassName()})))||void 0===t?void 0:t.uid:void 0}},{key:"getTargetIdImage",value:function(e,t){if(e.startsWith("imageId:")){var n=e.split("imageId:")[1],r=Y.utilities.imageIdToURI(n),o=Y.utilities.getViewportsWithImageURI(r,t.id);if(!o||!o.length)return;if(!(o=o.filter((function(e){return e.getCurrentImageId()===n})))||!o.length)return;return o[0].getImageData()}if(e.startsWith("volumeId:")){var a=e.split("volumeId:")[1],i=Y.utilities.getViewportsWithVolumeId(a,t.id);if(!i||!i.length)return;return i[0].getImageData()}throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}},{key:"getTargetId",value:function(e){if(e instanceof Y.StackViewport)return"imageId:".concat(e.getCurrentImageId());if(e instanceof Y.BaseVolumeViewport)return"volumeId:".concat(this.getTargetVolumeId(e));throw new Error("getTargetId: viewport must be a StackViewport or VolumeViewport")}}]),e}();ne(ka,"toolName",void 0),ka.toolName="BaseTool";var Ra=ka;function Pa(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void n(e)}l.done?t(c):Promise.resolve(c).then(r,o)}function Na(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){Pa(a,r,o,i,l,"next",e)}function l(e){Pa(a,r,o,i,l,"throw",e)}i(void 0)}))}}var Aa=h(841),La=h.n(Aa),Ua=h(785),Va=h.n(Ua),Ba=h(127),ja=h.n(Ba),Ha=h(474),Wa=h.n(Ha),Fa=h(610),Ga=h.n(Fa),qa=h(396),za=h.n(qa),Ka=h(348),Ya=h.n(Ka),Ja=h(70),$a=h.n(Ja);function Za(e,t,n){var r,o,a=null===(r=e.segmentSpecificConfig)||void 0===r?void 0:r[t];return a||(a=null===(o=e.segmentSpecificConfig)||void 0===o?void 0:o[n]),a?a.CONTOUR:null}var Xa=new Map;function Qa(e){return Xa.get(e)}function ei(e,t){Xa.set(e,t)}function ti(e,t,n,r,o){var a=n.segmentationRepresentationUID,i=n.segmentsHidden,l=ja().newInstance(),c=new Map,s=new Map;t.forEach((function(e){var t=Y.cache.getGeometry(e);if(t){var r=t.data.getSegmentIndex();!function(e){if(!e)throw new Error("No contours found for geometryId ".concat(e.id));var t=e.id;if(e.type!==Y.Enums.GeometryType.CONTOUR)throw new Error("Geometry type ".concat(e.type," not supported for rendering."));e.data||console.warn("No contours found for geometryId ".concat(t,". Skipping render."))}(t);for(var o=Za(n,e,r),a=t.data,d=function(e){var t=[],n=Ya().newInstance(),r=za().newInstance(),o=0;e.getContours().forEach((function(e){var n=e.getPoints(),a=e.getFlatPointsArray(),i=e.getType(),l=n.map((function(e,t){return t+o}));i===Y.Enums.ContourType.CLOSED_PLANAR&&l.push(l[0]);var c=Float32Array.from(a);t.push.apply(t,Nr(c)),r.insertNextCell(Nr(l)),o+=n.length})),n.setData(t,3);var a=$a().newInstance();return a.setPoints(n),a.setLines(r),a}(a),u=a.getColor(),v=d.getPoints().getNumberOfPoints(),f=Va().newInstance({size:4*v,numberOfComponents:4,dataType:"Uint8Array"}),g=0;g<v;++g)f.setTuple(g,[].concat(Nr(u),[255]));d.getPointData().setScalars(f),o&&s.set(r,o),c.set(r,[].concat(Nr(u),[i.has(r)?0:255])),0===r?l.setInputData(d):l.addInputData(d)}else console.warn("No geometry found for geometryId ".concat(e,". Skipping render."))}));var d=l.getOutputData(),u=r.representations.CONTOUR.outlineWidthActive,v=Ga().newInstance();v.setInputData(d);var f=Wa().newInstance();f.setMapper(v),f.getProperty().setLineWidth(u),ei(a,Object.assign({},Qa(a),{segmentsHidden:new Set(i),segmentSpecificMap:s,outlineWidthActive:u})),f.setForceOpaque(!0),e.addActor({uid:o,actor:f}),e.resetCamera(),e.render()}function ni(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ri(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ri(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function ri(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function oi(e,t,n,r,o){var a=n.segmentationRepresentationUID,i=n.segmentsHidden,l=r.representations.CONTOUR,c=Qa(a),s=e.getActor(o);if(s){var d=s.actor,u=l.outlineWidthActive;(null==c?void 0:c.outlineWidthActive)!==u&&(d.getProperty().setLineWidth(u),ei(a,Object.assign({},c,{outlineWidthActive:u})));var v,f=d.getMapper(),g=f.getLookupTable(),h=[],p=[],m=ni(i);try{for(m.s();!(v=m.n()).done;){var w=v.value;c.segmentsHidden.has(w)||h.push(w)}}catch(e){m.e(e)}finally{m.f()}var E,y=ni(c.segmentsHidden);try{for(y.s();!(E=y.n()).done;){var I=E.value;i.has(I)||p.push(I)}}catch(e){y.e(e)}finally{y.f()}var b=Array.from(c.segmentsHidden).filter((function(e){return!p.includes(e)})).concat(h),C=t.reduce((function(e,t){var r=Y.cache.getGeometry(t).data,o=r.getSegmentIndex(),a=Za(n,t,o);return e.contourSets.push(r),e.segmentSpecificConfigs[o]=null!=a?a:{},e}),{contourSets:[],segmentSpecificConfigs:{}}),T=C.contourSets,_=C.segmentSpecificConfigs,D=[].concat(Nr(b),p),O=Object.values(_).some((function(e){return Object.keys(e).length>0})),S=!1;if(D.length||O){var x=f.getInputData(),M=x.getPointData().getScalars().getData(),k=0;T.forEach((function(e){var t,n=e.getSegmentIndex(),r=e.getTotalNumberOfPoints();if(D.includes(n)||null!==(t=_[n])&&void 0!==t&&t.fillAlpha){var o=e.getColor(),a=b.includes(n)?0:255,i=_[n];void 0!==i.fillAlpha&&(a=255*i.fillAlpha);for(var l=0;l<r;++l)M[k+4*l]=o[0],M[k+4*l+1]=o[1],M[k+4*l+2]=o[2],M[k+4*l+3]=a;S=!0}k+=4*r})),S&&x.modified(),ei(a,Object.assign({},c,{segmentsHidden:new Set(i)})),f.setLookupTable(g)}e.render()}else console.warn("No contour actor found for actorUID ".concat(o,". Skipping render."))}function ai(e,t,n,r){var o=n.segmentationRepresentationUID,a="CONTOUR_".concat(o);(e.getActor(a)?oi:ti)(e,t,n,r,a)}var ii=function(e,t){var n=(0,Y.getEnabledElement)(e).viewport,r=n.getActors().map((function(e){var n=e.uid;return n.includes(t)?n:void 0})).filter(Boolean);n.removeActors(r)};function li(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ci(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?li(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):li(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function si(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function di(){return(di=Na(La().mark((function e(t,n,r){var o,a,i,l,c,s;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.segmentationId,a=Y.utilities.uuidv4(),i=new Set,l={segmentationId:o,segmentationRepresentationUID:a,type:ut.Contour,segmentsHidden:i,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{}},r&&(c=Ia(t),s=Y.utilities.deepMerge(c,r),ba(t,{renderInactiveSegmentations:s.renderInactiveSegmentations||!0,representations:ci({},s.representations)})),Wt(t,l),e.abrupt("return",a);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ui(){return(ui=Na(La().mark((function e(t,n,r){var o,a,i,l;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=n.segmentationId,a=Mt(o),i=a.representationData[ut.Contour],null!=(l=i.geometryIds)&&l.length||console.warn("No contours found for segmentationId ".concat(o,". Skipping render.")),ai(t,l,n,r);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var vi={render:function(e,t,n){return ui.apply(this,arguments)},addSegmentationRepresentation:function(e,t,n){return di.apply(this,arguments)},removeSegmentationRepresentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){var n=sa(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return si(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?si(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(n.viewportsInfo);try{for(o.s();!(r=o.n()).done;){var a=r.value,i=a.viewportId,l=a.renderingEngineId,c=(0,Y.getEnabledElementByIds)(i,l);ii(c.viewport.element,t)}}catch(e){o.e(e)}finally{o.f()}})(e,t),Kt(e,t),function(e){Xa.delete(e)}(t),n&&sa(e).getViewportsInfo().forEach((function(e){var t=e.viewportId,n=e.renderingEngineId;(0,Y.getEnabledElementByIds)(t,n).viewport.render()}))}},fi=h(441),gi=h.n(fi),hi=h(795),pi=h.n(hi);function mi(){return(mi=Na(La().mark((function e(t,n,r){var o,a,i,l,c;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=(0,Y.getEnabledElement)(t),a=o.renderingEngine,i=o.viewport,l=i.id,c=[{volumeId:n,actorUID:r,visibility:!0,blendMode:Y.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND}],e.next=9,(0,Y.addVolumesToViewports)(a,c,[l],!1,!0);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var wi=function(e,t,n){return mi.apply(this,arguments)},Ei=function(e,t){var n=(0,Y.getEnabledElement)(e).viewport;n instanceof Y.StackViewport||n.removeVolumeActors([t])};function yi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ii(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ii(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ii(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ci=255,Ti=new Map;function _i(){return(_i=Na(La().mark((function e(t,n,r){var o,a,i,l,c,s,d,u;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.segmentationId,a=Y.utilities.uuidv4(),i=new Set,l=pi().newInstance(),(c=gi().newInstance()).addPoint(0,0),s={segmentationId:o,segmentationRepresentationUID:a,type:ut.Labelmap,segmentsHidden:i,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{cfun:l,ofun:c}},r&&(d=Ia(t),u=Y.utilities.deepMerge(d,r),ba(t,{renderInactiveSegmentations:u.renderInactiveSegmentations||!0,representations:bi({},u.representations)})),Wt(t,s),e.abrupt("return",a);case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Di(e,t){if(!t)return!0;var n=e.getDefaultActor();if(!n)return!1;var r=n.uid,o=Y.cache.getVolume(r);if(o){var a=Y.cache.getVolume(t);if(a&&o.metadata.FrameOfReferenceUID===a.metadata.FrameOfReferenceUID)return!0}return!1}function Oi(){return(Oi=Na(La().mark((function e(t,n,r){var o,a,i,l,c,s,d,u,v,f,g,h,p,m,w,E;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.colorLUTIndex,a=n.active,i=n.segmentationId,l=n.segmentationRepresentationUID,c=n.segmentsHidden,s=n.config,d=Mt(i),u=d.representationData[ut.Labelmap],v=u.volumeId,Y.cache.getVolume(v)){e.next=7;break}throw new Error("No Labelmap found for volumeId: ".concat(v));case 7:if(Di(t,null==u?void 0:u.referencedVolumeId)){e.next=9;break}return e.abrupt("return");case 9:if(f=t.getActor(l)){e.next=16;break}return g=Mt(i),h=g.representationData[ut.Labelmap].volumeId,e.next=15,ki(t,h,l);case 15:f=t.getActor(l);case 16:if(f){e.next=18;break}return e.abrupt("return");case 18:m=(p=s).cfun,w=p.ofun,E=r.renderInactiveSegmentations,Si(t.id,f,m,w,o,r.representations[ut.Labelmap],n,a,E,c);case 21:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Si(e,t,n,r,o,a,i,l,c,s){for(var d=i.segmentSpecificConfig,u=i.segmentationRepresentationSpecificConfig[ut.Labelmap],v=Jt(o),f=Math.min(256,v.length),g=t.actor,h=t.uid,p=xi(a,u,l),m=p.outlineWidth,w=p.renderOutline,E=p.outlineOpacity,y=0;y<f;y++){var I,b=y,C=v[b],T=xi(a,u,l,null===(I=d[b])||void 0===I?void 0:I[ut.Labelmap]),_=T.fillAlpha,D=T.outlineWidth,O=T.renderFill,S=Mi(e,h,b,{fillAlpha:_,renderFill:O,renderOutline:T.renderOutline,segmentColor:C,outlineWidth:D,segmentsHidden:s}),x=S.forceOpacityUpdate;if(S.forceColorUpdate&&n.addRGBPoint(b,C[0]/Ci,C[1]/Ci,C[2]/Ci),x)if(O){var M=s.has(b)?0:C[3]/255*_;r.removePoint(b),r.addPointLong(b,M,.5,1)}else r.addPointLong(b,.01,.5,1)}g.getProperty().setRGBTransferFunction(0,n),r.setClamping(!1),g.getProperty().setScalarOpacity(0,r),g.getProperty().setInterpolationTypeToNearest(),g.getProperty().setUseLabelOutline(w),g.getProperty().setLabelOutlineOpacity(E),g.getProperty().setLabelOutlineThickness(m);var k=l||c;g.setVisibility(k)}function xi(e,t,n,r){var o=r||{},a=bi(bi(bi({},e),t),o);return{fillAlpha:n?a.fillAlpha:a.fillAlphaInactive,outlineWidth:n?a.outlineWidthActive:a.outlineWidthInactive,renderFill:n?a.renderFill:a.renderFillInactive,renderOutline:a.renderOutline,outlineOpacity:n?a.outlineOpacity:a.outlineOpacityInactive}}function Mi(e,t,n,r){var o=r.fillAlpha,a=r.renderFill,i=r.renderOutline,l=r.segmentColor,c=r.outlineWidth,s=r.segmentsHidden,d="".concat(e,"-").concat(t,"-").concat(n),u=Ti.get(d);if(!u)return Ti.set(d,{fillAlpha:o,renderFill:a,renderOutline:i,outlineWidth:c,segmentColor:l,segmentsHidden:new Set(s)}),{forceOpacityUpdate:!0,forceColorUpdate:!0};var v=u.fillAlpha,f=u.renderFill,g=u.renderOutline,h=u.outlineWidth,p=u.segmentColor,m=u.segmentsHidden,w=p[0]!==l[0]||p[1]!==l[1]||p[2]!==l[2],E=p[3]!==l[3]||v!==o||f!==a||g!==i||h!==c||m.has(n)!==s.has(n);return Ti.set(d,{fillAlpha:o,renderFill:a,renderOutline:i,outlineWidth:c,segmentColor:l.slice(),segmentsHidden:new Set(s)}),{forceOpacityUpdate:E,forceColorUpdate:w}}function ki(e,t,n){return Ri.apply(this,arguments)}function Ri(){return(Ri=Na(La().mark((function e(t,n,r){return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,wi(t.element,n,r);case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Pi={render:function(e,t,n){return Oi.apply(this,arguments)},addSegmentationRepresentation:function(e,t,n){return _i.apply(this,arguments)},removeSegmentationRepresentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){var n=sa(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return yi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?yi(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(n.viewportsInfo);try{for(o.s();!(r=o.n()).done;){var a=r.value,i=a.viewportId,l=a.renderingEngineId,c=(0,Y.getEnabledElementByIds)(i,l);Ei(c.viewport.element,t)}}catch(e){o.e(e)}finally{o.f()}})(e,t),Kt(e,t),n&&sa(e).getViewportsInfo().forEach((function(e){var t=e.viewportId,n=e.renderingEngineId;(0,Y.getEnabledElementByIds)(t,n).viewport.render()}))}};function Ni(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ai=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{}};return te(this,o),ne(da(e=r.call(this,t,n)),"renderSegmentation",(function(t){var n=sa(t);if(n){var r=Pt(t);if(r&&0!==r.length){var o=n.viewportsInfo.map((function(e){var t=e.renderingEngineId,n=e.viewportId,r=(0,Y.getEnabledElementByIds)(n,t);if(r)return r.viewport})),a=r.map((function(n){var r,a=e._getMergedRepresentationsConfig(t),i=[],l=n.type===ut.Labelmap?Pi:vi,c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ni(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ni(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(c.s();!(r=c.n()).done;){var s=r.value,d=l.render(s,n,a);i.push(d)}}catch(e){c.e(e)}finally{c.f()}return i}));Promise.allSettled(a).then((function(){o.forEach((function(e){e.render()}))}))}}})),e}return ee(o,[{key:"onSetToolEnabled",value:function(){var e=this.toolGroupId,t=Pt(e);t&&0!==t.length&&t.forEach((function(t){Oa(e,t.segmentationRepresentationUID,!0)}))}},{key:"onSetToolDisabled",value:function(){var e=this.toolGroupId,t=Pt(e);t&&0!==t.length&&t.forEach((function(t){Oa(e,t.segmentationRepresentationUID,!1)}))}},{key:"_getMergedRepresentationsConfig",value:function(e){var t=Ia(e),n=ma();return Y.utilities.deepMerge(n,t)}}]),o}(Ra);ne(Ai,"toolName",void 0),Ai.toolName="SegmentationDisplay";var Li=Ai;function Ui(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Vi=function(){function e(){var t=this;te(this,e),ne(this,"_needsRender",new Set),ne(this,"_animationFrameSet",!1),ne(this,"_animationFrameHandle",null),ne(this,"hasBeenDestroyed",void 0),ne(this,"_renderFlaggedToolGroups",(function(){t._throwIfDestroyed();for(var e=0,n=Array.from(t._needsRender.values());e<n.length;e++){var r=n[e];if(t._triggerRender(r),t._needsRender.delete(r),0===t._needsRender.size)return t._animationFrameSet=!1,void(t._animationFrameHandle=null)}}))}return ee(e,[{key:"removeToolGroup",value:function(e){this._needsRender.delete(e),0===this._needsRender.size&&this._reset()}},{key:"renderToolGroupSegmentations",value:function(e){this._setToolGroupSegmentationToBeRenderedNextFrame([e])}},{key:"_throwIfDestroyed",value:function(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}},{key:"_setToolGroupSegmentationToBeRenderedNextFrame",value:function(e){var t=this;e.forEach((function(e){t._needsRender.add(e)})),this._render()}},{key:"_render",value:function(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedToolGroups),this._animationFrameSet=!0)}},{key:"_triggerRender",value:function(e){var t=sa(e);if(t){var n=t.viewportsInfo,r=[];n.forEach((function(e){var t=e.viewportId,n=e.renderingEngineId,o=(0,Y.getRenderingEngine)(n);o?r.push(o.getViewport(t)):console.warn("rendering Engine has been destroyed")}));var o=t.getToolInstance(Li.toolName);o?(r.forEach((function(e){e.element.addEventListener(Y.Enums.Events.IMAGE_RENDERED,a)})),o.renderSegmentation(e)):console.warn("No segmentation tool found inside",e)}else console.warn("No tool group found with toolGroupId: ".concat(e));function a(e){var t=e.detail,n=t.element,r=t.viewportId,o=t.renderingEngineId;n.removeEventListener(Y.Enums.Events.IMAGE_RENDERED,a);var i=jr(r,o);if(i){var l={toolGroupId:i.id,viewportId:r};(0,Y.triggerEvent)(Y.eventTarget,$.SEGMENTATION_RENDERED,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ui(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ui(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},l))}else console.warn("toolGroup has been destroyed")}}},{key:"_reset",value:function(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}}]),e}(),Bi=new Vi;function ji(e){Bi.renderToolGroupSegmentations(e)}var Hi=ji,Wi=function(e){var t=e.detail,n=t.segmentationId,r=t.modifiedSlicesToUse,o=Mt(n),a=o.representationData,i=o.type;if(i!==ut.Labelmap)throw new Error("onSegmentationDataModified: representationType ".concat(i," not supported yet"));var l=Y.cache.getVolume(a[i].volumeId);if(l){var c,s=l.imageData,d=l.vtkOpenGLTexture;if(r&&Array.isArray(r))c=r;else{var u=s.getDimensions()[2];c=Nr(Array(u).keys())}c.forEach((function(e){d.setUpdatedFrame(e)})),s.modified(),At(n).forEach((function(e){Hi(e)}))}else console.warn("segmentation not found in cache")},Fi=function(e){var t=e.detail.toolGroupId;Hi(t)},Gi=function(e){var t=e.detail,n=t.toolGroupId;t.segmentationRepresentationUID,Hi(n)},qi=function(e,t,n){var r=Pt(e);if(r&&0!==r.length){var o=r.map((function(e){return e.segmentationRepresentationUID})),a=t;if(a){var i=t.filter((function(e){return!o.includes(e)}));if(i.length>0)throw new Error("The following segmentationRepresentationUIDs are not part of the toolGroup: ".concat(JSON.stringify(i)))}else a=o;a.forEach((function(t){!function(e,t,n){var r=qt(e,t).type;if(r===ut.Labelmap)Pi.removeSegmentationRepresentation(e,t,n);else{if(r!==ut.Contour)throw new Error("The representation ".concat(r," is not supported yet"));vi.removeSegmentationRepresentation(e,t,n)}}(e,t,n)}))}},zi=function(e){var t=Ge.toolGroups.findIndex((function(t){return t.id===e}));t>-1&&(Bi.removeToolGroup(e),qi(e),Ge.toolGroups.splice(t,1))};function Ki(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Yi=function(){var e,t=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ki(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ki(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(Nr(Ge.toolGroups));try{for(t.s();!(e=t.n()).done;){var n=e.value;zi(n.id)}}catch(e){t.e(e)}finally{t.f()}Ge.toolGroups=[]},Ji=!1;function $i(){Ji||(function(){Xi();var e=Y.Enums.Events.ELEMENT_ENABLED,t=Y.Enums.Events.ELEMENT_DISABLED;Y.eventTarget.addEventListener(e,na),Y.eventTarget.addEventListener(t,oa)}(),Qi(),Y.eventTarget.addEventListener($.ANNOTATION_MODIFIED,ia),Y.eventTarget.addEventListener($.ANNOTATION_SELECTION_CHANGE,la),Y.eventTarget.addEventListener($.ANNOTATION_SELECTION_CHANGE,la),Y.eventTarget.addEventListener($.SEGMENTATION_MODIFIED,ca),Y.eventTarget.addEventListener($.SEGMENTATION_DATA_MODIFIED,Wi),Y.eventTarget.addEventListener($.SEGMENTATION_REPRESENTATION_MODIFIED,Fi),Y.eventTarget.addEventListener($.SEGMENTATION_REPRESENTATION_REMOVED,Gi),Ji=!0)}function Zi(){Xi(),Qi(),Yi(),We={},Ge=oe()(Fe);var e=$e(),t=xt();e.restoreAnnotations({}),t.resetState(),Ji=!1}function Xi(){var e=Y.Enums.Events.ELEMENT_ENABLED,t=Y.Enums.Events.ELEMENT_DISABLED;Y.eventTarget.removeEventListener(e,na),Y.eventTarget.removeEventListener(t,oa)}function Qi(){Y.eventTarget.removeEventListener($.ANNOTATION_MODIFIED,ia),Y.eventTarget.removeEventListener($.ANNOTATION_SELECTION_CHANGE,la),Y.eventTarget.removeEventListener($.ANNOTATION_SELECTION_CHANGE,la),Y.eventTarget.removeEventListener($.SEGMENTATION_MODIFIED,ca),Y.eventTarget.removeEventListener($.SEGMENTATION_DATA_MODIFIED,Wi),Y.eventTarget.removeEventListener($.SEGMENTATION_REPRESENTATION_MODIFIED,Fi),Y.eventTarget.removeEventListener($.SEGMENTATION_REPRESENTATION_REMOVED,Gi)}function el(e){var t=e.toolName,n=void 0!==Ge.tools[t];if(!t)throw new Error("No Tool Found for the ToolClass ".concat(e.name));if(n)throw new Error("".concat(t," has already been added globally"));Ge.tools[t]={toolClass:e}}function tl(e){var t=e.toolName;if(!t)throw new Error("No tool found for: ".concat(e.name));if(void 0===!Ge.tools[t])throw new Error("".concat(t," cannot be removed because it has not been added"));delete Ge.tools[t]}function nl(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function rl(e){var t,n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return nl(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(go(e,Hr(e,[ze.Active,ze.Passive])));try{for(n.s();!(t=n.n()).done;){var r=t.value.tool.cancel(e);if(r)return r}}catch(e){n.e(e)}finally{n.f()}}var ol=function(){function e(t,n,r,o){var a=this;te(this,e),ne(this,"_enabled",void 0),ne(this,"_eventName",void 0),ne(this,"_eventHandler",void 0),ne(this,"_ignoreFiredEvents",void 0),ne(this,"_sourceViewports",void 0),ne(this,"_targetViewports",void 0),ne(this,"_viewportOptions",{}),ne(this,"_options",void 0),ne(this,"id",void 0),ne(this,"_onEvent",(function(e){if(!0!==a._ignoreFiredEvents&&a._targetViewports.length){var t=(0,Y.getEnabledElement)(e.currentTarget);if(t){var n=t.renderingEngineId,r=t.viewportId;a._sourceViewports.find((function(e){return e.viewportId===r}))&&a.fireEvent({renderingEngineId:n,viewportId:r},e)}}})),this._enabled=!0,this._eventName=n,this._eventHandler=r,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=o||{},this.id=t}return ee(e,[{key:"isDisabled",value:function(){return!this._enabled||!this._hasSourceElements()}},{key:"setOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._viewportOptions[e]=t}},{key:"getOptions",value:function(e){return this._viewportOptions[e]}},{key:"add",value:function(e){this.addTarget(e),this.addSource(e)}},{key:"addSource",value:function(e){if(!il(this._sourceViewports,e)){var t=e.renderingEngineId,n=e.viewportId;(0,Y.getRenderingEngine)(t).getViewport(n).element.addEventListener(this._eventName,this._onEvent.bind(this)),this._updateDisableHandlers(),this._sourceViewports.push(e)}}},{key:"addTarget",value:function(e){il(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}},{key:"getSourceViewports",value:function(){return this._sourceViewports}},{key:"getTargetViewports",value:function(){return this._targetViewports}},{key:"destroy",value:function(){var e=this;this._sourceViewports.forEach((function(t){return e.removeSource(t)})),this._targetViewports.forEach((function(t){return e.removeTarget(t)}))}},{key:"remove",value:function(e){this.removeTarget(e),this.removeSource(e)}},{key:"removeSource",value:function(e){var t=al(this._sourceViewports,e);if(-1!==t){var n=function(e){var t=(0,Y.getRenderingEngine)(e.renderingEngineId);if(!t)throw new Error("No RenderingEngine for Id: ".concat(e.renderingEngineId));return t.getViewport(e.viewportId).element}(e);this._sourceViewports.splice(t,1),n.removeEventListener(this._eventName,this._eventHandler),this._updateDisableHandlers()}}},{key:"removeTarget",value:function(e){var t=al(this._targetViewports,e);-1!==t&&(this._targetViewports.splice(t,1),this._updateDisableHandlers())}},{key:"hasSourceViewport",value:function(e,t){return il(this._sourceViewports,{renderingEngineId:e,viewportId:t})}},{key:"hasTargetViewport",value:function(e,t){return il(this._targetViewports,{renderingEngineId:e,viewportId:t})}},{key:"fireEvent",value:function(e,t){var n=this;if(!this.isDisabled()&&!this._ignoreFiredEvents){this._ignoreFiredEvents=!0;var r=[];try{for(var o=0;o<this._targetViewports.length;o++){var a=this._targetViewports[o];e.viewportId===a.viewportId||r.push(this._eventHandler(this,e,a,t,this._options))}}catch(e){console.warn("Synchronizer, for: ".concat(this._eventName),e)}finally{r.length?Promise.allSettled(r).then((function(){n._ignoreFiredEvents=!1})):this._ignoreFiredEvents=!1}}}},{key:"_hasSourceElements",value:function(){return 0!==this._sourceViewports.length}},{key:"_updateDisableHandlers",value:function(){var e=function(e,t){for(var n=[],r=e.concat(t),o=function(){var e=r[a];n.some((function(t){return e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId}))||n.push(e)},a=0;a<r.length;a++)o();return n}(this._sourceViewports,this._targetViewports),t=this.remove,n=function(e){t(e.detail.element)};e.forEach((function(e){var t=(0,Y.getRenderingEngine)(e.renderingEngineId).getViewport(e.viewportId);if(t){var r=t.element;r.removeEventListener(Y.Enums.Events.ELEMENT_DISABLED,n),r.addEventListener(Y.Enums.Events.ELEMENT_DISABLED,n)}}))}}]),e}();function al(e,t){return e.findIndex((function(e){return t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId}))}function il(e,t){return e.some((function(e){return e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId}))}var ll=ol,cl=function(e,t,n,r){if(Ge.synchronizers.some((function(t){return t.id===e})))throw new Error("Synchronizer with id '".concat(e,"' already exists."));var o=new ll(e,t,n,r);return Ge.synchronizers.push(o),o},sl=function(){for(;Ge.synchronizers.length>0;)Ge.synchronizers.pop().destroy()},dl=function(e){return Ge.synchronizers.find((function(t){return t.id===e}))},ul=function(){return Ge.synchronizers},vl=function(e){var t=Ge.synchronizers.findIndex((function(t){return t.id===e}));t>-1&&(Ge.synchronizers[t].destroy(),Ge.synchronizers.splice(t,1))},fl=h(485),gl=h.n(fl),hl=Symbol("DefinedCursors"),pl=new Set(["alias","all-scroll","auto","cell","col-resize","context-menu","copy","crosshair","default","e-resize","ew-resize","grab","grabbing","help","move","ne-resize","nesw-resize","no-drop","none","not-allowed","n-resize","ns-resize","nw-resize","nwse-resize","pointer","progress","row-resize","se-resize","s-resize","sw-resize","text","vertical-text","wait","w-resize","zoom-in","zoom-out"]),ml=function(){function e(t,n){te(this,e),ne(this,"name",void 0),ne(this,"fallback",void 0),this.name=t+"",this.fallback=n}return ee(e,[{key:"getName",value:function(){return this.name+""}},{key:"addFallbackStyleProperty",value:function(t){var n=this.fallback;return n instanceof e?"".concat(t,", ").concat(n.getStyleProperty()):t+""}},{key:"getStyleProperty",value:function(){return this.addFallbackStyleProperty(this.name)+""}}],[{key:"getDefinedCursor",value:function(t){var n=wl(e,hl),r=n.get(t);return r instanceof e?r:pl.has(t)?(r=new e(t),n.set(t,r),r):void 0}},{key:"setDefinedCursor",value:function(t,n){return n instanceof e&&(wl(e,hl).set(t,n),!0)}}]),e}();function wl(e,t){var n=e[t];return n instanceof Map||(n=new Map,Object.defineProperty(e,t,{value:n})),n}var El=pl.values();function yl(){return yl="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=ga(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},yl.apply(this,arguments)}var Il=function(e){return e.Default="",e.Highlighted="Highlighted",e.Selected="Selected",e.Locked="Locked",e}(Il||{}),bl=Il;var Cl=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(e,t,n,a,i){var l;return te(this,o),ne(da(l=r.call(this,a||o.getUniqueInstanceName("image-cursor"),i)),"url",void 0),ne(da(l),"x",void 0),ne(da(l),"y",void 0),l.url=e,l.x=Number(t)||0,l.y=Number(n)||0,l}return ee(o,[{key:"getStyleProperty",value:function(){var e=this.url,t=this.x,n=this.y,r="url('".concat(e,"')");return t>=0&&n>=0&&(t>0||n>0)&&(r+=" ".concat(t," ").concat(n)),this.addFallbackStyleProperty(r)}}],[{key:"getUniqueInstanceName",value:function(e){return"".concat(e,"-").concat(Y.utilities.getRuntimeId(o))}}]),o}(ml),Tl={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n <path stroke="{{color}}" d="M8 16L8 0"></path>\n <path stroke="{{color}}" d="M16 8L0 8"></path>\n '},_l={x:127,y:60},Dl='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n',Ol='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n<rect fill="{{color}}" x="95.84" y="9.38" width="15.85" height="47.14"/>\n',Sl='<path fill="{{color}}" d="M82.89,10a12.09,12.09,0,0,0-16.8-2.5l-27.5,20.4-8.5-6.3a2.93,2.93,0,0,1-1.1-3,14.66,14.66,0,0,0,.1-6.6,14.08,14.08,0,1,0-6.5,15.2,2.87,2.87,0,0,1,3.2.2l8.2,6.1-8.2,6.1a2.87,2.87,0,0,1-3.2.2,14.16,14.16,0,1,0,6.7,14.4,14,14,0,0,0-.3-5.8,2.93,2.93,0,0,1,1.1-3l8.5-6.3,27.5,20.4A11.91,11.91,0,0,0,82.89,57l-31.7-23.5ZM15.29,21a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,21Zm0,36.8a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,57.77Zm28.3-21.5a2.8,2.8,0,1,1,2.8-2.8A2.8,2.8,0,0,1,43.59,36.27Z" transform="translate(-1.17 -0.96)"/>',xl='<path fill="{{color}}" d="M8.86,2.25V66.08H72.69V2.25H8.86ZM65.28,58.67h-49v-49h49v49Z" transform="translate(-8.86 -2.25)"/>',Ml='<path fill="{{color}}" d="M40.77,2.25A31.92,31.92,0,1,0,72.69,34.16,31.92,31.92,0,0,0,40.77,2.25Zm0,57.63A25.71,25.71,0,1,1,66.48,34.16,25.71,25.71,0,0,1,40.77,59.87Z" transform="translate(-8.86 -2.25)"/>',kl={Angle:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50\n 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23\n 10l50 50q10 10 10 23z" />',viewBox:{x:1792,y:1792}}),ArrowAnnotate:Rl(Tl,{iconContent:'<g id="arrowAnnotate-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="arrowAnnotate-arrow" d="M23,7 l-15,15 M7,17 l0,6 6,0" stroke-width="2" />\n </g>',viewBox:{x:24,y:24}}),Bidirectional:Rl(Tl,{iconContent:'<g fill="{{color}}" stroke-width="3" stroke="{{color}}">\n <path d="M27.63 3.21L3.12 28.81"></path>\n <path d="M27.63 15.75L15.27 4.43"></path>\n <path d="M16.5 4.28C16.5 4.96 15.95 5.51 15.27 5.51C14.59 5.51 14.03 4.96 14.03 4.28C14.03 3.59 14.59 3.04 15.27 3.04C15.95 3.04 16.5 3.59 16.5 4.28Z" ></path>\n <path d="M28.87 3.19C28.87 3.87 28.31 4.43 27.63 4.43C26.95 4.43 26.4 3.87 26.4 3.19C26.4 2.51 26.95 1.95 27.63 1.95C28.31 1.95 28.87 2.51 28.87 3.19Z"></path>\n <path d="M28.87 15.75C28.87 16.43 28.31 16.99 27.63 16.99C26.95 16.99 26.4 16.43 26.4 15.75C26.4 15.07 26.95 14.51 27.63 14.51C28.31 14.51 28.87 15.07 28.87 15.75Z"></path>\n <path d="M4.73 28.44C4.73 29.12 4.17 29.68 3.49 29.68C2.81 29.68 2.25 29.12 2.25 28.44C2.25 27.76 2.81 27.2 3.49 27.2C4.17 27.2 4.73 27.76 4.73 28.44Z"></path>\n </g>',viewBox:{x:48,y:48}}),CobbAngle:Rl(Tl,{iconContent:'<g stroke="{{color}}" stroke-width="3">\n <path d="M28.59 2.34L3.82 12.32"></path>\n <path d="M28.59 29.66L3.82 19.68"></path>\n <path stroke-dasharray="2" fill-opacity="0" d="M12.37\n 23.06C12.67 22.36 12.85 21.93 12.92 21.76C14.6 17.8 14.68 13.35 13.15\n 9.33C13.11 9.24 13.02 9 12.88 8.63">\n </path>\n </g>',viewBox:{x:32,y:32}}),CircleROI:Rl(Tl,{iconContent:'<circle stroke="{{color}}" fill="none" stroke-width="3" cx="16" cy="16" r="14" />',viewBox:{x:32,y:32}}),EllipticalROI:Rl(Tl,{iconContent:'<path stroke="{{color}}" fill="none" stroke-width="3" d="M30.74 15.76C30.74 20.99 24.14 25.23 16\n 25.23C7.86 25.23 1.26 20.99 1.26 15.76C1.26 10.54 7.86 6.3 16 6.3C24.14\n 6.3 30.74 10.54 30.74 15.76Z" />',viewBox:{x:32,y:32}}),FreehandROI:Rl(Tl,{iconContent:'<g fill="{{color}}" stroke="{{color}}" stroke-width="2">\n <ellipse ry="1" rx="1" id="svg_3" cy="4.240343" cx="14.306499"/>\n <line id="svg_4" y2="3.58462" x2="12.242186" y1="3.997482" x1="13.432202"/>\n <line id="svg_5" y2="3.268901" x2="10.857882" y1="3.608906" x1="12.387902"/>\n <line id="svg_6" y2="3.147471" x2="9.740724" y1="3.293187" x1="10.955026"/>\n <line id="svg_7" y2="3.147471" x2="8.089274" y1="3.196043" x1="9.983585"/>\n <line id="svg_8" y2="3.268901" x2="6.874972" y1="3.123185" x1="8.307848"/>\n <line id="svg_9" y2="3.657478" x2="5.587812" y1="3.220329" x1="7.020688"/>\n <line id="svg_10" y2="4.046054" x2="4.737801" y1="3.560334" x1="5.854959"/>\n <line id="svg_11" y2="4.337487" x2="4.300652" y1="3.997482" x1="4.834945"/>\n <line id="svg_12" y2="4.726063" x2="3.88779" y1="4.191771" x1="4.470655"/>\n <line id="svg_15" y2="5.3575" x2="3.377783" y1="4.604633" x1="3.960648"/>\n <line id="svg_16" y2="6.183226" x2="2.916348" y1="5.138926" x1="3.547785"/>\n <line id="svg_17" y2="6.960379" x2="2.770632" y1="5.867507" x1="3.037779"/>\n <line id="svg_18" y2="7.713246" x2="2.673488" y1="6.741804" x1="2.819204"/>\n <line id="svg_19" y2="8.684687" x2="2.697774" y1="7.616102" x1="2.673488"/>\n <line id="svg_20" y2="9.753273" x2="2.892062" y1="8.611829" x1="2.697774"/>\n <line id="svg_21" y2="10.724714" x2="3.134923" y1="9.534698" x1="2.84349"/>\n <line id="svg_23" y2="11.647583" x2="3.596357" y1="10.578998" x1="3.086351"/>\n <line id="svg_25" y2="12.521881" x2="4.276366" y1="11.501867" x1="3.499213"/>\n <line id="svg_26" y2="13.930471" x2="5.830673" y1="12.376165" x1="4.13065"/>\n <line id="svg_28" y2="14.707624" x2="7.263549" y1="13.881899" x1="5.733528"/>\n <line id="svg_29" y2="15.339061" x2="8.963571" y1="14.61048" x1="7.06926"/>\n <line id="svg_30" y2="15.581921" x2="10.882168" y1="15.314775" x1="8.817855"/>\n <line id="svg_31" y2="15.460491" x2="12.023612" y1="15.581921" x1="10.785024"/>\n <line id="svg_33" y2="15.120487" x2="13.092197" y1="15.484777" x1="11.877895"/>\n <line id="svg_34" y2="14.586194" x2="13.86935" y1="15.217631" x1="12.897909"/>\n <line id="svg_35" y2="13.833327" x2="14.597931" y1="14.756196" x1="13.699348"/>\n <line id="svg_37" y2="12.716169" x2="15.180796" y1="13.881899" x1="14.549359"/>\n <line id="svg_39" y2="11.429009" x2="15.520801" y1="12.813313" x1="15.15651"/>\n <ellipse ry="1" rx="1" id="svg_40" cy="10.967574" cx="15.520801"/>\n </g>',viewBox:{x:18,y:18}}),FreehandROISculptor:Rl(Tl,{iconContent:'<g id="icon-freehand-sculpt" fill="none" stroke-width="1.5" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <line id="svg_1" y2="2.559367" x2="10.184807" y1="4.467781" x1="8.81711"/>\n <line id="svg_4" y2="1.493836" x2="11.727442" y1="2.766112" x1="10.089386"/>\n <line id="svg_7" y2="1.080346" x2="13.047428" y1="1.748291" x1="11.345759"/>\n <line id="svg_8" y2="1.000829" x2="14.351511" y1="1.112153" x1="12.77707"/>\n <line id="svg_9" y2="1.350705" x2="15.242104" y1="0.905408" x1="13.969828"/>\n <line id="svg_10" y2="2.098167" x2="15.862339" y1="1.14396" x1="14.955842"/>\n <line id="svg_11" y2="3.195505" x2="16.41896" y1="1.939133" x1="15.766918"/>\n <line id="svg_12" y2="4.292843" x2="16.530284" y1="2.925147" x1="16.387153"/>\n <line id="svg_16" y2="5.644637" x2="16.196311" y1="3.831643" x1="16.593898"/>\n <line id="svg_18" y2="7.266789" x2="15.623787" y1="5.19934" x1="16.275829"/>\n <line id="svg_19" y2="10.813258" x2="14.526449" y1="6.726071" x1="15.766918"/>\n <line id="svg_20" y2="5.056209" x2="8.085552" y1="4.181519" x1="8.976145"/>\n <line id="svg_23" y2="5.326568" x2="7.481221" y1="4.78585" x1="8.403621"/>\n <line id="svg_24" y2="5.565119" x2="6.749662" y1="5.294761" x1="7.624352"/>\n <line id="svg_25" y2="5.994512" x2="5.429675" y1="5.533312" x1="6.956407"/>\n <line id="svg_27" y2="6.551133" x2="4.284627" y1="5.962706" x1="5.572807"/>\n <line id="svg_28" y2="7.584858" x2="3.044158" y1="6.392099" x1="4.427758"/>\n <line id="svg_29" y2="8.84123" x2="2.185372" y1="7.489437" x1="3.219096"/>\n <line id="svg_31" y2="10.606513" x2="1.644654" y1="8.602678" x1="2.280792"/>\n <line id="svg_32" y2="13.214679" x2="1.48562" y1="10.352058" x1="1.724171"/>\n <line id="svg_33" y2="14.375631" x2="1.676461" y1="12.992031" x1="1.453813"/>\n <line id="svg_34" y2="15.298031" x2="2.264889" y1="14.152983" x1="1.517427"/>\n <line id="svg_35" y2="16.172721" x2="3.521261" y1="14.948155" x1="1.915013"/>\n <line id="svg_36" y2="16.824762" x2="5.207027" y1="15.997783" x1="3.28271"/>\n <line id="svg_38" y2="17.063314" x2="7.035924" y1="16.745245" x1="4.968475"/>\n <line id="svg_39" y2="16.888376" x2="9.278311" y1="17.047411" x1="6.733758"/>\n <line id="svg_40" y2="16.284045" x2="10.661911" y1="16.983797" x1="8.992048"/>\n <line id="svg_41" y2="15.313934" x2="11.647925" y1="16.395369" x1="10.455166"/>\n <line id="svg_44" y2="13.898527" x2="12.82478" y1="15.425259" x1="11.504794"/>\n <line id="svg_45" y2="12.037824" x2="14.144766" y1="14.312017" x1="12.522614"/>\n <line id="svg_47" y2="10.59061" x2="14.605966" y1="12.228665" x1="13.953925"/>\n <ellipse ry="1" rx="1" id="svg_48" cy="3.982726" cx="13.460918"/>\n </g>',viewBox:{x:18,y:18}}),Length:Rl(Tl,{iconContent:'<g id="length-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="length-dashes" d="m22.5,6 -16.5,16.5" stroke-width="3" stroke-dasharray="0.6666,5" />\n </g>',viewBox:{x:24,y:24}}),Probe:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75\n 75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73\n 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5\n 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5\n 385.5-103 385.5 103 279.5 279.5 103 385.5z" />',viewBox:{x:1792,y:1792}}),RectangleROI:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47\n 113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0\n 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119\n 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),TextMarker:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0\n 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29\n 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15\n 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5\n 13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0\n 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11\n 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0\n 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58\n 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z" />',viewBox:{x:1792,y:1792}}),Crosshairs:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26\n 19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45\n 19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26\n 0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5\n 112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32\n 188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5\n 278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26\n 0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26\n 0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161\n 154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161\n 37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z" />',viewBox:{x:1792,y:1792}}),Eraser:Rl(Tl,{iconContent:'<path transform="translate(0,1792) scale(1,-1)" fill="{{color}}" d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15\n 34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38\n 0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38\n 0 69.5 20.5t47.5 54.5z" />',viewBox:{x:2048,y:1792}}),Magnify:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />',viewBox:{x:512,y:512}}),Pan:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17\n 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355\n 355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59\n 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12\n 0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144\n 144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19\n 45v448q0 42-39 59-13 5-25 5-26 0-45-19z" />',viewBox:{x:1792,y:1792}}),Rotate:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39\n 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5\n 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0\n 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109\n 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298\n 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14\n 39 17 39 59z" />',viewBox:{x:1792,y:1792}}),StackScroll:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0\n 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547\n 0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z" />',viewBox:{x:24,y:28}}),WindowLevelRegion:Rl(Tl,{iconContent:'<path fill="{{color}}" d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119\n 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5\n 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),WindowLevel:Rl(Tl,{iconContent:'\n <path fill="{{color}}" d="M14.5,3.5 a1 1 0 0 1 -11,11 Z" stroke="none" opacity="0.8" />\n <circle cx="9" cy="9" r="8" fill="none" stroke-width="2" stroke="{{color}}" />',viewBox:{x:18,y:18}}),Zoom:Rl(Tl,{iconContent:'\n <path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />\n <path fill="{{color}}" transform="scale(0.22,0.22) translate(1400,0)" d="M1216\n 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19\n 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26\n 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />',viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Rl(Tl,{iconContent:"".concat(Sl," ").concat(Dl),viewBox:_l}),SegmentationFreeHandFillInside:Rl(Tl,{iconContent:"".concat(Sl," ").concat(Ol),viewBox:_l}),SegmentationFreeHandEraseOutside:Rl(Tl,{iconContent:"".concat(Sl," ").concat(Dl),viewBox:_l}),SegmentationFreeHandFillOutside:Rl(Tl,{iconContent:"".concat(Sl," ").concat(Ol),viewBox:_l}),SegmentationRectangleEraseInside:Rl(Tl,{iconContent:"".concat(xl," ").concat(Dl),viewBox:_l}),RectangleScissor:Rl(Tl,{iconContent:"".concat(xl," ").concat(Ol),viewBox:_l}),"RectangleScissor.FILL_INSIDE":Rl(Tl,{iconContent:"".concat(xl," ").concat(Ol),viewBox:_l}),"RectangleScissor.FILL_OUTSIDE":Rl(Tl,{iconContent:"".concat(xl," ").concat(Ol),viewBox:_l}),"RectangleScissor.ERASE_OUTSIDE":Rl(Tl,{iconContent:"".concat(xl," ").concat(Dl),viewBox:_l}),"RectangleScissor.ERASE_INSIDE":Rl(Tl,{iconContent:"".concat(xl," ").concat(Dl),viewBox:_l}),CircleScissor:Rl(Tl,{iconContent:"".concat(Ml," ").concat(Ol),viewBox:_l}),"CircleScissor.FILL_INSIDE":Rl(Tl,{iconContent:"".concat(Ml," ").concat(Ol),viewBox:_l}),"CircleScissor.ERASE_OUTSIDE":Rl(Tl,{iconContent:"".concat(Ml," ").concat(Dl),viewBox:_l}),"CircleScissor.FILL_OUTSIDE":Rl(Tl,{iconContent:"".concat(Ml," ").concat(Ol),viewBox:_l})};function Rl(e,t){return Object.assign(Object.create(e),t)}function Pl(e,t,n){kl[e]=Rl(Tl,{iconContent:t,viewBox:n})}var Nl=Object.keys(kl);function Al(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ll(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Al(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Al(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ul=new(function(){function e(){te(this,e),ne(this,"config",void 0),this._initializeConfig({color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(255, 255, 0)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0})}return ee(e,[{key:"getAnnotationToolStyles",value:function(e){return this.config.annotations&&this.config.annotations[e]}},{key:"getViewportToolStyles",value:function(e){return this.config.viewports&&this.config.viewports[e]}},{key:"getToolGroupToolStyles",value:function(e){return this.config.toolGroups&&this.config.toolGroups[e]}},{key:"getDefaultToolStyles",value:function(){return this.config.default}},{key:"setAnnotationStyles",value:function(e,t){var n=this.config.annotations;n||(this.config=Ll(Ll({},this.config),{},{annotations:{}}),n=this.config.annotations),n[e]=t}},{key:"setViewportToolStyles",value:function(e,t){var n=this.config.viewports;n||(this.config=Ll(Ll({},this.config),{},{viewports:{}}),n=this.config.viewports),n[e]=t}},{key:"setToolGroupToolStyles",value:function(e,t){var n=this.config.toolGroups;n||(this.config=Ll(Ll({},this.config),{},{toolGroups:{}}),n=this.config.toolGroups),n[e]=t}},{key:"setDefaultToolStyles",value:function(e){this.config.default=e}},{key:"getStyleProperty",value:function(e,t){var n=t.annotationUID,r=t.viewportId,o=t.toolGroupId,a=t.toolName;return this._getToolStyle(e,n,r,o,a)}},{key:"_getToolStyle",value:function(e,t,n,r,o){if(t){var a=this.getAnnotationToolStyles(t);if(a&&a[e])return a[e]}if(n){var i=this.getViewportToolStyles(n);if(i){if(i[o]&&i[o][e])return i[o][e];if(i.global&&i.global[e])return i.global[e]}}if(r){var l=this.getToolGroupToolStyles(r);if(l){if(l[o]&&l[o][e])return l[o][e];if(l.global&&l.global[e])return l.global[e]}}var c=this.getDefaultToolStyles();return c[o]&&c[o][e]?c[o][e]:c.global&&c.global[e]?c.global[e]:void 0}},{key:"_initializeConfig",value:function(e){var t={};for(var n in e)t[n]=e[n];this.config={default:{global:t}}}}]),e}());function Vl(e,t,n,r){for(var o=function(e,t,n){var r=["".concat(e)];return t&&r.push("".concat(r[0]).concat(t)),n&&r.push("".concat(r[r.length-1]).concat(n)),r}(e,n,r),a=o.length-1;a>=0;--a){var i=Ul.getStyleProperty(o[a],t);if(void 0!==i)return i}}var Bl=bl.Highlighted,jl=ze.Active,Hl=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(e,t,n,a,i){return te(this,o),r.call(this,e,t,n,a,i)}return ee(o,null,[{key:"getDefinedCursor",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0;n||(n=Vl("color",{},Bl,jl));var r=function(e,t,n){return"".concat(t?"pointer":"cursor",":").concat(e,"/").concat(n)}(e,t,n),a=yl(ga(o),"getDefinedCursor",this).call(this,r);if(!a){var i=function(e){return kl[e]}(e);i&&(a=Fl(i,r,t,n,yl(ga(o),"getDefinedCursor",this).call(this,"default")),yl(ga(o),"setDefinedCursor",this).call(this,r,a))}return a}}]),o}(Cl);function Wl(e,t){var n=Object(t),r=Object.prototype.hasOwnProperty.bind(n);return(e+"").replace(/\{\{(\w+)\}\}/g,(function(e,t){return r(t)?n[t]+"":""}))}function Fl(e,t,n,r,o){var a=e.mousePoint,i=a.x,l=a.y;return new Hl(function(e,t,n){return URL.createObjectURL(function(e,t,n){var r=(t?ql:Gl)(e,n);return new Blob([r],{type:"image/svg+xml"})}(e,t,n))}(e,n,{color:r}),i,l,t,o)}function Gl(e,t){var n=e.iconContent,r=e.iconSize,o=e.viewBox;return Wl('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(r,'" height="').concat(r,'" viewBox="0 0\n ').concat(o.x," ").concat(o.y,'">\n ').concat(n,"\n </svg>"),t)}function ql(e,t){var n=e.iconContent,r=e.iconSize,o=e.viewBox,a=e.mousePointerGroupString,i=r/Math.max(o.x,o.y,1),l=16+r;return Wl('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(l,'" height="').concat(l,'" viewBox="0 0 ').concat(l," ").concat(l,'">\n <g>').concat(a,'</g>\n <g transform="translate(16, 16) scale(').concat(i,')">').concat(n,"</g>\n </svg>"),t)}var zl=Symbol("ElementCursorsMap");function Kl(e,t){Zl(e)[0]=t,Yl(e,t)}function Yl(e,t){var n=Zl(e);n[1]=n[0],n[0]=t,e.style.cursor=(t instanceof ml?t:ml.getDefinedCursor("auto")).getStyleProperty()}function Jl(e){Yl(e,Zl(e)[1])}function $l(e){Yl(e,ml.getDefinedCursor("none"))}function Zl(e){var t=Zl[zl];t instanceof WeakMap||(t=new WeakMap,Object.defineProperty(Zl,zl,{value:t}));var n=t.get(e);return n||(n=[null,null],t.set(e,n)),n}var Xl=ze.Active,Ql=ze.Passive,ec=ze.Enabled,tc=ze.Disabled,nc=function(){function e(t){te(this,e),ne(this,"id",void 0),ne(this,"viewportsInfo",[]),ne(this,"toolOptions",{}),ne(this,"_toolInstances",{}),this.id=t}return ee(e,[{key:"getViewportIds",value:function(){return this.viewportsInfo.map((function(e){return e.viewportId}))}},{key:"getViewportsInfo",value:function(){return this.viewportsInfo.slice()}},{key:"getToolInstance",value:function(e){var t=this._toolInstances[e];if(t)return t;console.warn("'".concat(e,"' is not registered with this toolGroup (").concat(this.id,")."))}},{key:"addTool",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Ge.tools[e],r=void 0!==e&&""!==e,o=this.toolOptions[e];if(r)if(n)if(o)console.warn("'".concat(e,"' is already registered for ToolGroup ").concat(this.id,"."));else{var a=new(0,n.toolClass)({name:e,toolGroupId:this.id,configuration:t});this._toolInstances[e]=a}else console.warn("'".concat(e,"' is not registered with the library. You need to use cornerstoneTools.addTool to register it."));else console.warn("Tool with configuration did not produce a toolName: ",t)}},{key:"addToolInstance",value:function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=null===(n=Ge.tools[e])||void 0===n?void 0:n.toolClass;if(!o){var a=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){return te(this,o),r.apply(this,arguments)}return ee(o)}(Ge.tools[t].toolClass);a.toolName=e,o=a,Ge.tools[e]={toolClass:a}}this.addTool(o.toolName,r)}},{key:"addViewport",value:function(e,t){var n=(0,Y.getRenderingEngines)();if(!t&&n.length>1)throw new Error("You must specify a renderingEngineId when there are multiple rendering engines.");var r=t||n[0].id;this.viewportsInfo.some((function(t){return t.viewportId===e}))||this.viewportsInfo.push({viewportId:e,renderingEngineId:r});var o=this.getActivePrimaryMouseButtonTool();Y.Settings.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(o)}},{key:"removeViewports",value:function(e,t){var n=[];if(this.viewportsInfo.forEach((function(r,o){var a=!1;r.renderingEngineId===e&&(a=!0,t&&r.viewportId!==t&&(a=!1)),a&&n.push(o)})),n.length)for(var r=n.length-1;r>=0;r--)this.viewportsInfo.splice(n[r],1)}},{key:"setActiveStrategy",value:function(e,t){var n=this._toolInstances[e];void 0!==n?n.setActiveStrategy(t):console.warn("Tool ".concat(e," not added to toolGroup, can't set tool configuration."))}},{key:"setToolMode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e?t!==ze.Active?t!==ze.Passive?t!==ze.Enabled?t!==ze.Disabled?console.warn("setToolMode: mode must be defined"):this.setToolDisabled(e):this.setToolEnabled(e):this.setToolPassive(e):this.setToolActive(e,n):console.warn("setToolMode: toolName must be defined")}},{key:"setToolActive",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this._toolInstances[e];if(void 0!==n)if(n){var r=this.toolOptions[e]?this.toolOptions[e].bindings:[],o=t.bindings?t.bindings:[],a={bindings:[].concat(Nr(r),Nr(o)).reduce((function(e,t){var n=void 0!==t.numTouchPoints,r=void 0!==t.mouseButton;return e.some((function(e){return r=t,(n=e).mouseButton===r.mouseButton&&n.modifierKey===r.modifierKey;var n,r}))||!n&&!r||e.push(t),e}),[]),mode:Xl};this.toolOptions[e]=a,this._toolInstances[e].mode=Xl;var i=Y.Settings.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(t)&&i)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&i){var l=ml.getDefinedCursor("default");this._setCursorForViewports(l)}"function"==typeof n.onSetToolActive&&n.onSetToolActive(),this._renderViewports();var c={toolGroupId:this.id,toolName:e,toolBindingsOptions:t};(0,Y.triggerEvent)(Y.eventTarget,$.TOOL_ACTIVATED,c)}else console.warn("'".concat(e,"' instance ").concat(n," is not registered with this toolGroup, can't set tool mode."));else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolPassive",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n=this.getToolOptions(e),r=Object.assign({bindings:n?n.bindings:[]},n,{mode:Ql}),o=this.getDefaultMousePrimary();r.bindings=r.bindings.filter((function(e){return e.mouseButton!==o||e.modifierKey}));var a=Ql;0!==r.bindings.length&&(a=Xl,r.mode=a),this.toolOptions[e]=r,t.mode=a,"function"==typeof t.onSetToolPassive&&t.onSetToolPassive(),this._renderViewports()}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolEnabled",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n={bindings:[],mode:ec};this.toolOptions[e]=n,t.mode=ec,"function"==typeof t.onSetToolEnabled&&t.onSetToolEnabled(),this._renderViewports()}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolDisabled",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n={bindings:[],mode:tc};this.toolOptions[e]=n,t.mode=tc,"function"==typeof t.onSetToolDisabled&&t.onSetToolDisabled(),this._renderViewports()}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"getToolOptions",value:function(e){var t=this.toolOptions[e];if(void 0!==t)return t}},{key:"getActivePrimaryMouseButtonTool",value:function(){var e=this;return Object.keys(this.toolOptions).find((function(t){var n=e.toolOptions[t];return n.mode===Xl&&e._hasMousePrimaryButtonBinding(n)}))}},{key:"setViewportsCursorByToolName",value:function(e,t){var n=this._getCursor(e,t);this._setCursorForViewports(n)}},{key:"_getCursor",value:function(e,t){var n,r;return t&&(n="".concat(e,".").concat(t),r=Hl.getDefinedCursor(n,!0))?r:(n="".concat(e),(r=Hl.getDefinedCursor(n,!0))?r:(n=e,(r=Hl.getDefinedCursor(n,!0))||ml.getDefinedCursor("default")))}},{key:"_setCursorForViewports",value:function(e){this.viewportsInfo.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,o=(0,Y.getEnabledElementByIds)(r,n);o&&Kl(o.viewport.element,e)}))}},{key:"setToolConfiguration",value:function(e,t,n){return void 0===this._toolInstances[e]?(console.warn("Tool ".concat(e," not present, can't set tool configuration.")),!1):(r=n?t:Object.assign(this._toolInstances[e].configuration,t),this._toolInstances[e].configuration=r,this._renderViewports(),!0);var r}},{key:"getDefaultMousePrimary",value:function(){return mo.Primary}},{key:"getToolConfiguration",value:function(e,t){if(void 0!==this._toolInstances[e]){var n=gl()(this._toolInstances[e].configuration,t);return oe()(n)}console.warn("Tool ".concat(e," not present, can't set tool configuration."))}},{key:"_hasMousePrimaryButtonBinding",value:function(e){var t,n=this.getDefaultMousePrimary();return null==e||null===(t=e.bindings)||void 0===t?void 0:t.some((function(e){return e.mouseButton===n&&void 0===e.modifierKey}))}},{key:"_renderViewports",value:function(){this.viewportsInfo.forEach((function(e){var t=e.renderingEngineId,n=e.viewportId;(0,Y.getRenderingEngine)(t).renderViewport(n)}))}}]),e}(),rc=function(e){if(!Ge.toolGroups.some((function(t){return t.id===e}))){var t=new nc(e);return Ge.toolGroups.push(t),t}console.warn("'".concat(e,"' already exists."))},oc=function(){return Ge.toolGroups};function ac(e,t,n,r){var o=r.detail.camera,a=(0,Y.getRenderingEngine)(n.renderingEngineId);if(!a)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));var i=a.getViewport(n.viewportId);i.setCamera(o),i.render()}var ic=Y.Enums.Events.CAMERA_MODIFIED;function lc(e){return cl(e,ic,ac)}function cc(e,t,n,r,o){var a=r.detail,i=a.volumeId,l=a.range,c=a.invertStateChanged,s=a.invert,d=(0,Y.getRenderingEngine)(n.renderingEngineId);if(!d)throw new Error("Rendering Engine does not exist: ".concat(n.renderingEngineId));var u=d.getViewport(n.viewportId),v={voiRange:l};if(null!=o&&o.syncInvertState&&c&&(v.invert=s),u instanceof Y.BaseVolumeViewport)u.setProperties(v,i);else{if(!(u instanceof Y.StackViewport))throw new Error("Viewport type not supported.");u.setProperties(v)}u.render()}function sc(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{syncInvertState:!0};return cl(e,Y.Enums.Events.VOI_MODIFIED,cc,t)}function dc(e,t,n){var r=(0,Y.getRenderingEngine)(n.renderingEngineId);if(!r)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));var o=e.getOptions(n.viewportId),a=r.getViewport(n.viewportId),i=r.getViewport(t.viewportId);if(!1!==(null==o?void 0:o.syncZoom)){var l=i.getZoom();a.setZoom(l)}if(!1!==(null==o?void 0:o.syncPan)){var c=i.getPan();a.setPan(c)}a.render()}var uc=Y.Enums.Events.CAMERA_MODIFIED;function vc(e){return cl(e,uc,dc)}var fc=h(976);var gc=function(e,t,n){return Math.min(Math.max(t,e),n)};function hc(e,t){if(!(0,Y.getEnabledElement)(e.element))throw new Error("Scroll::Viewport is not enabled (it might be disabled)");if(e instanceof Y.StackViewport&&0===e.getImageIds().length)throw new Error("Scroll::Stack Viewport has no images");var n=e.type,r=t.volumeId,o=t.delta;if(e instanceof Y.StackViewport)e.scroll(o,t.debounceLoading,t.loop);else{if(!(e instanceof Y.VolumeViewport))throw new Error("Not implemented for Viewport Type: ".concat(n));!function(e,t,n){var r=Y.utilities.getVolumeViewportScrollInfo(e,t),o=r.numScrollSteps,a=r.currentStepIndex,i=r.sliceRangeInfo;if(i){var l=i.sliceRange,c=i.spacingInNormalDirection,s=i.camera,d=s.focalPoint,u=s.viewPlaneNormal,v=s.position,f=Y.utilities.snapFocalPointToSlice(d,v,l,u,c,n),g=f.newFocalPoint,h=f.newPosition;e.setCamera({focalPoint:g,position:h}),e.render();var p=a+n;if((p>o||p<0)&&e.getCurrentImageId()){var m={volumeId:t,viewport:e,delta:n,desiredStepIndex:p,currentStepIndex:a,numScrollSteps:o,currentImageId:e.getCurrentImageId()};Y.utilities.triggerEvent(Y.eventTarget,Y.EVENTS.VOLUME_SCROLL_OUT_OF_BOUNDS,m)}}}(e,r,o)}}function pc(){return pc=Na(La().mark((function e(t){var n,r,o,a,i,l,c,s,d,u,v=arguments;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=(n=v.length>1&&void 0!==v[1]?v[1]:{}).imageIndex,o=n.debounceLoading,a=n.volumeId,i=(0,Y.getEnabledElement)(t)){e.next=5;break}throw new Error("Element has been disabled");case 5:l=i.viewport,c=mc(l,o),s=c.imageIndex,d=c.numberOfSlices,u=wc(d,r),hc(l,{delta:u-s,debounceLoading:o,volumeId:a});case 10:case"end":return e.stop()}}),e)}))),pc.apply(this,arguments)}function mc(e,t){if(e instanceof Y.StackViewport)return{numberOfSlices:e.getImageIds().length,imageIndex:t?e.getTargetImageIdIndex():e.getCurrentImageIdIndex()};if(e instanceof Y.VolumeViewport)return Y.utilities.getImageSliceDataForVolumeViewport(e);throw new Error("Unsupported viewport type")}function wc(e,t){return gc(t,0,e-1)}var Ec=function(e){return pc.apply(this,arguments)},yc=function(e,t){return Y.utilities.spatialRegistrationMetadataProvider.get("spatialRegistrationModule",[e,t])};function Ic(e,t,n){return bc.apply(this,arguments)}function bc(){return(bc=Na(La().mark((function e(t,n,r){var o,a,i,l,c,s,d,u,v,f,g,h,p;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=(0,Y.getRenderingEngine)(r.renderingEngineId)){e.next=3;break}throw new Error("No RenderingEngine for Id: ".concat(r.renderingEngineId));case 3:if(a=o.getViewport(n.viewportId),null==(i=t.getOptions(r.viewportId))||!i.disabled){e.next=7;break}return e.abrupt("return");case 7:if(l=o.getViewport(r.viewportId),c=a.getCurrentImageId(),s=Y.metaData.get("imagePlaneModule",c),d=s.imagePositionPatient,u=l.getImageIds(),m=l,void 0,void 0,void 0,w=a.getCamera().viewPlaneNormal,E=m.getCamera().viewPlaneNormal,y=fc.vec3.dot(w,E),Math.abs(y)>.9){e.next=14;break}return e.abrupt("return");case 14:if(v=yc(r.viewportId,n.viewportId)){e.next=21;break}if(f=a.getFrameOfReferenceUID(),g=l.getFrameOfReferenceUID(),f===g&&!1!==i.useInitialPosition?v=fc.mat4.identity(fc.mat4.create()):(Y.utilities.calculateViewportsSpatialRegistration(a,l),v=yc(r.viewportId,n.viewportId)),v){e.next=21;break}return e.abrupt("return");case 21:if(h=fc.vec3.transformMat4(fc.vec3.create(),d,v),-1===(p=Cc(h,u)).index||l.getCurrentImageIdIndex()===p.index){e.next=26;break}return e.next=26,Ec(l.element,{imageIndex:p.index});case 26:case"end":return e.stop()}var m,w,E,y}),e)})))).apply(this,arguments)}function Cc(e,t){return t.reduce((function(t,n,r){var o=Y.metaData.get("imagePlaneModule",n).imagePositionPatient,a=fc.vec3.distance(o,e);return a<t.distance?{distance:a,index:r}:t}),{distance:1/0,index:-1})}var Tc=Y.Enums.Events.STACK_NEW_IMAGE;function _c(e){return cl(e,Tc,Ic)}var Dc=function(e,t,n){return"".concat(e,"::").concat(t,"::").concat(n)},Oc=function(e,t){Object.keys(e).forEach((function(n){var r=t.getAttribute(n),o=e[n];void 0===o||""===o?t.removeAttribute(n):r!==o&&t.setAttribute(n,o)}))},Sc=function(e,t){Object.keys(e).forEach((function(n){var r=e[n];void 0!==r&&""!==r&&t.setAttribute(n,r)}))},xc=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},a),c=l.color,s=l.fill,d=l.width,u=l.lineWidth,v=l.lineDash,f=l.fillOpacity,g=l.strokeOpacity,h=u||d,p=Dc(t,"circle",n),m=e.getSvgNode(p),w={cx:"".concat(r[0]),cy:"".concat(r[1]),r:"".concat(o),stroke:c,fill:s,"stroke-width":h,"stroke-dasharray":v,"fill-opacity":f,"stroke-opacity":g};if(m)Oc(w,m),e.setNodeTouched(p);else{var E=document.createElementNS("http://www.w3.org/2000/svg","circle");""!==i&&E.setAttribute("data-id",i),Sc(w,E),e.appendNode(E,p)}},Mc=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),c=l.color,s=l.width,d=l.lineWidth,u=l.lineDash,v=d||s,f=Dc(t,"ellipse",n),g=e.getSvgNode(f),h=Math.abs(r[0]-o[0]),p=Math.abs(r[1]-o[1]),m=[Math.min(r[0],o[0])+h/2,Math.min(r[1],o[1])+p/2],w=h/2,E=p/2,y={cx:"".concat(m[0]),cy:"".concat(m[1]),rx:"".concat(w),ry:"".concat(E),stroke:c,fill:"transparent","stroke-width":v,"stroke-dasharray":u};if(g)Oc(y,g),e.setNodeTouched(f);else{var I=document.createElementNS("http://www.w3.org/2000/svg","ellipse");""!==i&&I.setAttribute("data-id",i),Sc(y,I),e.appendNode(I,f)}},kc=function(e,t,n,r){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=Object.assign({color:"dodgerblue",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},o),i=a.color,l=a.handleRadius,c=a.width,s=a.lineWidth,d=a.fill,u=a.type,v=a.opacity,f=s||c,g=0;g<r.length;g++){var h=r[g],p=Dc(t,"handle","hg-".concat(n,"-index-").concat(g)),m=void 0;if("circle"===u)m={cx:"".concat(h[0]),cy:"".concat(h[1]),r:l,stroke:i,fill:d,"stroke-width":f,opacity:v};else{if("rect"!==u)throw new Error("Unsupported handle type: ".concat(u));var w=1.5*parseFloat(l),E=h[0]-.5*w,y=h[1]-.5*w;m={x:"".concat(E),y:"".concat(y),width:"".concat(w),height:"".concat(w),stroke:i,fill:d,"stroke-width":f,rx:"".concat(.1*w),opacity:v}}var I=e.getSvgNode(p);if(I)Oc(m,I),e.setNodeTouched(p);else{var b=document.createElementNS("http://www.w3.org/2000/svg",u);Sc(m,b),e.appendNode(b,p)}}};function Rc(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";if(!(isNaN(r[0])||isNaN(r[1])||isNaN(o[0])||isNaN(o[1]))){var l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0,shadow:void 0},a),c=l.color,s=l.width,d=l.lineWidth,u=l.lineDash,v=l.shadow,f=d||s,g=Dc(t,"line",n),h=e.getSvgNode(g),p=v?"filter:url(#shadow-".concat(e.svgLayerElement.id,");"):"",m={x1:"".concat(r[0]),y1:"".concat(r[1]),x2:"".concat(o[0]),y2:"".concat(o[1]),stroke:c,style:p,"stroke-width":f,"stroke-dasharray":u};if(h)Oc(m,h),e.setNodeTouched(g);else{var w=document.createElementNS("http://www.w3.org/2000/svg","line");""!==i&&w.setAttribute("data-id",i),Sc(m,w),e.appendNode(w,g)}}}function Pc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Nc(e,t,n,r,o){if(!(r.length<2)){var a,i=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0,connectLastToFirst:!1},o),l=i.color,c=i.width,s=i.lineWidth,d=i.lineDash,u=s||c,v=Dc(t,"polyline",n),f=e.getSvgNode(v),g="",h=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Pc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Pc(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(r);try{for(h.s();!(a=h.n()).done;){var p=a.value;g+="".concat(p[0],", ").concat(p[1]," ")}}catch(e){h.e(e)}finally{h.f()}if(o.connectLastToFirst){var m=r[0];g+="".concat(m[0],", ").concat(m[1])}var w={points:g,stroke:l,fill:"none","stroke-width":u,"stroke-dasharray":d};if(f)Oc(w,f),e.setNodeTouched(v);else{var E=document.createElementNS("http://www.w3.org/2000/svg","polyline");Sc(w,E),e.appendNode(E,v)}}}function Ac(e){var t=document.createElementNS("http://www.w3.org/2000/svg","tspan");return t.setAttribute("x","0"),t.setAttribute("dy","1.2em"),t.textContent=e,t}function Lc(e,t){var n=e.querySelector("rect.background");if(!t)return n&&e.removeChild(n),e.getBBox();n||((n=document.createElementNS("http://www.w3.org/2000/svg","rect")).setAttribute("class","background"),e.insertBefore(n,e.firstChild));var r=e.getBBox(),o={x:"".concat(r.x),y:"".concat(r.y),width:"".concat(r.width),height:"".concat(r.height),fill:t};return Oc(o,n),r}var Uc=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=function(e,t,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[""],a=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,l=i.padding,c=i.color,s=i.fontFamily,d=i.fontSize,u=i.background,v=a[0]+l,f=a[1]+l,g=Dc(t,"text",n),h=e.getSvgNode(g);if(h){for(var p=h.querySelector("text"),m=Array.from(p.children),w=0;w<m.length;w++){var E=m[w],y=o[w]||"";E.textContent=y}if(o.length>m.length){for(var I=0;I<o.length-m.length;I++){var b=Ac(o[I+m.length]);p.appendChild(b)}h.appendChild(p),e.appendNode(h,g)}var C={fill:c,"font-size":d,"font-family":s},T={transform:"translate(".concat(v," ").concat(f,")")};Oc(C,p),Oc(T,h),r=Lc(h,u),e.setNodeTouched(g)}else{var _=document.createElementNS("http://www.w3.org/2000/svg","g");_.setAttribute("transform","translate(".concat(v," ").concat(f,")"));for(var D=function(e,t){var n=t.color,r=t.fontFamily,o=t.fontSize,a=document.createElementNS("http://www.w3.org/2000/svg","text"),i="filter:url(#shadow-".concat(e.svgLayerElement.id,");"),l="".concat("user-select: none; pointer-events: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0);").concat(i);return a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("fill",n),a.setAttribute("font-family",r),a.setAttribute("font-size",o),a.setAttribute("style",l),a}(e,i),O=0;O<o.length;O++){var S=Ac(o[O]);D.appendChild(S)}_.appendChild(D),e.appendNode(_,g),r=Lc(_,u)}return Object.assign({},r,{x:v,y:f,height:r.height+l,width:r.width+l})}(e,t,n,r,o,Object.assign({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"14px",color:"rgb(255, 255, 0)",background:"",padding:25,centerX:!1,centerY:!0},a));return i};function Vc(e,t){var n=[0,0],r=Number.MAX_SAFE_INTEGER;return e.forEach((function(e){var o,a,i,l,c,s,d,u=(o=e,i=(a=lt(t,2))[0],l=a[1],s=(c=lt(o,2))[0],d=c[1],Math.sqrt(Math.pow(i-s,2)+Math.pow(l-d,2)));u<r&&(r=u,n=Nr(e))})),n}var Bc=function(e,t,n,r,o,a,i){var l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{},c=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},l),s=Uc(e,t,n,r,o,c);return function(e,t,n,r,o,a){var i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},l=r.length>0?Vc(r,o):o,c=Vc(function(e){var t=e.x,n=e.y,r=e.height,o=e.width,a=o/2,i=r/2;return[[t+a,n],[t,n+i],[t+a,n+r],[t+o,n+i]]}(a),l),s=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},i);Rc(e,t,"link-".concat(n),l,c,s)}(e,t,n,a,o,s,c),s};function jc(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),c=l.color,s=l.width,d=l.lineWidth,u=l.lineDash,v=d||s,f=Dc(t,"rect",n),g=e.getSvgNode(f),h=[Math.min(r[0],o[0]),Math.min(r[1],o[1])],p=Math.abs(r[0]-o[0]),m=Math.abs(r[1]-o[1]),w={x:"".concat(h[0]),y:"".concat(h[1]),width:"".concat(p),height:"".concat(m),stroke:c,fill:"transparent","stroke-width":v,"stroke-dasharray":u};if(g)Oc(w,g),e.setNodeTouched(f);else{var E=document.createElementNS("http://www.w3.org/2000/svg","rect");""!==i&&E.setAttribute("data-id",i),Sc(w,E),e.appendNode(E,f)}}function Hc(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(!(isNaN(r[0])||isNaN(r[1])||isNaN(o[0])||isNaN(o[1]))){var i=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),l=i.color,c=i.width,s=i.lineWidth;Rc(e,t,n,r,o,{color:l,width:c,lineWidth:s,lineDash:i.lineDash});var d=Math.atan2(o[1]-r[1],o[0]-r[0]),u={start:[o[0]-10*Math.cos(d-Math.PI/7),o[1]-10*Math.sin(d-Math.PI/7)],end:o},v={start:[o[0]-10*Math.cos(d+Math.PI/7),o[1]-10*Math.sin(d+Math.PI/7)],end:o};Rc(e,t,"2",u.start,u.end,{color:l,width:c,lineWidth:s}),Rc(e,t,"3",v.start,v.end,{color:l,width:c,lineWidth:s})}}function Wc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Fc(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=(0,Y.getEnabledElement)(e);if(!r)throw new Error("getAnnotationNearPoint: enabledElement not found");return Gc(r,t,n)}function Gc(e,t,n){var r=e.renderingEngineId,o=e.viewportId,a=jr(o,r);if(!a)return null;var i=a._toolInstances;for(var l in i){var c=qc(i[l],e,t,n);if(c)return c}return null}function qc(e,t,n,r){var o,a=t.viewport,i=Qe(e.constructor.toolName,null==a?void 0:a.element),l=null==a||null===(o=a.getCurrentImageId)||void 0===o?void 0:o.call(a);if(null!=i&&i.length){var c,s=t.viewport.element,d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Wc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Wc(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(i);try{for(d.s();!(c=d.n()).done;){var u,v=c.value,f=null===(u=v.metadata)||void 0===u?void 0:u.referencedImageId;if(!(l&&f&&l!==f||!e.isPointNearTool)&&(e.isPointNearTool(s,v,n,r,"")||e.getHandleNearImagePoint(s,v,n,r)))return v}}catch(e){d.e(e)}finally{d.f()}}return null}var zc=function(e){var t=Z(e);return null!==e&&("object"===t||"function"===t)},Kc=function(e,t,n){var r,o,a,i,l,c,s=0,d=!1,u=!1,v=!0,f=!t&&0!==t&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var n=r,a=o;return r=o=void 0,s=t,i=e.apply(a,n)}function h(e,t){return f?window.requestAnimationFrame(e):setTimeout(e,t)}function p(e){var n=e-c;return void 0===c||n>=t||n<0||u&&e-s>=a}function m(){var e=Date.now();if(p(e))return w(e);l=h(m,function(e){var n=e-s,r=t-(e-c);return u?Math.min(r,a-n):r}(e))}function w(e){return l=void 0,v&&r?g(e):(r=o=void 0,i)}function E(){for(var e=Date.now(),n=p(e),a=arguments.length,v=new Array(a),f=0;f<a;f++)v[f]=arguments[f];if(r=v,o=this,c=e,n){if(void 0===l)return function(e){return s=e,l=h(m,t),d?g(e):i}(c);if(u)return l=h(m,t),g(c)}return void 0===l&&(l=h(m,t)),i}return t=Number(t)||0,zc(n)&&(d=Boolean(n.leading),a=(u="maxWait"in n)?Math.max(Number(n.maxWait)||0,t):a,v="trailing"in n?Boolean(n.trailing):v),E.cancel=function(){void 0!==l&&function(e){if(f)return window.cancelAnimationFrame(e);clearTimeout(e)}(l),s=0,r=c=o=l=void 0},E.flush=function(){return void 0===l?i:w(Date.now())},E.pending=function(){return void 0!==l},E},Yc=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return zc(n)&&(r="leading"in n?Boolean(n.leading):r,o="trailing"in n?Boolean(n.trailing):o),Kc(e,t,{leading:r,trailing:o,maxWait:t})},Jc=Y.utilities.calibratedPixelSpacingMetadataProvider;function $c(e,t,n){"number"==typeof n&&(n={type:Y.Enums.CalibrationTypes.USER,scale:n}),Jc.add(e,n),t.getStackViewports().forEach((function(t){t.getImageIds().includes(e)&&t.calibrateSpacing(e)}))}function Zc(e,t,n,r){var o,a,i,l,c,s,d;d=e.getScalarData?e.getScalarData():e.getPointData().getScalars().getData();var u=e.getDimensions();if(r){var v=lt(r,3),f=lt(v[0],2);o=f[0],a=f[1];var g=lt(v[1],2);i=g[0],l=g[1];var h=lt(v[2],2);c=h[0],s=h[1]}else o=0,a=u[0],i=0,l=u[1],c=0,s=u[2];for(var p=fc.vec3.fromValues(o,i,c),m=e.getDirection(),w=m.slice(0,3),E=m.slice(3,6),y=m.slice(6,9),I=lt(e.getSpacing(),3),b=I[0],C=I[1],T=I[2],_=e.indexToWorld(p),D=fc.vec3.fromValues(w[0]*b,w[1]*b,w[2]*b),O=fc.vec3.fromValues(E[0]*C,E[1]*C,E[2]*C),S=fc.vec3.fromValues(y[0]*T,y[1]*T,y[2]*T),x=u[0],M=u[0]*u[1],k=[],R=c;R<=s;R++)for(var P=i;P<=l;P++)for(var N=o;N<=a;N++){var A=[N,P,R],L=N-o,U=P-i,V=R-c,B=_,j=[B[0]+L*D[0]+U*O[0]+V*S[0],B[1]+L*D[1]+U*O[1]+V*S[1],B[2]+L*D[2]+U*O[2]+V*S[2]];if(t(j,A)){var H=R*M+P*x+N,W=d[H];k.push({value:W,index:H,pointIJK:A,pointLPS:j}),null!==n&&n({value:W,index:H,pointIJK:A,pointLPS:j})}}return k}var Xc=function(e,t){var n=1/0,r=0,o=1/0,a=0,i=1/0,l=0;if(e.forEach((function(e){n=Math.min(e[0],n),r=Math.max(e[0],r),o=Math.min(e[1],o),a=Math.max(e[1],a),i=Math.min(e[2],i),l=Math.max(e[2],l)})),n=Math.floor(n),r=Math.floor(r),o=Math.floor(o),a=Math.floor(a),i=Math.floor(i),l=Math.floor(l),t){var c=lt(t,3),s=c[0],d=c[1],u=c[2];n=Math.max(0,n),r=Math.min(s-1,r),o=Math.max(0,o),a=Math.min(d-1,a),i=Math.max(0,i),l=Math.min(u-1,l)}return[[n,r],[o,a],[i,l]]},Qc=Y.utilities.transformWorldToIndex;function es(e,t,n,r){var o=function(e,t,n){var r,o=lt(e,2),a=o[0],i=o[1],l=fc.vec3.fromValues((a[0]+i[0])/2,(a[1]+i[1])/2,(a[2]+i[2])/2),c=fc.vec3.distance(a,i)/2;if(!n){var s=Qc(t,l),d=t.getSpacing(),u=Math.min.apply(Math,Nr(d)),v=Math.ceil(c/u);return{boundsIJK:r=[[s[0]-v,s[0]+v],[s[1]-v,s[1]+v],[s[2]-v,s[2]+v]],centerWorld:l,radiusWorld:c}}return r=function(e,t,n,r,o){var a=lt(n,2),i=a[0],l=a[1],c=e.getDimensions(),s=t.getCamera(),d=fc.vec3.fromValues(s.viewUp[0],s.viewUp[1],s.viewUp[2]),u=fc.vec3.fromValues(s.viewPlaneNormal[0],s.viewPlaneNormal[1],s.viewPlaneNormal[2]),v=fc.vec3.create();fc.vec3.cross(v,d,u);var f=fc.vec3.create(),g=fc.vec3.create();fc.vec3.scaleAndAdd(f,l,u,o),fc.vec3.scaleAndAdd(g,i,u,-o),fc.vec3.scaleAndAdd(f,f,v,-o),fc.vec3.scaleAndAdd(g,g,v,o);var h=[Qc(e,f),Qc(e,g)];return Xc(h,c)}(t,n,e,0,c),{boundsIJK:r,centerWorld:l,radiusWorld:c}}(t,e,r),a=o.boundsIJK,i={center:o.centerWorld,radius:o.radiusWorld};Zc(e,(function(e){return function(e,t){var n=e.center,r=e.radius;return Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)+Math.pow(t[2]-n[2],2)<=Math.pow(r,2)}(i,e)}),n,a)}var ts=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(null==e||""===e)return"NaN";if((e=Number(e))<1e-4)return"".concat(e);var n=e>=100?t-2:e>=10?t-1:e>=1?t:e>=.1?t+1:e>=.01?t+2:e>=.001?t+3:t+4;return e.toFixed(n)},ns=function(e,t,n){var r=n.THRESHOLD_INSIDE_CIRCLE,o=t.getScalarData()[e],a=r.threshold;return a[0]<=o&&o<=a[1]};function rs(e,t){var n,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=e.viewport,a=t.volume,i=t.segmentsLocked,l=t.segmentIndex,c=t.imageVolume,s=t.strategySpecificConfiguration,d=t.segmentationId,u=t.points,v=a.imageData,f=a.dimensions,g=a.getScalarData(),h=[];n=r?function(e){var t=e.value,n=e.index;e.pointIJK,i.includes(t)||ns(n,c,s)&&(g[n]=l,h.push(n))}:function(e){var t=e.index,n=e.value;i.includes(n)||(g[t]=l,h.push(t))},es(v,[u[0],u[1]],n,o);var p=f[0]*f[1],m=Math.floor(h[0]/p),w=Math.floor(h[h.length-1]/p);_t(d,Array.from({length:w-m+1},(function(e,t){return t+m})))}function os(e,t){rs(e,t,!0)}function as(e,t){var n=t.volume,r=t.imageVolume;if(!Y.utilities.isEqual(n.dimensions,r.dimensions)||!Y.utilities.isEqual(n.direction,r.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");rs(e,t,!0,!0)}function is(e,t){os(e,Object.assign({},t,{segmentIndex:0}))}function ls(e){var t=lt(e,4),n=t[0],r=t[1],o=t[2],a=t[3];return[[o[0],r[1]],[a[0],n[1]]]}function cs(e,t){var n=e.center,r=e.xRadius,o=e.yRadius,a=e.zRadius,i=lt(t,3),l=i[0],c=i[1],s=i[2],d=lt(n,3),u=d[0],v=d[1],f=d[2],g=0;return 0!==r&&(g+=(l-u)*(l-u)/(r*r)),0!==o&&(g+=(c-v)*(c-v)/(o*o)),0!==a&&(g+=(s-f)*(s-f)/(a*a)),g<=1}var ss=Y.utilities.transformWorldToIndex;function ds(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.volume,o=t.imageVolume,a=t.points,i=t.segmentsLocked,l=t.segmentIndex,c=t.segmentationId,s=t.strategySpecificConfiguration,d=r.imageData,u=r.dimensions,v=r.getScalarData(),f=e.viewport,g=fc.vec3.fromValues(0,0,0);a.forEach((function(e){fc.vec3.add(g,g,e)})),fc.vec3.scale(g,g,1/a.length);var h=lt(ls(a.map((function(e){return f.worldToCanvas(e)}))),2),p=h[0],m=h[1],w=f.canvasToWorld(p),E=f.canvasToWorld(m),y=[ss(d,w),ss(d,E)],I=Xc(y,u),b={center:g,xRadius:Math.abs(w[0]-E[0])/2,yRadius:Math.abs(w[1]-E[1])/2,zRadius:Math.abs(w[2]-E[2])/2},C=new Set;Zc(d,(function(e,t){return cs(b,e)}),n?function(e){var t=e.value,n=e.index,r=e.pointIJK;i.includes(t)||ns(n,o,s)&&(v[n]=l,C.add(r[2]))}:function(e){var t=e.value,n=e.index,r=e.pointIJK;i.includes(t)||(v[n]=l,C.add(r[2]))},I),_t(c,Array.from(C))}function us(e,t){ds(e,t,!1)}function vs(e,t){var n=t.volume,r=t.imageVolume;if(!Y.utilities.isEqual(n.dimensions,r.dimensions)||!Y.utilities.isEqual(n.direction,r.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");ds(e,t,!0)}function fs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gs(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fs(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function hs(e,t){us(e,gs(gs({},t),{},{segmentIndex:0}))}function ps(e){var t=xt().getSegmentationRepresentations(e);if(t)return t.find((function(e){return e.active}))}function ms(e,t){xt().setActiveSegmentationRepresentation(e,t),Ct(e,t)}function ws(e,t){var n=Mt(e);if(!n)throw new Error("No segmentation state found for ".concat(e));return n.segmentsLocked.has(t)}function Es(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=Mt(e);if(!r)throw new Error("No segmentation state found for ".concat(e));var o=r.segmentsLocked;n?o.add(t):o.delete(t),Tt(e)}function ys(e){var t=Mt(e);if(!t)throw new Error("No segmentation state found for ".concat(e));var n=t.segmentsLocked;return Array.from(n)}function Is(e,t){var n=Mt(e);(null==n?void 0:n.activeSegmentIndex)!==t&&(n.activeSegmentIndex=t,Tt(e))}function bs(e){var t=Mt(e);if(t)return t.activeSegmentIndex}function Cs(e,t){if(!e)throw new Error("addColorLUT: colorLUT is required");Y.utilities.isEqual(e[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),e.unshift([0,0,0,0])),$t(e,t)}function Ts(e,t,n){var r=qt(e,t);if(!r)throw new Error("setColorLUT: could not find segmentation representation with UID ".concat(t));if(!Jt(n))throw new Error("setColorLUT: could not find colorLUT with index ".concat(n));r.colorLUTIndex=n,Ct(e,t)}function _s(e,t,n){var r=qt(e,t);if(!r)throw new Error("segmentation representation with UID ".concat(t," does not exist for tool group ").concat(e));return Jt(r.colorLUTIndex)[n]}function Ds(e,t,n,r){for(var o=_s(e,t,n),a=0;a<r.length;a++)o[a]=r[a];Ct(e,t)}var Os=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:us,ERASE_INSIDE_CIRCLE:hs,FILL_INSIDE_SPHERE:os,ERASE_INSIDE_SPHERE:is,THRESHOLD_INSIDE_CIRCLE:vs,THRESHOLD_INSIDE_SPHERE:as},strategySpecificConfiguration:{THRESHOLD_INSIDE_CIRCLE:{threshold:[-150,-70]}},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:25}};return te(this,o),ne(da(e=r.call(this,t,n)),"_editData",void 0),ne(da(e),"_hoverData",void 0),ne(da(e),"onSetToolPassive",(function(){e.disableCursor()})),ne(da(e),"onSetToolEnabled",(function(){e.disableCursor()})),ne(da(e),"onSetToolDisabled",(function(){e.disableCursor()})),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail.element,r=(0,Y.getEnabledElement)(n),o=r.viewport,a=r.renderingEngine;if(o instanceof Y.StackViewport)throw new Error("Not implemented yet");var i=ps(e.toolGroupId);if(!i)throw new Error("No active segmentation detected, create one before using the brush tool");var l=i.segmentationId,c=i.type,s=ys(l),d=Mt(l).representationData[c].volumeId,u=Y.cache.getVolume(d),v=o.getActors()[0].uid,f=Y.cache.getVolume(v),g=[o.id];return e._editData={segmentation:u,imageVolume:f,segmentsLocked:s},e._activateDraw(n),$l(n),t.preventDefault(),aa(a,g),!0})),ne(da(e),"mouseMoveCallback",(function(t){e.mode===ze.Active&&e.updateCursor(t)})),ne(da(e),"_dragCallback",(function(t){var n=t.detail.element,r=(0,Y.getEnabledElement)(n),o=r.renderingEngine,a=e._editData,i=a.imageVolume,l=a.segmentation,c=a.segmentsLocked;e.updateCursor(t);var s=e._hoverData,d=s.segmentIndex,u=s.segmentationId,v=s.segmentationRepresentationUID,f=s.brushCursor,g=s.viewportIdsToRender,h=f.data,p=f.metadata,m=p.viewPlaneNormal,w=p.viewUp;aa(o,g);var E={points:h.handles.points,volume:l,imageVolume:i,segmentIndex:d,segmentsLocked:c,viewPlaneNormal:m,toolGroupId:e.toolGroupId,segmentationId:u,segmentationRepresentationUID:v,viewUp:w,strategySpecificConfiguration:e.configuration.strategySpecificConfiguration};e.applyActiveStrategy(r,E)})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e._editData,o=r.imageVolume,a=r.segmentation,i=r.segmentsLocked,l=e._hoverData,c=l.segmentIndex,s=l.segmentationId,d=l.segmentationRepresentationUID,u=l.brushCursor,v=u.data,f=u.metadata,g=f.viewPlaneNormal,h=f.viewUp;e._deactivateDraw(n),Jl(n);var p=(0,Y.getEnabledElement)(n),m=p.viewport;if(e._editData=null,e.updateCursor(t),m instanceof Y.StackViewport)throw new Error("Not implemented yet");var w={points:v.handles.points,volume:a,imageVolume:o,segmentIndex:c,segmentsLocked:i,viewPlaneNormal:g,toolGroupId:e.toolGroupId,segmentationId:s,segmentationRepresentationUID:d,viewUp:h,strategySpecificConfiguration:e.configuration.strategySpecificConfiguration};e.applyActiveStrategy(p,w)})),ne(da(e),"_activateDraw",(function(t){t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback)})),e}return ee(o,[{key:"disableCursor",value:function(){this._hoverData=void 0}},{key:"updateCursor",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints.canvas,o=(0,Y.getEnabledElement)(n),a=o.renderingEngine,i=o.viewport,l=i.getCamera(),c=l.viewPlaneNormal,s=l.viewUp,d=this.toolGroupId,u=ps(d);if(u){var v=u.segmentationRepresentationUID,f=u.segmentationId,g=bs(f),h=_s(d,v,g),p=[i.id],m={metadata:{viewPlaneNormal:Nr(c),viewUp:Nr(s),FrameOfReferenceUID:i.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:h},data:{}};this._hoverData={brushCursor:m,centerCanvas:r,segmentIndex:g,segmentationId:f,segmentationRepresentationUID:v,segmentColor:h,viewportIdsToRender:p},this._calculateCursor(n,r),aa(a,p)}else console.warn("No active segmentation detected, create one before using the brush tool")}},{key:"_calculateCursor",value:function(e,t){var n=(0,Y.getEnabledElement)(e).viewport,r=n.canvasToWorld,o=n.getCamera(),a=this.configuration.brushSize,i=fc.vec3.fromValues(o.viewUp[0],o.viewUp[1],o.viewUp[2]),l=fc.vec3.fromValues(o.viewPlaneNormal[0],o.viewPlaneNormal[1],o.viewPlaneNormal[2]),c=fc.vec3.create();fc.vec3.cross(c,i,l);for(var s=r([t[0],t[1]]),d=fc.vec3.create(),u=fc.vec3.create(),v=fc.vec3.create(),f=fc.vec3.create(),g=0;g<=2;g++)d[g]=s[g]-i[g]*a,u[g]=s[g]+i[g]*a,v[g]=s[g]-c[g]*a,f[g]=s[g]+c[g]*a;var h=this._hoverData.brushCursor.data;void 0===h.handles&&(h.handles={}),h.handles.points=[d,u,v,f],h.invalidated=!1}},{key:"invalidateBrushCursor",value:function(){void 0!==this._hoverData&&(this._hoverData.brushCursor.data.invalidated=!0)}},{key:"renderAnnotation",value:function(e,t){if(this._hoverData){var n=e.viewport;if(this._hoverData.viewportIdsToRender.includes(n.id)){var r=this._hoverData.brushCursor;if(!0===r.data.invalidated){var o=this._hoverData.centerCanvas,a=n.element;this._calculateCursor(a,o)}var i=r.metadata,l=i.brushCursorUID,c=r.data.handles.points.map((function(e){return n.worldToCanvas(e)})),s=c[0],d=c[1],u=[Math.floor((s[0]+d[0])/2),Math.floor((s[1]+d[1])/2)],v=Math.abs(s[1]-Math.floor((s[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");n.getRenderingEngine()?xc(t,l,"0",u,v,{color:f}):console.warn("Rendering Engine has been destroyed")}}}}]),o}(Ra);ne(Os,"toolName",void 0),Os.toolName="Brush";var Ss=Os;function xs(e,t){var n=sa(e);if(void 0!==n){var r=n._toolInstances;if(Object.keys(r).length)return t&&r[t]?[r[t]]:Object.values(r).filter((function(e){return e instanceof Ss}))}}function Ms(e,t,n,r){for(var o=[],a=0;a<2;a++)for(var i=0;i<2;i++)for(var l=0;l<2;l++){var c=r;c[0]=c[0]+(2*a-1)*n[0]/2,c[1]=c[1]+(2*i-1)*n[1]/2,c[2]=c[2]+(2*l-1)*n[2]/2,o.push(c)}var s=o.map((function(t){return Y.utilities.transformWorldToIndex(e,t)}));return Xc(s,t)}function ks(e,t){for(var n=e.spacing,r=(e.imageData,e.getScalarData()),o=[],a=0,i=0;i<t.length;i++){var l=t[i].volume,c=l.imageData,s=l.spacing,d=l.dimensions,u=t[i].volume.getScalarData().length;u===r.length&&(h=s,p=n,JSON.stringify(h)===JSON.stringify(p))&&(a=i);var v=c.getPointData().getScalars().getData(),f=t[i].lower,g=t[i].upper;o.push({imageData:c,referenceValues:v,lower:f,upper:g,spacing:s,dimensions:d,volumeSize:u})}var h,p;return{volumeInfoList:o,baseVolumeIdx:a}}var Rs=function(e,t,n){var r=e.imageData,o=e.getScalarData(),a=n.overwrite,i=n.boundsIJK,l=(null==n?void 0:n.overlapType)||0;if(a)for(var c=0;c<o.length;c++)o[c]=0;var s,d,u,v=ks(e,t),f=v.baseVolumeIdx,g=v.volumeInfoList,h=function(e,t,n){var r=e.imageData,o=e.dimensions,a=e.lower,i=e.upper,c=Ms(r,o,t,n);d=0,s=0,u={lower:a,upper:i};var v=!1;return Zc(r,(function(){return!0}),(function(e){var t=e.value;d+=1,t>=u.lower&&t<=u.upper&&(s+=1)}),c),0===l?v=s>0:1==l&&(v=s===d),v},p=function(e,t){var n=e.imageData,r=e.referenceValues,o=e.lower,a=e.upper,i=r[n.computeOffsetIndex(t)];return!(i<=o||i>=a)};return Zc(r,(function(){return!0}),(function(e){for(var t=e.index,n=e.pointIJK,r=e.pointLPS,a=g.length>0,i=0;i<g.length&&(a=g[i].volumeSize===o.length?p(g[i],n):h(g[i],g[f].spacing,r));i++);a&&(o[t]=1)}),i),_t(e.volumeId),e};function Ps(e,t){for(var n=e.length,r=[],o=0;o<n;o++){var a=e[o];a.getFrameOfReferenceUID()===t&&r.push(a)}return r}var Ns=ze.Active,As=ze.Passive,Ls=ze.Enabled;function Us(e,t){for(var n=e.length,r=[],o=0;o<n;o++){var a=e[o],i=jr(a.id,a.renderingEngineId);i&&Vs(i,t)&&r.push(a)}return r}function Vs(e,t){var n=e.toolOptions[t];if(!n)return!1;var r=n.mode;return r===Ns||r===As||r===Ls}var Bs=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.999;return e.filter((function(e){var r=e.getCamera();return Math.abs(fc.vec3.dot(r.viewPlaneNormal,t.viewPlaneNormal))>n}))};function js(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(0,Y.getEnabledElement)(e),o=r.renderingEngine,a=r.FrameOfReferenceUID,i=o.getViewports();i=Us(i=Ps(i,a),t);var l=o.getViewport(r.viewportId);return n&&(i=Bs(i,l.getCamera())),i.map((function(e){return e.id}))}function Hs(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ws=1-Y.CONSTANTS.EPSILON;function Fs(e,t,n){var r=t.viewPlaneNormal,o=e.filter((function(e){var t=e.metadata.viewPlaneNormal;if(!t){var n=e.metadata.referencedImageId,o=Y.metaData.get("imagePlaneModule",n).imageOrientationPatient,a=fc.vec3.fromValues(o[0],o[1],o[2]),i=fc.vec3.fromValues(o[3],o[4],o[5]);t=fc.vec3.create(),fc.vec3.cross(t,a,i),e.metadata.viewPlaneNormal=t}var l=Math.abs(fc.vec3.dot(r,t))>Ws;return t&&l}));if(!o.length)return[];var a,i=n/2,l=t.focalPoint,c=[],s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Hs(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Hs(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(s.s();!(a=s.n()).done;){var d=a.value,u=d.data.handles.points[0];if(d.isVisible){var v=fc.vec3.create();fc.vec3.sub(v,l,u);var f=fc.vec3.dot(v,r);Math.abs(f)<i&&c.push(d)}}}catch(e){s.e(e)}finally{s.f()}return c}function Gs(e,t){if(e instanceof Y.StackViewport){var n=e.getCurrentImageId(),r=n.indexOf(":"),o=n.substring(r+1);return t.filter((function(e){if(!e.isVisible)return!1;var t=e.metadata.referencedImageId;if(void 0===t)return!1;var n=t.indexOf(":");return t.substring(n+1)===o}))}if(e instanceof Y.VolumeViewport){var a=e.getCamera();return Fs(t,a,Y.utilities.getTargetVolumeAndSpacingInNormalDir(e,a).spacingInNormalDirection)}throw new Error("Viewport Type ".concat(e.type," not supported"))}var qs=function(e){if(e){if(e.data&&e.highlighted)return bl.Highlighted;if(be(e.annotationUID))return bl.Selected;if(se(e))return bl.Locked}return bl.Default};var zs=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e;te(this,o);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return ne(da(e=r.call.apply(r,[this].concat(n))),"onImageSpacingCalibrated",(function(t){var n=t.detail,r=n.element,o=n.imageId,a=Y.utilities.imageIdToURI(o),i=$e();i.getFramesOfReference().forEach((function(t){var n=i.getAnnotations(t)[e.getToolName()];n&&n.length&&(n.forEach((function(e){Y.utilities.imageIdToURI(e.metadata.referencedImageId)===a&&(e.invalidated=!0,e.data.cachedStats={})})),Yr(r))}))})),e}return ee(o,[{key:"filterInteractableAnnotationsForElement",value:function(e,t){if(t&&t.length)return Gs((0,Y.getEnabledElement)(e).viewport,t)}},{key:"getReferencedImageId",value:function(e,t,n,r){var o,a=this.getTargetId(e);if(e instanceof Y.StackViewport)o=a.split("imageId:")[1];else{var i=a.split("volumeId:")[1],l=Y.cache.getVolume(i);o=Y.utilities.getClosestImageId(l,t,n)}return o}},{key:"getStyle",value:function(e,t,n){return Vl(e,t,qs(n),this.mode)}}]),o}(Ra);ne(zs,"toolName",void 0),zs.toolName="AnnotationDisplayTool";var Ks=zs;function Ys(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Js=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(e,t){var n,a,i;return te(this,o),ne(da(i=r.call(this,e,t)),"mouseMoveCallback",(function(e,t){if(!t)return!1;var n,r=e.detail,o=r.element,a=r.currentPoints.canvas,l=!1,c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ys(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ys(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t);try{for(c.s();!(n=c.n()).done;){var s=n.value;if(!se(s)&&Me(s.annotationUID)){var d=s.data,u=d.handles?d.handles.activeHandleIndex:void 0,v=i._imagePointNearToolOrHandle(o,s,a,6),f=v&&!s.highlighted,g=!v&&s.highlighted;f||g?(s.highlighted=!s.highlighted,l=!0):d.handles&&d.handles.activeHandleIndex!==u&&(l=!0)}}}catch(e){c.e(e)}finally{c.f()}return l})),null!==(n=e.configuration)&&void 0!==n&&n.getTextLines&&(i.configuration.getTextLines=e.configuration.getTextLines),null!==(a=e.configuration)&&void 0!==a&&a.statsCalculator&&(i.configuration.statsCalculator=e.configuration.statsCalculator),i}return ee(o,[{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=t.data,i=a.handles,l=i.points,c=i.textBox;if(c){var s=c.worldBoundingBox;if(s){var d={topLeft:o.worldToCanvas(s.topLeft),topRight:o.worldToCanvas(s.topRight),bottomLeft:o.worldToCanvas(s.bottomLeft),bottomRight:o.worldToCanvas(s.bottomRight)};if(n[0]>=d.topLeft[0]&&n[0]<=d.bottomRight[0]&&n[1]>=d.topLeft[1]&&n[1]<=d.bottomRight[1])return a.handles.activeHandleIndex=null,c}}for(var u=0;u<l.length;u++){var v=l[u],f=o.worldToCanvas(v);if(!0==fc.vec2.distance(n,f)<r)return a.handles.activeHandleIndex=u,v}a.handles.activeHandleIndex=null}},{key:"getLinkedTextBoxStyle",value:function(e,t){return{visibility:this.getStyle("textBoxVisibility",e,t),fontFamily:this.getStyle("textBoxFontFamily",e,t),fontSize:this.getStyle("textBoxFontSize",e,t),color:this.getStyle("textBoxColor",e,t),shadow:this.getStyle("textBoxShadow",e,t),background:this.getStyle("textBoxBackground",e,t),lineWidth:this.getStyle("textBoxLinkLineWidth",e,t),lineDash:this.getStyle("textBoxLinkLineDash",e,t)}}},{key:"isSuvScaled",value:function(e,t,n){if(e instanceof Y.BaseVolumeViewport){var r,o=t.split("volumeId:")[1];return void 0!==(null===(r=Y.cache.getVolume(o).scaling)||void 0===r?void 0:r.PT)}if(e instanceof Y.StackViewport){var a=n&&Y.metaData.get("scalingModule",n);return"number"==typeof(null==a?void 0:a.suvbw)}throw new Error("Viewport is not a valid type")}},{key:"_imagePointNearToolOrHandle",value:function(e,t,n,r){return!!this.getHandleNearImagePoint(e,t,n,r)||!!this.isPointNearTool(e,t,n,r,"mouse")||void 0}}]),o}(Ks);ne(Js,"toolName",void 0),Js.toolName="AnnotationTool";var $s=Js,Zs=Y.Enums.CalibrationTypes,Xs="px",Qs=function(e,t){var n=t.calibration,r=t.hasPixelSpacing?"mm":Xs;return n&&n.type?n.type===Zs.UNCALIBRATED?Xs:n.SequenceOfUltrasoundRegions?"US Region":"".concat(r," ").concat(n.type):r},ed=function(e,t){var n=t.calibration,r=(t.hasPixelSpacing?"mm":Xs)+"²";return n&&n.type?n.SequenceOfUltrasoundRegions?"US Region":"".concat(r," ").concat(n.type):r},td=function(e){var t;return(null===(t=e.calibration)||void 0===t?void 0:t.scale)||1};function nd(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])}function rd(e,t,n){var r=nd(e,t);if(0===r)return nd(n,e);var o=((n[0]-e[0])*(t[0]-e[0])+(n[1]-e[1])*(t[1]-e[1]))/r;return nd(n,o<0?e:o>1?t:[e[0]+o*(t[0]-e[0]),e[1]+o*(t[1]-e[1])])}function od(e,t,n){if(2!==e.length||2!==t.length||2!==n.length)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(rd(e,t,n))}function ad(e,t){if(4!==e.length||2!==t.length)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");var n=lt(e,4),r=n[0],o=n[1],a=n[2],i=n[3],l=655535,c=function(e,t,n,r){return{top:[[e,t],[e+n,t]],right:[[e+n,t],[e+n,t+r]],bottom:[[e+n,t+r],[e,t+r]],left:[[e,t+r],[e,t]]}}(r,o,a,i);return Object.keys(c).forEach((function(e){var n=lt(c[e],2),r=od(n[0],n[1],t);r<l&&(l=r)})),l}function id(e){var t,n,r,o,a=(n=[(t=e)[0],t[1]].sort((function(e,t){return e[0]<t[0]?-1:1})),r=[t[0],t[1]].sort((function(e,t){return e[1]<t[1]?-1:1})),o=n[n.length-1],{top:r[0],bottom:r[r.length-1],right:o}),i=(a.top[1]+a.bottom[1])/2;return[a.right[0],i]}function ld(e,t,n,r){var o=fc.vec3.create();fc.vec3.cross(o,t,e);var a=fc.vec3.fromValues.apply(fc.vec3,Nr(n)),i=fc.vec3.fromValues.apply(fc.vec3,Nr(r)),l=fc.vec3.create();fc.vec3.subtract(l,a,i);var c=fc.vec3.length(l);if(c<1e-4)return{worldWidth:0,worldHeight:0};var s=fc.vec3.dot(l,o)/(c*fc.vec3.length(o));return{worldWidth:Math.sqrt(1-s*s)*c,worldHeight:s*c}}function cd(e,t,n){return"CT"===e?"HU":"PT"===e?function(e,t){if(!t.isPreScaled)return"raw";if(t.isSuvScaled)return"SUV";var n=Y.metaData.get("petSeriesModule",e);return(null==n?void 0:n.units)||"unitless"}(t,n):""}function sd(e,t){if(e instanceof Y.BaseVolumeViewport){var n=t.split("volumeId:")[1],r=Y.cache.getVolume(n);return!(null==r||!r.scaling)&&Object.keys(r.scaling).length>0}if(e instanceof Y.StackViewport){var o=(e.getImageData()||{}).preScale;return!(null==o||!o.scaled)}throw new Error("Viewport is not a valid type")}var dd=ee((function e(){te(this,e)}));ne(dd,"run",void 0),ne(dd,"getStatistics",void 0);var ud=dd;var vd=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){return te(this,o),r.apply(this,arguments)}return ee(o)}(ud);ne(vd,"max",-1/0),ne(vd,"currentMax",0),ne(vd,"sum",0),ne(vd,"sumSquares",0),ne(vd,"squaredDiffSum",0),ne(vd,"count",0),ne(vd,"statsCallback",(function(e){var t=e.value;t>vd.max&&(vd.max=t,vd.currentMax=t),vd.count+=1,vd.sum+=t,vd.sumSquares+=Math.pow(t,2),vd.squaredDiffSum+=Math.pow(t-vd.sum/vd.count,2)})),ne(vd,"getStatistics",(function(){var e=vd.sum/vd.count,t=Math.sqrt(vd.squaredDiffSum/vd.count),n=Math.sqrt(vd.sumSquares/vd.count-Math.pow(e,2));return vd.max=-1/0,vd.sum=0,vd.sumSquares=0,vd.squaredDiffSum=0,vd.count=0,[{name:"max",value:vd.currentMax,unit:null},{name:"mean",value:e,unit:null},{name:"stdDev",value:t,unit:null},{name:"stdDevWithSumSquare",value:n,unit:null}]}));var fd=Y.utilities.transformWorldToIndex,gd=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:hd,statsCalculator:vd}};return te(this,o),ne(da(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{points:[Nr(a),Nr(a),Nr(a),Nr(a)],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(c,h),g})),ne(da(e),"isPointNearTool",(function(t,n,r,o){var a=(0,Y.getEnabledElement)(t).viewport,i=n.data.handles.points,l=a.worldToCanvas(i[0]),c=a.worldToCanvas(i[3]),s=e._getRectangleImageCoordinates([l,c]),d=[r[0],r[1]];return ad([s.left,s.top,s.width,s.height],d)<=o})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),$l(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var c=js(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:c,handleIndex:i,movingTextBox:l},e._activateModify(o),$l(o);var s=(0,Y.getEnabledElement)(o).renderingEngine;aa(s,c),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}}})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g,h,p,m,w,E,y,I,b=n.currentPoints,C=(0,Y.getEnabledElement)(r).viewport,T=C.worldToCanvas,_=C.canvasToWorld,D=b.world,O=s.handles.points;switch(O[l]=Nr(D),l){case 0:case 3:g=T(O[0]),h=[(m=T(O[3]))[0],g[1]],p=[g[0],m[1]],E=_(h),y=_(p),O[1]=E,O[2]=y;break;case 1:case 2:h=T(O[1]),g=[(p=T(O[2]))[0],h[1]],m=[h[0],p[1]],w=_(g),I=_(m),O[0]=w,O[3]=I}a.invalidated=!0}e.editData.hasMoved=!0;var S=(0,Y.getEnabledElement)(r).renderingEngine;aa(S,i)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_MOVE,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_MOVE,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=c[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex,p=g.map((function(e){return i.worldToCanvas(e)}));u.annotationUID=o;var m,w=e.getStyle("lineWidth",u,r),E=e.getStyle("lineDash",u,r),y=e.getStyle("color",u,r),I=i.getCamera(),b=I.viewPlaneNormal,C=I.viewUp,T={isPreScaled:sd(i,s),isSuvScaled:e.isSuvScaled(i,s,r.metadata.referencedImageId)};if(l.cachedStats[s]&&void 0!==l.cachedStats[s].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,b,C,d,t,T),i instanceof Y.VolumeViewport)){var _=r.metadata.referencedImageId;for(var D in l.cachedStats)D.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=Y.utilities.imageIdToURI(_),n=e.hasImageURI(t),r=Y.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[D]}}else l.cachedStats[s]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,b,C,d,t,T);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Me(o))return"continue";se(r)||e.editData||null===h||(m=[p[h]]),m&&kc(n,o,"0",m,{color:y});var O="".concat(o,"-rect");jc(n,o,"0",p[0],p[3],{color:y,lineDash:E,lineWidth:w},O),a=!0;var S=e.getLinkedTextBoxStyle(u,r);if(!S.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var x=e.configuration.getTextLines(l,s);if(!x||0===x.length)return"continue";if(!l.handles.textBox.hasMoved){var M=id(p);l.handles.textBox.worldPosition=i.canvasToWorld(M)}var k=i.worldToCanvas(l.handles.textBox.worldPosition),R=Bc(n,o,"1",x,k,p,{},S),P=R.x,N=R.y,A=R.width,L=R.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([P,N]),topRight:i.canvasToWorld([P+A,N]),bottomLeft:i.canvasToWorld([P,N+L]),bottomRight:i.canvasToWorld([P+A,N+L])}},f=0;f<c.length;f++){var g=v();if("continue"!==g&&"object"===Z(g))return g.v}return a})),ne(da(e),"_getRectangleImageCoordinates",(function(e){var t=lt(e,2),n=t[0],r=t[1];return{left:Math.min(n[0],r[0]),top:Math.min(n[1],r[1]),width:Math.abs(n[0]-r[0]),height:Math.abs(n[1]-r[1])}})),ne(da(e),"_calculateCachedStats",(function(t,n,r,o,a,i){for(var l=t.data,c=a.viewportId,s=a.renderingEngineId,d=l.handles.points[0],u=l.handles.points[3],v=l.cachedStats,f=Object.keys(v),g=0;g<f.length;g++){var h=f[g],p=e.getTargetIdImage(h,o);if(p){var m=p.dimensions,w=p.imageData,E=p.metadata,y=("getScalarData"in p?p.getScalarData():p.scalarData,fd(w,d));y[0]=Math.floor(y[0]),y[1]=Math.floor(y[1]),y[2]=Math.floor(y[2]);var I=fd(w,u);if(I[0]=Math.floor(I[0]),I[1]=Math.floor(I[1]),I[2]=Math.floor(I[2]),e._isInsideVolume(y,I,m)){var b,C,T;e.isHandleOutsideImage=!1;var _=[[Math.min(y[0],I[0]),Math.max(y[0],I[0])],[Math.min(y[1],I[1]),Math.max(y[1],I[1])],[Math.min(y[2],I[2]),Math.max(y[2],I[2])]],D=ld(n,r,d,u),O=D.worldWidth,S=D.worldHeight,x=td(p),M=Math.abs(O*S)/(x*x),k=cd(E.Modality,t.metadata.referencedImageId,i),R=Zc(w,(function(){return!0}),e.configuration.statsCalculator.statsCallback,_),P=e.configuration.statsCalculator.getStatistics();v[h]={Modality:E.Modality,area:M,mean:null===(b=P[1])||void 0===b?void 0:b.value,stdDev:null===(C=P[2])||void 0===C?void 0:C.value,max:null===(T=P[0])||void 0===T?void 0:T.value,statsArray:P,pointsInShape:R,areaUnit:ed(0,p),modalityUnit:k}}else e.isHandleOutsideImage=!0,v[h]={Modality:E.Modality}}}t.invalidated=!1;var N=$.ANNOTATION_MODIFIED,A={annotation:t,viewportId:c,renderingEngineId:s};return(0,Y.triggerEvent)(Y.eventTarget,N,A),v})),ne(da(e),"_isInsideVolume",(function(e,t,n){return Y.utilities.indexWithinDimensions(e,n)&&Y.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o)}($s);function hd(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.max,i=n.stdDev,l=n.areaUnit,c=n.modalityUnit;if(void 0!==o){var s=[];return s.push("Area: ".concat(ts(r)," ").concat(l)),s.push("Mean: ".concat(ts(o)," ").concat(c)),s.push("Max: ".concat(ts(a)," ").concat(c)),s.push("Std Dev: ".concat(ts(i)," ").concat(c)),s}}ne(gd,"toolName",void 0),gd.toolName="RectangleROI";var pd=gd;var md=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}};return te(this,o),ne(da(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s,d,u=l.getCamera(),v=u.viewPlaneNormal,f=u.viewUp,g=e.getTargetId(l);if(l instanceof Y.StackViewport)s=g.split("imageId:")[1];else{d=g.split("volumeId:")[1];var h=Y.cache.getVolume(d);s=Y.utilities.getClosestImageId(h,a,v)}var p=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Nr(v),enabledElement:i,viewUp:Nr(f),FrameOfReferenceUID:p,referencedImageId:s,toolName:e.getToolName(),volumeId:d},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null},segmentationId:null}};et(m,o);var w=js(o,e.getToolName());return e.editData={annotation:m,viewportIdsToRender:w,handleIndex:3,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(c,w),m})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=t.renderingEngineId,c=i.element,s=Qe(e.getToolName(),c);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(c,s))||void 0===o||!o.length)return a;for(var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=0;u<s.length;u++){var v=s[u],f=v.annotationUID,g=v.data.handles,h=g.points,p=g.activeHandleIndex,m=h.map((function(e){return i.worldToCanvas(e)}));d.annotationUID=f;var w=e.getStyle("lineWidth",d,v),E=e.getStyle("lineDash",d,v),y=e.getStyle("color",d,v);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var I=$.ANNOTATION_MODIFIED,b={annotation:v,viewportId:i.id,renderingEngineId:l};(0,Y.triggerEvent)(Y.eventTarget,I,b);var C=void 0;Me(f)&&(se(v)||e.editData||null===p||(C=[m[p]]),C&&kc(n,f,"0",C,{color:y}),jc(n,f,"0",m[0],m[3],{color:y,lineDash:E,lineWidth:w}),a=!0)}return a})),e}return ee(o)}(pd);ne(md,"toolName",void 0),md.toolName="RectangleROIThreshold";var wd=md;var Ed=Y.utilities.transformWorldToIndex,yd=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{numSlicesToPropagate:10}};return te(this,o),ne(da(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s,d,u,v=l.getCamera(),f=v.viewPlaneNormal,g=v.viewUp;if(l instanceof Y.StackViewport)throw new Error("Stack Viewport Not implemented");if(u=e.getTargetId(l).split("volumeId:")[1],d=Y.cache.getVolume(u),!(s=Y.utilities.getClosestImageId(d,a,f)))throw new Error("This tool does not work on non-acquisition planes");var h=l.getCurrentImageIdIndex(),p=Y.utilities.getSpacingInNormalDirection(d,f),m=e._getEndSliceIndex(d,a,p,f),w=l.getFrameOfReferenceUID(),E={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Nr(f),enabledElement:i,viewUp:Nr(g),FrameOfReferenceUID:w,referencedImageId:s,toolName:e.getToolName(),volumeId:u,spacingInNormal:p},data:{label:"",startSlice:h,endSlice:m,cachedStats:{projectionPoints:[],projectionPointsImageIds:[s]},handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null},labelmapUID:null}};e._computeProjectionPoints(E,d),et(E,o);var y=js(o,e.getToolName());return e.editData={annotation:E,viewportIdsToRender:y,handleIndex:3,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(c,y),E})),ne(da(e),"renderAnnotation",(function(t,n){var r=!1,o=t.viewport,a=Qe(e.getToolName(),o.element);if(null==a||!a.length)return r;for(var i=o.getCurrentImageIdIndex(),l={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},c=0;c<a.length;c++){var s=a[c],d=s.annotationUID,u=s.data,v=u.startSlice,f=u.endSlice,g=u.handles,h=g.points,p=g.activeHandleIndex,m=h.map((function(e){return o.worldToCanvas(e)}));l.annotationUID=d;var w=e.getStyle("lineWidth",l,s),E=e.getStyle("lineDash",l,s),y=e.getStyle("color",l,s);if(!(i<Math.min(v,f)||i>Math.max(v,f))){s.invalidated&&e._throttledCalculateCachedStats(s,t);var I=!1;if(i!==v&&i!==f||(I=!0),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),r;var b=void 0;if(Me(d)){se(s)||e.editData||null===p||!I||(b=[m[p]]),b&&kc(n,d,"0",b,{color:y});var C=E;I||(C=2),jc(n,d,"0",m[0],m[3],{color:y,lineDash:C,lineWidth:w}),r=!0}}}return r})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStatsTool,100,{trailing:!0}),e}return ee(o,[{key:"_computeProjectionPoints",value:function(e,t){var n=e.data,r=e.metadata,o=r.viewPlaneNormal,a=r.spacingInNormal,i=t.imageData,l=n.startSlice,c=n.endSlice,s=n.handles.points,d=Ed(i,s[0]);if(d[2]!==l)throw new Error("Start slice does not match");var u=fc.vec3.fromValues(d[0],d[1],c),v=fc.vec3.create();i.indexToWorldVec3(d,v);var f=fc.vec3.create();i.indexToWorldVec3(u,f);for(var g=fc.vec3.distance(v,f),h=[],p=function(e){h.push(s.map((function(t){var n=fc.vec3.create();return fc.vec3.scaleAndAdd(n,t,o,e),Array.from(n)})))},m=0;m<g;m+=a)p(m);n.cachedStats.projectionPoints=h;for(var w=[],E=0,y=h;E<y.length;E++){var I=y[E],b=Y.utilities.getClosestImageId(t,I[0],o);w.push(b)}n.cachedStats.projectionPointsImageIds=w}},{key:"_calculateCachedStatsTool",value:function(e,t){var n=e.data,r=t.viewportId,o=t.renderingEngineId,a=t.viewport,i=n.cachedStats,l=this.getTargetId(a),c=Y.cache.getVolume(l.split("volumeId:")[1]);this._computeProjectionPoints(e,c),e.invalidated=!1;var s=$.ANNOTATION_MODIFIED,d={annotation:e,viewportId:r,renderingEngineId:o};return(0,Y.triggerEvent)(Y.eventTarget,s,d),i}},{key:"_getEndSliceIndex",value:function(e,t,n,r){var o=this.configuration.numSlicesToPropagate,a=fc.vec3.create();fc.vec3.scaleAndAdd(a,t,r,o*n);for(var i,l=n/2,c=e.imageIds,s=0;s<c.length;s++){var d=c[s],u=Y.metaData.get("imagePlaneModule",d).imagePositionPatient,v=fc.vec3.create();fc.vec3.sub(v,a,u);var f=fc.vec3.dot(v,r);Math.abs(f)<l&&(i=s)}return i}}]),o}(pd);ne(yd,"toolName",void 0),yd.toolName="RectangleROIStartEndThreshold";var Id=yd,bd=function(e,t){var n=e.findIndex((function(e){var t=lt(e,2);return t[0]===t[1]}));if(-1===n)throw new Error("3D bounding boxes not supported in an oblique plane");return e[n][0]-=t,e[n][1]+=t,e},Cd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=[];return e.forEach((function(e){var o,a,i=e.data,l=i.handles.points,c=t.imageData,s=t.dimensions,d=l;if(null!==(o=i.cachedStats)&&void 0!==o&&o.projectionPoints){var u,v=i.cachedStats.projectionPoints;d=(u=[]).concat.apply(u,Nr(v))}var f=d.map((function(e){return Y.utilities.transformWorldToIndex(c,e)})),g=Xc(f,s);!n.numSlicesToProject||null!==(a=i.cachedStats)&&void 0!==a&&a.projectionPoints||(g=bd(g,n.numSlicesToProject)),r.push(g)})),1===r.length?r[0]:r.reduce((function(e,t){return{iMin:Math.min(e.iMin,t.iMin),jMin:Math.min(e.jMin,t.jMin),kMin:Math.min(e.kMin,t.kMin),iMax:Math.max(e.iMax,t.iMax),jMax:Math.max(e.jMax,t.jMax),kMax:Math.max(e.kMax,t.kMax)}}),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})};function Td(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Dd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_d(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Od=function(e,t,n,r){var o,a=e.map((function(e){return rt(e)}));!function(e){var t,n=[wd.toolName,Id.toolName],r=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Td(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Td(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(e);try{for(r.s();!(t=r.n()).done;){var o=t.value.metadata.toolName;if(!n.includes(o))throw new Error("rectangleROIThresholdVolumeByRange only supports RectangleROIThreshold and RectangleROIStartEndThreshold annotations")}}catch(e){r.e(e)}finally{r.f()}}(a);for(var i=0;i<n.length;i++)n[i].volume.getScalarData().length!==t.getScalarData().length&&0!==i||(o=Cd(a,n[i].volume,r));return Rs(t,n,Dd(Dd({},r),{},{boundsIJK:o}))},Sd=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mergedLabelmap";e.forEach((function(t){var n=t.direction,r=t.dimensions,o=t.origin,a=t.spacing;if(!(Y.utilities.isEqual(r,e[0].dimensions)&&Y.utilities.isEqual(n,e[0].direction)&&Y.utilities.isEqual(a,e[0].spacing)&&Y.utilities.isEqual(o,e[0].origin)))throw new Error("labelmaps must have the same size and shape")}));var r=e[0],o=new(0,r.getScalarData().constructor)(r.getScalarData().length);e.forEach((function(e){for(var n=e.getScalarData(),r=0;r<n.length;r++)n[r]===t&&(o[r]=t)}));var a={scalarData:o,metadata:r.metadata,spacing:r.spacing,origin:r.origin,direction:r.direction,dimensions:r.dimensions};return Y.volumeLoader.createLocalVolume(a,n,!0)};function xd(e,t){if(e===ut.Labelmap)return function(e){return e&&"boolean"==typeof e.renderOutline&&"number"==typeof e.outlineWidthActive&&"number"==typeof e.outlineWidthInactive&&"boolean"==typeof e.renderFill&&"boolean"==typeof e.renderFillInactive&&"number"==typeof e.fillAlpha&&"number"==typeof e.fillAlphaInactive&&"number"==typeof e.outlineOpacity&&"number"==typeof e.outlineOpacityInactive}(t);throw new Error("Unknown representation type: ".concat(e))}function Md(e){var t=e.type;if(t===ut.Labelmap)return gt();throw new Error("Unknown representation type: ".concat(t))}function kd(e){return Rd.apply(this,arguments)}function Rd(){return(Rd=Na(La().mark((function e(t){var n,r,o,a,i,l,c,s,d,u,v,f;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.viewportId,r=t.renderingEngineId,o=t.options,a=t.segmentationId,i=(0,Y.getEnabledElementByIds)(n,r)){e.next=5;break}throw new Error("element disabled");case 5:if((l=i.viewport)instanceof Y.VolumeViewport){e.next=8;break}throw new Error("Segmentation only supports VolumeViewport");case 8:if(c=l.getDefaultActor(),s=c.uid,void 0===a&&(a="".concat(s,"-based-segmentation-").concat(null!==(d=null==o?void 0:o.volumeId)&&void 0!==d?d:Y.utilities.uuidv4().slice(0,8))),!o){e.next=16;break}return u=(0,re._cloneDeep)(o),e.next=14,Y.volumeLoader.createLocalVolume(u,a);case 14:e.next=19;break;case 16:return v=l.getDefaultActor(),f=v.uid,e.next=19,Y.volumeLoader.createAndCacheDerivedVolume(f,{volumeId:a});case 19:return e.abrupt("return",a);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Pd(e,t){return e===t}function Nd(e,t,n){return(new Array(n+1).join(t)+e).slice(-n)}var Ad=function(e,t){var n,r,o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=a.onFlood,l=a.onBoundary,c=a.equals||Pd,s=a.diagonals||!1,d=p(t),u=function(e){for(var t=[],n=function(e){return e.split("").map((function(e){return parseInt(e,10)-1}))},r=0;r<Math.pow(3,e);r+=1){var o=Nd(r.toString(3),"0",e);t.push(n(o))}return t}(t.length).filter((function(e){var t=function(e){for(var t=0,n=0;n<e.length;n+=1)0!==e[n]&&(t+=1);return t}(e);return 0!==t&&(1===t||s)})),v=[],f=[],g={},h={};for(v.push({currentArgs:t});v.length>0;)n=v.pop(),r=void 0,o=void 0,r=n.currentArgs,o=n.previousArgs,!0!==g[r]&&(g[r]=!0,function(e){var t=m(p,[e]);return m(c,[t,d])}(r)?(function(e){f.push(e),i&&i.apply(void 0,Nr(e))}(r),function(e){for(var t=0;t<u.length;t+=1){for(var n=u[t],r=e.slice(0),o=0;o<e.length;o+=1)r[o]+=n[o];v.push({currentArgs:r,previousArgs:e})}}(r)):function(e){h[e]=e,l&&l.apply(void 0,Nr(e))}(o));return{flooded:f,boundaries:function(){var e=[];for(var t in h)void 0!==h[t]&&e.unshift(h[t]);return e}()};function p(t){return e.apply(void 0,Nr(t))}function m(e,t){try{return e.apply(void 0,Nr(t))}catch(e){return}}};function Ld(e,t,n){var r=sa(e);if(void 0!==r){xs(e,n).forEach((function(e){e.configuration.brushSize=t,e.invalidateBrushCursor()}));var o=r.getViewportsInfo(),a=Object.keys(o).map((function(e){return o[e]}));if(a.length){var i=a[0].renderingEngineId,l=r.getViewportIds(),c=(0,Y.getRenderingEngine)(i);aa(c,l)}}}function Ud(e,t){var n=sa(e);if(void 0!==n){var r=n._toolInstances;if(Object.keys(r).length){var o=xs(e,t)[0];if(o)return o.configuration.brushSize}}}function Vd(e,t){var n=sa(e);if(void 0!==n){xs(e).forEach((function(e){e.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold=t}));var r=n.getViewportsInfo();if(r.length){var o=r[0].renderingEngineId,a=n.getViewportIds(),i=(0,Y.getRenderingEngine)(o);aa(i,a)}}}function Bd(e){var t=sa(e);if(void 0!==t){var n=t._toolInstances;if(Object.keys(n).length){var r=xs(e)[0];if(r)return r.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold}}}var jd=function(e,t,n,r){var o=e.getScalarData(),a=ks(e,n),i=a.baseVolumeIdx,l=a.volumeInfoList;return l.forEach((function(e){e.volumeSize===o.length?function(e,t,n){for(var r=n.referenceValues,o=n.lower,a=n.upper,i=0;i<e.length;i++)if(e[i]===t){var l=r[i];e[i]=l>=o&&l<=a?t:0}}(o,t,e):function(e,t,n,r,o,a){for(var i,l,c,s=n.imageData,d=n.lower,u=n.upper,v=n.dimensions,f=0;f<e.length;f++)if(e[f]===t){var g=Ms(s,v,r[o].spacing,r[o].imageData.getPoint(f));i=0,l=0,c={lower:d,upper:u};var h;Zc(s,(function(){return!0}),(function(e){var t=e.value;i+=1,t>=c.lower&&t<=c.upper&&(l+=1)}),g),h=0===a?l>0:l===i,e[f]=h?t:0}}(o,t,e,l,i,r)})),_t(e.volumeId),e},Hd=1e-6,Wd=1,Fd=0;function Gd(e,t,n){var r=lt(n,2),o=r[0],a=r[1];if(Math.abs(t)<Hd)return e<0;var i=e/t;if(t>0){if(i>a)return 0;i>o&&(n[0]=i)}else{if(i<o)return 0;i<a&&(n[1]=i)}return 1}function qd(e,t,n,r,o){var a=lt(e,2),i=a[0],l=a[1],c=lt(t,2),s=c[0]-i,d=c[1]-l;if(void 0===r||void 0===o?(r=e,o=t):(r[0]=e[0],r[1]=e[1],o[0]=t[0],o[1]=t[1]),Math.abs(s)<Hd&&Math.abs(d)<Hd&&i>=n[0]&&i<=n[2]&&l>=n[1]&&l<=n[3])return Wd;var u=[0,1];if(Gd(n[0]-i,s,u)&&Gd(i-n[2],-s,u)&&Gd(n[1]-l,d,u)&&Gd(l-n[3],-d,u)){var v=u[0],f=u[1];return f<1&&(o[0]=i+f*s,o[1]=l+f*d),v>0&&(r[0]+=v*s,r[1]+=v*d),Wd}return Fd}function zd(e){return"number"==typeof e?e?e<0?-1:1:e==e?0:NaN:NaN}function Kd(e,t,n,r){var o=lt(e,2),a=o[0],i=o[1],l=lt(t,2),c=l[0],s=l[1],d=lt(n,2),u=d[0],v=d[1],f=lt(r,2),g=f[0],h=f[1],p=s-i,m=a-c,w=c*i-a*s,E=p*u+m*v+w,y=p*g+m*h+w;if(0===E||0===y||zd(E)!==zd(y)){var I=h-v,b=u-g,C=g*v-u*h,T=I*a+b*i+C,_=I*c+b*s+C;if(0===T||0===_||zd(T)!==zd(_)){var D=p*b-I*m;return[(m*C-b*w)/D,(I*w-p*C)/D]}}}function Yd(e,t,n){var r,o;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var a=r;a<e.length;a++){if($d(t,n,e[o],e[a]))return[o,a];o=a}}function Jd(e,t,n){var r,o;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var a=[],i=r;i<e.length;i++){var l=e[o],c=e[i];$d(t,n,l,c)&&a.push([o,i]),o=i}if(0!==a.length){var s=[];a.forEach((function(n){var r=[e[n[0]],e[n[1]]],o=[(r[0][0]+r[1][0])/2,(r[0][1]+r[1][1])/2];s.push(fc.vec2.distance(o,t))}));var d=Math.min.apply(Math,s);return{segment:a[s.indexOf(d)],distance:d}}}function $d(e,t,n,r){var o=!1,a=[Zd(e,t,n),Zd(e,t,r),Zd(n,r,e),Zd(n,r,t)];return a[0]!==a[1]&&a[2]!==a[3]||((0===a[0]&&Xd(e,n,t)||0===a[1]&&Xd(e,r,t)||0===a[2]&&Xd(n,e,r)||0===a[3]&&Xd(n,t,r))&&(o=!0),o)}function Zd(e,t,n){var r=(t[1]-e[1])*(n[0]-t[0])-(t[0]-e[0])*(n[1]-t[1]);return 0===r?0:r>0?1:2}function Xd(e,t,n){return t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1])}function Qd(e,t,n,r){var o=(r[1]-n[1])*(t[0]-e[0])-(r[0]-n[0])*(t[1]-e[1]);if(0!=o){var a=e[1]-n[1],i=e[0]-n[0],l=(r[0]-n[0])*a-(r[1]-n[1])*i,c=(t[0]-e[0])*a-(t[1]-e[1])*i;return a=l/o,i=c/o,[e[0]+a*(t[0]-e[0]),e[1]+a*(t[1]-e[1])]}}var eu=.001,tu=function(e,t){var n,r,o;if(e instanceof Y.StackViewport){var a=e.getImageData();r=a.direction.slice(0,3),o=a.direction.slice(3,6),n=a.spacing}else{var i=e.getImageData(),l=i.direction,c=i.spacing,s=e.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=l.slice(0,3),f=l.slice(3,6),g=l.slice(6,9),h=fc.vec3.create();fc.vec3.cross(h,u,d);var p,m=Math.abs(fc.vec3.dot(h,v)),w=Math.abs(fc.vec3.dot(h,f)),E=Math.abs(fc.vec3.dot(h,g));if(Math.abs(1-m)<eu)p=c[0],r=v;else if(Math.abs(1-w)<eu)p=c[1],r=f;else{if(!(Math.abs(1-E)<eu))throw new Error("No support yet for oblique plane planar contours");p=c[2],r=g}var y,I=Math.abs(fc.vec3.dot(u,v)),b=Math.abs(fc.vec3.dot(u,f)),C=Math.abs(fc.vec3.dot(u,g));if(Math.abs(1-I)<eu)y=c[0],o=v;else if(Math.abs(1-b)<eu)y=c[1],o=f;else{if(!(Math.abs(1-C)<eu))throw new Error("No support yet for oblique plane planar contours");y=c[2],o=g}n=[p,y]}return{spacing:[n[0]/t,n[1]/t],xDir:r,yDir:o}},nu=function(e,t,n){return fc.vec2.dist(e,t)<n},ru=function(e,t,n,r){var o=r.xDir,a=r.yDir,i=r.spacing,l=(0,Y.getEnabledElement)(e).viewport,c=l.canvasToWorld(t[t.length-1]),s=l.canvasToWorld(n),d=fc.vec3.create();fc.vec3.subtract(d,s,c);var u=Math.abs(fc.vec3.dot(d,o)),v=Math.abs(fc.vec3.dot(d,a)),f=Math.max(Math.floor(u/i[0]),Math.floor(v/i[0]));if(f>1){var g=t[t.length-1],h=fc.vec2.dist(g,n),p=fc.vec2.create();fc.vec2.subtract(p,n,g),fc.vec2.set(p,p[0]/h,p[1]/h);for(var m=h/f,w=1;w<=f;w++)t.push([g[0]+m*p[0]*w,g[1]+m*p[1]*w])}else t.push(n);return f},ou=function(e,t,n,r){var o=[e[0]-t[0],e[1]-t[1]],a=[n[0]-t[0],n[1]-t[1]],i=o[0]*a[0]+o[1]*a[1];if(i<0)return!1;var l=Math.sqrt(a[0]*a[0]+a[1]*a[1]);if(0===l)return!1;var c=i/l,s=[a[0]/l,a[1]/l],d=[s[0]*c,s[1]*c],u=[t[0]+d[0],t[1]+d[1]];return!(fc.vec2.distance(e,u)>r||fc.vec2.distance(t,u)>fc.vec2.distance(t,n))};function au(e){for(var t=e.length,n=0,r=t-1,o=0;o<t;o++)n+=(e[r][0]+e[o][0])*(e[r][1]-e[o][1]),r=o;return Math.abs(n/2)}function iu(e,t){if(2!==(null==e?void 0:e.length)||2!==(null==t?void 0:t.length))throw Error("points should have 2 elements of [x, y]");var n=lt(e,2),r=n[0],o=n[1],a=lt(t,2),i=a[0],l=a[1];return Math.sqrt(Math.pow(r-i,2)+Math.pow(o-l,2))}var lu=h(807),cu=h.n(lu);function su(e,t,n,r){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.25,i=e.getCamera(),l=i.position,c=Y.utilities.getTargetVolumeAndSpacingInNormalDir(e,i,n).spacingInNormalDirection*a,s=e.getBounds(),d=s[0],u=s[1],v=[0,0,0],f=[0,0,0];cu().subtract(t,l,v);for(var g=d;g<=u;g+=c){f=[g,0,0];var h=(g-l[0])/v[0];if(f[1]=h*v[1]+l[1],f[2]=h*v[2]+l[2],du(f,s)){var p=r(e.getIntensityFromWorld(f),f);p&&(o=p)}}return o}var du=function(e,t){var n=lt(t,6),r=n[0],o=n[1],a=n[2],i=n[3],l=n[4],c=n[5];return e[0]>r&&e[0]<o&&e[1]>a&&e[1]<i&&e[2]>l&&e[2]<c},uu={filterAnnotationsWithinSlice:Fs,getWorldWidthAndHeightFromCorners:ld,filterAnnotationsForDisplay:Gs,getPointInLineOfSightWithCriteria:su};function vu(e){for(var t="",n=e[0]<0?"R":"L",r=e[1]<0?"A":"P",o=e[2]<0?"F":"H",a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],i=1e-4,l=0;l<3;l++)if(a[0]>i&&a[0]>a[1]&&a[0]>a[2])t+=n,a[0]=0;else if(a[1]>i&&a[1]>a[0]&&a[1]>a[2])t+=r,a[1]=0;else if(a[2]>i&&a[2]>a[0]&&a[2]>a[1])t+=o,a[2]=0;else if(a[0]>i&&a[1]>i&&a[0]===a[1])t+=n+r,a[0]=0,a[1]=0;else if(a[0]>i&&a[2]>i&&a[0]===a[2])t+=n+o,a[0]=0,a[2]=0;else{if(!(a[1]>i&&a[2]>i&&a[1]===a[2]))break;t+=r+o,a[1]=0,a[2]=0}return t}function fu(e){var t=e.replace("H","f");return(t=(t=(t=(t=(t=t.replace("F","h")).replace("R","l")).replace("L","r")).replace("A","p")).replace("P","a")).toUpperCase()}var gu=function(e){return e.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",e.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED",e}(gu||{}),hu=gu,pu={};function mu(e,t){var n=(0,Y.getEnabledElement)(e).viewportId;pu[n]=t}function wu(e){var t=(0,Y.getEnabledElement)(e).viewportId;return pu[t]}var Eu=Y.Enums.ViewportStatus,yu=Y.utilities.triggerEvent,Iu=!0,bu=!0,Cu=new Map;function Tu(e,t){var n,r,o;if(void 0===e)throw new Error("playClip: element must not be undefined");var a=(0,Y.getEnabledElement)(e);if(!a)throw new Error("playClip: element must be a valid Cornerstone enabled element");t.dynamicCineEnabled=null===(n=t.dynamicCineEnabled)||void 0===n||n;var i,l,c,s,d=a.viewport,u=Su(d),v=function(e,t){var n;if(e instanceof Y.StackViewport)return function(e,t){var n=e.getImageIds();return{get numScrollSteps(){return n.length},get currentStepIndex(){return e.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll:function(n){this.waitForRenderedCount<=t&&e.viewportStatus!==Eu.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,hc(e,{delta:n,debounceLoading:Iu}))}}}(e,null!==(n=t.waitForRendered)&&void 0!==n?n:30);if(e instanceof Y.VolumeViewport){var r=Su(e);return t.dynamicCineEnabled&&null!=r&&r.isDynamicVolume()?function(e){return{get numScrollSteps(){return e.numTimePoints},get currentStepIndex(){return e.timePointIndex},get frameTimeVectorEnabled(){return!1},scroll:function(t){e.timePointIndex+=t}}}(r):function(e,t){var n=t.volumeId,r={viewPlaneNormal:fc.vec3.create(),scrollInfo:null},o=function(){var t=e.getCamera();if(!r.scrollInfo||!fc.vec3.equals(t.viewPlaneNormal,r.viewPlaneNormal)){var o=Y.utilities.getVolumeViewportScrollInfo(e,n);r.viewPlaneNormal=t.viewPlaneNormal,r.scrollInfo=o}return r.scrollInfo};return{get numScrollSteps(){return o().numScrollSteps},get currentStepIndex(){return o().currentStepIndex},get frameTimeVectorEnabled(){var n=e.getCamera(),r=t.direction.slice(6,9).map((function(e){return-e})),o=fc.vec3.dot(r,n.viewPlaneNormal);return fc.glMatrix.equals(o,1)},scroll:function(t){o().currentStepIndex+=t,hc(e,{delta:t})}}}(e,r)}throw new Error("Unknown viewport type")}(d,t),f=wu(e),g=t.dynamicCineEnabled&&(null==u?void 0:u.isDynamicVolume());if(g&&Ou(e),f?Du(e,g):(f={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:null!==(i=t.frameTimeVector)&&void 0!==i?i:void 0,speed:null!==(l=t.frameTimeVectorSpeedMultiplier)&&void 0!==l?l:1,reverse:null!==(c=t.reverse)&&void 0!==c&&c,loop:null===(s=t.loop)||void 0===s||s},mu(e,f)),f.dynamicCineEnabled=t.dynamicCineEnabled,(t.framesPerSecond<0||t.framesPerSecond>0)&&(f.framesPerSecond=Number(t.framesPerSecond),f.reverse=f.framesPerSecond<0,f.ignoreFrameTimeVector=!0),!0!==f.ignoreFrameTimeVector&&f.frameTimeVector&&f.frameTimeVector.length===v.numScrollSteps&&v.frameTimeVectorEnabled){var h=function(e,t){var n,r,o,a=0,i=e.length,l=[],c=!1;for(("number"!=typeof t||t<=0)&&(t=1),n=1;n<i;n++)o=Number(e[n])/t|0,l.push(o),1===n?r=o:o!==r&&(c=!0),a+=o;return l.length>0&&(o=c?a/l.length|0:l[0],l.push(o)),{timeouts:l,isTimeVarying:c}}(f.frameTimeVector,f.speed),p=h.timeouts,m=h.isTimeVarying;r=p,o=m}var w=function(){var t=v.numScrollSteps,n=v.currentStepIndex,r=n+(f.reverse?-1:1);if(bu||!(r<0||r>=t)){r>=t?r=0:r<0&&(r=t-1);var o=r-n;o&&v.scroll(o)}else{Du(e,g);var a={element:e};yu(e,hu.CLIP_STOPPED,a)}};g&&Cu.set(u.volumeId,e),r&&r.length>0&&o?(f.usingFrameTimeVector=!0,f.intervalId=window.setTimeout((function e(){f.intervalId=window.setTimeout(e,r[v.currentStepIndex]),w()}),0)):(f.usingFrameTimeVector=!1,f.intervalId=window.setInterval(w,1e3/Math.abs(f.framesPerSecond)));var E={element:e};yu(e,hu.CLIP_STARTED,E)}function _u(e){Du(e,!0)}function Du(e,t){var n=(0,Y.getEnabledElement)(e);if(n){var r,o,a=n.viewport,i=wu(a.element);i&&void 0!==(o=(r=i).intervalId)&&(r.intervalId=void 0,r.usingFrameTimeVector?clearTimeout(o):clearInterval(o)),t&&a instanceof Y.BaseVolumeViewport&&Ou(e)}}function Ou(e){var t=Su((0,Y.getEnabledElement)(e).viewport);if(null!=t&&t.isDynamicVolume()){var n=Cu.get(t.volumeId);Cu.delete(t.volumeId),n&&n!==e&&_u(n)}}function Su(e){var t=function(e){return e.getActors().map((function(e){return Y.cache.getVolume(e.uid)})).filter((function(e){return!!e}))}(e),n=t.find((function(e){return e.isDynamicVolume()}));return null!=n?n:t[0]}function xu(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),o=e[r],a=e[r+1],i=r>0?e[r-1]:2*o-a,l=r<t-1?e[r+2]:2*a-o;return function(e,t,n,r,o){var a=e*e,i=a*e;return((1-3*e+3*a-i)*t+(4-6*a+3*i)*n+(1+3*e+3*a-3*i)*r+i*o)/6}((n-r/t)*t,i,o,a,l)}}function Mu(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}function ku(e){return e.length}function Ru(){return function(e){if(!(o=e.length))return[];for(var t=-1,n=function(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let r=-1;for(let o of e)null!=(o=t(o,++r,e))&&(n>o||void 0===n&&o>=o)&&(n=o)}return n}(e,ku),r=new Array(n);++t<n;)for(var o,a=-1,i=r[t]=new Array(o);++a<o;)i[a]=e[a][t];return r}(arguments)}function Pu(e,t,n,r){var o,a,i=n-t+1,l=null!==(o=Math.floor(r/100*i))&&void 0!==o?o:1,c=null!==(a=Math.floor(i/l))&&void 0!==a?a:1;if(isNaN(i)||!i||!c)return e;if(i/c<2)return e;var s=Math.max(0,t),d=Math.min(e.length-1,n),u=e.slice(0,s),v=e.slice(d+1,e.length),f=function(e,t){if(!t||0===t.length||t.length===e.length)return e;var n,r=t[t.length-1]-t[0]+1,o=xu(t.map((function(t){return e[t][0]}))),a=xu(t.map((function(t){return e[t][1]})));if(3===(null===(n=e[0])||void 0===n?void 0:n.length)){var i=xu(t.map((function(t){return e[t][2]})));return Ru(Mu(o,r),Mu(a,r),Mu(i,r))}return Ru(Mu(o,r),Mu(a,r))}(e,function(e,t){for(var n=[],r=lt(t,2),o=r[0],a=r[1],i=a-o+1,l=Math.floor(i/e),c=0,s=Math.round((i-1)/(l-1)*c)+o;s<=a;)n.push(s),c++,s=Math.round((i-1)/(l-1)*c)+o;return n}(c,[s,d]));return[].concat(Nr(u),Nr(f),Nr(v))}function Nu(e){var t,n;return!0===(null==e||null===(t=e.interpolation)||void 0===t?void 0:t.interpolateOnAdd)||!0===(null==e||null===(n=e.interpolation)||void 0===n?void 0:n.interpolateOnEdit)}function Au(e,t,n){return(e+t+n)%t}function Lu(e,t,n,r){var o=lt(e,3),a=o[1],i=o[2],l=lt(t,3),c=l[1],s=l[2],d=i.length,u=s.length,v=e[0],f=t[0];if(!(i[v]&&s[f]&&i[a]&&s[c]))return[void 0,void 0];for(;v!==a&&f!==c;){if(n(s[f],i[v]))return[v,f];v=Au(v,d,r),f=Au(f,u,r)}return[void 0,void 0]}function Uu(e,t,n){var r=e.interpolation,o=t;if(r){var a=r.knotsRatioPercentageOnAdd,i=r.knotsRatioPercentageOnEdit,l=r.interpolateOnAdd,c=void 0!==l&&l,s=r.interpolateOnEdit,d=n?i:a;if(n?void 0!==s&&s:c){var u=lt(n?function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++)for(var r=0;r<t.length;r++)if(0===iu(e[n],t[r]))return[n,r]}(e,t)||[],r=lt(n,2),o=r[0],a=r[1],i=function(e,t){return!1===function(e,t){return iu(e,t)<.001}(e,t)},l=lt(Lu([Au(o,e.length,1),o,e],[Au(a,t.length,1),a,t],i,1),2),c=l[0],s=l[1];return[c,lt(Lu([Au(c,e.length,-1),c,e],[Au(s,t.length,-1),s,t],i,-1),1)[0]]}(t,n):[0,t.length-1],2),v=u[0],f=u[1];return t[v]&&t[f]?Pu(t,v,f,d):t}}return o}function Vu(e,t){var n=e[0],r=e[e.length-1],o=fc.vec2.create();fc.vec2.set(o,r[0]-n[0],r[1]-n[1]),fc.vec2.normalize(o,o);var a=fc.vec2.create(),i=fc.vec2.create();fc.vec2.set(a,-o[1],o[0]),fc.vec2.set(i,o[1],-o[0]);for(var l=[(n[0]+r[0])/2,(n[1]+r[1])/2],c={dist:0,index:null},s=0;s<e.length;s++){var d=e[s],u=fc.vec2.dist(d,l);u>c.dist&&(c.dist=u,c.index=s)}return[e[c.index],l].map(t.canvasToWorld)}var Bu=ru,ju=nu,Hu=Yd,Wu=tu;function Fu(e,t,n){this.isDrawing=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,Y.getEnabledElement)(a).viewport,c=Wu(l,this.configuration.subPixelResolution),s=c.spacing,d=c.xDir,u=c.yDir;this.drawData={canvasPoints:[i],polylineIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:s,xDir:d,yDir:u,movingTextBox:!1},Ge.isInteractingWithTool=!0,a.addEventListener($.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener($.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener($.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener($.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener($.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener($.TOUCH_TAP,this.mouseUpDrawCallback),$l(a)}function Gu(e){Ge.isInteractingWithTool=!1,e.removeEventListener($.MOUSE_UP,this.mouseUpDrawCallback),e.removeEventListener($.MOUSE_DRAG,this.mouseDragDrawCallback),e.removeEventListener($.MOUSE_CLICK,this.mouseUpDrawCallback),e.removeEventListener($.TOUCH_END,this.mouseUpDrawCallback),e.removeEventListener($.TOUCH_DRAG,this.mouseDragDrawCallback),e.removeEventListener($.TOUCH_TAP,this.mouseUpDrawCallback),Jl(e)}function qu(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,Y.getEnabledElement)(r),l=i.renderingEngine,c=i.viewport,s=this.commonData,d=s.annotation,u=s.viewportIdsToRender,v=s.xDir,f=s.yDir,g=s.spacing,h=s.movingTextBox,p=this.drawData,m=p.polylineIndex,w=p.canvasPoints,E=w[w.length-1],y=c.canvasToWorld(E),I=fc.vec3.create();fc.vec3.subtract(I,o,y);var b=Math.abs(fc.vec3.dot(I,v)),C=Math.abs(fc.vec3.dot(I,f));if(!(b<=g[0]&&C<=g[1])){if(h){this.isDrawing=!1;var T=t.deltaPoints.world,_=d.data.handles.textBox,D=_.worldPosition;D[0]+=T[0],D[1]+=T[1],D[2]+=T[2],_.hasMoved=!0}else{var O=this.findCrossingIndexDuringCreate(e);if(void 0!==O)this.applyCreateOnCross(e,O);else{var S=Bu(r,w,a,this.commonData);this.drawData.polylineIndex=m+S}}aa(l,u)}}function zu(e){var t=this.configuration.allowOpenContours,n=this.drawData.canvasPoints,r=n[0],o=n[n.length-1],a=e.detail.element;t&&!ju(r,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(a):this.completeDrawClosedContour(a)}function Ku(e){this.removeCrossedLinesOnCompleteDraw();var t=this.drawData.canvasPoints;if(this.haltDrawing(e,t))return!1;var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,Y.getEnabledElement)(e),i=a.viewport,l=a.renderingEngine;Bu(e,t,t[0],this.commonData),t.pop();var c=(Nu(this.configuration)?Uu(this.configuration,t):t).map((function(e){return i.canvasToWorld(e)}));return r.data.polyline=c,r.data.isOpenContour=!1,r.data.handles.textBox.hasMoved||this.triggerAnnotationCompleted(r),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,aa(l,o),this.deactivateDraw(e),!0}function Yu(){var e=this.drawData.canvasPoints,t=e.length,n=[e[0],e[t-1]],r=e.slice(0,-1).slice(1),o=Hu(r,n[0],n[1],!1);if(o){var a=o[1];this.drawData.canvasPoints=e.splice(0,a)}}function Ju(e){var t=this.drawData.canvasPoints;if(this.haltDrawing(e,t))return!1;var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,Y.getEnabledElement)(e),i=a.viewport,l=a.renderingEngine,c=(Nu(this.configuration)?Uu(this.configuration,t):t).map((function(e){return i.canvasToWorld(e)}));r.data.polyline=c,r.data.isOpenContour=!0;var s=r.data.handles.textBox;return r.data.handles.points=[c[0],c[c.length-1]],r.data.isOpenUShapeContour&&(r.data.openUShapeContourVectorToPeak=Vu(t,i)),s.hasMoved||this.triggerAnnotationCompleted(r),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,aa(l,o),this.deactivateDraw(e),!0}function $u(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.drawData.canvasPoints.slice(0,-1),l=Hu(i,o,a,!1);if(void 0!==l)return l[0]}function Zu(e,t){var n=e.detail.element,r=this.drawData.canvasPoints,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender;Bu(n,r,r[t],this.commonData),r.pop();for(var l=0;l<t;l++)r.shift();this.completeDrawClosedContour(n)&&this.activateClosedContourEdit(e,a,i)}function Xu(e){var t=this.configuration.allowOpenContours,n=this.drawData.canvasPoints,r=n[0],o=n[n.length-1];t&&!ju(r,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(e):this.completeDrawClosedContour(e)}function Qu(e,t){if(function(e,t){var n=Math.max(3*t,3);return e.length<n}(t,this.configuration.subPixelResolution)){var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,Y.getEnabledElement)(e).renderingEngine;return nt(r.annotationUID),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,aa(a,o),this.deactivateDraw(e),!0}return!1}var ev=function(e){e.activateDraw=Fu.bind(e),e.deactivateDraw=Gu.bind(e),e.applyCreateOnCross=Zu.bind(e),e.findCrossingIndexDuringCreate=$u.bind(e),e.completeDrawOpenContour=Ju.bind(e),e.removeCrossedLinesOnCompleteDraw=Yu.bind(e),e.mouseDragDrawCallback=qu.bind(e),e.mouseUpDrawCallback=zu.bind(e),e.completeDrawClosedContour=Ku.bind(e),e.cancelDrawing=Xu.bind(e),e.haltDrawing=Qu.bind(e)},tv=ru,nv=Yd;function rv(e,t){var n=e.detail,r=n.element,o=n.currentPoints,a=n.lastPoints,i=o.canvas,l=a.canvas,c=this.editData,s=c.editCanvasPoints,d=c.prevCanvasPoints,u=nv(d,i,l,t);if(u)this.editData.startCrossingIndex=u[0],this.removePointsUpUntilFirstCrossing(t);else if(d.length>=2)if(s.length>this.configuration.checkCanvasEditFallbackProximity){for(var v=s[0],f=[],g=0;g<d.length;g++){var h=d[g],p=fc.vec2.distance(h,v);f.push({distance:p,index:g})}f.sort((function(e,t){return e.distance-t.distance}));var m=[f[0],f[1]],w=Math.min(m[0].index,m[1].index);this.editData.startCrossingIndex=w}else{var E=fc.vec2.create();fc.vec2.subtract(E,s[1],s[0]),fc.vec2.normalize(E,E);var y=[s[0][0]-6*E[0],s[0][1]-6*E[1]],I=nv(d,y,s[0],t);if(I){var b=[y];tv(r,b,s[0],this.commonData),s.unshift.apply(s,b),this.removePointsUpUntilFirstCrossing(t),this.editData.editIndex=s.length-1,this.editData.startCrossingIndex=I[0]}}}function ov(e){for(var t=this.editData,n=t.editCanvasPoints,r=t.prevCanvasPoints,o=0,a=0;a<n.length-1;a++){var i=[n[a],n[a+1]];if(o++,nv(r,i[0],i[1],e))break}n.splice(0,o),this.editData.editIndex=n.length-1}function av(e,t){var n=e.detail,r=n.currentPoints,o=n.lastPoints,a=r.canvas,i=o.canvas,l=this.editData.prevCanvasPoints;return!!nv(l,a,i,t)}function iv(e){for(var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=r.length-1;o>0;o--){var a=[r[o],r[o-1]],i=!!nv(n,a[0],a[1],e);if(r.pop(),i)break}}function lv(){var e=this.editData,t=e.editCanvasPoints,n=e.prevCanvasPoints;if(void 0!==e.startCrossingIndex){for(var r=t[t.length-1],o=[],a=0;a<n.length;a++){var i=n[a],l=fc.vec2.distance(i,r);o.push({distance:l,index:a})}o.sort((function(e,t){return e.distance-t.distance}));for(var c=t.slice(0,-1),s=0;s<o.length;s++){var d=o[s].index,u=n[d],v=t[t.length-1];if(!nv(c,u,v,!1))return d}return-1}}function cv(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.editData.editCanvasPoints,l=i.slice(0,-2),c=nv(l,o,a,!1);if(c)for(var s=c[0],d=i.length-s,u=0;u<d;u++)i.pop()}var sv=function(e){e.checkForFirstCrossing=rv.bind(e),e.removePointsUpUntilFirstCrossing=ov.bind(e),e.checkForSecondCrossing=av.bind(e),e.findSnapIndex=lv.bind(e),e.removePointsAfterSecondCrossing=iv.bind(e),e.checkAndRemoveCrossesOnEditLine=cv.bind(e)},dv=tu,uv=ru,vv=au;function fv(e,t,n){this.isEditingClosed=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,Y.getEnabledElement)(a).viewport,c=t.data.polyline.map(l.worldToCanvas),s=dv(l,this.configuration.subPixelResolution),d=s.spacing,u=s.xDir,v=s.yDir;this.editData={prevCanvasPoints:c,editCanvasPoints:[i],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:d,xDir:u,yDir:v,movingTextBox:!1},Ge.isInteractingWithTool=!0,a.addEventListener($.MOUSE_UP,this.mouseUpClosedContourEditCallback),a.addEventListener($.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener($.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),a.addEventListener($.TOUCH_END,this.mouseUpClosedContourEditCallback),a.addEventListener($.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener($.TOUCH_TAP,this.mouseUpClosedContourEditCallback),$l(a)}function gv(e){Ge.isInteractingWithTool=!1,e.removeEventListener($.MOUSE_UP,this.mouseUpClosedContourEditCallback),e.removeEventListener($.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener($.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),e.removeEventListener($.TOUCH_END,this.mouseUpClosedContourEditCallback),e.removeEventListener($.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener($.TOUCH_TAP,this.mouseUpClosedContourEditCallback),Jl(e)}function hv(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,Y.getEnabledElement)(r),l=i.renderingEngine,c=i.viewport,s=this.commonData,d=s.viewportIdsToRender,u=s.xDir,v=s.yDir,f=s.spacing,g=this.editData,h=g.editIndex,p=g.editCanvasPoints,m=g.startCrossingIndex,w=p[p.length-1],E=c.canvasToWorld(w),y=fc.vec3.create();fc.vec3.subtract(y,o,E);var I=Math.abs(fc.vec3.dot(y,u)),b=Math.abs(fc.vec3.dot(y,v));if(!(I<=f[0]&&b<=f[1])){void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);var C=h+uv(r,p,a,this.commonData);this.editData.editIndex=C,void 0===m&&p.length>1&&this.checkForFirstCrossing(e,!0),this.editData.snapIndex=this.findSnapIndex(),-1!==this.editData.snapIndex?(this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(e),void 0!==m&&this.checkForSecondCrossing(e,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(e)),aa(l,d)):this.finishEditAndStartNewEdit(e)}}function pv(e){var t=e.detail.element,n=(0,Y.getEnabledElement)(t),r=n.viewport,o=n.renderingEngine,a=this.commonData,i=a.annotation,l=a.viewportIdsToRender,c=this.editData,s=c.fusedCanvasPoints,d=c.editCanvasPoints,u=s.map((function(e){return r.canvasToWorld(e)}));i.data.polyline=u,i.data.isOpenContour=!1,this.triggerAnnotationModified(i,n);var v=d.pop();this.editData={prevCanvasPoints:s,editCanvasPoints:[v],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0},aa(o,l)}function mv(e){var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=t.startCrossingIndex,a=t.snapIndex;if(void 0!==o&&void 0!==a){var i,l,c=e.detail.element,s=Nr(r);uv(c,s,n[a],this.commonData),s.length>r.length&&s.pop(),o>a?(i=a,l=o):(i=o,l=a);for(var d=fc.vec2.distance(n[i],s[0]),u=fc.vec2.distance(n[i],s[s.length-1]),v=fc.vec2.distance(n[l],s[0]),f=fc.vec2.distance(n[l],s[s.length-1]),g=[],h=0;h<i;h++){var p=n[h];g.push([p[0],p[1]])}var m=d+f,w=u+v;if(m<w)for(var E=0;E<s.length;E++){var y=s[E];g.push([y[0],y[1]])}else for(var I=s.length-1;I>=0;I--){var b=s[I];g.push([b[0],b[1]])}for(var C=l;C<n.length;C++){var T=n[C];g.push([T[0],T[1]])}for(var _=[],D=i;D<l;D++){var O=n[D];_.push([O[0],O[1]])}if((m=v+u)<(w=f+d))for(var S=0;S<s.length;S++){var x=s[S];_.push([x[0],x[1]])}else for(var M=s.length-1;M>=0;M--){var k=s[M];_.push([k[0],k[1]])}return vv(g)>vv(_)?g:_}}function wv(e){var t=e.detail.element;this.completeClosedContourEdit(t)}function Ev(e){var t=(0,Y.getEnabledElement)(e),n=t.viewport,r=t.renderingEngine,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.editData,c=l.fusedCanvasPoints,s=l.prevCanvasPoints;if(c){var d=(Nu(this.configuration)?Uu(this.configuration,c,s):c).map((function(e){return n.canvasToWorld(e)}));a.data.polyline=d,a.data.isOpenContour=!1,a.invalidated=!0,this.triggerAnnotationModified(a,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,aa(r,i),this.deactivateClosedContourEdit(e)}function yv(e){this.completeClosedContourEdit(e)}var Iv=function(e){e.activateClosedContourEdit=fv.bind(e),e.deactivateClosedContourEdit=gv.bind(e),e.mouseDragClosedContourEditCallback=hv.bind(e),e.mouseUpClosedContourEditCallback=wv.bind(e),e.finishEditAndStartNewEdit=pv.bind(e),e.fuseEditPointsWithClosedContour=mv.bind(e),e.cancelClosedContourEdit=yv.bind(e),e.completeClosedContourEdit=Ev.bind(e)},bv=ru,Cv=tu;function Tv(e,t,n){this.isEditingOpen=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,Y.getEnabledElement)(a).viewport,c=t.data.polyline.map(l.worldToCanvas),s=Cv(l,this.configuration.subPixelResolution),d=s.spacing,u=s.xDir,v=s.yDir;this.editData={prevCanvasPoints:c,editCanvasPoints:[i],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:d,xDir:u,yDir:v,movingTextBox:!1},Ge.isInteractingWithTool=!0,a.addEventListener($.MOUSE_UP,this.mouseUpOpenContourEditCallback),a.addEventListener($.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener($.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),a.addEventListener($.TOUCH_END,this.mouseUpOpenContourEditCallback),a.addEventListener($.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener($.TOUCH_TAP,this.mouseUpOpenContourEditCallback),$l(a)}function _v(e){Ge.isInteractingWithTool=!1,e.removeEventListener($.MOUSE_UP,this.mouseUpOpenContourEditCallback),e.removeEventListener($.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener($.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),e.removeEventListener($.TOUCH_END,this.mouseUpOpenContourEditCallback),e.removeEventListener($.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener($.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Jl(e)}function Dv(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,Y.getEnabledElement)(r),l=i.renderingEngine,c=i.viewport,s=this.commonData,d=s.viewportIdsToRender,u=s.xDir,v=s.yDir,f=s.spacing,g=this.editData,h=g.editIndex,p=g.editCanvasPoints,m=g.startCrossingIndex,w=p[p.length-1],E=c.canvasToWorld(w),y=fc.vec3.create();fc.vec3.subtract(y,o,E);var I=Math.abs(fc.vec3.dot(y,u)),b=Math.abs(fc.vec3.dot(y,v));if(!(I<=f[0]&&b<=f[1])){void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);var C=h+bv(r,p,a,this.commonData);this.editData.editIndex=C,void 0===m&&p.length>1&&this.checkForFirstCrossing(e,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(e),void 0!==m&&this.checkForSecondCrossing(e,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(e)):this.checkIfShouldOverwriteAnEnd(e)&&this.openContourEditOverwriteEnd(e),aa(l,d)}}function Ov(e){var t=e.detail.element,n=(0,Y.getEnabledElement)(t),r=n.viewport,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.fuseEditPointsForOpenContourEndEdit().map((function(e){return r.canvasToWorld(e)}));a.data.polyline=l,a.data.isOpenContour=!0,a.data.handles.points=[l[0],l[l.length-1]],a.data.handles.activeHandleIndex=1,this.triggerAnnotationModified(a,n),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.deactivateOpenContourEdit(t),this.activateOpenContourEndEdit(e,a,i,null)}function Sv(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.editData,l=i.snapIndex,c=i.prevCanvasPoints;if(void 0===i.startCrossingIndex||void 0===l)return!1;if(-1===l)return!0;if(0!==l&&l!==c.length-1)return!1;var s=o,d=a,u=c[l],v=fc.vec2.create(),f=fc.vec2.create();fc.vec2.set(v,s[0]-d[0],s[1]-d[1]),fc.vec2.set(f,s[0]-u[0],s[1]-u[1]);var g=fc.vec2.dot(v,f),h=Math.sqrt(v[0]*v[0]+v[1]*v[1]),p=Math.sqrt(f[0]*f[0]+f[1]*f[1]);return Math.acos(g/(h*p))<Math.PI/2}function xv(){var e=this.editData,t=e.snapIndex,n=e.prevCanvasPoints,r=e.editCanvasPoints,o=e.startCrossingIndex,a=[];if(0===t)for(var i=n.length-1;i>=o;i--){var l=n[i];a.push([l[0],l[1]])}else for(var c=0;c<o;c++){var s=n[c];a.push([s[0],s[1]])}if(fc.vec2.distance(n[o],r[0])<fc.vec2.distance(n[o],r[r.length-1]))for(var d=0;d<r.length;d++){var u=r[d];a.push([u[0],u[1]])}else for(var v=r.length-1;v>=0;v--){var f=r[v];a.push([f[0],f[1]])}return a}function Mv(e){var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=t.startCrossingIndex,a=t.snapIndex;if(void 0!==o&&void 0!==a){var i,l,c=e.detail.element,s=Nr(r);bv(c,s,n[a],this.commonData),s.length>r.length&&s.pop(),o>a?(i=a,l=o):(i=o,l=a);for(var d=fc.vec2.distance(n[i],s[0]),u=fc.vec2.distance(n[i],s[s.length-1]),v=fc.vec2.distance(n[l],s[0]),f=fc.vec2.distance(n[l],s[s.length-1]),g=[],h=0;h<i;h++){var p=n[h];g.push([p[0],p[1]])}if(d+f<u+v)for(var m=0;m<s.length;m++){var w=s[m];g.push([w[0],w[1]])}else for(var E=s.length-1;E>=0;E--){var y=s[E];g.push([y[0],y[1]])}for(var I=l;I<n.length;I++){var b=n[I];g.push([b[0],b[1]])}return g}}function kv(e){var t=e.detail.element,n=(0,Y.getEnabledElement)(t),r=n.viewport,o=n.renderingEngine,a=this.commonData,i=a.annotation,l=a.viewportIdsToRender,c=this.editData,s=c.fusedCanvasPoints,d=c.editCanvasPoints,u=s.map((function(e){return r.canvasToWorld(e)}));i.data.polyline=u,i.data.isOpenContour=!0,i.data.handles.points=[u[0],u[u.length-1]],this.triggerAnnotationModified(i,n);var v=d.pop();this.editData={prevCanvasPoints:s,editCanvasPoints:[v],startCrossingIndex:void 0,editIndex:0},aa(o,l)}function Rv(e){var t=e.detail.element;this.completeOpenContourEdit(t)}function Pv(e){var t=(0,Y.getEnabledElement)(e),n=t.viewport,r=t.renderingEngine,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.editData,c=l.fusedCanvasPoints,s=l.prevCanvasPoints;if(c){var d=(Nu(this.configuration)?Uu(this.configuration,c,s):c).map((function(e){return n.canvasToWorld(e)}));a.data.polyline=d,a.data.isOpenContour=!0,a.data.handles.points=[d[0],d[d.length-1]],a.data.isOpenUShapeContour&&(a.data.openUShapeContourVectorToPeak=Vu(c,n)),a.invalidated=!0,this.triggerAnnotationModified(a,t)}this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,aa(r,i),this.deactivateOpenContourEdit(e)}function Nv(e){this.completeOpenContourEdit(e)}var Av=function(e){e.activateOpenContourEdit=Tv.bind(e),e.deactivateOpenContourEdit=_v.bind(e),e.mouseDragOpenContourEditCallback=Dv.bind(e),e.mouseUpOpenContourEditCallback=Rv.bind(e),e.fuseEditPointsWithOpenContour=Mv.bind(e),e.finishEditOpenOnSecondCrossing=kv.bind(e),e.checkIfShouldOverwriteAnEnd=Sv.bind(e),e.fuseEditPointsForOpenContourEndEdit=xv.bind(e),e.openContourEditOverwriteEnd=Ov.bind(e),e.cancelOpenContourEdit=Nv.bind(e),e.completeOpenContourEdit=Pv.bind(e)},Lv=tu;function Uv(e,t,n,r){this.isDrawing=!0;var o=e.detail.element,a=(0,Y.getEnabledElement)(o).viewport,i=Lv(a,this.configuration.subPixelResolution),l=i.spacing,c=i.xDir,s=i.yDir,d=t.data.polyline.map(a.worldToCanvas);0===t.data.handles.activeHandleIndex&&d.reverse();var u=!1;r.worldPosition&&(u=!0),this.drawData={canvasPoints:d,polylineIndex:d.length-1},this.commonData={annotation:t,viewportIdsToRender:n,spacing:l,xDir:c,yDir:s,movingTextBox:u},Ge.isInteractingWithTool=!0,o.addEventListener($.MOUSE_UP,this.mouseUpDrawCallback),o.addEventListener($.MOUSE_DRAG,this.mouseDragDrawCallback),o.addEventListener($.MOUSE_CLICK,this.mouseUpDrawCallback),o.addEventListener($.TOUCH_END,this.mouseUpDrawCallback),o.addEventListener($.TOUCH_DRAG,this.mouseDragDrawCallback),o.addEventListener($.TOUCH_TAP,this.mouseUpDrawCallback),$l(o)}var Vv=function(e){e.activateOpenContourEndEdit=Uv.bind(e)},Bv=nu;function jv(e,t){var n={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id,annotationUID:t.annotationUID},r=this.getStyle("lineWidth",n,t),o=this.getStyle("lineDash",n,t),a=this.getStyle("color",n,t);return{color:void 0===a?void 0:a,width:void 0===r?void 0:r,lineDash:void 0===o?void 0:o,connectLastToFirst:!t.data.isOpenContour}}function Hv(e,t,n){var r;null!=e&&null!==(r=e.viewport)&&void 0!==r&&r.getImageData()&&(n.data.isOpenContour?n.data.isOpenUShapeContour?(function(e,t){t.data.openUShapeContourVectorToPeak||(t.data.openUShapeContourVectorToPeak=function(e,t){var n=e.viewport;return Vu(t.data.polyline.map(n.worldToCanvas),n)}(e,t))}(e,n),this.renderOpenUShapedContour(e,t,n)):this.renderOpenContour(e,t,n):this.renderClosedContour(e,t,n))}function Wv(e,t,n){var r=e.viewport,o=this._getRenderingOptions(e,n),a=n.data.polyline.map((function(e){return r.worldToCanvas(e)}));Nc(t,n.annotationUID,"1",a,o)}function Fv(e,t,n){var r,o=e.viewport,a=this._getRenderingOptions(e,n),i=n.data.polyline.map((function(e){return o.worldToCanvas(e)}));Nc(t,n.annotationUID,"1",i,a);var l=n.data.handles.activeHandleIndex;if(!0===(null===(r=this.configuration.alwaysRenderOpenContourHandles)||void 0===r?void 0:r.enabled)){var c=this.configuration.alwaysRenderOpenContourHandles.radius,s=[i[0],i[i.length-1]];0===l?s.shift():1===l&&s.pop(),kc(t,n.annotationUID,"0",s,{color:a.color,handleRadius:c})}if(null!==l){var d=i[0===l?0:i.length-1];kc(t,n.annotationUID,"1",[d],{color:a.color})}}function Gv(e,t,n){var r=e.viewport,o=n.data,a=o.polyline,i=o.openUShapeContourVectorToPeak;if(this.renderOpenContour(e,t,n),i){var l=r.worldToCanvas(a[0]),c=r.worldToCanvas(a[a.length-1]),s=[r.worldToCanvas(i[0]),r.worldToCanvas(i[1])],d=this._getRenderingOptions(e,n);Nc(t,n.annotationUID,"first-to-last",[l,c],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"}),Nc(t,n.annotationUID,"midpoint-to-open-contour",[s[0],s[1]],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"})}}function qv(e,t,n){var r=this._getRenderingOptions(e,n),o=this.configuration.allowOpenContours,a=this.drawData.canvasPoints;if(r.connectLastToFirst=!1,Nc(t,n.annotationUID,"1",a,r),o){var i=a[0],l=a[a.length-1];Bv(i,l,this.configuration.closeContourProximity)?Nc(t,n.annotationUID,"2",[l,i],r):kc(t,n.annotationUID,"0",[i],{color:r.color,handleRadius:2})}}function zv(e,t,n){var r=this.editData.fusedCanvasPoints;if(void 0!==r){var o=this._getRenderingOptions(e,n);Nc(t,n.annotationUID,"preview-1",r,o)}else this.renderClosedContour(e,t,n)}function Kv(e,t,n){var r=this.editData.fusedCanvasPoints;if(void 0!==r){var o=this._getRenderingOptions(e,n);Nc(t,n.annotationUID,"preview-1",r,o)}else this.renderOpenContour(e,t,n)}var Yv=function(e){e.renderContour=Hv.bind(e),e.renderClosedContour=Wv.bind(e),e.renderOpenContour=Fv.bind(e),e.renderOpenUShapedContour=Gv.bind(e),e.renderContourBeingDrawn=qv.bind(e),e.renderClosedContourBeingEdited=zv.bind(e),e.renderOpenContourBeingEdited=Kv.bind(e),e._getRenderingOptions=jv.bind(e)};function Jv(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var $v=ou,Zv=1-Y.CONSTANTS.EPSILON,Xv=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,subPixelResolution:4,interpolation:{interpolateOnAdd:!1,interpolateOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},calculateStats:!1,getTextLines:Qv,statsCalculator:vd}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"commonData",void 0),ne(da(e),"isDrawing",!1),ne(da(e),"isEditingClosed",!1),ne(da(e),"isEditingOpen",!1),ne(da(e),"activateDraw",void 0),ne(da(e),"activateClosedContourEdit",void 0),ne(da(e),"activateOpenContourEdit",void 0),ne(da(e),"activateOpenContourEndEdit",void 0),ne(da(e),"cancelDrawing",void 0),ne(da(e),"cancelClosedContourEdit",void 0),ne(da(e),"cancelOpenContourEdit",void 0),ne(da(e),"renderContour",void 0),ne(da(e),"renderContourBeingDrawn",void 0),ne(da(e),"renderClosedContourBeingEdited",void 0),ne(da(e),"renderOpenContourBeingEdited",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine,s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=js(o,e.getToolName()),g=l.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:g,referencedImageId:v,toolName:e.getToolName()},data:{handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},polyline:[Nr(a)],label:"",cachedStats:{}}};return et(h,o),e.activateDraw(t,h,f),t.preventDefault(),aa(c,f),h})),ne(da(e),"handleSelectedCallback",(function(t,n,r){var o=js(t.detail.element,e.getToolName());e.activateOpenContourEndEdit(t,n,o,r)})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=js(t.detail.element,e.getToolName());n.data.isOpenContour?e.activateOpenContourEdit(t,n,r):e.activateClosedContourEdit(t,n,r)})),ne(da(e),"isPointNearTool",(function(e,t,n,r){for(var o=(0,Y.getEnabledElement)(e).viewport,a=t.data.polyline,i=o.worldToCanvas(a[0]),l=1;l<a.length;l++){var c=i,s=o.worldToCanvas(a[l]);if(!0===$v(n,c,s,r))return!0;i=s}if(t.data.isOpenContour)return!1;var d=o.worldToCanvas(a[0]),u=o.worldToCanvas(a[a.length-1]);return!0===$v(n,d,u,r)})),ne(da(e),"cancel",(function(t){var n=e.isDrawing,r=e.isEditingOpen,o=e.isEditingClosed;n?e.cancelDrawing(t):r?e.cancelOpenContourEdit(t):o&&e.cancelClosedContourEdit(t)})),ne(da(e),"triggerAnnotationModified",(function(e,t){var n=t.viewportId,r=t.renderingEngineId,o=$.ANNOTATION_MODIFIED,a={annotation:e,viewportId:n,renderingEngineId:r};(0,Y.triggerEvent)(Y.eventTarget,o,a)})),ne(da(e),"triggerAnnotationCompleted",(function(e){var t=$.ANNOTATION_COMPLETED,n={annotation:e};(0,Y.triggerEvent)(Y.eventTarget,t,n)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=t.renderingEngine,c=i.element,s=e.getTargetId(i),d=Qe(e.getToolName(),c);if(null===(r=d)||void 0===r||!r.length)return a;if(null===(o=d=e.filterInteractableAnnotationsForElement(c,d))||void 0===o||!o.length)return a;var u=e.isDrawing,v=e.isEditingOpen,f=e.isEditingClosed;if(u||v||f){var g=e.commonData.annotation.annotationUID;d.forEach((function(r){if(r.annotationUID===g)if(u)e.renderContourBeingDrawn(t,n,r);else if(f)e.renderClosedContourBeingEdited(t,n,r);else{if(!v)throw new Error("Unknown ".concat(e.getToolName()," annotation rendering state"));e.renderOpenContourBeingEdited(t,n,r)}else e.renderContour(t,n,r)})),a=!0}else d.forEach((function(r){e.renderContour(t,n,r)}));return e.configuration.calculateStats?(d.forEach((function(r){var o,a,c,d=null===(o=e.commonData)||void 0===o?void 0:o.annotation.annotationUID;if(r.annotationUID!==d||null!==(a=e.commonData)&&void 0!==a&&a.movingTextBox){var u={isPreScaled:sd(i,s),isSuvScaled:e.isSuvScaled(i,s,r.metadata.referencedImageId)};if(null===(c=e.commonData)||void 0===c||!c.movingTextBox){var v=r.data;v.cachedStats[s]&&void 0!==v.cachedStats[s].areaUnit?r.invalidated&&e._throttledCalculateCachedStats(r,i,l,t,u):(v.cachedStats[s]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,i,l,t,u))}e._renderStats(r,i,t,n)}})),a):void 0})),ne(da(e),"_calculateCachedStats",(function(t,n,r,o,a){for(var i=t.data,l=i.cachedStats,c=i.polyline,s=Object.keys(l),d=function(){var o,i,d,v=s[u],f=e.getTargetIdImage(v,r);if(!f)return"continue";var g=f.imageData,h=f.metadata,p=c.map((function(e){return n.worldToCanvas(e)})),m=td(f),w=au(p)/m/m,E=Y.utilities.transformWorldToIndex(g,c[0]);E[0]=Math.floor(E[0]),E[1]=Math.floor(E[1]),E[2]=Math.floor(E[2]);for(var y=E[0],I=E[0],b=E[1],C=E[1],T=E[2],_=E[2],D=1;D<c.length;D++){var O=Y.utilities.transformWorldToIndex(g,c[D]);O[0]=Math.floor(O[0]),O[1]=Math.floor(O[1]),O[2]=Math.floor(O[2]),y=Math.min(y,O[0]),I=Math.max(I,O[0]),b=Math.min(b,O[1]),C=Math.max(C,O[1]),T=Math.min(T,O[2]),_=Math.max(_,O[2])}var S=.01*(I-y),x=.01*(C-b),M=.01*(_-T),k=[[y=Math.floor(y-S),I=Math.ceil(I+S)],[b=Math.floor(b-x),C=Math.ceil(C+x)],[T=Math.floor(T-M),_=Math.ceil(_+M)]],R=g.indexToWorld([I,C,_]),P=n.worldToCanvas(R),N=0,A=[],L=0,U=Zc(g,(function(e,t){var r=!0,o=n.worldToCanvas(e);return o[1]!=N&&(L=0,N=o[1],(A=function(e,t,n){for(var r=[],o=function(e,t,n){var r,o,a=[];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var i=r;i<e.length;i++)$d(t,n,e[o],e[i])&&a.push([o,i]),o=i;return a}(e,t,n,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]),a=0;a<o.length;a++){var i=Qd(t,n,e[o[a][0]],e[o[a][1]]);r.push(i)}return r}(p,o,[P[0],o[1]])).sort((function(e,t){return e[0]===t[0]?0:e[0]<t[0]?-1:1}))),A.length&&o[0]>A[0][0]&&(A.shift(),L++),L%2==0&&(r=!1),r}),e.configuration.statsCalculator.statsCallback,k),V=cd(h.Modality,t.metadata.referencedImageId,a),B=e.configuration.statsCalculator.getStatistics();l[v]={Modality:h.Modality,area:w,mean:null===(o=B[1])||void 0===o?void 0:o.value,max:null===(i=B[0])||void 0===i?void 0:i.value,stdDev:null===(d=B[3])||void 0===d?void 0:d.value,statsArray:B,pointsInShape:U,areaUnit:ed(0,f),modalityUnit:V}},u=0;u<s.length;u++)d();return e.triggerAnnotationModified(t,o),t.invalidated=!1,l})),ne(da(e),"_renderStats",(function(t,n,r,o){var a,i=t.data,l=e.getTargetId(n),c={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:r.viewport.id},s=e.getLinkedTextBoxStyle(c,t);if(s.visibility){var d=e.configuration.getTextLines(i,l);if(d&&0!==d.length){var u=i.polyline.map((function(e){return n.worldToCanvas(e)}));if(!i.handles.textBox.hasMoved){var v=id(u);i.handles.textBox.worldPosition=n.canvasToWorld(v)}var f=n.worldToCanvas(i.handles.textBox.worldPosition),g=Bc(o,null!==(a=t.annotationUID)&&void 0!==a?a:"","1",d,f,u,{},s),h=g.x,p=g.y,m=g.width,w=g.height;i.handles.textBox.worldBoundingBox={topLeft:n.canvasToWorld([h,p]),topRight:n.canvasToWorld([h+m,p]),bottomLeft:n.canvasToWorld([h,p+w]),bottomRight:n.canvasToWorld([h+m,p+w])}}}})),ev(da(e)),sv(da(e)),Iv(da(e)),Av(da(e)),Vv(da(e)),Yv(da(e)),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"filterInteractableAnnotationsForElement",value:function(e,t){if(t&&t.length){var n,r=(0,Y.getEnabledElement)(e).viewport;if(r instanceof Y.StackViewport)n=Gs(r,t);else{if(!(r instanceof Y.VolumeViewport))throw new Error("Viewport Type ".concat(r.type," not supported"));var o=r.getCamera(),a=Y.utilities.getTargetVolumeAndSpacingInNormalDir(r,o).spacingInNormalDirection;n=this.filterAnnotationsWithinSlice(t,o,a)}return n}}},{key:"filterAnnotationsWithinSlice",value:function(e,t,n){var r=t.viewPlaneNormal,o=e.filter((function(e){var t=e.metadata.viewPlaneNormal,n=Math.abs(fc.vec3.dot(r,t))>Zv;return t&&n}));if(!o.length)return[];var a,i=n/2,l=t.focalPoint,c=[],s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Jv(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Jv(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(s.s();!(a=s.n()).done;){var d=a.value,u=d.data.polyline[0];if(d.isVisible){var v=fc.vec3.create();fc.vec3.sub(v,l,u);var f=fc.vec3.dot(v,r);Math.abs(f)<i&&c.push(d)}}}catch(e){s.e(e)}finally{s.f()}return c}}]),o}($s);function Qv(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.stdDev,i=n.max,l=n.isEmptyArea,c=n.areaUnit,s=n.modalityUnit,d=[];if(r){var u=l?"Area: Oblique not supported":"Area: ".concat(ts(r)," ").concat(c);d.push(u)}return o&&d.push("Mean: ".concat(ts(o)," ").concat(s)),i&&d.push("Max: ".concat(ts(i)," ").concat(s)),a&&d.push("Std Dev: ".concat(ts(a)," ").concat(s)),d}ne(Xv,"toolName",void 0),Xv.toolName="PlanarFreehandROI";var ef=Xv;function tf(e,t,n){if(function(e,t,n){var r;if(null==t||null===(r=t.data)||void 0===r||!r.polyline||n<=0)return!0;if(!e.viewport)return!0;var o=e.renderingEngineId,a=e.viewportId,i=e.FrameOfReferenceUID,l=jr(a,o);if(t.metadata.FrameOfReferenceUID!==i)return!0;if(!l)return!0;var c=l.getToolInstance(t.metadata.toolName);return!(c instanceof ef)||c.isDrawing||c.isEditingOpen||c.isEditingClosed}(e,t,n))return!1;var r=e.viewport,o=t.data.polyline.map(r.worldToCanvas),a=Pu(o,0,o.length,n);return a!==o&&(t.data.polyline=a.map(r.canvasToWorld),!0)}var nf={interpolateAnnotation:tf},rf={};function of(e){var t=(0,Y.getEnabledElement)(e).viewportId;return rf[t]}var af,lf=Y.Enums.RequestType.Prefetch,cf=0,sf={maxImagesToPrefetch:1/0,preserveExistingPool:!0},df=10;function uf(e,t){e=Math.round(e)||0;var n=[],r=(t=Math.round(t)||0)-e+1;if(r<=0)return n;for(;r--;)n[r]=t--;return n}function vf(e){var t=(0,Y.getEnabledElement)(e);if(!t)throw new Error("stackPrefetch: element must be a valid Cornerstone enabled element");var n=t.viewport;if(!(n instanceof Y.StackViewport))throw new Error("stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented");return{currentImageIdIndex:n.getCurrentImageIdIndex(),imageIds:n.getImageIds()}}function ff(e){var t=of(e);if(t){var n=t||{},r=vf(e);if(r&&r.imageIds&&0!==r.imageIds.length){if(n.indicesToRequest&&n.indicesToRequest.length||(n.enabled=!1),!1!==n.enabled&&(t.indicesToRequest.sort((function(e,t){return e-t})),n.indicesToRequest.slice().forEach((function(e){var t=r.imageIds[e];t&&Y.cache.getImageLoadObject(t)&&function(e){var t=n.indicesToRequest.indexOf(e);t>-1&&n.indicesToRequest.splice(t,1)}(e)})),n.indicesToRequest.length)){sf.preserveExistingPool||Y.imageLoadPoolManager.clearRequestStack(lf);for(var o,a,i,l,c,s,d=(o=n.indicesToRequest,a=r.currentImageIdIndex,i=0,l=o.length-1,o.forEach((function(e,t){e<a?i=Math.max(t,i):e>a&&(l=Math.min(t,l))})),{low:i,high:l}),u=d.low,v=d.high,f=[];u>=0||v<n.indicesToRequest.length;){var g=r.currentImageIdIndex,h=!(g-n.indicesToRequest[u]>sf.maxImagesToPrefetch)&&u>=0,p=!(n.indicesToRequest[v]-g>sf.maxImagesToPrefetch)&&v<n.indicesToRequest.length;if(!p&&!h)break;h&&(s=n.indicesToRequest[u--],c=r.imageIds[s],f.push(c)),p&&(s=n.indicesToRequest[v++],c=r.imageIds[s],f.push(c))}var m=function(e,t){return Y.imageLoader.loadAndCacheImage(e,t)},w=(0,Y.getConfiguration)().rendering.useNorm16Texture;f.forEach((function(e){var t={targetBuffer:{type:w?void 0:"Float32Array"},preScale:{enabled:!0},requestType:lf};Y.imageLoadPoolManager.addRequest(m.bind(null,e,t),lf,{imageId:e},cf)}))}}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")}}function gf(e){return function(t){var n,r=t.detail;try{n=vf(e)}catch(e){return}if(n&&n.imageIds&&0!==n.imageIds.length){var o=n.imageIds.indexOf(r.imageId);if(!(o<0)){var a=of(e);a&&a.indicesToRequest&&a.indicesToRequest.length&&a.indicesToRequest.push(o)}}}}function hf(e){clearTimeout(af),af=setTimeout((function(){var t=e.target;try{ff(t)}catch(e){return}}),df)}function pf(e){var t=vf(e);if(t&&t.imageIds&&0!==t.imageIds.length){var n={indicesToRequest:uf(0,t.imageIds.length-1),enabled:!0,direction:1},r=n.indicesToRequest.indexOf(t.currentImageIdIndex);n.indicesToRequest.splice(r,1),function(e,t){var n=(0,Y.getEnabledElement)(e).viewportId;rf[n]=t}(e,n),ff(e),e.removeEventListener(Y.Enums.Events.STACK_NEW_IMAGE,hf),e.addEventListener(Y.Enums.Events.STACK_NEW_IMAGE,hf);var o=gf(e);Y.eventTarget.removeEventListener(Y.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,o),Y.eventTarget.addEventListener(Y.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,o)}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")}function mf(e){clearTimeout(af),e.removeEventListener(Y.Enums.Events.STACK_NEW_IMAGE,hf);var t=gf(e);Y.eventTarget.removeEventListener(Y.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);var n=of(e);n&&n.indicesToRequest.length&&(n.enabled=!1,Y.imageLoadPoolManager.clearRequestStack(lf))}function wf(){return sf}function Ef(e){sf=e}function yf(e,t){if(e instanceof Y.VolumeViewport){var n=e.getCamera().focalPoint,r=[0,0,0];return fc.vec3.sub(r,t,n),function(e,t){var n=e.getCamera(),r=n.viewPlaneNormal,o=fc.vec3.dot(t,r),a=fc.vec3.fromValues(r[0],r[1],r[2]);if(fc.vec3.scale(a,a,o),Math.abs(a[0])>.001||Math.abs(a[1])>.001||Math.abs(a[2])>.001){var i=[0,0,0],l=[0,0,0];fc.vec3.add(i,n.focalPoint,a),fc.vec3.add(l,n.position,a),e.setCamera({focalPoint:i,position:l}),e.render()}}(e,r),!0}}var If=function(e,t){var n=t.frameNumbers||Nr(Array(e.numTimePoints).keys());if(!t.maskVolumeId&&!t.imageCoordinate)throw new Error("No ROI provided");if(t.maskVolumeId&&t.imageCoordinate)throw new Error("Please provide only one ROI");if(t.maskVolumeId){for(var r=Y.cache.getVolume(t.maskVolumeId).getScalarData(),o=[],a=0,i=r.length;a<i;a++)0!==r[a]&&o.push(a);var l=function(e,t,n){for(var r=n.getScalarDataArrays(),o=[],a=function(n){var a=[];e.forEach((function(e){var o=r[e];a.push(o[t[n]])})),o.push(a)},i=0;i<t.length;i++)a(i);return o}(n,o,e);return l}if(t.imageCoordinate){var c=function(e,t,n){var r=n.dimensions,o=n.imageData.worldToIndex(t);if(o[0]=Math.floor(o[0]),o[1]=Math.floor(o[1]),o[2]=Math.floor(o[2]),!Y.utilities.indexWithinDimensions(o,r))throw new Error("outside bounds");var a=r[0],i=r[0]*r[1],l=n.getScalarDataArrays(),c=[];return e.forEach((function(e){var t=l[e],n=o[2]*i+o[1]*a+o[0];c.push(t[n])})),c}(n,t.imageCoordinate,e);return c}},bf=function(e,t,n){var r=n||Nr(Array(e.numTimePoints).keys()),o=r.length;if(r.length<=1)throw new Error("Please provide two or more time points");var a=e.getScalarDataArrays(),i=a[0].length,l=new Float32Array(i);if(t===Y.Enums.DynamicOperatorType.SUM){for(var c=0;c<o;c++)for(var s=a[r[c]],d=0;d<i;d++)l[d]+=s[d];return l}if(t===Y.Enums.DynamicOperatorType.SUBTRACT){if(r.length>2)throw new Error("Please provide only 2 time points for subtraction.");for(var u=0;u<i;u++)l[u]+=a[r[0]][u]-a[r[1]][u];return l}if(t===Y.Enums.DynamicOperatorType.AVERAGE){for(var v=0;v<o;v++)for(var f=a[r[v]],g=0;g<i;g++)l[g]+=f[g];for(var h=0;h<i;h++)l[h]=l[h]/o;return l}},Cf=function(e,t){var n=Hl.getDefinedCursor(t,!0);n||(n=ml.getDefinedCursor(t)),n||(console.log("Cursor ".concat(t," is not defined either as SVG or as a standard cursor.")),n=ml.getDefinedCursor(t)),Yl(e,n)},Tf=[].concat(Nr(Nl),Nr(El)),_f=function(e,t,n){var r=Vl("textBoxFontSize",e,t,n),o=Vl("textBoxFontFamily",e,t,n);return"".concat(r,"px ").concat(o)},Df=function(e){if(!e||!e.length)throw new Error("The segmentationInputArray is undefined or empty array");e.forEach((function(e){if(void 0===e.segmentationId)throw new Error("The segmentationInput.segmentationId is undefined, please provide a valid segmentationId");if(void 0===e.representation)throw new Error("The segmentationInput.representation is undefined, please provide a valid representation");e.representation.type===ut.Labelmap&&function(e){if(!e.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");var t=e.representation.data;if(!t.volumeId)throw new Error("The segmentationInput.representationData.volumeId is undefined, please provide a valid representationData.volumeId");if(!Y.cache.getVolume(t.volumeId))throw new Error("volumeId of ".concat(t.volumeId," not found in cache, you should load and cache volume before adding segmentation"))}(e)}))},Of=function(e){Df(e),e.map((function(e){Rt(oe()(e))}))};function Sf(){return(Sf=Na(La().mark((function e(t,n,r){var o,a;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(sa(t)){e.next=3;break}throw new Error("No tool group found for toolGroupId: ".concat(t));case 3:return o=n.map((function(e){return xf(t,e,r)})),e.next=6,Promise.all(o);case 6:return a=e.sent,e.abrupt("return",a);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function xf(e,t,n){return Mf.apply(this,arguments)}function Mf(){return(Mf=Na(La().mark((function e(t,n,r){var o;return La().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.type!==ut.Labelmap){e.next=6;break}return e.next=3,Pi.addSegmentationRepresentation(t,n,r);case 3:case 9:o=e.sent,e.next=13;break;case 6:if(n.type!==ut.Contour){e.next=12;break}return e.next=9,vi.addSegmentationRepresentation(t,n,r);case 12:throw new Error("The representation type ".concat(n.type," is not supported"));case 13:return e.abrupt("return",o);case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var kf=function(e,t,n){return Sf.apply(this,arguments)};var Rf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return te(this,o),r.call(this,e,t)}return ee(o,[{key:"touchDragCallback",value:function(e){this._dragCallback(e)}},{key:"mouseDragCallback",value:function(e){this._dragCallback(e)}},{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.deltaPoints,o=(0,Y.getEnabledElement)(n),a=r.world,i=o.viewport.getCamera(),l=i.focalPoint,c=i.position,s=[c[0]-a[0],c[1]-a[1],c[2]-a[2]],d=[l[0]-a[0],l[1]-a[1],l[2]-a[2]];o.viewport.setCamera({focalPoint:d,position:s}),o.viewport.render()}}]),o}(Ra);ne(Rf,"toolName",void 0),Rf.toolName="Pan";var Pf=Rf;var Nf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"rotateCamera",(function(e,t,n,r){var o=e.getVtkActiveCamera(),a=o.getViewUp(),i=o.getFocalPoint(),l=o.getPosition(),c=[0,0,0],s=[0,0,0],d=[0,0,0],u=fc.mat4.identity(new Float32Array(16));fc.mat4.translate(u,u,t),fc.mat4.rotate(u,u,r,n),fc.mat4.translate(u,u,[-t[0],-t[1],-t[2]]),fc.vec3.transformMat4(c,l,u),fc.vec3.transformMat4(s,i,u),fc.mat4.identity(u),fc.mat4.rotate(u,u,r,n),fc.vec3.transformMat4(d,a,u),e.setCamera({position:c,viewUp:d,focalPoint:s})})),e.touchDragCallback=e._dragCallback.bind(da(e)),e.mouseDragCallback=e._dragCallback.bind(da(e)),e}return ee(o,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=t.lastPoints,a=r.canvas,i=o.canvas,l=this.configuration.rotateIncrementDegrees,c=(0,Y.getEnabledElement)(n).viewport,s=c.getCamera(),d=n.clientWidth,u=n.clientHeight,v=[a[0]/d,a[1]/u],f=[i[0]/d,i[1]/u],g=[.5*d,.5*u],h=c.canvasToWorld(g),p=Math.pow(1+Math.abs(.5),2),m=[f[0],0,0],w=[v[0],0,0],E=Math.pow(m[0],2),y=Math.pow(w[0],2),I=E>p?0:Math.sqrt(p-E),b=y>p?0:Math.sqrt(p-y),C=[m[0],0,I];cu().normalize(C);var T=[w[0],0,b];cu().normalize(T);var _=cu().dot(C,T);if(Math.abs(_)>1e-4){var D=-2*Math.acos(cu().clampValue(_,-1,1))*Math.sign(v[0]-f[0])*l,O=s.viewUp,S=s.viewPlaneNormal,x=[0,0,0],M=[0,0,0];cu().cross(O,S,x),cu().normalize(x),cu().cross(S,x,M),cu().normalize(M),cu().normalize(O),this.rotateCamera(c,h,M,D);var k=(f[1]-v[1])*l;this.rotateCamera(c,h,x,k),c.render()}}}]),o}(Ra);ne(Nf,"toolName",void 0),Nf.toolName="TrackballRotate";var Af=Nf;var Lf=Y.utilities.transformWorldToIndex,Uf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Vf}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"editData",void 0),ne(da(e),"eventDispatchDetail",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{points:[Nr(a)]},cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,newAnnotation:!0,viewportIdsToRender:h},e._activateModify(o),$l(o),t.preventDefault(),aa(c,h),g})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=(0,Y.getEnabledElement)(n),c=l.renderingEngine,s=l.viewportId;if(e.eventDispatchDetail={viewportId:s,renderingEngineId:c.id},e._deactivateModify(n),Jl(n),e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(c,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=e.editData,l=i.annotation,c=i.viewportIdsToRender;l.data.handles.points[0]=Nr(a),l.invalidated=!0;var s=(0,Y.getEnabledElement)(o).renderingEngine;aa(s,c)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=c[f],o=r.annotationUID,l=r.data,v=l.handles.points[0],g=i.worldToCanvas(v);u.annotationUID=o;var h=e.getStyle("color",u,r),p={isPreScaled:sd(i,s),isSuvScaled:e.isSuvScaled(i,s,r.metadata.referencedImageId)};if(l.cachedStats[s]){if(r.invalidated&&(e._calculateCachedStats(r,d,t,p),i instanceof Y.VolumeViewport)){var m=r.metadata.referencedImageId;for(var w in l.cachedStats)w.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=Y.utilities.imageIdToURI(m),n=e.hasImageURI(t),r=Y.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[w]}}else l.cachedStats[s]={Modality:null,index:null,value:null},e._calculateCachedStats(r,d,t,p);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};kc(n,o,"0",[g],{color:h}),a=!0;var E=e.getLinkedTextBoxStyle(u,r);if(!E.visibility)return"continue";var y=e.configuration.getTextLines(l,s);if(y){var I=[g[0]+6,g[1]-6];Uc(n,o,"0",y,[I[0],I[1]],E)}},f=0;f<c.length;f++){var g=v();if("continue"!==g&&"object"===Z(g))return g.v}return a})),e}return ee(o,[{key:"isPointNearTool",value:function(){return!1}},{key:"toolSelectedCallback",value:function(){}},{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=t.data.handles.points[0],i=o.worldToCanvas(a);if(!0==fc.vec2.distance(n,i)<r)return a}},{key:"handleSelectedCallback",value:function(e,t){var n=e.detail.element;t.highlighted=!0;var r=js(n,this.getToolName());this.editData={annotation:t,viewportIdsToRender:r},this._activateModify(n),$l(n);var o=(0,Y.getEnabledElement)(n).renderingEngine;aa(o,r),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n,r){for(var o=e.data,a=n.viewportId,i=n.renderingEngineId,l=o.handles.points[0],c=o.cachedStats,s=Object.keys(c),d=0;d<s.length;d++){var u=s[d],v=this.getTargetIdImage(u,t);if(v){var f=v.dimensions,g=v.imageData,h=v.metadata,p="getScalarData"in v?v.getScalarData():v.scalarData,m=h.Modality,w=Lf(g,l);if(w[0]=Math.round(w[0]),w[1]=Math.round(w[1]),w[2]=Math.round(w[2]),Y.utilities.indexWithinDimensions(w,f)){this.isHandleOutsideImage=!1;var E=f[0],y=f[0]*f[1],I=p[w[2]*y+w[1]*E+w[0]];if(u.startsWith("imageId:")){var b=u.split("imageId:")[1],C=Y.utilities.imageIdToURI(b),T=Y.utilities.getViewportsWithImageURI(C,i)[0];w[2]=T.getCurrentImageIdIndex()}var _=cd(m,e.metadata.referencedImageId,r);c[u]={index:w,value:I,Modality:m,modalityUnit:_}}else this.isHandleOutsideImage=!0,c[u]={index:w,Modality:m};e.invalidated=!1;var D=$.ANNOTATION_MODIFIED,O={annotation:e,viewportId:a,renderingEngineId:i};(0,Y.triggerEvent)(Y.eventTarget,D,O)}}return c}}]),o}($s);function Vf(e,t){var n=e.cachedStats[t],r=n.index,o=n.value,a=n.modalityUnit;if(void 0!==o){var i=[];return i.push("(".concat(r[0],", ").concat(r[1],", ").concat(r[2],")")),i.push("".concat(o.toFixed(2)," ").concat(a)),i}}ne(Uf,"toolName",void 0),Uf.toolName="Probe";var Bf=Uf;var jf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Hf}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"editData",void 0),ne(da(e),"eventDispatchDetail",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"postMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:v},data:{label:"",handles:{points:[Nr(a)]},cachedStats:{}}},g=js(o,e.getToolName());return e.editData={annotation:f,newAnnotation:!0,viewportIdsToRender:g},e._activateModify(o),$l(o),t.preventDefault(),aa(c,g),f})),ne(da(e),"postTouchStartCallback",(function(t){return e.postMouseDownCallback(t)})),ne(da(e),"renderAnnotation",(function(t,n){var r=!1,o=t.viewport;if(!e.editData)return r;var a=e.filterInteractableAnnotationsForElement(o.element,[e.editData.annotation]);if(null==a||!a.length)return r;var i=e.getTargetId(o),l=o.getRenderingEngine(),c={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},s=e.editData.annotation,d=s.annotationUID,u=s.data,v=u.handles.points[0],f=o.worldToCanvas(v);c.annotationUID=d;var g=e.getStyle("color",c,s),h={isPreScaled:sd(o,i),isSuvScaled:e.isSuvScaled(o,i,s.metadata.referencedImageId)};if(u.cachedStats[i]?s.invalidated&&e._calculateCachedStats(s,l,t,h):(u.cachedStats[i]={Modality:null,index:null,value:null},e._calculateCachedStats(s,l,t,h)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),r;kc(n,d,"0",[f],{color:g}),r=!0;var p=e.configuration.getTextLines(u,i);if(p){var m=[f[0]+6,f[1]-6];Uc(n,d,"0",p,[m[0],m[1]],e.getLinkedTextBoxStyle(c,s))}return r})),e}return ee(o)}(Bf);function Hf(e,t){var n=e.cachedStats[t],r=n.index,o=n.value,a=n.modalityUnit;if(void 0!==o){var i=[];return i.push("(".concat(r[0],", ").concat(r[1],", ").concat(r[2],")")),i.push("".concat(o.toFixed(2)," ").concat(a)),i}}ne(jf,"toolName",void 0),jf.toolName="DragProbe";var Wf=jf;var Ff=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return te(this,o),ne(da(e=r.call(this,t,n)),"_getImageDynamicRangeFromMiddleSlice",(function(t,n){var r,o,a=Math.floor(n[2]/2),i=n[0]*n[1];t instanceof Float32Array?(r=4,o=Float32Array):t instanceof Uint8Array?(r=1,o=Uint8Array):t instanceof Uint16Array?(r=2,o=Uint16Array):t instanceof Int16Array&&(r=2,o=Int16Array);var l=new o(t.buffer,a*i*r,i),c=e._getMinMax(l,i);return c.max-c.min})),e}return ee(o,[{key:"touchDragCallback",value:function(e){this.mouseDragCallback(e)}},{key:"mouseDragCallback",value:function(e){var t,n,r,o,a,i,l=e.detail,c=l.element,s=l.deltaPoints,d=(0,Y.getEnabledElement)(c),u=d.renderingEngine,v=d.viewport,f=!1;if(v instanceof Y.VolumeViewport){t=this.getTargetId(v).split("volumeId:")[1],i=Y.utilities.getViewportsWithVolumeId(t,u.id);var g=v.getProperties().voiRange;n=g.lower,r=g.upper;var h=Y.cache.getVolume(t);o=h.metadata.Modality,f=h.scaling&&Object.keys(h.scaling).length>0}else{if(!(v instanceof Y.StackViewport))throw new Error("Viewport is not a valid type");var p,m=v.getProperties();o=v.modality;var w=m.voiRange;n=w.lower,r=w.upper;var E=v.getImageData().preScale;f=E.scaled&&void 0!==(null===(p=E.scalingParameters)||void 0===p?void 0:p.suvbw)}return a="PT"===o?this.getPTScaledNewRange({deltaPointsCanvas:s.canvas,lower:n,upper:r,clientHeight:c.clientHeight,isPreScaled:f,viewport:v,volumeId:t}):this.getNewRange({viewport:v,deltaPointsCanvas:s.canvas,volumeId:t,lower:n,upper:r}),v instanceof Y.StackViewport?(v.setProperties({voiRange:a}),void v.render()):v instanceof Y.VolumeViewport?(v.setProperties({voiRange:a}),void i.forEach((function(e){e.render()}))):void 0}},{key:"getPTScaledNewRange",value:function(e){var t,n=e.deltaPointsCanvas,r=e.lower,o=e.upper,a=e.clientHeight,i=e.viewport,l=e.volumeId,c=e.isPreScaled;return t=c?5/a:this._getMultiplierFromDynamicRange(i,l)||4,o-=n[1]*t,{lower:r,upper:o=c?Math.max(o,.1):o}}},{key:"getNewRange",value:function(e){var t=e.viewport,n=e.deltaPointsCanvas,r=e.volumeId,o=e.lower,a=e.upper,i=this._getMultiplierFromDynamicRange(t,r)||4,l=n[0]*i,c=n[1]*i,s=Y.utilities.windowLevel.toWindowLevel(o,a),d=s.windowWidth,u=s.windowCenter;return d+=l,u+=c,d=Math.max(d,1),Y.utilities.windowLevel.toLowHighRange(d,u)}},{key:"_getMultiplierFromDynamicRange",value:function(e,t){var n;if(t){var r,o=Y.cache.getVolume(t),a=o.dimensions,i=o.getScalarData(),l=this._getImageDynamicRangeFromMiddleSlice(i,a),c=null==o||null===(r=o.metadata)||void 0===r?void 0:r.BitsStored,s=c?Math.pow(2,c):1/0;n=Math.min(l,s)}else n=this._getImageDynamicRangeFromViewport(e);var d=n/1024,u=4;return d>1&&(u=Math.round(d)),u}},{key:"_getImageDynamicRangeFromViewport",value:function(e){var t,n,r=e.getImageData().imageData,o=r.getDimensions();if(t=r.getScalarData?r.getScalarData():r.getPointData().getScalars(),1!==o[2])return this._getImageDynamicRangeFromMiddleSlice(t,o);if(t.getRange)n=t.getRange();else{var a=this._getMinMax(t,t.length);n=[a.min,a.max]}return n[1]-n[0]}},{key:"_getMinMax",value:function(e,t){for(var n=1/0,r=-1/0,o=0;o<t;o++){var a=e[o];a<n&&(n=a),a>r&&(r=a)}return{max:r,min:n}}}]),o}(Ra);ne(Ff,"toolName",void 0),Ff.toolName="WindowLevel";var Gf=Ff;var qf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.1,maxZoomScale:30,pinchToZoom:!0,pan:!0,invert:!1}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"initialMousePosWorld",void 0),ne(da(e),"dirVec",void 0),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints.world,a=(0,Y.getEnabledElement)(r).viewport.getCamera().focalPoint;e.initialMousePosWorld=o;var i=fc.vec3.fromValues(a[0]-o[0],a[1]-o[1],a[2]-o[2]);return i=fc.vec3.normalize(fc.vec3.create(),i),e.dirVec=i,!1})),ne(da(e),"preTouchStartCallback",(function(t){if(!e.configuration.pinchToZoom)return e.preMouseDownCallback(t)})),ne(da(e),"_dragParallelProjection",(function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=t.detail,i=a.element,l=a.deltaPoints,c=o?t.detail.deltaDistance.canvas:l.canvas[1],s=[i.clientWidth,i.clientHeight],d=r.parallelScale,u=r.focalPoint,v=r.position,f=(1-c*(1.5/s[1])*(e.configuration.invert?-1:1))*d,g=u,h=v;if(!e.configuration.zoomToCenter){var p=fc.vec3.distance(u,e.initialMousePosWorld),m=c*(5/s[1])*(e.configuration.invert?-1:1);f=(1-m)*d,h=fc.vec3.scaleAndAdd(fc.vec3.create(),v,e.dirVec,-p*m),g=fc.vec3.scaleAndAdd(fc.vec3.create(),u,e.dirVec,-p*m)}var w=n.getImageData(),E=[1,1,1];w&&(E=w.spacing);var y=e.configuration,I=y.minZoomScale,b=y.maxZoomScale,C=i.clientHeight*E[1]*.5,T=C/f,_=f,D=!1;w&&(T<I?(_=C/I,D=!0):T>=b&&(_=C/b,D=!0)),n.setCamera({parallelScale:_,focalPoint:D?u:g,position:D?v:h})})),ne(da(e),"_dragPerspectiveProjection",(function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=t.detail,i=a.element,l=a.deltaPoints,c=o?t.detail.deltaDistance.canvas:l.canvas[1],s=[i.clientWidth,i.clientHeight],d=r.position,u=r.focalPoint,v=r.viewPlaneNormal,f=cu().distance2BetweenPoints(d,u),g=Math.sqrt(f)/s[1],h=[-v[0],-v[1],-v[2]],p=e.configuration.invert?c/g:c*g,m=p*h[0];d[0]+=m,u[0]+=m,m=p*h[1],d[1]+=m,u[1]+=m,m=p*h[2],d[2]+=m,u[2]+=m,n.setCamera({position:d,focalPoint:u})})),e.initialMousePosWorld=[0,0,0],e.dirVec=[0,0,0],e.configuration.pinchToZoom?e.touchDragCallback=e._pinchCallback.bind(da(e)):e.touchDragCallback=e._dragCallback.bind(da(e)),e.mouseDragCallback=e._dragCallback.bind(da(e)),e}return ee(o,[{key:"_pinchCallback",value:function(e){if(e.detail.currentPointsList.length>1){var t=e.detail,n=t.element,r=t.currentPoints,o=(0,Y.getEnabledElement)(n).viewport,a=o.getCamera(),i=r.world,l=a.focalPoint;this.initialMousePosWorld=i;var c=fc.vec3.fromValues(l[0]-i[0],l[1]-i[1],l[2]-i[2]);c=fc.vec3.normalize(fc.vec3.create(),c),this.dirVec=c,a.parallelProjection?this._dragParallelProjection(e,o,a,!0):this._dragPerspectiveProjection(e,o,a,!0),o.render()}this.configuration.pan&&this._panCallback(e)}},{key:"_dragCallback",value:function(e){var t=e.detail.element,n=(0,Y.getEnabledElement)(t).viewport,r=n.getCamera();r.parallelProjection?this._dragParallelProjection(e,n,r):this._dragPerspectiveProjection(e,n,r),n.render()}},{key:"_panCallback",value:function(e){var t=e.detail,n=t.element,r=t.deltaPoints,o=(0,Y.getEnabledElement)(n),a=r.world,i=o.viewport.getCamera(),l=i.focalPoint,c=i.position,s=[c[0]-a[0],c[1]-a[1],c[2]-a[2]],d=[l[0]-a[0],l[1]-a[1],l[2]-a[2]];o.viewport.setCamera({focalPoint:d,position:s}),o.viewport.render()}}]),o}(Ra);ne(qf,"toolName",void 0),qf.toolName="Zoom";var zf=qf;var Kf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}};return te(this,o),ne(da(e=r.call(this,t,n)),"deltaY",void 0),e.deltaY=1,e}return ee(o,[{key:"mouseDragCallback",value:function(e){this._dragCallback(e)}},{key:"touchDragCallback",value:function(e){this._dragCallback(e)}},{key:"_dragCallback",value:function(e){var t,n=e.detail,r=n.deltaPoints,o=n.viewportId,a=n.renderingEngineId,i=(0,Y.getEnabledElementByIds)(o,a).viewport,l=this.getTargetId(i),c=this.configuration,s=c.debounceIfNotLoaded,d=c.invert,u=c.loop,v=r.canvas[1];i instanceof Y.VolumeViewport&&(t=l.split("volumeId:")[1]);var f=this._getPixelPerImage(i),g=v+this.deltaY;if(f)if(Math.abs(g)>=f){var h=Math.round(g/f);hc(i,{delta:d?-h:h,volumeId:t,debounceLoading:s,loop:u}),this.deltaY=g%f}else this.deltaY=g}},{key:"_getPixelPerImage",value:function(e){var t=e.element,n=this._getNumberOfSlices(e);return Math.max(2,t.offsetHeight/Math.max(n,8))}},{key:"_getNumberOfSlices",value:function(e){return e instanceof Y.VolumeViewport?Y.utilities.getImageSliceDataForVolumeViewport(e).numberOfSlices:e instanceof Y.StackViewport?e.getImageIds().length:void 0}}]),o}(Ra);ne(Kf,"toolName",void 0),Kf.toolName="StackScroll";var Yf=Kf;function Jf(e,t){var n=lt(e,2),r=n[0],o=n[1],a=lt(t,2),i=a[0],l=a[1],c=fc.vec3.sub(fc.vec3.create(),o,r),s=fc.vec3.sub(fc.vec3.create(),i,l),d=fc.vec3.dot(c,s)/(fc.vec3.length(c)*fc.vec3.length(s));return 180*Math.acos(d)/Math.PI}var $f=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),e.touchDragCallback=e._dragCallback.bind(da(e)),e.mouseDragCallback=e._dragCallback.bind(da(e)),e}return ee(o,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=t.startPoints,a=r.world,i=o.world,l=(0,Y.getEnabledElement)(n).viewport,c=l.getCamera(),s=[.5*n.clientWidth,.5*n.clientHeight],d=l.canvasToWorld(s),u=Jf([i,d],[d,a]),v=c.viewPlaneNormal,f=c.viewUp,g=fc.vec3.sub(fc.vec3.create(),d,i),h=fc.vec3.sub(fc.vec3.create(),d,a),p=fc.vec3.cross(fc.vec3.create(),g,h);if(fc.vec3.dot(v,p)>0&&(u=-u),!Number.isNaN(u)){if(l instanceof Y.BaseVolumeViewport){var m=u*Math.PI/180,w=fc.mat4.identity(new Float32Array(16));fc.mat4.rotate(w,w,m,v);var E=fc.vec3.transformMat4(fc.vec3.create(),f,w);l.setCamera({viewUp:E})}else{var y=l.getProperties().rotation;l.setProperties({rotation:y+u})}l.render()}}}]),o}(Ra);ne($f,"toolName",void 0),$f.toolName="PlanarRotate";var Zf=$f;var Xf=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}};return te(this,o),ne(da(e=r.call(this,t,n)),"_configuration",void 0),e}return ee(o,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.wheel,r=t.element,o=n.direction,a=this.configuration.invert,i=(0,Y.getEnabledElement)(r).viewport,l=o*(a?-1:1),c=this.getTargetId(i).split("volumeId:")[1];hc(i,{delta:l,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:c})}}]),o}(Ra);ne(Xf,"toolName",void 0),Xf.toolName="StackScrollMouseWheel";var Qf=Xf;var eg={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]},tg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:eg.Z,rotateIncrementDegrees:.5}};return te(this,o),ne(da(e=r.call(this,t,n)),"_configuration",void 0),e}return ee(o,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.element,r=t.wheel,o=(0,Y.getEnabledElement)(n).viewport,a=this.configuration,i=a.direction,l=a.rotateIncrementDegrees,c=o.getCamera(),s=c.viewUp,d=c.position,u=c.focalPoint,v=r.direction,f=lt(u,3),g=f[0],h=f[1],p=f[2],m=lt(i,3),w=m[0],E=m[1],y=m[2],I=v*l,b=[0,0,0],C=[0,0,0],T=[0,0,0],_=fc.mat4.identity(new Float32Array(16));fc.mat4.translate(_,_,[g,h,p]),fc.mat4.rotate(_,_,I,[w,E,y]),fc.mat4.translate(_,_,[-g,-h,-p]),fc.vec3.transformMat4(b,d,_),fc.vec3.transformMat4(C,u,_),fc.mat4.identity(_),fc.mat4.rotate(_,_,I,[w,E,y]),fc.vec3.transformMat4(T,s,_),o.setCamera({position:b,viewUp:T,focalPoint:C}),o.render()}}]),o}(Ra);ne(tg,"toolName",void 0),tg.toolName="VolumeRotateMouseWheel";var ng=tg;var rg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}};return te(this,o),ne(da(e=r.call(this,t,n)),"_bounds",void 0),e}return ee(o,[{key:"mouseClickCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=(0,Y.getEnabledElement)(n),a=o.viewport,i=o.renderingEngine,l=this.getTargetId(a);if(!l.startsWith("volumeId"))throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");var c=l.split("volumeId:")[1],s=-1/0,d=su(a,r.world,c,(function(e,t){if(e>s)return s=e,t}));if(d&&d.length){var u=this.configuration,v=u.targetViewportIds,f=u.toolGroupId;i.getViewports().filter((function(e){if((null==v?void 0:v.indexOf(e.id))>=0)return!0;var t=jr(e.id,i.id);return!(!f||f!==(null==t?void 0:t.id))})).forEach((function(e){e instanceof Y.VolumeViewport?yf(e,d):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")}))}}}]),o}(Ra);ne(rg,"toolName",void 0),rg.toolName="MIPJumpToClickTool";var og=rg;var ag=Y.utilities.transformWorldToIndex,ig=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:lg}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;$l(o),e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Nr(a),Nr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),aa(c,h),g})),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=lt(t.data.handles.points,2),i=a[0],l=a[1],c=o.worldToCanvas(i),s=o.worldToCanvas(l),d={start:{x:c[0],y:c[1]},end:{x:s[0],y:s[1]}};return od([d.start.x,d.start.y],[d.end.x,d.end.y],[n[0],n[1]])<=r})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),$l(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;s.handles.points[l]=Nr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,Y.getEnabledElement)(r).renderingEngine;aa(h,i)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_MOVE,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_MOVE,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<c.length;v++){var f=c[v],g=f.annotationUID,h=f.data,p=h.handles,m=p.points,w=p.activeHandleIndex;u.annotationUID=g;var E=e.getStyle("lineWidth",u,f),y=e.getStyle("lineDash",u,f),I=e.getStyle("color",u,f),b=e.getStyle("shadow",u,f),C=m.map((function(e){return i.worldToCanvas(e)})),T=void 0;if(h.cachedStats[s]&&void 0!==h.cachedStats[s].unit?f.invalidated&&e._throttledCalculateCachedStats(f,d,t):(h.cachedStats[s]={length:null,unit:null},e._calculateCachedStats(f,d,t)),Me(g)){se(f)||e.editData||null===w||(T=[C[w]]),T&&kc(n,g,"0",C,{color:I,lineDash:y,lineWidth:E});var _="".concat(g,"-line");if(Rc(n,g,"1",C[0],C[1],{color:I,width:E,lineDash:y,shadow:b},_),a=!0,!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var D=e.getLinkedTextBoxStyle(u,f);if(D.visibility){var O=e.configuration.getTextLines(h,s);if(!h.handles.textBox.hasMoved){var S=id(C);h.handles.textBox.worldPosition=i.canvasToWorld(S)}var x=i.worldToCanvas(h.handles.textBox.worldPosition),M=Bc(n,g,"1",O,x,C,{},D),k=M.x,R=M.y,P=M.width,N=M.height;h.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([k,R]),topRight:i.canvasToWorld([k+P,R]),bottomLeft:i.canvasToWorld([k,R+N]),bottomRight:i.canvasToWorld([k+P,R+N])}}else h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=js(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),$l(r);var c=(0,Y.getEnabledElement)(r).renderingEngine;aa(c,l),e.preventDefault()}},{key:"_calculateLength",value:function(e,t){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+r*r+o*o)}},{key:"_calculateCachedStats",value:function(e,t,n){for(var r=e.data,o=n.viewportId,a=n.renderingEngineId,i=r.handles.points[0],l=r.handles.points[1],c=r.cachedStats,s=Object.keys(c),d=0;d<s.length;d++){var u=s[d],v=this.getTargetIdImage(u,t);if(v){var f=v.imageData,g=v.dimensions,h=td(v),p=this._calculateLength(i,l)/h,m=ag(f,i),w=ag(f,l);this._isInsideVolume(m,w,g)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,c[u]={length:p,unit:Qs(0,v)}}}e.invalidated=!1;var E=$.ANNOTATION_MODIFIED,y={annotation:e,viewportId:o,renderingEngineId:a};return(0,Y.triggerEvent)(Y.eventTarget,E,y),c}},{key:"_isInsideVolume",value:function(e,t,n){return Y.utilities.indexWithinDimensions(e,n)&&Y.utilities.indexWithinDimensions(t,n)}}]),o}($s);function lg(e,t){var n=e.cachedStats[t],r=n.length,o=n.unit;if(null!=r&&!isNaN(r))return["".concat(ts(r)," ").concat(o)]}ne(ig,"toolName",void 0),ig.toolName="Length";var cg=ig,sg=h(847),dg=h.n(sg);var ug=Y.CONSTANTS.RENDERING_DEFAULTS;function vg(){return"rgb(0, 200, 0)"}function fg(){return!0}function gg(){return!0}function hg(){return!0}var pg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t,n,a,i,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!0,autoPan:{enabled:!1,panSize:10},referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:Y.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}};return te(this,o),ne(da(i=r.call(this,l,c)),"toolCenter",[0,0,0]),ne(da(i),"_getReferenceLineColor",void 0),ne(da(i),"_getReferenceLineControllable",void 0),ne(da(i),"_getReferenceLineDraggableRotatable",void 0),ne(da(i),"_getReferenceLineSlabThicknessControlsOn",void 0),ne(da(i),"editData",void 0),ne(da(i),"initializeViewport",(function(e){var t=e.renderingEngineId,n=e.viewportId,r=(0,Y.getEnabledElementByIds)(n,t),o=r.FrameOfReferenceUID,a=r.viewport,l=a.element,c=a.getCamera(),s=c.position,d=c.focalPoint,u=c.viewPlaneNormal,v=i._getAnnotations(r);return(v=i.filterInteractableAnnotationsForElement(l,v)).length&&nt(v[0].annotationUID),et({highlighted:!1,metadata:{cameraPosition:Nr(s),cameraFocalPoint:Nr(d),FrameOfReferenceUID:o,toolName:i.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:i.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:n}},l),{normal:u,point:a.canvasToWorld([a.canvas.clientWidth/2,a.canvas.clientHeight/2])}})),ne(da(i),"_getViewportsInfo",(function(){return sa(i.toolGroupId).viewportsInfo})),ne(da(i),"computeToolCenter",(function(e){if(!e.length||1===e.length)throw new Error("For crosshairs to operate, at least two viewports must be given.");var t=lt(e,3),n=t[0],r=t[1],o=t[2],a=i.initializeViewport(n),l=a.normal,c=a.point,s=i.initializeViewport(r),d=s.normal,u=s.point,v=[0,0,0],f=fc.vec3.create();if(o){var g=i.initializeViewport(o);v=g.normal,f=g.point}else fc.vec3.add(f,c,u),fc.vec3.scale(f,f,.5),fc.vec3.cross(v,l,d);var h=Y.utilities.planar.planeEquation(l,c),p=Y.utilities.planar.planeEquation(d,u),m=Y.utilities.planar.planeEquation(v,f);i.toolCenter=Y.utilities.planar.threePlaneIntersection(h,p,m);var w=(0,Y.getEnabledElementByIds)(e[0].viewportId,e[0].renderingEngineId).renderingEngine;aa(w,e.map((function(e){return e.viewportId})))})),ne(da(i),"addNewAnnotation",(function(e){var t=e.detail,n=t.element,r=t.currentPoints.world,o=(0,Y.getEnabledElement)(n),a=o.viewport;i._jump(o,r);for(var l=i._getAnnotations(o),c=i.filterInteractableAnnotationsForElement(a.element,l),s=c[0].data,d=s.handles.rotationPoints,u=[],v=0;v<d.length-1;++v){var f=d[v][1],g=i._getReferenceLineControllable(f.id),h=i._getReferenceLineDraggableRotatable(f.id);g&&h&&(u.push(f.id),v++)}return s.activeViewportIds=[].concat(u),s.handles.activeOperation=1,e.preventDefault(),$l(n),i._activateModify(n),c[0]})),ne(da(i),"cancel",(function(){console.log("Not implemented yet")})),ne(da(i),"handleSelectedCallback",(function(e,t){var n=e.detail.element;t.highlighted=!0,i._activateModify(n),$l(n),e.preventDefault()})),ne(da(i),"isPointNearTool",(function(e,t,n,r){return!!i._pointNearTool(e,t,n,6)})),ne(da(i),"toolSelectedCallback",(function(e,t,n){var r=e.detail.element;t.highlighted=!0,i._activateModify(r),$l(r),e.preventDefault()})),ne(da(i),"onCameraModified",(function(e){var t,n=e.detail.element,r=(0,Y.getEnabledElement)(n),o=r.renderingEngine,a=r.viewport,l=i._getAnnotations(r),c=i.filterInteractableAnnotationsForElement(n,l)[0];if(c){var s=a.getCamera(),d=c.metadata.cameraPosition,u=[0,0,0];cu().subtract(s.position,d,u);var v=c.metadata.cameraFocalPoint,f=[0,0,0];cu().subtract(s.focalPoint,v,f),c.metadata.cameraPosition=Nr(s.position),c.metadata.cameraFocalPoint=Nr(s.focalPoint);var g=i._getReferenceLineControllable(a.id),h=i._getReferenceLineDraggableRotatable(a.id);if(!Y.utilities.isEqual(s.position,d,.001)&&g&&h){var p=!1;Y.utilities.isEqual(u,f,.001)||(p=!0);var m=Math.abs(cu().dot(u,s.viewPlaneNormal))<.01;p||m||(i.toolCenter[0]+=u[0],i.toolCenter[1]+=u[1],i.toolCenter[2]+=u[2])}null!==(t=i.configuration.autoPan)&&void 0!==t&&t.enabled&&jr(a.id,o.id).getViewportIds().filter((function(e){return e!==a.id})).forEach((function(e){i._autoPanViewportIfNecessary(e,o)}));var w=js(n,i.getToolName(),!1);aa(o,w)}})),ne(da(i),"mouseMoveCallback",(function(e,t){for(var n=e.detail,r=n.element,o=n.currentPoints.canvas,a=!1,l=0;l<t.length;l++){var c=t[l];if(!se(c)){var s=c.data,d=c.highlighted;if(s.handles){var u=s.handles.activeOperation,v=s.activeViewportIds&&s.activeViewportIds.length>0?Nr(s.activeViewportIds):[];s.activeViewportIds=[],s.handles.activeOperation=null;var f;(f=!!i.getHandleNearImagePoint(r,c,o,6)||i._pointNearTool(r,c,o,6))&&!d||!f&&d?(c.highlighted=!d,a=!0):s.handles.activeOperation===u&&i._areViewportIdArraysEqual(s.activeViewportIds,v)||(a=!0)}}}return a})),ne(da(i),"filterInteractableAnnotationsForElement",(function(e,t){if(!t||!t.length)return[];var n=(0,Y.getEnabledElement)(e).viewportId;return t.filter((function(e){return e.data.viewportId===n}))})),ne(da(i),"renderAnnotation",(function(e,t){var n=!1,r=e.viewport,o=e.renderingEngine,a=r.element,l=i._getAnnotations(e),c=r.getCamera(),s=i.filterInteractableAnnotationsForElement(a,l)[0];if(null==l||!l.length||null==s||!s.data)return n;var d=s.annotationUID,u=r.canvas,v=u.clientWidth,f=u.clientHeight,g=Math.sqrt(v*v+f*f),h=Math.min(v,f),p=s.data,m=r.worldToCanvas(i.toolCenter),w=i._filterAnnotationsByUniqueViewportOrientations(e,l),E=[],y=[0,0,v,f];w.forEach((function(e){var t=e.data;t.handles.toolCenter=i.toolCenter;var n=o.getViewport(t.viewportId),a=n.getCamera(),l=i._getReferenceLineControllable(n.id),s=i._getReferenceLineDraggableRotatable(n.id),d=i._getReferenceLineSlabThicknessControlsOn(n.id),u=n.canvas,v=u.clientWidth,f=u.clientHeight,p=Math.sqrt(v*v+f*f),I=[.5*v,.5*f],b=n.canvasToWorld(I),C=[0,0,0];cu().cross(c.viewPlaneNormal,a.viewPlaneNormal,C),cu().normalize(C),cu().multiplyScalar(C,p);var T=[0,0,0];cu().add(b,C,T);var _=[0,0,0];cu().subtract(b,C,_);var D=r.worldToCanvas(T),O=r.worldToCanvas(b),S=fc.vec2.create();fc.vec2.subtract(S,D,O),fc.vec2.normalize(S,S);var x=fc.vec2.create();fc.vec2.scale(x,S,100*g);var M=fc.vec2.create();fc.vec2.scale(M,S,.4*h);var k=fc.vec2.create();fc.vec2.scale(k,S,.2*h);var R=fc.vec2.create(),P=i.configuration.referenceLinesCenterGapRadius;fc.vec2.scale(R,S,2===w.length?P:0);var N=fc.vec2.create(),A=fc.vec2.create(),L=fc.vec2.create(),U=fc.vec2.create(),V=fc.vec2.clone(m);s&&l||(V=fc.vec2.clone(O)),fc.vec2.add(N,V,R),fc.vec2.add(A,V,x),fc.vec2.subtract(L,V,R),fc.vec2.subtract(U,V,x),qd(N,A,y),qd(L,U,y);var B=fc.vec2.create();fc.vec2.subtract(B,m,M);var j=fc.vec2.create();fc.vec2.add(j,m,M);var H=fc.vec2.clone(m);!s&&d&&(H=fc.vec2.clone(O));var W=Nr(i.toolCenter);!s&&d&&(W=Nr(b));var F=[0,0,0];cu().subtract(T,_,F),cu().normalize(F);var G=c.viewPlaneNormal,q=dg().buildFromDegree().rotate(90,G).matrix,z=[0,0,0];fc.vec3.transformMat4(z,F,q);var K=n.getSlabThickness(),Y=[].concat(z);cu().multiplyScalar(Y,K);var J=[0,0,0];cu().add(W,Y,J);var $=r.worldToCanvas(J),Z=fc.vec2.create();fc.vec2.subtract(Z,H,$);var X=fc.vec2.create();fc.vec2.subtract(X,H,x),fc.vec2.add(X,X,Z);var Q=fc.vec2.create();fc.vec2.add(Q,H,x),fc.vec2.add(Q,Q,Z),qd(X,Q,y);var ee=fc.vec2.create();fc.vec2.add(ee,H,x),fc.vec2.subtract(ee,ee,Z);var te=fc.vec2.create();fc.vec2.subtract(te,H,x),fc.vec2.subtract(te,te,Z),qd(ee,te,y);var ne=fc.vec2.create(),re=fc.vec2.create(),oe=fc.vec2.create(),ae=fc.vec2.create();fc.vec2.subtract(ne,H,k),fc.vec2.add(ne,ne,Z),fc.vec2.add(re,H,k),fc.vec2.add(re,re,Z),fc.vec2.subtract(oe,H,k),fc.vec2.subtract(oe,oe,Z),fc.vec2.add(ae,H,k),fc.vec2.subtract(ae,ae,Z),E.push([n,N,A,L,U,X,Q,ee,te,B,j,ne,re,oe,ae])}));var I=[],b=[],C=i._getReferenceLineColor(r.id),T=void 0!==C?C:"rgb(200, 200, 200)";return E.forEach((function(e,n){var o,a,l=e[0],c=i._getReferenceLineColor(l.id),s=i._getReferenceLineControllable(l.id),u=i._getReferenceLineDraggableRotatable(l.id)||(null===(o=i.configuration.mobile)||void 0===o?void 0:o.enabled),v=i._getReferenceLineSlabThicknessControlsOn(l.id)||(null===(a=i.configuration.mobile)||void 0===a?void 0:a.enabled),f=p.activeViewportIds.find((function(e){return e===l.id})),g=void 0!==c?c:"rgb(200, 200, 200)",h=1,m=null!==p.handles.activeOperation&&1===p.handles.activeOperation&&f;m&&(h=2.5);var w="".concat(n);if(s&&u?(w="".concat(n,"One"),Rc(t,d,w,e[1],e[2],{color:g,lineWidth:h}),w="".concat(n,"Two"),Rc(t,d,w,e[3],e[4],{color:g,lineWidth:h})):Rc(t,d,w,e[2],e[4],{color:g,lineWidth:h}),s){var E;g=void 0!==c?c:"rgb(200, 200, 200)";var y=2===p.handles.activeOperation,C=[e[9],e[10]],T=[r.canvasToWorld(e[9]),l,e[1],e[2]],_=[r.canvasToWorld(e[10]),l,e[3],e[4]];I.push(T,_);var D=3===p.handles.activeOperation,O=[e[11],e[12],e[13],e[14]],S=[r.canvasToWorld(e[11]),l,e[5],e[6]],x=[r.canvasToWorld(e[12]),l,e[5],e[6]],M=[r.canvasToWorld(e[13]),l,e[7],e[8]],k=[r.canvasToWorld(e[14]),l,e[7],e[8]];if(b.push(S,x,M,k),(m||null!==(E=i.configuration.mobile)&&void 0!==E&&E.enabled)&&!y&&!D&&u&&v){var R,P,N,A,L,U,V,B,j="".concat(n,"One");kc(t,d,j,C,{color:g,handleRadius:null!==(R=i.configuration.mobile)&&void 0!==R&&R.enabled?null===(P=i.configuration.mobile)||void 0===P?void 0:P.handleRadius:3,opacity:null!==(N=i.configuration.mobile)&&void 0!==N&&N.enabled?null===(A=i.configuration.mobile)||void 0===A?void 0:A.opacity:1,type:"circle"}),j="".concat(n,"Two"),kc(t,d,j,O,{color:g,handleRadius:null!==(L=i.configuration.mobile)&&void 0!==L&&L.enabled?null===(U=i.configuration.mobile)||void 0===U?void 0:U.handleRadius:3,opacity:null!==(V=i.configuration.mobile)&&void 0!==V&&V.enabled?null===(B=i.configuration.mobile)||void 0===B?void 0:B.opacity:1,type:"rect"})}else if(m&&!y&&!D&&u){var H,W,F,G,q="".concat(n);kc(t,d,q,C,{color:g,handleRadius:null!==(H=i.configuration.mobile)&&void 0!==H&&H.enabled?null===(W=i.configuration.mobile)||void 0===W?void 0:W.handleRadius:3,opacity:null!==(F=i.configuration.mobile)&&void 0!==F&&F.enabled?null===(G=i.configuration.mobile)||void 0===G?void 0:G.opacity:1,type:"circle"})}else if(f&&!y&&!D&&v){var z,K,Y,J,$="".concat(n);kc(t,d,$,O,{color:g,handleRadius:null!==(z=i.configuration.mobile)&&void 0!==z&&z.enabled?null===(K=i.configuration.mobile)||void 0===K?void 0:K.handleRadius:3,opacity:null!==(Y=i.configuration.mobile)&&void 0!==Y&&Y.enabled?null===(J=i.configuration.mobile)||void 0===J?void 0:J.opacity:1,type:"rect"})}else if(y&&u){var Z="".concat(n);kc(t,d,Z,C,{color:g,handleRadius:2,fill:g,type:"circle"})}else D&&f&&v&&kc(t,d,w,O,{color:g,handleRadius:2,fill:g,type:"rect"});l.getSlabThickness()>.5&&v&&(w="".concat(n,"STOne"),Rc(t,d,w,e[5],e[6],{color:g,width:1,lineDash:[2,3]}),w="".concat(n,"STTwo"),Rc(t,d,w,e[7],e[8],{color:g,width:e,lineDash:[2,3]}))}})),n=!0,p.handles.rotationPoints=I,p.handles.slabThicknessPoints=b,i.configuration.viewportIndicators&&xc(t,d,"0",[.95*v,.05*f],.01*g,{color:T,fill:T}),n})),ne(da(i),"_getAnnotations",(function(e){var t=e.viewport;return Qe(i.getToolName(),t.element)})),ne(da(i),"_onNewVolume",(function(e){var t=i._getViewportsInfo();i.computeToolCenter(t)})),ne(da(i),"_areViewportIdArraysEqual",(function(e,t){return e.length===t.length&&(e.forEach((function(e){for(var n=!1,r=0;r<t.length;++r)if(e===t[r]){n=!0;break}if(!1===n)return!1})),!0)})),ne(da(i),"_getAnnotationsForViewportsWithDifferentCameras",(function(e,t){var n=e.viewportId,r=e.renderingEngine,o=e.viewport,a=t.filter((function(e){return e.data.viewportId!==n}));if(!a||!a.length)return[];var i=o.getCamera(),l=i.viewPlaneNormal,c=i.position,s=a.filter((function(e){var t=e.data.viewportId,n=r.getViewport(t).getCamera();return!(Y.utilities.isEqual(n.viewPlaneNormal,l,.01)&&Y.utilities.isEqual(n.position,c,1))}));return s})),ne(da(i),"_filterViewportWithSameOrientation",(function(e,t,n){var r=e.renderingEngine,o=t.data,a=r.getViewport(o.viewportId),l=n.filter((function(e){var t=e.data,n=r.getViewport(t.viewportId);return!0===i._getReferenceLineControllable(n.id)}));if(!l||!l.length)return[];var c=a.getCamera(),s=c.viewPlaneNormal;return cu().normalize(s),l.filter((function(e){var t=e.data.viewportId,n=r.getViewport(t).getCamera(),o=n.viewPlaneNormal;return cu().normalize(o),Y.utilities.isEqual(s,o,.01)&&Y.utilities.isEqual(c.viewUp,n.viewUp,.01)}))})),ne(da(i),"_filterAnnotationsByUniqueViewportOrientations",(function(e,t){var n=e.renderingEngine,r=e.viewport,o=r.getCamera().viewPlaneNormal;cu().normalize(o);for(var a=t.filter((function(e){var t=e.data,o=n.getViewport(t.viewportId),a=i._getReferenceLineControllable(o.id);return r!==o&&!0===a})),l=[],c=0;c<a.length;++c){var s=a[c],d=s.data.viewportId,u=n.getViewport(d).getCamera(),v=u.viewPlaneNormal;if(cu().normalize(v),!Y.utilities.isEqual(o,v,.01)&&!Y.utilities.isOpposite(o,v,.01)){for(var f=!1,g=0;g<l.length;++g){var h=l[g].data.viewportId,p=n.getViewport(h).getCamera();Y.utilities.isEqual(p.viewPlaneNormal,u.viewPlaneNormal,.01)&&Y.utilities.isEqual(p.position,u.position,1)&&(f=!0)}f||l.push(s)}}for(var m=t.filter((function(e){var t=e.data,o=n.getViewport(t.viewportId),a=i._getReferenceLineControllable(o.id);return r!==o&&!0!==a})),w=0;w<m.length;++w){var E=m[w],y=E.data.viewportId,I=n.getViewport(y).getCamera(),b=I.viewPlaneNormal;if(cu().normalize(b),!Y.utilities.isEqual(o,b,.01)&&!Y.utilities.isOpposite(o,b,.01)){for(var C=!1,T=0;T<l.length;++T){var _=l[T].data.viewportId,D=n.getViewport(_).getCamera();Y.utilities.isEqual(D.viewPlaneNormal,I.viewPlaneNormal,.01)&&Y.utilities.isEqual(D.position,I.position,1)&&(C=!0)}C||l.push(E)}}for(var O=i._getAnnotationsForViewportsWithDifferentCameras(e,t),S=function(){var e=O[x];if(l.some((function(t){return t===e})))return"continue";var t=e.data.viewportId,r=n.getViewport(t).getCamera(),a=r.viewPlaneNormal;if(cu().normalize(a),Y.utilities.isEqual(o,a,.01)||Y.utilities.isOpposite(o,a,.01))return"continue";for(var i=!1,c=0;c<l.length;++c){var s=l[c].data.viewportId,d=n.getViewport(s).getCamera();Y.utilities.isEqual(d.viewPlaneNormal,r.viewPlaneNormal,.01)&&Y.utilities.isEqual(d.position,r.position,1)&&(i=!0)}i||l.push(e)},x=0;x<O.length;++x)S();return l})),ne(da(i),"_checkIfViewportsRenderingSameScene",(function(e,t){var n=e.getActors(),r=t.getActors(),o=!0;return n.forEach((function(e){n.length===r.length&&void 0!==r.find((function(t){return t.uid===e.uid}))||(o=!1)})),o})),ne(da(i),"_jump",(function(e,t){Ge.isInteractingWithTool=!0;var n=e.viewport,r=e.renderingEngine,o=i._getAnnotations(e),a=[0,0,0];cu().subtract(t,i.toolCenter,a);var l=i._getAnnotationsForViewportsWithDifferentCameras(e,o).filter((function(e){var t=e.data,o=r.getViewport(t.viewportId),a=i._checkIfViewportsRenderingSameScene(n,o);return i._getReferenceLineControllable(o.id)&&i._getReferenceLineDraggableRotatable(o.id)&&a}));return 0===l.length?(Ge.isInteractingWithTool=!1,!1):(i._applyDeltaShiftToSelectedViewportCameras(r,l,a),Ge.isInteractingWithTool=!1,!0)})),ne(da(i),"_activateModify",(function(e){var t;Ge.isInteractingWithTool=!(null!==(t=i.configuration.mobile)&&void 0!==t&&t.enabled),e.addEventListener($.MOUSE_UP,i._endCallback),e.addEventListener($.MOUSE_DRAG,i._dragCallback),e.addEventListener($.MOUSE_CLICK,i._endCallback),e.addEventListener($.TOUCH_END,i._endCallback),e.addEventListener($.TOUCH_DRAG,i._dragCallback),e.addEventListener($.TOUCH_TAP,i._endCallback)})),ne(da(i),"_deactivateModify",(function(e){Ge.isInteractingWithTool=!1,e.removeEventListener($.MOUSE_UP,i._endCallback),e.removeEventListener($.MOUSE_DRAG,i._dragCallback),e.removeEventListener($.MOUSE_CLICK,i._endCallback),e.removeEventListener($.TOUCH_END,i._endCallback),e.removeEventListener($.TOUCH_DRAG,i._dragCallback),e.removeEventListener($.TOUCH_TAP,i._endCallback)})),ne(da(i),"_endCallback",(function(e){var t=e.detail.element;i.editData.annotation.data.handles.activeOperation=null,i.editData.annotation.data.activeViewportIds=[],i._deactivateModify(t),Jl(t),i.editData=null;var n=(0,Y.getEnabledElement)(t).renderingEngine,r=js(t,i.getToolName(),!1);aa(n,r)})),ne(da(i),"_dragCallback",(function(e){var t=e.detail,n=t.deltaPoints.world;if(!(Math.abs(n[0])<.001&&Math.abs(n[1])<.001&&Math.abs(n[2])<.001)){var r=t.element,o=(0,Y.getEnabledElement)(r),a=o.renderingEngine,l=o.viewport,c=i._getAnnotations(o),s=i.filterInteractableAnnotationsForElement(r,c)[0];if(s){var d=s.data.handles,u=e.detail.currentPoints.canvas;if(1===d.activeOperation){var v=i._getAnnotationsForViewportsWithDifferentCameras(o,c).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineDraggableRotatable(n.id);return!0===r&&!0===o&&s.data.activeViewportIds.find((function(e){return e===n.id}))}));i._applyDeltaShiftToSelectedViewportCameras(a,v,n)}else if(2===d.activeOperation){var f=i._getAnnotationsForViewportsWithDifferentCameras(o,c).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineDraggableRotatable(n.id);return!0===r&&!0===o})),g=fc.vec2.create(),h=fc.vec2.create(),p=[i.toolCenter[0],i.toolCenter[1],i.toolCenter[2]],m=l.worldToCanvas(p),w=t.currentPoints.canvas,E=fc.vec2.create();fc.vec2.sub(E,w,t.deltaPoints.canvas),fc.vec2.sub(g,E,m),fc.vec2.sub(h,w,m);var y=fc.vec2.angle(g,h);i._isClockWise(m,E,w)&&(y*=-1),y=Math.round(100*y)/100;var I=l.getCamera().viewPlaneNormal,b=dg().buildFromRadian().translate(p[0],p[1],p[2]).rotate(y,I).translate(-p[0],-p[1],-p[2]).matrix,C=[];f.forEach((function(e){var t=e.data;t.handles.toolCenter=p;var n=a.getViewport(t.viewportId),r=n.getCamera(),o=r.viewUp,i=r.position,l=r.focalPoint;o[0]+=i[0],o[1]+=i[1],o[2]+=i[2],fc.vec3.transformMat4(l,l,b),fc.vec3.transformMat4(i,i,b),fc.vec3.transformMat4(o,o,b),o[0]-=i[0],o[1]-=i[1],o[2]-=i[2],n.setCamera({position:i,viewUp:o,focalPoint:l}),C.push(n.id)})),a.renderViewports(C)}else if(3===d.activeOperation){var T=i._getAnnotationsForViewportsWithDifferentCameras(o,c).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineSlabThicknessControlsOn(n.id);return!0===r&&!0===o&&s.data.activeViewportIds.find((function(e){return e===n.id}))}));if(0===T.length)return;var _=i._filterViewportWithSameOrientation(o,T[0],c),D=[];D.push(l.id),_.forEach((function(e){var r=e.data,o=a.getViewport(r.viewportId),c=o.getCamera().viewPlaneNormal,d=cu().dot(n,c),v=Nr(c);if(cu().multiplyScalar(v,d),Math.abs(v[0])>.001||Math.abs(v[1])>.001||Math.abs(v[2])>.001){var f=Math.sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]),g=t.lastPoints.world,h=[0,0,0],p=[i.toolCenter[0],i.toolCenter[1],i.toolCenter[2]];if(!i._getReferenceLineDraggableRotatable(o.id)){var m=i.editData.annotation.data.handles.rotationPoints.filter((function(e){return e[1].uid===o.id}));if(2===m.length){var w=l.canvasToWorld(m[0][3]),E=l.canvasToWorld(m[1][3]);cu().add(w,E,p),cu().multiplyScalar(p,.5)}}cu().subtract(g,p,h);var y=cu().dot(h,c),I=Nr(c);cu().multiplyScalar(I,y);var b=[I[0],I[1],I[2]];fc.vec3.normalize(b,b);var C=[v[0],v[1],v[2]];fc.vec3.normalize(C,C);var T=o.getSlabThickness();Y.utilities.isOpposite(b,C,.001)?T-=f:T+=f,T=Math.abs(T),T=Math.max(ug.MINIMUM_SLAB_THICKNESS,T),i._pointNearReferenceLine(s,u,6,o)&&(T=ug.MINIMUM_SLAB_THICKNESS),jr(o.id,a.id).getToolInstance(i.getToolName()).setSlabThickness(o,T),D.push(o.id)}})),a.renderViewports(D)}}}})),ne(da(i),"_pointNearReferenceLine",(function(e,t,n,r){for(var o=e.data.handles.rotationPoints,a=0;a<o.length-1;++a){var l=o[a][1];if(l.id===r.id&&i._getReferenceLineControllable(l.id)){var c={start:{x:o[a][2][0],y:o[a][2][1]},end:{x:o[a][3][0],y:o[a][3][1]}},s=od([c.start.x,c.start.y],[c.end.x,c.end.y],[t[0],t[1]]),d={start:{x:o[a+1][2][0],y:o[a+1][2][1]},end:{x:o[a+1][3][0],y:o[a+1][3][1]}},u=od([d.start.x,d.start.y],[d.end.x,d.end.y],[t[0],t[1]]);if(s<=n||u<=n)return!0;a++}}return!1})),i._getReferenceLineColor=(null===(e=l.configuration)||void 0===e?void 0:e.getReferenceLineColor)||vg,i._getReferenceLineControllable=(null===(t=l.configuration)||void 0===t?void 0:t.getReferenceLineControllable)||fg,i._getReferenceLineDraggableRotatable=(null===(n=l.configuration)||void 0===n?void 0:n.getReferenceLineDraggableRotatable)||gg,i._getReferenceLineSlabThicknessControlsOn=(null===(a=l.configuration)||void 0===a?void 0:a.getReferenceLineSlabThicknessControlsOn)||hg,i}return ee(o,[{key:"onSetToolActive",value:function(){var e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this.computeToolCenter(e)}},{key:"onSetToolPassive",value:function(){var e=this._getViewportsInfo();this.computeToolCenter(e)}},{key:"onSetToolEnabled",value:function(){var e=this._getViewportsInfo();this.computeToolCenter(e)}},{key:"onSetToolDisabled",value:function(){var e=this,t=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(t),t.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,o=(0,Y.getEnabledElementByIds)(r,n);if(o){var a=e._getAnnotations(o);null!=a&&a.length&&a.forEach((function(e){nt(e.annotationUID)}))}}))}},{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=this._getRotationHandleNearImagePoint(o,t,n,r);return null!==a||null!==(a=this._getSlabThicknessHandleNearImagePoint(o,t,n,r))?a:void 0}},{key:"_unsubscribeToViewportNewVolumeSet",value:function(e){var t=this;e.forEach((function(e){var n=e.viewportId,r=e.renderingEngineId;(0,Y.getEnabledElementByIds)(n,r).viewport.element.removeEventListener(Y.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,t._onNewVolume)}))}},{key:"_subscribeToViewportNewVolumeSet",value:function(e){var t=this;e.forEach((function(e){var n=e.viewportId,r=e.renderingEngineId;(0,Y.getEnabledElementByIds)(n,r).viewport.element.addEventListener(Y.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,t._onNewVolume)}))}},{key:"_autoPanViewportIfNecessary",value:function(e,t){var n=t.getViewport(e),r=n.canvas,o=r.clientWidth,a=r.clientHeight,i=n.worldToCanvas(this.toolCenter),l=this.configuration.autoPan.panSize,c=[i[0],i[1]];if(i[0]<0?c[0]=l:i[0]>o&&(c[0]=o-l),i[1]<0?c[1]=l:i[1]>a&&(c[1]=a-l),c[0]!==i[0]||c[1]!==i[1]){var s=n.canvasToWorld(c),d=[s[0]-this.toolCenter[0],s[1]-this.toolCenter[1],s[2]-this.toolCenter[2]],u=n.getCamera(),v=u.focalPoint,f=u.position,g=[f[0]-d[0],f[1]-d[1],f[2]-d[2]],h=[v[0]-d[0],v[1]-d[1],v[2]-d[2]];n.setCamera({focalPoint:h,position:g}),n.render()}}},{key:"setSlabThickness",value:function(e,t){var n,r=this.configuration.filterActorUIDsToSetSlabThickness;r&&r.length>0&&(n=r);var o=this.configuration.slabThicknessBlendMode;t===ug.MINIMUM_SLAB_THICKNESS&&(o=Y.Enums.BlendModes.COMPOSITE),e.setBlendMode(o,n,!1),e.setSlabThickness(t,n)}},{key:"_isClockWise",value:function(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])>0}},{key:"_applyDeltaShiftToSelectedViewportCameras",value:function(e,t,n){var r=this;t.forEach((function(t){r._applyDeltaShiftToViewportCamera(e,t,n)}))}},{key:"_applyDeltaShiftToViewportCamera",value:function(e,t,n){var r=t.data,o=e.getViewport(r.viewportId),a=o.getCamera(),i=a.viewPlaneNormal,l=cu().dot(n,i),c=Nr(i);if(cu().multiplyScalar(c,l),Math.abs(c[0])>.001||Math.abs(c[1])>.001||Math.abs(c[2])>.001){var s=[0,0,0],d=[0,0,0];cu().add(a.focalPoint,c,s),cu().add(a.position,c,d),o.setCamera({focalPoint:s,position:d}),o.render()}}},{key:"_getRotationHandleNearImagePoint",value:function(e,t,n,r){for(var o=t.data,a=o.handles.rotationPoints,i=0;i<a.length;i++){var l=a[i][0],c=a[i][1];if(this._getReferenceLineControllable(c.id)&&this._getReferenceLineDraggableRotatable(c.id)){var s=e.worldToCanvas(l);if(fc.vec2.distance(n,s)<r)return o.handles.activeOperation=2,this.editData={annotation:t},l}}return null}},{key:"_getSlabThicknessHandleNearImagePoint",value:function(e,t,n,r){for(var o=t.data,a=o.handles.slabThicknessPoints,i=0;i<a.length;i++){var l=a[i][0],c=a[i][1];if(this._getReferenceLineControllable(c.id)&&this._getReferenceLineSlabThicknessControlsOn(c.id)){var s=e.worldToCanvas(l);if(fc.vec2.distance(n,s)<r)return o.handles.activeOperation=3,o.activeViewportIds=[c.id],this.editData={annotation:t},l}}return null}},{key:"_pointNearTool",value:function(e,t,n,r){for(var o=this,a=(0,Y.getEnabledElement)(e).viewport.canvas,i=a.clientWidth,l=a.clientHeight,c=Math.sqrt(i*i+l*l),s=t.data,d=s.handles.rotationPoints,u=s.handles.slabThicknessPoints,v=[],f=0;f<d.length-1;++f){var g=d[f][1],h=this._getReferenceLineControllable(g.id),p=this._getReferenceLineDraggableRotatable(g.id);if(h&&p){var m={start:{x:d[f][2][0],y:d[f][2][1]},end:{x:d[f][3][0],y:d[f][3][1]}},w=od([m.start.x,m.start.y],[m.end.x,m.end.y],[n[0],n[1]]),E={start:{x:d[f+1][2][0],y:d[f+1][2][1]},end:{x:d[f+1][3][0],y:d[f+1][3][1]}},y=od([E.start.x,E.start.y],[E.end.x,E.end.y],[n[0],n[1]]);(w<=r||y<=r)&&(v.push(g.id),s.handles.activeOperation=1),f++}}for(var I=function(e){var t=u[e][1];if(v.find((function(e){return e===t.id})))return b=e,"continue";var a=o._getReferenceLineControllable(t.id),i=o._getReferenceLineSlabThicknessControlsOn(t.id);if(!a||!i)return b=e,"continue";var l=u[e][2],d=u[e][3],f=fc.vec2.create();fc.vec2.add(f,l,d),fc.vec2.scale(f,f,.5);var g=fc.vec2.create();fc.vec2.subtract(g,l,f),fc.vec2.normalize(g,g);var h=fc.vec2.create();fc.vec2.scale(h,g,.05*c);var p=fc.vec2.create(),m=fc.vec2.create();fc.vec2.add(p,f,h),fc.vec2.subtract(m,f,h);var w={start:{x:p[0],y:p[1]},end:{x:l[0],y:l[1]}},E=od([w.start.x,w.start.y],[w.end.x,w.end.y],[n[0],n[1]]),y={start:{x:m[0],y:m[1]},end:{x:d[0],y:d[1]}},I=od([y.start.x,y.start.y],[y.end.x,y.end.y],[n[0],n[1]]);(E<=r||I<=r)&&(v.push(t.id),s.handles.activeOperation=null),e++,b=e},b=0;b<u.length-1;++b)I(b);return s.activeViewportIds=[].concat(v),this.editData={annotation:t},1===s.handles.activeOperation}}]),o}($s);ne(pg,"toolName",void 0),pg.toolName="Crosshairs";var mg=pg;var wg=Y.CONSTANTS.EPSILON,Eg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:""}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",{}),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"_init",(function(){var t=(0,Y.getRenderingEngines)()[0];if(t){var n=t.getViewports();n=Us(n,e.getToolName());var r=t.getViewport(e.configuration.sourceViewportId);if(r&&r.getImageData()){var o=r.element,a=r.getCamera(),i=a.viewUp,l=a.viewPlaneNormal,c=Y.utilities.getViewportImageCornersInWorld(r),s=e.editData.annotation,d=r.getFrameOfReferenceUID();if(s)e.editData.annotation.data.handles.points=c;else{var u={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(l),viewUp:Nr(i),FrameOfReferenceUID:d,referencedImageId:null},data:{handles:{points:c}}};et(u,o),s=u}e.editData={sourceViewport:r,renderingEngine:t,annotation:s},aa(t,n.filter((function(e){return e.id!==r.id})).map((function(e){return e.id})))}}})),ne(da(e),"onSetToolEnabled",(function(){e._init()})),ne(da(e),"onCameraModified",(function(t){e._init()})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=t.viewport,i=e.editData,l=i.annotation,c=i.sourceViewport,s=!1;if(!c)return s;if(c.id===a.id)return s;if(!l||null==l||null===(r=l.data)||void 0===r||null===(o=r.handles)||void 0===o||!o.points)return s;var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=l.data.handles.points[0],v=l.data.handles.points[1],f=l.data.handles.points[2],g=l.data.handles.points[3],h=a.getCamera(),p=h.focalPoint,m=h.viewPlaneNormal,w=c.getCamera().viewPlaneNormal;if(e.isParallel(m,w))return s;var E=Y.utilities.planar.planeEquation(m,p),y=[u,f,v,g],I=[u,v,f,g],b=y,C=fc.vec3.subtract(fc.vec3.create(),y[0],y[1]);C=fc.vec3.normalize(fc.vec3.create(),C);var T=fc.vec3.subtract(fc.vec3.create(),y[2],y[0]);T=fc.vec3.normalize(fc.vec3.create(),T);var _=fc.vec3.cross(fc.vec3.create(),C,T);if(e.isParallel(_,m))return s;e.isPerpendicular(C,m)&&(b=I);var D=Y.utilities.planar.linePlaneIntersection(b[0],b[1],E),O=Y.utilities.planar.linePlaneIntersection(b[2],b[3],E),S=l.annotationUID;d.annotationUID=S;var x=e.getStyle("lineWidth",d,l),M=e.getStyle("lineDash",d,l),k=e.getStyle("color",d,l),R=e.getStyle("shadow",d,l),P=[D,O].map((function(e){return a.worldToCanvas(e)})),N="".concat(S,"-line");return Rc(n,S,"1",P[0],P[1],{color:k,width:x,lineDash:M,shadow:R},N),!0})),ne(da(e),"isPerpendicular",(function(e,t){var n=fc.vec3.dot(e,t);return Math.abs(n)<wg})),e}return ee(o,[{key:"isParallel",value:function(e,t){return Math.abs(fc.vec3.dot(e,t))>1-wg}}]),o}(Ks);ne(Eg,"toolName",void 0),Eg.toolName="ReferenceLines";var yg=Eg;function Ig(e,t,n,r){var o=fc.vec3.create();fc.vec3.cross(o,t,e);var a=fc.vec3.fromValues.apply(fc.vec3,Nr(n)),i=fc.vec3.fromValues.apply(fc.vec3,Nr(r)),l=fc.vec3.create();fc.vec3.subtract(l,a,i);var c=fc.vec3.length(l);if(c<1e-4)return{worldWidth:0,worldHeight:0};var s=fc.vec3.dot(l,o)/(c*fc.vec3.length(o));return{worldWidth:Math.sqrt(1-s*s)*c,worldHeight:s*c}}var bg=Y.utilities.transformWorldToIndex,Cg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Tg,statsCalculator:vd}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",!1),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=r.canvas,l=(0,Y.getEnabledElement)(o),c=l.viewport,s=l.renderingEngine;e.isDrawing=!0;var d=c.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=e.getReferencedImageId(c,a,u,v),g=c.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(u),viewUp:Nr(v),FrameOfReferenceUID:g,referencedImageId:f},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null},cachedStats:{},initialRotation:c.getRotation()}};et(h,o);var p=js(o,e.getToolName());return e.editData={annotation:h,viewportIdsToRender:p,centerCanvas:i,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(s,p),h})),ne(da(e),"isPointNearTool",(function(t,n,r,o){var a=(0,Y.getEnabledElement)(t).viewport,i=lt(ls(n.data.handles.points.map((function(e){return a.worldToCanvas(e)}))),2),l=i[0],c=i[1],s={left:Math.min(l[0],c[0])+o/2,top:Math.min(l[1],c[1])+o/2,width:Math.abs(l[0]-c[0])-o,height:Math.abs(l[1]-c[1])-o},d={left:Math.min(l[0],c[0])-o/2,top:Math.min(l[1],c[1])-o/2,width:Math.abs(l[0]-c[0])+o,height:Math.abs(l[1]-c[1])+o},u=e._pointInEllipseCanvas(s,r);return!(!e._pointInEllipseCanvas(d,r)||u)})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},$l(r),e._activateModify(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l,c,s,d,u=!1;if(r.worldPosition)u=!0;else{var v=a.handles.points,f=(0,Y.getEnabledElement)(o).viewport.worldToCanvas;i=v.findIndex((function(e){return e===r}));var g=v.map(f);d=g[i],c=Math.abs(g[2][0]-g[3][0]),s=Math.abs(g[0][1]-g[1][1]),l=[(g[2][0]+g[3][0])/2,(g[0][1]+g[1][1])/2]}var h=js(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:h,handleIndex:i,canvasWidth:c,canvasHeight:s,centerCanvas:l,originalHandleCanvas:d,movingTextBox:u},e._activateModify(o),$l(o);var p=(0,Y.getEnabledElement)(o).renderingEngine;aa(p,h),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){o.highlighted=!1,c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}}})),ne(da(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,Y.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,c=e.editData,s=c.annotation,d=c.viewportIdsToRender,u=c.centerCanvas,v=s.data,f=Math.abs(o[0]-u[0]),g=Math.abs(o[1]-u[1]),h=[u[0],u[1]-g],p=[u[0],u[1]+g],m=[u[0]-f,u[1]],w=[u[0]+f,u[1]];v.handles.points=[l(h),l(p),l(m),l(w)],s.invalidated=!0,e.editData.hasMoved=!0,aa(i,d)})),ne(da(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else e._dragHandle(t),a.invalidated=!0;var g=(0,Y.getEnabledElement)(r).renderingEngine;aa(g,i)})),ne(da(e),"_dragHandle",(function(t){var n=t.detail,r=n.element,o=(0,Y.getEnabledElement)(r).viewport.canvasToWorld,a=e.editData,i=a.annotation,l=a.canvasWidth,c=a.canvasHeight,s=a.handleIndex,d=a.centerCanvas,u=a.originalHandleCanvas,v=i.data.handles.points,f=n.currentPoints.canvas;if(0===s||1===s){var g=Math.abs(f[1]-d[1]),h=[d[0],d[1]-g],p=[d[0],d[1]+g];v[0]=o(h),v[1]=o(p);var m=l/2+(f[0]-u[0]),w=[d[0]-m,d[1]],E=[d[0]+m,d[1]];v[2]=o(w),v[3]=o(E)}else{var y=Math.abs(f[0]-d[0]),I=[d[0]-y,d[1]],b=[d[0]+y,d[1]];v[2]=o(I),v[3]=o(b);var C=c/2+(f[1]-u[1]),T=[d[0],d[1]-C],_=[d[0],d[1]+C];v[0]=o(T),v[1]=o(_)}})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragDrawCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragDrawCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=c[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex;u.annotationUID=o;var p,m=e.getStyle("lineWidth",u,r),w=e.getStyle("lineDash",u,r),E=e.getStyle("color",u,r),y=g.map((function(e){return i.worldToCanvas(e)})),I=Math.abs(i.getRotation()-(l.initialRotation||0));p=ls(90==I||270==I?[y[2],y[3],y[0],y[1]]:y);var b,C=e.configuration.centerPointRadius,T={isPreScaled:sd(i,s),isSuvScaled:e.isSuvScaled(i,s,r.metadata.referencedImageId)};if(l.cachedStats[s]&&void 0!==l.cachedStats[s].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,i,d,t,T),i instanceof Y.VolumeViewport)){var _=r.metadata.referencedImageId;for(var D in l.cachedStats)D.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=Y.utilities.imageIdToURI(_),n=e.hasImageURI(t),r=Y.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[D]}}else l.cachedStats[s]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,i,d,t,T);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Me(o))return"continue";se(r)||e.editData||null===h||(b=[y[h]]),b&&kc(n,o,"0",b,{color:E});var O="".concat(o,"-ellipse");if(Mc(n,o,"0",p[0],p[1],{color:E,lineDash:w,lineWidth:m},O),C>0&&Math.min(Math.abs(p[0][0]-p[1][0])/2,Math.abs(p[0][1]-p[1][1])/2)>3*C){var S=e._getCanvasEllipseCenter(y);xc(n,o,"".concat("0","-center"),S,C,{color:E,lineDash:w,lineWidth:m})}a=!0;var x=e.getLinkedTextBoxStyle(u,r);if(!x.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var M,k=e.configuration.getTextLines(l,s);if(!k||0===k.length)return"continue";l.handles.textBox.hasMoved||(M=id(p),l.handles.textBox.worldPosition=i.canvasToWorld(M));var R=i.worldToCanvas(l.handles.textBox.worldPosition),P=Bc(n,o,"1",k,R,y,{},x),N=P.x,A=P.y,L=P.width,U=P.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([N,A]),topRight:i.canvasToWorld([N+L,A]),bottomLeft:i.canvasToWorld([N,A+U]),bottomRight:i.canvasToWorld([N+L,A+U])}},f=0;f<c.length;f++){var g=v();if("continue"!==g&&"object"===Z(g))return g.v}return a})),ne(da(e),"_calculateCachedStats",(function(t,n,r,o,a){for(var i=t.data,l=o.viewportId,c=o.renderingEngineId,s=i.handles.points.map((function(e){return n.worldToCanvas(e)})),d=n.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=lt(ls(s),2),g=f[0],h=f[1],p=n.canvasToWorld(g),m=n.canvasToWorld(h),w=i.cachedStats,E=Object.keys(w),y=p,I=m,b=function(){var n=E[C],o=e.getTargetIdImage(n,r);if(!o)return"continue";var i=o.dimensions,l=o.imageData,c=o.metadata,s=(o.hasPixelSpacing,bg(l,y));s[0]=Math.floor(s[0]),s[1]=Math.floor(s[1]),s[2]=Math.floor(s[2]);var d=bg(l,I);if(d[0]=Math.floor(d[0]),d[1]=Math.floor(d[1]),d[2]=Math.floor(d[2]),e._isInsideVolume(s,d,i)){var f,g,h,b=[[Math.min(s[0],d[0]),Math.max(s[0],d[0])],[Math.min(s[1],d[1]),Math.max(s[1],d[1])],[Math.min(s[2],d[2]),Math.max(s[2],d[2])]],T={center:[(p[0]+m[0])/2,(p[1]+m[1])/2,(p[2]+m[2])/2],xRadius:Math.abs(p[0]-m[0])/2,yRadius:Math.abs(p[1]-m[1])/2,zRadius:Math.abs(p[2]-m[2])/2},_=Ig(u,v,y,I),D=_.worldWidth,O=_.worldHeight,S=0===D&&0===O,x=td(o),M=Math.abs(Math.PI*(D/2)*(O/2))/x/x,k=cd(c.Modality,t.metadata.referencedImageId,a),R=Zc(l,(function(e,t){return cs(T,e)}),e.configuration.statsCalculator.statsCallback,b),P=e.configuration.statsCalculator.getStatistics();w[n]={Modality:c.Modality,area:M,mean:null===(f=P[1])||void 0===f?void 0:f.value,max:null===(g=P[0])||void 0===g?void 0:g.value,stdDev:null===(h=P[2])||void 0===h?void 0:h.value,statsArray:P,pointsInShape:R,isEmptyArea:S,areaUnit:ed(0,o),modalityUnit:k}}else e.isHandleOutsideImage=!0,w[n]={Modality:c.Modality}},C=0;C<E.length;C++)b();t.invalidated=!1;var T=$.ANNOTATION_MODIFIED,_={annotation:t,viewportId:l,renderingEngineId:c};return(0,Y.triggerEvent)(Y.eventTarget,T,_),w})),ne(da(e),"_isInsideVolume",(function(e,t,n){return Y.utilities.indexWithinDimensions(e,n)&&Y.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"_pointInEllipseCanvas",value:function(e,t){var n=e.width/2,r=e.height/2;if(n<=0||r<=0)return!1;var o=[e.left+n,e.top+r],a=[t[0]-o[0],t[1]-o[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(r*r)<=1}},{key:"_getCanvasEllipseCenter",value:function(e){var t=lt(e,4),n=t[0],r=t[1],o=t[2],a=t[3],i=[o[0],r[1]],l=[a[0],n[1]];return[(i[0]+l[0])/2,(i[1]+l[1])/2]}}]),o}($s);function Tg(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.stdDev,i=n.max,l=n.isEmptyArea,c=n.areaUnit,s=n.modalityUnit,d=[];if(r){var u=l?"Area: Oblique not supported":"Area: ".concat(ts(r)," ").concat(c);d.push(u)}return o&&d.push("Mean: ".concat(ts(o)," ").concat(s)),i&&d.push("Max: ".concat(ts(i)," ").concat(s)),a&&d.push("Std Dev: ".concat(ts(a)," ").concat(s)),d}ne(Cg,"toolName",void 0),Cg.toolName="EllipticalROI";var _g=Cg;function Dg(e){var t=lt(e,2);return iu(t[0],t[1])}function Og(e){var t=lt(e,2),n=t[0],r=iu(n,t[1]);return[[n[0]-r,n[1]-r],[n[0]+r,n[1]+r]]}var Sg=Y.utilities.transformWorldToIndex,xg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Mg,statsCalculator:vd}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",!1),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(r.canvas,(0,Y.getEnabledElement)(o)),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[Nr(a),Nr(a)],activeHandleIndex:null},cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(c,h),g})),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=t.data.handles.points.map((function(e){return o.worldToCanvas(e)})),i=Dg(a),l=Dg([a[0],n]);return Math.abs(l-i)<r/2})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},$l(r),e._activateModify(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var c=js(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:c,handleIndex:i,movingTextBox:l},e._activateModify(o),$l(o);var s=(0,Y.getEnabledElement)(o).renderingEngine;aa(s,c),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){o.highlighted=!1,c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}}})),ne(da(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,Y.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,c=e.editData,s=c.annotation,d=c.viewportIdsToRender,u=s.data;u.handles.points=[u.handles.points[0],l(o)],s.invalidated=!0,e.editData.hasMoved=!0,aa(i,d)})),ne(da(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else e._dragHandle(t),a.invalidated=!0;var g=(0,Y.getEnabledElement)(r).renderingEngine;aa(g,i)})),ne(da(e),"_dragHandle",(function(t){var n=t.detail,r=n.element,o=(0,Y.getEnabledElement)(r).viewport,a=o.canvasToWorld,i=o.worldToCanvas,l=e.editData,c=l.annotation,s=l.handleIndex,d=c.data.handles.points,u=d.map((function(e){return i(e)})),v=n.currentPoints.canvas;if(0===s){var f=v[0]-u[0][0],g=v[1]-u[0][1],h=v,p=[u[1][0]+f,u[1][1]+g];d[0]=a(h),d[1]=a(p)}else d[1]=a(v)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragDrawCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragDrawCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=c[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex;u.annotationUID=o;var p,m=e.getStyle("lineWidth",u,r),w=e.getStyle("lineDash",u,r),E=e.getStyle("color",u,r),y=g.map((function(e){return i.worldToCanvas(e)})),I=y[0],b=Dg(y),C=Og(y),T=e.configuration.centerPointRadius,_={isPreScaled:sd(i,s),isSuvScaled:e.isSuvScaled(i,s,r.metadata.referencedImageId)};if(l.cachedStats[s]&&void 0!==l.cachedStats[s].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,i,d,t,_),i instanceof Y.VolumeViewport)){var D=r.metadata.referencedImageId;for(var O in l.cachedStats)O.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=Y.utilities.imageIdToURI(D),n=e.hasImageURI(t),r=Y.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[O]}}else l.cachedStats[s]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},e._calculateCachedStats(r,i,d,t,_);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Me(o))return"continue";se(r)||e.editData||null===h||(p=[y[h]]),p&&kc(n,o,"0",p,{color:E});var S="".concat(o,"-circle");xc(n,o,"0",I,b,{color:E,lineDash:w,lineWidth:m},S),T>0&&b>3*T&&xc(n,o,"".concat("0","-center"),I,T,{color:E,lineDash:w,lineWidth:m}),a=!0;var x=e.getLinkedTextBoxStyle(u,r);if(!x.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var M,k=e.configuration.getTextLines(l,s);if(!k||0===k.length)return"continue";l.handles.textBox.hasMoved||(M=id(C),l.handles.textBox.worldPosition=i.canvasToWorld(M));var R=i.worldToCanvas(l.handles.textBox.worldPosition),P=Bc(n,o,"1",k,R,y,{},x),N=P.x,A=P.y,L=P.width,U=P.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([N,A]),topRight:i.canvasToWorld([N+L,A]),bottomLeft:i.canvasToWorld([N,A+U]),bottomRight:i.canvasToWorld([N+L,A+U])}},f=0;f<c.length;f++){var g=v();if("continue"!==g&&"object"===Z(g))return g.v}return a})),ne(da(e),"_calculateCachedStats",(function(t,n,r,o,a){for(var i=t.data,l=o.viewportId,c=o.renderingEngineId,s=i.handles.points.map((function(e){return n.worldToCanvas(e)})),d=n.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=lt(Og(s),2),g=f[0],h=f[1],p=n.canvasToWorld(g),m=n.canvasToWorld(h),w=i.cachedStats,E=Object.keys(w),y=p,I=m,b=function(){var n=E[C],o=e.getTargetIdImage(n,r);if(!o)return"continue";var i=o.dimensions,l=o.imageData,c=o.metadata,s=(o.hasPixelSpacing,Sg(l,y));s[0]=Math.floor(s[0]),s[1]=Math.floor(s[1]),s[2]=Math.floor(s[2]);var d=Sg(l,I);if(d[0]=Math.floor(d[0]),d[1]=Math.floor(d[1]),d[2]=Math.floor(d[2]),e._isInsideVolume(s,d,i)){var f,g,h,b=[[Math.min(s[0],d[0]),Math.max(s[0],d[0])],[Math.min(s[1],d[1]),Math.max(s[1],d[1])],[Math.min(s[2],d[2]),Math.max(s[2],d[2])]],T={center:[(p[0]+m[0])/2,(p[1]+m[1])/2,(p[2]+m[2])/2],xRadius:Math.abs(p[0]-m[0])/2,yRadius:Math.abs(p[1]-m[1])/2,zRadius:Math.abs(p[2]-m[2])/2},_=Ig(u,v,y,I),D=_.worldWidth,O=_.worldHeight,S=0===D&&0===O,x=td(o),M=function(e){var t;return(null===(t=e.calibration)||void 0===t?void 0:t.aspect)||1}(o),k=Math.abs(Math.PI*(D/x/2)*(O/M/x/2)),R=cd(c.Modality,t.metadata.referencedImageId,a),P=Zc(l,(function(e,t){return cs(T,e)}),e.configuration.statsCalculator.statsCallback,b),N=e.configuration.statsCalculator.getStatistics();w[n]={Modality:c.Modality,area:k,mean:null===(f=N[1])||void 0===f?void 0:f.value,max:null===(g=N[0])||void 0===g?void 0:g.value,stdDev:null===(h=N[2])||void 0===h?void 0:h.value,statsArray:N,pointsInShape:P,isEmptyArea:S,areaUnit:ed(0,o),radius:D/2/x,radiusUnit:Qs(0,o),perimeter:2*Math.PI*(D/2)/x,modalityUnit:R}}else e.isHandleOutsideImage=!0,w[n]={Modality:c.Modality}},C=0;C<E.length;C++)b();t.invalidated=!1;var T=$.ANNOTATION_MODIFIED,_={annotation:t,viewportId:l,renderingEngineId:c};return(0,Y.triggerEvent)(Y.eventTarget,T,_),w})),ne(da(e),"_isInsideVolume",(function(e,t,n){return Y.utilities.indexWithinDimensions(e,n)&&Y.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o)}($s);function Mg(e,t){var n=e.cachedStats[t],r=n.radius,o=n.radiusUnit,a=n.area,i=n.mean,l=n.stdDev,c=n.max,s=n.isEmptyArea,d=(n.Modality,n.areaUnit),u=n.modalityUnit,v=[];if(r){var f=s?"Radius: Oblique not supported":"Radius: ".concat(ts(r)," ").concat(o);v.push(f)}if(a){var g=s?"Area: Oblique not supported":"Area: ".concat(ts(a)," ").concat(d);v.push(g)}return i&&v.push("Mean: ".concat(ts(i)," ").concat(u)),c&&v.push("Max: ".concat(ts(c)," ").concat(u)),l&&v.push("Std Dev: ".concat(ts(l)," ").concat(u)),v}ne(xg,"toolName",void 0),xg.toolName="CircleROI";var kg=xg;var Rg=Y.utilities.transformWorldToIndex,Pg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Ng}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"preventHandleOutsideImage",void 0),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=t.data.handles.points,i=o.worldToCanvas(a[0]),l=o.worldToCanvas(a[1]),c={start:{x:i[0],y:i[1]},end:{x:l[0],y:l[1]}},s=od([c.start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]);return s<=r||(i=o.worldToCanvas(a[2]),l=o.worldToCanvas(a[3]),(s=od([(c={start:{x:i[0],y:i[1]},end:{x:l[0],y:l[1]}}).start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]))<=r)})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),$l(r),t.preventDefault()})),ne(da(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var c=js(o,e.getToolName());$l(o),e.editData={annotation:n,viewportIdsToRender:c,handleIndex:i,movingTextBox:l},e._activateModify(o);var s=(0,Y.getEnabledElement)(o).renderingEngine;aa(s,c),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(void 0!==e.editData.handleIndex){var d=c.handles.points,u=fc.vec3.distance(d[0],d[1]);if(fc.vec3.distance(d[2],d[3])>u){var v=[Nr(d[2]),Nr(d[3])],f=Nr(d[0]),g=Nr(d[1]),h=fc.vec2.create();fc.vec2.set(h,v[1][0]-v[0][0],v[1][1]-v[1][0]);var p=fc.vec2.create();fc.vec2.set(p,-h[1],h[0]);var m,w=fc.vec2.create();fc.vec2.set(w,g[0]-f[0],g[1]-f[0]),m=fc.vec2.dot(w,p)>0?[f,g]:[g,f],c.handles.points=[v[0],v[1],m[0],m[1]]}}if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var E=$.ANNOTATION_COMPLETED,y={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,E,y)}e.editData=null,e.isDrawing=!1}})),ne(da(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=(0,Y.getEnabledElement)(o),i=a.renderingEngine,l=a.viewport,c=l.worldToCanvas,s=e.editData,d=s.annotation,u=s.viewportIdsToRender,v=s.handleIndex,f=d.data,g=r.world;f.handles.points[v]=Nr(g);var h=f.handles.points.map(c),p={x:h[0][0],y:h[0][1]},m={x:h[1][0],y:h[1][1]},w=(h[2][0],h[2][1],h[3][0],h[3][1],fc.vec2.distance(h[0],h[1])/3),E=p.x-m.x,y=p.y-m.y,I=Math.sqrt(E*E+y*y),b=E/I,C=y/I,T=(p.x+m.x)/2,_=(p.y+m.y)/2,D=T+w*C,O=_-w*b,S=T-w*C,x=_+w*b;f.handles.points[2]=l.canvasToWorld([D,O]),f.handles.points[3]=l.canvasToWorld([S,x]),d.invalidated=!0,aa(i,u),e.editData.hasMoved=!0})),ne(da(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=(0,Y.getEnabledElement)(r).renderingEngine,a=e.editData,i=a.annotation,l=a.viewportIdsToRender,c=a.handleIndex,s=a.movingTextBox,d=i.data;if(s){var u=n.deltaPoints.world,v=d.handles.textBox,f=v.worldPosition;f[0]+=u[0],f[1]+=u[1],f[2]+=u[2],v.hasMoved=!0}else if(void 0===c){var g=n.deltaPoints.world;d.handles.points.forEach((function(e){e[0]+=g[0],e[1]+=g[1],e[2]+=g[2]})),i.invalidated=!0}else e._dragModifyHandle(t),i.invalidated=!0;aa(o,l)})),ne(da(e),"_dragModifyHandle",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=(0,Y.getEnabledElement)(o).viewport,i=e.editData,l=i.annotation,c=i.handleIndex,s=l.data,d=r.world,u=[a.worldToCanvas(s.handles.points[0]),a.worldToCanvas(s.handles.points[1]),a.worldToCanvas(s.handles.points[2]),a.worldToCanvas(s.handles.points[3])],v={start:{x:u[0][0],y:u[0][1]},end:{x:u[1][0],y:u[1][1]}},f={start:{x:u[2][0],y:u[2][1]},end:{x:u[3][0],y:u[3][1]}},g=Nr(d),h=a.worldToCanvas(g);if(0===c||1===c){var p=u[0===c?1:0],m=fc.vec2.set(fc.vec2.create(),h[0]-p[0],h[1]-p[1]),w=fc.vec2.set(fc.vec2.create(),u[c][0]-p[0],u[c][1]-p[1]);fc.vec2.normalize(m,m),fc.vec2.normalize(w,w);var E={start:{x:p[0],y:p[1]},end:{x:h[0],y:h[1]}};if(e._movingLongAxisWouldPutItThroughShortAxis(E,f))return;var y=p,I=e._getSignedAngle(w,m),b=u[2][0],C=u[2][1],T=u[3][0],_=u[3][1];b-=y[0],C-=y[1],T-=y[0],_-=y[1];var D=b*Math.cos(I)-C*Math.sin(I),O=b*Math.sin(I)+C*Math.cos(I),S=T*Math.cos(I)-_*Math.sin(I),x=T*Math.sin(I)+_*Math.cos(I);b=D+y[0],C=O+y[1],T=S+y[0],_=x+y[1];var M=a.canvasToWorld([b,C]),k=a.canvasToWorld([T,_]);s.handles.points[c]=g,s.handles.points[2]=M,s.handles.points[3]=k}else{var R=2===c?3:2,P={longLineSegment:{start:v.start,end:v.end},shortLineSegment:{start:f.start,end:f.end}},N=fc.vec2.subtract(fc.vec2.create(),[P.longLineSegment.end.x,P.longLineSegment.end.y],[P.longLineSegment.start.x,P.longLineSegment.start.y]),A=fc.vec2.normalize(fc.vec2.create(),N),L=fc.vec2.subtract(fc.vec2.create(),[h[0],h[1]],[u[c][0],u[c][1]]),U=fc.vec2.length(L),V=e._getSignedAngle(A,L),B=Math.cos(V)*U,j=fc.vec2.scaleAndAdd(fc.vec2.create(),[u[R][0],u[R][1]],A,B);if(e._movingLongAxisWouldPutItThroughShortAxis({start:{x:h[0],y:h[1]},end:{x:j[0],y:j[1]}},{start:{x:P.longLineSegment.start.x,y:P.longLineSegment.start.y},end:{x:P.longLineSegment.end.x,y:P.longLineSegment.end.y}}))return;if(!Kd([h[0],h[1]],[j[0],j[1]],[v.start.x,v.start.y],[v.end.x,v.end.y]))return;s.handles.points[R]=a.canvasToWorld(j),s.handles.points[c]=g}})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragDrawCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener($.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragDrawCallback)})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!0,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<c.length;v++){var f=c[v],g=f.annotationUID,h=f.data,p=h.handles,m=p.points,w=p.activeHandleIndex,E=m.map((function(e){return i.worldToCanvas(e)}));u.annotationUID=g;var y=e.getStyle("lineWidth",u,f),I=e.getStyle("lineDash",u,f),b=e.getStyle("color",u,f),C=e.getStyle("shadow",u,f);if(h.cachedStats[s]&&void 0!==h.cachedStats[s].unit?f.invalidated&&e._throttledCalculateCachedStats(f,d,t):(h.cachedStats[s]={length:null,width:null,unit:null},e._calculateCachedStats(f,d,t)),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var T=void 0;if(Me(g)){se(f)||e.editData||null===w||(T=[E[w]]),T&&kc(n,g,"0",T,{color:b});var _="".concat(g,"-line-1"),D="".concat(g,"-line-2");Rc(n,g,"0",E[0],E[1],{color:b,lineDash:I,lineWidth:y,shadow:C},_),Rc(n,g,"1",E[2],E[3],{color:b,lineDash:I,lineWidth:y,shadow:C},D),a=!0;var O=e.getLinkedTextBoxStyle(u,f);if(O.visibility){var S=e.configuration.getTextLines(h,s);if(S&&0!==S.length){var x=void 0;h.handles.textBox.hasMoved||(x=id(E),h.handles.textBox.worldPosition=i.canvasToWorld(x));var M=i.worldToCanvas(h.handles.textBox.worldPosition),k=Bc(n,g,"1",S,M,E,{},O),R=k.x,P=k.y,N=k.width,A=k.height;h.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([R,P]),topRight:i.canvasToWorld([R+N,P]),bottomLeft:i.canvasToWorld([R,P+A]),bottomRight:i.canvasToWorld([R+N,P+A])}}}else h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),ne(da(e),"_movingLongAxisWouldPutItThroughShortAxis",(function(e,t){var n=fc.vec2.create();fc.vec2.set(n,t.end.x-t.start.x,t.end.y-t.start.y),fc.vec2.normalize(n,n);var r={start:{x:t.start.x-10*n[0],y:t.start.y-10*n[1]},end:{x:t.end.x+10*n[0],y:t.end.y+10*n[1]}};return!Kd([r.start.x,r.start.y],[r.end.x,r.end.y],[e.start.x,e.start.y],[e.end.x,e.end.y])})),ne(da(e),"_calculateCachedStats",(function(t,n,r){for(var o=t.data,a=r.viewportId,i=r.renderingEngineId,l=o.handles.points[0],c=o.handles.points[1],s=o.handles.points[2],d=o.handles.points[3],u=o.cachedStats,v=Object.keys(u),f=0;f<v.length;f++){var g=v[f],h=e.getTargetIdImage(g,n);if(h){var p=h.imageData,m=h.dimensions,w=td(h),E=e._calculateLength(l,c)/w,y=e._calculateLength(s,d)/w,I=E>y?E:y,b=E>y?y:E,C=Rg(p,l),T=Rg(p,c),_=Rg(p,s),D=Rg(p,d);e._isInsideVolume(C,T,_,D,m)?e.isHandleOutsideImage=!1:e.isHandleOutsideImage=!0,u[g]={length:I,width:b,unit:Qs(0,h)}}}t.invalidated=!1;var O=$.ANNOTATION_MODIFIED,S={annotation:t,viewportId:a,renderingEngineId:i};return(0,Y.triggerEvent)(Y.eventTarget,O,S),u})),ne(da(e),"_isInsideVolume",(function(e,t,n,r,o){return Y.utilities.indexWithinDimensions(e,o)&&Y.utilities.indexWithinDimensions(t,o)&&Y.utilities.indexWithinDimensions(n,o)&&Y.utilities.indexWithinDimensions(r,o)})),ne(da(e),"_getSignedAngle",(function(e,t){return Math.atan2(e[0]*t[1]-e[1]*t[0],e[0]*t[0]+e[1]*t[1])})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"addNewAnnotation",value:function(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=(0,Y.getEnabledElement)(r),i=a.viewport,l=a.renderingEngine;this.isDrawing=!0;var c=i.getCamera(),s=c.viewPlaneNormal,d=c.viewUp,u=this.getReferencedImageId(i,o,s,d),v=i.getFrameOfReferenceUID(),f={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:Nr(s),viewUp:Nr(d),FrameOfReferenceUID:v,referencedImageId:u},data:{handles:{points:[Nr(o),Nr(o),Nr(o),Nr(o)],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};et(f,r);var g=js(r,this.getToolName());return this.editData={annotation:f,viewportIdsToRender:g,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(r),$l(r),e.preventDefault(),aa(l,g),f}},{key:"_calculateLength",value:function(e,t){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+r*r+o*o)}}]),o}($s);function Ng(e,t){var n=e.cachedStats[t],r=n.length,o=n.width,a=n.unit;if(void 0!==r)return["L: ".concat(ts(r)," ").concat(a),"W: ".concat(ts(o)," ").concat(a)]}ne(Pg,"toolName",void 0),Pg.toolName="Bidirectional";var Ag=Pg;var Lg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:Ug,changeTextCallback:Vg,preventHandleOutsideImage:!1,arrowFirst:!0}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;$l(o),e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=e.configuration.arrowFirst,g=l.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:g,referencedImageId:v},data:{text:"",handles:{points:[Nr(a),Nr(a)],activeHandleIndex:null,arrowFirst:f,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};et(h,o);var p=js(o,e.getToolName());return e.editData={annotation:h,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),aa(c,p),h})),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=lt(t.data.handles.points,2),i=a[0],l=a[1],c=o.worldToCanvas(i),s=o.worldToCanvas(l),d={start:{x:c[0],y:c[1]},end:{x:s[0],y:s[1]}};return od([d.start.x,d.start.y],[d.end.x,d.end.y],[n[0],n[1]])<=r})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),$l(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n),d=s.viewportId,u=s.renderingEngineId,v=s.renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),i)e.configuration.getTextCallback((function(t){if(!t)return nt(o.annotationUID),aa(v,a),e.editData=null,void(e.isDrawing=!1);o.data.text=t;var n=$.ANNOTATION_COMPLETED,r={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,n,r),aa(v,a)}));else{var f=$.ANNOTATION_MODIFIED,g={annotation:o,viewportId:d,renderingEngineId:u};(0,Y.triggerEvent)(Y.eventTarget,f,g)}e.editData=null,e.isDrawing=!1}})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;s.handles.points[l]=Nr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,Y.getEnabledElement)(r).renderingEngine;aa(h,i)})),ne(da(e),"touchTapCallback",(function(t){2==t.detail.taps&&e.doubleClickCallback(t)})),ne(da(e),"doubleClickCallback",(function(t){var n,r=t.detail,o=r.element,a=Qe(e.getToolName(),o);if(null!==(n=a=e.filterInteractableAnnotationsForElement(o,a))&&void 0!==n&&n.length){var i=a.find((function(t){return e.isPointNearTool(o,t,r.currentPoints.canvas,6)}));if(i){var l=i;e.configuration.changeTextCallback(i,t.detail,e._doneChangingTextCallback.bind(da(e),o,l)),e.editData=null,e.isDrawing=!1,t.stopImmediatePropagation(),t.preventDefault()}}})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_END,e._endCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_MOVE,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_MOVE,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},d=0;d<c.length;d++){var u=c[d],v=u.annotationUID,f=u.data,g=f.handles,h=f.text,p=g.points,m=g.activeHandleIndex;s.annotationUID=v;var w=e.getStyle("lineWidth",s,u),E=e.getStyle("lineDash",s,u),y=e.getStyle("color",s,u),I=p.map((function(e){return i.worldToCanvas(e)})),b=void 0;if(se(u)||e.editData||null===m||(b=[I[m]]),b&&kc(n,v,"0",I,{color:y,lineWidth:w}),e.configuration.arrowFirst?Hc(n,v,"1",I[1],I[0],{color:y,width:w,lineDash:E}):Hc(n,v,"1",I[0],I[1],{color:y,width:w,lineDash:E}),a=!0,!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;if(h){var C=e.getLinkedTextBoxStyle(s,u);if(C.visibility){if(!f.handles.textBox.hasMoved){var T=I[1];f.handles.textBox.worldPosition=i.canvasToWorld(T)}var _=i.worldToCanvas(f.handles.textBox.worldPosition),D=Bc(n,v,"1",[h],_,I,{},C),O=D.x,S=D.y,x=D.width,M=D.height;f.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([O,S]),topRight:i.canvasToWorld([O+x,S]),bottomLeft:i.canvasToWorld([O,S+M]),bottomRight:i.canvasToWorld([O+x,S+M])}}else f.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e}return ee(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=js(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),$l(r);var c=(0,Y.getEnabledElement)(r).renderingEngine;aa(c,l),e.preventDefault()}},{key:"_doneChangingTextCallback",value:function(e,t,n){t.data.text=n;var r=(0,Y.getEnabledElement)(e),o=r.renderingEngine,a=r.viewportId,i=r.renderingEngineId,l=js(e,this.getToolName());aa(o,l);var c=$.ANNOTATION_MODIFIED;(0,Y.triggerEvent)(Y.eventTarget,c,{annotation:t,viewportId:a,renderingEngineId:i})}},{key:"_isInsideVolume",value:function(e,t,n){return Y.utilities.indexWithinDimensions(e,n)&&Y.utilities.indexWithinDimensions(t,n)}}]),o}($s);function Ug(e){return e(prompt("Enter your annotation:"))}function Vg(e,t,n){return n(prompt("Enter your annotation:"))}ne(Lg,"toolName",void 0),Lg.toolName="ArrowAnnotate";var Bg=Lg;var jg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Hg}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"angleStartedNotYetCompleted",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){if(!e.angleStartedNotYetCompleted){e.angleStartedNotYetCompleted=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;$l(o),e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Nr(a),Nr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),aa(c,h),g}})),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=lt(t.data.handles.points,3),i=a[0],l=a[1],c=a[2],s=o.worldToCanvas(i),d=o.worldToCanvas(l),u={start:{x:s[0],y:s[1]},end:{x:d[0],y:d[1]}};if(od([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]])<=r)return!0;if(!c)return!1;var v=o.worldToCanvas(c),f={start:{x:d[0],y:d[1]},end:{x:v[0],y:v[1]}};return od([f.start.x,f.start.y],[f.end.x,f.end.y],[n[0],n[1]])<=r})),ne(da(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=js(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),$l(r);var a=(0,Y.getEnabledElement)(r).renderingEngine;aa(a,o),t.preventDefault()})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l)if(e.angleStartedNotYetCompleted&&2===c.handles.points.length)e.editData.handleIndex=2;else{e.angleStartedNotYetCompleted=!1,c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;s.handles.points[l]=Nr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,Y.getEnabledElement)(r).renderingEngine;aa(h,i)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,e.angleStartedNotYetCompleted=!1,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_MOVE,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_MOVE,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<c.length;v++){var f,g=c[v],h=g.annotationUID,p=g.data,m=p.handles,w=m.points,E=m.activeHandleIndex;u.annotationUID=h;var y=e.getStyle("lineWidth",u,g),I=e.getStyle("lineDash",u,g),b=e.getStyle("color",u,g),C=w.map((function(e){return i.worldToCanvas(e)}));p.cachedStats[s]?g.invalidated&&e._throttledCalculateCachedStats(g,d,t):(p.cachedStats[s]={angle:null},e._calculateCachedStats(g,d,t));var T=void 0;if(se(g)||e.editData||null===E||(T=[C[E]]),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;T&&kc(n,h,"0",C,{color:b,lineDash:I,lineWidth:y});var _="1";if(Rc(n,h,_,C[0],C[1],{color:b,width:y,lineDash:I}),a=!0,3!==C.length)return a;if(Rc(n,h,_="2",C[1],C[2],{color:b,width:y,lineDash:I}),null!==(f=p.cachedStats[s])&&void 0!==f&&f.angle){var D=e.getLinkedTextBoxStyle(u,g);if(D.visibility){var O=e.configuration.getTextLines(p,s);if(!p.handles.textBox.hasMoved){var S=C[1];p.handles.textBox.worldPosition=i.canvasToWorld(S)}var x=i.worldToCanvas(p.handles.textBox.worldPosition),M=Bc(n,h,"1",O,x,C,{},D),k=M.x,R=M.y,P=M.width,N=M.height;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([k,R]),topRight:i.canvasToWorld([k+P,R]),bottomLeft:i.canvasToWorld([k,R+N]),bottomRight:i.canvasToWorld([k+P,R+N])}}else p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=js(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),$l(r);var c=(0,Y.getEnabledElement)(r).renderingEngine;aa(c,l),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n){var r=e.data,o=n.viewportId,a=n.renderingEngineId;if(3===r.handles.points.length){for(var i=r.handles.points[0],l=r.handles.points[1],c=r.handles.points[2],s=r.cachedStats,d=Object.keys(s),u=0;u<d.length;u++){var v=d[u],f=Jf([i,l],[l,c]);s[v]={angle:isNaN(f)?"Incomplete Angle":f}}e.invalidated=!1;var g=$.ANNOTATION_MODIFIED,h={annotation:e,viewportId:o,renderingEngineId:a};return(0,Y.triggerEvent)(Y.eventTarget,g,h),s}}}]),o}($s);function Hg(e,t){var n=e.cachedStats[t].angle;if(void 0!==n)return["".concat(ts(n)," ").concat(String.fromCharCode(176))]}ne(jg,"toolName",void 0),jg.toolName="Angle";var Wg=jg,Fg=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=2===t[0].length?[0,0]:[0,0,0],o=t.length,a=0,i=t;a<i.length;a++){var l=i[a];r[0]+=l[0]/o,r[1]+=l[1]/o,3===r.length&&(r[2]+=l[2]/o)}return r};var Gg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:qg}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"angleStartedNotYetCompleted",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"addNewAnnotation",(function(t){if(!e.angleStartedNotYetCompleted){e.angleStartedNotYetCompleted=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;$l(o),e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Nr(a),Nr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};et(g,o);var h=js(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),aa(c,h),g}})),ne(da(e),"isPointNearTool",(function(e,t,n,r){var o=(0,Y.getEnabledElement)(e).viewport,a=lt(t.data.handles.points,4),i=a[0],l=a[1],c=a[2],s=a[3],d=o.worldToCanvas(i),u=o.worldToCanvas(l),v=o.worldToCanvas(c),f=o.worldToCanvas(s),g={start:{x:d[0],y:d[1]},end:{x:u[0],y:u[1]}},h={start:{x:v[0],y:v[1]},end:{x:f[0],y:f[1]}},p=od([g.start.x,g.start.y],[g.end.x,g.end.y],[n[0],n[1]]),m=od([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]]);return p<=r||m<=r})),ne(da(e),"toolSelectedCallback",(function(t,n,r){var o=t.detail.element;n.highlighted=!0;var a=js(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:a,movingTextBox:!1},e._activateModify(o),$l(o);var i=(0,Y.getEnabledElement)(o).renderingEngine;aa(i,a),t.preventDefault()})),ne(da(e),"_mouseUpCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,c=o.data;if(!i||l){if(e.angleStartedNotYetCompleted&&c.handles.points.length<4)return Jl(n),void(e.editData.handleIndex=c.handles.points.length);e.angleStartedNotYetCompleted=!1,c.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),Jl(n);var s=(0,Y.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&nt(o.annotationUID),aa(s,a),i){var d=$.ANNOTATION_COMPLETED,u={annotation:o};(0,Y.triggerEvent)(Y.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ne(da(e),"_mouseDownCallback",(function(t){var n=e.editData,r=n.annotation,o=n.handleIndex,a=t.detail,i=a.element,l=a.currentPoints.world,c=r.data;return 1===o?(c.handles.points[1]=l,void(e.editData.hasMoved=c.handles.points[1][0]!==c.handles.points[0][0]||c.handles.points[1][1]!==c.handles.points[0][0])):3===o?(c.handles.points[3]=l,e.editData.hasMoved=c.handles.points[3][0]!==c.handles.points[2][0]||c.handles.points[3][1]!==c.handles.points[2][0],void(e.angleStartedNotYetCompleted=!1)):(e.editData.hasMoved=!1,$l(i),c.handles.points[2]=c.handles.points[3]=l,void(e.editData.handleIndex=c.handles.points.length-1))})),ne(da(e),"_mouseDragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,c=o.movingTextBox,s=a.data;if(c){var d=n.deltaPoints.world,u=s.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;s.handles.points[l]=Nr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,Y.getEnabledElement)(r).renderingEngine;aa(h,i)})),ne(da(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),Jl(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,Y.getEnabledElement)(t).renderingEngine;if(aa(l,o),a){var c=$.ANNOTATION_COMPLETED,s={annotation:r};(0,Y.triggerEvent)(Y.eventTarget,c,s)}return e.editData=null,e.angleStartedNotYetCompleted=!1,r.annotationUID}})),ne(da(e),"_activateModify",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._mouseUpCallback),t.addEventListener($.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener($.MOUSE_CLICK,e._mouseUpCallback)})),ne(da(e),"_deactivateModify",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._mouseUpCallback),t.removeEventListener($.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener($.MOUSE_CLICK,e._mouseUpCallback)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._mouseUpCallback),t.addEventListener($.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener($.MOUSE_MOVE,e._mouseDragCallback),t.addEventListener($.MOUSE_CLICK,e._mouseUpCallback),t.addEventListener($.MOUSE_DOWN,e._mouseDownCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._mouseUpCallback),t.removeEventListener($.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener($.MOUSE_MOVE,e._mouseDragCallback),t.removeEventListener($.MOUSE_CLICK,e._mouseUpCallback),t.removeEventListener($.MOUSE_DOWN,e._mouseDownCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,c=Qe(e.getToolName(),l);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(l,c))||void 0===o||!o.length)return a;for(var s=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<c.length;v++){var f,g=c[v],h=g.annotationUID,p=g.data,m=p.handles,w=m.points,E=m.activeHandleIndex;u.annotationUID=h;var y=e.getStyle("lineWidth",u,g),I=e.getStyle("lineDash",u,g),b=e.getStyle("color",u,g),C=w.map((function(e){return i.worldToCanvas(e)}));p.cachedStats[s]?g.invalidated&&e._throttledCalculateCachedStats(g,d,t):(p.cachedStats[s]={angle:null},e._calculateCachedStats(g,d,t));var T=void 0;if(se(g)||e.editData||null===E||(T=[C[E]]),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;T&&kc(n,h,"0",C,{color:b,lineDash:I,lineWidth:y});var _="1";if(Rc(n,h,_,C[0],C[1],{color:b,width:y,lineDash:I}),a=!0,C.length<4)return a;if(Rc(n,h,_="2",C[2],C[3],{color:b,width:y,lineDash:I}),Rc(n,h,_="3",Fg(C[0],C[1]),Fg(C[2],C[3]),{color:b,lineWidth:"1",lineDash:"1,4"}),null!==(f=p.cachedStats[s])&&void 0!==f&&f.angle){var D=e.getLinkedTextBoxStyle(u,g);if(D.visibility){var O=e.configuration.getTextLines(p,s);if(!p.handles.textBox.hasMoved){var S=id(C);p.handles.textBox.worldPosition=i.canvasToWorld(S)}var x=i.worldToCanvas(p.handles.textBox.worldPosition),M=Bc(n,h,"1",O,x,C,{},D),k=M.x,R=M.y,P=M.width,N=M.height;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([k,R]),topRight:i.canvasToWorld([k+P,R]),bottomLeft:i.canvasToWorld([k,R+N]),bottomRight:i.canvasToWorld([k+P,R+N])}}else p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e._throttledCalculateCachedStats=Yc(e._calculateCachedStats,100,{trailing:!0}),e}return ee(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=js(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),$l(r);var c=(0,Y.getEnabledElement)(r).renderingEngine;aa(c,l),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n){var r=e.data,o=n.viewportId,a=n.renderingEngineId;if(4===r.handles.points.length){for(var i=[null,null],l=[null,null],c=Number.MAX_VALUE,s=0;s<2;s+=1)for(var d=2;d<4;d+=1){var u=fc.vec3.distance(r.handles.points[s],r.handles.points[d]);u<c&&(c=u,i[1]=r.handles.points[s],i[0]=r.handles.points[(s+1)%2],l[0]=r.handles.points[d],l[1]=r.handles.points[2+(d-1)%2])}for(var v=r.cachedStats,f=Object.keys(v),g=0;g<f.length;g++){var h=f[g],p=Jf(i,l);v[h]={angle:p}}e.invalidated=!1;var m=$.ANNOTATION_MODIFIED,w={annotation:e,viewportId:o,renderingEngineId:a};return(0,Y.triggerEvent)(Y.eventTarget,m,w),v}}}]),o}($s);function qg(e,t){var n=e.cachedStats[t].angle;if(void 0!==n)return["".concat(n.toFixed(2)," ").concat(String.fromCharCode(176))]}ne(Gg,"toolName",void 0),Gg.toolName="CobbAngle";var zg=Gg;var Kg="magnify-viewport",Yg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}};return te(this,o),ne(da(e=r.call(this,t,n)),"_bounds",void 0),ne(da(e),"editData",void 0),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints,a=(0,Y.getEnabledElement)(r),i=a.viewport,l=a.renderingEngine;if(!(i instanceof Y.StackViewport))throw new Error("MagnifyTool only works on StackViewports");var c=e._getReferencedImageId(i);if(!c)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");var s=js(r,e.getToolName());return e.editData={referencedImageId:c,viewportIdsToRender:s,enabledElement:a,renderingEngine:l,currentPoints:o},e._createMagnificationViewport(),e._activateDraw(r),$l(r),t.preventDefault(),aa(l,s),!0})),ne(da(e),"preTouchStartCallback",(function(t){e.preMouseDownCallback(t)})),ne(da(e),"_createMagnificationViewport",(function(){var t,n=e.editData,r=n.enabledElement,o=n.referencedImageId,a=n.viewportIdsToRender,i=n.renderingEngine,l=n.currentPoints,c=r.viewport,s=c.element,d=c.getProperties().voiRange,u=l.canvas,v=l.world;if(null===(t=s.querySelector(".magnifyTool"))){var f=document.createElement("div");f.classList.add("magnifyTool"),f.style.display="block",f.style.width="".concat(e.configuration.magnifyWidth,"px"),f.style.height="".concat(e.configuration.magnifyHeight,"px"),f.style.position="absolute",t=f,s.querySelector(".viewport-element").appendChild(f);var g={viewportId:Kg,type:Y.Enums.ViewportType.STACK,element:t};i.enableElement(g)}t.style.top="".concat(u[1]-e.configuration.magnifyHeight/2,"px"),t.style.left="".concat(u[0]-e.configuration.magnifyWidth/2,"px");var h=i.getViewport(Kg);h.setStack([o]).then((function(){h.setProperties({voiRange:d});var t=c.getCamera().parallelScale,n=h.getCamera(),r=n.focalPoint,o=n.position,a=n.viewPlaneNormal,i=Math.sqrt(Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2)),l=[v[0],v[1],v[2]],s=[l[0]+i*a[0],l[1]+i*a[1],l[2]+i*a[2]];h.setCamera({parallelScale:t*(1/e.configuration.magnifySize),focalPoint:l,position:s}),h.render()})),t.style.display="block",aa(i,a)})),ne(da(e),"_dragCallback",(function(t){var n=t.detail,r=n.deltaPoints,o=n.element,a=n.currentPoints,i=r.world,l=a.canvas,c=(0,Y.getEnabledElement)(o).renderingEngine.getViewport(Kg),s=o.querySelector(".magnifyTool");if(s){s.style.top="".concat(l[1]-e.configuration.magnifyHeight/2,"px"),s.style.left="".concat(l[0]-e.configuration.magnifyWidth/2,"px");var d=c.getCamera(),u=d.focalPoint,v=d.position,f=[v[0]+i[0],v[1]+i[1],v[2]+i[2]],g=[u[0]+i[0],u[1]+i[1],u[2]+i[2]];c.setCamera({focalPoint:g,position:f}),c.render()}})),ne(da(e),"_dragEndCallback",(function(t){var n=t.detail.element;(0,Y.getEnabledElement)(n).renderingEngine.disableElement(Kg);var r=n.querySelector(".viewport-element"),o=r.querySelector(".magnifyTool");r.removeChild(o),e._deactivateDraw(n),Jl(n)})),ne(da(e),"_activateDraw",(function(t){Ge.isInteractingWithTool=!0,t.addEventListener($.MOUSE_UP,e._dragEndCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._dragEndCallback),t.addEventListener($.TOUCH_END,e._dragEndCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateDraw",(function(t){Ge.isInteractingWithTool=!1,t.removeEventListener($.MOUSE_UP,e._dragEndCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._dragEndCallback),t.removeEventListener($.TOUCH_END,e._dragEndCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback)})),e}return ee(o,[{key:"_getReferencedImageId",value:function(e){var t,n=this.getTargetId(e);return e instanceof Y.StackViewport&&(t=n.split("imageId:")[1]),t}}]),o}(Ra);ne(Yg,"toolName",void 0),Yg.toolName="Magnify";var Jg=Yg;var $g=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"isDrawing",!1),ne(da(e),"isHandleOutsideImage",!1),ne(da(e),"_elementWithCursor",null),ne(da(e),"_currentCursorWorldPosition",null),ne(da(e),"_currentCanvasPosition",null),ne(da(e),"_disableCursorEnabled",!1),ne(da(e),"mouseMoveCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints;e._currentCursorWorldPosition=o.world,e._currentCanvasPosition=o.canvas,e._elementWithCursor=r;var a=e.getActiveAnnotation(r);return null===a?(e.createInitialAnnotation(o.world,r),!1):(e.updateAnnotationPosition(r,a),!1)})),ne(da(e),"createInitialAnnotation",(function(t,n){var r=(0,Y.getEnabledElement)(n);if(!r)throw new Error("No enabled element found");var o=r.viewport,a=r.renderingEngine;e.isDrawing=!0;var i=o.getCamera(),l=i.viewPlaneNormal,c=i.viewUp;if(!l||!c)throw new Error("Camera not found");var s=e.getReferencedImageId(o,t,l,c),d=o.getFrameOfReferenceUID(),u={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(l),viewUp:Nr(c),FrameOfReferenceUID:d,referencedImageId:s},data:{label:"",handles:{points:[Nr(t)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(Qe(e.getToolName(),n).length>0)return null;if(null!==et(u,n)){var v=js(n,e.getToolName(),!1);aa(a,v)}})),ne(da(e),"onCameraModified",(function(t){var n=t.detail,r=n.element,o=n.previousCamera,a=n.camera,i=(0,Y.getEnabledElement)(r).viewport;if(r===e._elementWithCursor){var l=o.focalPoint,c=a.viewPlaneNormal,s=a.focalPoint,d=[0,0,0];if(cu().subtract(s,l,d),0!==d.reduce((function(e,t){return e+t}),0)){var u=cu().dot(d,c);if(!(Math.abs(u)<.01)&&e._currentCanvasPosition){var v=i.canvasToWorld(e._currentCanvasPosition);e._currentCursorWorldPosition=v,e.updateAnnotationPosition(r,e.getActiveAnnotation(r))}}}})),ne(da(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=(t.FrameOfReferenceUID,e._elementWithCursor===i.element);e.configuration.positionSync&&!l&&e.updateViewportImage(i);var c=i.element,s=Qe(e.getToolName(),c);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(c,s))||void 0===o||!o.length)return a;for(var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=0;u<s.length;u++){var v=s[u],f=v.annotationUID,g=v.data.handles.points;if(!f)return a;d.annotationUID=f;var h=parseFloat(e.getStyle("lineWidth",d,v)),p=e.getStyle("lineDash",d,v),m=e.getStyle("color",d,v);if(g[0].some((function(e){return isNaN(e)})))return a;var w=g.map((function(e){return i.worldToCanvas(e)}));if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;if(Me(f)){var E={upper:"upper",right:"right",lower:"lower",left:"left"},y=lt(w[0],2),I=y[0],b=y[1],C=l?20:7,T=l?5:7;Rc(n,f,E.upper,[I,b-(C/2+T)],[I,b-C/2],{color:m,lineDash:p,lineWidth:h}),Rc(n,f,E.lower,[I,b+(C/2+T)],[I,b+C/2],{color:m,lineDash:p,lineWidth:h}),Rc(n,f,E.right,[I+(C/2+T),b],[I+C/2,b],{color:m,lineDash:p,lineWidth:h}),Rc(n,f,E.left,[I-(C/2+T),b],[I-C/2,b],{color:m,lineDash:p,lineWidth:h}),a=!0}}return a})),e._disableCursorEnabled=e.configuration.disableCursor,e}return ee(o,[{key:"onSetToolActive",value:function(){if(this._disableCursorEnabled=this.configuration.disableCursor,this._disableCursorEnabled){var e=sa(this.toolGroupId).viewportsInfo;e&&e.map((function(e){return(0,Y.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})).forEach((function(e){e&&$l(e.viewport.element)}))}}},{key:"onSetToolDisabled",value:function(){if(this._disableCursorEnabled){var e=sa(this.toolGroupId).viewportsInfo;e&&e.map((function(e){return(0,Y.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})).forEach((function(e){e&&Jl(e.viewport.element)}))}}},{key:"getActiveAnnotation",value:function(e){var t=Qe(this.getToolName(),e);return t.length?t[0]:null}},{key:"updateAnnotationPosition",value:function(e,t){var n,r,o=this._currentCursorWorldPosition;if(o&&null!==(n=t.data)&&void 0!==n&&null!==(r=n.handles)&&void 0!==r&&r.points){t.data.handles.points=[Nr(o)],t.invalidated=!0;var a=js(e,this.getToolName(),!1),i=(0,Y.getEnabledElement)(e);if(i){var l=i.renderingEngine;aa(l,a)}}}},{key:"filterInteractableAnnotationsForElement",value:function(e,t){var n,r,o;if(!(t instanceof Array)||0===t.length)return[];var a=t[0],i=null===(n=(0,Y.getEnabledElement)(e))||void 0===n?void 0:n.viewport;if(!i)return[];var l=i.getCamera(),c=l.viewPlaneNormal,s=l.focalPoint;if(!c||!s)return[];var d=null===(r=a.data)||void 0===r||null===(o=r.handles)||void 0===o?void 0:o.points;if(!(d instanceof Array)||1!==d.length)return[];var u=d[0],v=Y.utilities.planar.planeEquation(c,s);return Y.utilities.planar.planeDistanceToPoint(v,u)<this.configuration.displayThreshold?[a]:[]}},{key:"updateViewportImage",value:function(e){var t=this._currentCursorWorldPosition;if(t&&!t.some((function(e){return isNaN(e)})))if(e instanceof Y.StackViewport){var n=Y.utilities.getClosestStackImageIndexForPoint(t,e);if(null===n)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof Y.VolumeViewport){var r=e.getCamera(),o=r.focalPoint,a=r.viewPlaneNormal;if(!o||!a)return;var i=Y.utilities.planar.planeEquation(a,o),l=Y.utilities.planar.planeDistanceToPoint(i,t,!0);if(Math.abs(l)<.5)return;var c=fc.vec3.normalize(fc.vec3.create(),fc.vec3.fromValues.apply(fc.vec3,Nr(a))),s=fc.vec3.scale(fc.vec3.create(),c,l),d=fc.vec3.add(fc.vec3.create(),fc.vec3.fromValues.apply(fc.vec3,Nr(o)),s);e.setCamera({focalPoint:d});var u=e.getRenderingEngine();u&&u.renderViewport(e.id)}}}]),o}(Ks);ne($g,"toolName",void 0),$g.toolName="ReferenceCursors";var Zg=$g;var Xg=[],Qg=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{viewportId:"",scaleLocation:"bottom"}};return te(this,o),ne(da(e=r.call(this,t,n)),"touchDragCallback",void 0),ne(da(e),"mouseDragCallback",void 0),ne(da(e),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",{}),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"_init",(function(){var t=(0,Y.getRenderingEngines)()[0];if(t){var n=sa(e.toolGroupId).viewportsInfo;if(n){var r=n.map((function(e){return(0,Y.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})),o=r[0].viewport,a=r[0].FrameOfReferenceUID;if(e.configuration.viewportId&&r.forEach((function(t){t.viewport.id==e.configuration.viewportId&&(o=t.viewport)})),o){var i=o.getCamera(),l=i.viewUp,c=i.viewPlaneNormal,s=Y.utilities.getViewportImageCornersInWorld(o),d=e.editData.annotation,u=Qe(e.getToolName(),o.element);if(u.length&&(d=u.filter((function(e){return e.data.viewportId==o.id}))[0]),Xg.includes(o.id))e.editData.annotation.data.viewportId==o.id&&(e.editData.annotation.data.handles.points=s,e.editData.annotation.data.viewportId=o.id);else{var v={metadata:{toolName:e.getToolName(),viewPlaneNormal:Nr(c),viewUp:Nr(l),FrameOfReferenceUID:a,referencedImageId:null},data:{handles:{points:s},viewportId:o.id}};Xg.push(o.id),et(v,o.element),d=v}e.editData={viewport:o,renderingEngine:t,annotation:d}}}}})),ne(da(e),"onSetToolEnabled",(function(){e._init()})),ne(da(e),"onCameraModified",(function(t){e.configuration.viewportId=t.detail.viewportId,e._init()})),ne(da(e),"computeScaleSize",(function(e,t,n){var r=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];return("top"==n||"bottom"==n?r.filter((function(t){return t<.6*e&&t>.2*e})):r.filter((function(e){return e<.6*t&&e>.2*t})))[0]})),ne(da(e),"computeEndScaleTicks",(function(e,t){var n={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]};return{endTick1:[[e[1][0]+n[t][0][0],e[1][1]+n[t][0][0]],[e[1][0]+n[t][1][0],e[1][1]+n[t][1][1]]],endTick2:[[e[0][0]+n[t][0][0],e[0][1]+n[t][0][0]],[e[0][0]+n[t][1][0],e[0][1]+n[t][1][1]]]}})),ne(da(e),"computeInnerScaleTicks",(function(e,t,n,r,o){var a;"bottom"==t||"top"==t?a=o[0][0]-r[0][0]:"left"!=t&&"right"!=t||(a=o[0][1]-r[0][1]);var i=[],l=[],c=[],s=e;e>=50&&(s=e/10);for(var d=a/s,u=0;u<s-1;u++){var v={bottom:[[d*(u+1),0],[d*(u+1),5]],top:[[d*(u+1),0],[d*(u+1),-5]],left:[[0,d*(u+1)],[-5,d*(u+1)]],right:[[0,d*(u+1)],[5,d*(u+1)]]};i.push("".concat(n,"-tick").concat(u)),l.push("tick".concat(u)),(u+1)%5==0?c.push([[r[0][0]+v[t][0][0],r[0][1]+v[t][0][1]],[r[1][0]+v[t][0][0],r[1][1]+v[t][0][1]]]):c.push([[r[0][0]+v[t][0][0],r[0][1]+v[t][0][1]],[r[1][0]+v[t][1][0],r[1][1]+v[t][1][1]]])}return{tickIds:i,tickUIDs:l,tickCoordinates:c}})),ne(da(e),"computeWorldScaleCoordinates",(function(e,t,n){var r,o=fc.vec3.subtract(fc.vec3.create(),n[0],n[1]);o=fc.vec3.normalize(fc.vec3.create(),o);var a=fc.vec3.subtract(fc.vec3.create(),n[2],n[0]);a=fc.vec3.normalize(fc.vec3.create(),a);var i={bottom:[n[1],n[2]],top:[n[0],n[3]],right:[n[2],n[3]],left:[n[0],n[1]]},l=fc.vec3.add(fc.vec3.create(),i[t][0],i[t][0]).map((function(e){return e/2})),c=e/2/Math.sqrt(Math.pow(o[0],2)+Math.pow(o[1],2)+Math.pow(o[2],2));return"top"==t||"bottom"==t?r=[fc.vec3.subtract(fc.vec3.create(),l,a.map((function(e){return e*c}))),fc.vec3.add(fc.vec3.create(),l,a.map((function(e){return e*c})))]:"left"!=t&&"right"!=t||(r=[fc.vec3.add(fc.vec3.create(),l,o.map((function(e){return e*c}))),fc.vec3.subtract(fc.vec3.create(),l,o.map((function(e){return e*c})))]),r})),ne(da(e),"computeCanvasScaleCoordinates",(function(e,t,n,r,o){var a;if("top"==o||"bottom"==o){var i=t[0][0]-t[1][0];a=[[e.width/2-i/2,n.height],[e.width/2+i/2,n.height]]}else if("left"==o||"right"==o){var l=t[0][1]-t[1][1];a=[[r.width,e.height/2-l/2],[r.width,e.height/2+l/2]]}return a})),ne(da(e),"computeScaleBounds",(function(e,t,n,r){var o=t*Math.min(1e3,e.width),a=n*Math.min(1e3,e.height),i={bottom:[-a,-o],top:[a,o],left:[a,o],right:[-a,-o]},l={bottom:[e.height,e.width],top:[0,e.width],left:[e.height,0],right:[e.height,e.width]};return{height:l[r][0]+i[r][0],width:l[r][1]+i[r][1]}})),e}return ee(o,[{key:"renderAnnotation",value:function(e,t){if(this.editData.viewport){var n=this.configuration.scaleLocation,r=e.viewport,o=Qe(this.getToolName(),r.element).filter((function(e){return e.data.viewportId==r.id}))[0],a=e.viewport.canvas;if(!r)return!1;var i={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l={width:a.width,height:a.height},c=o.data.handles.points[0],s=o.data.handles.points[1],d=o.data.handles.points[2],u=o.data.handles.points[3],v=[c,d,s,u],f=fc.vec3.distance(d,u),g=fc.vec3.distance(c,d),h=this.computeScaleBounds(l,.05,.05,n),p=this.computeScaleBounds(l,.05,.05,n),m=this.computeScaleSize(f,g,n),w=this.computeWorldScaleCoordinates(m,n,v).map((function(e){return r.worldToCanvas(e)})),E=this.computeCanvasScaleCoordinates(l,w,p,h,n),y=this.computeEndScaleTicks(E,n),I=o.annotationUID;i.annotationUID=I;var b=this.getStyle("lineWidth",i,o),C=this.getStyle("lineDash",i,o),T=this.getStyle("color",i,o),_=this.getStyle("shadow",i,o),D="".concat(I,"-scaleline");Rc(t,I,"1",E[0],E[1],{color:T,width:b,lineDash:C,shadow:_},D);var O="".concat(I,"-left");Rc(t,I,"2",y.endTick1[0],y.endTick1[1],{color:T,width:b,lineDash:C,shadow:_},O);var S="".concat(I,"-right");Rc(t,I,"3",y.endTick2[0],y.endTick2[1],{color:T,width:b,lineDash:C,shadow:_},S);for(var x={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},M=[E[0][0]+x[n][0],E[0][1]+x[n][1]],k=this._getTextLines(m),R=this.computeInnerScaleTicks(m,n,I,y.endTick1,y.endTick2),P=R.tickIds,N=R.tickUIDs,A=R.tickCoordinates,L=0;L<N.length;L++)Rc(t,I,N[L],A[L][0],A[L][1],{color:T,width:b,lineDash:C,shadow:_},P[L]);return Uc(t,I,"text0",k,[M[0],M[1]],{fontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",fontSize:"14px",lineDash:"2,3",lineWidth:"1",shadow:!0,color:T}),!1}}},{key:"_getTextLines",value:function(e){var t,n;return e>=50?(t=e/10,n=" cm"):(t=e,n=" mm"),[t.toString().concat(n)]}}]),o}(Ks);ne(Qg,"toolName",void 0),Qg.toolName="ScaleOverlay";var eh=Qg,th=Y.utilities.transformWorldToIndex;function nh(e,t){!function(e,t){var n=t.volume,r=t.points,o=t.segmentsLocked,a=t.segmentIndex,i=t.segmentationId,l=t.constraintFn,c=n.imageData,s=n.dimensions,d=n.getScalarData(),u=r.map((function(e){return th(c,e)}));u=u.map((function(e){return e.map((function(e){return Math.round(e)}))}));var v=Xc(u,s);Zc(c,(function(){return!0}),(function(e){var t=e.value,n=e.index,r=e.pointIJK;o.includes(t)||(l?l(r)&&(d[n]=a):d[n]=a)}),v),_t(i)}(0,t)}var rh=Y.utilities.transformWorldToIndex;function oh(e,t){!function(e,t){var n=t.volume,r=t.points,o=t.segmentsLocked,a=t.segmentationId,i=n.imageData,l=n.dimensions,c=n.getScalarData(),s=r.map((function(e){return rh(i,e)})),d=Xc(s,l);Zc(i,(function(){return!0}),(function(e){var t=e.value,n=e.index;o.includes(t)||(c[n]=0)}),d),_t(a)}(0,t)}var ah=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:nh,ERASE_INSIDE:oh},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return te(this,o),ne(da(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ne(da(e),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o),l=i.viewport,c=i.renderingEngine;e.isDrawing=!0;var s=l.getCamera(),d=s.viewPlaneNormal,u=s.viewUp,v=e.toolGroupId,f=ps(v);if(!f)throw new Error("No active segmentation detected, create one before using scissors tool");var g=f.segmentationRepresentationUID,h=f.segmentationId,p=f.type,m=bs(h),w=ys(h),E=_s(v,g,m),y=Mt(h).representationData[p].volumeId,I=Y.cache.getVolume(y),b={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Nr(d),viewUp:Nr(u),FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:E},data:{handles:{points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null}}},C=js(o,e.getToolName());return e.editData={annotation:b,segmentation:I,segmentIndex:m,segmentsLocked:w,segmentColor:E,segmentationId:h,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(c,C),!0})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n,r,o,a,i,l,c,s,d=t.detail,u=d.element,v=e.editData,f=v.annotation,g=v.viewportIdsToRender,h=v.handleIndex,p=f.data,m=d.currentPoints,w=(0,Y.getEnabledElement)(u),E=w.viewport,y=E.worldToCanvas,I=E.canvasToWorld,b=m.world,C=p.handles.points;switch(C[h]=Nr(b),h){case 0:case 3:n=y(C[0]),r=[(a=y(C[3]))[0],n[1]],o=[n[0],a[1]],l=I(r),c=I(o),C[1]=l,C[2]=c;break;case 1:case 2:r=y(C[1]),n=[(o=y(C[2]))[0],r[1]],a=[r[0],o[1]],i=I(n),s=I(a),C[0]=i,C[3]=s}f.invalidated=!0,e.editData.hasMoved=!0;var T=w.renderingEngine;aa(T,g)})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,c=r.segmentationId,s=r.segmentIndex,d=r.segmentsLocked,u=o.data;if(!a||i){u.handles.activeHandleIndex=null,e._deactivateDraw(n),Jl(n);var v=(0,Y.getEnabledElement)(n),f=v.viewport;if(e.editData=null,e.isDrawing=!1,f instanceof Y.StackViewport)throw new Error("Not implemented yet");var g={points:u.handles.points,volume:l,segmentationId:c,segmentIndex:s,segmentsLocked:d};e.applyActiveStrategy(v,g)}})),ne(da(e),"_activateDraw",(function(t){t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport,a=e.editData.annotation,i=a.metadata,l=a.annotationUID,c=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),s="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(jc(n,l,"0",c[0],c[3],{color:s}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return ee(o)}(Ra);ne(ah,"toolName",void 0),ah.toolName="RectangleScissor";var ih=ah;var lh=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:us},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return te(this,o),ne(da(e=r.call(this,t,n)),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=r.canvas,l=(0,Y.getEnabledElement)(o),c=l.viewport,s=l.renderingEngine;e.isDrawing=!0;var d=c.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=e.toolGroupId,g=ps(f);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");var h=g.segmentationRepresentationUID,p=g.segmentationId,m=g.type,w=bs(p),E=ys(p),y=_s(f,h,w),I=Mt(p).representationData[m].volumeId,b=Y.cache.getVolume(I),C={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:Nr(u),viewUp:Nr(v),FrameOfReferenceUID:c.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:y},data:{handles:{points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},T=[c.id];return e.editData={annotation:C,segmentation:b,centerCanvas:i,segmentIndex:w,segmentationId:p,segmentsLocked:E,segmentColor:y,viewportIdsToRender:T,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(s,T),!0})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,Y.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,c=e.editData,s=c.annotation,d=c.viewportIdsToRender,u=c.centerCanvas,v=s.data,f=Math.abs(o[0]-u[0]),g=Math.abs(o[1]-u[1]),h=Math.sqrt(f*f+g*g),p=[u[0],u[1]+h],m=[u[0],u[1]-h],w=[u[0]-h,u[1]],E=[u[0]+h,u[1]];v.handles.points=[l(p),l(m),l(w),l(E)],s.invalidated=!0,e.editData.hasMoved=!0,aa(i,d)})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,c=r.segmentIndex,s=r.segmentsLocked,d=r.segmentationId,u=o.data,v=o.metadata,f=v.viewPlaneNormal,g=v.viewUp;if(!a||i){u.handles.activeHandleIndex=null,e._deactivateDraw(n),Jl(n);var h=(0,Y.getEnabledElement)(n),p=h.viewport;if(e.editData=null,e.isDrawing=!1,p instanceof Y.StackViewport)throw new Error("Not implemented yet");var m={points:u.handles.points,volume:l,segmentIndex:c,segmentsLocked:s,viewPlaneNormal:f,segmentationId:d,viewUp:g};e.applyActiveStrategy(h,m)}})),ne(da(e),"_activateDraw",(function(t){t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback),t.addEventListener($.TOUCH_END,e._endCallback)})),ne(da(e),"_deactivateDraw",(function(t){t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport;if(!e.editData.viewportIdsToRender.includes(o.id))return r;var a=e.editData.annotation,i=a.metadata,l=a.annotationUID,c=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),s=c[0],d=c[1],u=[Math.floor((s[0]+d[0])/2),Math.floor((s[1]+d[1])/2)],v=Math.abs(s[1]-Math.floor((s[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(xc(n,l,"0",u,v,{color:f}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return ee(o)}(Ra);ne(lh,"toolName",void 0),lh.toolName="CircleScissor";var ch=lh;var sh=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:os},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return te(this,o),ne(da(e=r.call(this,t,n)),"editData",void 0),ne(da(e),"isDrawing",void 0),ne(da(e),"isHandleOutsideImage",void 0),ne(da(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=r.canvas,l=(0,Y.getEnabledElement)(o),c=l.viewport,s=l.renderingEngine;e.isDrawing=!0;var d=c.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=e.toolGroupId,g=ps(f);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");var h=g.segmentationRepresentationUID,p=g.segmentationId,m=g.type,w=bs(p),E=ys(p),y=_s(f,h,w),I=Mt(p).representationData[m].volumeId,b=Y.cache.getVolume(I);e.isDrawing=!0;var C={metadata:{viewPlaneNormal:Nr(u),viewUp:Nr(v),FrameOfReferenceUID:c.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:y},data:{invalidated:!0,handles:{points:[Nr(a),Nr(a),Nr(a),Nr(a)],activeHandleIndex:null},cachedStats:{},highlighted:!0}},T=[c.id];return e.editData={annotation:C,segmentation:b,centerCanvas:i,segmentIndex:w,segmentsLocked:E,segmentColor:y,segmentationId:p,toolGroupId:f,viewportIdsToRender:T,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),$l(o),t.preventDefault(),aa(s,T),!0})),ne(da(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,Y.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,c=e.editData,s=c.annotation,d=c.viewportIdsToRender,u=c.centerCanvas,v=s.data,f=Math.abs(o[0]-u[0]),g=Math.abs(o[1]-u[1]),h=Math.sqrt(f*f+g*g),p=[u[0],u[1]+h],m=[u[0],u[1]-h],w=[u[0]-h,u[1]],E=[u[0]+h,u[1]];v.handles.points=[l(p),l(m),l(w),l(E)],s.invalidated=!0,e.editData.hasMoved=!0,aa(i,d)})),ne(da(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,c=r.segmentIndex,s=r.segmentsLocked,d=r.segmentationId,u=o.data,v=o.metadata,f=v.viewPlaneNormal,g=v.viewUp;if(!a||i){o.highlighted=!1,u.handles.activeHandleIndex=null,e._deactivateDraw(n),Jl(n);var h=(0,Y.getEnabledElement)(n),p=h.viewport;if(e.editData=null,e.isDrawing=!1,p instanceof Y.StackViewport)throw new Error("Not implemented yet");var m={points:u.handles.points,volume:l,segmentIndex:c,segmentsLocked:s,segmentationId:d,viewPlaneNormal:f,viewUp:g};e.applyActiveStrategy(h,m)}})),ne(da(e),"_activateDraw",(function(t){t.addEventListener($.MOUSE_UP,e._endCallback),t.addEventListener($.MOUSE_DRAG,e._dragCallback),t.addEventListener($.MOUSE_CLICK,e._endCallback),t.addEventListener($.TOUCH_END,e._endCallback),t.addEventListener($.TOUCH_TAP,e._endCallback),t.addEventListener($.TOUCH_DRAG,e._dragCallback)})),ne(da(e),"_deactivateDraw",(function(t){t.removeEventListener($.MOUSE_UP,e._endCallback),t.removeEventListener($.MOUSE_DRAG,e._dragCallback),t.removeEventListener($.MOUSE_CLICK,e._endCallback),t.removeEventListener($.TOUCH_END,e._endCallback),t.removeEventListener($.TOUCH_DRAG,e._dragCallback),t.removeEventListener($.TOUCH_TAP,e._endCallback)})),ne(da(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport;if(!e.editData.viewportIdsToRender.includes(o.id))return r;var a=e.editData.annotation,i=a.metadata,l=a.annotationUID,c=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),s=c[0],d=c[1],u=[Math.floor((s[0]+d[0])/2),Math.floor((s[1]+d[1])/2)],v=Math.abs(s[1]-Math.floor((s[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(xc(n,l,"0",u,v,{color:f}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return ee(o)}(Ra);ne(sh,"toolName",void 0),sh.toolName="SphereScissor";var dh=sh;var uh=Y.utilities.transformWorldToIndex,vh=Y.utilities.isEqual,fh=function(e){va(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=ga(t);if(n){var o=ga(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return fa(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return te(this,o),ne(da(e=r.call(this,t,n)),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,Y.getEnabledElement)(o).viewport.getCamera().viewPlaneNormal,l=ps(e.toolGroupId);if(!l)throw new Error("No active segmentation detected, create one before using scissors tool");var c=l.segmentationId,s=l.type,d=bs(c),u=ys(c),v=Mt(c).representationData[s].volumeId,f=Y.cache.getVolume(v),g=f.dimensions,h=f.direction,p=f.getScalarData(),m=uh(f.imageData,a),w=e.getFixedDimension(i,h);if(void 0!==w){var E=e.generateHelpers(p,g,m,w),y=E.floodFillGetter,I=E.getLabelValue,b=E.getScalarDataPositionFromPlane,C=E.inPlaneSeedPoint,T=E.fixedDimensionValue;if(!(m[0]<0||m[0]>=g[0]||m[1]<0||m[1]>=g[1]||m[2]<0||m[2]>=g[2])){var _=I(m[0],m[1],m[2]);if(!u.includes(_)){var D=Ad(y,C);return D.flooded.forEach((function(e){var t=b(e[0],e[1]);p[t]=d})),_t(c,e.getFramesModified(w,T,D)),!0}}}else console.warn("Oblique paint fill not yet supported")})),ne(da(e),"getFramesModified",(function(e,t,n){var r=n.boundaries;if(2===e)return[t];for(var o=1/0,a=-1/0,i=0;i<r.length;i++){var l=r[i][1];l<o&&(o=l),l>a&&(a=l)}for(var c=[],s=o;s<=a;s++)c.push(s);return c})),ne(da(e),"generateHelpers",(function(t,n,r){var o,a,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2;switch(i){case 0:o=r[0],a=[r[1],r[2]];break;case 1:o=r[1],a=[r[0],r[2]];break;case 2:o=r[2],a=[r[0],r[1]];break;default:throw new Error("Invalid fixedDimension: ".concat(i))}var l=function(e,t,r){return r*n[1]*n[0]+t*n[0]+e},c=function(e,n,r){return t[l(e,n,r)]},s=e.generateFloodFillGetter(n,i,o,c);return{getScalarDataPositionFromPlane:e.generateGetScalarDataPositionFromPlane(l,i,o),getLabelValue:c,floodFillGetter:s,inPlaneSeedPoint:a,fixedDimensionValue:o}})),ne(da(e),"generateFloodFillGetter",(function(e,t,n,r){var o;switch(t){case 0:o=function(t,o){if(!(t>=e[1]||t<0||o>=e[2]||o<0))return r(n,t,o)};break;case 1:o=function(t,o){if(!(t>=e[0]||t<0||o>=e[2]||o<0))return r(t,n,o)};break;case 2:o=function(t,o){if(!(t>=e[0]||t<0||o>=e[1]||o<0))return r(t,o,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return o})),ne(da(e),"generateGetScalarDataPositionFromPlane",(function(e,t,n){var r;switch(t){case 0:r=function(t,r){return e(n,t,r)};break;case 1:r=function(t,r){return e(t,n,r)};break;case 2:r=function(t,r){return e(t,r,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return r})),e}return ee(o,[{key:"getFixedDimension",value:function(e,t){var n=t.slice(0,3),r=t.slice(3,6),o=t.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],i=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(vh(a,i))return 0;var l=[Math.abs(r[0]),Math.abs(r[1]),Math.abs(r[2])];if(vh(a,l))return 1;var c=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];return vh(a,c)?2:void 0}}]),o}(Ra);ne(fh,"toolName",void 0),fh.toolName="PaintFill";var gh=fh}(),p}()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Filters/General/ImageMarchingSquares"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):"function"==typeof define&&define.amd?define(["gl-matrix","@cornerstonejs/core","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Common/Core/Math","@kitware/vtk.js/Filters/General/ImageMarchingSquares","@kitware/vtk.js/Common/Core/DataArray","@kitware/vtk.js/Common/DataModel/ImageData","@kitware/vtk.js/Common/Core/CellArray","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Rendering/Core/Mapper","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Common/Core/MatrixBuilder","@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget","@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor","@kitware/vtk.js/Rendering/Core/AxesActor","@kitware/vtk.js/IO/XML/XMLPolyDataReader"],t):"object"==typeof exports?exports.cornerstoneTools3D=t(require("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Filters/General/ImageMarchingSquares"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):e.cornerstoneTools3D=t(e.window,e.cornerstone3D,e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Common/Core/Math"],e["@kitware/vtk.js/Filters/General/ImageMarchingSquares"],e["@kitware/vtk.js/Common/Core/DataArray"],e["@kitware/vtk.js/Common/DataModel/ImageData"],e["@kitware/vtk.js/Common/Core/CellArray"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"],e["@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"],e["@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"],e["@kitware/vtk.js/Rendering/Core/AxesActor"],e["@kitware/vtk.js/IO/XML/XMLPolyDataReader"])}(self,((e,t,n,o,i,a,r,s,l,d,c,h,u,g,v,m,p,f)=>(()=>{var w={485:(e,t,n)=>{var o,i="__lodash_hash_undefined__",a=1/0,r="[object Function]",s="[object GeneratorFunction]",l="[object Symbol]",d=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,h=/^\./,u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,g=/\\(\\)?/g,v=/^\[object .+?Constructor\]$/,m="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,f=m||p||Function("return this")(),w=Array.prototype,I=Function.prototype,E=Object.prototype,C=f["__core-js_shared__"],_=(o=/[^.]+$/.exec(C&&C.keys&&C.keys.IE_PROTO||""))?"Symbol(src)_1."+o:"",b=I.toString,T=E.hasOwnProperty,D=E.toString,S=RegExp("^"+b.call(T).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),y=f.Symbol,M=w.splice,x=V(f,"Map"),O=V(Object,"create"),P=y?y.prototype:void 0,A=P?P.toString:void 0;function R(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function L(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function N(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function k(e,t){for(var n,o,i=e.length;i--;)if((n=e[i][0])===(o=t)||n!=n&&o!=o)return i;return-1}function U(e,t){var n,o,i=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){if(!G(e)||_&&_ in e)return!1;var t=function(e){var t=G(e)?D.call(e):"";return t==r||t==s}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?S:v;return t.test(function(e){if(null!=e){try{return b.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}R.prototype.clear=function(){this.__data__=O?O(null):{}},R.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},R.prototype.get=function(e){var t=this.__data__;if(O){var n=t[e];return n===i?void 0:n}return T.call(t,e)?t[e]:void 0},R.prototype.has=function(e){var t=this.__data__;return O?void 0!==t[e]:T.call(t,e)},R.prototype.set=function(e,t){return this.__data__[e]=O&&void 0===t?i:t,this},L.prototype.clear=function(){this.__data__=[]},L.prototype.delete=function(e){var t=this.__data__,n=k(t,e);return!(n<0||(n==t.length-1?t.pop():M.call(t,n,1),0))},L.prototype.get=function(e){var t=this.__data__,n=k(t,e);return n<0?void 0:t[n][1]},L.prototype.has=function(e){return k(this.__data__,e)>-1},L.prototype.set=function(e,t){var n=this.__data__,o=k(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},N.prototype.clear=function(){this.__data__={hash:new R,map:new(x||L),string:new R}},N.prototype.delete=function(e){return U(this,e).delete(e)},N.prototype.get=function(e){return U(this,e).get(e)},N.prototype.has=function(e){return U(this,e).has(e)},N.prototype.set=function(e,t){return U(this,e).set(e,t),this};var W=B((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(q(e))return A?A.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}(t);var n=[];return h.test(e)&&n.push(""),e.replace(u,(function(e,t,o,i){n.push(o?i.replace(g,"$1"):t||e)})),n}));function H(e){if("string"==typeof e||q(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}function B(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r),r};return n.cache=new(B.Cache||N),n}B.Cache=N;var F=Array.isArray;function G(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function q(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&D.call(e)==l}e.exports=function(e,t,n){var o=null==e?void 0:function(e,t){var n;t=function(e,t){if(F(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!q(e))||c.test(e)||!d.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:F(n=t)?n:W(n);for(var o=0,i=t.length;null!=e&&o<i;)e=e[H(t[o++])];return o&&o==i?e:void 0}(e,t);return void 0===o?n:o}},396:e=>{"use strict";e.exports=l},785:e=>{"use strict";e.exports=r},807:e=>{"use strict";e.exports=i},847:e=>{"use strict";e.exports=g},348:e=>{"use strict";e.exports=d},283:e=>{"use strict";e.exports=s},441:e=>{"use strict";e.exports=n},70:e=>{"use strict";e.exports=c},543:e=>{"use strict";e.exports=a},614:e=>{"use strict";e.exports=f},518:e=>{"use strict";e.exports=v},474:e=>{"use strict";e.exports=u},744:e=>{"use strict";e.exports=m},424:e=>{"use strict";e.exports=p},795:e=>{"use strict";e.exports=o},610:e=>{"use strict";e.exports=h},953:e=>{"use strict";e.exports=t},976:t=>{"use strict";t.exports=e}},I={};function E(e){var t=I[e];if(void 0!==t)return t.exports;var n=I[e]={exports:{}};return w[e](n,n.exports,E),n.exports}E.m=w,E.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return E.d(t,{a:t}),t},E.d=(e,t)=>{for(var n in t)E.o(t,n)&&!E.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},E.u=e=>e+".index.js",E.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),E.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),E.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;E.g.importScripts&&(e=E.g.location+"");var t=E.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var o=n.length-1;o>-1&&!e;)e=n[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),E.p=e})(),E.b=document.baseURI||self.location.href;var C={};return(()=>{"use strict";E.r(C),E.d(C,{AdvancedMagnifyTool:()=>MI,AngleTool:()=>aI,AnnotationDisplayTool:()=>zr,AnnotationTool:()=>Kr,ArrowAnnotateTool:()=>nI,BaseTool:()=>ba,BidirectionalTool:()=>qs,BrushTool:()=>Sr,CONSTANTS:()=>j,CircleROIStartEndThresholdTool:()=>QI,CircleROITool:()=>yw,CircleScissorsTool:()=>YI,CobbAngleTool:()=>dI,CrosshairsTool:()=>rw,DragProbeTool:()=>xf,EllipticalROITool:()=>Cw,Enums:()=>ne,EraserTool:()=>BI,KeyImageTool:()=>fI,LengthTool:()=>Zf,LivewireContourSegmentationTool:()=>$w,LivewireContourTool:()=>Jw,MIPJumpToClickTool:()=>Kf,MagnifyTool:()=>EI,OrientationMarkerTool:()=>cE,OverlayGridTool:()=>uw,PaintFillTool:()=>pE,PanTool:()=>Ef,PlanarFreehandContourSegmentationTool:()=>jh,PlanarFreehandROITool:()=>qh,PlanarRotateTool:()=>Hf,ProbeTool:()=>Sf,RectangleROIStartEndThresholdTool:()=>Es,RectangleROIThresholdTool:()=>fs,RectangleROITool:()=>ms,RectangleScissorsTool:()=>jI,ReferenceCursors:()=>OI,ReferenceLines:()=>dw,ReferenceLinesTool:()=>dw,ScaleOverlayTool:()=>RI,SculptorTool:()=>WI,SegmentSelectTool:()=>uE,SegmentationIntersectionTool:()=>pw,SphereScissorsTool:()=>JI,SplineContourSegmentationTool:()=>Fw,SplineROITool:()=>Hw,StackScrollMouseWheelTool:()=>Ff,StackScrollTool:()=>Uf,Synchronizer:()=>sp,SynchronizerManager:()=>q,ToolGroupManager:()=>z,TrackballRotateTool:()=>_f,Types:()=>J,UltrasoundDirectionalTool:()=>gI,VideoRedactionTool:()=>wE,VolumeRotateMouseWheelTool:()=>zf,WindowLevelRegionTool:()=>Rf,WindowLevelTool:()=>Pf,ZoomTool:()=>Nf,addTool:()=>Ki,annotation:()=>$,cancelActiveManipulations:()=>ip,cursors:()=>X,destroy:()=>tp,drawing:()=>Y,init:()=>ep,removeTool:()=>Yi,segmentation:()=>te,state:()=>Ke,synchronizers:()=>K,utilities:()=>B});var e={};E.r(e),E.d(e,{checkAndDefineIsLockedProperty:()=>ve,getAnnotationsLocked:()=>he,getAnnotationsLockedCount:()=>ge,isAnnotationLocked:()=>ue,setAnnotationLocked:()=>de,unlockAllAnnotations:()=>ce});var t={};E.r(t),E.d(t,{deselectAnnotation:()=>_e,getAnnotationsSelected:()=>be,getAnnotationsSelectedByToolName:()=>Te,getAnnotationsSelectedCount:()=>Se,isAnnotationSelected:()=>De,setAnnotationSelected:()=>Ce});var n={};E.r(n),E.d(n,{checkAndDefineIsVisibleProperty:()=>Le,isAnnotationVisible:()=>Re,setAnnotationVisibility:()=>Pe,showAllAnnotations:()=>Ae});var o={};E.r(o),E.d(o,{addAnnotation:()=>gt,addChildAnnotation:()=>ct,clearParentAnnotation:()=>dt,getAllAnnotations:()=>lt,getAnnotation:()=>pt,getAnnotationManager:()=>it,getAnnotations:()=>st,getChildAnnotations:()=>ut,getNumberOfAnnotations:()=>vt,getParentAnnotation:()=>ht,invalidateAnnotation:()=>It,removeAllAnnotations:()=>ft,removeAnnotation:()=>mt,removeAnnotations:()=>wt,resetAnnotationManager:()=>rt,setAnnotationManager:()=>at});var i={};E.r(i),E.d(i,{triggerSegmentationDataModified:()=>on,triggerSegmentationModified:()=>nn,triggerSegmentationRemoved:()=>Qt,triggerSegmentationRepresentationModified:()=>tn,triggerSegmentationRepresentationRemoved:()=>en});var a={};E.r(a),E.d(a,{addColorLUT:()=>un,getSegmentIndexColor:()=>vn,setColorLUT:()=>gn,setSegmentIndexColor:()=>mn});var r={};E.r(r),E.d(r,{InterpolationManager:()=>pa});var s={};E.r(s),E.d(s,{AnnotationToPointData:()=>jo,acceptAutogeneratedInterpolations:()=>wa,areCoplanarContours:()=>yo,calculatePerimeter:()=>Ca,contourFinder:()=>Po,detectContourHoles:()=>Ro,findHandlePolylineIndex:()=>Ea,generateContourSetsFromLabelmap:()=>Bo,getContourHolesDataCanvas:()=>Yo,getContourHolesDataWorld:()=>Ko,getDeduplicatedVTKPolyDataPoints:()=>Ao,interpolation:()=>r,updateContourPolyline:()=>ni});var l={};E.r(l),E.d(l,{hideElementCursor:()=>mr,initElementCursor:()=>ur,resetElementCursor:()=>vr,setElementCursor:()=>gr});var d={};E.r(d),E.d(d,{getActiveRepresentation:()=>fr,setActiveRepresentation:()=>wr});var c={};E.r(c),E.d(c,{getLockedSegments:()=>Cr,isSegmentIndexLocked:()=>Ir,setSegmentIndexLocked:()=>Er});var h={};E.r(h),E.d(h,{getActiveSegmentIndex:()=>Tr,setActiveSegmentIndex:()=>br});var u={};E.r(u),E.d(u,{contourAndFindLargestBidirectional:()=>Us,createBidirectionalToolData:()=>Vs,createLabelmapVolumeForViewport:()=>ys,createMergedLabelmapForIndex:()=>Ts,floodFill:()=>Oa,getBrushSizeForToolGroup:()=>xs,getBrushThresholdForToolGroup:()=>Ps,getBrushToolInstances:()=>yr,getDefaultRepresentationConfig:()=>Ss,getHoveredContourSegmentationAnnotation:()=>Qs,getSegmentIndexAtLabelmapBorder:()=>Zs,getSegmentIndexAtWorldPoint:()=>Js,getUniqueSegmentIndices:()=>$t,invalidateBrushCursor:()=>_r,isValidRepresentationConfig:()=>Ds,rectangleROIThresholdVolumeByRange:()=>bs,segmentContourAction:()=>zs,setBrushSizeForToolGroup:()=>Ms,setBrushThresholdForToolGroup:()=>Os,thresholdSegmentationByRange:()=>As,thresholdVolumeByRange:()=>Or,triggerSegmentationRender:()=>Su});var g={};E.r(g),E.d(g,{getTextBoxCoordsCanvas:()=>ns});var v={};E.r(v),E.d(v,{distanceToPoint:()=>tl,distanceToPointSquared:()=>el,intersectAABB:()=>ui});var m={};E.r(m),E.d(m,{BasicStatsCalculator:()=>cs,Calculator:()=>ss});var p={};E.r(p),E.d(p,{getCanvasEllipseCorners:()=>Va,pointInEllipse:()=>Wa,precalculatePointInEllipse:()=>Ha});var f={};E.r(f),E.d(f,{distanceToPoint:()=>es,distanceToPointSquared:()=>Zo,distanceToPointSquaredInfo:()=>Jo,intersectLine:()=>Hs,isPointOnLineSegment:()=>Ti});var w={};E.r(w),E.d(w,{distanceToPoint:()=>nl,distanceToPointSquared:()=>Xo,mirror:()=>ol});var I={};E.r(I),E.d(I,{addCanvasPointsToArray:()=>hl,containsPoint:()=>Ii,containsPoints:()=>Ei,decimate:()=>Qo,getAABB:()=>Un,getArea:()=>il,getClosestLineSegmentIntersection:()=>sl,getFirstLineSegmentIntersectionIndexes:()=>pi,getLineSegmentIntersectionsCoordinates:()=>rl,getLineSegmentIntersectionsIndexes:()=>Ci,getNormal2:()=>_i,getNormal3:()=>al,getSignedArea:()=>ei,getSubPixelSpacingAndXYDirections:()=>dl,getWindingDirection:()=>ti,intersectPolyline:()=>fi,isClosed:()=>wi,isPointInsidePolyline3D:()=>Xs,mergePolylines:()=>Ri,pointCanProjectOnLine:()=>ul,pointsAreWithinCloseContourProximity:()=>cl,projectTo2D:()=>Ys,subtractPolylines:()=>Li});var _={};E.r(_),E.d(_,{distanceToPoint:()=>ts});var b={};E.r(b),E.d(b,{findClosestPoint:()=>$r,liangBarksyClip:()=>fl});var T={};E.r(T),E.d(T,{BasicStatsCalculator:()=>m,aabb:()=>v,ellipse:()=>p,lineSegment:()=>f,point:()=>w,polyline:()=>I,rectangle:()=>_,vec2:()=>b});var D={};E.r(D),E.d(D,{default:()=>bl,filterAnnotationsForDisplay:()=>Vr,filterAnnotationsWithinSlice:()=>Ur,getPointInLineOfSightWithCriteria:()=>El,getWorldWidthAndHeightFromCorners:()=>os,isPlaneIntersectingAABB:()=>_l});var S={};E.r(S),E.d(S,{filterViewportsWithFrameOfReferenceUID:()=>Ni,filterViewportsWithParallelNormals:()=>Bi,filterViewportsWithToolEnabled:()=>Wi,getViewportIdsWithToolToRender:()=>Fi});var y={};E.r(y),E.d(y,{getOrientationStringLPS:()=>Tl,invertOrientationStringLPS:()=>Dl});var M={};E.r(M),E.d(M,{Events:()=>yl,addToolState:()=>xl,getToolState:()=>Ol,playClip:()=>Nl,stopClip:()=>kl});var x={};E.r(x),E.d(x,{extend2DBoundingBoxInViewAxis:()=>Cs,getBoundingBoxAroundShape:()=>go,getBoundingBoxAroundShapeIJK:()=>go,getBoundingBoxAroundShapeWorld:()=>vo});var O={};E.r(O),E.d(O,{default:()=>jl,smoothAnnotation:()=>zl});var P={};E.r(P),E.d(P,{getBoundsIJKFromRectangleAnnotations:()=>_s,isAxisAlignedRectangle:()=>Xl});var A={};E.r(A),E.d(A,{isViewportPreScaled:()=>as,jumpToSlice:()=>lo,jumpToWorld:()=>fd});var R={};E.r(R),E.d(R,{copyPoints:()=>bd,copyPointsList:()=>_d,getDeltaDistance:()=>Id,getDeltaDistanceBetweenIPoints:()=>Cd,getDeltaPoints:()=>wd,getDeltaRotation:()=>Ed,getMeanPoints:()=>Td,getMeanTouchPoints:()=>Dd});var L={};E.r(L),E.d(L,{generateImageFromTimeData:()=>Pd,getDataInTime:()=>Od});var N={};E.r(N),E.d(N,{getPoint:()=>Ad,getPolyDataPointIndexes:()=>Rd,getPolyDataPoints:()=>Ld});var k={};E.r(k),E.d(k,{ColorbarRangeTextPosition:()=>Nd});var U={};E.r(U),E.d(U,{Colorbar:()=>jd,Enums:()=>k,ViewportColorbar:()=>Xd});var V={};E.r(V),E.d(V,{calculateMinMaxMean:()=>Zd,extractWindowLevelRegionToolData:()=>$d,getLuminanceFromRegion:()=>Jd});var W={};E.r(W),E.d(W,{colorbar:()=>U,windowLevel:()=>V});var H={};E.r(H),E.d(H,{addContourSegmentationAnnotation:()=>ji,areSameSegment:()=>qi,isContourSegmentationAnnotation:()=>Gi,removeContourSegmentationAnnotation:()=>zi});var B={};E.r(B),E.d(B,{annotationFrameRange:()=>fo,annotationHydration:()=>To,boundingBox:()=>x,calibrateImageSpacing:()=>zn,cine:()=>M,clip:()=>Gn,contourSegmentation:()=>H,contours:()=>s,debounce:()=>rn,drawing:()=>g,dynamicVolume:()=>L,getAnnotationNearPoint:()=>Wn,getAnnotationNearPointOnEnabledElement:()=>Hn,getCalibratedAspect:()=>kn,getCalibratedLengthUnitsAndScale:()=>Ln,getCalibratedProbeUnitsAndValue:()=>Nn,getClosestImageIdForStackViewport:()=>So,getSphereBoundsInfo:()=>po,getViewportForAnnotation:()=>bo,isObject:()=>an,jumpToSlice:()=>lo,math:()=>T,orientation:()=>y,planar:()=>D,planarFreehandROITool:()=>O,pointInShapeCallback:()=>co,pointInSurroundingSphereCallback:()=>Eo,pointToString:()=>kt,polyDataUtils:()=>N,rectangleROITool:()=>P,roundNumber:()=>Qd,scroll:()=>so,segmentation:()=>u,stackContextPrefetch:()=>pd,stackPrefetch:()=>cd,throttle:()=>Fn,touch:()=>R,triggerAnnotationRender:()=>no,triggerAnnotationRenderForToolGroupIds:()=>ro,triggerAnnotationRenderForViewportIds:()=>io,triggerEvent:()=>oe.triggerEvent,viewport:()=>A,viewportFilters:()=>S,voi:()=>W});var F={};E.r(F),E.d(F,{getRepresentationVisibility:()=>_h,getSegmentIndexVisibility:()=>Dh,getSegmentsHidden:()=>Sh,setRepresentationVisibility:()=>Ch,setSegmentIndexVisibility:()=>Th,setSegmentsVisibility:()=>bh});var G={};E.r(G),E.d(G,{addColorLUT:()=>tg,addRepresentationToViewport:()=>Ku,addSegmentation:()=>ku,getActiveRepresentation:()=>ig,getAllSegmentsConfig:()=>Hu,getColorLUT:()=>Qu,getDefaultSegmentationStateManager:()=>Ru,getGlobalConfig:()=>Yu,getLabelmapImageIdsForViewport:()=>rg,getNextColorLUTIndex:()=>eg,getPerSegmentConfig:()=>Fu,getRepresentation:()=>Vu,getRepresentationVisibility:()=>ng,getRepresentations:()=>Uu,getRepresentationsBySegmentationId:()=>Wu,getRepresentationsForViewport:()=>zu,getRepresentationsRenderingStateForViewport:()=>ju,getSegmentation:()=>Lu,getSegmentations:()=>Nu,getViewportIdsWithSegmentationId:()=>qu,removeColorLUT:()=>$u,removeRepresentation:()=>Zu,removeSegmentation:()=>Ju,setActiveRepresentation:()=>ag,setAllSegmentsConfig:()=>Bu,setGlobalConfig:()=>Xu,setPerSegmentConfig:()=>Gu,setRepresentationVisibility:()=>og,updateSegmentationImageReferences:()=>sg});var q={};E.r(q),E.d(q,{createSynchronizer:()=>lp,destroy:()=>dp,destroySynchronizer:()=>up,getAllSynchronizers:()=>hp,getSynchronizer:()=>cp,getSynchronizersForViewport:()=>Hm});var z={};E.r(z),E.d(z,{createToolGroup:()=>Hp,destroy:()=>$m,destroyToolGroup:()=>Zm,getAllToolGroups:()=>Bp,getToolGroup:()=>ao,getToolGroupForViewport:()=>Vn,getToolGroupsWithToolName:()=>Ze});var j={};E.r(j),E.d(j,{COLOR_LUT:()=>hu});var K={};E.r(K),E.d(K,{createCameraPositionSynchronizer:()=>qp,createImageSliceSynchronizer:()=>of,createPresentationViewSynchronizer:()=>Kp,createSlabThicknessSynchronizer:()=>sf,createStackImageSynchronizer:()=>lf,createVOISynchronizer:()=>Xp,createZoomPanSynchronizer:()=>$p});var Y={};E.r(Y),E.d(Y,{draw:()=>Jn,drawArrow:()=>hf,drawCircle:()=>ar,drawEllipse:()=>cf,drawEllipseByCoordinates:()=>df,drawHandle:()=>Pr,drawHandles:()=>Ar,drawLine:()=>Zr,drawLinkedTextBox:()=>Qr,drawPath:()=>lh,drawPolyline:()=>dh,drawRect:()=>Lr,drawRectByCoordinates:()=>Rr,drawRedactionRect:()=>uf,drawTextBox:()=>Jr,setAttributesIfNecessary:()=>or,setNewAttributesIfValid:()=>ir});var X={};E.r(X),E.d(X,{CursorNames:()=>vf,CursorSVG:()=>bp,ImageMouseCursor:()=>mp,MouseCursor:()=>lr,SVGMouseCursor:()=>xp,elementCursor:()=>l,registerCursor:()=>Dp,setCursorForElement:()=>gf});var J={};E.r(J);var Z={};E.r(Z),E.d(Z,{getFont:()=>mf,getState:()=>Gr,style:()=>Wr});var $={};E.r($),E.d($,{AnnotationGroup:()=>pf,FrameOfReferenceSpecificAnnotationManager:()=>Fe,config:()=>Z,locking:()=>e,selection:()=>t,state:()=>o,visibility:()=>n});var Q={};E.r(Q),E.d(Q,{color:()=>a,getAllSegmentsConfig:()=>Ph,getGlobalConfig:()=>yh,getGlobalRepresentationConfig:()=>xh,getPerSegmentConfig:()=>Lh,getSegmentIndexConfig:()=>kh,setAllSegmentsConfig:()=>Ah,setGlobalConfig:()=>Mh,setGlobalRepresentationConfig:()=>Oh,setPerSegmentConfig:()=>Rh,setSegmentIndexConfig:()=>Nh,visibility:()=>F});var ee={};E.r(ee),E.d(ee,{canComputeRequestedRepresentation:()=>Kt,computeAndAddContourRepresentation:()=>Yh,computeAndAddLabelmapRepresentation:()=>mu,computeAndAddSurfaceRepresentation:()=>En});var te={};E.r(te),E.d(te,{activeSegmentation:()=>d,addRepresentationData:()=>Yt,addRepresentations:()=>uu,addSegmentations:()=>wf,config:()=>Q,convertStackToVolumeSegmentation:()=>xu,convertVolumeToStackSegmentation:()=>vu,polySeg:()=>ee,removeRepresentationsFromViewport:()=>ff,segmentIndex:()=>h,segmentLocking:()=>c,state:()=>G,triggerSegmentationEvents:()=>i});var ne={};E.r(ne),E.d(ne,{AnnotationStyleStates:()=>Fr,ChangeTypes:()=>qe,Events:()=>se,KeyboardBindings:()=>ac,MouseBindings:()=>ic,SegmentationRepresentations:()=>Ct,StrategyCallbacks:()=>Da,Swipe:()=>Qg,ToolModes:()=>Xe,WorkerTypes:()=>Nt});var oe=E(953);function ie(e){return ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ie(e)}function ae(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==ie(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,"string");if("object"!==ie(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ie(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=function(e){return e.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",e.TOOLGROUP_VIEWPORT_ADDED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_ADDED",e.TOOLGROUP_VIEWPORT_REMOVED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED",e.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",e.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",e.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",e.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",e.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",e.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",e.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",e.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",e.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",e.ANNOTATION_INTERPOLATION_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_INTERPOLATION_PROCESS_COMPLETED",e.INTERPOLATED_ANNOTATIONS_REMOVED="CORNERSTONE_TOOLS_INTERPOLATED_ANNOTATIONS_REMOVED",e.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",e.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",e.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",e.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",e.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",e.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",e.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",e.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",e.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",e.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",e.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",e.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",e.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",e.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",e.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",e.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",e.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",e.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",e.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",e.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",e.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",e.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",e.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE",e}(re||{});const se=re,le=new Set;function de(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=me();e&&(t?function(e,t,n){t.has(e)||(t.add(e),n.added.push(e))}(e,le,n):pe(e,le,n)),fe(n,le)}function ce(){const e=me();!function(e,t){e.forEach((n=>{pe(n,e,t)}))}(le,e),fe(e,le)}function he(){return Array.from(le)}function ue(e){return le.has(e)}function ge(){return le.size}function ve(e){if(e){const t=!!e.isLocked;(function(e){const t=Object.getOwnPropertyDescriptor(e,"isLocked");return t?t.configurable&&(t.set!==we||t.get!==Ie):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isLocked",{configurable:!1,enumerable:!0,set:we,get:Ie}),de(e,t)}}function me(){return Object.freeze({added:[],removed:[],locked:[]})}function pe(e,t,n){t.delete(e)&&n.removed.push(e)}function fe(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.locked.push(t)})),(0,oe.triggerEvent)(oe.eventTarget,se.ANNOTATION_LOCK_CHANGE,e))}function we(e){de(this,e)}function Ie(){return ue(this)}const Ee=new Set;function Ce(e){arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?_e(e):function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=ye();t||Me(Ee,n),e&&!Ee.has(e)&&(Ee.add(e),n.added.push(e)),xe(n,Ee)}(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function _e(e){const t=ye();e?Ee.delete(e)&&t.removed.push(e):Me(Ee,t),xe(t,Ee)}function be(){return Array.from(Ee)}function Te(e){return be().filter((t=>{var n;const o=pt(t);return(null==o||null===(n=o.metadata)||void 0===n?void 0:n.toolName)===e}))}function De(e){return Ee.has(e)}function Se(){return Ee.size}function ye(){return Object.freeze({added:[],removed:[],selection:[]})}function Me(e,t){e.forEach((n=>{e.delete(n)&&t.removed.push(n)}))}function xe(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.selection.push(t)})),(0,oe.triggerEvent)(oe.eventTarget,se.ANNOTATION_SELECTION_CHANGE,e))}const Oe=new Set;function Pe(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=Ne();e&&(t?ke(e,Oe,n):function(e,t,n){t.has(e)||(t.add(e),De(e)&&_e(e),n.lastHidden.push(e))}(e,Oe,n)),Ue(n)}function Ae(){const e=Ne();Oe.forEach((t=>{ke(t,Oe,e)})),Ue(e)}function Re(e){if(pt(e))return!Oe.has(e)}function Le(e){if(e){var t;const n=null===(t=e.isVisible)||void 0===t||t;(function(e){const t=Object.getOwnPropertyDescriptor(e,"isVisible");return t?t.configurable&&(t.set!==Ve||t.get!==We):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isVisible",{configurable:!1,enumerable:!0,set:Ve,get:We}),Pe(e.annotationUID,n)}}function Ne(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function ke(e,t,n){t.delete(e)&&n.lastVisible.push(e)}function Ue(e){(e.lastHidden.length>0||e.lastVisible.length>0)&&(Oe.forEach((t=>{e.hidden.push(t)})),(0,oe.triggerEvent)(oe.eventTarget,se.ANNOTATION_VISIBILITY_CHANGE,e))}function Ve(e){Pe(this.annotationUID,e)}function We(){return Re(this.annotationUID)}class He{constructor(e){ae(this,"annotations",void 0),ae(this,"uid",void 0),ae(this,"getGroupKey",(e=>{if("string"==typeof e)return e;const t=e,n=(0,oe.getEnabledElement)(t);if(!n)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return n.FrameOfReferenceUID})),ae(this,"_imageVolumeModifiedHandler",(e=>{const t=e.detail,{FrameOfReferenceUID:n}=t,o=this.annotations[n];o&&Object.keys(o).forEach((e=>{o[e].forEach((e=>{void 0!==e.invalidated&&(e.invalidated=!0)}))}))})),ae(this,"getFramesOfReference",(()=>Object.keys(this.annotations))),ae(this,"getAnnotations",((e,t)=>{const n=this.annotations;return n[e]?t?n[e][t]?n[e][t]:[]:n[e]:[]})),ae(this,"getAnnotation",(e=>{const t=this.annotations;for(const n in t){const o=t[n];for(const t in o){const n=o[t];for(const t of n)if(e===t.annotationUID)return t}}})),ae(this,"getNumberOfAnnotations",((e,t)=>{const n=this.getAnnotations(e,t);if(!n.length)return 0;if(t)return n.length;let o=0;for(const e in n)o+=n[e].length;return o})),ae(this,"addAnnotation",((e,t)=>{const{metadata:n}=e,{FrameOfReferenceUID:o,toolName:i}=n;t=t||o;const a=this.annotations;let r=a[t];r||(a[t]={},r=a[t]);let s=r[i];s||(r[i]=[],s=r[i]),s.push(e),ve(e),Le(e),(e=>{e.data||(e.data={}),e.data.handles||(e.data.handles={}),e.data.handles.textBox||(e.data.handles.textBox={})})(e),(e=>{e.data||(e.data={}),e.data.cachedStats||(e.data.cachedStats={})})(e)})),ae(this,"removeAnnotation",(e=>{const{annotations:t}=this;for(const n in t){const o=t[n];for(const t in o){const n=o[t],i=n.findIndex((t=>t.annotationUID===e));-1!==i&&(n.splice(i,1),0===n.length&&delete o[t])}0===Object.keys(o).length&&delete t[n]}})),ae(this,"removeAnnotations",((e,t)=>{const n=this.annotations,o=[];if(!n[e])return o;if(t){const i=n[e][t];for(const e of i)this.removeAnnotation(e.annotationUID),o.push(e)}else for(const t in n[e]){const i=n[e][t];for(const e of i)this.removeAnnotation(e.annotationUID),o.push(e)}return o})),ae(this,"saveAnnotations",((e,t)=>{const n=this.annotations;if(e&&t){const o=n[e];if(!o)return;const i=o[t];return structuredClone(i)}if(e){const t=n[e];return structuredClone(t)}return structuredClone(n)})),ae(this,"restoreAnnotations",((e,t,n)=>{const o=this.annotations;if(t&&n){let i=o[t];i||(o[t]={},i=o[t]),i[n]=e}else t?o[t]=e:this.annotations=structuredClone(e)})),ae(this,"getAllAnnotations",(()=>Object.values(this.annotations).map((e=>Object.values(e))).flat(2))),ae(this,"getNumberOfAllAnnotations",(()=>{let e=0;const t=this.annotations;for(const n in t){const o=t[n];for(const t in o)e+=o[t].length}return e})),ae(this,"removeAllAnnotations",(()=>{const e=[];for(const t of this.getAllAnnotations())this.removeAnnotation(t.annotationUID),e.push(t);return e})),e||(e=oe.utilities.uuidv4()),this.annotations={},this.uid=e,oe.eventTarget.addEventListener(oe.Enums.Events.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}}const Be=new He("DEFAULT"),Fe=He;var Ge=function(e){return e.Interaction="Interaction",e.HandlesUpdated="HandlesUpdated",e.StatsUpdated="StatsUpdated",e.InitialSetup="InitialSetup",e.Completed="Completed",e.InterpolationUpdated="InterpolationUpdated",e}(Ge||{});const qe=Ge;let ze={};const je={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:ze,enabledElements:[],handleRadius:6};let Ke={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:ze,enabledElements:[],handleRadius:6};var Ye=function(e){return e.Active="Active",e.Passive="Passive",e.Enabled="Enabled",e.Disabled="Disabled",e}(Ye||{});const Xe=Ye,Je=[Xe.Active,Xe.Passive,Xe.Enabled],Ze=function(e){return Ke.toolGroups.filter((t=>{let{toolOptions:n}=t;const o=Object.keys(n);for(let t=0;t<o.length;t++)if(e===o[t]&&n[e]&&Je.includes(n[e].mode))return!0;return!1}))};function $e(e){const t=se.ANNOTATION_REMOVED;(0,oe.triggerEvent)(oe.eventTarget,t,e)}function Qe(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:qe.HandlesUpdated;const o=(0,oe.getEnabledElement)(t),{viewportId:i,renderingEngineId:a}=o,r=se.ANNOTATION_MODIFIED,s={annotation:e,viewportId:i,renderingEngineId:a,changeType:n};(0,oe.triggerEvent)(oe.eventTarget,r,s)}function et(e){nt({annotation:e})}function tt(e){nt({annotation:e,contourHoleProcessingEnabled:arguments.length>1&&void 0!==arguments[1]&&arguments[1]})}function nt(e){const t=se.ANNOTATION_COMPLETED;(0,oe.triggerEvent)(oe.eventTarget,t,e)}let ot=Be;function it(){return ot}function at(e){ot=e}function rt(){ot=Be}function st(e,t){const n=it(),o=n.getGroupKey(t);return n.getAnnotations(o,e)}function lt(){return it().getAllAnnotations()}function dt(e){const{annotationUID:t,parentAnnotationUID:n}=e;if(!n)return;const o=pt(n),i=o.childAnnotationUIDs.indexOf(t);o.childAnnotationUIDs.splice(i,1),e.parentAnnotationUID=void 0}function ct(e,t){const{annotationUID:n}=e,{annotationUID:o}=t;dt(t),e.childAnnotationUIDs||(e.childAnnotationUIDs=[]),e.childAnnotationUIDs.includes(o)||(e.childAnnotationUIDs.push(o),t.parentAnnotationUID=n)}function ht(e){return e.parentAnnotationUID?pt(e.parentAnnotationUID):void 0}function ut(e){var t,n;return null!==(t=null===(n=e.childAnnotationUIDs)||void 0===n?void 0:n.map((e=>pt(e))))&&void 0!==t?t:[]}function gt(e,t){e.annotationUID||(e.annotationUID=oe.utilities.uuidv4());const n=it();if(t instanceof HTMLDivElement){const o=n.getGroupKey(t);n.addAnnotation(e,o),function(e,t){const n=(0,oe.getEnabledElement)(t),{renderingEngine:o,viewportId:i}=n,a=se.ANNOTATION_ADDED,r={annotation:e,viewportId:i,renderingEngineId:o.id};(0,oe.triggerEvent)(oe.eventTarget,a,r)}(e,t)}else n.addAnnotation(e),function(e){const{toolName:t}=e.metadata,n=Ze(t);if(!n.length)return;const o=[];n.forEach((t=>{t.viewportsInfo.forEach((t=>{const{renderingEngineId:n,viewportId:i}=t,{FrameOfReferenceUID:a}=(0,oe.getEnabledElementByIds)(i,n);e.metadata.FrameOfReferenceUID===a&&o.push(t)}))}));const i=se.ANNOTATION_ADDED,a={annotation:e};o.length?o.forEach((e=>{let{renderingEngineId:t,viewportId:n}=e;a.viewportId=n,a.renderingEngineId=t,(0,oe.triggerEvent)(oe.eventTarget,i,a)})):(0,oe.triggerEvent)(oe.eventTarget,i,a)}(e);return e.annotationUID}function vt(e,t){const n=it(),o=n.getGroupKey(t);return n.getNumberOfAnnotations(o,e)}function mt(e){var t;if(!e)return;const n=it(),o=n.getAnnotation(e);o&&(null===(t=o.childAnnotationUIDs)||void 0===t||t.forEach((e=>mt(e))),n.removeAnnotation(e),$e({annotation:o,annotationManagerUID:n.uid}))}function pt(e){return it().getAnnotation(e)}function ft(){const e=it(),t=e.removeAllAnnotations();for(const n of t)$e({annotation:n,annotationManagerUID:e.uid})}function wt(e,t){const n=it(),o=n.getGroupKey(t),i=n.removeAnnotations(o,e);for(const e of i)$e({annotation:e,annotationManagerUID:n.uid})}function It(e){let t=e;for(;t;)t.invalidated=!0,t=t.parentAnnotationUID?pt(t.parentAnnotationUID):void 0}var Et=function(e){return e.Labelmap="LABELMAP",e.Contour="CONTOUR",e.Surface="SURFACE",e}(Et||{});const Ct=Et,_t={renderOutline:!0,outlineWidthAutoGenerated:3,outlineWidthActive:1,outlineWidthInactive:1,outlineOpacity:1,outlineOpacityInactive:.85,outlineDashActive:void 0,outlineDashInactive:void 0,outlineDashAutoGenerated:"5,3",activeSegmentOutlineWidthDelta:0,renderFill:!0,fillAlpha:.5,fillAlphaInactive:.3,fillAlphaAutoGenerated:.3},bt={renderOutline:!0,outlineWidthActive:3,outlineWidthInactive:2,activeSegmentOutlineWidthDelta:0,renderFill:!0,renderFillInactive:!0,fillAlpha:.7,fillAlphaInactive:.65,outlineOpacity:1,outlineOpacityInactive:.85},Tt=function(){return bt},Dt={renderFill:!0,fillAlpha:1};var St=E(610),yt=E.n(St),Mt=E(474),xt=E.n(Mt),Ot=E(70),Pt=E.n(Ot),At=E(396),Rt=E.n(At),Lt=function(e){return e.POLYSEG_CONTOUR_TO_LABELMAP="polySeg/convertContourToVolumeLabelmap",e.POLYSEG_SURFACE_TO_LABELMAP="polySeg/convertSurfacesToVolumeLabelmap",e.POLYSEG_CONTOUR_TO_SURFACE="polySeg/convertContourToSurface",e.POLYSEG_LABELMAP_TO_SURFACE="polySeg/convertLabelmapToSurface",e.SURFACE_CLIPPING="surfaceClipping",e}(Lt||{});const Nt=Lt;function kt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return parseFloat(e[0]).toFixed(t)+","+parseFloat(e[1]).toFixed(t)+","+parseFloat(e[2]).toFixed(t)+","}let Ut=!1;function Vt(){Ut||(Ut=!0,(0,oe.getWebWorkerManager)().registerWorker("polySeg",(()=>new Worker(new URL(E.p+E.u(985),E.b),{name:"polySeg",type:void 0})),{maxWorkerInstances:1,autoTerminateOnIdle:{enabled:!0,idleTimeThreshold:2e3}}))}const Wt=(0,oe.getWebWorkerManager)(),Ht=new Map,Bt=new Map,Ft=(e,t)=>{(0,oe.triggerEvent)(e,oe.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:Nt.SURFACE_CLIPPING})};async function Gt(e,t,n){var o;Vt();const i=null===(o=t.getSlicesClippingPlanes)||void 0===o?void 0:o.call(t);if(!i)return;const a=t.getSliceIndex();i.sort(((e,t)=>Math.abs(e.sliceIndex-a)-Math.abs(t.sliceIndex-a))),Ft(oe.eventTarget,0),await async function(e){const t=e.filter((e=>!Bt.has(e.id)));if(!t.length)return;(await Wt.executeTask("polySeg","getSurfacesAABBs",{surfacesInfo:t},{callbacks:[e=>{let{progress:t}=e;Ft(oe.eventTarget,t)}]})).forEach(((e,t)=>{Bt.set(t,e)}))}(e);const r=new Map;e.forEach((e=>{r.set(e.id,Bt.get(e.id))}));const s=t.getCamera();return await Wt.executeTask("polySeg","cutSurfacesIntoPlanes",{surfacesInfo:e,planesInfo:i,surfacesAABB:r},{callbacks:[e=>{let{progress:t}=e;Ft(oe.eventTarget,t)},e=>{let{sliceIndex:o,polyDataResults:i}=e;i.forEach(((e,i)=>{const a="".concat(n,"_").concat(i),r=function(e,t,n){return"".concat(e.id,"-").concat(kt(t),"-").concat(n)}(t,s.viewPlaneNormal,o);!function(e,t,n){const{points:o,lines:i,numberOfCells:a}=n;let r=Ht.get(e);r||(r=new Map,Ht.set(e,r)),r.set(t,{points:o,lines:i,numberOfCells:a})}(a,r,e)}))}]}).catch((e=>{console.error(e)})),Ft(oe.eventTarget,1),Ht}function qt(e){if("volumeId"in e){if(!oe.cache.getVolume(e.volumeId))throw new Error("volumeId of ".concat(e.volumeId," not found in cache, you should load and cache volume before adding segmentation"))}else{if(!("imageIds"in e))throw new Error("The segmentationInput.representationData is undefined, please provide a valid representationData");if(!e.imageIds)throw new Error("The segmentationInput.representationData.imageIds is undefined, please provide a valid representationData.imageIds for stack data")}}function zt(e){qt(e)}const jt=new Map([[Ct.Labelmap,new Set([Ct.Surface,Ct.Contour])],[Ct.Contour,new Set([Ct.Labelmap,Ct.Surface])],[Ct.Surface,new Set([Ct.Labelmap])]]);function Kt(e){const t=Vu(e),{type:n,polySeg:o}=t;if(!o||!o.enabled)return!1;const{representationData:i}=Lu(t.segmentationId),a=function(e){const t=[];return Object.keys(e).forEach((n=>{const o=e[n];let i;if(n===Ct.Labelmap&&(i=zt),i)try{i(o),t.push(n)}catch(e){console.warn("Validation failed for labelmap of type ".concat(n))}else t.push(n)})),t}(i);return a.some((e=>async function(e,t){var n;return(null===(n=jt.get(e))||void 0===n?void 0:n.has(t))||!1}(e,n)))}const Yt=function(e){let{segmentationId:t,type:n,data:o}=e;const i=Lu(t);switch(i.representationData[n]&&console.warn("Representation data of type ".concat(n," already exists for segmentation ").concat(t,", overwriting it.")),n){case Ct.Labelmap:case Ct.Contour:case Ct.Surface:o&&(i.representationData[n]=o);break;default:throw new Error("Invalid representation type ".concat(n))}};function Xt(e,t){const{imageIds:n}=e,{volumeId:o}=e;if(o&&!n)return!0;if(n&&!o)return!1;if(o&&n&&!t)throw new Error("isVolumeSegmentation: viewport is required when both volumeId and imageIds are provided");return t instanceof oe.VolumeViewport}const Jt=new Map,Zt=e=>{const t=Jt.get(e);t&&(t.isDirty=!0)};function $t(e){const t=function(e){const t=Jt.get(e);return t&&!t.isDirty?t.indices:null}(e);if(t)return t;const n=Lu(e);if(!n)throw new Error("No segmentation found for segmentationId ".concat(e));let o;switch(n.type){case Ct.Labelmap:o=function(e,t){const n=e.representationData[Ct.Labelmap],o=new Set;return Xt(n)?function(e,t){oe.cache.getVolume(t).getScalarData().forEach((t=>{0!==t&&e.add(t)}))}(o,t):function(e,t){t.forEach((t=>{oe.cache.getImage(t).getPixelData().forEach((t=>{0!==t&&e.add(t)}))}))}(o,n.imageIds),Array.from(o).map(Number).sort(((e,t)=>e-t))}(n,e);break;case Ct.Contour:o=function(e){const{annotationUIDsMap:t,geometryIds:n}=e.representationData.CONTOUR||{};if(!n)throw new Error("No geometryIds found for segmentationId ".concat(e.segmentationId));const o=new Set([...t.keys()]);return n.forEach((e=>{const t=oe.cache.getGeometry(e);o.add(t.data.getSegmentIndex())})),Array.from(o).sort(((e,t)=>e-t))}(n);break;case Ct.Surface:o=function(e){var t,n;const o=null!==(t=null===(n=e.representationData.SURFACE)||void 0===n?void 0:n.geometryIds)&&void 0!==t?t:[];return Array.from(o.keys()).map(Number).sort(((e,t)=>e-t))}(n);break;default:throw new Error("Unsupported segmentation type: ".concat(n.type))}return Jt.set(e,{indices:o,isDirty:!1}),o}function Qt(e){const t={segmentationId:e};(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_REMOVED,t)}function en(e){const t={segmentationRepresentationUID:e};(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_REPRESENTATION_REMOVED,t)}function tn(e){const t={segmentationRepresentationUID:e};(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_REPRESENTATION_MODIFIED,t)}function nn(e){let t;t=e?[e]:Nu().map((e=>{let{segmentationId:t}=e;return t})),t.forEach((e=>{const t={segmentationId:e};(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_MODIFIED,t)}))}function on(e,t){const n={segmentationId:e,modifiedSlicesToUse:t};Zt(e),(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_DATA_MODIFIED,n)}const an=function(e){const t=typeof e;return null!==e&&("object"===t||"function"===t)},rn=function(e,t,n){let o,i,a,r,s,l,d=0,c=!1,h=!1,u=!0;const g=!t&&0!==t&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function v(t){const n=o,a=i;return o=i=void 0,d=t,r=e.apply(a,n),r}function m(e,t){return g?window.requestAnimationFrame(e):setTimeout(e,t)}function p(e){const n=e-l;return void 0===l||n>=t||n<0||h&&e-d>=a}function f(){const e=Date.now();if(p(e))return w(e);s=m(f,function(e){const n=e-d,o=t-(e-l);return h?Math.min(o,a-n):o}(e))}function w(e){return s=void 0,u&&o?v(e):(o=i=void 0,r)}function I(){const e=Date.now(),n=p(e);for(var a=arguments.length,u=new Array(a),g=0;g<a;g++)u[g]=arguments[g];if(o=u,i=this,l=e,n){if(void 0===s)return function(e){return d=e,s=m(f,t),c?v(e):r}(l);if(h)return s=m(f,t),v(l)}return void 0===s&&(s=m(f,t)),r}return t=Number(t)||0,an(n)&&(c=Boolean(n.leading),h="maxWait"in n,a=h?Math.max(Number(n.maxWait)||0,t):a,u="trailing"in n?Boolean(n.trailing):u),I.cancel=function(){void 0!==s&&function(e){if(g)return window.cancelAnimationFrame(e);clearTimeout(e)}(s),d=0,o=l=i=s=void 0},I.flush=function(){return void 0===s?r:w(Date.now())},I.pending=function(){return void 0!==s},I},sn=new Map;async function ln(e,t,n,o){Vt();const i=await n();Yt({segmentationId:e,type:t,data:i}),sn.has(e)||sn.set(e,[]);const a=sn.get(e);return a.includes(t)||a.push(t),function(e){e._debouncedUpdateFunction=t=>{dn(t,e)},oe.eventTarget.removeEventListener(se.SEGMENTATION_DATA_MODIFIED,e._debouncedUpdateFunction),oe.eventTarget.addEventListener(se.SEGMENTATION_DATA_MODIFIED,e._debouncedUpdateFunction)}(o),nn(e),i}const dn=rn(((e,t)=>{const n=e.detail.segmentationId,o=sn.get(n);o&&o.length&&(t(n),o.length&&nn(n))}),300),cn=(0,oe.getWebWorkerManager)(),hn=(e,t)=>{(0,oe.triggerEvent)(e,oe.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:Nt.POLYSEG_CONTOUR_TO_SURFACE})};function un(e,t){if(!e)throw new Error("addColorLUT: colorLUT is required");oe.utilities.isEqual(e[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),e.unshift([0,0,0,0])),tg(e,t)}function gn(e,t){const n=Vu(e);if(!n)throw new Error("setColorLUT: could not find segmentation representation with UID ".concat(e));if(!Qu(t))throw new Error("setColorLUT: could not find colorLUT with index ".concat(t));n.colorLUTIndex=t,tn(e)}function vn(e,t){const n=Vu(e);if(!n)throw new Error("segmentation representation with UID ".concat(e," does not exist"));const{colorLUTIndex:o}=n,i=Qu(o);let a=i[t];if(!a){if("number"!=typeof t)throw new Error("Can't create colour for LUT index ".concat(t));a=i[t]=[0,0,0,0]}return a}function mn(e,t,n){const o=vn(e,t);for(let e=0;e<n.length;e++)o[e]=n[e];tn(e)}async function pn(e,t){let n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};o.segmentationRepresentationUID&&(n=Vu(o.segmentationRepresentationUID));const i=Lu(e),a=new Map,r=Object.keys(t).map((async e=>{const o=t[e],r=o.segmentIndex,s=n;if(vn(n.segmentationRepresentationUID,r).slice(0,3),!s)throw new Error("No color found for segment index, unable to create surface");const l={id:"segmentation_".concat(i.segmentationId,"_surface_").concat(r),color:s,frameOfReferenceUID:"test-frameOfReferenceUID",data:{points:o.data.points,polys:o.data.polys}},d=l.id;return a.set(r,d),oe.geometryLoader.createAndCacheGeometry(d,{type:oe.Enums.GeometryType.SURFACE,geometryData:l})}));return await Promise.all(r),{geometryIds:a}}const fn=(0,oe.getWebWorkerManager)(),wn=(e,t)=>{(0,oe.triggerEvent)(e,oe.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:Nt.POLYSEG_LABELMAP_TO_SURFACE})};async function In(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=Lu(e);if(null==o||null===(t=o.representationData)||void 0===t||!t.LABELMAP)return void console.warn("Only support surface update from labelmaps");const i=Xt(o.representationData.LABELMAP),a=o.representationData.LABELMAP,r=n.segmentIndices||$t(e),s=r.map((e=>{const t=async function(e,t){let n;if(arguments.length>2&&void 0!==arguments[2]&&!arguments[2]){const{imageIds:t}=e;({volumeId:n}=await Mu({imageIds:t}))}else n=e.volumeId;const o=oe.cache.getVolume(n),i=o.getScalarData(),{dimensions:a,spacing:r,origin:s,direction:l}=o;wn(oe.eventTarget,0);const d=await fn.executeTask("polySeg","convertLabelmapToSurface",{scalarData:i,dimensions:a,spacing:r,origin:s,direction:l,segmentIndex:t},{callbacks:[e=>{wn(oe.eventTarget,e)}]});return wn(oe.eventTarget,1),d}(a,e,i);return t})),l=await Promise.allSettled(s),d=l.filter((e=>"rejected"===e.status));if(d.length>0)throw console.error(d),new Error("Failed to convert labelmap to surface");return l.map(((e,t)=>{if("fulfilled"===e.status)return{segmentIndex:r[t],data:e.value}})).filter(Boolean)}function En(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ln(e,Ct.Surface,(()=>async function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=null!==(t=n.segmentIndices)&&void 0!==t&&t.length?n.segmentIndices:$t(e);let i;const a=Lu(e),r=a.representationData;try{r.CONTOUR?i=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=Lu(e).representationData.CONTOUR,o=(t.segmentIndices||$t(e)).map((async e=>{const t=await async function(e,t){const{annotationUIDsMap:n}=e,o=[],i=[],a=n.get(t);for(const e of a){const t=pt(e),{polyline:n}=t.data.contour;i.push(n.length),n.forEach((e=>o.push(...e)))}hn(oe.eventTarget,0);const r=await cn.executeTask("polySeg","convertContourToSurface",{polylines:o,numPointsArray:i},{callbacks:[e=>{hn(oe.eventTarget,e)}]});return hn(oe.eventTarget,1),r}(n,e);return{segmentIndex:e,data:t}}));return await Promise.all(o)}(e,{segmentIndices:o,...n}):r.LABELMAP&&(i=await In(a.segmentationId,{segmentIndices:o,...n}))}catch(e){throw console.error(e),e}if(!i)throw new Error("Not enough data to convert to surface, currently only support converting volume labelmap to surface if available");return await pn(e,i,n)}(e,t)),(()=>async function(e){const t=await In(e);if(!t)return;const n=Lu(e),o=$t(e);if(!o.length)return n.representationData.SURFACE.geometryIds.forEach((e=>{const t=oe.cache.getGeometry(e).data;t.setPoints([]),t.setPolys([])})),void nn(e);const i=t.map((t=>{let{data:i,segmentIndex:a}=t;const r="segmentation_".concat(e,"_surface_").concat(a),s=oe.cache.getGeometry(r);if(!s)return qu(e).map((t=>zu(t).map((t=>{if(t.type===Ct.Surface)return n.representationData.SURFACE.geometryIds.set(a,r),pn(e,[{segmentIndex:a,data:i}],{segmentationRepresentationUID:t.segmentationRepresentationUID})}))));if(o.includes(a)){const e=s.data;e.setPoints(i.points),e.setPolys(i.polys)}else{const e=s.data;e.setPoints([]),e.setPolys([])}}));await Promise.all(i),nn(e)}(e)))}const Cn={render:async function(e,t){const{colorLUTIndex:n,segmentationId:o,segmentationRepresentationUID:i}=t,a=Lu(o);if(!a)return;if(!(e instanceof oe.VolumeViewport3D))throw new Error("Surface rendering is only supported in 3D viewports, if you need to visualize the surface cuts in 2D viewports, you can use the Contour representation, see polySeg converters");let r=a.representationData[Ct.Surface];if(!r&&Kt(i)&&(r=await En(o,{segmentationRepresentationUID:i}),!r))throw new Error("No Surface data found for segmentationId ".concat(o,"."));const{geometryIds:s}=r;null!=s&&s.size||console.warn("No Surfaces found for segmentationId ".concat(o,". Skipping render."));const l=Qu(n),d=[];s.forEach(((t,n)=>{const o=oe.cache.getGeometry(t);if(null==o||!o.data)return void console.warn("No Surfaces found for geometryId ".concat(t,". Skipping render."));const a=o.data,r=l[n];a.setColor(r.slice(0,3)),function(e,t,n){var o;const i=function(e,t){return"".concat(e,"_").concat(t)}(n,t.id),a=(0,oe.getEnabledElement)(e),{viewport:r}=a,s=null===(o=r.getActor(i))||void 0===o?void 0:o.actor;if(s){const e=s.getMapper(),n=e.getInputData(),o=t.getPoints(),i=t.getPolys(),a=n.getPoints().getData(),l=n.getPolys().getData();if(o.length===a.length&&i.length===l.length)return;const d=Pt().newInstance();d.getPoints().setData(o,3);const c=Rt().newInstance({values:Float32Array.from(i)});return d.setPolys(c),e.setInputData(d),e.modified(),void setTimeout((()=>{r.getRenderer().resetCameraClippingRange()}),0)}const l=t.getPoints(),d=t.getPolys(),c=t.getColor(),h=Pt().newInstance();h.getPoints().setData(l,3);const u=Rt().newInstance({values:Float32Array.from(d)});h.setPolys(u);const g=yt().newInstance({});g.setInputData(h);const v=xt().newInstance();v.setMapper(g),v.getProperty().setColor(c[0]/255,c[1]/255,c[2]/255),v.getProperty().setLineWidth(2),r.addActor({actor:v,uid:i,clippingFilter:void 0}),r.resetCamera(),r.render(),setTimeout((()=>{r.getRenderer().resetCameraClippingRange()}),0)}(e.element,a,i),d.push(a)})),e.render()},removeRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=(0,oe.getEnabledElementByViewportId)(e);if(!o)return;const{viewport:i}=o;(function(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,i=o.getActors().map((e=>{let{uid:n}=e;return n.startsWith(t)?n:void 0})).filter(Boolean);o.removeActors(i)})(i.element,t),Zu(t),n&&i.render()}},_n=new Map;function bn(e){return _n.get(e)}function Tn(e,t){_n.set(e,t)}function Dn(e,t){const n=new Map;for(const[o,i]of e){const e=o.split("_")[1];for(const[o,a]of i){if(!a)continue;const o=Number(e)||(null==t?void 0:t.get(e));o&&(n.has(o)||n.set(o,[]),n.get(o).push(a))}}return n}var Sn=E(976);const{CalibrationTypes:yn}=oe.Enums,Mn="px",xn=[1],On=["3,3"],Pn=["4,3"],An={3:"cm",4:"seconds"},Rn="²",Ln=(e,t)=>{const{calibration:n,hasPixelSpacing:o}=e;let i=o?"mm":Mn,a=i+Rn,r=1,s="";if(!n||!n.type&&!n.sequenceOfUltrasoundRegions)return{lengthUnits:i,areaUnits:a,scale:r};if(n.type===yn.UNCALIBRATED)return{units:Mn,areaUnits:Mn+Rn,scale:r};if(n.sequenceOfUltrasoundRegions){var l;let e,o;if(Array.isArray(t)&&2===t.length)[e,o]=t;else if("function"==typeof t){const n=t();e=n[0],o=n[1]}let d=n.sequenceOfUltrasoundRegions.filter((t=>e[0]>=t.regionLocationMinX0&&e[0]<=t.regionLocationMaxX1&&e[1]>=t.regionLocationMinY0&&e[1]<=t.regionLocationMaxY1&&o[0]>=t.regionLocationMinX0&&o[0]<=t.regionLocationMaxX1&&o[1]>=t.regionLocationMinY0&&o[1]<=t.regionLocationMaxY1));if(null===(l=d)||void 0===l||!l.length)return{lengthUnits:i,areaUnits:a,scale:r};if(d=d.filter((e=>xn.includes(e.regionDataType)&&On.includes("".concat(e.physicalUnitsXDirection,",").concat(e.physicalUnitsYDirection)))),!d.length)return{lengthUnits:Mn,areaUnits:Mn+Rn,scale:r};const c=d[0],h=Math.abs(c.physicalDeltaX),u=Math.abs(c.physicalDeltaY);if(!oe.utilities.isEqual(h,u,.001))return{lengthUnits:Mn,areaUnits:Mn+Rn,scale:r};r=1/(10*h),s="US Region",i="mm",a="mm²"}else n.scale&&(r=n.scale);return[yn.ERMF,yn.USER,yn.ERROR,yn.PROJECTION].includes(null==n?void 0:n.type)&&(s=n.type),{lengthUnits:i+(s?" ".concat(s):""),areaUnits:a+(s?" ".concat(s):""),scale:r}},Nn=(e,t)=>{const[n]=t,{calibration:o}=e;let i=["raw"],a=[null],r="";if(!o||!o.type&&!o.sequenceOfUltrasoundRegions)return{units:i,values:a};if(o.sequenceOfUltrasoundRegions){const e=o.sequenceOfUltrasoundRegions.filter((e=>xn.includes(e.regionDataType)&&Pn.includes("".concat(e.physicalUnitsXDirection,",").concat(e.physicalUnitsYDirection))));if(null==e||!e.length)return{units:i,values:a};const t=e.find((e=>n[0]>=e.regionLocationMinX0&&n[0]<=e.regionLocationMaxX1&&n[1]>=e.regionLocationMinY0&&n[1]<=e.regionLocationMaxY1));if(!t)return{units:i,values:a};const{referencePixelX0:s=0,referencePixelY0:l=0}=t,{physicalDeltaX:d,physicalDeltaY:c}=t,h=(n[1]-t.regionLocationMinY0-l)*c;r="US Region",a=[(n[0]-t.regionLocationMinX0-s)*d,h],i=[An[t.physicalUnitsXDirection],An[t.physicalUnitsYDirection]]}return{units:i,values:a,calibrationType:r}},kn=e=>{var t;return(null===(t=e.calibration)||void 0===t?void 0:t.aspect)||1};function Un(e,t){let n=e;const o=(null==t?void 0:t.numDimensions)||2,i=3===o;if(!Array.isArray(e[0])){const t=e,a=t.length/o;n=new Array(t.length/o);for(let e=0,r=a;e<r;e++)n[e]=[t[e*o],t[e*o+1]],i&&n[e].push(t[e*o+2])}let a=1/0,r=1/0,s=-1/0,l=-1/0,d=1/0,c=-1/0;for(let e=0,t=n.length;e<t;e++){const[t,o,h]=n[e];a=a<t?a:t,r=r<o?r:o,s=s>t?s:t,l=l>o?l:o,i&&(d=d<h?d:h,c=c>h?c:h)}return i?{minX:a,maxX:s,minY:r,maxY:l,minZ:d,maxZ:c}:{minX:a,maxX:s,minY:r,maxY:l}}const Vn=function(e,t){var n;t||(t=null===(n=(0,oe.getRenderingEngines)().find((t=>t.getViewports().find((t=>t.id===e)))))||void 0===n?void 0:n.id);const o=Ke.toolGroups.filter((n=>n.viewportsInfo.some((n=>n.renderingEngineId===t&&(!n.viewportId||n.viewportId===e)))));if(o.length){if(o.length>1)throw new Error("Multiple tool groups found for renderingEngineId: ".concat(t," and viewportId: ").concat(e,". You should only\n have one tool group per viewport in a renderingEngine."));return o[0]}};function Wn(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;const o=(0,oe.getEnabledElement)(e);if(!o)throw new Error("getAnnotationNearPoint: enabledElement not found");return Hn(o,t,n)}function Hn(e,t,n){const{renderingEngineId:o,viewportId:i}=e,a=Vn(i,o);if(!a)return null;const{_toolInstances:r}=a;for(const o in r){const i=Bn(r[o],e,t,n);if(i)return i}return null}function Bn(e,t,n,o){var i;const{viewport:a}=t,r=st(e.constructor.toolName,null==a?void 0:a.element),s=null==a||null===(i=a.getCurrentImageId)||void 0===i?void 0:i.call(a);if(null!=r&&r.length){const{element:i}=t.viewport;for(const t of r){var l;const a=null===(l=t.metadata)||void 0===l?void 0:l.referencedImageId;if(!(s&&a&&s!==a||!e.isPointNearTool)&&(e.isPointNearTool(i,t,n,o,"")||e.getHandleNearImagePoint(i,t,n,o)))return t}}return null}const Fn=function(e,t,n){let o=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return an(n)&&(o="leading"in n?Boolean(n.leading):o,i="trailing"in n?Boolean(n.trailing):i),rn(e,t,{leading:o,trailing:i,maxWait:t})};const Gn=function(e,t,n){return Math.min(Math.max(t,e),n)},{calibratedPixelSpacingMetadataProvider:qn}=oe.utilities;function zn(e,t,n){"number"==typeof n&&(n={type:oe.Enums.CalibrationTypes.USER,scale:n}),qn.add(e,n),t.getStackViewports().forEach((t=>{t.getImageIds().includes(e)&&t.calibrateSpacing(e)}))}function jn(e,t){if(Ke.svgNodeCache[e])return Ke.svgNodeCache[e][t]?Ke.svgNodeCache[e][t].domRef:void 0}function Kn(e,t,n,o){if(!Ke.svgNodeCache[t])return null;Ke.svgNodeCache[t][o]={touched:!0,domRef:n},e.appendChild(n)}function Yn(e,t){Ke.svgNodeCache[e]&&Ke.svgNodeCache[e][t]&&(Ke.svgNodeCache[e][t].touched=!0)}function Xn(e,t){Ke.svgNodeCache[t]&&Object.keys(Ke.svgNodeCache[t]).forEach((n=>{const o=Ke.svgNodeCache[t][n];!o.touched&&o.domRef&&(e.removeChild(o.domRef),delete Ke.svgNodeCache[t][n])}))}const Jn=function(e,t){const n=function(e){const t=(0,oe.getEnabledElement)(e),{viewportId:n,renderingEngineId:o}=t,i="".concat(n,":").concat(o),a=function(e){const t=".".concat("viewport-element");return e.querySelector(t).querySelector(":scope > .svg-layer")}(e);return Object.keys(Ke.svgNodeCache[i]).forEach((e=>{Ke.svgNodeCache[i][e].touched=!1})),{svgLayerElement:a,svgNodeCacheForCanvas:Ke.svgNodeCache,getSvgNode:jn.bind(this,i),appendNode:Kn.bind(this,a,i),setNodeTouched:Yn.bind(this,i),clearUntouched:Xn.bind(this,a,i)}}(e);t(n),n.clearUntouched()};function Zn(e,t){const n=(0,oe.getEnabledElement)(e),{renderingEngineId:o,viewportId:i}=n,a=Vn(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const n=s[e],o=a.toolOptions[n];if(o&&t.includes(o.mode)){const e=a.getToolInstance(n);r.push(e)}}return r}const{Active:$n,Passive:Qn,Enabled:eo}=Xe,to=new class{constructor(){ae(this,"hasBeenDestroyed",void 0),ae(this,"_needsRender",new Set),ae(this,"_animationFrameSet",!1),ae(this,"_animationFrameHandle",null),ae(this,"_viewportElements",void 0),ae(this,"_renderFlaggedViewports",(()=>{this._throwIfDestroyed();const e=Array.from(this._viewportElements.values());for(let t=0;t<e.length;t++){const n=e[t];if(this._needsRender.has(n)&&(this._triggerRender(n),this._needsRender.delete(n),0===this._needsRender.size))break}this._animationFrameSet=!1,this._animationFrameHandle=null,this._render()})),this._viewportElements=new Map}addViewportElement(e,t){this._viewportElements.set(e,t)}removeViewportElement(e,t){this._viewportElements.delete(e),this._needsRender.delete(t),this._reset()}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setAllViewportsToBeRenderedNextFrame(){[...this._viewportElements.values()].forEach((e=>{this._needsRender.add(e)})),this._renderFlaggedViewports()}_setViewportsToBeRenderedNextFrame(e){const t=[...this._viewportElements.values()];e.forEach((e=>{-1!==t.indexOf(e)&&this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_triggerRender(e){const t=(0,oe.getEnabledElement)(e);if(!t)return;if(!(0,oe.getRenderingEngine)(t.renderingEngineId))return void console.warn("rendering Engine has been destroyed");const n=Zn(e,[$n,Qn,eo]),{renderingEngineId:o,viewportId:i}=t,a={element:e,renderingEngineId:o,viewportId:i};Jn(e,(o=>{let i=!1;n.forEach((e=>{if(e.renderAnnotation){const n=e.renderAnnotation(t,o);i=i||n}})),i&&(0,oe.triggerEvent)(e,se.ANNOTATION_RENDERED,{...a})}))}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}},no=function(e){to.renderViewport(e)};function oo(e){e.length&&e.forEach((e=>{const t=(0,oe.getEnabledElementByViewportId)(e);if(!t)return void console.warn("Viewport not available for ".concat(e));const{viewport:n}=t;if(!n)return void console.warn("Viewport not available for ".concat(e));const o=n.element;no(o)}))}const io=oo,ao=function(e){return Ke.toolGroups.find((t=>t.id===e))},ro=function(e){e.forEach((e=>{const t=ao(e);t?t.getViewportsInfo().forEach((e=>{const{renderingEngineId:t,viewportId:n}=e,o=(0,oe.getRenderingEngine)(t);if(!o)return void console.warn("RenderingEngine not available for ".concat(t));const i=o.getViewport(n);no(i.element)})):console.warn("ToolGroup not available for ".concat(e))}))};function so(e,t){if(!(0,oe.getEnabledElement)(e.element))throw new Error("Scroll::Viewport is not enabled (it might be disabled)");if(e instanceof oe.StackViewport&&0===e.getImageIds().length)throw new Error("Scroll::Stack Viewport has no images");const{type:n}=e,{volumeId:o,delta:i,scrollSlabs:a}=t;if(e instanceof oe.StackViewport)e.scroll(i,t.debounceLoading,t.loop);else if(e instanceof oe.VolumeViewport)!function(e,t,n){const o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],{numScrollSteps:i,currentStepIndex:a,sliceRangeInfo:r}=oe.utilities.getVolumeViewportScrollInfo(e,t,o);if(!r)return;const{sliceRange:s,spacingInNormalDirection:l,camera:d}=r,{focalPoint:c,viewPlaneNormal:h,position:u}=d,{newFocalPoint:g,newPosition:v}=oe.utilities.snapFocalPointToSlice(c,u,s,h,l,n);e.setCamera({focalPoint:g,position:v}),e.render();const m=a+n,p={volumeId:t,viewport:e,delta:n,desiredStepIndex:m,currentStepIndex:a,numScrollSteps:i,currentImageId:e.getCurrentImageId()};(m>i||m<0)&&e.getCurrentImageId()?oe.utilities.triggerEvent(oe.eventTarget,oe.EVENTS.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,p):oe.utilities.triggerEvent(oe.eventTarget,oe.EVENTS.VOLUME_VIEWPORT_SCROLL,p)}(e,o,i,a);else{if(!(e instanceof oe.VideoViewport))throw new Error("Not implemented for Viewport Type: ".concat(n));e.scroll(i)}}const lo=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{imageIndex:n,debounceLoading:o,volumeId:i}=t,a=(0,oe.getEnabledElement)(e);if(!a)throw new Error("Element has been disabled");const{viewport:r}=a,{imageIndex:s,numberOfSlices:l}=function(e,t){if(e instanceof oe.StackViewport)return{numberOfSlices:e.getImageIds().length,imageIndex:t?e.getTargetImageIdIndex():e.getCurrentImageIdIndex()};if(e instanceof oe.VolumeViewport)return oe.utilities.getImageSliceDataForVolumeViewport(e);throw new Error("Unsupported viewport type")}(r,o),d=function(e,t){return Gn(t,0,e-1)}(l,n);so(r,{delta:d-s,debounceLoading:o,volumeId:i})};function co(e,t,n,o){let i,a,r,s,l,d,c;const{numComps:h}=e;c=e.getScalarData?e.getScalarData():e.getPointData().getScalars().getData();const u=e.getDimensions();o?[[i,a],[r,s],[l,d]]=o:(i=0,a=u[0],r=0,s=u[1],l=0,d=u[2]);const g=Sn.vec3.fromValues(i,r,l),v=e.getDirection(),m=v.slice(0,3),p=v.slice(3,6),f=v.slice(6,9),w=e.getSpacing(),[I,E,C]=w,_=e.indexToWorld(g),b=Sn.vec3.fromValues(m[0]*I,m[1]*I,m[2]*I),T=Sn.vec3.fromValues(p[0]*E,p[1]*E,p[2]*E),D=Sn.vec3.fromValues(f[0]*C,f[1]*C,f[2]*C),S=h||c.length/u[2]/u[1]/u[0],y=u[0]*S,M=u[1]*y,x=[],O=Sn.vec3.clone(_);for(let e=l;e<=d;e++){const o=Sn.vec3.clone(O);for(let o=r;o<=s;o++){const r=Sn.vec3.clone(O);for(let r=i;r<=a;r++){const i=[r,o,e];if(t(O,i)){const t=e*M+o*y+r*S;let a;a=S>2?[c[t],c[t+1],c[t+2]]:c[t],x.push({value:a,index:t,pointIJK:i,pointLPS:O.slice()}),n&&n({value:a,index:t,pointIJK:i,pointLPS:O})}Sn.vec3.add(O,O,b)}Sn.vec3.copy(O,r),Sn.vec3.add(O,O,T)}Sn.vec3.copy(O,o),Sn.vec3.add(O,O,D)}return x}const{EPSILON:ho}=oe.CONSTANTS;function uo(e,t){var n;let o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=1/0,a=o?-1/0:0,r=1/0,s=o?-1/0:0,l=1/0,d=o?-1/0:0;const c=3===(null===(n=e[0])||void 0===n?void 0:n.length);for(let t=0;t<e.length;t++){const n=e[t];var h,u;i=Math.min(n[0],i),a=Math.max(n[0],a),r=Math.min(n[1],r),s=Math.max(n[1],s),c&&(l=Math.min(null!==(h=n[2])&&void 0!==h?h:l,l),d=Math.max(null!==(u=n[2])&&void 0!==u?u:d,d))}return t?(i=Math.max(o?t[0]+ho:0,i),a=Math.min(o?t[0]-ho:t[0]-1,a),r=Math.max(o?t[1]+ho:0,r),s=Math.min(o?t[1]-ho:t[1]-1,s),c&&3===t.length&&(l=Math.max(o?t[2]+ho:0,l),d=Math.min(o?t[2]-ho:t[2]-1,d))):o||(i=Math.max(0,i),a=Math.min(1/0,a),r=Math.max(0,r),s=Math.min(1/0,s),c&&(l=Math.max(0,l),d=Math.min(1/0,d))),c?[[i,a],[r,s],[l,d]]:[[i,a],[r,s],null]}function go(e,t){return uo(e,t,!1)}function vo(e,t){return uo(e,t,!0)}const{transformWorldToIndex:mo}=oe.utilities;function po(e,t,n){const[o,i]=e,a=Sn.vec3.fromValues((o[0]+i[0])/2,(o[1]+i[1])/2,(o[2]+i[2])/2),r=Sn.vec3.distance(o,i)/2;if(!n)throw new Error("viewport is required in order to calculate the sphere bounds");const{boundsIJK:s,topLeftWorld:l,bottomRightWorld:d}=function(e,t,n,o,i){const[a,r]=n,s=e.getDimensions(),l=t.getCamera(),d=Sn.vec3.fromValues(l.viewUp[0],l.viewUp[1],l.viewUp[2]),c=Sn.vec3.fromValues(l.viewPlaneNormal[0],l.viewPlaneNormal[1],l.viewPlaneNormal[2]),h=Sn.vec3.create();Sn.vec3.cross(h,d,c);const u=Sn.vec3.create(),g=Sn.vec3.create();Sn.vec3.scaleAndAdd(u,r,c,i),Sn.vec3.scaleAndAdd(g,a,c,-i),Sn.vec3.scaleAndAdd(u,u,h,-i),Sn.vec3.scaleAndAdd(g,g,h,i);return{boundsIJK:go([mo(e,u),mo(e,g),...n.map((t=>mo(e,t)))],s),topLeftWorld:u,bottomRightWorld:g}}(t,n,e,0,r);return{boundsIJK:s,centerWorld:a,radiusWorld:r,topLeftWorld:l,bottomRightWorld:d}}class fo{static imageIdToFrames(e){const t=e.match(this.frameRangeExtractor);if(!t||!t[2])return null;const n=t[2].split("-").map((e=>Number(e)));return 1===n.length?n[0]:n}static framesToString(e){return Array.isArray(e)?"".concat(e[0],"-").concat(e[1]):String(e)}static framesToImageId(e,t){const n=e.match(this.frameRangeExtractor);if(!n||!n[2])return null;const o=this.framesToString(t);return e.replace(this.frameRangeExtractor,"".concat(n[1]).concat(o))}static setFrameRange(e,t,n){const{referencedImageId:o}=e.metadata;e.metadata.referencedImageId=this.framesToImageId(o,t);const i={...n,annotation:e};(0,oe.triggerEvent)(oe.eventTarget,se.ANNOTATION_MODIFIED,i)}static getFrameRange(e){return this.imageIdToFrames(e.metadata.referencedImageId)}}function wo(e,t){const{center:n,radius:o}=e,i=e.radius2||o*o;return(t[0]-n[0])*(t[0]-n[0])+(t[1]-n[1])*(t[1]-n[1])+(t[2]-n[2])*(t[2]-n[2])<=i}ae(fo,"frameRangeExtractor",/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i);const{transformWorldToIndex:Io}=oe.utilities;function Eo(e,t,n,o){const{boundsIJK:i,centerWorld:a,radiusWorld:r}=function(e,t,n){const[o,i]=e,a=Sn.vec3.fromValues((o[0]+i[0])/2,(o[1]+i[1])/2,(o[2]+i[2])/2),r=Sn.vec3.distance(o,i)/2;let s;if(!n){const e=Io(t,a),n=t.getSpacing(),o=Math.min(...n),i=Math.ceil(r/o);return s=[[e[0]-i,e[0]+i],[e[1]-i,e[1]+i],[e[2]-i,e[2]+i]],{boundsIJK:s,centerWorld:a,radiusWorld:r}}return s=function(e,t,n,o,i){const[a,r]=n,s=e.getDimensions(),l=t.getCamera(),d=Sn.vec3.fromValues(l.viewUp[0],l.viewUp[1],l.viewUp[2]),c=Sn.vec3.fromValues(l.viewPlaneNormal[0],l.viewPlaneNormal[1],l.viewPlaneNormal[2]),h=Sn.vec3.create();Sn.vec3.cross(h,d,c);const u=Sn.vec3.create(),g=Sn.vec3.create();Sn.vec3.scaleAndAdd(u,r,c,i),Sn.vec3.scaleAndAdd(g,a,c,-i),Sn.vec3.scaleAndAdd(u,u,h,-i),Sn.vec3.scaleAndAdd(g,g,h,i);return go([Io(e,u),Io(e,g)],s)}(t,n,e,0,r),{boundsIJK:s,centerWorld:a,radiusWorld:r}}(t,e,o),s={center:a,radius:r};co(e,(e=>wo(s,e)),n,i)}const{isEqual:Co}=oe.utilities;function _o(e){const{metadata:t}=e;return(0,oe.getEnabledElements)().filter((e=>{if(e.FrameOfReferenceUID===t.FrameOfReferenceUID){const n=e.viewport,{viewPlaneNormal:o,viewUp:i}=n.getCamera();return Co(o,t.viewPlaneNormal)&&(!t.viewUp||Co(i,t.viewUp))}})).map((e=>e.viewport))}function bo(e){const t=_o(e);return t.length?t[0]:void 0}function To(e,t,n,o){const i=e.getViewReference(),{viewPlaneNormal:a,FrameOfReferenceUID:r}=i,s={annotationUID:(null==o?void 0:o.annotationUID)||oe.utilities.uuidv4(),data:{handles:{points:n}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:t,viewPlaneNormal:a,FrameOfReferenceUID:r,referencedImageId:Do(e,n[0],a),...o}};return gt(s,e.element),s}function Do(e,t,n){let o;if(e instanceof oe.StackViewport)o=So(e,t,n);else{if(!(e instanceof oe.BaseVolumeViewport))throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");{const i=function(e){var t;const n=null===(t=e.getViewReferenceId)||void 0===t?void 0:t.call(e);if(n)return n;if(e instanceof oe.BaseVolumeViewport)return"volumeId:".concat(function(e){var t;const n=e.getActors();if(n)return null===(t=n.find((e=>"vtkVolume"===e.actor.getClassName())))||void 0===t?void 0:t.uid}(e));throw new Error("getTargetId: viewport must have a getTargetId method")}(e),a=oe.utilities.getVolumeId(i),r=oe.cache.getVolume(a);o=oe.utilities.getClosestImageId(r,t,n)}}return o}function So(e,t,n){const o=e.getImageIds();if(!o||!o.length)return;const i=o.map((e=>{const{imagePositionPatient:o}=oe.metaData.get("imagePlaneModule",e),i=function(e,t,n){const o=Sn.vec3.create();Sn.vec3.sub(o,e,t);const i=Sn.vec3.dot(o,n);return Math.abs(i)}(t,o,n);return{imageId:e,distance:i}}));return i.sort(((e,t)=>e.distance-t.distance)),i[0].imageId}function yo(e,t){const{viewPlaneNormal:n}=e.metadata,{viewPlaneNormal:o}=t.metadata,i=Sn.vec3.dot(n,o);if(!Sn.glMatrix.equals(1,Math.abs(i)))return!1;const{polyline:a}=e.data.contour,{polyline:r}=t.data.contour,s=Sn.vec3.dot(n,a[0]),l=Sn.vec3.dot(n,r[0]);return Sn.glMatrix.equals(s,l)}function Mo(e,t,n){let o=-1;if(t.forEach(((t,n)=>{o>=0||t.a==e.b&&(o=n)})),o>=0){const e=t[o];return t.splice(o,1),n.push(e.b),n[0]==e.b?{remainingLines:t,contourPoints:n,type:"CLOSED_PLANAR"}:Mo(e,t,n)}return{remainingLines:t,contourPoints:n,type:"OPEN_PLANAR"}}function xo(e){if(0==e.length)return[];const t=[],n=e.shift();t.push(n.a),t.push(n.b);const o=Mo(n,e,t);if(0==o.remainingLines.length)return[{type:o.type,contourPoints:o.contourPoints}];{const e=xo(o.remainingLines);return e.push({type:o.type,contourPoints:o.contourPoints}),e}}function Oo(e){return xo(e)}const Po={findContours:xo,findContoursFromReducedSet:Oo};function Ao(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e.getPoints(),o=e.getLines(),i=new Array(n.getNumberOfPoints()).fill(0).map(((e,t)=>n.getPoint(t).slice())),a=new Array(o.getNumberOfCells()).fill(0).map(((e,t)=>{const n=o.getCell(3*t).slice();return{a:n[0],b:n[1]}}));if(t)return{points:i,lines:a};const r=[];for(const[e,t]of i.entries()){const n=r.findIndex((e=>e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]));if(n>=0)a.map((t=>(t.a===e&&(t.a=n),t.b===e&&(t.b=n),t)));else{const n=r.length;r.push(t),a.map((t=>(t.a===e&&(t.a=n),t.b===e&&(t.b=n),t)))}}return{points:r,lines:a.filter((e=>e.a!==e.b))}}const Ro={processContourHoles:function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=e.filter((e=>"CLOSED_PLANAR"!==e.type)),i=e.filter((e=>"CLOSED_PLANAR"===e.type)),a=[];let r=[];return i.forEach(((e,n)=>{const o=[];i.forEach(((i,a)=>{n!=a&&function(e,t,n){const o=[];e.contourPoints.forEach((e=>{o.push([n[e][0],n[e][1]])}));let i=0;return t.contourPoints.forEach((e=>{((e,t)=>{const n=e[0],o=e[1];let i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const r=t[e][0],s=t[e][1],l=t[a][0],d=t[a][1];s>o!=d>o&&n<(l-r)*(o-s)/(d-s)+r&&(i=!i)}return i})([n[e][0],n[e][1]],o)||i++})),0===i}(e,i,t)&&o.push(a)})),o.length>0?a.push({contour:e,holes:o}):r.push(n)})),n&&(a.forEach((e=>{e.contour.type="CLOSEDPLANAR_XOR",o.push(e.contour),e.holes.forEach((e=>{i[e].type="CLOSEDPLANAR_XOR",o.push(i[e]),r=r.filter((t=>t!==e))}))})),r.forEach((e=>{o.push(i[e])}))),o}};var Lo=E(543),No=E.n(Lo),ko=E(785),Uo=E.n(ko),Vo=E(283),Wo=E.n(Vo);const{Labelmap:Ho}=Ct;function Bo(e){let{segmentations:t}=e;const{representationData:n,segments:o=[0,1]}=t,{volumeId:i}=n[Ho],a=oe.cache.getVolume(i);if(!a)return void console.warn("No volume found for ".concat(i));const r=a.dimensions[2],s=a.imageData.getPointData().getScalars().getData(),l=a.dimensions[0]*a.dimensions[1];for(let e=0;e<r;e++)for(let t=0;t<a.dimensions[1];t++){const n=t*a.dimensions[0]+e*l;s[n]=0,s[n+a.dimensions[0]-1]=0}const d=[],{FrameOfReferenceUID:c}=a.metadata,h=o.length;for(let e=0;e<h;e++){const t=o[e];if(!t)continue;const n=[],i=Uo().newInstance({name:"Scalars",numberOfComponents:1,size:l*r,dataType:"Uint8Array"}),{containedSegmentIndices:h}=t;for(let t=0;t<r;t++){if(Fo(t,s,l,e))continue;const o=t*l;try{var u;for(let t=0;t<l;t++){const n=s[t+o];n===e||null!=h&&h.has(n)?i.setValue(t+o,1):i.setValue(t,0)}const r=No().newInstance({slice:t}),d=Wo().newInstance();d.shallowCopy(a.imageData),d.getPointData().setScalars(i),r.setInputData(d);const g=[1];r.setContourValues(g),r.setMergePoints(!1);const v=Ao(r.getOutputData());if(null!==(u=v.points)&&void 0!==u&&u.length){const e=Oo(v.lines);n.push({contours:e,polyData:v,FrameNumber:t+1,sliceIndex:t,FrameOfReferenceUID:c})}}catch(e){console.warn(t),console.warn(e)}}const g={FrameOfReferenceUID:c},v={label:t.label,color:t.color,metadata:g,sliceContours:n};d.push(v)}return d}function Fo(e,t,n,o){const i=e*n,a=i+n;for(let e=i;e<a;e++)if(t[e]===o)return!1;return!0}class Go{constructor(){}static getContourSequence(e,t){const{data:n}=e,{projectionPoints:o,projectionPointsImageIds:i}=n.cachedStats;return o.map(((e,n)=>{const o=function(e){const t=[...e[0],...e[1],...e[3],...e[2]].flat().map((e=>e.toFixed(2)));return t}(e),a=function(e,t){const n=t.get("sopCommonModule",e);return{ReferencedSOPClassUID:n.sopClassUID,ReferencedSOPInstanceUID:n.sopInstanceUID}}(i[n],t);return{NumberOfContourPoints:o.length/3,ContourImageSequence:a,ContourGeometricType:"CLOSED_PLANAR",ContourData:o}}))}}ae(Go,"toolName",void 0),Go.toolName="RectangleROIStartEndThreshold";const qo=Go;class zo{constructor(){}static convert(e,t,n){!function(e){if(null==e||!e.data)throw new Error("Tool data is empty");if(!e.metadata||e.metadata.referencedImageId)throw new Error("Tool data is not associated with any imageId")}(e);const{toolName:o}=e.metadata,i=zo.TOOL_NAMES[o];if(!i)throw new Error("Unknown tool type: ".concat(o,", cannot convert to RTSSReport"));const a=i.getContourSequence(e,n);return{ReferencedROINumber:t+1,ROIDisplayColor:[Math.floor(255*Math.random()),Math.floor(255*Math.random()),Math.floor(255*Math.random())],ContourSequence:a}}static register(e){zo.TOOL_NAMES[e.toolName]=e}}ae(zo,"TOOL_NAMES",{}),zo.register(qo);const jo=zo;function Ko(e){var t;return(null!==(t=e.childAnnotationUIDs)&&void 0!==t?t:[]).map((e=>pt(e).data.contour.polyline))}function Yo(e,t){const n=Ko(e),o=[];return n.forEach((e=>{const n=e.length,i=new Array(n);for(let o=0;o<n;o++)i[o]=t.worldToCanvas(e[o]);o.push(i)})),o}function Xo(e,t){if(e.length!==t.length)throw Error("Both points should have the same dimensionality");const[n,o,i=0]=e,[a,r,s=0]=t,l=a-n,d=r-o,c=s-i;return l*l+d*d+c*c}function Jo(e,t,n){let o;const i=Xo(e,t);if(e[0]===t[0]&&e[1]===t[1]&&(o=e),!o){const a=((n[0]-e[0])*(t[0]-e[0])+(n[1]-e[1])*(t[1]-e[1]))/i;o=a<0?e:a>1?t:[e[0]+a*(t[0]-e[0]),e[1]+a*(t[1]-e[1])]}return{point:[...o],distanceSquared:Xo(n,o)}}function Zo(e,t,n){return Jo(e,t,n).distanceSquared}const $o=.1;function Qo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$o;const n=e.length;if(n<3)return e;const o=t*t,i=[[0,n-1]],a=new Array(n).fill(!1);let r=2;for(a[0]=!0,a[n-1]=!0;i.length;){const[t,n]=i.pop();if(n-t==1)continue;const s=e[t],l=e[n];let d=-1/0,c=-1;for(let o=t+1;o<n;o++){const t=Zo(s,l,e[o]);t>d&&(d=t,c=o)}d<o||(a[c]=!0,r++,i.push([c,n]),i.push([t,c]))}const s=new Array(r);for(let t=0,o=0;t<n;t++)a[t]&&(s[o++]=e[t]);return s}function ei(e){if(e.length<3)return 0;const t=e[0];let n=0;for(let o=0,i=e.length;o<i;o++){const a=e[o],r=e[o===i-1?0:o+1],s=a[0]-t[0],l=a[1]-t[1],d=r[0]-t[0];n+=s*(r[1]-t[1])-l*d}return n*=.5,n}function ti(e){return ei(e)>=0?1:-1}function ni(e,t,n,o){var i;const{canvasToWorld:a,worldToCanvas:r}=n,{data:s}=e,{targetWindingDirection:l}=t;let{points:d}=t;var c;null!=o&&null!==(i=o.decimate)&&void 0!==i&&i.enabled&&(d=Qo(t.points,null==o||null===(c=o.decimate)||void 0===c?void 0:c.epsilon));let{closed:h}=t;const u=d.length,g=new Array(u),v=ti(d),m=ht(e);if(void 0===h){let e=!1;if(d.length>3){const t=Xo(d[0],d[u-1]);e=oe.utilities.isEqual(0,t)}h=e}let p=m?-1*m.data.contour.windingDirection:l;void 0===p&&(p=v),p!==v&&d.reverse();const f=s.handles.points.map((e=>r(e)));f.length>2&&ti(f)!==p&&s.handles.points.reverse();for(let e=0;e<u;e++)g[e]=a(d[e]);s.contour.polyline=g,s.contour.closed=h,s.contour.windingDirection=p,It(e)}const oi="PlanarFreehandContourSegmentationTool";function ii(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const{viewport:n,sliceData:o,annotation:i}=e,a=new Map,{toolName:r,originalToolName:s}=i.metadata,l=s||r,d=(st(l,n.element)||[]).filter((e=>!e.metadata.originalToolName||e.metadata.originalToolName===l));if(l!==oi){const e=st(oi,n.element);null!=e&&e.length&&e.forEach((e=>{const{metadata:t}=e;t.originalToolName===l&&t.originalToolName!==t.toolName&&d.push(e)}))}if(null==d||!d.length)return a;for(let e=0;e<o.numberOfSlices;e++){const n=d.filter((t=>t.metadata.sliceIndex===e));if(null==n||!n.length)continue;const o=n.filter((e=>t.every((t=>{const n=t.parentKey?t.parentKey(e):e,o=null==n?void 0:n[t.key];return Array.isArray(o)?o.every(((e,n)=>e===t.value[n])):o===t.value}))));o.length&&a.set(e,o)}return a}function ai(e,t,n){const o=oe.utilities.deepMerge({data:{},metadata:{}},n);return Object.assign(o,{highlighted:!1,invalidated:!0,autoGenerated:!0,annotationUID:void 0,cachedStats:{},childAnnotationUIDs:[],parentAnnotationUID:void 0}),Object.assign(o.data,{handles:{points:t.points||t||[],interpolationSources:t.sources,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},contour:{...n.data.contour,polyline:e}}),o}function ri(e,t){const n=e.get(t);return!(null!=n&&n.length)||1===n.length&&n[0].autoGenerated}function si(e,t,n){const[o]=e;t[o]||(t[o]={pair:e,list:[]}),t[o].list.push(n)}function li(e,t,n){const o=[];let i=!0;for(let a=e-1;a>=t[0];a--){const e=n.get(a);if(null!=e&&e.length){if(e[0].autoGenerated)continue;e.length>1&&(i=!1),o.push(a);break}}if(i&&o.length){for(let a=e+1;a<=t[1];a++){const e=n.get(a);if(null!=e&&e.length){if(e[0].autoGenerated)continue;e.length>1&&(i=!1),o.push(a);break}}if(i&&!(o.length<2))return o}}const{PointsManager:di}=oe.utilities;function ci(e,t,n,o,i){n<t&&(n+=i);const a=n-t,r=Math.ceil(a/o);if(r<=0)return e[e.length-1]!==n&&e.push(hi(n,i)),n;for(let n=1;n<=r;n++){const o=hi(t+n*a/r,i);e.push(o)}return e[e.length-1]}function hi(e,t){return(Math.round(e)+t)%t}function ui(e,t){return e.minX<=t.maxX&&e.maxX>=t.minX&&e.minY<=t.maxY&&e.maxY>=t.minY}function gi(e,t,n,o){let i=!1;const a=e[0]<t[0]?e[0]:t[0],r=e[1]<t[1]?e[1]:t[1],s=e[0]>t[0]?e[0]:t[0],l=e[1]>t[1]?e[1]:t[1],d=n[0]<o[0]?n[0]:o[0],c=n[1]<o[1]?n[1]:o[1],h=n[0]>o[0]?n[0]:o[0],u=n[1]>o[1]?n[1]:o[1];if(a>h||s<d||r>u||l<c)return!1;const g=[vi(e,t,n),vi(e,t,o),vi(n,o,e),vi(n,o,t)];return g[0]!==g[1]&&g[2]!==g[3]||((0===g[0]&&mi(e,n,t)||0===g[1]&&mi(e,o,t)||0===g[2]&&mi(n,e,o)||0===g[3]&&mi(n,t,o))&&(i=!0),i)}function vi(e,t,n){const o=(t[1]-e[1])*(n[0]-t[0])-(t[0]-e[0])*(n[1]-t[1]);return 0===o?0:o>0?1:2}function mi(e,t,n){return t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1])}function pi(e,t,n){let o,i;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(i=0,o=1):(i=e.length-1,o=0);for(let a=o;a<e.length;a++){if(gi(t,n,e[i],e[a]))return[i,a];i=a}}function fi(e,t){for(let n=0,o=e.length;n<o;n++){const i=pi(t,e[n],e[n===o-1?0:n+1]);if(2===(null==i?void 0:i.length))return!0}return!1}function wi(e){if(e.length<3)return!1;const t=e.length,n=Xo(e[0],e[t-1]);return Sn.glMatrix.equals(0,n)}function Ii(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{closed:void 0};if(e.length<3)return!1;const o=e.length;let i=0;const{closed:a,holes:r}=n;if(null!=r&&r.length)for(const e of r)if(Ii(e,t))return!1;const s=!(void 0===a?wi(e):a),l=e.length-(s?1:2);for(let n=0;n<=l;n++){const a=e[n],r=e[n===o-1?0:n+1],s=a[0]>=r[0]?a[0]:r[0],l=a[1]>=r[1]?a[1]:r[1],d=a[1]<=r[1]?a[1]:r[1];if(t[0]<=s&&t[1]>=d&&t[1]<l){let e=a[0]===r[0];if(!e){const n=(t[1]-a[1])*(r[0]-a[0])/(r[1]-a[1])+a[0];e=t[0]<=n}i+=e?1:0}}return!!(i%2)}function Ei(e,t){for(let n=0,o=t.length;n<o;n++)if(!Ii(e,t[n]))return!1;return!0}function Ci(e,t,n){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const i=[],a=e.length,r=a-(o?1:2);for(let o=0;o<=r;o++){const r=o===a-1?0:o+1;gi(t,n,e[o],e[r])&&i.push([o,r])}return i}function _i(e){const t=ei(e);return[0,0,t/Math.abs(t)]}const bi=.01;function Ti(e,t,n){const o=e[0]<=t[0]?e[0]:t[0],i=e[0]>=t[0]?e[0]:t[0],a=e[1]<=t[1]?e[1]:t[1],r=e[1]>=t[1]?e[1]:t[1];if(!(n[0]>=o-bi&&n[0]<=i+bi&&n[1]>=a-bi&&n[1]<=r+bi))return!1;const s=(t[1]-e[1])*(n[0]-t[0])-(t[0]-e[0])*(n[1]-t[1]);return(s>=0?s:-s)<=bi}const Di=.01;function Si(e,t,n,o){const i=[t[0]-e[0],t[1]-e[1]],a=[o[0]-n[0],o[1]-n[1]],r=a[1]*i[0]-a[0]*i[1];if((r>=0?r:-r)<Di){const i=[e[0]<t[0]?e[0]:t[0],e[0]>t[0]?e[0]:t[0],e[1]<t[1]?e[1]:t[1],e[1]>t[1]?e[1]:t[1]],a=[n[0]<o[0]?n[0]:o[0],n[0]>o[0]?n[0]:o[0],n[1]<o[1]?n[1]:o[1],n[1]>o[1]?n[1]:o[1]];if(!(i[0]<=a[1]&&i[1]>=a[0]&&i[2]<=a[3]&&i[3]>=a[2]))return;if(!(Ti(e,t,n)||Ti(e,t,o)||Ti(n,o,e)))return;return[.5*((i[0]>a[0]?i[0]:a[0])+(i[1]<a[1]?i[1]:a[1])),.5*((i[2]>a[2]?i[2]:a[2])+(i[3]<a[3]?i[3]:a[3]))]}let s=e[1]-n[1],l=e[0]-n[0];const d=i[0]*s-i[1]*l;return s=(a[0]*s-a[1]*l)/r,l=d/r,[e[0]+s*i[0],e[1]+s*i[1]]}var yi=function(e){return e[e.Vertex=0]="Vertex",e[e.Intersection=1]="Intersection",e}(yi||{}),Mi=function(e){return e[e.Outside=-1]="Outside",e[e.Edge=0]="Edge",e[e.Inside=1]="Inside",e}(Mi||{}),xi=function(e){return e[e.Exiting=-1]="Exiting",e[e.Unknown=0]="Unknown",e[e.Entering=1]="Entering",e}(xi||{});function Oi(e){for(let t=0,n=e.length;t<n;t++){const o=e[t];o.next||(o.next=e[t===n-1?0:t+1])}}function Pi(e,t){const n=[],o=[],i=new Map;let a=Ii(t,e[0])?xi.Exiting:xi.Entering;for(let o=0,r=e.length;o<r;o++){const s=e[o],l=Ii(t,s),d={type:yi.Vertex,coordinates:s,position:l?Mi.Inside:Mi.Outside,visited:!1,next:null};n.push(d);const c=e[o===r-1?0:o+1],h=Ci(t,s,c).map((e=>{const n=e[0],o=t[e[0]],i=t[e[1]],a=Si(s,c,o,i);return{sourceLineSegmentId:n,coordinate:a,targetStartPointDistSquared:Xo(s,a)}}));h.sort(((e,t)=>e.targetStartPointDistSquared-t.targetStartPointDistSquared)),h.forEach((e=>{const{sourceLineSegmentId:t,coordinate:o}=e,r={type:yi.Intersection,coordinates:o,position:Mi.Edge,direction:a,visited:!1,next:null},s={...r,direction:xi.Unknown,cloned:!0};a===xi.Entering?r.next=s:s.next=r;let l=i.get(t);l||(l=[],i.set(t,l)),n.push(r),l.push(s),a*=-1}))}for(let e=0,n=t.length;e<n;e++){const n=e,a=t[e],r={type:yi.Vertex,coordinates:a,visited:!1,next:null};o.push(r);const s=i.get(n);null!=s&&s.length&&s.map((e=>({intersectionPoint:e,lineSegStartDistSquared:Xo(a,e.coordinates)}))).sort(((e,t)=>e.lineSegStartDistSquared-t.lineSegStartDistSquared)).map((e=>{let{intersectionPoint:t}=e;return t})).forEach((e=>o.push(e)))}return Oi(n),Oi(o),{targetPolylinePoints:n,sourcePolylinePoints:o}}function Ai(e){for(let t=0,n=e.length;t<n;t++){const n=e[t];if(!n.visited&&n.position===Mi.Outside)return n}}function Ri(e,t){const n=_i(e),o=_i(t),i=Sn.vec3.dot(o,n);Sn.glMatrix.equals(1,i)||(t=t.slice().reverse());const{targetPolylinePoints:a}=Pi(e,t),r=Ai(a);if(!r)return e.slice();const s=[r.coordinates];let l=r.next;for(;l!==r;)l.type===yi.Intersection&&l.cloned||s.push(l.coordinates),l=l.next;return s}function Li(e,t){const n=_i(e),o=_i(t),i=Sn.vec3.dot(o,n);Sn.glMatrix.equals(-1,i)||(t=t.slice().reverse());const{targetPolylinePoints:a}=Pi(e,t);let r=null;const s=[];for(;r=Ai(a);){const e=[r.coordinates];let t=r.next;for(r.visited=!0;t!==r;)t.visited=!0,t.type===yi.Intersection&&t.cloned||e.push(t.coordinates),t=t.next;s.push(e)}return s}function Ni(e,t){const n=e.length,o=[];for(let i=0;i<n;i++){const n=e[i];n.getFrameOfReferenceUID()===t&&o.push(n)}return o}const{Active:ki,Passive:Ui,Enabled:Vi}=Xe;function Wi(e,t){const n=e.length,o=[];for(let i=0;i<n;i++){const n=e[i],a=Vn(n.id,n.renderingEngineId);a&&(Hi(a,t)&&o.push(n))}return o}function Hi(e,t){const{toolOptions:n}=e,o=n[t];if(!o)return!1;const i=o.mode;return i===ki||i===Ui||i===Vi}const Bi=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.999;return e.filter((e=>{const o=e.getCamera();return Math.abs(Sn.vec3.dot(o.viewPlaneNormal,t.viewPlaneNormal))>n}))};function Fi(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=(0,oe.getEnabledElement)(e),{renderingEngine:i,FrameOfReferenceUID:a}=o;let r=i.getViewports();r=Ni(r,a),r=Wi(r,t);const s=i.getViewport(o.viewportId);return n&&(r=Bi(r,s.getCamera())),r.map((e=>e.id))}function Gi(e){var t;return!(null===(t=e.data)||void 0===t||!t.segmentation)}function qi(e,t){const{segmentation:n}=e.data,{segmentation:o}=t.data;return n.segmentationId===o.segmentationId&&n.segmentIndex===o.segmentIndex}function zi(e){if(!e.data.segmentation)throw new Error("removeContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:t,segmentIndex:n}=e.data.segmentation,o=Lu(t),{annotationUIDsMap:i}=(null==o?void 0:o.representationData.CONTOUR)||{},a=null==i?void 0:i.get(n);a&&(a.delete(e.annotationUID),a.size||i.delete(n))}function ji(e){if(e.parentAnnotationUID)return;if(!e.data.segmentation)throw new Error("addContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:t,segmentIndex:n}=e.data.segmentation,o=Lu(t);o.representationData.CONTOUR||(o.representationData.CONTOUR={annotationUIDsMap:new Map});const{annotationUIDsMap:i}=o.representationData.CONTOUR;let a=i.get(n);a||(a=new Set,i.set(n,a)),i.set(n,a.add(e.annotationUID))}function Ki(e){const t=e.toolName,n=void 0!==Ke.tools[t];if(!t)throw new Error("No Tool Found for the ToolClass ".concat(e.name));if(n)throw new Error("".concat(t," has already been added globally"));Ke.tools[t]={toolClass:e}}function Yi(e){const t=e.toolName;if(!t)throw new Error("No tool found for: ".concat(e.name));if(void 0===!Ke.tools[t])throw new Error("".concat(t," cannot be removed because it has not been added"));delete Ke.tools[t]}let Xi=function(e){return e[e.CounterClockwise=-1]="CounterClockwise",e[e.Unknown=0]="Unknown",e[e.Clockwise=1]="Clockwise",e}({});const Ji="PlanarFreehandContourSegmentationTool";function Zi(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const{toolName:n}=jh,o=Vn(e.id,e.renderingEngineId);let i;return o.hasTool(n)?o.getToolOptions(n)||(i="Tool ".concat(n," must be in active/passive state")):i="Tool ".concat(n," not added to ").concat(o.id," toolGroup"),i&&!t&&console.warn(i),!i}function $i(e,t){const n=e.length,o=new Array(n);for(let i=0;i<n;i++)o[i]=t.worldToCanvas(e[i]);return o}function Qi(e,t,n){const{windingDirection:o}=t.data.contour,{windingDirection:i}=n.data.contour;ct(t,n),zi(n);const{contour:a}=n.data;ni(n,{points:$i(a.polyline,e),closed:a.closed},e);const{element:r}=e,s=new Set([Ji,t.metadata.toolName,n.metadata.toolName]);for(const e of s.values()){const t=Fi(r,e);io(t)}}const{PointsManager:ea}=oe.utilities;function ta(e,t,n,o){const i=n.get(t[0])[0],a=n.get(t[1])[0],r=ca(i.data.contour.polyline),s=ca(a.data.contour.polyline),{c1Interp:l,c2Interp:d}=function(e,t){const n=da(e),o=da(t),i=Math.max(Math.ceil(n[n.length-1]/.2),Math.ceil(o[o.length-1]/.2)),a=la(n),r=la(o),s=i+t.x.length,l=i+e.x.length,d=sa(s,a),c=sa(l,r),h=ra(s-2,e.x.length),u=ra(l-2,t.x.length),g=aa(d,h),v=aa(c,u),m=ia(e,g),p=ia(t,v);return function(e,t){const n=e.x.length,o={startingNode:0,totalSquaredXYLengths:1/0};for(let i=0;i<n;i++){let a=i,r=0;for(let o=0;o<n;o++)r+=(e.x[a]-t.x[o])**2+(e.y[a]-t.y[o])**2+(e.z[a]-t.z[o])**2,a++,a===n&&(a=0);r<o.totalSquaredXYLengths&&(o.totalSquaredXYLengths=r,o.startingNode=i)}const i=o.startingNode;oa(e.x,i),oa(e.y,i),oa(e.z,i),oa(e.I,i)}(m,p),function(e,t){const n={x:[],y:[],z:[],I:[]},o={x:[],y:[],z:[],I:[]};for(let i=0;i<e.x.length;i++)(e.I[i]||t.I[i])&&(n.x.push(e.x[i]),n.y.push(e.y[i]),n.z.push(e.z[i]),n.I.push(e.I[i]),o.x.push(t.x[i]),o.y.push(t.y[i]),o.z.push(t.z[i]),o.I.push(t.I[i]));return{c1Interp:n,c2Interp:o}}(m,p)}(r,s);l.kIndex=t[0],d.kIndex=t[1],e.forEach((function(e){!function(e,t,n,o,i,a,r){const[s,l]=o,d=(n-s)/(l-s),c=i.get(s)[0],h=i.get(l)[0],u=function(e,t,n,o){const i=o?e.I:t.I,a=ea.fromXYZ(e),r=ea.fromXYZ(t),{length:s}=a,l=ea.create3(s),d=Sn.vec3.create(),c=Sn.vec3.create(),h=ea.create3(s);h.kIndex=e.kIndex;const u=ea.create3(s);u.kIndex=t.kIndex;for(let t=0;t<e.x.length;t++)if(i[t]){const e=a.getPoint(t),o=r.getPoint(t);h.push(e),u.push(o),Sn.vec3.sub(d,o,e),l.push(Sn.vec3.scaleAndAdd(c,e,d,n))}return l.sources=[h,u],l}(e,t,d,a),g=d>.5?h:c,v=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;const n=di.create3(t);n.sources=[];const{sources:o}=n,{length:i,sources:a=[]}=e;if(i<15)return e.subselect(t);const r=Math.floor(Math.max(2*i/t,10));a.forEach((()=>o.push(di.create3(t))));const s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;const{length:n}=e,o=Sn.vec3.create(),i=Sn.vec3.create(),a=new Float32Array(n);for(let r=0;r<n;r++){const s=e.getPoint(r),l=e.getPoint(r-t),d=e.getPoint((r+t)%n);Sn.vec3.sub(o,s,l),Sn.vec3.sub(i,d,s);const c=Sn.vec3.dot(o,i)/(Sn.vec3.len(o)*Sn.vec3.len(i));a[r]=c}return a}(e,5),l=function(e,t){const{max:n,deviation:o}=function(e){const{length:t}=e;let n=0,o=1/0,i=-1/0,a=0;for(let a=0;a<t;a++){const t=e[a];n+=t,o=Math.min(o,t),i=Math.max(i,t)}const r=n/t;for(let n=0;n<t;n++){const t=e[n]-r;a+=t*t}return{mean:r,max:i,min:o,sumSq:a,deviation:Math.sqrt(a/t)}}(e),{length:i}=e;if(o<.01||i<3*t)return[];const a=[];let r,s=null,l=0;for(let t=0;t<i;t++){const i=e[t];i<n-o?s?(s[2]=t,i<r&&(r=i,l=t),s[1]=l):(r=i,l=t,s=[t,t,t]):s&&(a.push(s),s=null)}return s&&(0===a[0][0]?a[0][0]=s[0]:(s[1]=l,s[2]=i-1,a.push(s))),a}(s,t),d=[];if((null==l?void 0:l.length)>2){let e=-1;const t=r/3;l.forEach((n=>{const[o,,a]=n,s=Math.ceil((o+a)/2);a-e<t||(s-o>2*t?(ci(d,e,o,r,i),e=ci(d,o,s,r,i)):e=ci(d,e,s,r,i),a-e>t&&(e=ci(d,e,a,r,i)))}));const n=d[0];hi(n+i-e,i)>2*t&&ci(d,e,n-t,r,i)}else{const e=Math.floor(i/t);ci(d,-1,i-e,e,i)}return d.forEach((t=>{const i=e.getPointArray(t);n.push(i),a.forEach(((e,n)=>o[n].push(e.getPoint(t))))})),n}(u);i.has(n)?function(e,t,n,o,i){const a=na(o,n,i),r=ai(e.points,t,a);Object.assign(a,{metadata:r.metadata,data:r.data})}(u,v,n,g,r):function(e,t,n,o,i){var a;const r=e.points,{viewport:s}=i,l=ai(r,t,o),d=s.getViewReference({sliceIndex:n});if(!d)throw new Error("Can't find slice ".concat(n));Object.assign(l.metadata,d),gt(l,s.element),null===(a=o.onInterpolationComplete)||void 0===a||a.call(o,l,o);const{parentAnnotationUID:c}=o;c&&Qi(s,na(pt(c),n,i),l)}(u,v,n,g,r)}(l,d,e,t,n,r.x.length>s.x.length,o)}))}function na(e,t,n){const{viewport:o}=n,i=st(e.metadata.toolName,o.element);for(let n=0;n<i.length;n++){const o=i[n];if(o.interpolationUID===e.interpolationUID&&o.metadata.sliceIndex===t)return o}}function oa(e,t){t-=e.length*Math.floor(t/e.length);const n=e.splice(0,t);return e.push(...n),e}function ia(e,t){const n={x:[],y:[],z:[],I:[]};for(let o=0;o<e.x.length-1;o++){n.x.push(e.x[o]),n.y.push(e.y[o]),n.z.push(e.z[o]),n.I.push(!0);const i=(e.x[o+1]-e.x[o])/(t[o]+1),a=(e.y[o+1]-e.y[o])/(t[o]+1),r=(e.z[o+1]-e.z[o])/(t[o]+1);for(let e=0;e<t[o]-1;e++)n.x.push(n.x[n.x.length-1]+i),n.y.push(n.y[n.y.length-1]+a),n.z.push(n.z[n.z.length-1]+r),n.I.push(!1)}return n}function aa(e,t){const n=[];for(let t=0;t<e.length;++t)n[t]=t;n.sort((function(t,n){return e[t]<e[n]?-1:1}));const o=[];for(let e=0;e<t.length;e++)o.push(t[n[e]]);const i=o.reduce((function(e,t,n){return t&&e.push(n),e}),[]),a=[];for(let e=0;e<i.length-1;e++)a.push(i[e+1]-i[e]);return a}function ra(e,t){const n=new Array(e+t);return n.fill(!1,0,e),n.fill(!0,e,e+t),n}function sa(e,t){const n=1/(e-1),o=[n];for(let t=1;t<e-2;t++)o.push(o[o.length-1]+n);return o.concat(t)}function la(e){const t=[];for(let n=0;n<e.length;n++)t.push(e[n]/e[e.length-1]);return t}function da(e){const t=[0];for(let n=1;n<e.x.length;n++){const o=Math.sqrt((e.x[n]-e.x[n-1])**2+(e.y[n]-e.y[n-1])**2+(e.z[n]-e.z[n-1])**2);t.push(t[n-1]+o)}return t}function ca(e){const t={x:[],y:[],z:[]};for(let n=0;n<e.length;n++)t.x[n]=e[n][0],t.y[n]=e[n][1],t.z[n]=e[n][2];return t.x.push(t.x[0]),t.y.push(t.y[0]),t.z.push(t.z[0]),t}const ha=function(e){if(!e.annotation)return;const{isInterpolationUpdate:t,annotation:n}=e;queueMicrotask((()=>{try{t&&(n.isInterpolationUpdate=!0,n.autoGenerated=!1),function(e){const{annotation:t}=e;!function(e){const{parentAnnotationUID:t,annotationUID:n}=e;if(!t)return e.interpolationUID;const o=pt(t),{interpolationUID:i}=o,a=o.childAnnotationUIDs.indexOf(n);e.interpolationUID="".concat(i,"-").concat(a),e.interpolationUID}(t);const{interpolationData:n,interpolationList:o}=function(e,t){const n=ii(t,[{key:"interpolationUID",value:t.interpolationUID}]),o=function(e){let t=1/0,n=-1/0,o=!1;for(const[i,a]of e.entries())a.length&&(t=Math.min(i,t),n=Math.max(i,n),o=!0);if(o)return[t,n]}(n);if(!o)return void console.warn("No annotations found to interpolate",n);const i=function(e,t){for(const[n,o]of e)for(let e=0;e<o.length;e++)if(o[e].annotationUID===t)return n}(n,e.annotationUID),a=[];for(let e=o[0]+1;e<o[1];e++)if(ri(n,e)){const t=li(e,o,n);(null==t?void 0:t[0])!==i&&(null==t?void 0:t[1])!==i||si(t,a,e)}return{interpolationData:n,interpolationList:a}}(t,e)||{};if(!n||!o)return;const i={toolName:t.metadata.toolName,toolType:t.metadata.toolName,viewport:e.viewport};for(let e=0;e<o.length;e++)o[e]&&ta(o[e].list,o[e].pair,n,i);const{id:a,renderingEngineId:r,element:s}=e.viewport,l={annotation:t,element:s,viewportId:a,renderingEngineId:r};o.length&&(0,oe.triggerEvent)(e.viewport.element,se.ANNOTATION_INTERPOLATION_PROCESS_COMPLETED,l)}(e)}finally{t&&(n.autoGenerated=!0)}}))};function ua(e){const{annotation:t}=e,n=ii(e,[{key:"interpolationUID",value:e.interpolationUID}]),o=t.metadata.sliceIndex;let i=-1,a=e.sliceData.numberOfSlices;for(const[e,t]of n.entries()){if(e===o)continue;const n=t.find((e=>!e.autoGenerated));n&&(e<o?i=Math.max(e,i):a=Math.min(e,a))}const r=[];for(const[e,t]of n.entries())e<=i||e>=a||e===o||t.forEach((e=>{e.autoGenerated&&(mt(e.annotationUID),r.push(e))}));if(r.length){const t={annotations:r,element:e.viewport.element,viewportId:e.viewport.id,renderingEngineId:e.viewport.getRenderingEngine().id};(0,oe.triggerEvent)(e.viewport.element,se.INTERPOLATED_ANNOTATIONS_REMOVED,t)}if(i>=0&&a<e.sliceData.numberOfSlices){const t=n.get(a)[0],o={viewport:e.viewport,sliceData:{numberOfSlices:e.sliceData.numberOfSlices,imageIndex:t.metadata.sliceIndex},annotation:t,interpolationUID:t.interpolationUID};ha(o)}}var ga;const{uuidv4:va}=oe.utilities,ma=[qe.HandlesUpdated,qe.InterpolationUpdated];class pa{static addTool(e){this.toolNames.includes(e)||this.toolNames.push(e)}static acceptAutoGenerated(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{toolNames:n,segmentationId:o,segmentIndex:i,sliceIndex:a}=t;for(const t of n||pa.toolNames){const n=st(t,e);if(null!=n&&n.length)for(const e of n){const{interpolationUID:t,data:n,autoGenerated:r,metadata:s}=e;t&&(e.interpolationCompleted=!0),r&&(i&&i!==n.segmentation.segmentIndex||void 0!==a&&s&&a!==s.sliceIndex||o&&o!==n.segmentation.segmentationId||(ji(e),e.autoGenerated=!1))}}}}function fa(e){return{numberOfSlices:e.getNumberOfSlices(),imageIndex:e.getCurrentImageIdIndex()}}function wa(e,t){pa.acceptAutoGenerated(e,t)}ga=pa,ae(pa,"toolNames",[]),ae(pa,"handleAnnotationCompleted",(e=>{var t;const n=e.detail.annotation;if(null==n||!n.metadata)return;const{toolName:o,originalToolName:i}=n.metadata;if(!ga.toolNames.includes(o)&&!ga.toolNames.includes(i))return;const a=bo(n);if(!a)return void console.warn("Unable to find viewport for",n);const r={viewport:a,sliceData:fa(a),annotation:n,interpolationUID:n.interpolationUID},s=!!n.interpolationUID;if(n.autoGenerated=!1,s)return ua(r),void ha(r);const l=[{key:"segmentIndex",value:n.data.segmentation.segmentIndex,parentKey:e=>e.data.segmentation},{key:"viewPlaneNormal",value:n.metadata.viewPlaneNormal,parentKey:e=>e.metadata},{key:"viewUp",value:n.metadata.viewUp,parentKey:e=>e.metadata}];let d=function(e,t){const n=ii(e,t),o=[];if(null==n||!n.size)return o;for(const e of n.values())e.forEach((e=>{o.push(e)}));return o}(r,l);const{sliceIndex:c}=n.metadata,h=new Set;d.forEach((e=>{if(e.interpolationCompleted||e.metadata.sliceIndex===c){const{interpolationUID:t}=e;h.add(t)}})),d=d.filter((e=>!h.has(e.interpolationUID))),n.interpolationUID=(null===(t=d[0])||void 0===t?void 0:t.interpolationUID)||va(),r.interpolationUID=n.interpolationUID,ha(r)})),ae(pa,"handleAnnotationUpdate",(e=>{const t=e.detail.annotation,{changeType:n=qe.HandlesUpdated}=e.detail;if(null==t||!t.metadata)return;const{toolName:o,originalToolName:i}=t.metadata;if(!ga.toolNames.includes(o)&&!ga.toolNames.includes(i)||!ma.includes(n))return;const a=bo(t);if(!a)return void console.warn("Unable to find matching viewport for annotation interpolation",t);t.autoGenerated&&(ji(t),t.autoGenerated=!1);const r={viewport:a,sliceData:fa(a),annotation:t,interpolationUID:t.interpolationUID,isInterpolationUpdate:n===qe.InterpolationUpdated};ha(r)})),ae(pa,"handleAnnotationDelete",(e=>{const t=e.detail.annotation;if(null==t||!t.metadata)return;const{toolName:n}=t.metadata;if(!ga.toolNames.includes(n)||t.autoGenerated)return;const o=bo(t);if(!o)return void console.warn("No viewport, can't delete interpolated results",t);const i={viewport:o,sliceData:fa(o),annotation:t,interpolationUID:t.interpolationUID};t.autoGenerated=!1,ua(i)}));const{isEqual:Ia}=oe.utilities;function Ea(e,t){const{polyline:n}=e.data.contour,{points:o}=e.data.handles,{length:i}=o;if(t===i)return n.length;if(t<0&&(t=(t+i)%i),0===t)return 0;const a=o[t],r=n.findIndex((e=>Ia(a,e)));if(-1!==r)return r;let s=1/0;return n.reduce(((e,t,n)=>{const o=Sn.vec3.squaredDistance(t,a);return o<s?(s=o,n):e}),-1)}const Ca=function(e,t){let n=0;for(let t=0;t<e.length-1;t++){const o=e[t],i=e[t+1];n+=Math.sqrt(Math.pow(i[0]-o[0],2)+Math.pow(i[1]-o[1],2))}if(t){const t=e[0],o=e[e.length-1];n+=Math.sqrt(Math.pow(o[0]-t[0],2)+Math.pow(o[1]-t[1],2))}return n};class _a{constructor(e,t){ae(this,"supportedInteractionTypes",void 0),ae(this,"configuration",void 0),ae(this,"toolGroupId",void 0),ae(this,"mode",void 0);const n=oe.utilities.deepMerge(t,e),{configuration:o={},supportedInteractionTypes:i,toolGroupId:a}=n;o.strategies||(o.strategies={},o.defaultStrategy=void 0,o.activeStrategy=void 0,o.strategyOptions={}),this.toolGroupId=a,this.supportedInteractionTypes=i||[],this.configuration=Object.assign({},o),this.mode=Xe.Disabled}getToolName(){return this.constructor.toolName}applyActiveStrategy(e,t){var n;const{strategies:o,activeStrategy:i}=this.configuration;return null===(n=o[i])||void 0===n?void 0:n.call(this,e,t)}applyActiveStrategyCallback(e,t,n){var o;const{strategies:i,activeStrategy:a}=this.configuration;if(!i[a])throw new Error("applyActiveStrategyCallback: active strategy ".concat(a," not found, check tool configuration or spellings"));return null===(o=i[a][n])||void 0===o?void 0:o.call(this,e,t)}setConfiguration(e){this.configuration=oe.utilities.deepMerge(this.configuration,e)}setActiveStrategy(e){this.setConfiguration({activeStrategy:e})}getTargetVolumeId(e){var t;if(this.configuration.volumeId)return this.configuration.volumeId;const n=e.getActors();return n?null===(t=n.find((e=>"vtkVolume"===e.actor.getClassName())))||void 0===t?void 0:t.uid:void 0}getTargetIdImage(e,t){if(e.startsWith("imageId:")){const n=e.split("imageId:")[1],o=oe.utilities.imageIdToURI(n);let i=oe.utilities.getViewportsWithImageURI(o,t.id);if(!i||!i.length)return;if(i=i.filter((e=>e.getCurrentImageId()===n)),!i||!i.length)return;return i[0].getImageData()}if(e.startsWith("volumeId:")){const n=oe.utilities.getVolumeId(e),o=oe.utilities.getViewportsWithVolumeId(n,t.id);if(!o||!o.length)return;return o[0].getImageData()}if(e.startsWith("videoId:")){const n=oe.utilities.imageIdToURI(e),o=oe.utilities.getViewportsWithImageURI(n,t.id);if(!o||!o.length)return;return o[0].getImageData()}throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}getTargetId(e){var t;const n=null===(t=e.getViewReferenceId)||void 0===t?void 0:t.call(e);if(n)return n;if(e instanceof oe.BaseVolumeViewport)return"volumeId:".concat(this.getTargetVolumeId(e));throw new Error("getTargetId: viewport must have a getTargetId method")}}ae(_a,"toolName",void 0),_a.toolName="BaseTool";const ba=_a;var Ta=function(e){return e.OnInteractionStart="onInteractionStart",e.OnInteractionEnd="onInteractionEnd",e.Preview="preview",e.RejectPreview="rejectPreview",e.AcceptPreview="acceptPreview",e.Fill="fill",e.StrategyFunction="strategyFunction",e.CreateIsInThreshold="createIsInThreshold",e.Initialize="initialize",e.INTERNAL_setValue="setValue",e.ComputeInnerCircleRadius="computeInnerCircleRadius",e}(Ta||{});const Da=Ta,Sa={[Da.Initialize]:e=>{const{strategySpecificConfiguration:t}=e;if(!t)return;const{centerSegmentIndex:n}=t;n&&(e.segmentIndex=n.segmentIndex)},[Da.OnInteractionStart]:e=>{const{segmentIndex:t,previewSegmentIndex:n,segmentationVoxelManager:o,centerIJK:i,strategySpecificConfiguration:a,imageVoxelManager:r,segmentationImageData:s,preview:l}=e;if(null==a||!a.useCenterSegmentIndex)return;delete a.centerSegmentIndex;let d=!1,c=!1;if(co(s,r.isInObject,(e=>{let{value:o}=e;d||(d=o===t),c||(c=o===n)}),o.boundsIJK),!d&&!c)return;let h=o.getAtIJKPoint(i);if(h===n){if(!l)return;h=l.segmentIndex}else c&&(h=null);e.segmentIndex=h,a.centerSegmentIndex={segmentIndex:h}}},ya={[Da.Initialize]:e=>{const{operationName:t,centerIJK:n,strategySpecificConfiguration:o,segmentationVoxelManager:i,imageVoxelManager:a,segmentIndex:r}=e,{THRESHOLD:s}=o;if(null==s||!s.isDynamic||!n||!r)return;if(t===Da.RejectPreview||t===Da.OnInteractionEnd)return;const{boundsIJK:l}=i,{threshold:d,dynamicRadius:c=0}=s,h=d?0:c,u=l.map(((e,t)=>{const[o,i]=e;return[Math.max(o,n[t]-h),Math.min(i,n[t]+h)]})),g=d||[1/0,-1/0];a.forEach((e=>{let{value:t}=e;const n=Array.isArray(t)?Sn.vec3.len(t):t;g[0]=Math.min(n,g[0]),g[1]=Math.max(n,g[1])}),{boundsIJK:u}),e.strategySpecificConfiguration.THRESHOLD.threshold=g},[Da.OnInteractionStart]:e=>{var t;const{strategySpecificConfiguration:n,preview:o}=e;(null!=n&&null!==(t=n.THRESHOLD)&&void 0!==t&&t.isDynamic||o)&&(n.THRESHOLD.threshold=null)},[Da.ComputeInnerCircleRadius]:e=>{const{configuration:t,viewport:n}=e,{THRESHOLD:{dynamicRadius:o=0}={}}=t.strategySpecificConfiguration||{};if(0===o)return;const i=n.getImageData();if(!i)return;const{spacing:a}=i,r=[n.element.clientWidth/2,n.element.clientHeight/2],s=o*a[0],l=n.canvasToWorld(r).map((e=>e+s)),d=n.worldToCanvas(l),c=Math.abs(r[0]-d[0]),{strategySpecificConfiguration:h,activeStrategy:u}=t;h[u]||(h[u]={}),h[u].dynamicRadiusInCanvas=c}},Ma={[Da.Initialize]:e=>{e.segmentIndex=0}};function xa(e,t,n){return(new Array(n+1).join(t)+e).slice(-n)}const Oa=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=n.onFlood,i=n.onBoundary,a=n.equals,r=n.diagonals||!1,s=v(t),l=function(e){const t=[],n=function(e){return e.split("").map((function(e){return parseInt(e,10)-1}))};for(let o=0;o<Math.pow(3,e);o+=1){const i=xa(o.toString(3),"0",e);t.push(n(i))}return t}(t.length).filter((function(e){const t=function(e){let t=0;for(let n=0;n<e.length;n+=1)0!==e[n]&&(t+=1);return t}(e);return 0!==t&&(1===t||r)})),d=[],c=[],h=new Set,u=new Map;for(d.push({currentArgs:t});d.length>0;)g(d.pop());return{flooded:c,boundaries:function(){const e=Array.from(u.values());return e.reverse(),e}()};function g(e){const t=e.currentArgs,n=e.previousArgs;(function(e){const[t,n,o=0]=e,i=t+32768+65536*(n+32768+65536*(o+32768));return h.has(i)})(t)||(function(e){const[t,n,o=0]=e,i=t+32768+65536*(n+32768+65536*(o+32768));h.add(i)}(t),function(e){const t=v(e);return a?a(t,s):t===s}(t)?(function(e){c.push(e),o&&o(...e)}(t),function(e){for(let t=0;t<l.length;t+=1){const n=l[t],o=e.slice(0);for(let t=0;t<e.length;t+=1)o[t]+=n[t];d.push({currentArgs:o,previousArgs:e})}}(t)):function(e){const[t,n,o=0]=e,a=t+32768+65536*(n+32768+65536*(o+32768));u.set(a,e),i&&i(...e)}(n))}function v(t){return e(...t)}},Pa={determineSegmentIndex:Sa,dynamicThreshold:ya,erase:Ma,islandRemoval:{[Da.OnInteractionEnd]:e=>{const{previewVoxelManager:t,segmentationVoxelManager:n,strategySpecificConfiguration:o,previewSegmentIndex:i,segmentIndex:a}=e;if(!o.THRESHOLD||null===a)return;const r=t.getPoints();if(null==r||!r.length)return;if(void 0===i)return;const s=t.getBoundsIJK().map(((e,t)=>[Math.min(e[0],...r.map((e=>e[t]))),Math.max(e[1],...r.map((e=>e[t])))]));if(s.find((e=>e[0]<0||e[1]>65535)))return;const l=new Set,d=(e,t,o)=>{if(e<s[0][0]||e>s[0][1]||t<s[1][0]||t>s[1][1]||o<s[2][0]||o>s[2][1])return-1;const r=n.toIndex([e,t,o]);if(l.has(r))return-2;const d=n.getAtIndex(r),c=d===i||d===a?1:0;return c||n.addPoint(r),c};let c=0;const h=(e,o,a)=>{const r=n.toIndex([e,o,a]);l.has(r)||(t.setAtIJK(e,o,a,i),l.add(r),c++)};r.forEach((e=>{1===d(...e)&&Oa(d,e,{onFlood:h,diagonals:!0})}));let u=0,g=0;t.forEach((e=>{let{index:o,pointIJK:r,value:s}=e;const d=n.getAtIndex(o);if(l.has(o)){g++;const e=s===a?a:i;t.setAtIJKPoint(r,e)}else if(d===i){u++;const e=null!=s?s:0;t.setAtIJKPoint(r,e)}}),{}),c-g!=0&&console.warn("There were flooded=",c,"cleared=",u,"preview count=",g,"not handled",c-g);const v=new Set(n.points||[]);l.clear();for(const e of v.keys()){if(l.has(e))continue;let n=!0;const o=new Set,a=(e,i,a)=>{const r=t.toIndex([e,i,a]);l.add(r),(s[0][0]===s[0][1]||e!==s[0][0]&&e!==s[0][1])&&(s[1][0]===s[1][1]||i!==s[1][0]&&i!==s[1][1])&&(s[2][0]===s[2][1]||a!==s[2][0]&&a!==s[2][1])||(n=!1),n&&o.add(r)},r=t.toIJK(e);if(0===d(...r)&&(Oa(d,r,{onFlood:a,diagonals:!1}),n))for(const e of o)t.setAtIndex(e,i)}on(e.segmentationId,t.getArrayOfSlices())}},preview:{[Da.Preview]:function(e){var t;const{previewColors:n,strategySpecificConfiguration:o,enabledElement:i}=e;if(!n||!o)return;e.preview&&delete e.preview,delete o.centerSegmentIndex,null===(t=this.onInteractionStart)||void 0===t||t.call(this,i,e);const a=this.fill(i,e);var r;return a&&(a.isPreviewFromHover=!0,e.preview=a,null===(r=this.onInteractionEnd)||void 0===r||r.call(this,i,e)),a},[Da.Initialize]:e=>{const{toolGroupId:t,segmentIndex:n,segmentationRepresentationUID:o,previewSegmentIndex:i,previewColors:a,preview:r}=e;if(void 0===a)return;if(r&&(r.previewVoxelManager.sourceVoxelManager=e.segmentationVoxelManager,e.previewVoxelManager=r.previewVoxelManager),null===n||!i)return;const s=null==a?void 0:a[n],l=vn(o,n);(s||l)&&mn(o,i,s||function(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.4;return[Math.round(e+(255-e)*i),Math.round(t+(255-t)*i),Math.round(n+(255-n)*i),o]}(...l))},[Da.AcceptPreview]:e=>{var t;const{segmentationVoxelManager:n,previewVoxelManager:o,previewSegmentIndex:i,preview:a}=e||{};if(void 0===i)return;const r=null!==(t=null==a?void 0:a.segmentIndex)&&void 0!==t?t:e.segmentIndex,s=o;s&&0!==s.modifiedSlices.size&&(s.forEach((e=>{let{index:t}=e;n.getAtIndex(t)===i&&n.setAtIndex(t,r)}),{}),on(e.segmentationId,s.getArrayOfSlices()),s.clear())},[Da.RejectPreview]:e=>{const{previewVoxelManager:t,segmentationVoxelManager:n}=e;0!==t.modifiedSlices.size&&(t.forEach((e=>{let{index:t,value:o}=e;n.setAtIndex(t,o)})),on(e.segmentationId,t.getArrayOfSlices()),t.clear())}},regionFill:{[Da.Fill]:e=>{var t;const{segmentsLocked:n,segmentationImageData:o,segmentationVoxelManager:i,previewVoxelManager:a,imageVoxelManager:r,brushStrategy:s,centerIJK:l}=e,d=null===(t=s.createIsInThreshold)||void 0===t?void 0:t.call(s,e),{setValue:c}=s,h=d?t=>{const{value:o,index:i}=t;!n.includes(o)&&d(i)&&c(e,t)}:t=>c(e,t);co(o,(null==r?void 0:r.isInObject)||i.isInObject,h,i.boundsIJK),a.addPoint(l)}},setValue:{[Da.INTERNAL_setValue]:(e,t)=>{let{value:n,index:o}=t;const{segmentsLocked:i,segmentIndex:a,previewVoxelManager:r,previewSegmentIndex:s,segmentationVoxelManager:l}=e,d=l.getAtIndex(o);if(null===a){const e=r.getAtIndex(o);return void(void 0!==e&&r.setAtIndex(o,e))}if(d===a||i.includes(n))return;if(d===s){if(void 0!==r.getAtIndex(o))return;l.setAtIndex(o,a)}const c=null!=s?s:a;r.setAtIndex(o,c)}},threshold:{[Da.CreateIsInThreshold]:e=>{const{imageVoxelManager:t,strategySpecificConfiguration:n,segmentIndex:o}=e;if(n&&o)return e=>{const{THRESHOLD:o,THRESHOLD_INSIDE_CIRCLE:i}=n,a=t.getAtIndex(e),r=Array.isArray(a)?Sn.vec3.length(a):a,{threshold:s}=o||i||{};return null==s||!s.length||s[0]<=r&&r<=s[1]}}}},{VoxelManager:Aa}=oe.utilities;function Ra(e){let t,n,o,i,a,r,s,{operationData:l,viewport:d}=e;if(Xt(l,d)){const{volumeId:e,referencedVolumeId:r}=l,d=oe.cache.getVolume(e);if(!d)return;if(s=d.voxelManager,r){const e=oe.cache.getVolume(r);o=e.getScalarData(),i=e.dimensions}({imageData:t}=d),n=d.getScalarData(),a=d.dimensions}else{var c;const{segmentationRepresentationUID:e,segmentationId:h}=l;if(!rg(d.id,h))return;const u=d.getCurrentImageId();if(!u)return;const g=d.getActor(e);if(!g)return;t=g.actor.getMapper().getInputData(),s=t.voxelManager;const v=l.imageId,m=oe.cache.getImage(v);if(!m)return;n=null===(c=m.getPixelData)||void 0===c?void 0:c.call(m);const p=oe.cache.getImage(u),f=p?null:d.getImageData();o=(null==p?void 0:p.getPixelData())||f.getScalarData(),i=p?[p.columns,p.rows,1]:f.dimensions,a=[m.columns,m.rows,1],r=null==p?void 0:p.voxelManager}return s||(s=Aa.createVolumeVoxelManager(a,n)),r||(r=i&&Aa.createVolumeVoxelManager(i,o)),{segmentationImageData:t,segmentationScalarData:n,segmentationVoxelManager:s,imageScalarData:o,imageVoxelManager:r}}const{VoxelManager:La}=oe.utilities;class Na{constructor(e){ae(this,"compositions",void 0),ae(this,"strategyFunction",void 0),ae(this,"configurationName",void 0),ae(this,"_initialize",[]),ae(this,"_fill",[]),ae(this,"_acceptPreview",void 0),ae(this,"_onInteractionStart",[]),ae(this,"fill",((e,t)=>{const n=this.initialize(e,t,Da.Fill);if(!n)return;const{strategySpecificConfiguration:o={},centerIJK:i}=n;if(oe.utilities.isEqual(i,o.centerIJK))return t.preview;o.centerIJK=i,this._fill.forEach((e=>e(n)));const{segmentationVoxelManager:a,previewVoxelManager:r,previewSegmentIndex:s}=n;return on(n.segmentationId,a.getArrayOfSlices()),s&&r.modifiedSlices.size?n.preview||n:null})),ae(this,"onInteractionStart",((e,t)=>{const{preview:n}=t;if(null!=n&&n.isPreviewFromHover)return void(n.isPreviewFromHover=!1);const o=this.initialize(e,t);o&&this._onInteractionStart.forEach((e=>e.call(this,o)))})),ae(this,"onInteractionEnd",void 0),ae(this,"rejectPreview",void 0),ae(this,"acceptPreview",void 0),ae(this,"preview",void 0),ae(this,"setValue",void 0),ae(this,"createIsInThreshold",void 0),this.configurationName=e;for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];this.compositions=n,n.forEach((e=>{const t="function"==typeof e?e():e;if(t)for(const e in t){if(!Na.childFunctions[e])throw new Error("Didn't find ".concat(e," as a brush strategy"));Na.childFunctions[e](this,t[e])}})),this.strategyFunction=(e,t)=>this.fill(e,t);for(const e of Object.keys(Na.childFunctions))this.strategyFunction[e]=this[e]}initialize(e,t,n){var o;const{viewport:i}=e,a=Ra({operationData:t,viewport:i});if(!a)return console.warn("No data found for BrushStrategy"),t.preview;const{imageVoxelManager:r,segmentationVoxelManager:s,segmentationImageData:l}=a,d=(null===(o=t.preview)||void 0===o?void 0:o.previewVoxelManager)||La.createHistoryVoxelManager(s),c={operationName:n,previewSegmentIndex:t.previewColors?255:void 0,...t,enabledElement:e,imageVoxelManager:r,segmentationVoxelManager:s,segmentationImageData:l,previewVoxelManager:d,viewport:i,centerWorld:null,brushStrategy:this};return this._initialize.forEach((e=>e(c))),c}}function ka(e,t){const n="_".concat(e);return(o,i)=>{o[n]||(o[n]=[]),o[n].push(i),o[e]||(o[e]=t?(i,a)=>{const r=o[t](i,a,e);o[n].forEach((e=>e.call(o,r)))}:e=>{o[n].forEach((t=>t.call(o,e)))})}}function Ua(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return(n,o)=>{if(n[e])throw new Error("The singleton method ".concat(e," already exists"));n[e]=t?o:(e,t)=>(t.enabledElement=e,o.call(n,t))}}function Va(e){const[t,n,o,i]=e;return[[o[0],n[1]],[i[0],t[1]]]}function Wa(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.precalculated||Ha(e,n),n.precalculated(t)}ae(Na,"COMPOSITIONS",Pa),ae(Na,"childFunctions",{[Da.OnInteractionStart]:ka(Da.OnInteractionStart,Da.Initialize),[Da.OnInteractionEnd]:ka(Da.OnInteractionEnd,Da.Initialize),[Da.Fill]:ka(Da.Fill),[Da.Initialize]:ka(Da.Initialize),[Da.CreateIsInThreshold]:Ua(Da.CreateIsInThreshold),[Da.AcceptPreview]:ka(Da.AcceptPreview,Da.Initialize),[Da.RejectPreview]:ka(Da.RejectPreview,Da.Initialize),[Da.INTERNAL_setValue]:Ua(Da.INTERNAL_setValue),[Da.Preview]:Ua(Da.Preview,!1),[Da.ComputeInnerCircleRadius]:ka(Da.ComputeInnerCircleRadius),compositions:null});const Ha=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{xRadius:n,yRadius:o,zRadius:i}=e;void 0!==t.invXRadiusSq&&void 0!==t.invYRadiusSq&&void 0!==t.invZRadiusSq||(t.invXRadiusSq=0!==n?1/n**2:0,t.invYRadiusSq=0!==o?1/o**2:0,t.invZRadiusSq=0!==i?1/i**2:0);const{invXRadiusSq:a,invYRadiusSq:r,invZRadiusSq:s}=t,{center:l}=e,[d,c,h]=l;return t.precalculated=e=>{const t=e[0]-d;let n=t*t*a;if(n>1)return!1;const o=e[1]-c;if(n+=o*o*r,n>1)return!1;const i=e[2]-h;return n+=i*i*s,n<=1},t},{transformWorldToIndex:Ba,isEqual:Fa}=oe.utilities,Ga={[Da.Initialize]:e=>{const{points:t,imageVoxelManager:n,viewport:o,segmentationImageData:i,segmentationVoxelManager:a}=e;if(!t)return;const r=Sn.vec3.fromValues(0,0,0);t.forEach((e=>{Sn.vec3.add(r,r,e)})),Sn.vec3.scale(r,r,1/t.length),e.centerWorld=r,e.centerIJK=Ba(i,r);const s=t.map((e=>o.worldToCanvas(e))),[l,d]=Va(s),c=o.canvasToWorld(l),h=o.canvasToWorld(d),u=go(t.map((e=>Ba(i,e))),i.getDimensions());a.boundsIJK=u,n.isInObject=qa({topLeftWorld:c,bottomRightWorld:h,center:r})}};function qa(e){const{topLeftWorld:t,bottomRightWorld:n,center:o}=e,i=Math.abs(t[0]-n[0])/2,a=Math.abs(t[1]-n[1])/2,r=Math.abs(t[2]-n[2])/2,s=Math.max(i,a,r);if(Fa(i,s)&&Fa(a,s)&&Fa(r,s)){const e={center:o,radius:s,radius2:s*s};return t=>wo(e,t)}const l={center:o,xRadius:i,yRadius:a,zRadius:r},{precalculated:d}=Ha(l,{});return d}const za=new Na("Circle",Pa.regionFill,Pa.setValue,Ga,Pa.determineSegmentIndex,Pa.preview),ja=new Na("CircleThreshold",Pa.regionFill,Pa.setValue,Ga,Pa.determineSegmentIndex,Pa.dynamicThreshold,Pa.threshold,Pa.preview,Pa.islandRemoval),Ka=za.strategyFunction,Ya=ja.strategyFunction,{transformWorldToIndex:Xa}=oe.utilities,Ja={[Da.Initialize]:e=>{const{points:t,imageVoxelManager:n,viewport:o,segmentationImageData:i,segmentationVoxelManager:a}=e;if(!t)return;const r=Sn.vec3.fromValues(0,0,0);t.forEach((e=>{Sn.vec3.add(r,r,e)})),Sn.vec3.scale(r,r,1/t.length),e.centerWorld=r,e.centerIJK=Xa(i,r);const{boundsIJK:s,topLeftWorld:l,bottomRightWorld:d}=po(t.slice(0,2),i,o);a.boundsIJK=s,n?n.isInObject=qa({topLeftWorld:l,bottomRightWorld:d,center:r}):a.isInObject=qa({topLeftWorld:l,bottomRightWorld:d,center:r})}},Za=new Na("Sphere",Pa.regionFill,Pa.setValue,Ja,Pa.determineSegmentIndex,Pa.preview),$a=Za.strategyFunction,Qa=new Na("SphereThreshold",...Za.compositions,Pa.dynamicThreshold,Pa.threshold,Pa.islandRemoval).strategyFunction,er=new Na("EraseSphere",Pa.erase,...Za.compositions).strategyFunction,tr=new Na("EraseCircle",Pa.erase,...za.compositions).strategyFunction,nr=function(e,t,n){return"".concat(e,"::").concat(t,"::").concat(n)},or=function(e,t){Object.keys(e).forEach((n=>{const o=t.getAttribute(n),i=e[n];void 0===i||""===i?t.removeAttribute(n):o!==i&&t.setAttribute(n,i)}))},ir=function(e,t){Object.keys(e).forEach((n=>{const o=e[n];void 0!==o&&""!==o&&t.setAttribute(n,o)}))},ar=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";const{color:s,fill:l,width:d,lineWidth:c,lineDash:h,fillOpacity:u,strokeOpacity:g}=Object.assign({color:"rgb(0, 255, 0)",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},a),v=c||d,m=nr(t,"circle",n),p=e.getSvgNode(m),f={cx:"".concat(o[0]),cy:"".concat(o[1]),r:"".concat(i),stroke:s,fill:l,"stroke-width":v,"stroke-dasharray":h,"fill-opacity":u,"stroke-opacity":g};if(p)or(f,p),e.setNodeTouched(m);else{const t=document.createElementNS("http://www.w3.org/2000/svg","circle");""!==r&&t.setAttribute("data-id",r),ir(f,t),e.appendNode(t,m)}},rr=Symbol("DefinedCursors"),sr=new Set(["alias","all-scroll","auto","cell","col-resize","context-menu","copy","crosshair","default","e-resize","ew-resize","grab","grabbing","help","move","ne-resize","nesw-resize","no-drop","none","not-allowed","n-resize","ns-resize","nw-resize","nwse-resize","pointer","progress","row-resize","se-resize","s-resize","sw-resize","text","vertical-text","wait","w-resize","zoom-in","zoom-out"]);class lr{constructor(e,t){ae(this,"name",void 0),ae(this,"fallback",void 0),this.name=e+"",this.fallback=t}getName(){return this.name+""}addFallbackStyleProperty(e){const{fallback:t}=this;return t instanceof lr?"".concat(e,", ").concat(t.getStyleProperty()):e+""}getStyleProperty(){return this.addFallbackStyleProperty(this.name)+""}static getDefinedCursor(e){const t=dr(lr,rr);let n=t.get(e);return n instanceof lr?n:sr.has(e)?(n=new lr(e),t.set(e,n),n):void 0}static setDefinedCursor(e,t){return t instanceof lr&&(dr(lr,rr).set(e,t),!0)}}function dr(e,t){let n=e[t];return n instanceof Map||(n=new Map,Object.defineProperty(e,t,{value:n})),n}const cr=sr.values(),hr=Symbol("ElementCursorsMap");function ur(e,t){pr(e)[0]=t,gr(e,t)}function gr(e,t){const n=pr(e);n[1]=n[0],n[0]=t,e.style.cursor=(t instanceof lr?t:lr.getDefinedCursor("auto")).getStyleProperty()}function vr(e){gr(e,pr(e)[1])}function mr(e){gr(e,lr.getDefinedCursor("none"))}function pr(e){let t=pr[hr];t instanceof WeakMap||(t=new WeakMap,Object.defineProperty(pr,hr,{value:t}));let n=t.get(e);return n||(n=[null,null],t.set(e,n)),n}function fr(e){return ig(e)}function wr(e,t){ag(e,t,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function Ir(e,t){const n=Lu(e);if(!n)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:o}=n;return o.has(t)}function Er(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=Lu(e);if(!o)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:i}=o;n?i.add(t):i.delete(t),nn(e)}function Cr(e){const t=Lu(e);if(!t)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:n}=t;return Array.from(n)}function _r(e){const t=ao(e);if(void 0===t)return;yr(e).forEach((e=>{e.invalidateBrushCursor()}));const n=t.getViewportsInfo(),o=Object.keys(n).map((e=>n[e]));if(!o.length)return;const{renderingEngineId:i}=o[0],a=t.getViewportIds();(0,oe.getRenderingEngine)(i),io(a)}function br(e,t){const n=Lu(e);"string"==typeof t&&(console.warn("segmentIndex is a string, converting to number"),t=Number(t)),(null==n?void 0:n.activeSegmentIndex)!==t&&(n.activeSegmentIndex=t,nn(e)),qu(e).forEach((e=>{_r(Vn(e).id)}))}function Tr(e){const t=Lu(e);if(t)return t.activeSegmentIndex}class Dr extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:Ka,ERASE_INSIDE_CIRCLE:tr,FILL_INSIDE_SPHERE:$a,ERASE_INSIDE_SPHERE:er,THRESHOLD_INSIDE_CIRCLE:Ya,THRESHOLD_INSIDE_SPHERE:Qa},strategySpecificConfiguration:{THRESHOLD:{threshold:[-150,-70]}},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",thresholdVolumeId:null,brushSize:25,preview:{enabled:!1,previewColors:{},previewTimeMs:250,previewMoveDistance:8,dragMoveDistance:4,dragTimeMs:500},actions:{[Da.AcceptPreview]:{method:Da.AcceptPreview,bindings:[{key:"Enter"}]},[Da.RejectPreview]:{method:Da.RejectPreview,bindings:[{key:"Escape"}]}}}}),ae(this,"_editData",void 0),ae(this,"_hoverData",void 0),ae(this,"_previewData",{preview:null,element:null,timerStart:0,timer:null,startPoint:[NaN,NaN],isDrag:!1}),ae(this,"onSetToolPassive",(e=>{this.disableCursor()})),ae(this,"onSetToolEnabled",(()=>{this.disableCursor()})),ae(this,"onSetToolDisabled",(e=>{this.disableCursor()})),ae(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n);this._editData=this.createEditData(n),this._activateDraw(n),mr(n),e.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const i=this._hoverData||this.createHoverData(n);io(i.viewportIdsToRender);const a=this.getOperationData(n);return this.applyActiveStrategyCallback(o,a,Da.OnInteractionStart),!0})),ae(this,"mouseMoveCallback",(e=>{if(this.mode===Xe.Active){if(this.updateCursor(e),!this.configuration.preview.enabled)return;const{previewTimeMs:t,previewMoveDistance:n,dragMoveDistance:o}=this.configuration.preview,{currentPoints:i,element:a}=e.detail,{canvas:r}=i,{preview:s,startPoint:l,timer:d,timerStart:c,isDrag:h}=this._previewData,u=Sn.vec2.distance(r,l),g=Date.now()-c;if((u>n||g>t&&u>o)&&(d&&(window.clearTimeout(d),this._previewData.timer=null),s&&!h&&this.rejectPreview(a)),!this._previewData.timer){const e=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:e,startPoint:r,element:a})}}})),ae(this,"previewCallback",(()=>{this._previewData.preview||(this._previewData.timer=null,this._previewData.preview=this.applyActiveStrategyCallback((0,oe.getEnabledElement)(this._previewData.element),this.getOperationData(this._previewData.element),Da.Preview))})),ae(this,"_dragCallback",(e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=(0,oe.getEnabledElement)(n),{renderingEngine:a}=i;this.updateCursor(e);const{viewportIdsToRender:r}=this._hoverData;io(r);const s=Sn.vec2.distance(o.canvas,this._previewData.startPoint),{dragTimeMs:l,dragMoveDistance:d}=this.configuration.preview;!this._previewData.isDrag&&this._previewData.preview&&Date.now()-this._previewData.timerStart<l&&s<d||(this._previewData.preview=this.applyActiveStrategy(i,this.getOperationData(n)),this._previewData.element=n,this._previewData.timerStart=Date.now()+l,this._previewData.isDrag=!0,this._previewData.startPoint=o.canvas)})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),i=this.getOperationData(n);this._previewData.preview||this._previewData.isDrag||this.applyActiveStrategy(o,i),this._deactivateDraw(n),vr(n),this.updateCursor(e),this._editData=null,this.applyActiveStrategyCallback(o,i,Da.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(n)})),ae(this,"_activateDraw",(e=>{e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback)}))}disableCursor(){this._hoverData=void 0,this.rejectPreview()}createEditData(e){const t=(0,oe.getEnabledElement)(e),{viewport:n}=t,o=fr(n.id);if(!o)throw new Error("No active segmentation detected, create a segmentation representation before using the brush tool");const{segmentationId:i,type:a}=o;if(a===Ct.Contour)throw new Error("Not implemented yet");const r=Cr(i),{representationData:s}=Lu(i);if(Xt(s[Ct.Labelmap],n)){var l,d,c;const{volumeId:e}=s[a],t=n.getActors();if(n instanceof oe.StackViewport){const e=new CustomEvent(oe.Enums.Events.ERROR_EVENT,{detail:{type:"Segmentation",message:"Cannot perform brush operation on the selected viewport"},cancelable:!0});return oe.eventTarget.dispatchEvent(e),null}const o=t.map((e=>oe.cache.getVolume(e.referencedId))),i=oe.cache.getVolume(e),h=(null===(l=o.find((e=>oe.utilities.isEqual(e.dimensions,i.dimensions))))||void 0===l?void 0:l.volumeId)||(null===(d=o[0])||void 0===d?void 0:d.volumeId);return{volumeId:e,referencedVolumeId:null!==(c=this.configuration.thresholdVolumeId)&&void 0!==c?c:h,segmentsLocked:r}}{const e=rg(n.id,i);if(!e)return;if(this.configuration.activeStrategy.includes("SPHERE"))throw new Error("Sphere manipulation is not supported for stacks of image segmentations yet");return{imageId:e,segmentsLocked:r}}}createHoverData(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,i=o.getCamera(),{viewPlaneNormal:a,viewUp:r}=i,s=[o.id],{segmentIndex:l,segmentationId:d,segmentationRepresentationUID:c,segmentColor:h}=this.getActiveSegmentationData(o)||{};return{brushCursor:{metadata:{viewPlaneNormal:[...a],viewUp:[...r],FrameOfReferenceUID:o.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:h},data:{}},centerCanvas:t,segmentIndex:l,viewport:o,segmentationId:d,segmentationRepresentationUID:c,segmentColor:h,viewportIdsToRender:s}}getActiveSegmentationData(e){const t=fr(e.id);if(!t)return void console.warn("No active segmentation detected, create one before using the brush tool");const{segmentationId:n,segmentationRepresentationUID:o}=t,i=Tr(n);return{segmentIndex:i,segmentationId:n,segmentationRepresentationUID:o,segmentColor:vn(o,i)}}updateCursor(e){const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas;this._hoverData=this.createHoverData(n,i),this._calculateCursor(n,i),this._hoverData&&io(this._hoverData.viewportIdsToRender)}getOperationData(e){var t,n;const o=this._editData||this.createEditData(e),{segmentIndex:i,segmentationId:a,segmentationRepresentationUID:r,brushCursor:s}=this._hoverData||this.createHoverData(e),{data:l,metadata:d={}}=s||{},{viewPlaneNormal:c,viewUp:h}=d;return{...o,points:null==l||null===(t=l.handles)||void 0===t?void 0:t.points,segmentIndex:i,previewColors:this.configuration.preview.enabled?this.configuration.preview.previewColors:null,viewPlaneNormal:c,toolGroupId:this.toolGroupId,segmentationId:a,segmentationRepresentationUID:r,viewUp:h,strategySpecificConfiguration:this.configuration.strategySpecificConfiguration,preview:null===(n=this._previewData)||void 0===n?void 0:n.preview}}_calculateCursor(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,{canvasToWorld:i}=o,a=o.getCamera(),{brushSize:r}=this.configuration,s=Sn.vec3.fromValues(a.viewUp[0],a.viewUp[1],a.viewUp[2]),l=Sn.vec3.fromValues(a.viewPlaneNormal[0],a.viewPlaneNormal[1],a.viewPlaneNormal[2]),d=Sn.vec3.create();Sn.vec3.cross(d,s,l);const c=i([t[0],t[1]]),h=Sn.vec3.create(),u=Sn.vec3.create(),g=Sn.vec3.create(),v=Sn.vec3.create();for(let e=0;e<=2;e++)h[e]=c[e]-s[e]*r,u[e]=c[e]+s[e]*r,g[e]=c[e]-d[e]*r,v[e]=c[e]+d[e]*r;if(!this._hoverData)return;const{brushCursor:m}=this._hoverData,{data:p}=m;void 0===p.handles&&(p.handles={}),p.handles.points=[h,u,g,v];const f=this.configuration.activeStrategy,w=this.configuration.strategies[f];"function"==typeof w.computeInnerCircleRadius&&w.computeInnerCircleRadius({configuration:this.configuration,viewport:o}),p.invalidated=!1}rejectPreview(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._previewData.element;if(!e||!this._previewData.preview)return;const t=(0,oe.getEnabledElement)(e);this.applyActiveStrategyCallback(t,this.getOperationData(e),Da.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._previewData.element;if(!e)return;const t=(0,oe.getEnabledElement)(e);this.applyActiveStrategyCallback(t,this.getOperationData(e),Da.AcceptPreview),this._previewData.isDrag=!1,this._previewData.preview=null}invalidateBrushCursor(){if(void 0===this._hoverData)return;const{data:e}=this._hoverData.brushCursor,{viewport:t}=this._hoverData;e.invalidated=!0;const{segmentColor:n}=this.getActiveSegmentationData(t)||{};this._hoverData.brushCursor.metadata.segmentColor=n}renderAnnotation(e,t){var n;if(!this._hoverData)return;const{viewport:o}=e;if(!this._hoverData.viewportIdsToRender.includes(o.id))return;const i=this._hoverData.brushCursor;if(!0===i.data.invalidated){const{centerCanvas:e}=this._hoverData,{element:t}=o;this._calculateCursor(t,e)}const a=i.metadata;if(!a)return;const r=a.brushCursorUID,s=i.data,{points:l}=s.handles,d=l.map((e=>o.worldToCanvas(e))),c=d[0],h=d[1],u=[Math.floor((c[0]+h[0])/2),Math.floor((c[1]+h[1])/2)],g=Math.abs(c[1]-Math.floor((c[1]+h[1])/2)),v="rgb(".concat((null===(n=a.segmentColor)||void 0===n?void 0:n.slice(0,3))||[0,0,0],")");if(!o.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");ar(t,r,"0",u,g,{color:v});const m=this.configuration.activeStrategy,{dynamicRadiusInCanvas:p}=this.configuration.strategySpecificConfiguration[m]||{dynamicRadiusInCanvas:0};p&&ar(t,r,"1",u,p,{color:v})}}ae(Dr,"toolName",void 0),Dr.toolName="Brush";const Sr=Dr;function yr(e,t){const n=ao(e);if(void 0===n)return;const o=n._toolInstances;return Object.keys(o).length?t&&o[t]?[o[t]]:Object.values(o).filter((e=>e instanceof Sr)):void 0}function Mr(e,t,n,o){const i=[];for(let e=0;e<2;e++)for(let t=0;t<2;t++)for(let a=0;a<2;a++){const r=[...o];r[0]=r[0]+(2*e-1)*n[0]/2,r[1]=r[1]+(2*t-1)*n[1]/2,r[2]=r[2]+(2*a-1)*n[2]/2,i.push(r)}return go(i.map((t=>oe.utilities.transformWorldToIndex(e,t))),t)}function xr(e,t){const{spacing:n}=e,o=e.getScalarData(),i=[];let a=0;for(let e=0;e<t.length;e++){const{imageData:l,spacing:d,dimensions:c}=t[e].volume,h=t[e].volume.getScalarData().length;h===o.length&&(r=d,s=n,JSON.stringify(r)===JSON.stringify(s))&&(a=e);const u=l.getPointData().getScalars().getData(),g=t[e].lower,v=t[e].upper;i.push({imageData:l,referenceValues:u,lower:g,upper:v,spacing:d,dimensions:c,volumeSize:h})}var r,s;return{volumeInfoList:i,baseVolumeIdx:a}}const Or=function(e,t,n){const{imageData:o}=e,i=e.getScalarData(),{overwrite:a,boundsIJK:r}=n,s=(null==n?void 0:n.overlapType)||0;if(a)for(let e=0;e<i.length;e++)i[e]=0;const{baseVolumeIdx:l,volumeInfoList:d}=xr(e,t);let c,h,u;const g=(e,t,n)=>{const{imageData:o,dimensions:i,lower:a,upper:r}=e,l=Mr(o,i,t,n);h=0,c=0,u={lower:a,upper:r};let d=!1;return co(o,(()=>!0),(e=>{let{value:t}=e;h+=1,t>=u.lower&&t<=u.upper&&(c+=1)}),l),0===s?d=c>0:1==s&&(d=c===h),d},v=(e,t)=>{const{imageData:n,referenceValues:o,lower:i,upper:a}=e,r=o[n.computeOffsetIndex(t)];return!(r<=i||r>=a)};return co(o,(()=>!0),(e=>{let{index:t,pointIJK:o,pointLPS:a}=e,r=d.length>0;for(let e=0;e<d.length&&(r=d[e].volumeSize===i.length?v(d[e],o):g(d[e],d[l].spacing,a),r);e++);r&&(i[t]=n.segmentIndex||1)}),r),on(e.volumeId),e},Pr=function(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0;const{color:r,handleRadius:s,width:l,lineWidth:d,fill:c,type:h,opacity:u}=Object.assign({color:"rgb(0, 255, 0)",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},i),g=d||l,v=nr(t,"handle","hg-".concat(n,"-index-").concat(a));let m;if("circle"===h)m={cx:"".concat(o[0]),cy:"".concat(o[1]),r:s,stroke:r,fill:c,"stroke-width":g,opacity:u};else{if("rect"!==h)throw new Error("Unsupported handle type: ".concat(h));{const e=1.5*parseFloat(s),t=o[0]-.5*e,n=o[1]-.5*e;m={x:"".concat(t),y:"".concat(n),width:"".concat(e),height:"".concat(e),stroke:r,fill:c,"stroke-width":g,rx:"".concat(.1*e),opacity:u}}}const p=e.getSvgNode(v);if(p)or(m,p),e.setNodeTouched(v);else{const t=document.createElementNS("http://www.w3.org/2000/svg",h);ir(m,t),e.appendNode(t,v)}},Ar=function(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};o.forEach(((o,a)=>{Pr(e,t,n,o,i,a)}))};function Rr(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"";const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},i),c=l||s,h=nr(t,"rect",n),u=e.getSvgNode(h),[g,v,m,p]=o,f=Math.hypot(g[0]-v[0],g[1]-v[1]),w=Math.hypot(g[0]-m[0],g[1]-m[1]),I=[(p[0]+g[0])/2,(p[1]+g[1])/2],E=[(m[0]+g[0])/2,(m[1]+g[1])/2],C=180*Math.atan2(I[1]-E[1],I[0]-E[0])/Math.PI,_={x:"".concat(I[0]-f/2),y:"".concat(I[1]-w/2),width:"".concat(f),height:"".concat(w),stroke:r,fill:"transparent",transform:"rotate(".concat(C," ").concat(I[0]," ").concat(I[1],")"),"stroke-width":c,"stroke-dasharray":d};if(u)or(_,u),e.setNodeTouched(h);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");""!==a&&t.setAttribute("data-id",a),ir(_,t),e.appendNode(t,h)}}function Lr(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";Rr(e,t,n,[[o[0],o[1]],[i[0],o[1]],[o[0],i[1]],[i[0],i[1]]],a,r)}const{EPSILON:Nr}=oe.CONSTANTS,kr=1-Nr;function Ur(e,t,n){const{viewPlaneNormal:o}=t,i=e.filter((e=>{let t=e.metadata.viewPlaneNormal;if(!t){const{referencedImageId:n}=e.metadata,{imageOrientationPatient:o}=oe.metaData.get("imagePlaneModule",n),i=Sn.vec3.fromValues(o[0],o[1],o[2]),a=Sn.vec3.fromValues(o[3],o[4],o[5]);t=Sn.vec3.create(),Sn.vec3.cross(t,i,a),e.metadata.viewPlaneNormal=t}const n=Math.abs(Sn.vec3.dot(o,t))>kr;return t&&n}));if(!i.length)return[];const a=n/2,{focalPoint:r}=t,s=[];for(const e of i){const t=e.data.handles.points[0];if(!e.isVisible)continue;const n=Sn.vec3.create();Sn.vec3.sub(n,r,t);const i=Sn.vec3.dot(n,o);Math.abs(i)<a&&s.push(e)}return s}function Vr(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e instanceof oe.VolumeViewport){const n=e.getCamera(),{spacingInNormalDirection:o}=oe.utilities.getTargetVolumeAndSpacingInNormalDir(e,n);return Ur(t,n,o)}if(e instanceof oe.StackViewport){const t=e.getCurrentImageId(),o=t.indexOf(":");n.imageURI=t.substring(o+1)}return t.filter((t=>!!t.isVisible&&(!!t.data.isCanvasAnnotation||e.isReferenceViewable(t.metadata,n))))}const Wr=new class{constructor(){ae(this,"config",void 0),this._initializeConfig({color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(255, 255, 0)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0})}getAnnotationToolStyles(e){return this.config.annotations&&this.config.annotations[e]}getViewportToolStyles(e){return this.config.viewports&&this.config.viewports[e]}getToolGroupToolStyles(e){return this.config.toolGroups&&this.config.toolGroups[e]}getDefaultToolStyles(){return this.config.default}setAnnotationStyles(e,t){let n=this.config.annotations;n||(this.config={...this.config,annotations:{}},n=this.config.annotations),n[e]=t}setViewportToolStyles(e,t){let n=this.config.viewports;n||(this.config={...this.config,viewports:{}},n=this.config.viewports),n[e]=t}setToolGroupToolStyles(e,t){let n=this.config.toolGroups;n||(this.config={...this.config,toolGroups:{}},n=this.config.toolGroups),n[e]=t}setDefaultToolStyles(e){this.config.default=e}getStyleProperty(e,t){const{annotationUID:n,viewportId:o,toolGroupId:i,toolName:a}=t;return this._getToolStyle(e,n,o,i,a)}_getToolStyle(e,t,n,o,i){if(t){const n=this.getAnnotationToolStyles(t);if(n&&void 0!==n[e])return n[e]}if(n){const t=this.getViewportToolStyles(n);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}if(o){const t=this.getToolGroupToolStyles(o);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}const a=this.getDefaultToolStyles();return a[i]&&void 0!==a[i][e]?a[i][e]:a.global&&void 0!==a.global[e]?a.global[e]:void 0}_initializeConfig(e){const t={};for(const n in e)t[n]=e[n];this.config={default:{global:t}}}};function Hr(e,t,n,o){const i=function(e,t,n){const o=["".concat(e)];return t&&o.push("".concat(o[0]).concat(t)),n&&o.push("".concat(o[o.length-1]).concat(n)),o}(e,n,o);for(let e=i.length-1;e>=0;--e){const n=Wr.getStyleProperty(i[e],t);if(void 0!==n)return n}}var Br=function(e){return e.Default="",e.Highlighted="Highlighted",e.Selected="Selected",e.Locked="Locked",e.AutoGenerated="AutoGenerated",e}(Br||{});const Fr=Br,Gr=function(e){if(e){if(e.data&&e.highlighted)return Fr.Highlighted;if(De(e.annotationUID))return Fr.Selected;if(ue(e))return Fr.Locked;if(e.data&&e.autoGenerated)return Fr.AutoGenerated}return Fr.Default};class qr extends ba{constructor(){super(...arguments),ae(this,"onImageSpacingCalibrated",(e=>{const{element:t,imageId:n}=e.detail,o=oe.utilities.imageIdToURI(n),i=it();i.getFramesOfReference().forEach((e=>{const n=i.getAnnotations(e)[this.getToolName()];n&&n.length&&(n.forEach((e=>{var t;null!==(t=e.metadata)&&void 0!==t&&t.referencedImageId&&oe.utilities.imageIdToURI(e.metadata.referencedImageId)===o&&(e.invalidated=!0,e.data.cachedStats={})})),no(t))}))}))}filterInteractableAnnotationsForElement(e,t){if(!t||!t.length)return;const n=(0,oe.getEnabledElement)(e),{viewport:o}=n;return Vr(o,t)}getReferencedImageId(e,t,n,o){const i=this.getTargetId(e);let a;if(e instanceof oe.StackViewport)a=i.split("imageId:")[1];else if(e instanceof oe.VideoViewport)a=i.split("videoId:")[1];else{const e=oe.utilities.getVolumeId(i),o=oe.cache.getVolume(e);a=oe.utilities.getClosestImageId(o,t,n)}return a}getStyle(e,t,n){return Hr(e,t,Gr(n),this.mode)}}ae(qr,"toolName",void 0),qr.toolName="AnnotationDisplayTool";const zr=qr;class jr extends zr{static createAnnotation(){let e={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.toolName},data:{text:"",handles:{points:new Array,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];for(const t of n)e=oe.utilities.deepMerge(e,t);return e}static createAnnotationForViewport(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return this.createAnnotation({metadata:e.getViewReference()},...n)}static createAndAddAnnotation(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];const i=this.createAnnotationForViewport(e,...n);gt(i,e.element),Qe(i,e.element)}constructor(e,t){var n,o;super(e,t),ae(this,"mouseMoveCallback",((e,t)=>{if(!t)return!1;const{element:n,currentPoints:o}=e.detail,i=o.canvas;let a=!1;for(const e of t){if(ue(e)||!Re(e.annotationUID))continue;const{data:t}=e,o=t.handles?t.handles.activeHandleIndex:void 0,r=this._imagePointNearToolOrHandle(n,e,i,6),s=r&&!e.highlighted,l=!r&&e.highlighted;s||l?(e.highlighted=!e.highlighted,a=!0):t.handles&&t.handles.activeHandleIndex!==o&&(a=!0)}return a})),null!==(n=e.configuration)&&void 0!==n&&n.getTextLines&&(this.configuration.getTextLines=e.configuration.getTextLines),null!==(o=e.configuration)&&void 0!==o&&o.statsCalculator&&(this.configuration.statsCalculator=e.configuration.statsCalculator)}getHandleNearImagePoint(e,t,n,o){const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{isCanvasAnnotation:s}=r,{points:l,textBox:d}=r.handles;if(d){const{worldBoundingBox:e}=d;if(e){const t={topLeft:a.worldToCanvas(e.topLeft),topRight:a.worldToCanvas(e.topRight),bottomLeft:a.worldToCanvas(e.bottomLeft),bottomRight:a.worldToCanvas(e.bottomRight)};if(n[0]>=t.topLeft[0]&&n[0]<=t.bottomRight[0]&&n[1]>=t.topLeft[1]&&n[1]<=t.bottomRight[1])return r.handles.activeHandleIndex=null,d}}for(let e=0;e<(null==l?void 0:l.length);e++){const t=l[e],i=s?t.slice(0,2):a.worldToCanvas(t);if(!0==Sn.vec2.distance(n,i)<o)return r.handles.activeHandleIndex=e,t}r.handles.activeHandleIndex=null}getLinkedTextBoxStyle(e,t){return{visibility:this.getStyle("textBoxVisibility",e,t),fontFamily:this.getStyle("textBoxFontFamily",e,t),fontSize:this.getStyle("textBoxFontSize",e,t),color:this.getStyle("textBoxColor",e,t),shadow:this.getStyle("textBoxShadow",e,t),background:this.getStyle("textBoxBackground",e,t),lineWidth:this.getStyle("textBoxLinkLineWidth",e,t),lineDash:this.getStyle("textBoxLinkLineDash",e,t)}}isSuvScaled(e,t,n){if(e instanceof oe.BaseVolumeViewport){var o;const e=oe.utilities.getVolumeId(t),n=oe.cache.getVolume(e);return void 0!==(null==n||null===(o=n.scaling)||void 0===o?void 0:o.PT)}const i=n&&oe.metaData.get("scalingModule",n);return"number"==typeof(null==i?void 0:i.suvbw)}getAnnotationStyle(e){const{annotation:t,styleSpecifier:n}=e,o=e=>this.getStyle(e,n,t),{annotationUID:i}=t,a=Re(i),r=ue(t),s=o("lineWidth"),l=o("lineDash"),d=o("color");return{visibility:a,locked:r,color:d,lineWidth:s,lineDash:l,lineOpacity:1,fillColor:d,fillOpacity:0,shadow:o("shadow"),textbox:this.getLinkedTextBoxStyle(n,t)}}_imagePointNearToolOrHandle(e,t,n,o){return!!this.getHandleNearImagePoint(e,t,n,o)||(!!this.isPointNearTool(e,t,n,o,"mouse")||void 0)}}ae(jr,"toolName",void 0),jr.toolName="AnnotationTool";const Kr=jr;function Yr(e){const t=document.createElementNS("http://www.w3.org/2000/svg","tspan");return t.setAttribute("x","0"),t.setAttribute("dy","1.2em"),t.textContent=e,t}function Xr(e,t){let n=e.querySelector("rect.background");if(!t)return n&&e.removeChild(n),e.getBBox();n||(n=document.createElementNS("http://www.w3.org/2000/svg","rect"),n.setAttribute("class","background"),e.insertBefore(n,e.firstChild));const o=e.getBBox(),i={x:"".concat(o.x),y:"".concat(o.y),width:"".concat(o.width),height:"".concat(o.height),fill:t};return or(i,n),o}const Jr=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[""],i=arguments.length>4?arguments[4]:void 0,a=arguments.length>5?arguments[5]:void 0;const{padding:r,color:s,fontFamily:l,fontSize:d,background:c}=a;let h;const[u,g]=[i[0]+r,i[1]+r],v=nr(t,"text",n),m=e.getSvgNode(v);if(m){const t=m.querySelector("text"),n=Array.from(t.children);for(let e=0;e<n.length;e++){const t=n[e],i=o[e]||"";t.textContent=i}if(o.length>n.length){for(let e=0;e<o.length-n.length;e++){const i=Yr(o[e+n.length]);t.appendChild(i)}m.appendChild(t),e.appendNode(m,v)}const i={fill:s,"font-size":d,"font-family":l},a={transform:"translate(".concat(u," ").concat(g,")")};or(i,t),or(a,m),h=Xr(m,c),e.setNodeTouched(v)}else{const t=document.createElementNS("http://www.w3.org/2000/svg","g");t.setAttribute("transform","translate(".concat(u," ").concat(g,")"));const n=function(e,t){const{color:n,fontFamily:o,fontSize:i}=t,a=document.createElementNS("http://www.w3.org/2000/svg","text"),r="filter:url(#shadow-".concat(e.svgLayerElement.id,");"),s="".concat("user-select: none; pointer-events: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0);").concat(r);return a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("fill",n),a.setAttribute("font-family",o),a.setAttribute("font-size",i),a.setAttribute("style",s),a}(e,a);for(let e=0;e<o.length;e++){const t=Yr(o[e]);n.appendChild(t)}t.appendChild(n),e.appendNode(t,v),h=Xr(t,c)}return Object.assign({},h,{x:u,y:g,height:h.height+r,width:h.width+r})}(e,t,n,o,i,Object.assign({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"14px",color:"rgb(255, 255, 0)",background:"",padding:25,centerX:!1,centerY:!0},a))};function Zr(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:s,width:l,lineWidth:d,lineDash:c,shadow:h}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0,shadow:void 0},a),u=d||l,g=nr(t,"line",n),v=e.getSvgNode(g),m=h?"filter:url(#shadow-".concat(e.svgLayerElement.id,");"):"",p={x1:"".concat(o[0]),y1:"".concat(o[1]),x2:"".concat(i[0]),y2:"".concat(i[1]),stroke:s,style:m,"stroke-width":u,"stroke-dasharray":c};if(v)or(p,v),e.setNodeTouched(g);else{const t=document.createElementNS("http://www.w3.org/2000/svg","line");""!==r&&t.setAttribute("data-id",r),ir(p,t),e.appendNode(t,g)}}function $r(e,t){let n=[0,0],o=Number.MAX_SAFE_INTEGER;return e.forEach((function(e){const i=function(e,t){const[n,o]=e,[i,a]=t;return Math.sqrt(Math.pow(n-i,2)+Math.pow(o-a,2))}(t,e);i<o&&(o=i,n=[...e])})),n}const Qr=function(e,t,n,o,i,a,r){let s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{};const l=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},s),d=Jr(e,t,n,o,i,l);return function(e,t,n,o,i,a){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{};const s=o.length>0?$r(o,i):i,l=$r(function(e){const{x:t,y:n,height:o,width:i}=e,a=i/2,r=o/2;return[[t+a,n],[t,n+r],[t+a,n+o],[t+i,n+r]]}(a),s),d=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},r);Zr(e,t,"link-".concat(n),s,l,d)}(e,t,n,a,i,d,l),d};function es(e,t,n){if(2!==e.length||2!==t.length||2!==n.length)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(Zo(e,t,n))}function ts(e,t){if(4!==e.length||2!==t.length)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");const[n,o,i,a]=e;let r=655535;const s=function(e,t,n,o){return{top:[[e,t],[e+n,t]],right:[[e+n,t],[e+n,t+o]],bottom:[[e+n,t+o],[e,t+o]],left:[[e,t+o],[e,t]]}}(n,o,i,a);return Object.keys(s).forEach((e=>{const[n,o]=s[e],i=es(n,o,t);i<r&&(r=i)})),r}function ns(e){const t=function(e){const t=[e[0],e[1]].sort((function(e,t){return e[0]<t[0]?-1:1})),n=[e[0],e[1]].sort((function(e,t){return e[1]<t[1]?-1:1})),o=t[t.length-1];return{top:n[0],bottom:n[n.length-1],right:o}}(e),n=(t.top[1]+t.bottom[1])/2;return[t.right[0],n]}function os(e,t,n,o){const i=Sn.vec3.create();Sn.vec3.cross(i,t,e);const a=Sn.vec3.fromValues(...n),r=Sn.vec3.fromValues(...o),s=Sn.vec3.create();Sn.vec3.subtract(s,a,r);const l=Sn.vec3.length(s);if(l<1e-4)return{worldWidth:0,worldHeight:0};const d=Sn.vec3.dot(s,i)/(l*Sn.vec3.length(i));return{worldWidth:Math.sqrt(1-d*d)*l,worldHeight:d*l}}function is(e,t,n){return"CT"===e?"HU":"PT"===e?function(e,t){if(!t.isPreScaled)return"raw";if(t.isSuvScaled)return"SUV";const n=oe.metaData.get("generalSeriesModule",e);if("PT"===(null==n?void 0:n.modality)){const t=oe.metaData.get("petSeriesModule",e);return(null==t?void 0:t.units)||"unitless"}}(t,n):""}function as(e,t){if(e instanceof oe.BaseVolumeViewport){const e=t.split("volumeId:"),n=e.length>1?e[1].split("?")[0]:e[0],o=oe.cache.getVolume(n);return!(null==o||!o.scaling)&&Object.keys(o.scaling).length>0}if(e instanceof oe.StackViewport){const{preScale:t}=e.getImageData()||{};return!(null==t||!t.scaled)}return!1}class rs{}ae(rs,"run",void 0),ae(rs,"getStatistics",void 0);const ss=rs;var ls;const{PointsManager:ds}=oe.utilities;class cs extends ss{static statsInit(e){e.noPointsCollection&&(cs.pointsInShape=null)}}function hs(e){return 1===e.length?e[0]:e}ls=cs,ae(cs,"max",[-1/0]),ae(cs,"min",[1/0]),ae(cs,"sum",[0]),ae(cs,"count",0),ae(cs,"runMean",[0]),ae(cs,"m2",[0]),ae(cs,"pointsInShape",ds.create3(1024)),ae(cs,"statsCallback",(e=>{var t;let{value:n,pointLPS:o=null}=e;Array.isArray(n)&&n.length>1&&1===ls.max.length&&(ls.max.push(ls.max[0],ls.max[0]),ls.min.push(ls.min[0],ls.min[0]),ls.sum.push(ls.sum[0],ls.sum[0]),ls.runMean.push(0,0),ls.m2.push(ls.m2[0],ls.m2[0])),null===(t=ls.pointsInShape)||void 0===t||t.push(o);const i=Array.isArray(n)?n:[n];ls.count+=1,ls.max.map(((e,t)=>{const n=i[t],o=n-ls.runMean[t];ls.sum[t]+=n,ls.runMean[t]+=o/ls.count;const a=n-ls.runMean[t];ls.m2[t]+=o*a,ls.min[t]=Math.min(ls.min[t],n),ls.max[t]=Math.max(e,n)}))})),ae(cs,"getStatistics",(e=>{const t=ls.sum.map((e=>e/ls.count)),n=ls.m2.map((e=>Math.sqrt(e/ls.count))),o=(null==e?void 0:e.unit)||null,i={max:{name:"max",label:"Max Pixel",value:hs(ls.max),unit:o},min:{name:"min",label:"Min Pixel",value:hs(ls.min),unit:o},mean:{name:"mean",label:"Mean Pixel",value:hs(t),unit:o},stdDev:{name:"stdDev",label:"Standard Deviation",value:hs(n),unit:o},count:{name:"count",label:"Pixel Count",value:ls.count,unit:null},pointsInShape:ls.pointsInShape,array:[]};return i.array.push(i.max,i.mean,i.stdDev,i.stdDev,i.count),ls.max=[-1/0],ls.min=[1/0],ls.sum=[0],ls.m2=[0],ls.runMean=[0],ls.count=0,ls.pointsInShape=ds.create3(1024),i}));const{transformWorldToIndex:us}=oe.utilities;class gs extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:vs,statsCalculator:cs}}),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{label:"",handles:{points:[[...i],[...i],[...i],[...i]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[3]),c=this._getRectangleImageCoordinates([l,d]),h=[n[0],n[1]],{left:u,top:g,width:v,height:m}=c;return ts([u,g,v,m],h)<=o})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),mr(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const{renderingEngine:l}=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o)})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world,{points:i}=s.handles;i.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,i=(0,oe.getEnabledElement)(n),{worldToCanvas:r,canvasToWorld:l}=i.viewport,d=e.world,{points:c}=s.handles;let h,u,g,v,m,p,f,w;switch(c[a]=[...d],a){case 0:case 3:h=r(c[0]),v=r(c[3]),u=[v[0],h[1]],g=[h[0],v[1]],p=l(u),f=l(g),c[1]=p,c[2]=f;break;case 1:case 2:u=r(c[1]),g=r(c[2]),h=[g[0],u[1]],v=[u[0],g[1]],m=l(h),w=l(v),c[0]=m,c[3]=w}o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles,v=u.map((e=>a.worldToCanvas(e)));c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),{viewPlaneNormal:w,viewUp:I}=a.getCamera();if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnits){if(o.invalidated&&(this._throttledCalculateCachedStats(o,w,I,d,e),a instanceof oe.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=oe.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=oe.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnits:null},this._calculateCachedStats(o,w,I,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let E;if(!Re(r))continue;ue(o)||this.editData||null===g||(E=[v[g]]),E&&Ar(t,r,"0",E,{color:m}),Rr(t,r,"0",v,{color:m,lineDash:f,lineWidth:p},"".concat(r,"-rect")),i=!0;const C=this.getLinkedTextBoxStyle(c,o);if(!C.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const _=this.configuration.getTextLines(h,l);if(!_||0===_.length)continue;if(!h.handles.textBox.hasMoved){const e=ns(v);h.handles.textBox.worldPosition=a.canvasToWorld(e)}const b=a.worldToCanvas(h.handles.textBox.worldPosition),T=Qr(t,r,"1",_,b,v,{},C),{x:D,y:S,width:y,height:M}=T;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,S]),topRight:a.canvasToWorld([D+y,S]),bottomLeft:a.canvasToWorld([D,S+M]),bottomRight:a.canvasToWorld([D+y,S+M])}}return i})),ae(this,"_getRectangleImageCoordinates",(e=>{const[t,n]=e;return{left:Math.min(t[0],n[0]),top:Math.min(t[1],n[1]),width:Math.abs(t[0]-n[0]),height:Math.abs(t[1]-n[1])}})),ae(this,"_calculateCachedStats",((e,t,n,o,i)=>{const{data:a}=e,{viewport:r}=i,{element:s}=r,l=a.handles.points[0],d=a.handles.points[3],{cachedStats:c}=a,h=Object.keys(c);for(let i=0;i<h.length;i++){const a=h[i],s=this.getTargetIdImage(a,o);if(!s)continue;const{dimensions:m,imageData:p,metadata:f}=s,w=us(p,l);w[0]=Math.floor(w[0]),w[1]=Math.floor(w[1]),w[2]=Math.floor(w[2]);const I=us(p,d);if(I[0]=Math.floor(I[0]),I[1]=Math.floor(I[1]),I[2]=Math.floor(I[2]),this._isInsideVolume(w,I,m)){var u,g,v;this.isHandleOutsideImage=!1;const o=[[Math.min(w[0],I[0]),Math.max(w[0],I[0])],[Math.min(w[1],I[1]),Math.max(w[1],I[1])],[Math.min(w[2],I[2]),Math.max(w[2],I[2])]],{worldWidth:i,worldHeight:h}=os(t,n,l,d),m=[w,I],{scale:E,areaUnits:C}=Ln(s,m),_=Math.abs(i*h)/(E*E),b={isPreScaled:as(r,a),isSuvScaled:this.isSuvScaled(r,a,e.metadata.referencedImageId)},T=is(f.Modality,e.metadata.referencedImageId,b),D=co(p,(()=>!0),this.configuration.statsCalculator.statsCallback,o),S=this.configuration.statsCalculator.getStatistics();c[a]={Modality:f.Modality,area:_,mean:null===(u=S.mean)||void 0===u?void 0:u.value,stdDev:null===(g=S.stdDev)||void 0===g?void 0:g.value,max:null===(v=S.max)||void 0===v?void 0:v.value,statsArray:S.array,pointsInShape:D,areaUnits:C,pixelValueUnits:T}}else this.isHandleOutsideImage=!0,c[a]={Modality:f.Modality}}return e.invalidated=!1,Qe(e,s),c})),ae(this,"_isInsideVolume",((e,t,n)=>oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}}function vs(e,t){const n=e.cachedStats[t],{area:o,mean:i,max:a,stdDev:r,areaUnits:s,pixelValueUnits:l}=n;if(void 0===i)return;const d=[];return d.push("Area: ".concat(Qd(o)," ").concat(s)),d.push("Mean: ".concat(Qd(i)," ").concat(l)),d.push("Max: ".concat(Qd(a)," ").concat(l)),d.push("Std Dev: ".concat(Qd(r)," ").concat(l)),d}ae(gs,"toolName",void 0),gs.toolName="RectangleROI";const ms=gs;class ps extends ms{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getTargetId(r);let u,g;if(r instanceof oe.StackViewport)u=h.split("imageId:")[1];else{g=oe.utilities.getVolumeId(h);const e=oe.cache.getVolume(g);u=oe.utilities.getClosestImageId(e,i,d)}const v=r.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:a,viewUp:[...c],FrameOfReferenceUID:v,referencedImageId:u,toolName:this.getToolName(),volumeId:g},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},segmentationId:null}};gt(m,o);const p=Fi(o,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:p,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(p),m})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o,data:d}=n,{points:c,activeHandleIndex:h}=d.handles,u=c.map((e=>a.worldToCanvas(e)));l.annotationUID=o;const g=this.getStyle("lineWidth",l,n),v=this.getStyle("lineDash",l,n),m=this.getStyle("color",l,n);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let p;(Qe(n,r),Re(o))&&(ue(n)||this.editData||null===h||(p=[u[h]]),p&&Ar(t,o,"0",p,{color:m}),Lr(t,o,"0",u[0],u[3],{color:m,lineDash:v,lineWidth:g}),i=!0)}return i}))}}ae(ps,"toolName",void 0),ps.toolName="RectangleROIThreshold";const fs=ps,{transformWorldToIndex:ws}=oe.utilities;class Is extends ms{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{numSlicesToPropagate:10,computePointsInsideVolume:!1}}),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l;let h,u,g;if(r instanceof oe.StackViewport)throw new Error("Stack Viewport Not implemented");{const e=this.getTargetId(r);g=oe.utilities.getVolumeId(e),u=oe.cache.getVolume(g),h=oe.utilities.getClosestImageId(u,i,d)}if(!h)throw new Error("This tool does not work on non-acquisition planes");const v=r.getCurrentImageIdIndex(),m=oe.utilities.getSpacingInNormalDirection(u,d),p=this._getEndSliceIndex(u,i,m,d),f=r.getFrameOfReferenceUID(),w={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:a,viewUp:[...c],FrameOfReferenceUID:f,referencedImageId:h,toolName:this.getToolName(),volumeId:g,spacingInNormal:m},data:{label:"",startSlice:v,endSlice:p,cachedStats:{pointsInVolume:[],projectionPoints:[],projectionPointsImageIds:[h]},handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},labelmapUID:null}};this._computeProjectionPoints(w,u),gt(w,o);const I=Fi(o,this.getToolName());return this.editData={annotation:w,viewportIdsToRender:I,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(I),w})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID);const d=this.getTargetId(l.viewport),c=oe.cache.getVolume(d.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(o,c,l),io(i),a&&et(o)})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o}=e,i=st(this.getToolName(),o.element);if(null==i||!i.length)return n;const a=o.getCurrentImageIdIndex(),r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let s=0;s<i.length;s++){const l=i[s],{annotationUID:d,data:c}=l,{startSlice:h,endSlice:u}=c,{points:g,activeHandleIndex:v}=c.handles,m=g.map((e=>o.worldToCanvas(e)));r.annotationUID=d;const p=this.getStyle("lineWidth",r,l),f=this.getStyle("lineDash",r,l),w=this.getStyle("color",r,l);if(a<Math.min(h,u)||a>Math.max(h,u))continue;l.invalidated&&this._throttledCalculateCachedStats(l,e);let I,E=!1;if(a!==h&&a!==u||(E=!0),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!Re(d))continue;ue(l)||this.editData||null===v||!E||(I=[m[v]]),I&&Ar(t,d,"0",I,{color:w});let C=f;E||(C=2),Lr(t,d,"0",m[0],m[3],{color:w,lineDash:C,lineWidth:p}),n=!0}return n})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,t){const{data:n,metadata:o}=e,{viewPlaneNormal:i,spacingInNormal:a}=o,{imageData:r}=t,{startSlice:s,endSlice:l}=n,{points:d}=n.handles,c=ws(r,d[0]);if(c[2]!==s)throw new Error("Start slice does not match");const h=Sn.vec3.fromValues(c[0],c[1],l),u=Sn.vec3.create();r.indexToWorldVec3(c,u);const g=Sn.vec3.create();r.indexToWorldVec3(h,g);const v=Sn.vec3.distance(u,g),m=[];for(let e=0;e<v;e+=a)m.push(d.map((t=>{const n=Sn.vec3.create();return Sn.vec3.scaleAndAdd(n,t,i,e),Array.from(n)})));n.cachedStats.projectionPoints=m;const p=[];for(const e of m){const n=oe.utilities.getClosestImageId(t,e[0],i);p.push(n)}n.cachedStats.projectionPointsImageIds=p}_computePointsInsideVolume(e,t,n){const{data:o}=e,i=o.cachedStats.projectionPoints,a=[[]];for(let e=0;e<i.length;e++){if(!t)continue;const n=i[e][0],r=o.handles.points[0],s=o.handles.points[3],{dimensions:l,imageData:d}=t,c=ws(d,r),h=ws(d,n);c[0]=Math.floor(c[0]),c[1]=Math.floor(c[1]),c[2]=Math.floor(h[2]);const u=ws(d,s);if(u[0]=Math.floor(u[0]),u[1]=Math.floor(u[1]),u[2]=Math.floor(h[2]),this._isInsideVolume(c,u,l)){this.isHandleOutsideImage=!1;const e=co(d,(()=>!0),null,[[Math.min(c[0],u[0]),Math.max(c[0],u[0])],[Math.min(c[1],u[1]),Math.max(c[1],u[1])],[Math.min(c[2],u[2]),Math.max(c[2],u[2])]]);a.push(e)}}o.cachedStats.pointsInVolume=a}_calculateCachedStatsTool(e,t){const n=e.data,{viewport:o}=t,{cachedStats:i}=n,a=this.getTargetId(o),r=oe.cache.getVolume(a.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,r),e.invalidated=!1,Qe(e,o.element),i}_getEndSliceIndex(e,t,n,o){const i=this.configuration.numSlicesToPropagate,a=Sn.vec3.create();Sn.vec3.scaleAndAdd(a,t,o,i*n);const r=n/2,{imageIds:s}=e;let l;for(let e=0;e<s.length;e++){const t=s[e],{imagePositionPatient:n}=oe.metaData.get("imagePlaneModule",t),i=Sn.vec3.create();Sn.vec3.sub(i,a,n);const d=Sn.vec3.dot(i,o);Math.abs(d)<r&&(l=e)}return l}}ae(Is,"toolName",void 0),Is.toolName="RectangleROIStartEndThreshold";const Es=Is,Cs=function(e,t){const n=e.findIndex((e=>{let[t,n]=e;return t===n}));if(-1===n)throw new Error("3D bounding boxes not supported in an oblique plane");return e[n][0]-=t,e[n][1]+=t,e},_s=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=[];return e.forEach((e=>{var i,a;const{data:r}=e,{points:s}=r.handles,{imageData:l,dimensions:d}=t;let c=s;if(null!==(i=r.cachedStats)&&void 0!==i&&i.projectionPoints){const{projectionPoints:e}=r.cachedStats;c=[].concat(...e)}let h=go(c.map((e=>oe.utilities.transformWorldToIndex(l,e))),d);!n.numSlicesToProject||null!==(a=r.cachedStats)&&void 0!==a&&a.projectionPoints||(h=Cs(h,n.numSlicesToProject)),o.push(h)})),1===o.length?o[0]:o.reduce(((e,t)=>({iMin:Math.min(e.iMin,t.iMin),jMin:Math.min(e.jMin,t.jMin),kMin:Math.min(e.kMin,t.kMin),iMax:Math.max(e.iMax,t.iMax),jMax:Math.max(e.jMax,t.jMax),kMax:Math.max(e.kMax,t.kMax)})),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})},bs=function(e,t,n,o){const i=e.map((e=>pt(e)));let a;!function(e){const t=[fs.toolName,Es.toolName];for(const n of e){const e=n.metadata.toolName;if(!t.includes(e))throw new Error("rectangleROIThresholdVolumeByRange only supports RectangleROIThreshold and RectangleROIStartEndThreshold annotations")}}(i);for(let e=0;e<n.length;e++)n[e].volume.getScalarData().length!==t.getScalarData().length&&0!==e||(a=_s(i,n[e].volume,o));const r=Or(t,n,{...o,boundsIJK:a});return r.modified(),r},Ts=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mergedLabelmap";e.forEach((t=>{let{direction:n,dimensions:o,origin:i,spacing:a}=t;if(!(oe.utilities.isEqual(o,e[0].dimensions)&&oe.utilities.isEqual(n,e[0].direction)&&oe.utilities.isEqual(a,e[0].spacing)&&oe.utilities.isEqual(i,e[0].origin)))throw new Error("labelmaps must have the same size and shape")}));const o=e[0],i=new(0,o.getScalarData().constructor)(o.getScalarData().length);e.forEach((e=>{const n=e.getScalarData();for(let e=0;e<n.length;e++)n[e]===t&&(i[e]=t)}));const a={scalarData:i,metadata:o.metadata,spacing:o.spacing,origin:o.origin,direction:o.direction,dimensions:o.dimensions};return oe.volumeLoader.createLocalVolume(a,n,!0)};function Ds(e,t){if(e===Ct.Labelmap)return function(e){return e&&"boolean"==typeof e.renderOutline&&"number"==typeof e.outlineWidthActive&&"number"==typeof e.outlineWidthInactive&&"number"==typeof e.activeSegmentOutlineWidthDelta&&"boolean"==typeof e.renderFill&&"boolean"==typeof e.renderFillInactive&&"number"==typeof e.fillAlpha&&"number"==typeof e.fillAlphaInactive&&"number"==typeof e.outlineOpacity&&"number"==typeof e.outlineOpacityInactive}(t);throw new Error("Unknown representation type: ".concat(e))}function Ss(e){const{type:t}=e;if(t===Ct.Labelmap)return Tt();throw new Error("Unknown representation type: ".concat(t))}async function ys(e){const{viewportId:t,renderingEngineId:n,options:o}=e;let{segmentationId:i}=e;const a=(0,oe.getEnabledElementByIds)(t,n);if(!a)throw new Error("element disabled");const{viewport:r}=a;if(!(r instanceof oe.VolumeViewport))throw new Error("Segmentation only supports VolumeViewport");const{uid:s}=r.getDefaultActor();var l;if(void 0===i&&(i="".concat(s,"-based-segmentation-").concat(null!==(l=null==o?void 0:o.volumeId)&&void 0!==l?l:oe.utilities.uuidv4().slice(0,8))),o){const e=structuredClone(o);await oe.volumeLoader.createLocalVolume(e,i)}else{const{uid:e}=r.getDefaultActor();await oe.volumeLoader.createAndCacheDerivedSegmentationVolume(e,{volumeId:i})}return i}function Ms(e,t,n){const o=ao(e);if(void 0===o)return;yr(e,n).forEach((e=>{e.configuration.brushSize=t,e.invalidateBrushCursor()}));const i=o.getViewportsInfo(),a=Object.keys(i).map((e=>i[e]));if(!a.length)return;const{renderingEngineId:r}=a[0],s=o.getViewportIds();(0,oe.getRenderingEngine)(r),io(s)}function xs(e,t){const n=ao(e);if(void 0===n)return;const o=n._toolInstances;if(!Object.keys(o).length)return;const i=yr(e,t)[0];return i?i.configuration.brushSize:void 0}function Os(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{isDynamic:!1};const o=ao(e);if(void 0===o)return;const i=yr(e),a={...n,...void 0!==t&&{threshold:t}};i.forEach((e=>{e.configuration.strategySpecificConfiguration.THRESHOLD={...e.configuration.strategySpecificConfiguration.THRESHOLD,...a}}));const r=o.getViewportsInfo();if(!r.length)return;const{renderingEngineId:s}=r[0],l=o.getViewportIds();(0,oe.getRenderingEngine)(s),io(l)}function Ps(e){const t=ao(e);if(void 0===t)return;const n=t._toolInstances;if(!Object.keys(n).length)return;const o=yr(e)[0];return o?o.configuration.strategySpecificConfiguration.THRESHOLD.threshold:void 0}const As=function(e,t,n,o){const i=e.getScalarData(),{baseVolumeIdx:a,volumeInfoList:r}=xr(e,n);return r.forEach((e=>{const{volumeSize:n}=e;n===i.length?function(e,t,n){const{referenceValues:o,lower:i,upper:a}=n;for(let n=0;n<e.length;n++)if(e[n]===t){const r=o[n];e[n]=r>=i&&r<=a?t:0}}(i,t,e):function(e,t,n,o,i,a){const{imageData:r,lower:s,upper:l,dimensions:d}=n;let c,h,u;for(let n=0;n<e.length;n++)if(e[n]===t){const g=Mr(r,d,o[i].spacing,o[i].imageData.getPoint(n)),v=e=>{let{value:t}=e;c+=1,t>=u.lower&&t<=u.upper&&(h+=1)};c=0,h=0,u={lower:s,upper:l};let m=!1;co(r,(()=>!0),v,g),m=0===a?h>0:h===c,e[n]=m?t:0}}(i,t,e,r,a,o)})),on(e.volumeId),e};function Rs(e,t,n){const o=n.toIJK(e),i=n.toIJK(t),a=Sn.vec3.create(),{testIJK:r}=n,s=Sn.vec3.sub(Sn.vec3.create(),o,i),l=Math.round(Math.max(...s.map(Math.abs)));if(l<2)return!0;const d=Sn.vec3.scale(Sn.vec3.create(),s,1/l);for(let e=1;e<l;e++)if(Sn.vec3.scaleAndAdd(a,i,d,e),!r(a))return!1;return!0}const Ls=.01;function Ns(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{maxMajor:0,maxMinor:0};const{points:o}=e.polyData,{maxMinor:i,maxMajor:a}=n;let r,s=a*a,l=i*i;for(let e=0;e<o.length;e++)for(let n=e+1;n<o.length;n++){const i=o[e],a=o[n],d=Sn.vec3.sqrDist(i,a);d<s||d-Ls<s+Ls&&r||t.testCenter(i,a)&&Rs(i,a,t)&&(s=d-Ls,r=[e,n],l=0)}if(!r)return;s=Math.sqrt(s+Ls);const d=o[r[0]],c=o[r[1]],h=Sn.vec3.sub(Sn.vec3.create(),d,c);let u;Sn.vec3.scale(h,h,1/s);for(let e=0;e<o.length;e++)for(let n=e+1;n<o.length;n++){const i=o[e],a=o[n],r=Sn.vec3.sqrDist(i,a);if(r<=l)continue;const s=Sn.vec3.sub(Sn.vec3.create(),i,a);Math.abs(Sn.vec3.dot(s,h))/Math.sqrt(r)>Ls||t.testCenter(i,a)&&Rs(i,a,t)&&(l=r,u=[e,n])}return u?(l=Math.sqrt(l),{majorAxis:[d,c],minorAxis:[o[u[0]],o[u[1]]],maxMajor:s,maxMinor:l,...e}):void 0}const{Labelmap:ks}=Ct;function Us(e){const t=Bo({segmentations:e});if(null==t||!t.length||!t[0].sliceContours.length)return;const{representationData:n,segments:o=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=e,{volumeId:i}=n[ks],a=o.findIndex((e=>!!e));return-1!==a?(o[a].segmentIndex=a,function(e,t,n){const{sliceContours:o}=e,{segmentIndex:i,containedSegmentIndices:a}=n;let r;const s=function(e,t,n){const o=oe.cache.getVolume(e);if(!o)return void console.warn("No volume found for ".concat(e));const i=o.imageData.getPointData().getScalars().getData(),a=o.dimensions[0],r=a*o.dimensions[1];return{testCenter:(e,s)=>{const l=Sn.vec3.add(Sn.vec3.create(),e,s).map((e=>e/2)),d=o.imageData.worldToIndex(l).map(Math.round),[c,h,u]=d,g=i[c+h*a+u*r];return g===t||(null==n?void 0:n.has(g))},toIJK:e=>o.imageData.worldToIndex(e),testIJK:e=>{const[o,s,l]=e,d=Math.round(o)+Math.round(s)*a+Math.round(l)*r,c=i[d];return c===t||(null==n?void 0:n.has(c))}}}(t,i,a);for(const e of o){const t=Ns(e,s,r);t&&(r=t)}return r&&Object.assign(r,n),r}(t[0],i,o[a])):void 0}function Vs(e,t){const{majorAxis:n,minorAxis:o,label:i="",sliceIndex:a}=e,[r,s]=n,[l,d]=o,c=[r,s,l,d];return{highlighted:!0,invalidated:!0,metadata:{toolName:"Bidirectional",...t.getViewReference({sliceIndex:a})},data:{handles:{points:c,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:i,cachedStats:{}},isLocked:!1,isVisible:!0}}function Ws(e){return"number"==typeof e?e?e<0?-1:1:e==e?0:NaN:NaN}function Hs(e,t,n,o){const[i,a]=e,[r,s]=t,[l,d]=n,[c,h]=o,u=s-a,g=i-r,v=r*a-i*s,m=u*l+g*d+v,p=u*c+g*h+v;if(0!==m&&0!==p&&Ws(m)===Ws(p))return;const f=h-d,w=l-c,I=c*d-l*h,E=f*i+w*a+I,C=f*r+w*s+I;if(0!==E&&0!==C&&Ws(E)===Ws(C))return;const _=u*w-f*g;let b;b=g*I-w*v;const T=b/_;return b=f*v-u*I,[T,b/_]}const{transformWorldToIndex:Bs}=oe.utilities;class Fs extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Gs}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"preventHandleOutsideImage",void 0),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles;let l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[1]),c={start:{x:l[0],y:l[1]},end:{x:d[0],y:d[1]}},h=es([c.start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]);return h<=o||(l=a.worldToCanvas(s[2]),d=a.worldToCanvas(s[3]),c={start:{x:l[0],y:l[1]},end:{x:d[0],y:d[1]}},h=es([c.start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]),h<=o)})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),mr(o),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,a=t.data;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());mr(i),this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const{renderingEngine:l}=(0,oe.getEnabledElement)(n);if(void 0!==this.editData.handleIndex){const{points:e}=s.handles,t=Sn.vec3.distance(e[0],e[1]);if(Sn.vec3.distance(e[2],e[3])>t){const t=[[...e[2]],[...e[3]]],n=[...e[0]],o=[...e[1]],i=Sn.vec2.create();Sn.vec2.set(i,t[1][0]-t[0][0],t[1][1]-t[1][0]);const a=Sn.vec2.create();Sn.vec2.set(a,-i[1],i[0]);const r=Sn.vec2.create();let l;Sn.vec2.set(r,o[0]-n[0],o[1]-n[0]),l=Sn.vec2.dot(r,a)>0?[n,o]:[o,n],s.handles.points=[t[0],t[1],l[0],l[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o),this.editData=null,this.isDrawing=!1})),ae(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=(0,oe.getEnabledElement)(o),{renderingEngine:a,viewport:r}=i,{worldToCanvas:s}=r,{annotation:l,viewportIdsToRender:d,handleIndex:c}=this.editData,{data:h}=l,u=n.world;h.handles.points[c]=[...u];const g=h.handles.points.map(s),v={x:g[0][0],y:g[0][1]},m={x:g[1][0],y:g[1][1]},p=(g[2][0],g[2][1],g[3][0],g[3][1],Sn.vec2.distance(g[0],g[1])/3),f=v.x-m.x,w=v.y-m.y,I=Math.sqrt(f*f+w*w),E=f/I,C=w/I,_=(v.x+m.x)/2,b=(v.y+m.y)/2,T=_+p*C,D=b-p*E,S=_-p*C,y=b+p*E;h.handles.points[2]=r.canvasToWorld([T,D]),h.handles.points[3]=r.canvasToWorld([S,y]),l.invalidated=!0,io(d),this.editData.hasMoved=!0})),ae(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{renderingEngine:i}=o,{annotation:a,viewportIdsToRender:r,handleIndex:s,movingTextBox:l}=this.editData,{data:d}=a;if(l){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===s){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),a.invalidated=!0}else this._dragModifyHandle(e),a.invalidated=!0;io(r)})),ae(this,"_dragModifyHandle",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=(0,oe.getEnabledElement)(o),{viewport:a}=i,{annotation:r,handleIndex:s}=this.editData,{data:l}=r,d=n.world,c=[a.worldToCanvas(l.handles.points[0]),a.worldToCanvas(l.handles.points[1]),a.worldToCanvas(l.handles.points[2]),a.worldToCanvas(l.handles.points[3])],h={start:{x:c[0][0],y:c[0][1]},end:{x:c[1][0],y:c[1][1]}},u={start:{x:c[2][0],y:c[2][1]},end:{x:c[3][0],y:c[3][1]}},g=[...d],v=a.worldToCanvas(g);if(0===s||1===s){const e=c[0===s?1:0],t=Sn.vec2.set(Sn.vec2.create(),v[0]-e[0],v[1]-e[1]),n=Sn.vec2.set(Sn.vec2.create(),c[s][0]-e[0],c[s][1]-e[1]);Sn.vec2.normalize(t,t),Sn.vec2.normalize(n,n);const o={start:{x:e[0],y:e[1]},end:{x:v[0],y:v[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(o,u))return;const i=e,r=this._getSignedAngle(n,t);let d=c[2][0],h=c[2][1],m=c[3][0],p=c[3][1];d-=i[0],h-=i[1],m-=i[0],p-=i[1];const f=d*Math.cos(r)-h*Math.sin(r),w=d*Math.sin(r)+h*Math.cos(r),I=m*Math.cos(r)-p*Math.sin(r),E=m*Math.sin(r)+p*Math.cos(r);d=f+i[0],h=w+i[1],m=I+i[0],p=E+i[1];const C=a.canvasToWorld([d,h]),_=a.canvasToWorld([m,p]);l.handles.points[s]=g,l.handles.points[2]=C,l.handles.points[3]=_}else{const e=2===s?3:2,t={longLineSegment:{start:h.start,end:h.end},shortLineSegment:{start:u.start,end:u.end}},n=Sn.vec2.subtract(Sn.vec2.create(),[t.longLineSegment.end.x,t.longLineSegment.end.y],[t.longLineSegment.start.x,t.longLineSegment.start.y]),o=Sn.vec2.normalize(Sn.vec2.create(),n),i=Sn.vec2.subtract(Sn.vec2.create(),[v[0],v[1]],[c[s][0],c[s][1]]),r=Sn.vec2.length(i),d=this._getSignedAngle(o,i),m=Math.cos(d)*r,p=Sn.vec2.scaleAndAdd(Sn.vec2.create(),[c[e][0],c[e][1]],o,m);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:v[0],y:v[1]},end:{x:p[0],y:p[1]}},{start:{x:t.longLineSegment.start.x,y:t.longLineSegment.start.y},end:{x:t.longLineSegment.end.x,y:t.longLineSegment.end.y}}))return;if(!Hs([v[0],v[1]],[p[0],p[1]],[h.start.x,h.start.y],[h.end.x,h.end.y]))return;l.handles.points[e]=a.canvasToWorld(p),l.handles.points[s]=g}})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragDrawCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragDrawCallback)})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!0;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles,v=u.map((e=>a.worldToCanvas(e)));c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f,shadow:w}=this.getAnnotationStyle({annotation:o,styleSpecifier:c});if(h.cachedStats[l]&&null!=h.cachedStats[l].unit?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(h.cachedStats[l]={length:null,width:null,unit:null},this._calculateCachedStats(o,d,e)),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let I;if(!Re(r))continue;ue(o)||this.editData||null===g||(I=[v[g]]),I&&Ar(t,r,"0",I,{color:m});const E="".concat(r,"-line-1"),C="".concat(r,"-line-2");Zr(t,r,"0",v[0],v[1],{color:m,lineDash:f,lineWidth:p,shadow:w},E),Zr(t,r,"1",v[2],v[3],{color:m,lineDash:f,lineWidth:p,shadow:w},C),i=!0;const _=this.getLinkedTextBoxStyle(c,o);if(!_.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const b=this.configuration.getTextLines(h,l);if(!b||0===b.length)continue;let T;h.handles.textBox.hasMoved||(T=ns(v),h.handles.textBox.worldPosition=a.canvasToWorld(T));const D=a.worldToCanvas(h.handles.textBox.worldPosition),S=Qr(t,r,"1",b,D,v,{},_),{x:y,y:M,width:x,height:O}=S;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([y,M]),topRight:a.canvasToWorld([y+x,M]),bottomLeft:a.canvasToWorld([y,M+O]),bottomRight:a.canvasToWorld([y+x,M+O])}}return i})),ae(this,"_movingLongAxisWouldPutItThroughShortAxis",((e,t)=>{const n=Sn.vec2.create();Sn.vec2.set(n,t.end.x-t.start.x,t.end.y-t.start.y),Sn.vec2.normalize(n,n);const o={start:{x:t.start.x-10*n[0],y:t.start.y-10*n[1]},end:{x:t.end.x+10*n[0],y:t.end.y+10*n[1]}};return!Hs([o.start.x,o.start.y],[o.end.x,o.end.y],[e.start.x,e.start.y],[e.end.x,e.end.y])})),ae(this,"_calculateCachedStats",((e,t,n)=>{const{data:o}=e,{element:i}=n.viewport,a=o.handles.points[0],r=o.handles.points[1],s=o.handles.points[2],l=o.handles.points[3],{cachedStats:d}=o,c=Object.keys(d);for(let e=0;e<c.length;e++){const n=c[e],o=this.getTargetIdImage(n,t);if(!o)continue;const{imageData:i,dimensions:h}=o,u=Bs(i,a),g=Bs(i,r),v=Bs(i,s),m=Bs(i,l),p=[u,g],f=[v,m],{scale:w,lengthUnits:I}=Ln(o,p),{scale:E,lengthUnits:C}=Ln(o,f),_=this._calculateLength(a,r)/w,b=this._calculateLength(s,l)/E,T=_>b?_:b,D=_>b?b:_,S=_>b?I:C,y=_>b?C:I;this._isInsideVolume(u,g,v,m,h)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,d[n]={length:T,width:D,lengthUnits:S,widthUnit:y}}return e.invalidated=!1,Qe(e,i),d})),ae(this,"_isInsideVolume",((e,t,n,o,i)=>oe.utilities.indexWithinDimensions(e,i)&&oe.utilities.indexWithinDimensions(t,i)&&oe.utilities.indexWithinDimensions(n,i)&&oe.utilities.indexWithinDimensions(o,i))),ae(this,"_getSignedAngle",((e,t)=>Math.atan2(e[0]*t[1]-e[1]*t[0],e[0]*t[0]+e[1]*t[1]))),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{handles:{points:[[...i],[...i],[...i],[...i]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(v),g}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}}function Gs(e,t){const{cachedStats:n,label:o}=e,{length:i,width:a,unit:r,lengthUnits:s,widthUnit:l}=n[t],d=[];return o&&d.push(o),void 0===i||d.push("L: ".concat(Qd(i)," ").concat(s||r),"W: ".concat(Qd(a)," ").concat(l||r)),d}ae(Fs,"toolName",void 0),Fs.toolName="Bidirectional";const qs=Fs;function zs(e,t){const{data:n}=t,o=(0,oe.getEnabledElement)(e),i=(n.getSegment||js)(o,n);if(!i)return;const a=o.viewport.getFrameOfReferenceUID(),r=Nu(),{segmentIndex:s,segmentationId:l}=i,d=st(this.toolName||qs.toolName,a);let c=!1;const h=d.filter((e=>{const{segment:t}=e.data;if(t)return t.segmentationId===l&&t.segmentIndex===s&&(c=!0,e.data.segment=t),!!t}));let u;if(c||h.push({data:{segment:i}}),h.forEach((e=>{const t=[],{segment:n}=e.data,{segmentIndex:s,segmentationId:l}=n;t[s]=n,mt(e.annotationUID);const d=Us({...r.find((e=>e.segmentationId===l)),segments:t});if(!d)return;const c=Vs(d,o.viewport);c.annotationUID=e.annotationUID,c.data.segment=n;const h=gt(c,a);if(n.segmentIndex===i.segmentIndex&&n.segmentationId===i.segmentationId){u=d;const{style:e}=i;e&&Wr.setAnnotationStyles(h,e)}})),u){const{sliceIndex:t}=u,n=o.viewport.getImageIds();lo(e,{imageIndex:n.length-1-t}),o.viewport.render()}else console.warn("No bidirectional found");return u}function js(e,t){var n,o;const i=Nu();if(!i.length)return;const a=t.segmentationId||i[0].segmentationId,r=null!==(n=t.segmentIndex)&&void 0!==n?n:Tr(a);if(!r)return;const s=null===(o=t.segmentData)||void 0===o?void 0:o.get(r);return{label:"Segment ".concat(r),segmentIndex:r,segmentationId:a,...s}}const Ks=1e-6;function Ys(e){let t;const n=oe.utilities.getRandomSampleFromArray(e,50);for(let e=0;e<3;e++)if(n.every(((t,n,o)=>Math.abs(t[e]-o[0][e])<Ks))){t=e;break}if(void 0===t)throw new Error("Cannot find a shared dimension index for polyline, probably oblique plane");const o=[],i=(t+1)%3,a=(t+2)%3;for(let t=0;t<e.length;t++)o.push([e[t][i],e[t][a]]);return{sharedDimensionIndex:t,projectedPolyline:o}}function Xs(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{sharedDimensionIndex:o,projectedPolyline:i}=Ys(t),{holes:a}=n,r=[];if(a)for(let e=0;e<a.length;e++){const t=a[e],n=[];for(let e=0;e<t.length;e++)n.push([t[e][(o+1)%3],t[e][(o+2)%3]]);r.push(n)}return Ii(i,[e[(o+1)%3],e[(o+2)%3]],{holes:r})}function Js(e,t){var n;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=Lu(e),a=i.representationData,r=null!==(n=null==o?void 0:o.representationType)&&void 0!==n?n:Object.keys(a)[0];if(!r)throw new Error("Segmentation ".concat(e," does not have any representations"));switch(r){case Ct.Labelmap:return function(e,t,n){let{viewport:o}=n;const i=e.representationData.LABELMAP;if(Xt(i)){const{volumeId:e}=i,n=oe.cache.getVolume(e);if(!n)return;return n.imageData.getScalarValueFromWorld(t)}const a=rg(o.id,e.segmentationId);if(!oe.cache.getImage(a))return;const r=Wu(e.segmentationId),{segmentationRepresentationUID:s}=r[0],l=o.getActor(s),d=null==l?void 0:l.actor.getMapper().getInputData(),c=oe.utilities.transformWorldToIndex(d,t),h=d.getDimensions();return(d.voxelManager||oe.utilities.VoxelManager.createVolumeVoxelManager(h,d.getPointData().getScalars().getData())).getAtIJKPoint(c)}(i,t,o);case Ct.Contour:return function(e,t,n){let{viewport:o}=n;const i=e.representationData.CONTOUR,a=Array.from(i.annotationUIDsMap.keys()),{viewPlaneNormal:r}=o.getCamera();for(const e of a){const n=i.annotationUIDsMap.get(e);if(n)for(const o of n){const n=pt(o);if(!n)continue;const{polyline:i}=n.data.contour;if(oe.utilities.isEqual(r,n.metadata.viewPlaneNormal)&&Xs(t,i))return Number(e)}}}(i,t,o);default:return}}function Zs(e,t,n){let{viewport:o,searchRadius:i}=n;const a=Lu(e),r=a.representationData.LABELMAP;if(Xt(r)){const{volumeId:e}=r,n=oe.cache.getVolume(e);if(!n)return;const a=n.imageData,s=a.getScalarValueFromWorld(t),l=function(e,t,n,o,i){return $s(((t,i)=>{const a=[e[0]+t,e[1]+i],r=n.canvasToWorld(a);return o.getScalarValueFromWorld(r)}),t,i)}(o.worldToCanvas(t),s,o,a,i);return l?s:void 0}const s=rg(o.id,e);if(o.getCurrentImageId(),!oe.cache.getImage(s))return;const l=Wu(a.segmentationId),{segmentationRepresentationUID:d}=l[0],c=o.getActor(d),h=null==c?void 0:c.actor.getMapper().getInputData(),u=oe.utilities.transformWorldToIndex(h,t),g=h.getDimensions(),v=h.voxelManager||oe.utilities.VoxelManager.createVolumeVoxelManager(g,h.getPointData().getScalars().getData()),m=v.getAtIJKPoint(u),p=function(e,t,n,o,i){return $s(((t,o,i)=>{const a=[e[0]+t,e[1]+o,e[2]+i];return n.getAtIJK(...a)}),o,void 0)}(u,0,v,m);return p?m:void 0}function $s(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=Array.from({length:2*n+1},((e,t)=>t-n));for(const n of o)for(const i of o)for(const a of o){if(0===n&&0===i&&0===a)continue;const o=e(n,i,a);if(void 0!==o&&t!==o)return!0}return!1}function Qs(e){const t=Lu(e),{annotationUIDsMap:n}=t.representationData.CONTOUR;for(const[e,t]of n.entries())if(Array.from(t).find((e=>pt(e).highlighted)))return e}function el(e,t){const n=e.maxX-e.minX,o=e.maxY-e.minY,i=[n,o],a=[e.minX+n/2,e.minY+o/2],r=[Math.abs(t[0]-a[0]),Math.abs(t[1]-a[1])],s=r[0]-.5*i[0],l=r[1]-.5*i[1];if(s>0&&l>0)return s*s+l*l;const d=Math.max(s,0)+Math.max(l,0);return d*d}function tl(e,t){return Math.sqrt(el(e,t))}function nl(e,t){return Math.sqrt(Xo(e,t))}function ol(e,t){const[n,o]=e,[i,a]=t;return[2*i-n,2*a-o]}function il(e){const t=e.length;let n=0,o=t-1;for(let i=0;i<t;i++)n+=(e[o][0]+e[i][0])*(e[o][1]-e[i][1]),o=i;return Math.abs(n/2)}function al(e){const t=function(e){const t=Sn.vec3.create(),n=e[0];for(let o=0,i=e.length;o<i;o++){const a=e[o],r=e[o===i-1?0:o+1],s=a[0]-n[0],l=a[1]-n[1],d=a[2]-n[2],c=r[0]-n[0],h=r[1]-n[1],u=r[2]-n[2];t[0]+=l*u-d*h,t[1]+=d*c-s*u,t[2]+=s*h-l*c}return Sn.vec3.scale(t,t,.5),t}(e);return Sn.vec3.normalize(t,t)}function rl(e,t,n){const o=[],i=Ci(e,t,n,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]);for(let a=0;a<i.length;a++){const r=Si(t,n,e[i[a][0]],e[i[a][1]]);o.push(r)}return o}function sl(e,t,n){let o,i;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(i=0,o=1):(i=e.length-1,o=0);const a=[];for(let r=o;r<e.length;r++){const o=e[i],s=e[r];gi(t,n,o,s)&&a.push([i,r]),i=r}if(0===a.length)return;const r=[];a.forEach((n=>{const o=[e[n[0]],e[n[1]]],i=[(o[0][0]+o[1][0])/2,(o[0][1]+o[1][1])/2];r.push(Sn.vec2.distance(i,t))}));const s=Math.min(...r);return{segment:a[r.indexOf(s)],distance:s}}const ll=.001,dl=(e,t)=>{let n,o,i;if(e instanceof oe.StackViewport){const t=e.getImageData();o=t.direction.slice(0,3),i=t.direction.slice(3,6),n=t.spacing}else{const t=e.getImageData(),{direction:a,spacing:r}=t,{viewPlaneNormal:s,viewUp:l}=e.getCamera(),d=a.slice(0,3),c=a.slice(3,6),h=a.slice(6,9),u=Sn.vec3.create();Sn.vec3.cross(u,l,s);const g=Math.abs(Sn.vec3.dot(u,d)),v=Math.abs(Sn.vec3.dot(u,c)),m=Math.abs(Sn.vec3.dot(u,h));let p;if(Math.abs(1-g)<ll)p=r[0],o=d;else if(Math.abs(1-v)<ll)p=r[1],o=c;else{if(!(Math.abs(1-m)<ll))throw new Error("No support yet for oblique plane planar contours");p=r[2],o=h}const f=Math.abs(Sn.vec3.dot(l,d)),w=Math.abs(Sn.vec3.dot(l,c)),I=Math.abs(Sn.vec3.dot(l,h));let E;if(Math.abs(1-f)<ll)E=r[0],i=d;else if(Math.abs(1-w)<ll)E=r[1],i=c;else{if(!(Math.abs(1-I)<ll))throw new Error("No support yet for oblique plane planar contours");E=r[2],i=h}n=[p,E]}return{spacing:[n[0]/t,n[1]/t],xDir:o,yDir:i}},cl=(e,t,n)=>Sn.vec2.dist(e,t)<n,hl=(e,t,n,o)=>{const{xDir:i,yDir:a,spacing:r}=o,s=(0,oe.getEnabledElement)(e),{viewport:l}=s;if(!t.length)return t.push(n),console.log(">>>>> !canvasPoints. :: RETURN"),1;const d=l.canvasToWorld(t[t.length-1]),c=l.canvasToWorld(n),h=Sn.vec3.create();Sn.vec3.subtract(h,c,d);const u=Math.abs(Sn.vec3.dot(h,i)),g=Math.abs(Sn.vec3.dot(h,a)),v=Math.max(Math.floor(u/r[0]),Math.floor(g/r[0]));if(v>1){const e=t[t.length-1],o=Sn.vec2.dist(e,n),i=Sn.vec2.create();Sn.vec2.subtract(i,n,e),Sn.vec2.set(i,i[0]/o,i[1]/o);const a=o/v;for(let n=1;n<=v;n++)t.push([e[0]+a*i[0]*n,e[1]+a*i[1]*n])}else t.push(n);return v},ul=(e,t,n,o)=>{const i=[e[0]-t[0],e[1]-t[1]],a=[n[0]-t[0],n[1]-t[1]],r=i[0]*a[0]+i[1]*a[1];if(r<0)return!1;const s=Math.sqrt(a[0]*a[0]+a[1]*a[1]);if(0===s)return!1;const l=r/s,d=[a[0]/s,a[1]/s],c=[d[0]*l,d[1]*l],h=[t[0]+c[0],t[1]+c[1]];return!(Sn.vec2.distance(e,h)>o||Sn.vec2.distance(t,h)>Sn.vec2.distance(t,n))},gl=1e-6,vl=1,ml=0;function pl(e,t,n){const[o,i]=n;if(Math.abs(t)<gl)return e<0;const a=e/t;if(t>0){if(a>i)return 0;a>o&&(n[0]=a)}else{if(a<o)return 0;a<i&&(n[1]=a)}return 1}function fl(e,t,n,o,i){const[a,r]=e,[s,l]=t,d=s-a,c=l-r;if(void 0===o||void 0===i?(o=e,i=t):(o[0]=e[0],o[1]=e[1],i[0]=t[0],i[1]=t[1]),Math.abs(d)<gl&&Math.abs(c)<gl&&a>=n[0]&&a<=n[2]&&r>=n[1]&&r<=n[3])return vl;const h=[0,1];if(pl(n[0]-a,d,h)&&pl(a-n[2],-d,h)&&pl(n[1]-r,c,h)&&pl(r-n[3],-c,h)){const[e,t]=h;return t<1&&(i[0]=a+t*d,i[1]=r+t*c),e>0&&(o[0]+=e*d,o[1]+=e*c),vl}return ml}var wl=E(807),Il=E.n(wl);function El(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.25;const a=e.getCamera(),{position:r}=a,{spacingInNormalDirection:s}=oe.utilities.getTargetVolumeAndSpacingInNormalDir(e,a,n),l=s*i,d=e.getBounds(),c=d[0],h=d[1],u=[0,0,0];let g,v=[0,0,0];Il().subtract(t,r,u);for(let t=c;t<=h;t+=l){v=[t,0,0];const n=(t-r[0])/u[0];if(v[1]=n*u[1]+r[1],v[2]=n*u[2]+r[2],Cl(v,d)){const t=o(e.getIntensityFromWorld(v),v);t&&(g=t)}}return g}const Cl=function(e,t){const[n,o,i,a,r,s]=t;return e[0]>n&&e[0]<o&&e[1]>i&&e[1]<a&&e[2]>r&&e[2]<s},_l=(e,t,n,o,i,a,r,s)=>{const l=[Sn.vec3.fromValues(n,o,i),Sn.vec3.fromValues(a,o,i),Sn.vec3.fromValues(n,r,i),Sn.vec3.fromValues(a,r,i),Sn.vec3.fromValues(n,o,s),Sn.vec3.fromValues(a,o,s),Sn.vec3.fromValues(n,r,s),Sn.vec3.fromValues(a,r,s)],d=Sn.vec3.fromValues(t[0],t[1],t[2]),c=Sn.vec3.fromValues(e[0],e[1],e[2]),h=-Sn.vec3.dot(d,c);let u=null;for(const e of l){const t=Sn.vec3.dot(d,e)+h;if(null===u)u=Math.sign(t);else if(Math.sign(t)!==u)return!0}return!1},bl={filterAnnotationsWithinSlice:Ur,getWorldWidthAndHeightFromCorners:os,filterAnnotationsForDisplay:Vr,getPointInLineOfSightWithCriteria:El,isPlaneIntersectingAABB:_l};function Tl(e){let t="";const n=e[0]<0?"R":"L",o=e[1]<0?"A":"P",i=e[2]<0?"F":"H",a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=1e-4;for(let e=0;e<3;e++)if(a[0]>r&&a[0]>a[1]&&a[0]>a[2])t+=n,a[0]=0;else if(a[1]>r&&a[1]>a[0]&&a[1]>a[2])t+=o,a[1]=0;else if(a[2]>r&&a[2]>a[0]&&a[2]>a[1])t+=i,a[2]=0;else if(a[0]>r&&a[1]>r&&a[0]===a[1])t+=n+o,a[0]=0,a[1]=0;else if(a[0]>r&&a[2]>r&&a[0]===a[2])t+=n+i,a[0]=0,a[2]=0;else{if(!(a[1]>r&&a[2]>r&&a[1]===a[2]))break;t+=o+i,a[1]=0,a[2]=0}return t}function Dl(e){let t=e.replace("H","f");return t=t.replace("F","h"),t=t.replace("R","l"),t=t.replace("L","r"),t=t.replace("A","p"),t=t.replace("P","a"),t=t.toUpperCase(),t}var Sl=function(e){return e.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",e.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED",e}(Sl||{});const yl=Sl,Ml={};function xl(e,t){const n=(0,oe.getEnabledElement)(e),{viewportId:o}=n;Ml[o]=t}function Ol(e){const t=(0,oe.getEnabledElement)(e),{viewportId:n}=t;return Ml[n]}const{ViewportStatus:Pl}=oe.Enums,{triggerEvent:Al}=oe.utilities,Rl=!0,Ll=new Map;function Nl(e,t){var n;let o,i;if(void 0===e)throw new Error("playClip: element must not be undefined");const a=(0,oe.getEnabledElement)(e);if(!a)throw new Error("playClip: element must be a valid Cornerstone enabled element");t||(t={}),t.dynamicCineEnabled=null===(n=t.dynamicCineEnabled)||void 0===n||n;const{viewport:r}=a,s=Wl(r),l=function(e,t){var n;if(e instanceof oe.StackViewport)return function(e,t){const n=e.getImageIds();return{get numScrollSteps(){return n.length},get currentStepIndex(){return e.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(n){this.waitForRenderedCount<=t&&e.viewportStatus!==Pl.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,so(e,{delta:n,debounceLoading:Rl}))}}}(e,null!==(n=t.waitForRendered)&&void 0!==n?n:30);if(e instanceof oe.VolumeViewport){const n=Wl(e);return t.dynamicCineEnabled&&null!=n&&n.isDynamicVolume()?function(e){return{get numScrollSteps(){return e.numTimePoints},get currentStepIndex(){return e.timePointIndex},get frameTimeVectorEnabled(){return!1},scroll(t){e.timePointIndex+=t}}}(n):function(e,t){const{volumeId:n}=t,o={viewPlaneNormal:Sn.vec3.create(),scrollInfo:null},i=()=>{const t=e.getCamera();if(!o.scrollInfo||!Sn.vec3.equals(t.viewPlaneNormal,o.viewPlaneNormal)){const i=oe.utilities.getVolumeViewportScrollInfo(e,n);o.viewPlaneNormal=t.viewPlaneNormal,o.scrollInfo=i}return o.scrollInfo};return{get numScrollSteps(){return i().numScrollSteps},get currentStepIndex(){return i().currentStepIndex},get frameTimeVectorEnabled(){const n=e.getCamera(),o=t.direction.slice(6,9).map((e=>-e)),i=Sn.vec3.dot(o,n.viewPlaneNormal);return Sn.glMatrix.equals(i,1)},scroll(t){i().currentStepIndex+=t,so(e,{delta:t})}}}(e,n)}throw new Error("Unknown viewport type")}(r,t);let d=Ol(e);const c=t.dynamicCineEnabled&&(null==s?void 0:s.isDynamicVolume());var h,u,g,v;if(c&&Vl(e),d?Ul(e,{stopDynamicCine:!c,viewportId:r.id}):(d={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:null!==(h=t.frameTimeVector)&&void 0!==h?h:void 0,speed:null!==(u=t.frameTimeVectorSpeedMultiplier)&&void 0!==u?u:1,reverse:null!==(g=t.reverse)&&void 0!==g&&g,loop:null===(v=t.loop)||void 0===v||v},xl(e,d)),d.dynamicCineEnabled=t.dynamicCineEnabled,(t.framesPerSecond<0||t.framesPerSecond>0)&&(d.framesPerSecond=Number(t.framesPerSecond),d.reverse=d.framesPerSecond<0,d.ignoreFrameTimeVector=!0),!0!==d.ignoreFrameTimeVector&&d.frameTimeVector&&d.frameTimeVector.length===l.numScrollSteps&&l.frameTimeVectorEnabled){const{timeouts:e,isTimeVarying:t}=function(e,t){let n,o,i,a=0;const r=e.length,s=[];let l=!1;for(("number"!=typeof t||t<=0)&&(t=1),n=1;n<r;n++)i=Number(e[n])/t|0,s.push(i),1===n?o=i:i!==o&&(l=!0),a+=i;return s.length>0&&(i=l?a/s.length|0:s[0],s.push(i)),{timeouts:s,isTimeVarying:l}}(d.frameTimeVector,d.speed);o=e,i=t}const m=()=>{const{numScrollSteps:t,currentStepIndex:n}=l;let o=n+(d.reverse?-1:1);const i=o<0||o>=t;if(!d.loop&&i){Ul(e,{stopDynamicCine:!c,viewportId:r.id});const t={element:e};return void Al(e,yl.CLIP_STOPPED,t)}o>=t?o=0:o<0&&(o=t-1);const a=o-n;a&&l.scroll(a)};c&&Ll.set(s.volumeId,e),o&&o.length>0&&i?(d.usingFrameTimeVector=!0,d.intervalId=window.setTimeout((function e(){d.intervalId=window.setTimeout(e,o[l.currentStepIndex]),m()}),0)):(d.usingFrameTimeVector=!1,d.intervalId=window.setInterval(m,1e3/Math.abs(d.framesPerSecond)));const p={element:e};Al(e,yl.CLIP_STARTED,p)}function kl(e){Ul(e,{stopDynamicCine:!0,...arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}})}function Ul(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{stopDynamicCine:!0,viewportId:void 0};const{stopDynamicCine:n,viewportId:o}=t,i=(0,oe.getEnabledElement)(e);let a;if(i){const{viewport:e}=i;a=Ol(e.element)}else{if(!o)return;a=function(e){return Ml[e]}(o)}a&&function(e){const t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}(a),n&&(null==i?void 0:i.viewport)instanceof oe.BaseVolumeViewport&&Vl(e)}function Vl(e){const{viewport:t}=(0,oe.getEnabledElement)(e),n=Wl(t);if(null!=n&&n.isDynamicVolume()){const t=Ll.get(n.volumeId);Ll.delete(n.volumeId),t&&t!==e&&kl(t)}}function Wl(e){const t=function(e){return e.getActors().map((e=>oe.cache.getVolume(e.uid))).filter((e=>!!e))}(e),n=t.find((e=>e.isDynamicVolume()));return null!=n?n:t[0]}function Hl(e){var t=e.length-1;return function(n){var o=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[o],a=e[o+1],r=o>0?e[o-1]:2*i-a,s=o<t-1?e[o+2]:2*a-i;return function(e,t,n,o,i){var a=e*e,r=a*e;return((1-3*e+3*a-r)*t+(4-6*a+3*r)*n+(1+3*e+3*a-3*r)*o+r*i)/6}((n-o/t)*t,r,i,a,s)}}function Bl(e,t){for(var n=new Array(t),o=0;o<t;++o)n[o]=e(o/(t-1));return n}function Fl(e){return e.length}function Gl(){return function(e){if(!(i=e.length))return[];for(var t=-1,n=function(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let o=-1;for(let i of e)null!=(i=t(i,++o,e))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}(e,Fl),o=new Array(n);++t<n;)for(var i,a=-1,r=o[t]=new Array(i);++a<i;)r[a]=e[a][t];return o}(arguments)}function ql(e,t,n,o){var i,a;const r=n-t+1,s=null!==(i=Math.floor(o/100*r))&&void 0!==i?i:1,l=null!==(a=Math.floor(r/s))&&void 0!==a?a:1;if(isNaN(r)||!r||!l)return e;if(r/l<2)return e;const d=Math.max(0,t),c=Math.min(e.length-1,n),h=e.slice(0,d),u=e.slice(c+1,e.length);return[...h,...function(e,t){if(!t||0===t.length||t.length===e.length)return e;const n=t[t.length-1]-t[0]+1,o=Hl(t.map((t=>e[t][0]))),i=Hl(t.map((t=>e[t][1])));if(3===(null===(a=e[0])||void 0===a?void 0:a.length)){const a=Hl(t.map((t=>e[t][2])));return Gl(Bl(o,n),Bl(i,n),Bl(a,n))}return Gl(Bl(o,n),Bl(i,n));var a}(e,function(e,t){const n=[],[o,i]=t,a=i-o+1,r=Math.floor(a/e);let s=0,l=Math.round((a-1)/(r-1)*s)+o;for(;l<=i;)n.push(l),s++,l=Math.round((a-1)/(r-1)*s)+o;return n}(l,[d,c])),...u]}function zl(e,t,n){if(function(e,t,n){var o;if(null==t||null===(o=t.data)||void 0===o||!o.polyline||n<=0)return!0;if(!e.viewport)return!0;const{renderingEngineId:i,viewportId:a,FrameOfReferenceUID:r}=e,s=Vn(a,i);if(t.metadata.FrameOfReferenceUID!==r)return!0;if(!s)return!0;const l=s.getToolInstance(t.metadata.toolName);return!(l instanceof qh)||l.isDrawing||l.isEditingOpen||l.isEditingClosed}(e,t,n))return!1;const{viewport:o}=e,i=t.data.contour.polyline.map(o.worldToCanvas),a=ql(i,0,i.length,n);return a!==i&&(t.data.contour.polyline=a.map(o.canvasToWorld),!0)}const jl={smoothAnnotation:zl},{isEqual:Kl}=oe.utilities,Yl=[Sn.vec3.fromValues(1,0,0),Sn.vec3.fromValues(0,1,0),Sn.vec3.fromValues(0,0,1)];function Xl(e){const t=Sn.vec3.subtract(Sn.vec3.create(),e[0],e[1]),n=Sn.vec3.subtract(Sn.vec3.create(),e[0],e[2]);return[...Jl(t,Yl),...Jl(n,Yl)].every((e=>Kl(e,0)||Kl(e,90)||Kl(e,180)||Kl(e,270)))}function Jl(e,t){return t.map((t=>180*Sn.vec3.angle(e,t)/Math.PI))}const Zl={};function $l(e,t){const n=(0,oe.getEnabledElement)(e),{viewportId:o}=n;Zl[o]=t}function Ql(e){const t=(0,oe.getEnabledElement)(e),{viewportId:n}=t;return Zl[n]}const ed=oe.Enums.RequestType.Prefetch,td=0;function nd(e,t){e=Math.round(e)||0;const n=[];let o=(t=Math.round(t)||0)-e+1;if(o<=0)return n;for(;o--;)n[o]=t--;return n}function od(e){const t=(0,oe.getEnabledElement)(e);if(!t)return null;const{viewport:n}=t;return n instanceof oe.StackViewport?{currentImageIdIndex:n.getCurrentImageIdIndex(),imageIds:n.getImageIds()}:(console.warn("stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented"),null)}function id(e){return function(t){const n=t.detail;let o;try{o=od(e)}catch(e){return}if(!o||!o.imageIds||0===o.imageIds.length)return;const i=o.imageIds.indexOf(n.imageId);if(i<0)return;const a=Ql(e);a&&a.data&&a.data.length&&a.indicesToRequest.push(i)}}const ad=e=>{const t=new Set(e.imageIds);return e=>e.type!==ed||!t.has(e.additionalDetails.imageId)};let rd,sd={maxImagesToPrefetch:1/0,preserveExistingPool:!0};function ld(e){var t,n;const o=Ql(e);if(!o)return;const i=o||{},a=od(e);if(null==a||null===(t=a.imageIds)||void 0===t||!t.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:r}=a;if(i.enabled&&(i.enabled=null===(n=i.indicesToRequest)||void 0===n?void 0:n.length),!1===i.enabled)return;if(o.indicesToRequest.sort(((e,t)=>e-t)),i.indicesToRequest.slice().forEach((function(e){const t=a.imageIds[e];t&&(Math.abs(r-e)<6?oe.cache.getImageLoadObject(t):oe.cache.isLoaded(t))&&function(e){const t=i.indicesToRequest.indexOf(e);t>-1&&i.indicesToRequest.splice(t,1)}(e)})),!i.indicesToRequest.length)return;sd.preserveExistingPool||oe.imageLoadPoolManager.clearRequestStack(ed);const s=function(e,t){let n=0,o=e.length-1;return e.forEach(((e,i)=>{e<t?n=Math.max(i,n):e>t&&(o=Math.min(i,o))})),{low:n,high:o}}(i.indicesToRequest,a.currentImageIdIndex);let l,d,c=s.low,h=s.high;const u=[];for(;c>=0||h<i.indicesToRequest.length;){const e=a.currentImageIdIndex,t=!(e-i.indicesToRequest[c]>sd.maxImagesToPrefetch)&&c>=0,n=!(i.indicesToRequest[h]-e>sd.maxImagesToPrefetch)&&h<i.indicesToRequest.length;if(!n&&!t)break;t&&(d=i.indicesToRequest[c--],l=a.imageIds[d],u.push(l)),n&&(d=i.indicesToRequest[h++],l=a.imageIds[d],u.push(l))}const g=(e,t)=>oe.imageLoader.loadAndCacheImage(e,t),{useNorm16Texture:v,preferSizeOverAccuracy:m}=(0,oe.getConfiguration)().rendering,p=v||m;u.forEach((e=>{const t={targetBuffer:{type:p?void 0:"Float32Array"},useNativeDataType:p,requestType:ed};oe.imageLoadPoolManager.addRequest(g.bind(null,e,t),ed,{imageId:e},td)}))}function dd(e){clearTimeout(rd),rd=setTimeout((function(){const t=e.target;try{ld(t)}catch(e){return}}),10)}const cd={enable:function(e){const t=od(e);if(!t||!t.imageIds||0===t.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const n={indicesToRequest:nd(0,t.imageIds.length-1),enabled:!0,direction:1},o=n.indicesToRequest.indexOf(t.currentImageIdIndex);n.indicesToRequest.splice(o,1),$l(e,n),ld(e),e.removeEventListener(oe.Enums.Events.STACK_NEW_IMAGE,dd),e.addEventListener(oe.Enums.Events.STACK_NEW_IMAGE,dd);const i=id(e);oe.eventTarget.removeEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,i),oe.eventTarget.addEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,i)},disable:function(e){clearTimeout(rd),e.removeEventListener(oe.Enums.Events.STACK_NEW_IMAGE,dd);const t=id(e);oe.eventTarget.removeEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=Ql(e);n&&n.indicesToRequest.length&&(n.enabled=!1,oe.imageLoadPoolManager.clearRequestStack(ed))},getConfiguration:function(){return sd},setConfiguration:function(e){sd=e}};let hd,ud={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1};function gd(e){var t,n;const o=od(e);if(null==o||null===(t=o.imageIds)||void 0===t||!t.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const i=Ql(e);if(!i)return;const a=i||{};if(a.enabled&&(a.enabled=null===(n=a.indicesToRequest)||void 0===n?void 0:n.length),!1===a.enabled)return;function r(e){const t=a.indicesToRequest.indexOf(e);t>-1&&a.indicesToRequest.splice(t,1)}const s=a.indicesToRequest.slice(),{currentImageIdIndex:l}=o;if(s.forEach((e=>{const t=o.imageIds[e];t&&(Math.abs(l-e)<6?oe.cache.getImageLoadObject(t):oe.cache.isLoaded(t))&&r(e)})),!a.indicesToRequest.length)return;ud.preserveExistingPool||oe.imageLoadPoolManager.filterRequests(ad(o));const d=(t,n)=>oe.imageLoader.loadAndCacheImage(t,n).then((()=>function(t){var n;r(o.imageIds.indexOf(t));const i=oe.cache.getCachedImageBasedOnImageURI(t),{stats:s}=a,l=(null==i||null===(n=i.image)||void 0===n?void 0:n.decodeTimeInMS)||0;if(l){var d;s.imageIds.set(t,l),s.decodeTimeInMS+=l;const e=(null==i||null===(d=i.image)||void 0===d?void 0:d.loadTimeInMS)||0;s.loadTimeInMS+=e}if(!a.indicesToRequest.length&&null!=i&&i.sizeInBytes){const{sizeInBytes:t}=i,n=oe.cache.getMaxCacheSize()/4/t;if(a.cacheFill){if(s.imageIds.size){s.fillTime=Date.now()-s.start;const{size:e}=s.imageIds;s.fillSize=e}}else s.initialTime=Date.now()-s.start,s.initialSize=s.imageIds.size,md(e,n),gd(e)}}(t))),{useNorm16Texture:c,preferSizeOverAccuracy:h}=(0,oe.getConfiguration)().rendering,u=c||h;a.indicesToRequest.forEach((e=>{const t=o.imageIds[e],n={targetBuffer:{type:u?void 0:"Float32Array"},useNativeDataType:u,requestType:ed};oe.imageLoadPoolManager.addRequest(d.bind(null,t,n),ed,{imageId:t},td)}))}function vd(e){clearTimeout(hd),hd=setTimeout((function(){const t=e.target;try{md(t),gd(t)}catch(e){return}}),5)}const md=(e,t)=>{const n=od(e);if(!n||!n.imageIds||0===n.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:o}=n;let{maxAfter:i=2,minBefore:a=2}=ud;const{directionExtraImages:r=10}=ud,s=Ql(e)||{indicesToRequest:[],currentImageIdIndex:o,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},l=o-s.currentImageIdIndex;if(s.direction=l<0?-1:1,s.currentImageIdIndex=o,s.enabled=!0,s.stackCount<100&&(s.stackCount+=r),Math.abs(l)>i||!l)if(s.stackCount=0,t){const e=o/n.imageIds.length;a=Math.ceil(t*e),i=Math.ceil(t*(1-e)),s.cacheFill=!0}else s.cacheFill=!1;else l<0?(a+=s.stackCount,i=0):(i+=s.stackCount,a=0);const d=Math.max(0,o-a),c=Math.min(n.imageIds.length-1,o+i),h=[];for(let e=o+1;e<=c;e++)h.push(e);for(let e=o-1;e>=d;e--)h.push(e);s.indicesToRequest=h,$l(e,s)},pd={enable:e=>{const t=od(e);if(!t||!t.imageIds||0===t.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");md(e),gd(e),e.removeEventListener(oe.Enums.Events.STACK_NEW_IMAGE,vd),e.addEventListener(oe.Enums.Events.STACK_NEW_IMAGE,vd);const n=id(e);oe.eventTarget.removeEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n),oe.eventTarget.addEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n)},disable:function(e){clearTimeout(hd),e.removeEventListener(oe.Enums.Events.STACK_NEW_IMAGE,vd);const t=id(e);oe.eventTarget.removeEventListener(oe.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=Ql(e);n&&(n.enabled=!1)},getConfiguration:function(){return ud},setConfiguration:function(e){ud=e}};function fd(e,t){if(!(e instanceof oe.VolumeViewport))return;const{focalPoint:n}=e.getCamera(),o=[0,0,0];return Sn.vec3.sub(o,t,n),function(e,t){const n=e.getCamera(),o=n.viewPlaneNormal,i=Sn.vec3.dot(t,o),a=Sn.vec3.fromValues(o[0],o[1],o[2]);if(Sn.vec3.scale(a,a,i),Math.abs(a[0])>.001||Math.abs(a[1])>.001||Math.abs(a[2])>.001){const t=[0,0,0],o=[0,0,0];Sn.vec3.add(t,n.focalPoint,a),Sn.vec3.add(o,n.position,a),e.setCamera({focalPoint:t,position:o}),e.render()}}(e,o),!0}function wd(e,t){const n=Td(e),o=Td(t);return{page:Sd(n.page,o.page),client:Sd(n.client,o.client),canvas:Sd(n.canvas,o.canvas),world:(i=n.world,a=o.world,[i[0]-a[0],i[1]-a[1],i[2]-a[2]])};var i,a}function Id(e,t){const n=Td(e),o=Td(t);return{page:Md(n.page,o.page),client:Md(n.client,o.client),canvas:Md(n.canvas,o.canvas),world:xd(n.world,o.world)}}function Ed(e,t){}function Cd(e,t){const n=yd(e),o=yd(t);return{page:n.page-o.page,client:n.client-o.client,canvas:n.canvas-o.canvas,world:n.world-o.world}}function _d(e){return JSON.parse(JSON.stringify(e))}function bd(e){return JSON.parse(JSON.stringify(e))}function Td(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length]})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function Dd(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length],touch:{identifier:null,radiusX:t.touch.radiusX+n.touch.radiusX/e.length,radiusY:t.touch.radiusY+n.touch.radiusY/e.length,force:t.touch.force+n.touch.force/e.length,rotationAngle:t.touch.rotationAngle+n.touch.rotationAngle/e.length}})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function Sd(e,t){return[e[0]-t[0],e[1]-t[1]]}function yd(e){const t=[];for(let n=0;n<e.length;n++)for(let o=0;o<e.length;o++)n<o&&t.push({page:Md(e[n].page,e[o].page),client:Md(e[n].client,e[o].client),canvas:Md(e[n].canvas,e[o].canvas),world:xd(e[n].world,e[o].world)});return t.reduce(((e,n)=>({page:e.page+n.page/t.length,client:e.client+n.client/t.length,canvas:e.canvas+n.canvas/t.length,world:e.world+n.world/t.length})),{page:0,client:0,canvas:0,world:0})}function Md(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function xd(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))}const Od=function(e,t){const n=t.frameNumbers||[...Array(e.numTimePoints).keys()];if(!t.maskVolumeId&&!t.worldCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(t.maskVolumeId&&t.worldCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(t.maskVolumeId){const o=oe.cache.getVolume(t.maskVolumeId),[i,a]=function(e,t,n){const{imageData:o}=n,i=n.getScalarData(),a=i.length,r=[];r.length=a;const s=[],l=n.dimensions;let d=0;for(let e=0,t=i.length;e<t;e++)0!==i[e]&&(s.push([e%l[0],Math.floor(e/l[0]%l[1]),Math.floor(e/(l[0]*l[1]))]),r[d++]=e);r.length=d;const c=t.getScalarDataArrays(),h=[];if(c[0].length===a&&JSON.stringify(t.spacing)===JSON.stringify(n.spacing)){for(let t=0;t<r.length;t++){const n=[];e.forEach((e=>{const o=c[e];n.push(o[r[t]])})),h.push(n)}return[h,s]}return co(o,(()=>!0),(n=>{let{pointLPS:o,value:i,pointIJK:a}=n;if(0===i)return;const r=Mr(t.imageData,t.dimensions,t.spacing,o);let l=0;const d=new Map;e.forEach((e=>d.set(e,0)));co(t.imageData,(()=>!0),(t=>{let{index:n}=t;for(let t=0;t<e.length;t++){const o=c[t][n],i=e[t];d.set(i,d.get(i)+o)}l++}),r);const u=[];d.forEach((e=>{u.push(e/l)})),s.push(a),h.push(u)})),[h,s]}(n,e,o);return[i,a]}if(t.worldCoordinate){const o=function(e,t,n){const{dimensions:o,imageData:i}=n,a=i.worldToIndex(t);if(a[0]=Math.floor(a[0]),a[1]=Math.floor(a[1]),a[2]=Math.floor(a[2]),!oe.utilities.indexWithinDimensions(a,o))throw new Error("outside bounds");const r=o[0],s=o[0]*o[1],l=n.getScalarDataArrays(),d=[];return e.forEach((e=>{const t=l[e],n=a[2]*s+a[1]*r+a[0];d.push(t[n])})),d}(n,t.worldCoordinate,e);return o}},Pd=function(e,t,n){const o=n||[...Array(e.numTimePoints).keys()],i=o.length;if(o.length<=1)throw new Error("Please provide two or more time points");const a=e.getScalarDataArrays(),r=a[0].length,s=new Float32Array(r);if(t===oe.Enums.DynamicOperatorType.SUM){for(let e=0;e<i;e++){const t=a[o[e]];for(let e=0;e<r;e++)s[e]+=t[e]}return s}if(t===oe.Enums.DynamicOperatorType.SUBTRACT){if(o.length>2)throw new Error("Please provide only 2 time points for subtraction.");for(let e=0;e<r;e++)s[e]+=a[o[0]][e]-a[o[1]][e];return s}if(t===oe.Enums.DynamicOperatorType.AVERAGE){for(let e=0;e<i;e++){const t=a[o[e]];for(let e=0;e<r;e++)s[e]+=t[e]}for(let e=0;e<r;e++)s[e]=s[e]/i;return s}};function Ad(e,t){const n=3*t;if(n<e.length)return Sn.vec3.fromValues(e[n],e[n+1],e[n+2])}function Rd(e){const t=e.getLines().getData();let n=0;const o=new Map;for(;n<t.length;){const e=t[n++],i=[];for(let o=0;o<e;o++)i.push(t[n+o]);o.set(i[0],i),n+=e}const i=[],a=e=>{for(const[t,n]of e.entries())if(void 0!==n)return t;return-1};let r=a(o);for(;-1!==r;){const e=[r];for(;o.has(r);){const t=o.get(r)[1];o.has(t)&&e.push(t),o.delete(r),r=t}i.push(e),r=a(o)}return i.length?i:void 0}function Ld(e){const t=Rd(e);if(!t)return;const n=e.getPoints().getData();return t.map((e=>e.map((e=>Ad(n,e)))))}let Nd=function(e){return e.Top="top",e.Left="left",e.Bottom="bottom",e.Right="right",e}({});const kd=e=>e&&e.upper>e.lower,Ud=(e,t)=>!!e&&!!t&&e.lower===t.lower&&e.upper===t.upper,Vd=e=>!!e&&e.width>0&&e.height>0,Wd=(e,t)=>!!e&&!!t&&e.width===t.width&&e.height===t.height,{clamp:Hd}=oe.utilities;class Bd{constructor(e){ae(this,"_canvas",void 0),ae(this,"_imageRange",void 0),ae(this,"_voiRange",void 0),ae(this,"_colormap",void 0),ae(this,"_showFullImageRange",void 0),Bd.validateProps(e);const{colormap:t,size:n={width:20,height:100},imageRange:o={lower:0,upper:1},voiRange:i={lower:0,upper:1},container:a,showFullPixelValueRange:r=!1}=e;this._colormap=t,this._imageRange=o,this._voiRange=i,this._showFullImageRange=r,this._canvas=this._createRootElement(n),a&&this.appendTo(a)}get colormap(){return this._colormap}set colormap(e){this._colormap=e,this.render()}get size(){const{width:e,height:t}=this._canvas;return{width:e,height:t}}set size(e){const{_canvas:t}=this;Vd(e)&&!Wd(t,e)&&(this._setCanvasSize(t,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){kd(e)&&!Ud(e,this._imageRange)&&(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){kd(e)&&!Ud(e,this._voiRange)&&(this._voiRange=e,this.render())}get showFullImageRange(){return this._showFullImageRange}set showFullImageRange(e){e!==this._showFullImageRange&&(this._showFullImageRange=e,this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}dispose(){const{_canvas:e}=this,{parentElement:t}=e;null==t||t.removeChild(e)}static validateProps(e){const{size:t,imageRange:n,voiRange:o}=e;if(t&&!Vd(t))throw new Error('Invalid "size"');if(n&&!kd(n))throw new Error('Invalid "imageRange"');if(o&&!kd(o))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,t){const{width:n,height:o}=t;e.width=n,e.height=o,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(o,"px")})}_createRootElement(e){const t=document.createElement("canvas");return Object.assign(t.style,{position:"absolute",top:"0",left:"0",pointerEvents:"none",boxSizing:"border-box"}),this._setCanvasSize(t,e),t}render(){if(!this._canvas.isConnected)return;const{_colormap:e}=this,{RGBPoints:t}=e,n=t.length/4,o=e=>{const o=4*e;if(!(e<0||e>=n))return{index:e,position:t[o],color:[t[o+1],t[o+2],t[o+3]]}},{width:i,height:a}=this._canvas,r=this._canvas.getContext("2d"),s=i>a,l=s?i:a,{_voiRange:d}=this,c=this._showFullImageRange?this._imageRange:{...d},{windowWidth:h}=oe.utilities.windowLevel.toWindowLevel(d.lower,d.upper);let u,g=o(0);const v=(c.upper-c.lower)/(l-1);let m=c.lower;for(let e=0;e<l;e++){const t=(m-d.lower)/h;if(g)for(let e=g.index;e<n&&!(t<=g.position);e++)u=g,g=o(e+1);let l;if(u)if(g){const e=(t-u.position)/(g.position-u.position);p=u.color,f=g.color,w=e,l=[p[0]*(1-w)+f[0]*w,p[1]*(1-w)+f[1]*w,p[2]*(1-w)+f[2]*w]}else l=[...u.color];else l=[...g.color];const c=l.map((e=>Hd(Math.round(255*e),0,255)));r.fillStyle="rgb(".concat(c[0],", ").concat(c[1],", ").concat(c[2],")"),s?r.fillRect(e,0,1,a):r.fillRect(0,a-e-1,i,1),m+=v}var p,f,w}}const Fd={FONT:"10px Arial",COLOR:"white",TICK_SIZE:5,TICK_WIDTH:1,TICK_LABEL_MARGIN:3,MAX_NUM_TICKS:8,TICKS_STEPS:[1,2.5,5,10]};class Gd{constructor(e){var t,n,o,i,a,r;ae(this,"_canvas",void 0),ae(this,"_imageRange",void 0),ae(this,"_voiRange",void 0),ae(this,"_color",void 0),ae(this,"_tickSize",void 0),ae(this,"_tickWidth",void 0),ae(this,"_labelMargin",void 0),ae(this,"_maxNumTicks",void 0),ae(this,"_rangeTextPosition",void 0),ae(this,"_showFullPixelValueRange",void 0),ae(this,"_font",void 0),Gd.validateProps(e);const{top:s=0,left:l=0,size:d={width:20,height:100},imageRange:c={lower:0,upper:1},voiRange:h={lower:0,upper:1},ticks:u,container:g,showFullPixelValueRange:v=!1}=e,{style:m,position:p}=null!=u?u:{};this._imageRange=c,this._voiRange=h,this._font=null!==(t=null==m?void 0:m.font)&&void 0!==t?t:Fd.FONT,this._color=null!==(n=null==m?void 0:m.color)&&void 0!==n?n:Fd.COLOR,this._tickSize=null!==(o=null==m?void 0:m.tickSize)&&void 0!==o?o:Fd.TICK_SIZE,this._tickWidth=null!==(i=null==m?void 0:m.tickWidth)&&void 0!==i?i:Fd.TICK_WIDTH,this._labelMargin=null!==(a=null==m?void 0:m.labelMargin)&&void 0!==a?a:Fd.TICK_LABEL_MARGIN,this._maxNumTicks=null!==(r=null==m?void 0:m.maxNumTicks)&&void 0!==r?r:Fd.MAX_NUM_TICKS,this._rangeTextPosition=null!=p?p:Nd.Right,this._showFullPixelValueRange=v,this._canvas=this._createCanvasElement(d,s,l),g&&this.appendTo(g)}get size(){const{width:e,height:t}=this._canvas;return{width:e,height:t}}set size(e){const{_canvas:t}=this;Vd(e)&&!Wd(t,e)&&(this._setCanvasSize(t,e),this.render())}get top(){return Number.parseInt(this._canvas.style.top)}set top(e){const{_canvas:t}=this;e!==this.top&&(t.style.top="".concat(e,"px"),this.render())}get left(){return Number.parseInt(this._canvas.style.left)}set left(e){const{_canvas:t}=this;e!==this.left&&(t.style.left="".concat(e,"px"),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){kd(e)&&!Ud(e,this._imageRange)&&(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){kd(e)&&!Ud(e,this._voiRange)&&(this._voiRange=e,this.render())}get tickSize(){return this._tickSize}set tickSize(e){e!==this._tickSize&&(this._tickSize=e,this.render())}get tickWidth(){return this._tickWidth}set tickWidth(e){e!==this._tickWidth&&(this._tickWidth=e,this.render())}get color(){return this._color}set color(e){e!==this._color&&(this._color=e,this.render())}get showFullPixelValueRange(){return this._showFullPixelValueRange}set showFullPixelValueRange(e){e!==this._showFullPixelValueRange&&(this._showFullPixelValueRange=e,this.render())}get visible(){return"block"===this._canvas.style.display}set visible(e){e!==this.visible&&(this._canvas.style.display=e?"block":"none",e&&this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}static validateProps(e){const{size:t,imageRange:n,voiRange:o}=e;if(t&&!Vd(t))throw new Error('Invalid "size"');if(n&&!kd(n))throw new Error('Invalid "imageRange"');if(o&&!kd(o))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,t){const{width:n,height:o}=t;e.width=n,e.height=o,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(o,"px")})}_createCanvasElement(e,t,n){const o=document.createElement("canvas");return Object.assign(o.style,{display:"none",position:"absolute",boxSizing:"border-box",top:"".concat(t,"px"),left:"".concat(n,"px")}),this._setCanvasSize(o,e),o}_getTicks(e){const{lower:t,upper:n}=e,o=(n-t)/(this._maxNumTicks-1),i=Math.pow(10,-Math.floor(Math.log10(Math.abs(o)))),a=o*i,r=Fd.TICKS_STEPS.find((e=>e>=a))/i,s=Math.ceil(n/r)*r,l=Math.floor(t/r)*r,d=Math.round((s-l)/r)+1,c=[];for(let e=0;e<d;e++)c.push(l+e*r);return{scaleMin:l,scaleMax:s,step:r,ticks:c}}_getLeftTickInfo(e){let{position:t,labelMeasure:n}=e;const{width:o}=this._canvas;return{labelPoint:[o-this.tickSize-n.width-this._labelMargin,t],tickPoints:{start:[o-this._tickSize,t],end:[o,t]}}}_getRightTickInfo(e){let{position:t}=e;return{labelPoint:[this._tickSize+this._labelMargin,t],tickPoints:{start:[0,t],end:[this._tickSize,t]}}}_getTopTickInfo(e){let{position:t,labelMeasure:n}=e;throw new Error("Not implemented")}_getBottomTickInfo(e){let{position:t,labelMeasure:n}=e;throw new Error("Not implemented")}render(){const{_canvas:e}=this;if(!e.isConnected||!this.visible)return;const{width:t,height:n}=e,o=t>=n,i=o?t:n,a=e.getContext("2d"),{_voiRange:r}=this,s=this._showFullPixelValueRange?this._imageRange:{...r},l=s.upper-s.lower,{ticks:d}=this._getTicks(s);a.clearRect(0,0,t,n),a.font=this._font,a.textBaseline="middle",a.fillStyle=this._color,a.strokeStyle=this._color,a.lineWidth=this.tickWidth,d.forEach((e=>{let t=Math.round(i*((e-s.lower)/l));if(o||(t=n-t),t<0||t>i)return;const r=e.toString(),d=a.measureText(r);let c;c=o?this._rangeTextPosition===Nd.Top?this._getTopTickInfo({position:t,labelMeasure:d}):this._getBottomTickInfo({position:t,labelMeasure:d}):this._rangeTextPosition===Nd.Left?this._getLeftTickInfo({position:t,labelMeasure:d}):this._getRightTickInfo({position:t});const{labelPoint:h,tickPoints:u}=c,{start:g,end:v}=u;return a.beginPath(),a.moveTo(g[0],g[1]),a.lineTo(v[0],v[1]),a.fillText(r,h[0],h[1]),a.stroke(),t}))}}class qd{constructor(e){let{id:t,container:n}=e;ae(this,"_id",void 0),ae(this,"_rootElement",void 0),ae(this,"_containerSize",void 0),ae(this,"_containerResizeObserver",void 0),ae(this,"_containerResizeCallback",(e=>{let t,n;const{contentRect:o,contentBoxSize:i}=e[0];o?(t=o.width,n=o.height):null!=i&&i.length&&(t=i[0].inlineSize,n=i[0].blockSize),this._containerSize={width:t,height:n},this.onContainerResize()})),this._id=t,this._containerSize={width:0,height:0},this._rootElement=this.createRootElement(t),this._containerResizeObserver=new ResizeObserver(this._containerResizeCallback),n&&this.appendTo(n)}get id(){return this._id}get rootElement(){return this._rootElement}appendTo(e){const{_rootElement:t,_containerResizeObserver:n}=this,{parentElement:o}=t;e&&e!==o&&(o&&n.unobserve(o),e.appendChild(t),n.observe(e))}destroy(){const{_rootElement:e,_containerResizeObserver:t}=this,{parentElement:n}=e;null==n||n.removeChild(e),t.disconnect()}get containerSize(){return{...this._containerSize}}createRootElement(e){const t=document.createElement("div");return t.id=e,t.classList.add("widget"),Object.assign(t.style,{width:"100%",height:"100%"}),t}onContainerResize(){}}const zd={MULTIPLIER:1,RANGE_TEXT_POSITION:Nd.Right,TICKS_BAR_SIZE:50};class jd extends qd{constructor(e){var t,n;super(e),ae(this,"_colormaps",void 0),ae(this,"_activeColormapName",void 0),ae(this,"_eventListenersManager",void 0),ae(this,"_canvas",void 0),ae(this,"_ticksBar",void 0),ae(this,"_rangeTextPosition",void 0),ae(this,"_isMouseOver",!1),ae(this,"_isInteracting",!1),ae(this,"_mouseOverCallback",(e=>{this._isMouseOver=!0,this.showTicks(),e.stopPropagation()})),ae(this,"_mouseOutCallback",(e=>{this._isMouseOver=!1,this.hideTicks(),e.stopPropagation()})),ae(this,"_mouseDownCallback",(e=>{this._isInteracting=!0,this.showTicks(),this._addVOIEventListeners(e),e.stopPropagation()})),ae(this,"_mouseDragCallback",((e,t)=>{const n=this.getVOIMultipliers(),o=this._getPointsFromMouseEvent(e),{points:i,voiRange:a}=t,r=Sn.vec2.sub(Sn.vec2.create(),o.local,i.local),s=r[0]*n[0],l=r[1]*n[1];if(!s&&!l)return;const{lower:d,upper:c}=a;let{windowWidth:h,windowCenter:u}=oe.utilities.windowLevel.toWindowLevel(d,c);h=Math.max(h+s,1),u+=l;const g=oe.utilities.windowLevel.toLowHighRange(h,u);this.voiRange=g,e.stopPropagation(),e.preventDefault()})),ae(this,"_mouseUpCallback",(e=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),e.stopPropagation()})),this._eventListenersManager=new oe.utilities.eventListener.MultiTargetEventListenerManager,this._colormaps=jd.getColormapsMap(e),this._activeColormapName=jd.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=null!==(t=null===(n=e.ticks)||void 0===n?void 0:n.position)&&void 0!==t?t:zd.RANGE_TEXT_POSITION,this._canvas.appendTo(this.rootElement),this._ticksBar.appendTo(this.rootElement),this._addRootElementEventListeners()}get activeColormapName(){return this._activeColormapName}set activeColormapName(e){if(e===this._activeColormapName)return;const t=this._colormaps.get(e);t?(this._activeColormapName=e,this._canvas.colormap=t):console.warn("Invalid colormap name (".concat(e,")"))}get imageRange(){return this._canvas.imageRange}set imageRange(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}get voiRange(){return this._canvas.voiRange}set voiRange(e){const{voiRange:t}=this._canvas;kd(e)&&!Ud(e,t)&&(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}get showFullImageRange(){return this._canvas.showFullImageRange}set showFullImageRange(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}destroy(){super.destroy(),this._eventListenersManager.reset()}createRootElement(){const e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}onContainerResize(){super.onContainerResize(),this.updateTicksBar(),this._canvas.size=this.containerSize}getVOIMultipliers(){return[zd.MULTIPLIER,zd.MULTIPLIER]}onVoiChange(e){}showTicks(){this.updateTicksBar(),this._ticksBar.visible=!0}hideTicks(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}static getColormapsMap(e){const{colormaps:t}=e;return t.reduce(((e,t)=>e.set(t.Name,t)),new Map)}static getInitialColormapName(e){const{activeColormapName:t,colormaps:n}=e;return t&&n.some((e=>e.Name===t))?t:n[0].Name}_createCanvas(e){const{imageRange:t,voiRange:n,showFullPixelValueRange:o}=e,i=this._colormaps.get(this._activeColormapName);return new Bd({colormap:i,imageRange:t,voiRange:n,showFullPixelValueRange:o})}_createTicksBar(e){const t=e.ticks;return new Gd({imageRange:e.imageRange,voiRange:e.voiRange,ticks:t,showFullPixelValueRange:e.showFullPixelValueRange})}_getPointsFromMouseEvent(e){const{rootElement:t}=this,n=[e.clientX,e.clientY],o=[e.pageX,e.pageY],i=t.getBoundingClientRect();return{client:n,page:o,local:[o[0]-i.left-window.pageXOffset,o[1]-i.top-window.pageYOffset]}}updateTicksBar(){const{width:e,height:t}=this.containerSize;if(0===e&&0===t)return;const{_ticksBar:n,_rangeTextPosition:o}=this,i=e>=t,a=i?e:zd.TICKS_BAR_SIZE,r=i?zd.TICKS_BAR_SIZE:t;if(!function(e,t,n){return(e>=t?[Nd.Top,Nd.Bottom]:[Nd.Left,Nd.Right]).includes(n)}(e,t,o))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");let s,l;n.size={width:a,height:r},i?(l=0,s=o===Nd.Top?-r:t):(s=0,l=o===Nd.Left?-a:e),n.top=s,n.left=l}_addRootElementEventListeners(){const{_eventListenersManager:e}=this,{rootElement:t}=this;e.addEventListener(t,"mouseover",this._mouseOverCallback),e.addEventListener(t,"mouseout",this._mouseOutCallback),e.addEventListener(t,"mousedown",this._mouseDownCallback)}_addVOIEventListeners(e){const{_eventListenersManager:t}=this,n={points:this._getPointsFromMouseEvent(e),voiRange:{...this._canvas.voiRange}};this._removeVOIEventListeners(),t.addEventListener(document,"voi.mouseup",this._mouseUpCallback),t.addEventListener(document,"voi.mousemove",(e=>this._mouseDragCallback(e,n)))}_removeVOIEventListeners(){const{_eventListenersManager:e}=this;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}const{Events:Kd}=oe.Enums,Yd={lower:-1e3,upper:1e3};class Xd extends jd{constructor(e){const{element:t,volumeId:n}=e,o=Xd._getImageRange(t,n),i=Xd._getVOIRange(t,n);super({...e,imageRange:o,voiRange:i}),ae(this,"_element",void 0),ae(this,"_volumeId",void 0),ae(this,"_hideTicksTime",void 0),ae(this,"_hideTicksTimeoutId",void 0),ae(this,"autoHideTicks",(()=>{if(this._hideTicksTimeoutId)return;const e=this._hideTicksTime-Date.now();e<=0?this.hideTicks():this._hideTicksTimeoutId=window.setTimeout((()=>{this._hideTicksTimeoutId=0,this.autoHideTicks()}),e)})),ae(this,"_stackNewImageCallback",(()=>{this.imageRange=Xd._getImageRange(this._element)})),ae(this,"_imageVolumeModifiedCallback",(e=>{const{volumeId:t}=e.detail.imageVolume;if(t!==this._volumeId)return;const{_element:n}=this;this.imageRange=Xd._getImageRange(n,t)})),ae(this,"_viewportVOIModifiedCallback",(e=>{const{viewportId:t,volumeId:n,range:o,colormap:i}=e.detail,{viewport:a}=this.enabledElement;t===a.id&&n===this._volumeId&&(this.voiRange=o,i&&(this.activeColormapName=i.name),this.showAndAutoHideTicks())})),ae(this,"_viewportColormapModifiedCallback",(e=>{const{viewportId:t,colormap:n,volumeId:o}=e.detail,{viewport:i}=this.enabledElement;t===i.id&&o===this._volumeId&&(this.activeColormapName=n.name)})),this._element=t,this._volumeId=n,this._addCornerstoneEventListener()}get element(){return this._element}get enabledElement(){return(0,oe.getEnabledElement)(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return function(e,t,n){if("PT"===oe.utilities.getViewportModality(e,t)){const{clientWidth:n,clientHeight:o}=e.element,i=5/Math.max(n,o),a=as(e,t),{fixedPTWindowWidth:r=!0}={},s=r?0:i;return a?[s,i]:[s,4]}return[4,4]}(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:t}=this.enabledElement;if(t instanceof oe.StackViewport)t.setProperties({voiRange:e}),t.render();else if(t instanceof oe.VolumeViewport){const{_volumeId:n}=this,o=oe.utilities.getViewportsWithVolumeId(n,t.renderingEngineId);t.setProperties({voiRange:e},n),o.forEach((e=>e.render()))}}static _getImageRange(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,i=t?o.getActor(t):o.getDefaultActor();if(!i)return Yd;const a=i.actor.getMapper().getInputData().getPointData().getScalars().getRange();return 0===a[0]&&0===a[1]?Yd:{lower:a[0],upper:a[1]}}static _getVOIRange(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,i=t?o.getActor(t):o.getDefaultActor();if(!i||!oe.utilities.isImageActor(i))return Yd;const a=i.actor.getProperty().getRGBTransferFunction(0).getRange();return 0===a[0]&&0===a[1]?Yd:{lower:a[0],upper:a[1]}}showAndAutoHideTicks(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;oe.eventTarget.addEventListener(Kd.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(Kd.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(Kd.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(Kd.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}function Jd(e,t,n,o,i){const a=[];let r=0;const s=e.scalarData;let l,d,c;if(e.color)for(d=0;d<i;d++)for(c=0;c<o;c++){l=4*((d+n)*e.columns+(c+t));const o=s[l],i=s[l+1],h=s[l+2];a[r++]=.2126*o+.7152*i+.0722*h}else for(d=0;d<i;d++)for(c=0;c<o;c++)l=(d+n)*e.columns+(c+t),a[r++]=s[l];return a}function Zd(e,t,n){const o=e.length;let i=n,a=t,r=0;if(o<2)return{min:i,max:a,mean:(t+n)/2};for(let t=0;t<o;t++){const n=e[t];i=Math.min(i,n),a=Math.max(a,n),r+=n}return{min:i,max:a,mean:r/o}}function $d(e){if(e instanceof oe.VolumeViewport)return function(e){const{scalarData:t,width:n,height:o}=oe.utilities.getCurrentVolumeViewportSlice(e),{min:i,max:a}=oe.utilities.getMinMax(t),r=e.getVolumeId(),s=oe.cache.getVolume(r),{metadata:l,cornerstoneImageMetaData:d}=s,{Rows:c,Columns:h}=l,{color:u}=d;return{scalarData:t,width:n,height:o,minPixelValue:i,maxPixelValue:a,rows:c,columns:h,color:u}}(e);if(e instanceof oe.StackViewport)return function(e){const t=e.getImageData(),{scalarData:n}=t,{min:o,max:i}=oe.utilities.getMinMax(n),a=t.dimensions[0],r=t.dimensions[1],{rows:s,columns:l,color:d}=e.getCornerstoneImage();return{scalarData:n,width:a,height:r,minPixelValue:o,maxPixelValue:i,rows:s,columns:l,color:d}}(e);throw new Error("Viewport not supported")}const Qd=oe.utilities.roundNumber;function ec(e,t){var n,o;return(null==t||!t.autoGenerated)&&(!0===(null==e||null===(n=e.smoothing)||void 0===n?void 0:n.smoothOnAdd)||!0===(null==e||null===(o=e.smoothing)||void 0===o?void 0:o.smoothOnEdit))}function tc(e,t,n){return(e+t+n)%t}function nc(e,t,n,o){const[,i,a]=e,[,r,s]=t,l=a.length,d=s.length;let c=e[0],h=t[0];if(!(a[c]&&s[h]&&a[i]&&s[r]))return[void 0,void 0];for(;c!==i&&h!==r;){if(n(s[h],a[c]))return[c,h];c=tc(c,l,o),h=tc(h,d,o)}return[void 0,void 0]}function oc(e,t,n){const{interpolation:o,smoothing:i}=e,a=t;if(o){const{knotsRatioPercentageOnAdd:e,knotsRatioPercentageOnEdit:o,smoothOnAdd:a=!1,smoothOnEdit:r=!1}=i,s=n?o:e;if(n?r:a){const[e,o]=n?function(e,t){const[n,o]=function(e,t){for(let n=0;n<e.length;n++)for(let o=0;o<t.length;o++)if(0===nl(e[n],t[o]))return[n,o]}(e,t)||[],i=(e,t)=>!1===function(e,t){return nl(e,t)<.001}(e,t),[a,r]=nc([tc(n,e.length,1),n,e],[tc(o,t.length,1),o,t],i,1),[s]=nc([tc(a,e.length,-1),a,e],[tc(r,t.length,-1),r,t],i,-1);return[a,s]}(t,n):[0,t.length-1];return t[e]&&t[o]?ql(t,e,o,s):t}}return a}var ic=function(e){return e[e.Primary=1]="Primary",e[e.Secondary=2]="Secondary",e[e.Primary_And_Secondary=3]="Primary_And_Secondary",e[e.Auxiliary=4]="Auxiliary",e[e.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",e[e.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",e[e.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",e[e.Fourth_Button=8]="Fourth_Button",e[e.Fifth_Button=16]="Fifth_Button",e}(ic||{}),ac=function(e){return e[e.Shift=16]="Shift",e[e.Ctrl=17]="Ctrl",e[e.Alt=18]="Alt",e[e.Meta=91]="Meta",e[e.ShiftCtrl=1617]="ShiftCtrl",e[e.ShiftAlt=1618]="ShiftAlt",e[e.ShiftMeta=1691]="ShiftMeta",e[e.CtrlAlt=1718]="CtrlAlt",e[e.CtrlMeta=1791]="CtrlMeta",e[e.AltMeta=1891]="AltMeta",e}(ac||{});const rc=e=>e.shiftKey?e.ctrlKey?ac.ShiftCtrl:e.altKey?ac.ShiftAlt:e.metaKey?ac.ShiftMeta:ac.Shift:e.ctrlKey?e.altKey?ac.CtrlAlt:e.metaKey?ac.CtrlMeta:ac.Ctrl:e.altKey?e.metaKey&&ac.AltMeta||ac.Alt:e.metaKey?ac.Meta:void 0;function sc(e,t){const n=e[0],o=e[e.length-1],i=Sn.vec2.create();Sn.vec2.set(i,o[0]-n[0],o[1]-n[1]),Sn.vec2.normalize(i,i);const a=Sn.vec2.create(),r=Sn.vec2.create();Sn.vec2.set(a,-i[1],i[0]),Sn.vec2.set(r,i[1],-i[0]);const s=[(n[0]+o[0])/2,(n[1]+o[1])/2],l={dist:0,index:null};for(let t=0;t<e.length;t++){const n=e[t],o=Sn.vec2.dist(n,s);o>l.dist&&(l.dist=o,l.index=t)}return[e[l.index],s].map(t.canvasToWorld)}const{addCanvasPointsToArray:lc,pointsAreWithinCloseContourProximity:dc,getFirstLineSegmentIntersectionIndexes:cc,getSubPixelSpacingAndXYDirections:hc}=I;function uc(e,t,n){this.isDrawing=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,oe.getEnabledElement)(a),{viewport:l}=s,d=rc(e.detail.event)===this.configuration.contourHoleAdditionModifierKey,{spacing:c,xDir:h,yDir:u}=hc(l,this.configuration.subPixelResolution);this.drawData={canvasPoints:[r],polylineIndex:0,contourHoleProcessingEnabled:d},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:h,yDir:u,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(se.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener(se.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener(se.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener(se.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener(se.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener(se.TOUCH_TAP,this.mouseUpDrawCallback),mr(a)}function gc(e){Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this.mouseUpDrawCallback),e.removeEventListener(se.MOUSE_DRAG,this.mouseDragDrawCallback),e.removeEventListener(se.MOUSE_CLICK,this.mouseUpDrawCallback),e.removeEventListener(se.TOUCH_END,this.mouseUpDrawCallback),e.removeEventListener(se.TOUCH_DRAG,this.mouseDragDrawCallback),e.removeEventListener(se.TOUCH_TAP,this.mouseUpDrawCallback),vr(e)}function vc(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,oe.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{annotation:d,viewportIdsToRender:c,xDir:h,yDir:u,spacing:g,movingTextBox:v}=this.commonData,{polylineIndex:m,canvasPoints:p}=this.drawData,f=p[p.length-1],w=l.canvasToWorld(f),I=Sn.vec3.create();Sn.vec3.subtract(I,i,w);const E=Math.abs(Sn.vec3.dot(I,h)),C=Math.abs(Sn.vec3.dot(I,u));if(!(E<=g[0]&&C<=g[1])){if(v){this.isDrawing=!1;const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.data.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else{const t=this.findCrossingIndexDuringCreate(e);if(void 0!==t)this.applyCreateOnCross(e,t);else{const e=lc(o,p,a,this.commonData);this.drawData.polylineIndex=m+e}}io(c)}}function mc(e){const{allowOpenContours:t}=this.configuration,{canvasPoints:n,contourHoleProcessingEnabled:o}=this.drawData,i=n[0],a=n[n.length-1],r=e.detail,{element:s}=r;t&&!dc(i,a,this.configuration.closeContourProximity)?this.completeDrawOpenContour(s,{contourHoleProcessingEnabled:o}):this.completeDrawClosedContour(s,{contourHoleProcessingEnabled:o})}function pc(e,t){this.removeCrossedLinesOnCompleteDraw();const{canvasPoints:n}=this.drawData,{contourHoleProcessingEnabled:o,minPointsToSave:i}=null!=t?t:{};if(i&&n.length<i)return!1;if(this.haltDrawing(e,n))return!1;const{annotation:a,viewportIdsToRender:r}=this.commonData,s=(0,oe.getEnabledElement)(e),{viewport:l,renderingEngine:d}=s;lc(e,n,n[0],this.commonData),n.pop();const c=ec(this.configuration,a)?oc(this.configuration,n):n;this.updateContourPolyline(a,{points:c,closed:!0,targetWindingDirection:Xi.Clockwise},l);const{textBox:h}=a.data.handles;return null!=h&&h.hasMoved||tt(a,o),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,io(r),this.deactivateDraw(e),!0}function fc(){const{canvasPoints:e}=this.drawData,t=e.length,n=[e[0],e[t-1]],o=e.slice(0,-1).slice(1),i=cc(o,n[0],n[1],!1);if(i){const t=i[1];this.drawData.canvasPoints=1===t?e.splice(1):e.splice(0,t)}}function wc(e,t){const{canvasPoints:n}=this.drawData,{contourHoleProcessingEnabled:o}=null!=t?t:{};if(this.haltDrawing(e,n))return!1;const{annotation:i,viewportIdsToRender:a}=this.commonData,r=(0,oe.getEnabledElement)(e),{viewport:s,renderingEngine:l}=r,d=ec(this.configuration,i)?oc(this.configuration,n):n;this.updateContourPolyline(i,{points:d,closed:!1},s);const{textBox:c}=i.data.handles,h=i.data.contour.polyline;return i.data.handles.points=[h[0],h[h.length-1]],i.data.isOpenUShapeContour&&(i.data.openUShapeContourVectorToPeak=sc(n,s)),c.hasMoved||tt(i,o),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,io(a),this.deactivateDraw(e),!0}function Ic(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{canvasPoints:r}=this.drawData,s=r.slice(0,-1),l=cc(s,i,a,!1);if(void 0!==l)return l[0]}function Ec(e,t){const n=e.detail,{element:o}=n,{canvasPoints:i,contourHoleProcessingEnabled:a}=this.drawData,{annotation:r,viewportIdsToRender:s}=this.commonData;lc(o,i,i[t],this.commonData),i.pop();const l=il(i.slice(t));if(oe.utilities.isEqual(l,0))return void i.splice(t+1);i.splice(0,t);const d={contourHoleProcessingEnabled:a,minPointsToSave:3};this.completeDrawClosedContour(o,d)&&this.activateClosedContourEdit(e,r,s)}function Cc(e){const{allowOpenContours:t}=this.configuration,{canvasPoints:n,contourHoleProcessingEnabled:o}=this.drawData,i=n[0],a=n[n.length-1];t&&!dc(i,a,this.configuration.closeContourProximity)?this.completeDrawOpenContour(e,{contourHoleProcessingEnabled:o}):this.completeDrawClosedContour(e,{contourHoleProcessingEnabled:o})}function _c(e,t){const{subPixelResolution:n}=this.configuration;if(function(e,t){const n=Math.max(3*t,3);return e.length<n}(t,n)){const{annotation:t,viewportIdsToRender:n}=this.commonData,o=(0,oe.getEnabledElement)(e),{renderingEngine:i}=o;return mt(t.annotationUID),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,io(n),this.deactivateDraw(e),!0}return!1}const bc=function(e){e.activateDraw=uc.bind(e),e.deactivateDraw=gc.bind(e),e.applyCreateOnCross=Ec.bind(e),e.findCrossingIndexDuringCreate=Ic.bind(e),e.completeDrawOpenContour=wc.bind(e),e.removeCrossedLinesOnCompleteDraw=fc.bind(e),e.mouseDragDrawCallback=vc.bind(e),e.mouseUpDrawCallback=mc.bind(e),e.completeDrawClosedContour=pc.bind(e),e.cancelDrawing=Cc.bind(e),e.haltDrawing=_c.bind(e)},{addCanvasPointsToArray:Tc,getFirstLineSegmentIntersectionIndexes:Dc}=I;function Sc(e,t){const n=e.detail,{element:o,currentPoints:i,lastPoints:a}=n,r=i.canvas,s=a.canvas,{editCanvasPoints:l,prevCanvasPoints:d}=this.editData,c=Dc(d,r,s,t);if(c)this.editData.startCrossingIndex=c[0],this.removePointsUpUntilFirstCrossing(t);else if(d.length>=2)if(l.length>this.configuration.checkCanvasEditFallbackProximity){const e=l[0],t=[];for(let n=0;n<d.length;n++){const o=d[n],i=Sn.vec2.distance(o,e);t.push({distance:i,index:n})}t.sort(((e,t)=>e.distance-t.distance));const n=[t[0],t[1]],o=Math.min(n[0].index,n[1].index);this.editData.startCrossingIndex=o}else{const e=Sn.vec2.create();Sn.vec2.subtract(e,l[1],l[0]),Sn.vec2.normalize(e,e);const n=6,i=[l[0][0]-e[0]*n,l[0][1]-e[1]*n],a=Dc(d,i,l[0],t);if(a){const e=[i];Tc(o,e,l[0],this.commonData),l.unshift(...e),this.removePointsUpUntilFirstCrossing(t),this.editData.editIndex=l.length-1,this.editData.startCrossingIndex=a[0]}}}function yc(e){const{editCanvasPoints:t,prevCanvasPoints:n}=this.editData;let o=0;for(let i=0;i<t.length-1;i++){const a=[t[i],t[i+1]];if(o++,Dc(n,a[0],a[1],e))break}t.splice(0,o),this.editData.editIndex=t.length-1}function Mc(e,t){const n=e.detail,{currentPoints:o,lastPoints:i}=n,a=o.canvas,r=i.canvas,{prevCanvasPoints:s}=this.editData;return!!Dc(s,a,r,t)}function xc(e){const{prevCanvasPoints:t,editCanvasPoints:n}=this.editData;for(let o=n.length-1;o>0;o--){const i=[n[o],n[o-1]],a=!!Dc(t,i[0],i[1],e);if(n.pop(),a)break}}function Oc(){const{editCanvasPoints:e,prevCanvasPoints:t,startCrossingIndex:n}=this.editData;if(void 0===n)return;const o=e[e.length-1],i=[];for(let e=0;e<t.length;e++){const n=t[e],a=Sn.vec2.distance(n,o);i.push({distance:a,index:e})}i.sort(((e,t)=>e.distance-t.distance));const a=e.slice(0,-1);for(let n=0;n<i.length;n++){const{index:o}=i[n],r=t[o],s=e[e.length-1];if(!Dc(a,r,s,!1))return o}return-1}function Pc(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{editCanvasPoints:r}=this.editData,s=r.slice(0,-2),l=Dc(s,i,a,!1);if(!l)return;const d=l[0],c=r.length-d;for(let e=0;e<c;e++)r.pop()}const Ac=function(e){e.checkForFirstCrossing=Sc.bind(e),e.removePointsUpUntilFirstCrossing=yc.bind(e),e.checkForSecondCrossing=Mc.bind(e),e.findSnapIndex=Oc.bind(e),e.removePointsAfterSecondCrossing=xc.bind(e),e.checkAndRemoveCrossesOnEditLine=Pc.bind(e)},{getSubPixelSpacingAndXYDirections:Rc,addCanvasPointsToArray:Lc,getArea:Nc}=I;function kc(e,t,n){this.isEditingClosed=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,oe.getEnabledElement)(a);if(!s)return;const{viewport:l}=s,d=t.data.contour.polyline.map(l.worldToCanvas),{spacing:c,xDir:h,yDir:u}=Rc(l,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:d,editCanvasPoints:[r],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:h,yDir:u,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(se.MOUSE_UP,this.mouseUpClosedContourEditCallback),a.addEventListener(se.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(se.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),a.addEventListener(se.TOUCH_END,this.mouseUpClosedContourEditCallback),a.addEventListener(se.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(se.TOUCH_TAP,this.mouseUpClosedContourEditCallback),mr(a)}function Uc(e){Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this.mouseUpClosedContourEditCallback),e.removeEventListener(se.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(se.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),e.removeEventListener(se.TOUCH_END,this.mouseUpClosedContourEditCallback),e.removeEventListener(se.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(se.TOUCH_TAP,this.mouseUpClosedContourEditCallback),vr(e)}function Vc(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,oe.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{viewportIdsToRender:d,xDir:c,yDir:h,spacing:u}=this.commonData,{editIndex:g,editCanvasPoints:v,startCrossingIndex:m}=this.editData,p=v[v.length-1],f=l.canvasToWorld(p),w=Sn.vec3.create();Sn.vec3.subtract(w,i,f);const I=Math.abs(Sn.vec3.dot(w,c)),E=Math.abs(Sn.vec3.dot(w,h));if(I<=u[0]&&E<=u[1])return;void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);const C=g+Lc(o,v,a,this.commonData);this.editData.editIndex=C,void 0===m&&v.length>1&&this.checkForFirstCrossing(e,!0),this.editData.snapIndex=this.findSnapIndex(),-1!==this.editData.snapIndex?(this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(e),void 0!==m&&this.checkForSecondCrossing(e,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(e)),io(d)):this.finishEditAndStartNewEdit(e)}function Wc(e){const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{viewport:i,renderingEngine:a}=o,{annotation:r,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:l,editCanvasPoints:d}=this.editData;ni(r,{points:l,closed:!0,targetWindingDirection:Xi.Clockwise},i),r.autoGenerated&&(r.autoGenerated=!1),Qe(r,n);const c=d.pop();this.editData={prevCanvasPoints:l,editCanvasPoints:[c],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0},io(s)}function Hc(e){const{prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o,snapIndex:i}=this.editData;if(void 0===o||void 0===i)return;const a=e.detail,{element:r}=a,s=[...n];let l,d;Lc(r,s,t[i],this.commonData),s.length>n.length&&s.pop(),o>i?(l=i,d=o):(l=o,d=i);const c=Sn.vec2.distance(t[l],s[0]),h=Sn.vec2.distance(t[l],s[s.length-1]),u=Sn.vec2.distance(t[d],s[0]),g=Sn.vec2.distance(t[d],s[s.length-1]),v=[];for(let e=0;e<l;e++){const n=t[e];v.push([n[0],n[1]])}let m=c+g,p=h+u;if(m<p)for(let e=0;e<s.length;e++){const t=s[e];v.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];v.push([t[0],t[1]])}for(let e=d;e<t.length;e++){const n=t[e];v.push([n[0],n[1]])}const f=[];for(let e=l;e<d;e++){const n=t[e];f.push([n[0],n[1]])}if(m=u+h,p=g+c,m<p)for(let e=0;e<s.length;e++){const t=s[e];f.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];f.push([t[0],t[1]])}return Nc(v)>Nc(f)?v:f}function Bc(e){const t=e.detail,{element:n}=t;this.completeClosedContourEdit(n)}function Fc(e){const t=(0,oe.getEnabledElement)(e),{viewport:n,renderingEngine:o}=t,{annotation:i,viewportIdsToRender:a}=this.commonData,{fusedCanvasPoints:r,prevCanvasPoints:s}=this.editData;if(r){var l;const t=ec(this.configuration,i)?oc(this.configuration,r,s):r,o=(null===(l=this.configuration)||void 0===l?void 0:l.decimate)||{};ni(i,{points:t,closed:!0,targetWindingDirection:Xi.Clockwise},n,{decimate:{enabled:!!o.enabled,epsilon:o.epsilon}}),i.autoGenerated&&(i.autoGenerated=!1),Qe(i,e)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,io(a),this.deactivateClosedContourEdit(e)}function Gc(e){this.completeClosedContourEdit(e)}const qc=function(e){e.activateClosedContourEdit=kc.bind(e),e.deactivateClosedContourEdit=Uc.bind(e),e.mouseDragClosedContourEditCallback=Vc.bind(e),e.mouseUpClosedContourEditCallback=Bc.bind(e),e.finishEditAndStartNewEdit=Wc.bind(e),e.fuseEditPointsWithClosedContour=Hc.bind(e),e.cancelClosedContourEdit=Gc.bind(e),e.completeClosedContourEdit=Fc.bind(e)},{addCanvasPointsToArray:zc,getSubPixelSpacingAndXYDirections:jc}=I;function Kc(e,t,n){this.isEditingOpen=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,oe.getEnabledElement)(a),{viewport:l}=s,d=t.data.contour.polyline.map(l.worldToCanvas),{spacing:c,xDir:h,yDir:u}=jc(l,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:d,editCanvasPoints:[r],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:h,yDir:u,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(se.MOUSE_UP,this.mouseUpOpenContourEditCallback),a.addEventListener(se.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(se.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),a.addEventListener(se.TOUCH_END,this.mouseUpOpenContourEditCallback),a.addEventListener(se.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(se.TOUCH_TAP,this.mouseUpOpenContourEditCallback),mr(a)}function Yc(e){Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this.mouseUpOpenContourEditCallback),e.removeEventListener(se.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(se.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),e.removeEventListener(se.TOUCH_END,this.mouseUpOpenContourEditCallback),e.removeEventListener(se.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(se.TOUCH_TAP,this.mouseUpOpenContourEditCallback),vr(e)}function Xc(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,oe.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{viewportIdsToRender:d,xDir:c,yDir:h,spacing:u}=this.commonData,{editIndex:g,editCanvasPoints:v,startCrossingIndex:m}=this.editData,p=v[v.length-1],f=l.canvasToWorld(p),w=Sn.vec3.create();Sn.vec3.subtract(w,i,f);const I=Math.abs(Sn.vec3.dot(w,c)),E=Math.abs(Sn.vec3.dot(w,h));if(I<=u[0]&&E<=u[1])return;void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);const C=g+zc(o,v,a,this.commonData);this.editData.editIndex=C,void 0===m&&v.length>1&&this.checkForFirstCrossing(e,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(e),void 0!==m&&this.checkForSecondCrossing(e,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(e)):this.checkIfShouldOverwriteAnEnd(e)&&this.openContourEditOverwriteEnd(e),io(d)}function Jc(e){const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{viewport:i}=o,{annotation:a,viewportIdsToRender:r}=this.commonData;ni(a,{points:this.fuseEditPointsForOpenContourEndEdit(),closed:!1},i);const s=a.data.contour.polyline;a.data.handles.points=[s[0],s[s.length-1]],a.data.handles.activeHandleIndex=1,Qe(a,n),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.deactivateOpenContourEdit(n),this.activateOpenContourEndEdit(e,a,r,null)}function Zc(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{snapIndex:r,prevCanvasPoints:s,startCrossingIndex:l}=this.editData;if(void 0===l||void 0===r)return!1;if(-1===r)return!0;if(0!==r&&r!==s.length-1)return!1;const d=i,c=a,h=s[r],u=Sn.vec2.create(),g=Sn.vec2.create();Sn.vec2.set(u,d[0]-c[0],d[1]-c[1]),Sn.vec2.set(g,d[0]-h[0],d[1]-h[1]);const v=Sn.vec2.dot(u,g),m=Math.sqrt(u[0]*u[0]+u[1]*u[1]),p=Math.sqrt(g[0]*g[0]+g[1]*g[1]);return Math.acos(v/(m*p))<Math.PI/2}function $c(){const{snapIndex:e,prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o}=this.editData,i=[];if(0===e)for(let e=t.length-1;e>=o;e--){const n=t[e];i.push([n[0],n[1]])}else for(let e=0;e<o;e++){const n=t[e];i.push([n[0],n[1]])}if(Sn.vec2.distance(t[o],n[0])<Sn.vec2.distance(t[o],n[n.length-1]))for(let e=0;e<n.length;e++){const t=n[e];i.push([t[0],t[1]])}else for(let e=n.length-1;e>=0;e--){const t=n[e];i.push([t[0],t[1]])}return i}function Qc(e){const{prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o,snapIndex:i}=this.editData;if(void 0===o||void 0===i)return;const a=e.detail,{element:r}=a,s=[...n];let l,d;zc(r,s,t[i],this.commonData),s.length>n.length&&s.pop(),o>i?(l=i,d=o):(l=o,d=i);const c=Sn.vec2.distance(t[l],s[0]),h=Sn.vec2.distance(t[l],s[s.length-1]),u=Sn.vec2.distance(t[d],s[0]),g=Sn.vec2.distance(t[d],s[s.length-1]),v=[];for(let e=0;e<l;e++){const n=t[e];v.push([n[0],n[1]])}if(c+g<h+u)for(let e=0;e<s.length;e++){const t=s[e];v.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];v.push([t[0],t[1]])}for(let e=d;e<t.length;e++){const n=t[e];v.push([n[0],n[1]])}return v}function eh(e){const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{viewport:i,renderingEngine:a}=o,{annotation:r,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:l,editCanvasPoints:d}=this.editData;ni(r,{points:l,closed:!1},i);const c=r.data.contour.polyline;r.data.handles.points=[c[0],c[c.length-1]],Qe(r,n);const h=d.pop();this.editData={prevCanvasPoints:l,editCanvasPoints:[h],startCrossingIndex:void 0,editIndex:0},io(s)}function th(e){const t=e.detail,{element:n}=t;this.completeOpenContourEdit(n)}function nh(e){const t=(0,oe.getEnabledElement)(e),{viewport:n,renderingEngine:o}=t,{annotation:i,viewportIdsToRender:a}=this.commonData,{fusedCanvasPoints:r,prevCanvasPoints:s}=this.editData;if(r){var l;const t=ec(this.configuration)?oc(this.configuration,r,s):r,o=(null===(l=this.configuration)||void 0===l?void 0:l.decimate)||{};ni(i,{points:t,closed:!1},n,{decimate:{enabled:!!o.enabled,epsilon:o.epsilon}});const a=i.data.contour.polyline;i.data.handles.points=[a[0],a[a.length-1]],i.data.isOpenUShapeContour&&(i.data.openUShapeContourVectorToPeak=sc(r,n)),Qe(i,e)}this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,io(a),this.deactivateOpenContourEdit(e)}function oh(e){this.completeOpenContourEdit(e)}const ih=function(e){e.activateOpenContourEdit=Kc.bind(e),e.deactivateOpenContourEdit=Yc.bind(e),e.mouseDragOpenContourEditCallback=Xc.bind(e),e.mouseUpOpenContourEditCallback=th.bind(e),e.fuseEditPointsWithOpenContour=Qc.bind(e),e.finishEditOpenOnSecondCrossing=eh.bind(e),e.checkIfShouldOverwriteAnEnd=Zc.bind(e),e.fuseEditPointsForOpenContourEndEdit=$c.bind(e),e.openContourEditOverwriteEnd=Jc.bind(e),e.cancelOpenContourEdit=oh.bind(e),e.completeOpenContourEdit=nh.bind(e)},{getSubPixelSpacingAndXYDirections:ah}=I;function rh(e,t,n,o){this.isDrawing=!0;const i=e.detail,{element:a}=i,r=(0,oe.getEnabledElement)(a),{viewport:s}=r,{spacing:l,xDir:d,yDir:c}=ah(s,this.configuration.subPixelResolution),h=t.data.contour.polyline.map(s.worldToCanvas);0===t.data.handles.activeHandleIndex&&h.reverse();let u=!1;null!=o&&o.worldPosition&&(u=!0),this.drawData={canvasPoints:h,polylineIndex:h.length-1},this.commonData={annotation:t,viewportIdsToRender:n,spacing:l,xDir:d,yDir:c,movingTextBox:u},Ke.isInteractingWithTool=!0,a.addEventListener(se.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener(se.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener(se.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener(se.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener(se.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener(se.TOUCH_TAP,this.mouseUpDrawCallback),mr(a)}const sh=function(e){e.activateOpenContourEndEdit=rh.bind(e)};function lh(e,t,n,o,i){const a=o.length&&o[0].length&&Array.isArray(o[0][0])?o:[o],{color:r="rgb(0, 255, 0)",width:s=10,fillColor:l="none",fillOpacity:d=0,lineWidth:c,lineDash:h,closePath:u=!1}=i,g=c||s,v=nr(t,"path",n),m=e.getSvgNode(v);let p="";for(let e=0,t=a.length;e<t;e++){const t=a[e],n=t.length;if(!(n<2)){for(let e=0;e<n;e++){const n=t[e];p+="".concat(e?"L":"M"," ").concat(n[0].toFixed(1),", ").concat(n[1].toFixed(1)," ")}u&&(p+="Z ")}}if(!p)return;const f={d:p,stroke:r,fill:l,"fill-opacity":d,"stroke-width":g,"stroke-dasharray":h};if(m)or(f,m),e.setNodeTouched(v);else{const t=document.createElementNS("http://www.w3.org/2000/svg","path");ir(f,t),e.appendNode(t,v)}}function dh(e,t,n,o,i){if(o.length<2)return;const{color:a="rgb(0, 255, 0)",width:r=10,fillColor:s="none",fillOpacity:l=0,lineWidth:d,lineDash:c,closePath:h=!1}=i,u=d||r,g=nr(t,"polyline",n),v=e.getSvgNode(g);let m="";for(const e of o)m+="".concat(e[0].toFixed(1),", ").concat(e[1].toFixed(1)," ");if(h){const e=o[0];m+="".concat(e[0],", ").concat(e[1])}const p={points:m,stroke:a,fill:s,"fill-opacity":l,"stroke-width":u,"stroke-dasharray":c};if(v)or(p,v),e.setNodeTouched(g);else{const t=document.createElementNS("http://www.w3.org/2000/svg","polyline");ir(p,t),e.appendNode(t,g)}}const{pointsAreWithinCloseContourProximity:ch}=I;function hh(e,t){const n={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id,annotationUID:t.annotationUID},{lineWidth:o,lineDash:i,color:a,fillColor:r,fillOpacity:s}=this.getAnnotationStyle({annotation:t,styleSpecifier:n}),{closed:l}=t.data.contour;return{color:a,width:o,lineDash:i,fillColor:r,fillOpacity:s,closePath:l}}function uh(e,t,n){var o;null!=e&&null!==(o=e.viewport)&&void 0!==o&&o.getImageData()&&(n.data.contour.closed?this.renderClosedContour(e,t,n):n.data.isOpenUShapeContour?(function(e,t){t.data.openUShapeContourVectorToPeak||(t.data.openUShapeContourVectorToPeak=function(e,t){const{viewport:n}=e;return sc(t.data.contour.polyline.map(n.worldToCanvas),n)}(e,t))}(e,n),this.renderOpenUShapedContour(e,t,n)):this.renderOpenContour(e,t,n))}function gh(e,t,n){if(n.parentAnnotationUID)return;const{viewport:o}=e,i=this._getRenderingOptions(e,n),a=[n.data.contour.polyline.map((e=>o.worldToCanvas(e))),...Yo(n,o)];lh(t,n.annotationUID,"1",a,i)}function vh(e,t,n){var o;const{viewport:i}=e,a=this._getRenderingOptions(e,n),r=n.data.contour.polyline.map((e=>i.worldToCanvas(e)));dh(t,n.annotationUID,"1",r,a);const s=n.data.handles.activeHandleIndex;if(!0===(null===(o=this.configuration.alwaysRenderOpenContourHandles)||void 0===o?void 0:o.enabled)){const e=this.configuration.alwaysRenderOpenContourHandles.radius,o="0",i=[r[0],r[r.length-1]];0===s?i.shift():1===s&&i.pop(),Ar(t,n.annotationUID,o,i,{color:a.color,handleRadius:e})}if(null!==s){const e="1",o=r[0===s?0:r.length-1];Ar(t,n.annotationUID,e,[o],{color:a.color})}}function mh(e,t,n){const{viewport:o}=e,{openUShapeContourVectorToPeak:i}=n.data,{polyline:a}=n.data.contour;if(this.renderOpenContour(e,t,n),!i)return;const r=o.worldToCanvas(a[0]),s=o.worldToCanvas(a[a.length-1]),l=[o.worldToCanvas(i[0]),o.worldToCanvas(i[1])],d=this._getRenderingOptions(e,n);dh(t,n.annotationUID,"first-to-last",[r,s],{color:d.color,width:d.width,closePath:!1,lineDash:"2,2"}),dh(t,n.annotationUID,"midpoint-to-open-contour",[l[0],l[1]],{color:d.color,width:d.width,closePath:!1,lineDash:"2,2"})}function ph(e,t,n){const o=this._getRenderingOptions(e,n),{allowOpenContours:i}=this.configuration,{canvasPoints:a}=this.drawData;if(o.closePath=!1,dh(t,n.annotationUID,"1",a,o),i){const e=a[0],i=a[a.length-1];if(ch(e,i,this.configuration.closeContourProximity))dh(t,n.annotationUID,"2",[i,e],o);else{const i="0";Ar(t,n.annotationUID,i,[e],{color:o.color,handleRadius:2})}}}function fh(e,t,n){const{viewport:o}=e,{fusedCanvasPoints:i}=this.editData;if(void 0===i)return void this.renderClosedContour(e,t,n);const a=[i,...Yo(n,o)],r=this._getRenderingOptions(e,n);n.parentAnnotationUID&&r.fillOpacity&&(r.fillOpacity=0),lh(t,n.annotationUID,"preview-1",a,r)}function wh(e,t,n){const{fusedCanvasPoints:o}=this.editData;if(void 0===o)return void this.renderOpenContour(e,t,n);const i=this._getRenderingOptions(e,n);dh(t,n.annotationUID,"preview-1",o,i)}function Ih(e,t,n){if(n.parentAnnotationUID)return;const{viewport:o}=e,i=this._getRenderingOptions(e,n),a=n.data.contour.polyline.map((e=>o.worldToCanvas(e))),r=Yo(n,o),s=a[0],l=[];for(let e=0;e<100;e++){const t=e/100*2*Math.PI,n=s[0]+6*Math.cos(t),o=s[1]+6*Math.sin(t);l.push([n,o])}const d=[[s[0]-12,s[1]],[s[0]+12,s[1]],[s[0],s[1]-12],[s[0],s[1]+12]];lh(t,n.annotationUID,"1-crosshair_v",[d[0],d[1]],i),lh(t,n.annotationUID,"1-crosshair_h",[d[2],d[3]],i);const c=[l,...r];lh(t,n.annotationUID,"1",c,i)}const Eh=function(e){e.renderContour=uh.bind(e),e.renderClosedContour=gh.bind(e),e.renderOpenContour=vh.bind(e),e.renderPointContourWithMarker=Ih.bind(e),e.renderOpenUShapedContour=mh.bind(e),e.renderContourBeingDrawn=ph.bind(e),e.renderClosedContourBeingEdited=fh.bind(e),e.renderOpenContourBeingEdited=wh.bind(e),e._getRenderingOptions=hh.bind(e)};function Ch(e,t,n){Vu(t)&&(og(e,t,n),tn(t))}function _h(e,t){return ng(e,t)}function bh(e,t,n,o){const i=Sh(e,t);n.forEach((e=>{o?i.delete(e):i.add(e)})),tn(t)}function Th(e,t,n,o){const i=Sh(e,t);o?i.delete(n):i.add(n),tn(t)}function Dh(e,t,n){return!Sh(e,t).has(n)}function Sh(e,t){var n,o;const i=ju(e);return i&&null!==(n=null===(o=i[t])||void 0===o?void 0:o.segmentsHidden)&&void 0!==n?n:new Set}function yh(){return Yu()}function Mh(e){Xu(e)}function xh(e){return yh().representations[e]}function Oh(e,t){const n=yh();Mh({...n,representations:{...n.representations,[e]:{...n.representations[e],...t}}})}function Ph(e){return Hu(e)}function Ah(e,t){Bu(e,t)}function Rh(e,t){Gu(e,t)}function Lh(e){return Fu(e)}function Nh(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Fu(e)[t]=n,o||tn(e)}function kh(e,t){const n=Fu(e);return null==n?void 0:n[t]}class Uh extends Kr{constructor(e,t){super(e,t)}renderAnnotation(e,t){var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n];d.annotationUID=o.annotationUID;const a=this.getAnnotationStyle({annotation:o,styleSpecifier:d});if(!a.visibility)continue;const r=this.renderAnnotationInstance({enabledElement:e,targetId:l,annotation:o,annotationStyle:a,svgDrawingHelper:t});i||(i=r),o.invalidated=!1}return i}createAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,{world:i}=n,a=(0,oe.getEnabledElement)(o),{viewport:r}=a,s=r.getCamera(),{viewPlaneNormal:l,viewUp:d,position:c}=s,h=this.getReferencedImageId(r,i,l,d),u=r.getViewReference({points:[i]});return{highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),...u,referencedImageId:h,viewUp:d,cameraPosition:c},data:{handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},contour:{polyline:[],closed:!1}},interpolationUID:"",autoGenerated:!1}}addAnnotation(e,t){return gt(e,t)}cancelAnnotation(e){}moveAnnotation(e,t){const{points:n}=e.data.handles;for(let e=0,o=n.length;e<o;e++){const o=n[e];o[0]+=t[0],o[1]+=t[1],o[2]+=t[2]}e.invalidated=!0,ut(e).forEach((e=>this.moveAnnotation(e,t)))}updateContourPolyline(e,t,n){var o;const i=(null===(o=this.configuration)||void 0===o?void 0:o.decimate)||{};ni(e,t,n,{decimate:{enabled:!!i.enabled,epsilon:i.epsilon}})}getPolylinePoints(e){var t,n;return null!==(t=null===(n=e.data.contour)||void 0===n?void 0:n.polyline)&&void 0!==t?t:e.data.polyline}renderAnnotationInstance(e){const{enabledElement:t,annotationStyle:n,svgDrawingHelper:o}=e,i=e.annotation;if(i.parentAnnotationUID)return;const{annotationUID:a}=i,{viewport:r}=t,{worldToCanvas:s}=r,l=this.getPolylinePoints(i).map((e=>s(e))),{lineWidth:d,lineDash:c,color:h,fillColor:u,fillOpacity:g}=n;return lh(o,a,"contourPolyline",[l,...Yo(i,r)],{color:h,lineDash:c,lineWidth:Math.max(.1,d),fillColor:u,fillOpacity:g}),!0}}class Vh extends Uh{constructor(e,t){var n;super(e,t),null!==(n=this.configuration.interpolation)&&void 0!==n&&n.enabled&&pa.addTool(this.getToolName())}isContourSegmentationTool(){return!0}createAnnotation(e){const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n);if(!o)return;const{viewport:i}=o,a=super.createAnnotation(e);if(!this.isContourSegmentationTool())return a;const r=fr(i.id);if(!r)throw new Error("No active segmentation detected, create one before using scissors tool");const{type:s}=r;if(s!==Ct.Contour)throw new Error("A contour segmentation must be active");const{segmentationId:l}=r,d=Tr(l);return oe.utilities.deepMerge(a,{data:{segmentation:{segmentationId:l,segmentIndex:d}}})}addAnnotation(e,t){const n=super.addAnnotation(e,t);return this.isContourSegmentationTool()&&ji(e),n}cancelAnnotation(e){this.isContourSegmentationTool()&&zi(e),super.cancelAnnotation(e)}getAnnotationStyle(e){const t=super.getAnnotationStyle(e);if(!this.isContourSegmentationTool())return t;const n=this._getContourSegmentationStyle(e);return oe.utilities.deepMerge(t,n)}renderAnnotationInstance(e){const{annotation:t}=e,{invalidated:n}=t,o=super.renderAnnotationInstance(e);if(n&&this.isContourSegmentationTool()){const{segmentationId:e}=t.data.segmentation;on(e);const n=qu(e).map((e=>Vn(e).id));ro(n)}return o}_getContourSegmentationStyle(e){var t,n,o,i;const a=e.annotation,{segmentationId:r,segmentIndex:s}=a.data.segmentation,l=Lu(r),d=Wu(r);if(null==d||!d.length)return{};const c=d.map((e=>e.segmentationRepresentationUID));let h;h=d.length>1?zu(e.styleSpecifier.viewportId).find((e=>e.segmentationId===r&&c.includes(e.segmentationRepresentationUID))):d[0];const{segmentationRepresentationUID:u}=h,{autoGenerated:g}=a,v=Cr(r).includes(s),m=vn(u,s),p=e.styleSpecifier.viewportId,f=_h(p,u),w=yh(),I=Ph(u),E=kh(u,s),C=Dh(p,u,s),_=ig(p).segmentationRepresentationUID===u,b=Object.assign({},null!==(t=null==w||null===(n=w.representations)||void 0===n?void 0:n.CONTOUR)&&void 0!==t?t:{},null!==(o=null==I?void 0:I.CONTOUR)&&void 0!==o?o:{},null!==(i=null==E?void 0:E.CONTOUR)&&void 0!==i?i:{});let T,D=1,S=1,y=0;var M,x,O,P;if(g)D=null!==(M=b.outlineWidthAutoGenerated)&&void 0!==M?M:D,T=null!==(x=b.outlineDashAutoGenerated)&&void 0!==x?x:T,S=null!==(O=b.outlineOpacity)&&void 0!==O?O:S,y=null!==(P=b.fillAlphaAutoGenerated)&&void 0!==P?P:y;else if(_){var A,R,L,N;D=null!==(A=b.outlineWidthActive)&&void 0!==A?A:D,T=null!==(R=b.outlineDashActive)&&void 0!==R?R:T,S=null!==(L=b.outlineOpacity)&&void 0!==L?L:S,y=null!==(N=b.fillAlpha)&&void 0!==N?N:y}else{var k,U,V,W;D=null!==(k=b.outlineWidthInactive)&&void 0!==k?k:D,T=null!==(U=b.outlineDashInactive)&&void 0!==U?U:T,S=null!==(V=b.outlineOpacityInactive)&&void 0!==V?V:S,y=null!==(W=b.fillAlphaInactive)&&void 0!==W?W:y}l.activeSegmentIndex===s&&(D+=b.activeSegmentOutlineWidthDelta),D=b.renderOutline?D:0,y=b.renderFill?y:0;const H="rgba(".concat(m[0],", ").concat(m[1],", ").concat(m[2],", ").concat(S,")");return{color:H,fillColor:"rgb(".concat(m[0],", ").concat(m[1],", ").concat(m[2],")"),lineWidth:D,fillOpacity:y,lineDash:T,textbox:{color:H},visibility:f&&C,locked:v}}}const{pointCanProjectOnLine:Wh}=I,{EPSILON:Hh}=oe.CONSTANTS,Bh=1-Hh;class Fh extends Vh{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:ac.Shift,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,makeClockWise:!0,subPixelResolution:4,smoothing:{smoothOnAdd:!1,smoothOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},interpolation:{enabled:!1,onInterpolationComplete:null},decimate:{enabled:!1,epsilon:.1},displayOnePointAsCrosshairs:!1,calculateStats:!0,getTextLines:Gh,statsCalculator:cs}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"commonData",void 0),ae(this,"isDrawing",!1),ae(this,"isEditingClosed",!1),ae(this,"isEditingOpen",!1),ae(this,"activateDraw",void 0),ae(this,"activateClosedContourEdit",void 0),ae(this,"activateOpenContourEdit",void 0),ae(this,"activateOpenContourEndEdit",void 0),ae(this,"cancelDrawing",void 0),ae(this,"cancelClosedContourEdit",void 0),ae(this,"cancelOpenContourEdit",void 0),ae(this,"renderContour",void 0),ae(this,"renderContourBeingDrawn",void 0),ae(this,"renderClosedContourBeingEdited",void 0),ae(this,"renderOpenContourBeingEdited",void 0),ae(this,"renderPointContourWithMarker",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{element:n}=t,o=this.createAnnotation(e);this.addAnnotation(o,n);const i=Fi(n,this.getToolName());return this.activateDraw(e,o,i),e.preventDefault(),io(i),o})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,a=Fi(i,this.getToolName());this.activateOpenContourEndEdit(e,t,a,n)})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n,i=Fi(o,this.getToolName());t.data.contour.closed?this.activateClosedContourEdit(e,t,i):this.activateOpenContourEdit(e,t,i),e.preventDefault()})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{polyline:r}=t.data.contour;let s=a.worldToCanvas(r[0]);for(let e=1;e<r.length;e++){const t=s,i=a.worldToCanvas(r[e]);if(Wh(n,t,i,o))return!0;s=i}if(!t.data.contour.closed)return!1;const l=a.worldToCanvas(r[0]),d=a.worldToCanvas(r[r.length-1]);return Wh(n,l,d,o)})),ae(this,"cancel",(e=>{const t=this.isDrawing,n=this.isEditingOpen,o=this.isEditingClosed;t?this.cancelDrawing(e):n?this.cancelOpenContourEdit(e):o&&this.cancelClosedContourEdit(e)})),ae(this,"_calculateCachedStats",((e,t,n,o)=>{const{data:i}=e,{cachedStats:a}=i,{polyline:r,closed:s}=i.contour,l=Object.keys(a);for(let o=0;o<l.length;o++){var d,c,h;const u=l[o],g=this.getTargetIdImage(u,n);if(!g)continue;const{imageData:v,metadata:m}=g,p=r.map((e=>t.worldToCanvas(e))),f=p[0],w=t.canvasToWorld(f),I=t.canvasToWorld([f[0]+1,f[1]]),E=t.canvasToWorld([f[0],f[1]+1]),C=Sn.vec3.distance(w,I),_=Sn.vec3.distance(w,E),b=oe.utilities.transformWorldToIndex(v,r[0]);b[0]=Math.floor(b[0]),b[1]=Math.floor(b[1]),b[2]=Math.floor(b[2]);let T=b[0],D=b[0],S=b[1],y=b[1],M=b[2],x=b[2];for(let e=1;e<r.length;e++){const t=oe.utilities.transformWorldToIndex(v,r[e]);t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),T=Math.min(T,t[0]),D=Math.max(D,t[0]),S=Math.min(S,t[1]),y=Math.max(y,t[1]),M=Math.min(M,t[2]),x=Math.max(x,t[2])}const O=oe.utilities.transformWorldToIndex(v,r[1]);O[0]=Math.floor(O[0]),O[1]=Math.floor(O[1]),O[2]=Math.floor(O[2]);const{scale:P,areaUnits:A}=Ln(g,(()=>{const e=i.contour.polyline,n=e.length,o=new Array(n);for(let i=0;i<n;i++)o[i]=t.worldToCanvas(e[i]);const{maxX:a,maxY:r,minX:s,minY:l}=Un(o),d=t.canvasToWorld([s,l]),c=oe.utilities.transformWorldToIndex(v,d),h=t.canvasToWorld([a,r]);return[c,oe.utilities.transformWorldToIndex(v,h)]}));let R=il(p)/P/P;R*=C*_;const L=.01*(D-T),N=.01*(y-S),k=.01*(x-M);T=Math.floor(T-L),D=Math.ceil(D+L),S=Math.floor(S-N),y=Math.ceil(y+N),M=Math.floor(M-k),x=Math.ceil(x+k);const U=[[T,D],[S,y],[M,x]],V=v.indexToWorld([D,y,x]),W=t.worldToCanvas(V);let H=0,B=[],F=0;const G=co(v,((e,n)=>{let o=!0;const i=t.worldToCanvas(e);return i[1]!=H&&(F=0,H=i[1],B=rl(p,i,[W[0],i[1]]),B.sort((function(e,t){return e[0]===t[0]?0:e[0]<t[0]?-1:1}))),B.length&&i[0]>B[0][0]&&(B.shift(),F++),F%2==0&&(o=!1),o}),this.configuration.statsCalculator.statsCallback,U),q={isPreScaled:as(t,u),isSuvScaled:this.isSuvScaled(t,u,e.metadata.referencedImageId)},z=is(m.Modality,e.metadata.referencedImageId,q),j=this.configuration.statsCalculator.getStatistics();a[u]={Modality:m.Modality,area:R,perimeter:Ca(p,s),mean:null===(d=j.mean)||void 0===d?void 0:d.value,max:null===(c=j.max)||void 0===c?void 0:c.value,stdDev:null===(h=j.stdDev)||void 0===h?void 0:h.value,statsArray:j.array,pointsInShape:G,areaUnits:A,pixelValueUnits:z}}return Qe(e,o.viewport.element,qe.StatsUpdated),e.invalidated=!1,a})),ae(this,"_renderStats",((e,t,n,o)=>{var i;const{data:a}=e,r=this.getTargetId(t),s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},l=this.getLinkedTextBoxStyle(s,e);if(!l.visibility)return;const d=this.configuration.getTextLines(a,r);if(!d||0===d.length)return;const c=a.contour.polyline.map((e=>t.worldToCanvas(e)));if(!a.handles.textBox.hasMoved){const e=ns(c);a.handles.textBox.worldPosition=t.canvasToWorld(e)}const h=t.worldToCanvas(a.handles.textBox.worldPosition),u=Qr(o,null!==(i=e.annotationUID)&&void 0!==i?i:"","1",d,h,c,{},l),{x:g,y:v,width:m,height:p}=u;a.handles.textBox.worldBoundingBox={topLeft:t.canvasToWorld([g,v]),topRight:t.canvasToWorld([g+m,v]),bottomLeft:t.canvasToWorld([g,v+p]),bottomRight:t.canvasToWorld([g+m,v+p])}})),bc(this),Ac(this),qc(this),ih(this),sh(this),Eh(this),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,t){if(!t||!t.length)return;const n=(0,oe.getEnabledElement)(e),{viewport:o}=n;let i;if(o instanceof oe.VolumeViewport){const e=o.getCamera(),{spacingInNormalDirection:n}=oe.utilities.getTargetVolumeAndSpacingInNormalDir(o,e);i=this.filterAnnotationsWithinSlice(t,e,n)}else i=Vr(o,t);return i}filterAnnotationsWithinSlice(e,t,n){const{viewPlaneNormal:o}=t,i=e.filter((e=>{const t=e.metadata.viewPlaneNormal,n=Math.abs(Sn.vec3.dot(o,t))>Bh;return t&&n}));if(!i.length)return[];const a=n/2,{focalPoint:r}=t,s=[];for(const e of i){const t=e.data.contour.polyline[0];if(!e.isVisible)continue;const n=Sn.vec3.create();Sn.vec3.sub(n,r,t);const i=Sn.vec3.dot(n,o);Math.abs(i)<a&&s.push(e)}return s}isContourSegmentationTool(){return!1}createAnnotation(e){const t=e.detail.currentPoints.world,n=super.createAnnotation(e);return oe.utilities.deepMerge(n,{data:{contour:{polyline:[[...t]]},label:"",cachedStats:{}},onInterpolationComplete:e=>{e.data.handles.points.length=0}})}getAnnotationStyle(e){return super.getAnnotationStyle(e)}renderAnnotationInstance(e){const{enabledElement:t,targetId:n,svgDrawingHelper:o}=e,i=e.annotation;let a=!1;const{viewport:r,renderingEngine:s}=t,l=this.isDrawing,d=this.isEditingOpen,c=this.isEditingClosed;if(l||d||c){const e=this.commonData.annotation.annotationUID;if(i.annotationUID===e)if(l)this.renderContourBeingDrawn(t,o,i);else if(c)this.renderClosedContourBeingEdited(t,o,i);else{if(!d)throw new Error("Unknown ".concat(this.getToolName()," annotation rendering state"));this.renderOpenContourBeingEdited(t,o,i)}else this.configuration.displayOnePointAsCrosshairs&&1===i.data.contour.polyline.length?this.renderPointContourWithMarker(t,o,i):this.renderContour(t,o,i);a=!0}else this.configuration.displayOnePointAsCrosshairs&&1===i.data.contour.polyline.length?this.renderPointContourWithMarker(t,o,i):this.renderContour(t,o,i);if(this.configuration.calculateStats)return this._calculateStatsIfActive(i,n,r,s,t),this._renderStats(i,r,t,o),a}_calculateStatsIfActive(e,t,n,o,i){var a,r,s;const l=null===(a=this.commonData)||void 0===a?void 0:a.annotation.annotationUID;if((e.annotationUID!==l||null!==(r=this.commonData)&&void 0!==r&&r.movingTextBox)&&(null===(s=this.commonData)||void 0===s||!s.movingTextBox)){const{data:a}=e;a.cachedStats[t]&&null!=a.cachedStats[t].areaUnits?e.invalidated&&this._throttledCalculateCachedStats(e,n,o,i):(a.cachedStats[t]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnits:null},this._calculateCachedStats(e,n,o,i))}}}function Gh(e,t){const n=e.cachedStats[t],{area:o,mean:i,stdDev:a,perimeter:r,max:s,isEmptyArea:l,areaUnits:d,pixelValueUnits:c}=n||{},h=[];if(o){const e=l?"Area: Oblique not supported":"Area: ".concat(Qd(o)," ").concat(d);h.push(e)}return i&&h.push("Mean: ".concat(Qd(i)," ").concat(c)),s&&h.push("Max: ".concat(Qd(s)," ").concat(c)),a&&h.push("Std Dev: ".concat(Qd(a)," ").concat(c)),r&&h.push("Perimeter: ".concat(Qd(r)," ").concat(c)),h}ae(Fh,"toolName",void 0),Fh.toolName="PlanarFreehandROI";const qh=Fh;class zh extends qh{constructor(e){super(oe.utilities.deepMerge({configuration:{calculateStats:!1,allowOpenContours:!1}},e))}isContourSegmentationTool(){return!0}renderAnnotationInstance(e){const t=e.annotation,{invalidated:n}=t,o=super.renderAnnotationInstance(e);if(n){const{segmentationId:e}=t.data.segmentation;on(e)}return o}}ae(zh,"toolName",void 0),zh.toolName="PlanarFreehandContourSegmentationTool";const jh=zh,Kh=e=>{const{numberOfCells:t,lines:n}=e,o=[],i=[];for(let e=0;e<n.length;){const a=n[e];if(i.push(a),o.push(n.slice(e+1,e+a+1)),e+=a+1,o.length===t)break}return{lineSegments:o,linesNumberOfPoints:i}};function Yh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ln(e,Ct.Contour,(()=>async function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=null!==(t=n.segmentIndices)&&void 0!==t&&t.length?n.segmentIndices:$t(e);let i;const a=Lu(e).representationData;try{a.SURFACE?i=await async function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!n.viewport)throw new Error("Viewport is required to compute contour from surface");const{viewport:o,segmentationRepresentationUID:i}=n,a=null!==(t=n.segmentIndices)&&void 0!==t&&t.length?n.segmentIndices:$t(e),r=new Map,s=new Map,l=Lu(e).representationData.SURFACE,d=[];return l.geometryIds.forEach(((e,t)=>{if(a.includes(t)){var n;r.set(t,e);const o=null===(n=oe.cache.getGeometry(e))||void 0===n?void 0:n.data;o&&d.push({id:e,points:o.getPoints(),polys:o.getPolys()})}})),r.forEach(((e,t)=>{s.set(e,t)})),Dn(await Gt(d,o,i),s)}(e,{segmentIndices:o,...n}):a.LABELMAP&&(i=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.viewport)throw new Error("Viewport is required to compute contour from labelmap");const n=await In(e,t);if(null==n||!n.length)return void console.error("Failed to convert labelmap to surface or labelmap is empty");const{viewport:o,segmentationRepresentationUID:i}=t,a=n.map((e=>({id:e.segmentIndex.toString(),points:e.data.points,polys:e.data.polys,segmentIndex:e.segmentIndex})));return Dn(await Gt(a,o,i))}(e,{segmentIndices:o,...n}))}catch(e){throw console.error(e),e}if(!i)throw new Error("Not enough data to convert to contour, currently only support converting volume labelmap to contour if available");const{viewport:r,segmentationRepresentationUID:s}=n,l=function(e,t,n){const o=new Map;for(const[i,a]of e)for(const e of a){const{points:a}=e,{lineSegments:r,linesNumberOfPoints:s}=Kh(e);for(let e=0;e<r.length;e++){const l=r[e],d=[];for(let t=0;t<s[e];t++){const e=l[t];d.push([a[3*e],a[3*e+1],a[3*e+2]])}if(d.length<3)continue;const c={annotationUID:oe.utilities.uuidv4(),data:{contour:{closed:!0,polyline:d},segmentation:{segmentationId:n,segmentIndex:i},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:jh.toolName,...t.getViewReference()}};gt(c,t.element);const h=o.get(i)||new Set;h.add(c.annotationUID),o.set(i,h)}}return o}(i,r,e);return Bu(s,{CONTOUR:{fillAlpha:0}}),{annotationUIDsMap:l}}(e,t)),(()=>{}))}function Xh(e,t,n){var o;const{segmentationRepresentationUID:i,config:a}=n,r=null==a||null===(o=a.allSegments)||void 0===o?void 0:o.CONTOUR,s=Yu().representations.CONTOUR,l=oe.utilities.deepMerge(s,r),d=bn(i),c=l.outlineWidthActive;(null==d?void 0:d.outlineWidthActive)!==c&&Tn(i,Object.assign({},d,{outlineWidthActive:c}));const h=[],u=[],g=Sh(e.id,i);for(const e of g)d.segmentsHidden.has(e)||h.push(e);for(const e of d.segmentsHidden)g.has(e)||u.push(e);const v=Array.from(d.segmentsHidden).filter((e=>!u.includes(e))).concat(h),{segmentSpecificConfigs:m}=t.reduce(((e,t)=>{const n=oe.cache.getGeometry(t),{data:o}=n,a=o.getSegmentIndex(),r=kh(i,a);return e.segmentSpecificConfigs[a]=null!=r?r:{},e}),{contourSets:[],segmentSpecificConfigs:{}}),p=[...v,...u],f=Object.values(m).some((e=>Object.keys(e).length>0));(p.length||f)&&Tn(i,Object.assign({},d,{segmentsHidden:new Set(g)})),e.render()}function Jh(e,t,n){var o;const{segmentationRepresentationUID:i,segmentationId:a}=n,r=new Map;t.forEach((t=>{const n=oe.cache.getGeometry(t);if(!n)return void console.warn("No geometry found for geometryId ".concat(t,". Skipping render."));const o=n.data.getSegmentIndex();!function(e){if(!e)throw new Error("No contours found for geometryId ".concat(e.id));const t=e.id;if(e.type!==oe.Enums.GeometryType.CONTOUR)throw new Error("Geometry type ".concat(e.type," not supported for rendering."));e.data||console.warn("No contours found for geometryId ".concat(t,". Skipping render."))}(n);const s=kh(i,o);n.data.contours.forEach((t=>{const{points:n,color:i,id:r}=t,s={annotationUID:oe.utilities.uuidv4(),data:{contour:{closed:!0,polyline:n},segmentation:{segmentationId:a,segmentIndex:o,color:i,id:r},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!0,isVisible:!0,metadata:{referencedImageId:So(e,n[0],e.getCamera().viewPlaneNormal),toolName:"PlanarFreehandContourSegmentationTool",FrameOfReferenceUID:e.getFrameOfReferenceUID(),viewPlaneNormal:e.getCamera().viewPlaneNormal}};gt(s,e.element),ji(s)})),s&&r.set(o,s)}));const s=null===(o=n.config)||void 0===o?void 0:o.allSegments.CONTOUR,l=Yu().representations.CONTOUR,d=oe.utilities.deepMerge(l,s).outlineWidthActive,c=Sh(e.id,i);Tn(i,Object.assign({},bn(i),{segmentsHidden:new Set(c),segmentSpecificMap:r,outlineWidthActive:d})),e.resetCamera(),e.render()}E(348);let Zh=!1;const $h={render:async function(e,t){var n;const{segmentationId:o}=t,i=Lu(o);if(!i)return;let a=i.representationData[Ct.Contour];a||!Kt(t.segmentationRepresentationUID)||Zh||(Zh=!0,a=await Yh(o,{segmentationRepresentationUID:t.segmentationRepresentationUID,viewport:e})),a&&null!==(n=a)&&void 0!==n&&null!==(n=n.geometryIds)&&void 0!==n&&n.length&&function(e,t,n,o){(n.size?Xh:Jh)(e,t,o)}(e,a.geometryIds,a.annotationUIDsMap,t)},removeRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=(0,oe.getEnabledElementByViewportId)(e);if(!o)return;const{viewport:i}=o;Zu(t),function(e){_n.delete(e)}(t),n&&i.render()}};var Qh=E(441),eu=E.n(Qh),tu=E(795),nu=E.n(tu);const ou=(0,oe.getWebWorkerManager)(),iu=(e,t)=>{(0,oe.triggerEvent)(e,oe.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:Nt.POLYSEG_CONTOUR_TO_LABELMAP})};async function au(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{viewport:n}=t,o=oe.utilities.getViewportImageIds(n);if(!o)throw new Error("No imageIds found, labelmap computation from contour requires viewports with imageIds");const i=oe.utilities.uuidv4(),a=oe.utilities.generateVolumePropsFromImageIds(o,i),{metadata:r,dimensions:s,origin:l,direction:d,spacing:c,scalarData:h}=a,u=await oe.volumeLoader.createLocalSegmentationVolume({dimensions:s,origin:l,direction:d,spacing:c,metadata:r,imageIds:o.map((e=>"generated://".concat(e))),referencedImageIds:o},i),{segmentIndices:g,annotationUIDsInSegmentMap:v}=su(e,t);iu(oe.eventTarget,0);const m=await ou.executeTask("polySeg","convertContourToVolumeLabelmap",{segmentIndices:g,dimensions:s,scalarData:h,origin:l,direction:d,spacing:c,annotationUIDsInSegmentMap:v},{callbacks:[e=>{iu(oe.eventTarget,e)}]});return iu(oe.eventTarget,1),u.imageData.getPointData().getScalars().setData(m),u.imageData.modified(),u.modified(),{volumeId:u.volumeId}}async function ru(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.viewport)throw new Error("No viewport provided, labelmap computation from contour requires viewports");const n=t.viewport.getImageIds();if(!n)throw new Error("No imageIds found, labelmap computation from contour requires viewports with imageIds");n.forEach((e=>{if(!oe.cache.getImageLoadObject(e))throw new Error("ImageIds must be cached before converting contour to labelmap")}));const{imageIds:o}=await oe.imageLoader.createAndCacheDerivedSegmentationImages(n),{segmentIndices:i,annotationUIDsInSegmentMap:a}=su(e,t),r=new Map;o.forEach(((e,t)=>{var o,i,a,s,l;const d=oe.cache.getImage(e),c=oe.metaData.get(oe.Enums.MetadataModules.IMAGE_PLANE,e);let{columnCosines:h,rowCosines:u,rowPixelSpacing:g,columnPixelSpacing:v,imagePositionPatient:m}=c;h=null!==(o=h)&&void 0!==o?o:[0,1,0],u=null!==(i=u)&&void 0!==i?i:[1,0,0],g=null!==(a=g)&&void 0!==a?a:1,v=null!==(s=v)&&void 0!==s?s:1,m=null!==(l=m)&&void 0!==l?l:[0,0,0];const p=Sn.vec3.fromValues(u[0],u[1],u[2]),f=Sn.vec3.fromValues(h[0],h[1],h[2]),w=Sn.vec3.create();Sn.vec3.cross(w,p,f);const I=[...p,...f,...w],E=[g,v,1],C=m;r.set(n[t],{direction:I,spacing:E,origin:C,scalarData:d.getPixelData(),imageId:e,dimensions:[d.width,d.height,1]})})),iu(oe.eventTarget,0);const s=await ou.executeTask("polySeg","convertContourToStackLabelmap",{segmentationsInfo:r,annotationUIDsInSegmentMap:a,segmentIndices:i},{callbacks:[e=>{iu(oe.eventTarget,e)}]});iu(oe.eventTarget,1);const l=[];return s.forEach(((e,t)=>{var n;let{scalarData:o}=e;const i=r.get(t),{imageId:a}=i,s=oe.cache.getImage(a);s.getPixelData().set(o),null===(n=s.imageFrame)||void 0===n||null===(n=n.pixelData)||void 0===n||n.set(o),l.push(a)})),{imageIds:l}}function su(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=e.annotationUIDsMap,i=null!==(t=n.segmentIndices)&&void 0!==t&&t.length?n.segmentIndices:Array.from(o.keys()),a=new Map;return i.forEach((e=>{const t=o.get(e);let n=Array.from(t);n=n.filter((e=>!pt(e).parentAnnotationUID));const i=n.map((e=>{var t;const n=pt(e),o=null===(t=n.childAnnotationUIDs)||void 0===t?void 0:t.length;return{polyline:n.data.contour.polyline,referencedImageId:n.metadata.referencedImageId,holesPolyline:o&&n.childAnnotationUIDs.map((e=>pt(e).data.contour.polyline))}}));a.set(e,i)})),{segmentIndices:i,annotationUIDsInSegmentMap:a}}const lu=(0,oe.getWebWorkerManager)(),du=(e,t)=>{(0,oe.triggerEvent)(e,oe.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:Nt.POLYSEG_SURFACE_TO_LABELMAP})};function cu(e){const{type:t}=e;return t===Ct.Labelmap?fu():{}}const hu=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]];const uu=async function(e,t,n){const o=t.map((t=>async function(e,t,n){var o;const{segmentationId:i,options:a={}}=t,r=(null===(o=t.options)||void 0===o?void 0:o.segmentationRepresentationUID)||oe.utilities.uuidv4(),s=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).colorLUTOrIndex;let t;if("number"==typeof e)t=e;else{const n=eg();tg(Array.isArray(e)?e:hu,n),t=n}return t}(a);return Ku(e,{segmentationId:i,segmentationRepresentationUID:r,type:t.type,colorLUTIndex:s,rendering:cu(t),polySeg:a.polySeg,config:{allSegments:{},perSegment:{}}}),n&&Bu(r,n.representations),t.type===Ct.Contour&&io([e]),nn(i),r}(e,t,n)));return await Promise.all(o)};async function gu(e){let{volumeId:t}=e;const n=oe.cache.getVolume(t);let o=!1;n.imageCacheOffsetMap.size>0&&(o=n.imageIds.every((e=>oe.cache.getImage(e))));const i=(0,oe.getRenderingEngines)()[0].getVolumeViewports().find((e=>e.hasVolumeId(t)));n.decache(!i&&o);const a=function(e){var t,n;if(null!==(t=e.additionalDetails)&&void 0!==t&&t.imageIds)return e.additionalDetails.imageIds;if(null!==(n=e.referencedImageIds)&&void 0!==n&&n.length&&!e.referencedImageIds[0].startsWith("derived"))return[...e.imageIds].reverse();{var o,i,a;const t=e.referencedVolumeId,n=oe.cache.getVolume(t);if(!n)throw new Error("Cannot convert volumetric segmentation without referenced volume to stack segmentation yet");if(null==n||null===(o=n.imageIds)||void 0===o||!o.length)throw new Error("Cannot convert volumetric segmentation without imageIds to stack segmentation yet");if(null!==(i=n.imageIds)&&void 0!==i&&i[0].startsWith("derived"))throw new Error("Cannot convert volume segmentation that is derived from another segmentation\n to stack segmentation yet, include the additionalDetails.imageIds\n in the volume segmentation in case you need it for the conversion");n.imageIds;let r=e.imageIds;return null!==(a=r)&&void 0!==a&&a.length||(r=e.convertToImageSlicesAndCache()),[...r].reverse()}}(n);return{imageIds:a}}async function vu(e){let{segmentationId:t,options:n}=e;const o=Lu(t).representationData.LABELMAP,{imageIds:i}=await gu({volumeId:o.volumeId});await async function(e){let{segmentationId:t,viewportId:n,imageIds:o,options:i}=e;const a=Lu(t);if(null!=i&&i.removeOriginal){const e=a.representationData.LABELMAP;oe.cache.getVolume(e.volumeId)&&oe.cache.removeVolumeLoadObject(e.volumeId),a.representationData.LABELMAP={imageIds:o}}else a.representationData.LABELMAP={...a.representationData.LABELMAP,imageIds:o};await uu(n,[{segmentationId:t,type:Ct.Labelmap}]),Su(),oe.eventTarget.addEventListenerOnce(se.SEGMENTATION_RENDERED,(()=>on(t)))}({segmentationId:t,viewportId:n.viewportId,imageIds:i,options:n})}function mu(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ln(e,Ct.Labelmap,(()=>async function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=null!==(t=n.segmentIndices)&&void 0!==t&&t.length?n.segmentIndices:$t(e);let i;const a=Lu(e),r=a.representationData;try{r.CONTOUR?i=await async function(e){var t,n;let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=null===(t=o.viewport instanceof oe.VolumeViewport)||void 0===t||t;if(i&&!o.viewport)throw new Error("Cannot compute labelmap from contour segmentation without providing the viewport");const a=null!==(n=o.segmentIndices)&&void 0!==n&&n.length?o.segmentIndices:$t(e),r=Lu(e).representationData.CONTOUR,s=i?au:ru;return await s(r,{segmentIndices:a,segmentationRepresentationUID:o.segmentationRepresentationUID,viewport:o.viewport})}(e,{segmentIndices:o,...n}):r.SURFACE&&(i=await async function(e){var t,n;let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=null===(t=o.viewport instanceof oe.VolumeViewport)||void 0===t||t,a=null!==(n=o.segmentIndices)&&void 0!==n&&n.length?o.segmentIndices:$t(e),r=Lu(e),s=new Map;if(r.representationData.SURFACE.geometryIds.forEach(((e,t)=>{a.includes(t)&&s.set(t,e)})),i&&!o.viewport)throw new Error("Cannot compute labelmap from surface segmentation without providing the viewport");let l;if(i){const e=o.viewport.getDefaultActor(),{uid:t}=e;l=await oe.volumeLoader.createAndCacheDerivedSegmentationVolume(t)}else{const e=o.viewport.getImageIds(),t="generatedSegmentationVolumeId",n=oe.utilities.generateVolumePropsFromImageIds(e,t);delete n.imageIds,l=await oe.volumeLoader.createLocalSegmentationVolume({...n,scalarData:n.scalarData,referencedImageIds:e},t)}const d=await async function(e,t){const{geometryIds:n}=e;if(null==n||!n.size)throw new Error("No geometry IDs found for surface representation");const o=new Map;n.forEach(((e,t)=>{const n=oe.cache.getGeometry(e).data,i=n.getPoints(),a=n.getPolys();o.set(t,{points:i,polys:a})}));const{dimensions:i,direction:a,origin:r,spacing:s}=t;du(oe.eventTarget,0);const l=await lu.executeTask("polySeg","convertSurfacesToVolumeLabelmap",{segmentsInfo:o,dimensions:i,spacing:s,direction:a,origin:r},{callbacks:[e=>{du(oe.eventTarget,e)}]});return du(oe.eventTarget,1),t.imageData.getPointData().getScalars().setData(l),t.imageData.modified(),t.modified(),{volumeId:t.volumeId}}({geometryIds:s},l);return i?d:await gu({volumeId:l.volumeId})}(a.segmentationId,{segmentIndices:o,...n}))}catch(e){throw console.error(e),e}if(!i)throw new Error("Not enough data to convert to surface, currently only support converting volume labelmap to surface if available");return i}(e,t)),(()=>{}))}const pu=new Map;function fu(){const e=nu().newInstance(),t=eu().newInstance();return t.addPoint(0,0),{ofun:t,cfun:e}}let wu=!1;function Iu(e,t,n){const o={...e,...n||{}};return{fillAlpha:t?o.fillAlpha:o.fillAlphaInactive,outlineWidth:t?o.outlineWidthActive:o.outlineWidthInactive,renderFill:t?o.renderFill:o.renderFillInactive,renderOutline:o.renderOutline,outlineOpacity:t?o.outlineOpacity:o.outlineOpacityInactive,activeSegmentOutlineWidthDelta:o.activeSegmentOutlineWidthDelta}}function Eu(e,t,n,o){let{fillAlpha:i,renderFill:a,renderOutline:r,segmentColor:s,outlineWidth:l}=o;const d="".concat(e,"-").concat(t,"-").concat(n),c=pu.get(d);if(!c)return pu.set(d,{fillAlpha:i,renderFill:a,renderOutline:r,outlineWidth:l,segmentColor:s.slice()}),{forceOpacityUpdate:!0,forceColorUpdate:!0};const{fillAlpha:h,renderFill:u,renderOutline:g,outlineWidth:v,segmentColor:m}=c,p=m[0]!==s[0]||m[1]!==s[1]||m[2]!==s[2];return{forceOpacityUpdate:m[3]!==s[3]||h!==i||u!==a||g!==r||v!==l||pu.set(d,{fillAlpha:i,renderFill:a,renderOutline:r,outlineWidth:l,segmentColor:s.slice()}),forceColorUpdate:p}}async function Cu(e,t,n){await async function(e,t,n){const o=(0,oe.getEnabledElement)(e),{renderingEngine:i,viewport:a}=o,{id:r}=a;if(Xt(t,a)){const e=[{volumeId:t.volumeId,actorUID:n,visibility:!0,blendMode:oe.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND}];await(0,oe.addVolumesToViewports)(i,e,[r],!1,!0)}else{const e=Vu(n),t=[{imageId:rg(a.id,e.segmentationId),actorUID:n}];await(0,oe.addImageSlicesToViewports)(i,t,[r])}}(e.element,t,n)}const _u={getRepresentationRenderingConfig:fu,render:async function(e,t){const{segmentationId:n,segmentationRepresentationUID:o}=t,i=Lu(n);if(!i)return void console.warn("No segmentation found for segmentationId: ",n);let a=i.representationData[Ct.Labelmap],r=e.getActor(o);if(!a&&Kt(o)&&!wu){if(wu=!0,a=await mu(n,{segmentationRepresentationUID:o,viewport:e}),!a)throw new Error("No labelmap data found for segmentationId ".concat(n,"."));wu=!1}if(a){if(Xt(a,e)){var s;if(e instanceof oe.StackViewport)return;const{volumeId:t}=a;if(!oe.cache.getVolume(t))throw new Error("No Labelmap found for volumeId: ".concat(t));if(!function(e,t){if(!t)return!0;const n=e.getDefaultActor();if(!n)return!1;const{uid:o}=n,i=oe.cache.getVolume(o);if(i){const e=oe.cache.getVolume(t);if(e&&i.metadata.FrameOfReferenceUID===e.metadata.FrameOfReferenceUID)return!0}return!1}(e,null===(s=a)||void 0===s?void 0:s.referencedVolumeId))return;r||await Cu(e,a,o),r=e.getActor(o)}else{if(e instanceof oe.VolumeViewport)return;if(!rg(e.id,n))return;r||await Cu(e,a,o),r=e.getActor(o)}r&&function(e,t,n){const{rendering:o,config:i,colorLUTIndex:a}=n,r=ig(e)===n,{cfun:s,ofun:l}=o,{allSegments:d,perSegment:c}=i,h=Yu().representations[Ct.Labelmap],u=Yu().renderInactiveRepresentations,g={...h,...d[Ct.Labelmap]},v=Qu(a),m=Math.min(256,v.length),{uid:p}=t,{outlineWidth:f,renderOutline:w,outlineOpacity:I,activeSegmentOutlineWidthDelta:E}=Iu(g,r),C=Sh(e,n.segmentationRepresentationUID);for(let t=0;t<m;t++){var _;const n=t,o=v[n],i=null==c||null===(_=c[n])||void 0===_?void 0:_[Ct.Labelmap],{fillAlpha:a,outlineWidth:d,renderFill:h,renderOutline:u}=Iu(g,r,i),{forceOpacityUpdate:m,forceColorUpdate:f}=Eu(e,p,n,{fillAlpha:a,renderFill:h,renderOutline:u,segmentColor:o,outlineWidth:d});if(f&&s.addRGBPoint(n,o[0]/255,o[1]/255,o[2]/255),m)if(h){const e=C.has(n)?0:o[3]/255*a;l.removePoint(n),l.addPointLong(n,e,.5,1)}else l.addPointLong(n,.01,.5,1)}const b=t.actor;b.getProperty().setRGBTransferFunction(0,s),l.setClamping(!1),b.getProperty().setScalarOpacity(0,l),b.getProperty().setInterpolationTypeToNearest(),b.getProperty().setUseLabelOutline(w),b.getProperty().setLabelOutlineOpacity(I);const{activeSegmentIndex:T}=Lu(n.segmentationId),D=new Array(m-1);for(let e=1;e<m;e++)C.has(e)?D[e-1]=0:D[e-1]=e===T?f+E:f;b.getProperty().setLabelOutlineThickness(D);const S=r||u;b.setVisibility(S)}(e.id,r,t)}},removeRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=(0,oe.getEnabledElementByViewportId)(e);if(!o)return;const{viewport:i}=o;(function(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n;o.removeActors([t])})(i.element,t),Zu(t),n&&i.render()}},bu={[Ct.Labelmap]:_u,[Ct.Contour]:$h,[Ct.Surface]:Cn},Tu=jh.toolName,Du=new class{constructor(){ae(this,"_needsRender",new Set),ae(this,"_animationFrameSet",!1),ae(this,"_animationFrameHandle",null),ae(this,"hasBeenDestroyed",void 0),ae(this,"_getAllViewports",(()=>(0,oe.getRenderingEngines)().flatMap((e=>e.getViewports())))),ae(this,"_renderFlaggedSegmentations",(()=>{this._throwIfDestroyed(),Array.from(this._needsRender).forEach((e=>{this._triggerRender(e)})),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}))}renderSegmentations(e){const t=this._getViewportIdsForSegmentation(e);this._setViewportsToBeRenderedNextFrame(t)}renderSegmentationsForViewports(e){if(null!=e&&e.length)this._setViewportsToBeRenderedNextFrame(e);else{const e=this._getAllViewports();this._setViewportsToBeRenderedNextFrame(e.map((e=>e.id)))}}_getViewportIdsForSegmentation(e){const t=this._getAllViewports(),n=[];for(const o of t){const t=o.id,i=zu(t);e?i.some((t=>t.segmentationId===e))&&n.push(t):i.length>0&&n.push(t)}return n}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setViewportsToBeRenderedNextFrame(e){e.forEach((e=>{this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedSegmentations),this._animationFrameSet=!0)}_triggerRender(e){const t=zu(e);if(null==t||!t.length)return;const{viewport:n}=(0,oe.getEnabledElementByViewportId)(e),o=[],i=t.map((e=>{e.type===Ct.Contour&&this._addPlanarFreeHandToolIfAbsent(n);const t=bu[e.type];try{const i=t.render(n,e);o.push(i)}catch(e){console.error(e)}return Promise.resolve()}));function a(e){const{element:t,viewportId:n}=e.detail;t.removeEventListener(oe.Enums.Events.IMAGE_RENDERED,a);const o={viewportId:n};(0,oe.triggerEvent)(oe.eventTarget,se.SEGMENTATION_RENDERED,{...o})}Promise.allSettled(i).then((()=>{n.element.addEventListener(oe.Enums.Events.IMAGE_RENDERED,a),n.render()}))}_addPlanarFreeHandToolIfAbsent(e){Tu in Ke.tools||Ki(jh);const t=Vn(e.id);t.hasTool(Tu)||(t.addTool(Tu),t.setToolPassive(Tu))}};function Su(e){Du.renderSegmentations(e)}const yu=Su;async function Mu(e){var t;let{imageIds:n,options:o}=e;const i=n,a={imageIds:n},r=null!==(t=null==o?void 0:o.volumeId)&&void 0!==t?t:oe.utilities.uuidv4();return await oe.volumeLoader.createAndCacheVolumeFromImages(r,i,{additionalDetails:a}),{volumeId:r}}async function xu(e){let{segmentationId:t,options:n}=e;const o=Lu(t).representationData.LABELMAP,{volumeId:i}=await Mu({imageIds:o.imageIds,options:n});await async function(e){let{segmentationId:t,viewportId:n,volumeId:o,options:i}=e;const a=Lu(t);if(null!=i&&i.removeOriginal){const e=a.representationData.LABELMAP,{imageIds:t}=e;t.forEach((e=>{oe.cache.removeImageLoadObject(e)})),a.representationData.LABELMAP={volumeId:o}}else a.representationData.LABELMAP={...a.representationData.LABELMAP,volumeId:o};Su(n),oe.eventTarget.addEventListenerOnce(se.SEGMENTATION_RENDERED,(()=>on(t)))}({segmentationId:t,viewportId:n.viewportId,options:n,volumeId:i})}const Ou={colorLUT:[],segmentations:[],globalConfig:{renderInactiveRepresentations:!0,representations:{[Ct.Labelmap]:Tt(),[Ct.Contour]:_t,[Ct.Surface]:Dt}},representations:{},viewports:{}},Pu=new class{constructor(e){ae(this,"state",void 0),ae(this,"uid",void 0),ae(this,"_stackLabelmapImageIdReferenceMap",new Map),e||(e=oe.utilities.uuidv4()),this.state=structuredClone(Ou),this.uid=e}getState(){return this.state}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this.state=structuredClone(Ou)}getSegmentation(e){return this.state.segmentations.find((t=>t.segmentationId===e))}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error("Segmentation with id ".concat(e.segmentationId," already exists"));if(e.representationData.LABELMAP&&"volumeId"in e.representationData.LABELMAP&&!("imageIds"in e.representationData.LABELMAP)){const t=this.getLabelmapImageIds(e.representationData);e.representationData.LABELMAP.imageIds=t}this.state.segmentations.push(e)}removeSegmentation(e){this.state.segmentations=this.state.segmentations.filter((t=>t.segmentationId!==e))}getRepresentation(e){return this.state.representations[e]}addRepresentation(e){const{segmentationRepresentationUID:t}=e;this.state.representations[t]=e}addRepresentationToViewport(e,t){const n=(0,oe.getEnabledElementByViewportId)(e);if(!n)return;this.state.viewports[e]||(this.state.viewports[e]={});const o=this.getRepresentation(t);if(o.type!==Ct.Labelmap)return void this.setActiveRepresentation(e,t);const i=n.viewport instanceof oe.BaseVolumeViewport,a=this.getSegmentation(o.segmentationId),{representationData:r}=a,s="volumeId"in r.LABELMAP;if(i){const e=n.viewport.getFrameOfReferenceUID();if(!s){const t=this.getLabelmapImageIds(a.representationData),n=oe.cache.getImage(t[0]);(null==n?void 0:n.FrameOfReferenceUID)===e&&xu(a)}}else s||this.updateSegmentationImageReferences(e,a.segmentationId);this.setActiveRepresentation(e,t)}updateSegmentationImageReferences(e,t){const n=this.getSegmentation(t);if(!n)return;this._stackLabelmapImageIdReferenceMap.has(t)||this._stackLabelmapImageIdReferenceMap.set(t,new Map);const{representationData:o}=n,i=this.getLabelmapImageIds(o),a=(0,oe.getEnabledElementByViewportId)(e).viewport,r=a.getCurrentImageId();for(const e of i)a.isReferenceViewable({referencedImageId:e},{asOverlay:!0})&&this._stackLabelmapImageIdReferenceMap.get(t).set(r,e);return this._stackLabelmapImageIdReferenceMap.get(t).get(r)}getLabelmapImageIds(e){const t=e.LABELMAP;let n;if(t.imageIds)n=t.imageIds;else if(!n&&t.volumeId){const e=t.volumeId;n=oe.cache.getVolume(e).imageIds}return n}getLabelmapImageIdsForViewport(e,t){const n=(0,oe.getEnabledElementByViewportId)(e);if(!n)return;if(!this._stackLabelmapImageIdReferenceMap.has(t))return;const o=n.viewport.getCurrentImageId();return this._stackLabelmapImageIdReferenceMap.get(t).get(o)}getRepresentationsForViewport(e){const t=this.state.viewports[e];return t?Object.keys(t).map((e=>this.getRepresentation(e))):[]}removeRepresentation(e){delete this.state.representations[e],Object.keys(this.state.viewports).forEach((t=>{delete this.state.viewports[t][e]}))}setActiveRepresentation(e,t){Object.keys(this.state.viewports[e]).forEach((t=>{this.state.viewports[e][t].active=!1})),this.state.viewports[e]||(this.state.viewports[e]={}),this.state.viewports[e][t]||(this.state.viewports[e][t]={active:!1,visible:!0,segmentsHidden:new Set}),this.state.viewports[e][t].active=!0}getActiveRepresentation(e){var t;if(null===(t=this.state.viewports)||void 0===t||!t[e])return;const n=Object.entries(this.state.viewports[e]).find((e=>{let[,t]=e;return t.active}));return n?this.getRepresentation(n[0]):void 0}getGlobalConfig(){return this.state.globalConfig}setGlobalConfig(e){this.state.globalConfig=e}_getRepresentationConfig(e){const t=this.getRepresentation(e);if(t)return t.config}getAllSegmentsConfig(e){const t=this._getRepresentationConfig(e);if(t)return t.allSegments}getPerSegmentConfig(e){const t=this._getRepresentationConfig(e);if(t)return t.perSegment}setAllSegmentsConfig(e,t){const n=this._getRepresentationConfig(e);n&&(n.allSegments=t)}setPerSegmentConfig(e,t){const n=this._getRepresentationConfig(e);n&&(n.perSegment=t)}getRepresentationVisibility(e,t){var n;const o=this.state.viewports[e];return o&&(null===(n=o[t])||void 0===n?void 0:n.visible)}setRepresentationVisibility(e,t,n){this.state.viewports[e]||(this.state.viewports[e]={}),this.state.viewports[e][t].visible=n}addColorLUT(e,t){this.state.colorLUT[t]&&console.warn("Color LUT table already exists, overwriting"),this.state.colorLUT[t]=structuredClone(e)}removeColorLUT(e){delete this.state.colorLUT[e]}_getStackIdForImageIds(e){return e.map((e=>e.slice(-Math.round(.15*e.length)))).join("_")}}("DEFAULT"),Au=function(e){const{segmentationId:t,representation:n}=e,o=n.type===Ct.Contour;let i=n.data?{...n.data}:null;if(i=!i&&o?{}:i,!i)throw new Error("Segmentation representation data may not be undefined");if(o){var a,r;const e=i;e.geometryIds=null!==(a=e.geometryIds)&&void 0!==a?a:[],e.annotationUIDsMap=null!==(r=e.annotationUIDsMap)&&void 0!==r?r:new Map}return{segmentationId:t,cachedStats:{},segmentLabels:{},label:null,segmentsLocked:new Set,type:n.type,activeSegmentIndex:1,representationData:{[n.type]:{...i}}}};function Ru(){return Pu}function Lu(e){return Ru().getSegmentation(e)}function Nu(){return Ru().getState().segmentations}function ku(e,t){const n=Ru(),o=Au(e);n.addSegmentation(o),t||nn(o.segmentationId)}function Uu(){const e=Ru().getState();return Object.values(e.representations)}function Vu(e){return Ru().getRepresentation(e)}function Wu(e){return Uu().filter((t=>t.segmentationId===e))}function Hu(e){return Ru().getAllSegmentsConfig(e)}function Bu(e,t,n){Ru().setAllSegmentsConfig(e,t),n||tn(e)}function Fu(e){return Ru().getPerSegmentConfig(e)}function Gu(e,t,n){Ru().setPerSegmentConfig(e,t),n||tn(e)}function qu(e){const t=Ru().getState(),n=t.viewports;return Object.keys(n).filter((o=>{const i=n[o];return Object.keys(i).some((n=>t.representations[n].segmentationId===e))}))}function zu(e){const t=ju(e);return t?Object.keys(t).map((e=>Vu(e))).filter(Boolean):[]}function ju(e){var t;return(null===(t=Ru().getState().viewports)||void 0===t?void 0:t[e])||{}}function Ku(e,t,n){const o=Ru();o.addRepresentation(t),o.addRepresentationToViewport(e,t.segmentationRepresentationUID),n||tn(t.segmentationRepresentationUID)}function Yu(){return Ru().getGlobalConfig()}function Xu(e,t){Ru().setGlobalConfig(e),t||nn()}function Ju(e){Ru().removeSegmentation(e),Qt(e)}function Zu(e,t){Ru().removeRepresentation(e),t||en(e)}function $u(e){Ru().removeColorLUT(e)}function Qu(e){return Ru().getColorLUT(e)}function eg(){return Ru().getNextColorLUTIndex()}function tg(e,t){Ru().addColorLUT(e,t)}function ng(e,t){return Ru().getRepresentationVisibility(e,t)}function og(e,t,n){Ru().setRepresentationVisibility(e,t,n)}function ig(e){return Ru().getActiveRepresentation(e)}function ag(e,t,n){Ru().setActiveRepresentation(e,t),n||tn(t)}function rg(e,t){return Ru().getLabelmapImageIdsForViewport(e,t)}function sg(e,t){Ru().updateSegmentationImageReferences(e,t)}function lg(e,t){const n=t||e.currentTarget,{viewport:o}=(0,oe.getEnabledElement)(n),i=function(e){return[e.clientX,e.clientY]}(e),a=function(e){return[e.pageX,e.pageY]}(e),r=function(e,t){const n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,a);return{page:a,client:i,canvas:r,world:o.canvasToWorld(r)}}const dg=function(e){const t=e.currentTarget,{viewportId:n,renderingEngineId:o}=(0,oe.getEnabledElement)(t),i=lg(e,t),a={event:e,eventName:se.MOUSE_DOUBLE_CLICK,viewportId:n,renderingEngineId:o,camera:{},element:t,startPoints:i,lastPoints:i,currentPoints:i,deltaPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};!(0,oe.triggerEvent)(t,se.MOUSE_DOUBLE_CLICK,a)&&(e.stopImmediatePropagation(),e.preventDefault())},cg=se.MOUSE_MOVE,hg=function(e){const t=e.currentTarget,n=(0,oe.getEnabledElement)(t),{renderingEngineId:o,viewportId:i}=n,a={renderingEngineId:o,viewportId:i,camera:{},element:t,currentPoints:lg(e),eventName:cg,event:e};!(0,oe.triggerEvent)(t,cg,a)&&(e.stopImmediatePropagation(),e.preventDefault())},{MOUSE_DOWN:ug,MOUSE_DOWN_ACTIVATE:gg,MOUSE_CLICK:vg,MOUSE_UP:mg,MOUSE_DRAG:pg}=se,fg=3,wg={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};let Ig={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};const Eg={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function Cg(e){const t=lg(e,Ig.element),n=Og(Ig.element,Ig.lastPoints),o=Pg(t,n);if(Eg.doubleClickTimeout){if(!Tg(o.canvas))return;Sg()}const i={event:e,eventName:pg,mouseButton:Ig.mouseButton,renderingEngineId:Ig.renderingEngineId,viewportId:Ig.viewportId,camera:{},element:Ig.element,startPoints:xg(Ig.startPoints),lastPoints:xg(n),currentPoints:t,deltaPoints:o};!(0,oe.triggerEvent)(Ig.element,pg,i)&&(e.stopImmediatePropagation(),e.preventDefault()),Ig.lastPoints=xg(t)}function _g(e){if(clearTimeout(Ig.preventClickTimeout),Eg.doubleClickTimeout)Eg.mouseUpEvent?Mg():(Eg.mouseUpEvent=e,Ig.element.addEventListener("mousemove",bg));else{const t=Ig.isClickEvent?vg:mg,n=lg(e,Ig.element),o=Pg(n,Ig.lastPoints),i={event:e,eventName:t,mouseButton:Ig.mouseButton,element:Ig.element,renderingEngineId:Ig.renderingEngineId,viewportId:Ig.viewportId,camera:{},startPoints:xg(Ig.startPoints),lastPoints:xg(Ig.lastPoints),currentPoints:n,deltaPoints:o};(0,oe.triggerEvent)(i.element,t,i),Mg()}document.removeEventListener("mousemove",Cg)}function bg(e){Tg(Pg(lg(e,Ig.element),Og(Ig.element,Ig.lastPoints)).canvas)&&(Sg(),hg(e))}function Tg(e){return Math.abs(e[0])+Math.abs(e[1])>fg}function Dg(){Ig.isClickEvent=!1}function Sg(){Eg.ignoreDoubleClick=!0;const e=Eg.mouseDownEvent,t=Eg.mouseUpEvent;yg(),function(e){const t=Pg(Ig.startPoints,Ig.startPoints),n={event:e,eventName:ug,element:Ig.element,mouseButton:Ig.mouseButton,renderingEngineId:Ig.renderingEngineId,viewportId:Ig.viewportId,camera:{},startPoints:Ig.startPoints,lastPoints:Ig.startPoints,currentPoints:Ig.startPoints,deltaPoints:t};Ig.lastPoints=xg(n.lastPoints),(0,oe.triggerEvent)(n.element,ug,n)&&(0,oe.triggerEvent)(n.element,gg,n)}(e),t&&_g(t)}function yg(){Eg.doubleClickTimeout&&(clearTimeout(Eg.doubleClickTimeout),Eg.doubleClickTimeout=null),Eg.mouseDownEvent=null,Eg.mouseUpEvent=null}function Mg(){var e,t;document.removeEventListener("mouseup",_g),null===(e=Ig.element)||void 0===e||e.removeEventListener("mousemove",bg),null===(t=Ig.element)||void 0===t||t.addEventListener("mousemove",hg),yg(),Ig=JSON.parse(JSON.stringify(wg))}function xg(e){return JSON.parse(JSON.stringify(e))}function Og(e,t){const{viewport:n}=(0,oe.getEnabledElement)(e),o=n.canvasToWorld(t.canvas);return{page:t.page,client:t.client,canvas:t.canvas,world:o}}function Pg(e,t){return{page:Ag(e.page,t.page),client:Ag(e.client,t.client),canvas:Ag(e.canvas,t.canvas),world:(n=e.world,o=t.world,[n[0]-o[0],n[1]-o[1],n[2]-o[2]])};var n,o}function Ag(e,t){return[e[0]-t[0],e[1]-t[1]]}function Rg(e){Eg.ignoreDoubleClick?(Eg.ignoreDoubleClick=!1,e.stopImmediatePropagation(),e.preventDefault()):Mg()}const Lg=function(e){if(Eg.doubleClickTimeout){if(e.buttons===Eg.mouseDownEvent.buttons)return;return Eg.mouseDownEvent=e,void Sg()}Eg.doubleClickTimeout=setTimeout(Sg,1===e.buttons?400:150),Eg.mouseDownEvent=e,Eg.ignoreDoubleClick=!1,Ig.element=e.currentTarget,Ig.mouseButton=e.buttons;const t=(0,oe.getEnabledElement)(Ig.element),{renderingEngineId:n,viewportId:o}=t;Ig.renderingEngineId=n,Ig.viewportId=o,Ig.preventClickTimeout=setTimeout(Dg,Ig.clickDelay),Ig.element.removeEventListener("mousemove",hg);const i=lg(e,Ig.element);Ig.startPoints=xg(i),Ig.lastPoints=xg(i),document.addEventListener("mouseup",_g),document.addEventListener("mousemove",Cg)};function Ng(e){e.removeEventListener("dblclick",dg),e.removeEventListener("mousedown",Lg),e.removeEventListener("mousemove",hg),e.removeEventListener("dblclick",Rg,{capture:!0})}const kg={enable:function(e){Ng(e),e.addEventListener("dblclick",dg),e.addEventListener("mousedown",Lg),e.addEventListener("mousemove",hg),e.addEventListener("dblclick",Rg,{capture:!0})},disable:Ng},Ug=function(e){const t=e.currentTarget,n=(0,oe.getEnabledElement)(t),{renderingEngineId:o,viewportId:i}=n;if(e.deltaY>-1&&e.deltaY<1)return;e.preventDefault();const{spinX:a,spinY:r,pixelX:s,pixelY:l}=function(e){let t=0,n=0,o=0,i=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),o=10*t,i=10*n,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(o=e.deltaX),(o||i)&&e.deltaMode&&(1===e.deltaMode?(o*=40,i*=40):(o*=800,i*=800)),o&&!t&&(t=o<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:t,spinY:n,pixelX:o,pixelY:i}}(e),d=r<0?-1:1,c={event:e,eventName:se.MOUSE_WHEEL,renderingEngineId:o,viewportId:i,element:t,camera:{},detail:e,wheel:{spinX:a,spinY:r,pixelX:s,pixelY:l,direction:d},points:lg(e)};(0,oe.triggerEvent)(t,se.MOUSE_WHEEL,c)};function Vg(e){e.removeEventListener("wheel",Ug)}const Wg={enable:function(e){Vg(e),e.addEventListener("wheel",Ug,{passive:!1})},disable:Vg},Hg=0,Bg=1;let Fg,Gg;function qg(e,t){const n=Date.now();if(e!==Fg){if(n-Gg<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Fg=e}Gg=n}const zg=qg.bind(null,Hg),jg=qg.bind(null,Bg);function Kg(e,t,n){const o=n?zg:jg;t.forEach((function(t){e.addEventListener(t,o,{passive:!1})}))}function Yg(e,t,n){const o=n?zg:jg;t.forEach((function(t){e.removeEventListener(t,o)}))}const Xg=["mousedown","mouseup","mousemove"],Jg=["touchstart","touchend"];function Zg(e){Yg(e,Xg,Hg),Yg(e,Jg,Bg)}const $g={enable:function(e){Zg(e),Kg(e,Xg,Hg),Kg(e,Jg,Bg)},disable:Zg};var Qg=function(e){return e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e}(Qg||{});function ev(e,t){const n=t||e.currentTarget,o="touchend"===e.type?e.changedTouches:e.touches;return Object.keys(o).map((e=>{const t=function(e){return[e.clientX,e.clientY]}(o[e]),i=function(e){return[e.pageX,e.pageY]}(o[e]),a=function(e,t){const n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,i),{viewport:r}=(0,oe.getEnabledElement)(n);return{page:i,client:t,canvas:a,world:r.canvasToWorld(a),touch:{identifier:e,radiusX:o[e].radiusX,radiusY:o[e].radiusY,force:o[e].force,rotationAngle:o[e].rotationAngle}}}))}oe.Settings.getRuntimeSettings();const{TOUCH_START:tv,TOUCH_START_ACTIVATE:nv,TOUCH_PRESS:ov,TOUCH_DRAG:iv,TOUCH_END:av,TOUCH_TAP:rv,TOUCH_SWIPE:sv}=se,lv={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},dv={page:0,client:0,canvas:0,world:0},cv={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...lv,touch:null}],lastPointsList:[{...lv,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:dv,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},hv={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...lv,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let uv=JSON.parse(JSON.stringify(cv)),gv=JSON.parse(JSON.stringify(hv));function vv(e,t,n){return(0,oe.triggerEvent)(e,t,n)}function mv(e){const t=ev(e,uv.element),n=fv(uv.element,uv.lastPointsList),o=t.length===n.length?wd(t,n):lv,i=t.length===n.length?Cd(t,n):dv,a=t.length===n.length?Id(t,uv.lastPointsList):dv;uv.accumulatedDistance={page:uv.accumulatedDistance.page+a.page,client:uv.accumulatedDistance.client+a.client,canvas:uv.accumulatedDistance.canvas+a.canvas,world:uv.accumulatedDistance.world+a.world};const r={event:e,eventName:iv,renderingEngineId:uv.renderingEngineId,viewportId:uv.viewportId,camera:{},element:uv.element,startPoints:Dd(uv.startPointsList),lastPoints:Dd(n),currentPoints:Dd(t),startPointsList:_d(uv.startPointsList),lastPointsList:_d(n),currentPointsList:t,deltaPoints:o,deltaDistance:i};vv(uv.element,iv,r),function(e,t){const n=(new Date).getTime(),o=uv.startTime.getTime();if(uv.swiped||n-o>uv.swipeToleranceMs)return;const[i,a]=t.canvas,r={event:e,eventName:sv,renderingEngineId:uv.renderingEngineId,viewportId:uv.viewportId,camera:{},element:uv.element,swipe:null};Math.abs(i)>uv.swipeDistanceThreshold&&(r.swipe=i>0?Qg.RIGHT:Qg.LEFT,vv(r.element,sv,r),uv.swiped=!0),Math.abs(a)>uv.swipeDistanceThreshold&&(r.swipe=a>0?Qg.DOWN:Qg.UP,vv(r.element,sv,r),uv.swiped=!0)}(e,o),uv.lastPointsList=_d(t)}function pv(e){clearTimeout(uv.pressTimeout);const t=ev(e,uv.element),n=fv(uv.element,uv.lastPointsList),o=t.length===n.length?wd(t,n):wd(t,t),i=t.length===n.length?Cd(t,n):Cd(t,t),a={event:e,eventName:av,element:uv.element,renderingEngineId:uv.renderingEngineId,viewportId:uv.viewportId,camera:{},startPointsList:_d(uv.startPointsList),lastPointsList:_d(n),currentPointsList:t,startPoints:Dd(uv.startPointsList),lastPoints:Dd(n),currentPoints:Dd(t),deltaPoints:o,deltaDistance:i};vv(a.element,av,a),function(e){if((new Date).getTime()-uv.startTime.getTime()>gv.tapToleranceMs)return;if(0===gv.taps&&(gv.element=uv.element,gv.renderingEngineId=uv.renderingEngineId,gv.viewportId=uv.viewportId,gv.startPointsList=uv.startPointsList),gv.taps>0&&(gv.element!=uv.element||gv.renderingEngineId!=uv.renderingEngineId||gv.viewportId!=uv.viewportId))return;const t=ev(e,gv.element);Id(t,gv.startPointsList).canvas>gv.tapMaxDistance||(clearTimeout(gv.tapTimeout),gv.taps+=1,gv.tapTimeout=setTimeout((()=>{const n={event:e,eventName:rv,element:gv.element,renderingEngineId:gv.renderingEngineId,viewportId:gv.viewportId,camera:{},currentPointsList:t,currentPoints:Dd(t),taps:gv.taps};vv(n.element,rv,n),gv=JSON.parse(JSON.stringify(hv))}),gv.tapToleranceMs))}(e),uv=JSON.parse(JSON.stringify(cv)),document.removeEventListener("touchmove",mv),document.removeEventListener("touchend",pv)}function fv(e,t){const{viewport:n}=(0,oe.getEnabledElement)(e);return t.map((e=>{const t=n.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:t,touch:e.touch}}))}const wv=function(e){uv.element=e.currentTarget;const t=(0,oe.getEnabledElement)(uv.element),{renderingEngineId:n,viewportId:o}=t;uv.renderingEngineId=n,uv.viewportId=o,uv.isTouchStart||(clearTimeout(uv.pressTimeout),uv.pressTimeout=setTimeout((()=>function(e){if(uv.accumulatedDistance.canvas>uv.pressMaxDistance)return;const t={event:e,eventName:ov,renderingEngineId:uv.renderingEngineId,viewportId:uv.viewportId,camera:{},element:uv.element,startPointsList:_d(uv.startPointsList),lastPointsList:_d(uv.lastPointsList),startPoints:bd(Dd(uv.startPointsList)),lastPoints:bd(Dd(uv.lastPointsList))};vv(t.element,ov,t)}(e)),uv.pressDelay),function(e){uv.isTouchStart=!0,uv.startTime=new Date;const t=ev(e,uv.element),n=Dd(t),o=lv,i=dv,a={event:e,eventName:tv,element:uv.element,renderingEngineId:uv.renderingEngineId,viewportId:uv.viewportId,camera:{},startPointsList:t,lastPointsList:t,currentPointsList:t,startPoints:n,lastPoints:n,currentPoints:n,deltaPoints:o,deltaDistance:i};uv.startPointsList=_d(a.startPointsList),uv.lastPointsList=_d(a.lastPointsList),vv(a.element,tv,a)&&vv(a.element,nv,a)}(e),document.addEventListener("touchmove",mv),document.addEventListener("touchend",pv))};function Iv(e){$g.disable(e),e.removeEventListener("touchstart",wv)}const Ev={enable:function(e){Iv(e),$g.enable(e),e.addEventListener("touchstart",wv,{passive:!1})},disable:Iv},Cv={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let _v={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function bv(e){_v.element=e.currentTarget;const t=(0,oe.getEnabledElement)(_v.element),{renderingEngineId:n,viewportId:o}=t;_v.renderingEngineId=n,_v.viewportId=o,_v.key=e.key,_v.keyCode=e.keyCode,e.preventDefault();const i={renderingEngineId:_v.renderingEngineId,viewportId:_v.viewportId,element:_v.element,key:_v.key,keyCode:_v.keyCode};(0,oe.triggerEvent)(i.element,se.KEY_DOWN,i),document.addEventListener("keyup",Dv),document.addEventListener("visibilitychange",Tv),_v.element.removeEventListener("keydown",bv)}function Tv(){document.removeEventListener("visibilitychange",Tv),"hidden"===document.visibilityState&&Sv()}function Dv(e){const t={renderingEngineId:_v.renderingEngineId,viewportId:_v.viewportId,element:_v.element,key:_v.key,keyCode:_v.keyCode};document.removeEventListener("keyup",Dv),document.removeEventListener("visibilitychange",Tv),_v.element.addEventListener("keydown",bv),_v=structuredClone(Cv),(0,oe.triggerEvent)(t.element,se.KEY_UP,t)}function Sv(){_v.keyCode=void 0}const yv=bv;function Mv(e){e.removeEventListener("keydown",yv)}const xv={enable:function(e){Mv(e),e.addEventListener("keydown",yv)},disable:Mv,getModifierKey:function(){return _v.keyCode}};function Ov(e){const t=e.detail,{viewportId:n,renderingEngineId:o}=t,{viewport:i}=(0,oe.getEnabledElementByIds)(n,o),a=zu(n);if(null==a||!a.length)return;const r=a.filter((e=>e.type===Ct.Labelmap));if(!r.length)return;const s=i.getActors();r.forEach((e=>{const{segmentationId:t}=e;sg(n,t)})),s.filter((e=>r.some((t=>t.segmentationRepresentationUID===e.uid)))).forEach((e=>{r.find((t=>rg(n,t.segmentationId)===e.referencedId))||i.removeActors([e.uid])})),r.forEach((t=>{const{segmentationId:o}=t,a=i.getCurrentImageId(),r=rg(n,o);if(!r)return;const l=oe.cache.getImage(r);if(!l)return void console.warn("No derived image found in the cache for segmentation representation",t);const d=s.find((e=>e.referencedId===r));if(!d){const{dimensions:e,spacing:n,direction:o}=i.getImageDataMetadata(l),s=oe.cache.getImage(a)||{imageId:a},{origin:d}=i.getImageDataMetadata(s),c=d,h=Uo().newInstance({name:"Pixels",numberOfComponents:1,values:[...l.getPixelData()]}),u=Wo().newInstance();return u.setDimensions(e[0],e[1],1),u.setSpacing(n),u.setDirection(o),u.setOrigin(c),u.getPointData().setScalars(h),u.modified(),i.addImages([{imageId:r,actorUID:t.segmentationRepresentationUID,callback:e=>{let{imageActor:t}=e;t.getMapper().setInputData(u)}}]),void yu()}{const e=d.actor.getMapper().getInputData();e.setDerivedImage?e.setDerivedImage(l):oe.utilities.updateVTKImageDataWithCornerstoneImage(e,l)}i.render(),e.type===oe.Enums.Events.IMAGE_RENDERED&&i.element.removeEventListener(oe.Enums.Events.IMAGE_RENDERED,Ov)}))}new Map;const Pv={enable:function(e){const{viewport:t}=(0,oe.getEnabledElement)(e);t instanceof oe.BaseVolumeViewport||(e.addEventListener(oe.Enums.Events.STACK_NEW_IMAGE,Ov),e.addEventListener(oe.Enums.Events.IMAGE_RENDERED,Ov))},disable:function(e){e.removeEventListener(oe.Enums.Events.STACK_NEW_IMAGE,Ov),e.removeEventListener(oe.Enums.Events.IMAGE_RENDERED,Ov)}},Av=function(e){no(e.detail.element)},Rv={enable:function(e){e.addEventListener(oe.Enums.Events.IMAGE_RENDERED,Av)},disable:function(e){e.removeEventListener(oe.Enums.Events.IMAGE_RENDERED,Av)}};function Lv(e,t,n){const{renderingEngineId:o,viewportId:i}=e.detail,a=Vn(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const o=s[e],i=a.toolOptions[o],l=null!=n&&i.bindings.length&&i.bindings.some((e=>e.mouseButton===n));if(t.includes(i.mode)&&(!n||l)){const e=a.getToolInstance(o);r.push(e)}}return r}const{Active:Nv,Passive:kv,Enabled:Uv}=Xe,Vv=function(e){Lv(e,[Nv,kv,Uv]).forEach((t=>{t.onCameraModified&&t.onCameraModified(e)}))},Wv={enable:function(e){e.addEventListener(oe.Enums.Events.CAMERA_MODIFIED,Vv)},disable:function(e){e.removeEventListener(oe.Enums.Events.CAMERA_MODIFIED,Vv)}},{Active:Hv,Passive:Bv,Enabled:Fv}=Xe,Gv=function(e){Lv(e,[Hv,Bv,Fv]).forEach((t=>{t.onImageSpacingCalibrated&&t.onImageSpacingCalibrated(e)}))},qv={enable:function(e){e.addEventListener(oe.Enums.Events.IMAGE_SPACING_CALIBRATED,Gv)},disable:function(e){e.removeEventListener(oe.Enums.Events.IMAGE_SPACING_CALIBRATED,Gv)}},{Active:zv,Passive:jv,Enabled:Kv}=Xe,Yv=function(e){Lv(e,[zv,jv,Kv]).forEach((t=>{t.onResetCamera&&t.onResetCamera(e)}))},Xv={enable:function(e){e.addEventListener(oe.Enums.Events.CAMERA_RESET,Yv)},disable:function(e){e.removeEventListener(oe.Enums.Events.CAMERA_RESET,Yv)}},{Active:Jv}=Xe;function Zv(e,t,n){if(Ke.isInteractingWithTool)return!1;const{renderingEngineId:o,viewportId:i}=n.detail,a=Vn(i,o);if(!a)return!1;let r;const s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const n=s[e],o=a.toolOptions[n],i=a.getToolInstance(n);if(o.mode===Jv&&"function"==typeof i[t]){r=a.getToolInstance(n);break}}r&&r[t](n)}const $v=Zv.bind(null,"Mouse","mouseClickCallback");function Qv(e,t,n){const o="touch"===(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse")?36:6,i=[];return t.forEach((t=>{let{tool:a,annotations:r}=t;for(const t of r){if(t.isLocked||!t.isVisible)continue;const r=a.getHandleNearImagePoint(e,t,n,o);if(r){i.push({tool:a,annotation:t,handle:r});break}}})),i}function em(e,t){const n=[];for(let i=0;i<t.length;i++){var o;const a=t[i];if(!a){console.warn("undefined tool in filterToolsWithAnnotationsForElement");continue}let r=st(a.constructor.toolName,e);null!==(o=r)&&void 0!==o&&o.length&&("function"==typeof a.filterInteractableAnnotationsForElement&&(r=a.filterInteractableAnnotationsForElement(e,r)),r.length>0&&n.push({tool:a,annotations:r}))}return n}function tm(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse";const i="touch"===o?36:6,a=[];return t.forEach((t=>{let{tool:r,annotations:s}=t;for(const t of s)if(!t.isLocked&&t.isVisible&&r.isPointNearTool(e,t,n,i,o)){a.push({tool:r,annotation:t});break}})),a}const{Active:nm}=Xe;function om(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=e.detail.event,i=rc(o)||xv.getModifierKey(),a=Vn(n,t);if(!a)return null;const r=Object.keys(a.toolOptions),s=a.getDefaultMousePrimary();for(let e=0;e<r.length;e++){const t=r[e],n=a.toolOptions[t],l=n.bindings.length&&n.bindings.some((e=>e.mouseButton===(o?o.buttons:s)&&e.modifierKey===i));if(n.mode===nm&&l)return a.getToolInstance(t)}}const{Active:im,Passive:am}=Xe;const{Active:rm,Passive:sm}=Xe;function lm(e){if(Ke.isInteractingWithTool)return;const t=om(e);if(t&&"function"==typeof t.preMouseDownCallback&&t.preMouseDownCallback(e))return;const n=1===e.detail.event.buttons,o=[...Lv(e,[rm],e.detail.event.buttons)||[],...(n?Lv(e,[sm]):void 0)||[]];if(function(e){if(Ke.isInteractingWithTool)return!1;const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{canvas:i}=t.currentPoints;if(!o)return!1;const a=function(e,t){var n;const o=new Map,{renderingEngineId:i,viewportId:a}=e.detail,r=Vn(a,i);if(!r)return o;const s=Object.keys(r.toolOptions),l=r.getDefaultMousePrimary(),d=e.detail.event,c=null!==(n=null==d?void 0:d.buttons)&&void 0!==n?n:l,h=rc(d)||xv.getModifierKey();for(let e=0;e<s.length;e++){var u,g;const n=s[e],i=r.getToolInstance(n),a=null!==(u=null===(g=i.configuration)||void 0===g?void 0:g.actions)&&void 0!==u?u:{},l=Object.values(a);if(null==l||!l.length||!t.includes(i.mode))continue;const d=l.find((e=>e.bindings.length&&e.bindings.some((e=>e.mouseButton===c&&e.modifierKey===h))));d&&o.set(i,d)}return o}(e,[im,am]),r=tm(n,em(n,Array.from(a.keys())),i);if(r.length>0){const{tool:t,annotation:n}=r[0],o=a.get(t);return("string"==typeof o.method?t[o.method]:o.method).call(t,e,n),!0}return!1}(e))return;const i=e.detail,{element:a}=i,r=em(a,o),s=i.currentPoints.canvas,l=Qv(a,r,s,"mouse"),d=!!e.detail.event.shiftKey;if(l.length>0){const{tool:t,annotation:n,handle:o}=dm(l);return cm(n.annotationUID,d),void t.handleSelectedCallback(e,n,o,"Mouse")}const c=tm(a,r,s,"mouse");if(c.length>0){const{tool:t,annotation:n}=dm(c);return cm(n.annotationUID,d),void t.toolSelectedCallback(e,n,"Mouse",s)}!t||"function"!=typeof t.postMouseDownCallback||t.postMouseDownCallback(e)}function dm(e){return e.length>1&&e.find((e=>!ue(e.annotation)&&Re(e.annotation.annotationUID)))||e[0]}function cm(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?De(e)?Ce(e,!1):Ce(e,!0,!0):Ce(e,!0,!1)}function hm(e){if(Ke.isInteractingWithTool)return;const t=om(e);t&&!Ke.isMultiPartToolActive&&t.addNewAnnotation&&Ce(t.addNewAnnotation(e,"mouse").annotationUID)}const um=Zv.bind(null,"Mouse","doubleClickCallback");function gm(e){if(Ke.isInteractingWithTool)return;const t=om(e);!t||"function"!=typeof t.mouseDragCallback||t.mouseDragCallback(e)}const{Active:vm,Passive:mm}=Xe;function pm(e){if(Ke.isInteractingWithTool||Ke.isMultiPartToolActive)return;const t=Lv(e,[vm,mm]),n=e.detail,{element:o}=n,i=em(o,t),a=t.filter((e=>!i.some((t=>t.tool.getToolName()===e.getToolName()))));let r=!1;for(const{tool:t,annotations:n}of i)"function"==typeof t.mouseMoveCallback&&(r=t.mouseMoveCallback(e,n)||r);a.forEach((t=>{"function"==typeof t.mouseMoveCallback&&t.mouseMoveCallback(e)})),!0===r&&no(o)}const fm=Zv.bind(null,"Mouse","mouseUpCallback"),wm=Zv.bind(null,"MouseWheel","mouseWheelCallback"),Im={enable:function(e){e.addEventListener(se.MOUSE_CLICK,$v),e.addEventListener(se.MOUSE_DOWN,lm),e.addEventListener(se.MOUSE_DOWN_ACTIVATE,hm),e.addEventListener(se.MOUSE_DOUBLE_CLICK,um),e.addEventListener(se.MOUSE_DRAG,gm),e.addEventListener(se.MOUSE_MOVE,pm),e.addEventListener(se.MOUSE_UP,fm),e.addEventListener(se.MOUSE_WHEEL,wm)},disable:function(e){e.removeEventListener(se.MOUSE_CLICK,$v),e.removeEventListener(se.MOUSE_DOWN,lm),e.removeEventListener(se.MOUSE_DOWN_ACTIVATE,hm),e.removeEventListener(se.MOUSE_DOUBLE_CLICK,um),e.removeEventListener(se.MOUSE_DRAG,gm),e.removeEventListener(se.MOUSE_MOVE,pm),e.removeEventListener(se.MOUSE_UP,fm),e.removeEventListener(se.MOUSE_WHEEL,wm)}},{Active:Em}=Xe;function Cm(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=Ig.mouseButton,i=xv.getModifierKey(),a=Vn(n,t);if(!a)return null;const r=Object.keys(a.toolOptions),s=a.getDefaultMousePrimary();for(let e=0;e<r.length;e++){const t=r[e],n=a.toolOptions[t];if(n.mode===Em&&(n.bindings.length&&n.bindings.some((e=>e.mouseButton===(null!=o?o:s)&&e.modifierKey===i))))return a.getToolInstance(t)}}function _m(e){const t=Cm(e);if(t){const{renderingEngineId:n,viewportId:o}=e.detail,i=Vn(o,n),a=t.getToolName();Object.keys(i.toolOptions).includes(a)&&i.setViewportsCursorByToolName(a)}const n=function(e,t){const n=new Map,{renderingEngineId:o,viewportId:i}=e.detail,a=Vn(i,o);if(!a)return n;const r=Object.keys(a.toolOptions),s=e.detail.key;for(let e=0;e<r.length;e++){var l;const o=r[e],i=a.getToolInstance(o),d=null===(l=i.configuration)||void 0===l?void 0:l.actions;if(!d)continue;const c=Object.values(d);if(null==c||!c.length||!t.includes(i.mode))continue;const h=c.find((e=>e.bindings.some((e=>e.key===s))));h&&n.set(i,h)}return n}(e,[Xe.Active]);if(null!=n&&n.size){const{element:t}=e.detail;for(const[o,i]of[...n.entries()])("function"==typeof i.method?i.method:o[i.method]).call(o,t,i,e)}}function bm(e){const t=Cm(e);if(!t)return;const{renderingEngineId:n,viewportId:o}=e.detail,i=Vn(o,n);Sv();const a=t.getToolName();Object.keys(i.toolOptions).includes(a)&&i.setViewportsCursorByToolName(a)}const Tm={enable:function(e){e.addEventListener(se.KEY_DOWN,_m),e.addEventListener(se.KEY_UP,bm)},disable:function(e){e.removeEventListener(se.KEY_DOWN,_m),e.removeEventListener(se.KEY_UP,bm)}},{Active:Dm}=Xe;function Sm(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=e.detail.event,i=Vn(n,t);if(!i)return null;const a=Object.keys(i.toolOptions),r=Object.keys(o.touches).length,s=rc(o)||xv.getModifierKey(),l=i.getDefaultMousePrimary();for(let e=0;e<a.length;e++){const t=a[e],n=i.toolOptions[t],o=n.bindings.length&&n.bindings.some((e=>(e.numTouchPoints===r||1===r&&e.mouseButton===l)&&e.modifierKey===s));if(n.mode===Dm&&o)return i.getToolInstance(t)}}function ym(e,t,n){const{renderingEngineId:o,viewportId:i}=e.detail,a=Vn(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const o=s[e],i=a.toolOptions[o],l=null!=n&&i.bindings.length&&i.bindings.some((e=>e.numTouchPoints===n));if(t.includes(i.mode)&&(!n||l)){const e=a.getToolInstance(o);r.push(e)}}return r}const{Active:Mm,Passive:xm}=Xe;function Om(e){if(Ke.isInteractingWithTool)return;const t=Sm(e);if(t&&"function"==typeof t.preTouchStartCallback&&t.preTouchStartCallback(e))return;const n=1===Object.keys(e.detail.event.touches).length,o=[...ym(e,[Mm],Object.keys(e.detail.event.touches).length)||[],...(n?ym(e,[xm]):void 0)||[],t],i=e.detail,{element:a}=i,r=em(a,o),s=i.currentPoints.canvas,l=Qv(a,r,s,"touch"),d=!1;if(l.length>0){const{tool:t,annotation:n,handle:o}=Pm(l);return Am(n.annotationUID,d),void t.handleSelectedCallback(e,n,o,"Touch")}const c=tm(a,r,s,"touch");if(c.length>0){const{tool:t,annotation:n}=Pm(c);return Am(n.annotationUID,d),void t.toolSelectedCallback(e,n,"Touch")}!t||"function"!=typeof t.postTouchStartCallback||t.postTouchStartCallback(e)}function Pm(e){return e.length>1&&e.find((e=>!ue(e.annotation)&&Re(e.annotation.annotationUID)))||e[0]}function Am(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?De(e)?Ce(e,!1):Ce(e,!0,!0):Ce(e,!0,!1)}function Rm(e){if(Ke.isInteractingWithTool)return;const t=Sm(e);t&&!Ke.isMultiPartToolActive&&t.addNewAnnotation&&Ce(t.addNewAnnotation(e,"touch").annotationUID)}function Lm(e){if(Ke.isInteractingWithTool)return;const t=Sm(e);!t||"function"!=typeof t.touchDragCallback||t.touchDragCallback(e)}const Nm=Zv.bind(null,"Touch","touchEndCallback"),km=Zv.bind(null,"Touch","touchTapCallback"),Um=Zv.bind(null,"Touch","touchPressCallback"),Vm={enable:function(e){e.addEventListener(se.TOUCH_START,Om),e.addEventListener(se.TOUCH_START_ACTIVATE,Rm),e.addEventListener(se.TOUCH_DRAG,Lm),e.addEventListener(se.TOUCH_END,Nm),e.addEventListener(se.TOUCH_TAP,km),e.addEventListener(se.TOUCH_PRESS,Um)},disable:function(e){e.removeEventListener(se.TOUCH_START,Om),e.removeEventListener(se.TOUCH_START_ACTIVATE,Rm),e.removeEventListener(se.TOUCH_DRAG,Lm),e.removeEventListener(se.TOUCH_END,Nm),e.removeEventListener(se.TOUCH_PRESS,Um)}};function Wm(e){const{element:t,viewportId:n}=e.detail,o=function(e){const t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg"),o="svg-layer-".concat(e);n.classList.add("svg-layer"),n.setAttribute("id",o),n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.style.width="100%",n.style.height="100%",n.style.pointerEvents="none",n.style.position="absolute";const i=document.createElementNS(t,"defs"),a=document.createElementNS(t,"filter"),r=document.createElementNS(t,"feOffset"),s=document.createElementNS(t,"feColorMatrix"),l=document.createElementNS(t,"feBlend");return a.setAttribute("id","shadow-".concat(o)),a.setAttribute("filterUnits","userSpaceOnUse"),r.setAttribute("result","offOut"),r.setAttribute("in","SourceGraphic"),r.setAttribute("dx","0.5"),r.setAttribute("dy","0.5"),s.setAttribute("result","matrixOut"),s.setAttribute("in","offOut"),s.setAttribute("in2","matrix"),s.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),l.setAttribute("in","SourceGraphic"),l.setAttribute("in2","matrixOut"),l.setAttribute("mode","normal"),a.appendChild(r),a.appendChild(s),a.appendChild(l),i.appendChild(a),n.appendChild(i),n}(n);var i;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o="".concat(t,":").concat(n);Ke.svgNodeCache[o]={}}(t),i=o,t.querySelector("div.viewport-element").appendChild(i),to.addViewportElement(n,t),kg.enable(t),Wg.enable(t),Ev.enable(t),xv.enable(t),Pv.enable(t),Rv.enable(t),Wv.enable(t),qv.enable(t),Xv.enable(t),Im.enable(t),Tm.enable(t),Vm.enable(t),Ke.enabledElements.push(t)}const Hm=function(e,t){const n=[];if(!t&&!e)throw new Error("At least one of renderingEngineId or viewportId should be given");for(let o=0;o<Ke.synchronizers.length;o++){const i=Ke.synchronizers[o],a=!i.isDisabled(),r=i.hasSourceViewport(t,e),s=i.hasTargetViewport(t,e);a&&(r||s)&&n.push(i)}return n},Bm=function(e){const{element:t,viewportId:n}=e.detail;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o="".concat(t,":").concat(n);delete Ke.svgNodeCache[o]}(t),function(e){const t=e.querySelector("div.".concat("viewport-element")),n=t.querySelector("svg");n&&t.removeChild(n)}(t),to.removeViewportElement(n,t),kg.disable(t),Wg.disable(t),Ev.disable(t),xv.disable(t),Pv.disable(t),Rv.disable(t),Wv.disable(t),qv.disable(t),Xv.disable(t),Im.disable(t),Tm.disable(t),Vm.disable(t),(e=>{const t=(0,oe.getEnabledElement)(e);Hm(t.viewportId,t.renderingEngineId).forEach((e=>{e.remove(t)}))})(t),(e=>{const{renderingEngineId:t,viewportId:n}=(0,oe.getEnabledElement)(e),o=Vn(n,t);o&&o.removeViewports(t,n)})(t),function(e){const t=Ke.enabledElements.findIndex((t=>t===e));t>-1&&Ke.enabledElements.splice(t,1)}(t)};function Fm(e){Gi(e.detail.annotation)&&async function(e){const t=e.detail.annotation;if(!Gi(t))return;const n=function(e){const t=_o(e),n=t.find((e=>Zi(e,!0)));return null!=n?n:t[0]}(t),o=function(e,t){const{annotationUID:n}=t;return lt().filter((o=>o.annotationUID&&o.annotationUID!==n&&Gi(o)&&qi(o,t)&&e.isReferenceViewable(o.metadata)))}(n,t);if(!o.length)return;const i=$i(t.data.contour.polyline,n),a=function(e,t,n){const o=Un(t);for(let i=0;i<n.length;i++){const a=n[i],r=$i(a.data.contour.polyline,e),s=ui(o,Un(r)),l=s&&fi(t,r),d=s&&!l&&Ei(r,t);if(l||d)return{targetAnnotation:a,targetPolyline:r,isContourHole:d}}}(n,i,o);if(!a)return;const{targetAnnotation:r,targetPolyline:s,isContourHole:l}=a;if(l){const{contourHoleProcessingEnabled:o=!1}=e.detail;if(!o)return;Qi(n,r,t)}else!function(e,t,n,o,i){if(!function(e){const t=e.toolName;return!(!t||!Ke.tools[t])}(jh))return void console.warn("".concat(jh.toolName," is not registered in cornerstone"));if(!Zi(e))return;const a=Ii(n,i[0]),r=function(e,t){return ut(t).map((t=>({annotation:t,polyline:$i(t.data.contour.polyline,e)})))}(e,t),s=new Set(r),l=new Map,d=(e,t)=>{let n=l.get(e);n||(n=[],l.set(e,n)),n.push(t),s.delete(t)},c=[];if(a){const e=Ri(n,i);c.push(e),Array.from(s.keys()).forEach((t=>d(e,t)))}else Li(n,i).forEach((e=>{c.push(e),Array.from(s.keys()).forEach((t=>{Ei(e,t.polyline)&&(d(e,t),s.delete(t))}))}));Array.from(l.values()).forEach((e=>e.forEach((e=>dt(e.annotation)))));const{element:h}=e,u=(0,oe.getEnabledElement)(h),{metadata:g,data:v}=t,{handles:m,segmentation:p}=v,{textBox:f}=m;mt(o.annotationUID),mt(t.annotationUID);for(let n=0;n<c.length;n++){var w;const o=c[n],i=e.canvasToWorld(o[0]),a=e.canvasToWorld(o[o.length-1]),r={metadata:{...g,toolName:Ji,originalToolName:g.originalToolName||g.toolName},data:{cachedStats:{},handles:{points:[i,a],textBox:f?{...f}:void 0},contour:{polyline:[],closed:!0},spline:t.data.spline,segmentation:{...p}},annotationUID:oe.utilities.uuidv4(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:t.interpolationUID,interpolationCompleted:t.interpolationCompleted};ni(r,{points:o,closed:!0,targetWindingDirection:Xi.Clockwise},e),gt(r,h),ji(r),Qe(r,e.element),null===(w=l.get(o))||void 0===w||w.forEach((e=>ct(r,e.annotation)))}!function(e,t,n){const{viewport:o}=e,{element:i}=o,a=new Set([Ji,t.metadata.toolName,n.metadata.toolName]);for(const e of a.values()){const t=Fi(i,e);io(t)}new Promise((e=>window.requestAnimationFrame(e)))}(u,t,o)}(n,r,s,t,i)}(e)}const Gm=function(e){const{viewportId:t}=e.detail;io([t])},qm=function(e){e.detail.removed.length&&(0,oe.getRenderingEngines)().forEach((e=>{const t=e.getViewports().map((e=>e.id));io(t)}))};function zm(e){Gi(e.detail.annotation)&&function(e){zi(e.detail.annotation)}(e)}const jm=function(e){const{segmentationId:t}=e.detail;Su(t)},Km=function(e){const{segmentationId:t}=e.detail,{type:n}=Lu(t);n===Ct.Labelmap&&function(e){const{segmentationId:t,modifiedSlicesToUse:n}=e.detail;let o=n;const{representationData:i,type:a}=Lu(t),r=i[a];"stack"in r&&"volumeId"in r&&(o=[]),"volumeId"in r&&function(e){let{modifiedSlicesToUse:t,representationData:n,type:o}=e;const i=oe.cache.getVolume(n[o].volumeId);if(!i)return void console.warn("segmentation not found in cache");const{imageData:a,vtkOpenGLTexture:r}=i;let s;if((null==t?void 0:t.length)>0)s=t;else{const e=a.getDimensions()[2];s=[...Array(e).keys()]}s.forEach((e=>{r.setUpdatedFrame(e)})),a.modified()}({modifiedSlicesToUse:o,representationData:i,type:a});const s=qu(t);"imageIds"in r&&function(e){let{viewportIds:t,segmentationId:n,representationData:o,type:i}=e;t.forEach((e=>{zu(e).forEach((t=>{if(t.segmentationId!==n)return;const o=(0,oe.getEnabledElementByViewportId)(e);if(!o)return;const{viewport:i}=o;if(i instanceof oe.VolumeViewport)return;const a=i.getActor(t.segmentationRepresentationUID);if(!a)return;const r=a.actor.getMapper().getInputData(),s=rg(e,t.segmentationId),l=oe.cache.getImage(s);r.modified(),oe.utilities.updateVTKImageDataWithCornerstoneImage(r,l)}))}))}({viewportIds:s,segmentationId:t,representationData:i,type:a})}(e),yu(t)},Ym=function(e){const{segmentationRepresentationUID:t}=e.detail,n=Vu?Vu(t):null;if(!n)return;const o=null==n?void 0:n.segmentationId;yu(o)},Xm=function(e){const{segmentationRepresentationUID:t}=e.detail;yu()},Jm={enable:function(){oe.eventTarget.addEventListener(se.ANNOTATION_COMPLETED,pa.handleAnnotationCompleted),oe.eventTarget.addEventListener(se.ANNOTATION_MODIFIED,pa.handleAnnotationUpdate),oe.eventTarget.addEventListener(se.ANNOTATION_REMOVED,pa.handleAnnotationDelete)},disable:function(){oe.eventTarget.removeEventListener(se.ANNOTATION_COMPLETED,pa.handleAnnotationCompleted),oe.eventTarget.removeEventListener(se.ANNOTATION_MODIFIED,pa.handleAnnotationUpdate),oe.eventTarget.removeEventListener(se.ANNOTATION_REMOVED,pa.handleAnnotationDelete)}},Zm=function(e){const t=Ke.toolGroups.findIndex((t=>t.id===e));t>-1&&Ke.toolGroups.splice(t,1)},$m=function(){const e=[...Ke.toolGroups];for(const t of e)Zm(t.id);Ke.toolGroups=[]};let Qm=!1;function ep(){Qm||(function(){np();const e=oe.Enums.Events.ELEMENT_ENABLED,t=oe.Enums.Events.ELEMENT_DISABLED;oe.eventTarget.addEventListener(e,Wm),oe.eventTarget.addEventListener(t,Bm),Jm.enable()}(),op(),oe.eventTarget.addEventListener(se.ANNOTATION_COMPLETED,Fm),oe.eventTarget.addEventListener(se.ANNOTATION_MODIFIED,Gm),oe.eventTarget.addEventListener(se.ANNOTATION_SELECTION_CHANGE,qm),oe.eventTarget.addEventListener(se.ANNOTATION_SELECTION_CHANGE,qm),oe.eventTarget.addEventListener(se.ANNOTATION_REMOVED,zm),oe.eventTarget.addEventListener(se.SEGMENTATION_MODIFIED,jm),oe.eventTarget.addEventListener(se.SEGMENTATION_DATA_MODIFIED,Km),oe.eventTarget.addEventListener(se.SEGMENTATION_REPRESENTATION_MODIFIED,Ym),oe.eventTarget.addEventListener(se.SEGMENTATION_REPRESENTATION_REMOVED,Xm),Qm=!0)}function tp(){np(),op(),$m(),ze={},Ke={...structuredClone({...je,svgNodeCache:{}}),svgNodeCache:{...je.svgNodeCache}};const e=it(),t=Ru();e.restoreAnnotations({}),t.resetState(),Qm=!1}function np(){const e=oe.Enums.Events.ELEMENT_ENABLED,t=oe.Enums.Events.ELEMENT_DISABLED;oe.eventTarget.removeEventListener(e,Wm),oe.eventTarget.removeEventListener(t,Bm),Jm.disable()}function op(){oe.eventTarget.removeEventListener(se.ANNOTATION_COMPLETED,Fm),oe.eventTarget.removeEventListener(se.ANNOTATION_MODIFIED,Gm),oe.eventTarget.removeEventListener(se.ANNOTATION_SELECTION_CHANGE,qm),oe.eventTarget.removeEventListener(se.ANNOTATION_SELECTION_CHANGE,qm),oe.eventTarget.removeEventListener(se.SEGMENTATION_MODIFIED,jm),oe.eventTarget.removeEventListener(se.SEGMENTATION_DATA_MODIFIED,Km),oe.eventTarget.removeEventListener(se.SEGMENTATION_REPRESENTATION_MODIFIED,Ym),oe.eventTarget.removeEventListener(se.SEGMENTATION_REPRESENTATION_REMOVED,Xm)}function ip(e){const t=em(e,Zn(e,[Xe.Active,Xe.Passive]));for(const{tool:n}of t){const t=n.cancel(e);if(t)return t}}function ap(e,t){return e.findIndex((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))}function rp(e,t){return e.some((e=>e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId))}const sp=class{constructor(e,t,n,o){ae(this,"_enabled",void 0),ae(this,"_eventName",void 0),ae(this,"_auxiliaryEventNames",void 0),ae(this,"_eventHandler",void 0),ae(this,"_ignoreFiredEvents",void 0),ae(this,"_sourceViewports",void 0),ae(this,"_targetViewports",void 0),ae(this,"_viewportOptions",{}),ae(this,"_options",void 0),ae(this,"id",void 0),ae(this,"_onEvent",(e=>{if(!0===this._ignoreFiredEvents)return;if(!this._targetViewports.length)return;const t=(0,oe.getEnabledElement)(e.currentTarget);if(!t)return;const{renderingEngineId:n,viewportId:o}=t;this._sourceViewports.find((e=>e.viewportId===o))&&this.fireEvent({renderingEngineId:n,viewportId:o},e)})),this._enabled=!0,this._eventName=t,this._eventHandler=n,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=o||{},this._auxiliaryEventNames=this._options.auxiliaryEventNames||[],this.id=e}isDisabled(){return!this._enabled||!this._hasSourceElements()}setOptions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._viewportOptions[e]=t}setEnabled(e){this._enabled=e}getOptions(e){return this._viewportOptions[e]}add(e){this.addTarget(e),this.addSource(e)}addSource(e){if(rp(this._sourceViewports,e))return;const{renderingEngineId:t,viewportId:n}=e,o=(0,oe.getRenderingEngine)(t).getViewport(n);if(!o)return void console.warn("Synchronizer.addSource: No viewport for ".concat(t," ").concat(n));const i=o.element;i.addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEventNames.length&&this._auxiliaryEventNames.forEach((e=>{i.addEventListener(e,this._onEvent.bind(this))})),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){rp(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}getSourceViewports(){return this._sourceViewports}getTargetViewports(){return this._targetViewports}destroy(){this._sourceViewports.forEach((e=>this.removeSource(e))),this._targetViewports.forEach((e=>this.removeTarget(e)))}remove(e){this.removeTarget(e),this.removeSource(e)}removeSource(e){const t=ap(this._sourceViewports,e);if(-1===t)return;const n=function(e){const t=(0,oe.getRenderingEngine)(e.renderingEngineId);if(!t)throw new Error("No RenderingEngine for Id: ".concat(e.renderingEngineId));return t.getViewport(e.viewportId).element}(e);this._sourceViewports.splice(t,1),n.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEventNames&&this._auxiliaryEventNames.forEach((e=>{n.removeEventListener(e,this._eventHandler)})),this._updateDisableHandlers()}removeTarget(e){const t=ap(this._targetViewports,e);-1!==t&&(this._targetViewports.splice(t,1),this._updateDisableHandlers())}hasSourceViewport(e,t){return rp(this._sourceViewports,{renderingEngineId:e,viewportId:t})}hasTargetViewport(e,t){return rp(this._targetViewports,{renderingEngineId:e,viewportId:t})}fireEvent(e,t){if(this.isDisabled()||this._ignoreFiredEvents)return;this._ignoreFiredEvents=!0;const n=[];try{for(let o=0;o<this._targetViewports.length;o++){const i=this._targetViewports[o];if(e.viewportId===i.viewportId)continue;const a=this._eventHandler(this,e,i,t,this._options);a instanceof Promise&&n.push(a)}}catch(e){console.warn("Synchronizer, for: ".concat(this._eventName),e)}finally{n.length?Promise.allSettled(n).then((()=>{this._ignoreFiredEvents=!1})):this._ignoreFiredEvents=!1}}_hasSourceElements(){return 0!==this._sourceViewports.length}_updateDisableHandlers(){const e=function(e,t){const n=[],o=e.concat(t);for(let e=0;e<o.length;e++){const t=o[e];n.some((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))||n.push(t)}return n}(this._sourceViewports,this._targetViewports),t=this.remove,n=e=>{t(e.detail.element)};e.forEach((function(e){const t=(0,oe.getRenderingEngine)(e.renderingEngineId);if(!t)return;const o=t.getViewport(e.viewportId);if(!o)return;const{element:i}=o;i.removeEventListener(oe.Enums.Events.ELEMENT_DISABLED,n),i.addEventListener(oe.Enums.Events.ELEMENT_DISABLED,n)}))}},lp=function(e,t,n,o){if(Ke.synchronizers.some((t=>t.id===e)))throw new Error("Synchronizer with id '".concat(e,"' already exists."));const i=new sp(e,t,n,o);return Ke.synchronizers.push(i),i},dp=function(){for(;Ke.synchronizers.length>0;)Ke.synchronizers.pop().destroy()},cp=function(e){return Ke.synchronizers.find((t=>t.id===e))},hp=function(){return Ke.synchronizers},up=function(e){const t=Ke.synchronizers.findIndex((t=>t.id===e));t>-1&&(Ke.synchronizers[t].destroy(),Ke.synchronizers.splice(t,1))};var gp=E(485),vp=E.n(gp);class mp extends lr{constructor(e,t,n,o,i){super(o||mp.getUniqueInstanceName("image-cursor"),i),ae(this,"url",void 0),ae(this,"x",void 0),ae(this,"y",void 0),this.url=e,this.x=Number(t)||0,this.y=Number(n)||0}getStyleProperty(){const{url:e,x:t,y:n}=this;let o="url('".concat(e,"')");return t>=0&&n>=0&&(t>0||n>0)&&(o+=" ".concat(t," ").concat(n)),this.addFallbackStyleProperty(o)}static getUniqueInstanceName(e){return"".concat(e,"-").concat(oe.utilities.getRuntimeId(mp))}}const pp={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n <path stroke="{{color}}" d="M8 16L8 0"></path>\n <path stroke="{{color}}" d="M16 8L0 8"></path>\n '},fp={x:127,y:60},wp='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n',Ip='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n<rect fill="{{color}}" x="95.84" y="9.38" width="15.85" height="47.14"/>\n',Ep='<path fill="{{color}}" d="M82.89,10a12.09,12.09,0,0,0-16.8-2.5l-27.5,20.4-8.5-6.3a2.93,2.93,0,0,1-1.1-3,14.66,14.66,0,0,0,.1-6.6,14.08,14.08,0,1,0-6.5,15.2,2.87,2.87,0,0,1,3.2.2l8.2,6.1-8.2,6.1a2.87,2.87,0,0,1-3.2.2,14.16,14.16,0,1,0,6.7,14.4,14,14,0,0,0-.3-5.8,2.93,2.93,0,0,1,1.1-3l8.5-6.3,27.5,20.4A11.91,11.91,0,0,0,82.89,57l-31.7-23.5ZM15.29,21a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,21Zm0,36.8a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,57.77Zm28.3-21.5a2.8,2.8,0,1,1,2.8-2.8A2.8,2.8,0,0,1,43.59,36.27Z" transform="translate(-1.17 -0.96)"/>',Cp='<path fill="{{color}}" d="M8.86,2.25V66.08H72.69V2.25H8.86ZM65.28,58.67h-49v-49h49v49Z" transform="translate(-8.86 -2.25)"/>',_p='<path fill="{{color}}" d="M40.77,2.25A31.92,31.92,0,1,0,72.69,34.16,31.92,31.92,0,0,0,40.77,2.25Zm0,57.63A25.71,25.71,0,1,1,66.48,34.16,25.71,25.71,0,0,1,40.77,59.87Z" transform="translate(-8.86 -2.25)"/>',bp={Angle:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50\n 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23\n 10l50 50q10 10 10 23z" />',viewBox:{x:1792,y:1792}}),ArrowAnnotate:Tp(pp,{iconContent:'<g id="arrowAnnotate-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="arrowAnnotate-arrow" d="M23,7 l-15,15 M7,17 l0,6 6,0" stroke-width="2" />\n </g>',viewBox:{x:24,y:24}}),Bidirectional:Tp(pp,{iconContent:'<g fill="{{color}}" stroke-width="3" stroke="{{color}}">\n <path d="M27.63 3.21L3.12 28.81"></path>\n <path d="M27.63 15.75L15.27 4.43"></path>\n <path d="M16.5 4.28C16.5 4.96 15.95 5.51 15.27 5.51C14.59 5.51 14.03 4.96 14.03 4.28C14.03 3.59 14.59 3.04 15.27 3.04C15.95 3.04 16.5 3.59 16.5 4.28Z" ></path>\n <path d="M28.87 3.19C28.87 3.87 28.31 4.43 27.63 4.43C26.95 4.43 26.4 3.87 26.4 3.19C26.4 2.51 26.95 1.95 27.63 1.95C28.31 1.95 28.87 2.51 28.87 3.19Z"></path>\n <path d="M28.87 15.75C28.87 16.43 28.31 16.99 27.63 16.99C26.95 16.99 26.4 16.43 26.4 15.75C26.4 15.07 26.95 14.51 27.63 14.51C28.31 14.51 28.87 15.07 28.87 15.75Z"></path>\n <path d="M4.73 28.44C4.73 29.12 4.17 29.68 3.49 29.68C2.81 29.68 2.25 29.12 2.25 28.44C2.25 27.76 2.81 27.2 3.49 27.2C4.17 27.2 4.73 27.76 4.73 28.44Z"></path>\n </g>',viewBox:{x:48,y:48}}),CobbAngle:Tp(pp,{iconContent:'<g stroke="{{color}}" stroke-width="3">\n <path d="M28.59 2.34L3.82 12.32"></path>\n <path d="M28.59 29.66L3.82 19.68"></path>\n <path stroke-dasharray="2" fill-opacity="0" d="M12.37\n 23.06C12.67 22.36 12.85 21.93 12.92 21.76C14.6 17.8 14.68 13.35 13.15\n 9.33C13.11 9.24 13.02 9 12.88 8.63">\n </path>\n </g>',viewBox:{x:32,y:32}}),CircleROI:Tp(pp,{iconContent:'<circle stroke="{{color}}" fill="none" stroke-width="3" cx="16" cy="16" r="14" />',viewBox:{x:32,y:32}}),EllipticalROI:Tp(pp,{iconContent:'<path stroke="{{color}}" fill="none" stroke-width="3" d="M30.74 15.76C30.74 20.99 24.14 25.23 16\n 25.23C7.86 25.23 1.26 20.99 1.26 15.76C1.26 10.54 7.86 6.3 16 6.3C24.14\n 6.3 30.74 10.54 30.74 15.76Z" />',viewBox:{x:32,y:32}}),FreehandROI:Tp(pp,{iconContent:'<g fill="{{color}}" stroke="{{color}}" stroke-width="2">\n <ellipse ry="1" rx="1" id="svg_3" cy="4.240343" cx="14.306499"/>\n <line id="svg_4" y2="3.58462" x2="12.242186" y1="3.997482" x1="13.432202"/>\n <line id="svg_5" y2="3.268901" x2="10.857882" y1="3.608906" x1="12.387902"/>\n <line id="svg_6" y2="3.147471" x2="9.740724" y1="3.293187" x1="10.955026"/>\n <line id="svg_7" y2="3.147471" x2="8.089274" y1="3.196043" x1="9.983585"/>\n <line id="svg_8" y2="3.268901" x2="6.874972" y1="3.123185" x1="8.307848"/>\n <line id="svg_9" y2="3.657478" x2="5.587812" y1="3.220329" x1="7.020688"/>\n <line id="svg_10" y2="4.046054" x2="4.737801" y1="3.560334" x1="5.854959"/>\n <line id="svg_11" y2="4.337487" x2="4.300652" y1="3.997482" x1="4.834945"/>\n <line id="svg_12" y2="4.726063" x2="3.88779" y1="4.191771" x1="4.470655"/>\n <line id="svg_15" y2="5.3575" x2="3.377783" y1="4.604633" x1="3.960648"/>\n <line id="svg_16" y2="6.183226" x2="2.916348" y1="5.138926" x1="3.547785"/>\n <line id="svg_17" y2="6.960379" x2="2.770632" y1="5.867507" x1="3.037779"/>\n <line id="svg_18" y2="7.713246" x2="2.673488" y1="6.741804" x1="2.819204"/>\n <line id="svg_19" y2="8.684687" x2="2.697774" y1="7.616102" x1="2.673488"/>\n <line id="svg_20" y2="9.753273" x2="2.892062" y1="8.611829" x1="2.697774"/>\n <line id="svg_21" y2="10.724714" x2="3.134923" y1="9.534698" x1="2.84349"/>\n <line id="svg_23" y2="11.647583" x2="3.596357" y1="10.578998" x1="3.086351"/>\n <line id="svg_25" y2="12.521881" x2="4.276366" y1="11.501867" x1="3.499213"/>\n <line id="svg_26" y2="13.930471" x2="5.830673" y1="12.376165" x1="4.13065"/>\n <line id="svg_28" y2="14.707624" x2="7.263549" y1="13.881899" x1="5.733528"/>\n <line id="svg_29" y2="15.339061" x2="8.963571" y1="14.61048" x1="7.06926"/>\n <line id="svg_30" y2="15.581921" x2="10.882168" y1="15.314775" x1="8.817855"/>\n <line id="svg_31" y2="15.460491" x2="12.023612" y1="15.581921" x1="10.785024"/>\n <line id="svg_33" y2="15.120487" x2="13.092197" y1="15.484777" x1="11.877895"/>\n <line id="svg_34" y2="14.586194" x2="13.86935" y1="15.217631" x1="12.897909"/>\n <line id="svg_35" y2="13.833327" x2="14.597931" y1="14.756196" x1="13.699348"/>\n <line id="svg_37" y2="12.716169" x2="15.180796" y1="13.881899" x1="14.549359"/>\n <line id="svg_39" y2="11.429009" x2="15.520801" y1="12.813313" x1="15.15651"/>\n <ellipse ry="1" rx="1" id="svg_40" cy="10.967574" cx="15.520801"/>\n </g>',viewBox:{x:18,y:18}}),FreehandROISculptor:Tp(pp,{iconContent:'<g id="icon-freehand-sculpt" fill="none" stroke-width="1.5" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <line id="svg_1" y2="2.559367" x2="10.184807" y1="4.467781" x1="8.81711"/>\n <line id="svg_4" y2="1.493836" x2="11.727442" y1="2.766112" x1="10.089386"/>\n <line id="svg_7" y2="1.080346" x2="13.047428" y1="1.748291" x1="11.345759"/>\n <line id="svg_8" y2="1.000829" x2="14.351511" y1="1.112153" x1="12.77707"/>\n <line id="svg_9" y2="1.350705" x2="15.242104" y1="0.905408" x1="13.969828"/>\n <line id="svg_10" y2="2.098167" x2="15.862339" y1="1.14396" x1="14.955842"/>\n <line id="svg_11" y2="3.195505" x2="16.41896" y1="1.939133" x1="15.766918"/>\n <line id="svg_12" y2="4.292843" x2="16.530284" y1="2.925147" x1="16.387153"/>\n <line id="svg_16" y2="5.644637" x2="16.196311" y1="3.831643" x1="16.593898"/>\n <line id="svg_18" y2="7.266789" x2="15.623787" y1="5.19934" x1="16.275829"/>\n <line id="svg_19" y2="10.813258" x2="14.526449" y1="6.726071" x1="15.766918"/>\n <line id="svg_20" y2="5.056209" x2="8.085552" y1="4.181519" x1="8.976145"/>\n <line id="svg_23" y2="5.326568" x2="7.481221" y1="4.78585" x1="8.403621"/>\n <line id="svg_24" y2="5.565119" x2="6.749662" y1="5.294761" x1="7.624352"/>\n <line id="svg_25" y2="5.994512" x2="5.429675" y1="5.533312" x1="6.956407"/>\n <line id="svg_27" y2="6.551133" x2="4.284627" y1="5.962706" x1="5.572807"/>\n <line id="svg_28" y2="7.584858" x2="3.044158" y1="6.392099" x1="4.427758"/>\n <line id="svg_29" y2="8.84123" x2="2.185372" y1="7.489437" x1="3.219096"/>\n <line id="svg_31" y2="10.606513" x2="1.644654" y1="8.602678" x1="2.280792"/>\n <line id="svg_32" y2="13.214679" x2="1.48562" y1="10.352058" x1="1.724171"/>\n <line id="svg_33" y2="14.375631" x2="1.676461" y1="12.992031" x1="1.453813"/>\n <line id="svg_34" y2="15.298031" x2="2.264889" y1="14.152983" x1="1.517427"/>\n <line id="svg_35" y2="16.172721" x2="3.521261" y1="14.948155" x1="1.915013"/>\n <line id="svg_36" y2="16.824762" x2="5.207027" y1="15.997783" x1="3.28271"/>\n <line id="svg_38" y2="17.063314" x2="7.035924" y1="16.745245" x1="4.968475"/>\n <line id="svg_39" y2="16.888376" x2="9.278311" y1="17.047411" x1="6.733758"/>\n <line id="svg_40" y2="16.284045" x2="10.661911" y1="16.983797" x1="8.992048"/>\n <line id="svg_41" y2="15.313934" x2="11.647925" y1="16.395369" x1="10.455166"/>\n <line id="svg_44" y2="13.898527" x2="12.82478" y1="15.425259" x1="11.504794"/>\n <line id="svg_45" y2="12.037824" x2="14.144766" y1="14.312017" x1="12.522614"/>\n <line id="svg_47" y2="10.59061" x2="14.605966" y1="12.228665" x1="13.953925"/>\n <ellipse ry="1" rx="1" id="svg_48" cy="3.982726" cx="13.460918"/>\n </g>',viewBox:{x:18,y:18}}),Length:Tp(pp,{iconContent:'<g id="length-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="length-dashes" d="m22.5,6 -16.5,16.5" stroke-width="3" stroke-dasharray="0.6666,5" />\n </g>',viewBox:{x:24,y:24}}),Probe:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75\n 75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73\n 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5\n 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5\n 385.5-103 385.5 103 279.5 279.5 103 385.5z" />',viewBox:{x:1792,y:1792}}),RectangleROI:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47\n 113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0\n 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119\n 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),TextMarker:Tp(pp,{iconContent:'<path fill="{{color}}" d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0\n 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29\n 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15\n 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5\n 13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0\n 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11\n 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0\n 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58\n 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z" />',viewBox:{x:1792,y:1792}}),Crosshairs:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26\n 19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45\n 19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26\n 0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5\n 112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32\n 188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5\n 278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26\n 0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26\n 0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161\n 154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161\n 37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z" />',viewBox:{x:1792,y:1792}}),Eraser:Tp(pp,{iconContent:'<path transform="translate(0,1792) scale(1,-1)" fill="{{color}}" d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15\n 34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38\n 0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38\n 0 69.5 20.5t47.5 54.5z" />',viewBox:{x:2048,y:1792}}),Magnify:Tp(pp,{iconContent:'<path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />',viewBox:{x:512,y:512}}),Pan:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17\n 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355\n 355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59\n 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12\n 0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144\n 144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19\n 45v448q0 42-39 59-13 5-25 5-26 0-45-19z" />',viewBox:{x:1792,y:1792}}),Rotate:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39\n 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5\n 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0\n 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109\n 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298\n 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14\n 39 17 39 59z" />',viewBox:{x:1792,y:1792}}),StackScroll:Tp(pp,{iconContent:'<path fill="{{color}}" d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0\n 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547\n 0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z" />',viewBox:{x:24,y:28}}),WindowLevelRegion:Tp(pp,{iconContent:'<path fill="{{color}}" d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119\n 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5\n 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),WindowLevel:Tp(pp,{iconContent:'\n <path fill="{{color}}" d="M14.5,3.5 a1 1 0 0 1 -11,11 Z" stroke="none" opacity="0.8" />\n <circle cx="9" cy="9" r="8" fill="none" stroke-width="2" stroke="{{color}}" />',viewBox:{x:18,y:18}}),Zoom:Tp(pp,{iconContent:'\n <path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />\n <path fill="{{color}}" transform="scale(0.22,0.22) translate(1400,0)" d="M1216\n 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19\n 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26\n 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />',viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Tp(pp,{iconContent:"".concat(Ep," ").concat(wp),viewBox:fp}),SegmentationFreeHandFillInside:Tp(pp,{iconContent:"".concat(Ep," ").concat(Ip),viewBox:fp}),SegmentationFreeHandEraseOutside:Tp(pp,{iconContent:"".concat(Ep," ").concat(wp),viewBox:fp}),SegmentationFreeHandFillOutside:Tp(pp,{iconContent:"".concat(Ep," ").concat(Ip),viewBox:fp}),SegmentationRectangleEraseInside:Tp(pp,{iconContent:"".concat(Cp," ").concat(wp),viewBox:fp}),RectangleScissor:Tp(pp,{iconContent:"".concat(Cp," ").concat(Ip),viewBox:fp}),"RectangleScissor.FILL_INSIDE":Tp(pp,{iconContent:"".concat(Cp," ").concat(Ip),viewBox:fp}),"RectangleScissor.FILL_OUTSIDE":Tp(pp,{iconContent:"".concat(Cp," ").concat(Ip),viewBox:fp}),"RectangleScissor.ERASE_OUTSIDE":Tp(pp,{iconContent:"".concat(Cp," ").concat(wp),viewBox:fp}),"RectangleScissor.ERASE_INSIDE":Tp(pp,{iconContent:"".concat(Cp," ").concat(wp),viewBox:fp}),CircleScissor:Tp(pp,{iconContent:"".concat(_p," ").concat(Ip),viewBox:fp}),"CircleScissor.FILL_INSIDE":Tp(pp,{iconContent:"".concat(_p," ").concat(Ip),viewBox:fp}),"CircleScissor.ERASE_OUTSIDE":Tp(pp,{iconContent:"".concat(_p," ").concat(wp),viewBox:fp}),"CircleScissor.FILL_OUTSIDE":Tp(pp,{iconContent:"".concat(_p," ").concat(Ip),viewBox:fp})};function Tp(e,t){return Object.assign(Object.create(e),t)}function Dp(e,t,n){bp[e]=Tp(pp,{iconContent:t,viewBox:n})}const Sp=Object.keys(bp),yp=Fr.Highlighted,Mp=Xe.Active;class xp extends mp{constructor(e,t,n,o,i){super(e,t,n,o,i)}static getDefinedCursor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0;n||(n=Hr("color",{},yp,Mp));const o=function(e,t,n){return"".concat(t?"pointer":"cursor",":").concat(e,"/").concat(n)}(e,t,n);let i=super.getDefinedCursor(o);if(!i){const a=function(e){return bp[e]}(e);a&&(i=function(e,t,n,o,i){const{x:a,y:r}=e.mousePoint;return new xp(function(e,t,n){return URL.createObjectURL(function(e,t,n){const o=(t?Ap:Pp)(e,n);return new Blob([o],{type:"image/svg+xml"})}(e,t,n))}(e,n,{color:o}),a,r,t,i)}(a,o,t,n,super.getDefinedCursor("default")),super.setDefinedCursor(o,i))}return i}}function Op(e,t){const n=Object(t),o=Object.prototype.hasOwnProperty.bind(n);return(e+"").replace(/\{\{(\w+)\}\}/g,((e,t)=>o(t)?n[t]+"":""))}function Pp(e,t){const{iconContent:n,iconSize:o,viewBox:i}=e;return Op('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(o,'" height="').concat(o,'" viewBox="0 0\n ').concat(i.x," ").concat(i.y,'">\n ').concat(n,"\n </svg>"),t)}function Ap(e,t){const{iconContent:n,iconSize:o,viewBox:i,mousePointerGroupString:a}=e,r=o/Math.max(i.x,i.y,1),s=16+o;return Op('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(s,'" height="').concat(s,'" viewBox="0 0 ').concat(s," ").concat(s,'">\n <g>').concat(a,'</g>\n <g transform="translate(16, 16) scale(').concat(r,')">').concat(n,"</g>\n </svg>"),t)}const{Active:Rp,Passive:Lp,Enabled:Np,Disabled:kp}=Xe,Up=[{mouseButton:ic.Primary}];class Vp{constructor(e){ae(this,"id",void 0),ae(this,"viewportsInfo",[]),ae(this,"toolOptions",{}),ae(this,"currentActivePrimaryToolName",null),ae(this,"prevActivePrimaryToolName",null),ae(this,"restoreToolOptions",{}),ae(this,"_toolInstances",{}),this.id=e}getViewportIds(){return this.viewportsInfo.map((e=>{let{viewportId:t}=e;return t}))}getViewportsInfo(){return this.viewportsInfo.slice()}getToolInstance(e){const t=this._toolInstances[e];if(t)return t;console.warn("'".concat(e,"' is not registered with this toolGroup (").concat(this.id,")."))}getToolInstances(){return this._toolInstances}hasTool(e){return!!this._toolInstances[e]}addTool(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=Ke.tools[e],o=void 0!==e&&""!==e,i=this.toolOptions[e];if(!o)return void console.warn("Tool with configuration did not produce a toolName: ",t);if(!n)return void console.warn("'".concat(e,"' is not registered with the library. You need to use cornerstoneTools.addTool to register it."));if(i)return void console.warn("'".concat(e,"' is already registered for ToolGroup ").concat(this.id,"."));const{toolClass:a}=n,r=new a({name:e,toolGroupId:this.id,configuration:t});this._toolInstances[e]=r}addToolInstance(e,t){var n;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=null===(n=Ke.tools[e])||void 0===n?void 0:n.toolClass;if(!i){const n=Ke.tools[t].toolClass;class o extends n{}o.toolName=e,i=o,Ke.tools[e]={toolClass:o}}this.addTool(i.toolName,o)}addViewport(e,t){if("string"!=typeof e)throw new Error("viewportId must be defined and be a string");const n=(0,oe.getRenderingEngines)();if(!t&&n.length>1)throw new Error("You must specify a renderingEngineId when there are multiple rendering engines.");const o=t||n[0].id;this.viewportsInfo.some((t=>{let{viewportId:n}=t;return n===e}))||this.viewportsInfo.push({viewportId:e,renderingEngineId:o});const i=this.getActivePrimaryMouseButtonTool();oe.Settings.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(i);const a={toolGroupId:this.id,viewportId:e,renderingEngineId:o};(0,oe.triggerEvent)(oe.eventTarget,se.TOOLGROUP_VIEWPORT_ADDED,a)}removeViewports(e,t){const n=[];if(this.viewportsInfo.forEach(((o,i)=>{let a=!1;o.renderingEngineId===e&&(a=!0,t&&o.viewportId!==t&&(a=!1)),a&&n.push(i)})),n.length)for(let e=n.length-1;e>=0;e--)this.viewportsInfo.splice(n[e],1);const o={toolGroupId:this.id,viewportId:t,renderingEngineId:e};(0,oe.triggerEvent)(oe.eventTarget,se.TOOLGROUP_VIEWPORT_REMOVED,o)}setActiveStrategy(e,t){const n=this._toolInstances[e];void 0!==n?n.setActiveStrategy(t):console.warn("Tool ".concat(e," not added to toolGroup, can't set tool configuration."))}setToolMode(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e?t!==Xe.Active?t!==Xe.Passive?t!==Xe.Enabled?t!==Xe.Disabled?console.warn("setToolMode: mode must be defined"):this.setToolDisabled(e):this.setToolEnabled(e):this.setToolPassive(e):this.setToolActive(e,n||this.restoreToolOptions[e]):console.warn("setToolMode: toolName must be defined")}setToolActive(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this._toolInstances[e];if(void 0===n)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));if(!n)return void console.warn("'".concat(e,"' instance ").concat(n," is not registered with this toolGroup, can't set tool mode."));const o={bindings:[...this.toolOptions[e]?this.toolOptions[e].bindings:[],...t.bindings?t.bindings:[]].reduce(((e,t)=>{const n=void 0!==t.numTouchPoints,o=void 0!==t.mouseButton;return e.some((e=>Wp(e,t)))||!n&&!o||e.push(t),e}),[]),mode:Rp};this.toolOptions[e]=o,this._toolInstances[e].mode=Rp;const i=oe.Settings.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(t)&&i)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&i){const e=lr.getDefinedCursor("default");this._setCursorForViewports(e)}this._hasMousePrimaryButtonBinding(t)&&(null===this.prevActivePrimaryToolName?this.prevActivePrimaryToolName=e:this.prevActivePrimaryToolName=this.currentActivePrimaryToolName,this.currentActivePrimaryToolName=e),"function"==typeof n.onSetToolActive&&n.onSetToolActive(),this._renderViewports();const a={toolGroupId:this.id,toolName:e,toolBindingsOptions:t};(0,oe.triggerEvent)(oe.eventTarget,se.TOOL_ACTIVATED,a),this._triggerToolModeChangedEvent(e,Rp,t)}setToolPassive(e,t){const n=this._toolInstances[e];if(void 0===n)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const o=this.getToolOptions(e),i=Object.assign({bindings:o?o.bindings:[]},o,{mode:Lp}),a=Array.isArray(null==t?void 0:t.removeAllBindings)?t.removeAllBindings:this.getDefaultPrimaryBindings();i.bindings=i.bindings.filter((e=>!0!==(null==t?void 0:t.removeAllBindings)&&!a.some((t=>Wp(e,t)))));let r=Lp;0!==i.bindings.length&&(r=Rp,i.mode=r),this.toolOptions[e]=i,n.mode=r,"function"==typeof n.onSetToolPassive&&n.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Lp)}setToolEnabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const n={bindings:[],mode:Np};this.toolOptions[e]=n,t.mode=Np,"function"==typeof t.onSetToolEnabled&&t.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Np)}setToolDisabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const n={bindings:[],mode:kp};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=n,t.mode=kp,"function"==typeof t.onSetToolDisabled&&t.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,kp)}getToolOptions(e){const t=this.toolOptions[e];if(void 0!==t)return t}getActivePrimaryMouseButtonTool(){return Object.keys(this.toolOptions).find((e=>{const t=this.toolOptions[e];return t.mode===Rp&&this._hasMousePrimaryButtonBinding(t)}))}setViewportsCursorByToolName(e,t){const n=this._getCursor(e,t);this._setCursorForViewports(n)}_getCursor(e,t){let n,o;return t&&(n="".concat(e,".").concat(t),o=xp.getDefinedCursor(n,!0),o)?o:(n="".concat(e),o=xp.getDefinedCursor(n,!0),o||(n=e,o=xp.getDefinedCursor(n,!0),o||lr.getDefinedCursor("default")))}_setCursorForViewports(e){this.viewportsInfo.forEach((t=>{let{renderingEngineId:n,viewportId:o}=t;const i=(0,oe.getEnabledElementByIds)(o,n);if(!i)return;const{viewport:a}=i;ur(a.element,e)}))}setToolConfiguration(e,t,n){const o=this._toolInstances[e];if(void 0===o)return console.warn("Tool ".concat(e," not present, can't set tool configuration.")),!1;let i;return i=n?t:Object.assign(o.configuration,t),o.configuration=i,"function"==typeof o.onSetToolConfiguration&&o.onSetToolConfiguration(),this._renderViewports(),!0}getDefaultMousePrimary(){return ic.Primary}getDefaultPrimaryBindings(){return Up}getToolConfiguration(e,t){if(void 0===this._toolInstances[e])return void console.warn("Tool ".concat(e," not present, can't set tool configuration."));const n=vp()(this._toolInstances[e].configuration,t)||this._toolInstances[e].configuration;return structuredClone(n)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const t=this.getCurrentActivePrimaryToolName();this.setToolDisabled(t),this.setToolActive(e,{bindings:[{mouseButton:ic.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=ao(e);return o?(console.warn("ToolGroup ".concat(e," already exists")),o):(o=Hp(e),n=null!==(t=n)&&void 0!==t?t:()=>!0,Object.keys(this._toolInstances).filter(n).forEach((e=>{var t;const n=this._toolInstances[e],i=this.toolOptions[e],a=n.mode;o.addTool(e),o.setToolMode(e,a,{bindings:null!==(t=i.bindings)&&void 0!==t?t:[]})})),o)}_hasMousePrimaryButtonBinding(e){var t;const n=this.getDefaultPrimaryBindings();return null==e||null===(t=e.bindings)||void 0===t?void 0:t.some((e=>n.some((t=>Wp(e,t)))))}_renderViewports(){this.viewportsInfo.forEach((e=>{let{renderingEngineId:t,viewportId:n}=e;(0,oe.getRenderingEngine)(t).renderViewport(n)}))}_triggerToolModeChangedEvent(e,t,n){const o={toolGroupId:this.id,toolName:e,mode:t,toolBindingsOptions:n};(0,oe.triggerEvent)(oe.eventTarget,se.TOOL_MODE_CHANGED,o)}}function Wp(e,t){return e.mouseButton===t.mouseButton&&e.numTouchPoints===t.numTouchPoints&&e.modifierKey===t.modifierKey}const Hp=function(e){if(Ke.toolGroups.some((t=>t.id===e)))return void console.warn("'".concat(e,"' already exists."));const t=new Vp(e);return Ke.toolGroups.push(t),t},Bp=function(){return Ke.toolGroups};function Fp(e,t,n,o){const{camera:i}=o.detail,a=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!a)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const r=a.getViewport(n.viewportId);r.setCamera(i),r.render()}const{CAMERA_MODIFIED:Gp}=oe.Enums.Events;function qp(e){return lp(e,Gp,Fp)}function zp(e,t,n,o,i){const a=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!a)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const r=a.getViewport(n.viewportId),s=a.getViewport(t.viewportId).getViewPresentation(i);r.setViewPresentation(s),r.render()}const{CAMERA_MODIFIED:jp}=oe.Enums.Events;function Kp(e,t){return lp(e,jp,zp,t)}function Yp(e,t,n,o,i){const a=o.detail,{volumeId:r,range:s,invertStateChanged:l,invert:d,colormap:c}=a,h=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!h)throw new Error("Rendering Engine does not exist: ".concat(n.renderingEngineId));const u=h.getViewport(n.viewportId),g={voiRange:s};if(null!=i&&i.syncInvertState&&l&&(g.invert=d),null!=i&&i.syncColormap&&c&&(g.colormap=c),u instanceof oe.BaseVolumeViewport)u._actors&&u._actors.size>1?u.setProperties(g,r):u.setProperties(g);else{if(!(u instanceof oe.StackViewport))throw new Error("Viewport type not supported.");u.setProperties(g)}u.render()}function Xp(e,t){return t=Object.assign({syncInvertState:!0,syncColormap:!0},t),lp(e,oe.Enums.Events.VOI_MODIFIED,Yp,{auxiliaryEventNames:[oe.Enums.Events.COLORMAP_MODIFIED],...t})}function Jp(e,t,n){const o=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!o)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const i=e.getOptions(n.viewportId),a=o.getViewport(n.viewportId),r=o.getViewport(t.viewportId);if(!1!==(null==i?void 0:i.syncZoom)){const e=r.getZoom();a.setZoom(e)}if(!1!==(null==i?void 0:i.syncPan)){const e=r.getPan();a.setPan(e)}a.render()}const{CAMERA_MODIFIED:Zp}=oe.Enums.Events;function $p(e){return lp(e,Zp,Jp)}const Qp=(e,t)=>oe.utilities.spatialRegistrationMetadataProvider.get("spatialRegistrationModule",e,t);async function ef(e,t,n){const o=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!o)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const i=o.getViewport(t.viewportId),a=e.getOptions(n.viewportId);if(null!=a&&a.disabled)return;const r=o.getViewport(n.viewportId),s=i.getCurrentImageId(),l=oe.metaData.get("imagePlaneModule",s).imagePositionPatient,d=r.getImageIds();if(!function(e,t){const{viewPlaneNormal:n}=e.getCamera(),{viewPlaneNormal:o}=t.getCamera(),i=Sn.vec3.dot(n,o);return Math.abs(i)>.9}(i,r))return;let c=Qp(n.viewportId,t.viewportId);if(!c&&(i.getFrameOfReferenceUID()===r.getFrameOfReferenceUID()&&!1!==(null==a?void 0:a.useInitialPosition)?c=Sn.mat4.identity(Sn.mat4.create()):(oe.utilities.calculateViewportsSpatialRegistration(i,r),c=Qp(n.viewportId,t.viewportId)),!c))return;const h=Sn.vec3.transformMat4(Sn.vec3.create(),l,c),u=(g=h,d.reduce(((e,t,n)=>{const{imagePositionPatient:o}=oe.metaData.get("imagePlaneModule",t),i=Sn.vec3.distance(o,g);return i<e.distance?{distance:i,index:n}:e}),{distance:1/0,index:-1}));var g;let v=u.index;r instanceof oe.VolumeViewport&&(v=d.length-u.index-1),-1!==u.index&&r.getCurrentImageIdIndex()!==u.index&&await lo(r.element,{imageIndex:v})}const{STACK_NEW_IMAGE:tf,VOLUME_NEW_IMAGE:nf}=oe.Enums.Events;function of(e){return lp(e,tf,ef,{auxiliaryEventNames:[nf]})}function af(e,t,n){var o,i,a,r;const s=(0,oe.getRenderingEngine)(n.renderingEngineId);if(!s)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const l=s.getViewport(n.viewportId),d=null===(o=(i=s.getViewport(t.viewportId)).getSlabThickness)||void 0===o?void 0:o.call(i);d&&(null===(a=(r=l).setSlabThickness)||void 0===a||a.call(r,d),l.render())}const{CAMERA_MODIFIED:rf}=oe.Enums.Events;function sf(e){return lp(e,rf,af)}const lf=of,df=function(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"";const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},i),c=l||s,h=nr(t,"ellipse",n),u=e.getSvgNode(h),[g,v,m,p]=o,f=Math.hypot(m[0]-p[0],m[1]-p[1]),w=Math.hypot(v[0]-g[0],v[1]-g[1]),I=180*Math.atan2(m[1]-p[1],m[0]-p[0])/Math.PI,E=[(m[0]+p[0])/2,(v[1]+g[1])/2],C=f/2,_=w/2,b={cx:"".concat(E[0]),cy:"".concat(E[1]),rx:"".concat(C),ry:"".concat(_),stroke:r,fill:"transparent",transform:"rotate(".concat(I," ").concat(E[0]," ").concat(E[1],")"),"stroke-width":c,"stroke-dasharray":d};if(u)or(b,u),e.setNodeTouched(h);else{const t=document.createElementNS("http://www.w3.org/2000/svg","ellipse");""!==a&&t.setAttribute("data-id",a),ir(b,t),e.appendNode(t,h)}},cf=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";const s=[(o[0]+i[0])/2,o[1]],l=[(o[0]+i[0])/2,i[1]],d=[o[0],(o[1]+i[1])/2],c=[i[0],(o[1]+i[1])/2];df(e,t,n,[l,s,d,c],a={},r="")};function hf(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},a);Zr(e,t,n,o,i,{color:r,width:s,lineWidth:l,lineDash:d});const c=Math.atan2(i[1]-o[1],i[0]-o[0]),h={start:[i[0]-10*Math.cos(c-Math.PI/7),i[1]-10*Math.sin(c-Math.PI/7)],end:i},u={start:[i[0]-10*Math.cos(c+Math.PI/7),i[1]-10*Math.sin(c+Math.PI/7)],end:i};Zr(e,t,"2",h.start,h.end,{color:r,width:s,lineWidth:l}),Zr(e,t,"3",u.start,u.end,{color:r,width:s,lineWidth:l})}function uf(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},a),c=l||s,h=nr(t,"rect",n),u=e.getSvgNode(h),g=[Math.min(o[0],i[0]),Math.min(o[1],i[1])],v=Math.abs(o[0]-i[0]),m=Math.abs(o[1]-i[1]),p={x:"".concat(g[0]),y:"".concat(g[1]),width:"".concat(v),height:"".concat(m),stroke:r,fill:"black","stroke-width":c,"stroke-dasharray":d};if(u)or(p,u),e.setNodeTouched(h);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");ir(p,t),e.appendNode(t,h)}}const gf=function(e,t){let n=xp.getDefinedCursor(t,!0);n||(n=lr.getDefinedCursor(t)),n||(console.log("Cursor ".concat(t," is not defined either as SVG or as a standard cursor.")),n=lr.getDefinedCursor(t)),gr(e,n)},vf=[...Sp,...cr],mf=function(e,t,n){const o=Hr("textBoxFontSize",e,t,n),i=Hr("textBoxFontFamily",e,t,n);return"".concat(o,"px ").concat(i)};class pf{constructor(){ae(this,"annotationUIDs",new Set),ae(this,"_isVisible",!0),ae(this,"visibleFilter",void 0),this.visibleFilter=this.unboundVisibleFilter.bind(this)}unboundVisibleFilter(e){return!this._isVisible||!this.annotationUIDs.has(e)}has(e){return this.annotationUIDs.has(e)}setVisible(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;this._isVisible!==e&&(this._isVisible=e,this.annotationUIDs.forEach((o=>{const i=pt(o);if(!i)return void this.annotationUIDs.delete(o);if(i.isVisible===e)return;if(!e&&!1===(null==n?void 0:n(o)))return;i.isVisible=e;const a={...t,annotation:i};(0,oe.triggerEvent)(oe.eventTarget,se.ANNOTATION_MODIFIED,a)})))}get isVisible(){return this._isVisible}findNearby(e,t){const n=[...this.annotationUIDs];if(0===n.length)return null;if(!e)return n[1===t?0:n.length-1];const o=n.indexOf(e);return-1===o||o+t<0||o+t>=n.length?null:n[o+t]}add(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.forEach((e=>this.annotationUIDs.add(e)))}remove(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.forEach((e=>this.annotationUIDs.delete(e)))}clear(){this.annotationUIDs.clear()}}const ff=function(e,t,n){t.forEach((t=>{!function(e,t,n){const o=Vu(t),{type:i}=o;if(i===Ct.Labelmap)_u.removeRepresentation(e,t,n);else{if(i!==Ct.Contour)throw new Error("The representation ".concat(i," is not supported yet"));$h.removeRepresentation(e,t,n)}}(e,t,n)}))},wf=function(e){(function(e){if(!e||0===e.length)throw new Error("The segmentationInputArray is undefined or an empty array");e.forEach((e=>{if(void 0===e.segmentationId)throw new Error("Undefined segmentationInput.segmentationId. Please provide a valid segmentationId");if(void 0===e.representation)throw new Error("Undefined segmentationInput.representation. Please provide a valid representation");e.representation.type===Ct.Labelmap&&function(e){if(!e.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");qt(e.representation.data)}(e)}))})(e),e.map((e=>{ku(structuredClone(e))}))};class If extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]})}touchDragCallback(e){this._dragCallback(e)}mouseDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,oe.getEnabledElement)(t),i=n.world,a=o.viewport.getCamera(),{focalPoint:r,position:s}=a,l=[s[0]-i[0],s[1]-i[1],s[2]-i[2]],d=[r[0]-i[0],r[1]-i[1],r[2]-i[2]];o.viewport.setCamera({focalPoint:d,position:l}),o.viewport.render()}}ae(If,"toolName",void 0),If.toolName="Pan";const Ef=If;class Cf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"cleanUp",void 0),ae(this,"_resizeObservers",new Map),ae(this,"_viewportAddedListener",void 0),ae(this,"_hasResolutionChanged",!1),ae(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{viewport:i}=o,a=i.getDefaultActor().actor.getMapper(),r=a.getSampleDistance();return this._hasResolutionChanged||(a.setSampleDistance(2*r),this._hasResolutionChanged=!0,null!==this.cleanUp&&document.removeEventListener("mouseup",this.cleanUp),this.cleanUp=()=>{a.setSampleDistance(r),i.render(),this._hasResolutionChanged=!1},document.addEventListener("mouseup",this.cleanUp,{once:!0})),!0})),ae(this,"_getViewportsInfo",(()=>ao(this.toolGroupId).viewportsInfo)),ae(this,"onSetToolActive",(()=>{const e=()=>{this._getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;if(!this._resizeObservers.has(t)){const{viewport:e}=(0,oe.getEnabledElementByIds)(t,n)||{viewport:null};if(!e)return;const{element:o}=e,i=new ResizeObserver((()=>{const e=(0,oe.getEnabledElementByIds)(t,n);if(!e)return;const{viewport:o}=e;o.resetCamera(),o.render()}));i.observe(o),this._resizeObservers.set(t,i)}}))};e(),this._viewportAddedListener=t=>{t.detail.toolGroupId===this.toolGroupId&&e()},oe.eventTarget.addEventListener(se.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)})),ae(this,"onSetToolDisabled",(()=>{this._resizeObservers.forEach(((e,t)=>{e.disconnect(),this._resizeObservers.delete(t)})),this._viewportAddedListener&&(oe.eventTarget.removeEventListener(se.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._viewportAddedListener=null)})),ae(this,"rotateCamera",((e,t,n,o)=>{const i=e.getVtkActiveCamera(),a=i.getViewUp(),r=i.getFocalPoint(),s=i.getPosition(),l=[0,0,0],d=[0,0,0],c=[0,0,0],h=Sn.mat4.identity(new Float32Array(16));Sn.mat4.translate(h,h,t),Sn.mat4.rotate(h,h,o,n),Sn.mat4.translate(h,h,[-t[0],-t[1],-t[2]]),Sn.vec3.transformMat4(l,s,h),Sn.vec3.transformMat4(d,r,h),Sn.mat4.identity(h),Sn.mat4.rotate(h,h,o,n),Sn.vec3.transformMat4(c,a,h),e.setCamera({position:l,viewUp:c,focalPoint:d})})),this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,lastPoints:o}=e.detail,i=n.canvas,a=o.canvas,{rotateIncrementDegrees:r}=this.configuration,s=(0,oe.getEnabledElement)(t),{viewport:l}=s,d=l.getCamera(),c=t.clientWidth,h=t.clientHeight,u=[i[0]/c,i[1]/h],g=[a[0]/c,a[1]/h],v=[.5*c,.5*h],m=l.canvasToWorld(v),p=(1+Math.abs(.5))**2,f=[g[0],0,0],w=[u[0],0,0],I=f[0]**2,E=w[0]**2,C=I>p?0:Math.sqrt(p-I),_=E>p?0:Math.sqrt(p-E),b=[f[0],0,C];Il().normalize(b);const T=[w[0],0,_];Il().normalize(T);const D=Il().dot(b,T);if(Math.abs(D)>1e-4){const e=-2*Math.acos(Il().clampValue(D,-1,1))*Math.sign(u[0]-g[0])*r,t=d.viewUp,n=d.viewPlaneNormal,o=[0,0,0],i=[0,0,0];Il().cross(t,n,o),Il().normalize(o),Il().cross(n,o,i),Il().normalize(i),Il().normalize(t),this.rotateCamera(l,m,i,e);const a=(g[1]-u[1])*r;this.rotateCamera(l,m,o,a),l.render()}}}ae(Cf,"toolName",void 0),Cf.toolName="TrackballRotate";const _f=Cf,{transformWorldToIndex:bf}=oe.utilities;class Tf extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Df}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"editData",void 0),ae(this,"eventDispatchDetail",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{label:"",handles:{points:[[...i]]},cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(o),mr(o),e.preventDefault(),io(v),g})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData,{viewportId:r,renderingEngine:s}=(0,oe.getEnabledElement)(n);this.eventDispatchDetail={viewportId:r,renderingEngineId:s.id},this._deactivateModify(n),vr(n),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o)})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,{annotation:a,viewportIdsToRender:r}=this.editData,{data:s}=a;s.handles.points[0]=[...i],a.invalidated=!0;const l=(0,oe.getEnabledElement)(o),{renderingEngine:d}=l;io(r)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],r=o.annotationUID,h=o.data,u=h.handles.points[0],g=a.worldToCanvas(u);c.annotationUID=r;const{color:v}=this.getAnnotationStyle({annotation:o,styleSpecifier:c});if(h.cachedStats||(h.cachedStats={}),h.cachedStats[l]&&null!=h.cachedStats[l].value){if(o.invalidated&&(this._calculateCachedStats(o,d,e),a instanceof oe.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=oe.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=oe.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,index:null,value:null},this._calculateCachedStats(o,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;Ar(t,r,"0",[g],{color:v}),i=!0;const m=this.getLinkedTextBoxStyle(c,o);if(!m.visibility)continue;const p=this.configuration.getTextLines(h,l);if(p){const e=[g[0]+6,g[1]-6];Jr(t,r,"0",p,[e[0],e[1]],m)}}return i}))}isPointNearTool(){return!1}toolSelectedCallback(){}getHandleNearImagePoint(e,t,n,o){const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,s=r.handles.points[0],l=a.worldToCanvas(s);if(!0==Sn.vec2.distance(n,l)<o)return s}handleSelectedCallback(e,t){const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},this._activateModify(o),mr(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{renderingEngineId:i,viewport:a}=n,{element:r}=a,s=o.handles.points[0],{cachedStats:l}=o,d=Object.keys(l);for(let n=0;n<d.length;n++){const o=d[n],c={isPreScaled:as(a,o),isSuvScaled:this.isSuvScaled(a,o,e.metadata.referencedImageId)},h=this.getTargetIdImage(o,t);if(!h)continue;const{dimensions:u,imageData:g,metadata:v}=h,m="getScalarData"in h?h.getScalarData():h.scalarData,p=v.Modality,f=bf(g,s);f[0]=Math.round(f[0]),f[1]=Math.round(f[1]),f[2]=Math.round(f[2]);const w=m.length/u[2]/u[1]/u[0];if(oe.utilities.indexWithinDimensions(f,u)){this.isHandleOutsideImage=!1;const t=u[0]*w,n=u[0]*u[1]*w,a=f[2]*n+f[1]*t+f[0]*w;let r,s=w>2?[m[a],m[a+1],m[a+2]]:m[a];if(o.startsWith("imageId:")){const e=o.split("imageId:")[1],t=oe.utilities.imageIdToURI(e),n=oe.utilities.getViewportsWithImageURI(t,i)[0];f[2]=n.getCurrentImageIdIndex()}if("US"===p){const e=Nn(h,[f]),t=e.values.every((e=>null!==e));s=t?e.values:s,r=t?e.units:"raw"}else r=is(p,e.metadata.referencedImageId,c);l[o]={index:f,value:s,Modality:p,pixelValueUnits:r}}else this.isHandleOutsideImage=!0,l[o]={index:f,Modality:p};e.invalidated=!1,Qe(e,r)}return l}}function Df(e,t){const n=e.cachedStats[t],{index:o,value:i,pixelValueUnits:a}=n;if(void 0===i)return;const r=[];if(r.push("(".concat(o[0],", ").concat(o[1],", ").concat(o[2],")")),i instanceof Array&&a instanceof Array)for(let e=0;e<i.length;e++)r.push("".concat(Qd(i[e])," ").concat(a[e]));else r.push("".concat(Qd(i)," ").concat(a));return r}ae(Tf,"toolName",void 0),Tf.toolName="Probe";const Sf=Tf;class yf extends Sf{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Mf}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"editData",void 0),ae(this,"eventDispatchDetail",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"postMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:h},data:{label:"",handles:{points:[[...i]]},cachedStats:{}}},g=Fi(o,this.getToolName());return this.editData={annotation:u,newAnnotation:!0,viewportIdsToRender:g},this._activateModify(o),mr(o),e.preventDefault(),io(g),u})),ae(this,"postTouchStartCallback",(e=>this.postMouseDownCallback(e))),ae(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o}=e;if(!this.editData)return n;const i=this.filterInteractableAnnotationsForElement(o.element,[this.editData.annotation]);if(null==i||!i.length)return n;const a=this.getTargetId(o),r=o.getRenderingEngine(),s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l=this.editData.annotation,d=l.annotationUID,c=l.data,h=c.handles.points[0],u=o.worldToCanvas(h);s.annotationUID=d;const{color:g}=this.getAnnotationStyle({annotation:l,styleSpecifier:s});if(as(o,a),this.isSuvScaled(o,a,l.metadata.referencedImageId),c.cachedStats[a]&&null!=c.cachedStats[a].value?l.invalidated&&this._calculateCachedStats(l,r,e):(c.cachedStats[a]={Modality:null,index:null,value:null},this._calculateCachedStats(l,r,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;Ar(t,d,"0",[u],{color:g}),n=!0;const v=this.configuration.getTextLines(c,a);if(v){const e=[u[0]+6,u[1]-6];Jr(t,d,"0",v,[e[0],e[1]],this.getLinkedTextBoxStyle(s,l))}return n}))}}function Mf(e,t){const n=e.cachedStats[t],{index:o,value:i,pixelValueUnits:a}=n;if(void 0===i)return;const r=[];return r.push("(".concat(o[0],", ").concat(o[1],", ").concat(o[2],")")),r.push("".concat(i.toFixed(2)," ").concat(a)),r}ae(yf,"toolName",void 0),yf.toolName="DragProbe";const xf=yf;class Of extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),ae(this,"_getImageDynamicRangeFromMiddleSlice",((e,t)=>{const n=Math.floor(t[2]/2),o=t[0]*t[1];let i,a;e instanceof Float32Array?(i=4,a=Float32Array):e instanceof Uint8Array?(i=1,a=Uint8Array):e instanceof Uint16Array?(i=2,a=Uint16Array):e instanceof Int16Array&&(i=2,a=Int16Array);const r=new a(e.buffer,n*o*i,o),{max:s,min:l}=this._getMinMax(r,o);return s-l}))}touchDragCallback(e){this.mouseDragCallback(e)}mouseDragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,oe.getEnabledElement)(t),{renderingEngine:i,viewport:a}=o;let r,s,l,d,c,h,u=!1;const g=a.getProperties();if(a instanceof oe.VolumeViewport){const e=this.getTargetId(a);r=oe.utilities.getVolumeId(e),h=oe.utilities.getViewportsWithVolumeId(r,i.id),({lower:s,upper:l}=g.voiRange);const t=oe.cache.getVolume(r);if(!t)throw new Error("Volume not found "+r);d=t.metadata.Modality,u=t.scaling&&Object.keys(t.scaling).length>0}else{if(!g.voiRange)throw new Error("Viewport is not a valid type");{var v,m;d=a.modality,({lower:s,upper:l}=g.voiRange);const{preScale:e={scaled:!1}}=(null===(v=a.getImageData)||void 0===v?void 0:v.call(a))||{};u=e.scaled&&void 0!==(null===(m=e.scalingParameters)||void 0===m?void 0:m.suvbw)}}c="PT"===d&&u?this.getPTScaledNewRange({deltaPointsCanvas:n.canvas,lower:s,upper:l,clientHeight:t.clientHeight,isPreScaled:u,viewport:a,volumeId:r}):this.getNewRange({viewport:a,deltaPointsCanvas:n.canvas,volumeId:r,lower:s,upper:l}),c.lower>=c.upper||(a.setProperties({voiRange:c}),a.render(),a instanceof oe.VolumeViewport&&h.forEach((e=>{a!==e&&e.render()})))}getPTScaledNewRange(e){let{deltaPointsCanvas:t,lower:n,upper:o,clientHeight:i,viewport:a,volumeId:r,isPreScaled:s}=e,l=4;return l=s?5/i:this._getMultiplierFromDynamicRange(a,r)||4,o-=t[1]*l,o=s?Math.max(o,.1):o,{lower:n,upper:o}}getNewRange(e){let{viewport:t,deltaPointsCanvas:n,volumeId:o,lower:i,upper:a}=e;const r=this._getMultiplierFromDynamicRange(t,o)||4,s=n[0]*r,l=n[1]*r;let{windowWidth:d,windowCenter:c}=oe.utilities.windowLevel.toWindowLevel(i,a);return d+=s,c+=l,d=Math.max(d,1),oe.utilities.windowLevel.toLowHighRange(d,c)}_getMultiplierFromDynamicRange(e,t){let n;if(t){var o;const e=oe.cache.getVolume(t),{dimensions:i}=e,a=e.getScalarData(),r=this._getImageDynamicRangeFromMiddleSlice(a,i),s=null==e||null===(o=e.metadata)||void 0===o?void 0:o.BitsStored,l=s?2**s:1/0;n=Math.min(r,l)}else n=this._getImageDynamicRangeFromViewport(e);const i=n/1024;return i>1?Math.round(i):i}_getImageDynamicRangeFromViewport(e){const{imageData:t}=e.getImageData(),n=t.getDimensions();if(t.getRange){const e=t.getRange();return e[1]-e[0]}let o,i;if(o=t.getScalarData?t.getScalarData():t.getPointData().getScalars(),1!==n[2])return this._getImageDynamicRangeFromMiddleSlice(o,n);if(o.getRange)i=o.getRange();else{const{min:e,max:t}=this._getMinMax(o,o.length);i=[e,t]}return i[1]-i[0]}_getMinMax(e,t){let n=1/0,o=-1/0;for(let i=0;i<t;i++){const t=e[i];t<n&&(n=t),t>o&&(o=t)}return{max:o,min:n}}}ae(Of,"toolName",void 0),Of.toolName="WindowLevel";const Pf=Of;class Af extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{minWindowWidth:10}}),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i],[...i],[...i]]},cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v},this._activateDraw(o),mr(o),e.preventDefault(),io(v),g})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i}=this.editData;this._deactivateDraw(n),vr(n);const{renderingEngine:a}=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,mt(o.annotationUID),io(i),et(o),this.applyWindowLevelRegion(o,n)})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i}=this.editData,{data:a}=o,{currentPoints:r}=t,s=(0,oe.getEnabledElement)(n),{worldToCanvas:l,canvasToWorld:d}=s.viewport,c=r.world,{points:h}=a.handles;h[3]=[...c];const u=l(h[0]),g=l(h[3]),v=[g[0],u[1]],m=[u[0],g[1]],p=d(v),f=d(m);h[1]=p,h[2]=f,o.invalidated=!0;const{renderingEngine:w}=s;io(i)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o,data:r}=n,{points:d}=r.handles,c=d.map((e=>a.worldToCanvas(e)));l.annotationUID=o;const{color:h,lineWidth:u,lineDash:g}=this.getAnnotationStyle({annotation:n,styleSpecifier:l});if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;const v="".concat(o,"-rect");Lr(t,o,"0",c[0],c[3],{color:h,lineDash:g,lineWidth:u},v),i=!0}return i})),ae(this,"applyWindowLevelRegion",((e,t)=>{const n=(0,oe.getEnabledElement)(t),{viewport:o}=n,i=$d(o),{data:a}=e,{points:r}=a.handles,s=r.map((e=>o.worldToCanvas(e))),l=s[0],d=s[3];let c=Math.min(l[0],d[0]),h=Math.min(l[1],d[1]),u=Math.abs(l[0]-d[0]),g=Math.abs(l[1]-d[1]);c=Gn(c,0,i.width),h=Gn(h,0,i.height),u=Math.floor(Math.min(u,Math.abs(i.width-c))),g=Math.floor(Math.min(g,Math.abs(i.height-h)));const v=Zd(Jd(i,Math.round(c),Math.round(h),u,g),i.minPixelValue,i.maxPixelValue);void 0===this.configuration.minWindowWidth&&(this.configuration.minWindowWidth=10);const m=Math.max(Math.abs(v.max-v.min),this.configuration.minWindowWidth),p=v.mean,f=oe.utilities.windowLevel.toLowHighRange(m,p);o.setProperties({voiRange:f}),o.render()})),ae(this,"cancel",(()=>null)),ae(this,"isPointNearTool",(()=>null)),ae(this,"toolSelectedCallback",(()=>null)),ae(this,"handleSelectedCallback",(()=>null)),ae(this,"_activateModify",(()=>null)),ae(this,"_deactivateModify",(()=>null))}}ae(Af,"toolName",void 0),Af.toolName="WindowLevelRegion";const Rf=Af;class Lf extends ba{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.1,maxZoomScale:30,pinchToZoom:!0,pan:!0,invert:!1}}),e=this,ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"initialMousePosWorld",void 0),ae(this,"dirVec",void 0),ae(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=o.world,a=(0,oe.getEnabledElement)(n).viewport.getCamera(),{focalPoint:r}=a;this.initialMousePosWorld=i;let s=Sn.vec3.fromValues(r[0]-i[0],r[1]-i[1],r[2]-i[2]);return s=Sn.vec3.normalize(Sn.vec3.create(),s),this.dirVec=s,!1})),ae(this,"preTouchStartCallback",(e=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(e)})),ae(this,"_dragParallelProjection",(function(t,n,o){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const{element:a,deltaPoints:r}=t.detail,s=i?t.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{parallelScale:d,focalPoint:c,position:h}=o,u=s*(5/l[1])*(e.configuration.invert?-1:1),g=(1-u)*d;let v=c,m=h;if(!e.configuration.zoomToCenter){const t=Sn.vec3.distance(c,e.initialMousePosWorld);m=Sn.vec3.scaleAndAdd(Sn.vec3.create(),h,e.dirVec,-t*u),v=Sn.vec3.scaleAndAdd(Sn.vec3.create(),c,e.dirVec,-t*u)}const p=n.getImageData();let f=[1,1,1];p&&(f=p.spacing);const{minZoomScale:w,maxZoomScale:I}=e.configuration,E=a.clientHeight*f[1]*.5,C=E/g;let _=g,b=!1;p&&(C<w?(_=E/w,b=!0):C>=I&&(_=E/I,b=!0)),n.setCamera({parallelScale:_,focalPoint:b?c:v,position:b?h:m})})),ae(this,"_dragPerspectiveProjection",(function(t,n,o){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const{element:a,deltaPoints:r}=t.detail,s=i?t.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{position:d,focalPoint:c,viewPlaneNormal:h}=o,u=Il().distance2BetweenPoints(d,c),g=Math.sqrt(u)/l[1],v=[-h[0],-h[1],-h[2]],m=e.configuration.invert?s/g:s*g;let p=m*v[0];d[0]+=p,c[0]+=p,p=m*v[1],d[1]+=p,c[1]+=p,p=m*v[2],d[2]+=p,c[2]+=p,n.setCamera({position:d,focalPoint:c})})),this.initialMousePosWorld=[0,0,0],this.dirVec=[0,0,0],this.configuration.pinchToZoom?this.touchDragCallback=this._pinchCallback.bind(this):this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:t,currentPoints:n}=e.detail,o=(0,oe.getEnabledElement)(t),{viewport:i}=o,a=i.getCamera(),r=n.world,{focalPoint:s}=a;this.initialMousePosWorld=r;let l=Sn.vec3.fromValues(s[0]-r[0],s[1]-r[1],s[2]-r[2]);l=Sn.vec3.normalize(Sn.vec3.create(),l),this.dirVec=l,a.parallelProjection?this._dragParallelProjection(e,i,a,!0):this._dragPerspectiveProjection(e,i,a,!0),i.render()}this.configuration.pan&&this._panCallback(e)}_dragCallback(e){const{element:t}=e.detail,n=(0,oe.getEnabledElement)(t),{viewport:o}=n,i=o.getCamera();i.parallelProjection?this._dragParallelProjection(e,o,i):this._dragPerspectiveProjection(e,o,i),o.render()}_panCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,oe.getEnabledElement)(t),i=n.world,a=o.viewport.getCamera(),{focalPoint:r,position:s}=a,l=[s[0]-i[0],s[1]-i[1],s[2]-i[2]],d=[r[0]-i[0],r[1]-i[1],r[2]-i[2]];o.viewport.setCamera({focalPoint:d,position:l}),o.viewport.render()}}ae(Lf,"toolName",void 0),Lf.toolName="Zoom";const Nf=Lf;class kf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}),ae(this,"deltaY",void 0),this.deltaY=1}mouseDragCallback(e){this._dragCallback(e)}touchDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{deltaPoints:t,viewportId:n,renderingEngineId:o}=e.detail,{viewport:i}=(0,oe.getEnabledElementByIds)(n,o),a=this.getTargetId(i),{debounceIfNotLoaded:r,invert:s,loop:l}=this.configuration,d=t.canvas[1];let c;i instanceof oe.VolumeViewport&&(c=a.split(/volumeId:|\?/)[1]);const h=this._getPixelPerImage(i),u=d+this.deltaY;if(h)if(Math.abs(u)>=h){const e=Math.round(u/h);so(i,{delta:s?-e:e,volumeId:c,debounceLoading:r,loop:l}),this.deltaY=u%h}else this.deltaY=u}_getPixelPerImage(e){const{element:t}=e,n=e.getNumberOfSlices();return Math.max(2,t.offsetHeight/Math.max(n,8))}}ae(kf,"toolName",void 0),kf.toolName="StackScroll";const Uf=kf;function Vf(e,t){return 3===e[0].length?function(e,t){const[n,o]=e,[i,a]=t,r=Sn.vec3.sub(Sn.vec3.create(),o,n),s=Sn.vec3.sub(Sn.vec3.create(),i,a),l=Sn.vec3.dot(r,s)/(Sn.vec3.length(r)*Sn.vec3.length(s));return 180*Math.acos(l)/Math.PI}(e,t):function(e,t){const[n,o]=e,[i,a]=t,r=Sn.vec2.sub(Sn.vec2.create(),o,n),s=Sn.vec2.sub(Sn.vec2.create(),i,a),l=Sn.vec2.dot(r,s)/(Sn.vec2.length(r)*Sn.vec2.length(s));return Math.acos(l)*(180/Math.PI)}(e,t)}class Wf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,startPoints:o}=e.detail,i=n.world,a=o.world,r=(0,oe.getEnabledElement)(t),{viewport:s}=r,l=s.getCamera(),d=[.5*t.clientWidth,.5*t.clientHeight],c=s.canvasToWorld(d);let h=Vf([a,c],[c,i]);const{viewPlaneNormal:u,viewUp:g}=l,v=Sn.vec3.sub(Sn.vec3.create(),c,a),m=Sn.vec3.sub(Sn.vec3.create(),c,i),p=Sn.vec3.cross(Sn.vec3.create(),v,m);if(Sn.vec3.dot(u,p)>0&&(h=-h),!Number.isNaN(h)){if(s instanceof oe.BaseVolumeViewport){const e=h*Math.PI/180,t=Sn.mat4.identity(new Float32Array(16));Sn.mat4.rotate(t,t,e,u);const n=Sn.vec3.transformMat4(Sn.vec3.create(),g,t);s.setCamera({viewUp:n})}else{const{rotation:e}=s.getViewPresentation();s.setViewPresentation({rotation:e+h})}s.render()}}}ae(Wf,"toolName",void 0),Wf.toolName="PlanarRotate";const Hf=Wf;class Bf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1,scrollSlabs:!1}}),ae(this,"_configuration",void 0)}mouseWheelCallback(e){const{wheel:t,element:n}=e.detail,{direction:o}=t,{invert:i}=this.configuration,{viewport:a}=(0,oe.getEnabledElement)(n),r=o*(i?-1:1),s=this.getTargetId(a),l=oe.utilities.getVolumeId(s);so(a,{delta:r,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:l,scrollSlabs:this.configuration.scrollSlabs})}}ae(Bf,"toolName",void 0),Bf.toolName="StackScrollMouseWheel";const Ff=Bf,Gf={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]};class qf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:Gf.Z,rotateIncrementDegrees:30}}),ae(this,"_configuration",void 0)}mouseWheelCallback(e){const{element:t,wheel:n}=e.detail,o=(0,oe.getEnabledElement)(t),{viewport:i}=o,{direction:a,rotateIncrementDegrees:r}=this.configuration,s=i.getCamera(),{viewUp:l,position:d,focalPoint:c}=s,{direction:h}=n,[u,g,v]=c,[m,p,f]=a,w=h*(r*Math.PI)/180,I=[0,0,0],E=[0,0,0],C=[0,0,0],_=Sn.mat4.identity(new Float32Array(16));Sn.mat4.translate(_,_,[u,g,v]),Sn.mat4.rotate(_,_,w,[m,p,f]),Sn.mat4.translate(_,_,[-u,-g,-v]),Sn.vec3.transformMat4(I,d,_),Sn.vec3.transformMat4(E,c,_),Sn.mat4.identity(_),Sn.mat4.rotate(_,_,w,[m,p,f]),Sn.vec3.transformMat4(C,l,_),i.setCamera({position:I,viewUp:C,focalPoint:E}),i.render()}}ae(qf,"toolName",void 0),qf.toolName="VolumeRotateMouseWheel";const zf=qf;class jf extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}),ae(this,"_bounds",void 0)}mouseClickCallback(e){const{element:t,currentPoints:n}=e.detail,o=(0,oe.getEnabledElement)(t),{viewport:i,renderingEngine:a}=o,r=this.getTargetId(i);if(!r.startsWith("volumeId"))throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");const s=oe.utilities.getVolumeId(r);let l=-1/0;const d=El(i,n.world,s,((e,t)=>{if(e>l)return l=e,t}));if(!d||!d.length)return;const{targetViewportIds:c,toolGroupId:h}=this.configuration;a.getViewports().filter((e=>{if((null==c?void 0:c.indexOf(e.id))>=0)return!0;const t=Vn(e.id,a.id);return!(!h||h!==(null==t?void 0:t.id))})).forEach((e=>{e instanceof oe.VolumeViewport?fd(e,d):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")}))}}ae(jf,"toolName",void 0),jf.toolName="MIPJumpToClickTool";const Kf=jf,{transformWorldToIndex:Yf}=oe.utilities;class Xf extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Jf}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;mr(o),this.isDrawing=!0;const{viewPlaneNormal:l,viewUp:d,position:c}=r.getCamera(),h=this.getReferencedImageId(r,i,l,d),u={highlighted:!0,invalidated:!0,metadata:{...r.getViewReference({points:[i]}),toolName:this.getToolName(),referencedImageId:h,viewUp:d,cameraPosition:c},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};gt(u,o);const g=Fi(o,this.getToolName());return this.editData={annotation:u,viewportIdsToRender:g,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),io(g),u})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l]=r.handles.points,d=a.worldToCanvas(s),c=a.worldToCanvas(l),h={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}};return es([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]])<=o})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),mr(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o),this.editData=null,this.isDrawing=!1})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles;c.annotationUID=r;const{color:v,lineWidth:m,lineDash:p,shadow:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),w=u.map((e=>a.worldToCanvas(e)));let I;if(h.cachedStats[l]&&null!=h.cachedStats[l].unit?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(h.cachedStats[l]={length:null,unit:null},this._calculateCachedStats(o,d,e)),!Re(r))continue;ue(o)||this.editData||null===g||(I=[w[g]]),I&&Ar(t,r,"0",w,{color:v,lineDash:p,lineWidth:m});const E="".concat(r,"-line");if(Zr(t,r,"1",w[0],w[1],{color:v,width:m,lineDash:p,shadow:f},E),i=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;const C=this.getLinkedTextBoxStyle(c,o);if(!C.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const _=this.configuration.getTextLines(h,l);if(!h.handles.textBox.hasMoved){const e=ns(w);h.handles.textBox.worldPosition=a.canvasToWorld(e)}const b=a.worldToCanvas(h.handles.textBox.worldPosition),T=Qr(t,r,"1",_,b,w,{},C),{x:D,y:S,width:y,height:M}=T;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,S]),topRight:a.canvasToWorld([D+y,S]),bottomLeft:a.canvasToWorld([D,S+M]),bottomRight:a.canvasToWorld([D+y,S+M])}}return i})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}_calculateCachedStats(e,t,n){const o=e.data,{element:i}=n.viewport,a=o.handles.points[0],r=o.handles.points[1],{cachedStats:s}=o,l=Object.keys(s);for(let e=0;e<l.length;e++){const n=l[e],o=this.getTargetIdImage(n,t);if(!o)continue;const{imageData:i,dimensions:d}=o,c=Yf(i,a),h=Yf(i,r),u=[c,h],{scale:g,lengthUnits:v}=Ln(o,u),m=this._calculateLength(a,r)/g;this._isInsideVolume(c,h,d)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,s[n]={length:m,lengthUnits:v}}return e.invalidated=!1,Qe(e,i),s}_isInsideVolume(e,t,n){return oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n)}}function Jf(e,t){const n=e.cachedStats[t],{length:o,unit:i}=n;if(null!=o&&!isNaN(o))return["".concat(Qd(o)," ").concat(i)]}ae(Xf,"toolName",void 0),Xf.toolName="Length";const Zf=Xf;var $f=E(847),Qf=E.n($f);const{RENDERING_DEFAULTS:ew}=oe.CONSTANTS;function tw(){return"rgb(0, 200, 0)"}function nw(){return!0}function ow(){return!0}function iw(){return!0}class aw extends Kr{constructor(){var e,t,n,o;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(i,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!1,viewportIndicatorsConfig:{radius:5,x:null,y:null},autoPan:{enabled:!1,panSize:10},referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:oe.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}}),ae(this,"toolCenter",[0,0,0]),ae(this,"_getReferenceLineColor",void 0),ae(this,"_getReferenceLineControllable",void 0),ae(this,"_getReferenceLineDraggableRotatable",void 0),ae(this,"_getReferenceLineSlabThicknessControlsOn",void 0),ae(this,"editData",void 0),ae(this,"initializeViewport",(e=>{let{renderingEngineId:t,viewportId:n}=e;const o=(0,oe.getEnabledElementByIds)(n,t),{FrameOfReferenceUID:i,viewport:a}=o,{element:r}=a,{position:s,focalPoint:l,viewPlaneNormal:d}=a.getCamera();let c=this._getAnnotations(o);return c=this.filterInteractableAnnotationsForElement(r,c),c.length&&mt(c[0].annotationUID),gt({highlighted:!1,metadata:{cameraPosition:[...s],cameraFocalPoint:[...l],FrameOfReferenceUID:i,toolName:this.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:this.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:n}},r),{normal:d,point:a.canvasToWorld([a.canvas.clientWidth/2,a.canvas.clientHeight/2])}})),ae(this,"_getViewportsInfo",(()=>ao(this.toolGroupId).viewportsInfo)),ae(this,"resetCrosshairs",(()=>{const e=this._getViewportsInfo();e.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const o=(0,oe.getEnabledElementByIds)(t,n),i=o.viewport;i.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),i.resetSlabThickness();const{element:a}=i;let r=this._getAnnotations(o);r=this.filterInteractableAnnotationsForElement(a,r),r.length&&mt(r[0].annotationUID),i.render()})),this.computeToolCenter(e)})),ae(this,"computeToolCenter",(e=>{if(!e.length||1===e.length)return void console.warn("For crosshairs to operate, at least two viewports must be given.");const[t,n,o]=e,{normal:i,point:a}=this.initializeViewport(t),{normal:r,point:s}=this.initializeViewport(n);let l=[0,0,0],d=Sn.vec3.create();o?({normal:l,point:d}=this.initializeViewport(o)):(Sn.vec3.add(d,a,s),Sn.vec3.scale(d,d,.5),Sn.vec3.cross(l,i,r));const c=oe.utilities.planar.planeEquation(i,a),h=oe.utilities.planar.planeEquation(r,s),u=oe.utilities.planar.planeEquation(l,d);this.toolCenter=oe.utilities.planar.threePlaneIntersection(c,h,u),io(e.map((e=>{let{viewportId:t}=e;return t})))})),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.world,a=(0,oe.getEnabledElement)(n),{viewport:r}=a;this._jump(a,i);const s=this._getAnnotations(a),l=this.filterInteractableAnnotationsForElement(r.element,s),{data:d}=l[0],{rotationPoints:c}=d.handles,h=[];for(let e=0;e<c.length-1;++e){const t=c[e][1],n=this._getReferenceLineControllable(t.id),o=this._getReferenceLineDraggableRotatable(t.id);n&&o&&(h.push(t.id),e++)}return d.activeViewportIds=[...h],d.handles.activeOperation=1,e.preventDefault(),mr(n),this._activateModify(n),l[0]})),ae(this,"cancel",(()=>{console.log("Not implemented yet")})),ae(this,"handleSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0,this._activateModify(o),mr(o),e.preventDefault()})),ae(this,"isPointNearTool",((e,t,n,o)=>!!this._pointNearTool(e,t,n,6))),ae(this,"toolSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o;t.highlighted=!0,this._activateModify(i),mr(i),e.preventDefault()})),ae(this,"onCameraModified",(e=>{var t;const n=e.detail,{element:o}=n,i=(0,oe.getEnabledElement)(o),{renderingEngine:a}=i,r=i.viewport,s=this._getAnnotations(i),l=this.filterInteractableAnnotationsForElement(o,s)[0];if(!l)return;const d=r.getCamera(),c=l.metadata.cameraPosition,h=[0,0,0];Il().subtract(d.position,c,h);const u=l.metadata.cameraFocalPoint,g=[0,0,0];Il().subtract(d.focalPoint,u,g),l.metadata.cameraPosition=[...d.position],l.metadata.cameraFocalPoint=[...d.focalPoint];const v=this._getReferenceLineControllable(r.id),m=this._getReferenceLineDraggableRotatable(r.id);if(!oe.utilities.isEqual(d.position,c,.001)&&v&&m){let e=!1;oe.utilities.isEqual(h,g,.001)||(e=!0);const t=Math.abs(Il().dot(h,d.viewPlaneNormal))<.01;e||t||(this.toolCenter[0]+=h[0],this.toolCenter[1]+=h[1],this.toolCenter[2]+=h[2])}null!==(t=this.configuration.autoPan)&&void 0!==t&&t.enabled&&Vn(r.id,a.id).getViewportIds().filter((e=>e!==r.id)).forEach((e=>{this._autoPanViewportIfNecessary(e,a)}));const p=Fi(o,this.getToolName(),!1);io(p)})),ae(this,"onResetCamera",(e=>{this.resetCrosshairs()})),ae(this,"mouseMoveCallback",((e,t)=>{const{element:n,currentPoints:o}=e.detail,i=o.canvas;let a=!1;for(let e=0;e<t.length;e++){const o=t[e];if(ue(o))continue;const{data:r,highlighted:s}=o;if(!r.handles)continue;const l=r.handles.activeOperation,d=r.activeViewportIds&&r.activeViewportIds.length>0?[...r.activeViewportIds]:[];r.activeViewportIds=[],r.handles.activeOperation=null;let c=!1;c=!!this.getHandleNearImagePoint(n,o,i,6)||this._pointNearTool(n,o,i,6),c&&!s||!c&&s?(o.highlighted=!s,a=!0):r.handles.activeOperation===l&&this._areViewportIdArraysEqual(r.activeViewportIds,d)||(a=!0)}return a})),ae(this,"filterInteractableAnnotationsForElement",((e,t)=>{if(!t||!t.length)return[];const n=(0,oe.getEnabledElement)(e),{viewportId:o}=n;return t.filter((e=>e.data.viewportId===o))})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o,renderingEngine:i}=e,{element:a}=o,r=this._getAnnotations(e),s=o.getCamera(),l=this.filterInteractableAnnotationsForElement(a,r)[0];if(null==r||!r.length||null==l||!l.data)return n;const d=l.annotationUID,{clientWidth:c,clientHeight:h}=o.canvas,u=Math.sqrt(c*c+h*h),g=Math.min(c,h),v=l.data,m=o.worldToCanvas(this.toolCenter),p=this._filterAnnotationsByUniqueViewportOrientations(e,r),f=[],w=[0,0,c,h];p.forEach((e=>{const{data:t}=e;t.handles.toolCenter=this.toolCenter;const n=i.getViewport(t.viewportId),a=n.getCamera(),r=this._getReferenceLineControllable(n.id),l=this._getReferenceLineDraggableRotatable(n.id),d=this._getReferenceLineSlabThicknessControlsOn(n.id),{clientWidth:c,clientHeight:h}=n.canvas,v=Math.sqrt(c*c+h*h),I=[.5*c,.5*h],E=n.canvasToWorld(I),C=[0,0,0];Il().cross(s.viewPlaneNormal,a.viewPlaneNormal,C),Il().normalize(C),Il().multiplyScalar(C,v);const _=[0,0,0];Il().add(E,C,_);const b=[0,0,0];Il().subtract(E,C,b);const T=o.worldToCanvas(_),D=o.worldToCanvas(E),S=Sn.vec2.create();Sn.vec2.subtract(S,T,D),Sn.vec2.normalize(S,S);const y=Sn.vec2.create();Sn.vec2.scale(y,S,100*u);const M=Sn.vec2.create();Sn.vec2.scale(M,S,.4*g);const x=Sn.vec2.create();Sn.vec2.scale(x,S,.2*g);const O=Sn.vec2.create(),P=this.configuration.referenceLinesCenterGapRadius;Sn.vec2.scale(O,S,2===p.length?P:0);const A=Sn.vec2.create(),R=Sn.vec2.create(),L=Sn.vec2.create(),N=Sn.vec2.create();let k=Sn.vec2.clone(m);l&&r||(k=Sn.vec2.clone(D)),Sn.vec2.add(A,k,O),Sn.vec2.add(R,k,y),Sn.vec2.subtract(L,k,O),Sn.vec2.subtract(N,k,y),fl(A,R,w),fl(L,N,w);const U=Sn.vec2.create();Sn.vec2.subtract(U,m,M);const V=Sn.vec2.create();Sn.vec2.add(V,m,M);let W=Sn.vec2.clone(m);!l&&d&&(W=Sn.vec2.clone(D));let H=[...this.toolCenter];!l&&d&&(H=[...E]);const B=[0,0,0];Il().subtract(_,b,B),Il().normalize(B);const{viewPlaneNormal:F}=s,{matrix:G}=Qf().buildFromDegree().rotate(90,F),q=[0,0,0];Sn.vec3.transformMat4(q,B,G);const z=n.getSlabThickness(),j=[...q];Il().multiplyScalar(j,z);const K=[0,0,0];Il().add(H,j,K);const Y=o.worldToCanvas(K),X=Sn.vec2.create();Sn.vec2.subtract(X,W,Y);const J=Sn.vec2.create();Sn.vec2.subtract(J,W,y),Sn.vec2.add(J,J,X);const Z=Sn.vec2.create();Sn.vec2.add(Z,W,y),Sn.vec2.add(Z,Z,X),fl(J,Z,w);const $=Sn.vec2.create();Sn.vec2.add($,W,y),Sn.vec2.subtract($,$,X);const Q=Sn.vec2.create();Sn.vec2.subtract(Q,W,y),Sn.vec2.subtract(Q,Q,X),fl($,Q,w);const ee=Sn.vec2.create(),te=Sn.vec2.create(),ne=Sn.vec2.create(),oe=Sn.vec2.create();Sn.vec2.subtract(ee,W,x),Sn.vec2.add(ee,ee,X),Sn.vec2.add(te,W,x),Sn.vec2.add(te,te,X),Sn.vec2.subtract(ne,W,x),Sn.vec2.subtract(ne,ne,X),Sn.vec2.add(oe,W,x),Sn.vec2.subtract(oe,oe,X),f.push([n,A,R,L,N,J,Z,$,Q,U,V,ee,te,ne,oe])}));const I=[],E=[],C=this._getReferenceLineColor(o.id),_=void 0!==C?C:"rgb(200, 200, 200)";if(f.forEach(((e,n)=>{var i,a;const r=e[0],s=this._getReferenceLineColor(r.id),l=this._getReferenceLineControllable(r.id),c=this._getReferenceLineDraggableRotatable(r.id)||(null===(i=this.configuration.mobile)||void 0===i?void 0:i.enabled),h=this._getReferenceLineSlabThicknessControlsOn(r.id)||(null===(a=this.configuration.mobile)||void 0===a?void 0:a.enabled),u=v.activeViewportIds.find((e=>e===r.id));let g=void 0!==s?s:"rgb(200, 200, 200)",m=1;const p=null!==v.handles.activeOperation&&1===v.handles.activeOperation&&u;p&&(m=2.5);let f="".concat(n);if(l&&c?(f="".concat(n,"One"),Zr(t,d,f,e[1],e[2],{color:g,lineWidth:m}),f="".concat(n,"Two"),Zr(t,d,f,e[3],e[4],{color:g,lineWidth:m})):Zr(t,d,f,e[2],e[4],{color:g,lineWidth:m}),l){var w;g=void 0!==s?s:"rgb(200, 200, 200)";const i=2===v.handles.activeOperation,a=[e[9],e[10]],l=[o.canvasToWorld(e[9]),r,e[1],e[2]],m=[o.canvasToWorld(e[10]),r,e[3],e[4]];I.push(l,m);const U=3===v.handles.activeOperation,V=[e[11],e[12],e[13],e[14]],W=[o.canvasToWorld(e[11]),r,e[5],e[6]],H=[o.canvasToWorld(e[12]),r,e[5],e[6]],B=[o.canvasToWorld(e[13]),r,e[7],e[8]],F=[o.canvasToWorld(e[14]),r,e[7],e[8]];if(E.push(W,H,B,F),(p||null!==(w=this.configuration.mobile)&&void 0!==w&&w.enabled)&&!i&&!U&&c&&h){var C,_,b,T,D,S,y,M;let e="".concat(n,"One");Ar(t,d,e,a,{color:g,handleRadius:null!==(C=this.configuration.mobile)&&void 0!==C&&C.enabled?null===(_=this.configuration.mobile)||void 0===_?void 0:_.handleRadius:3,opacity:null!==(b=this.configuration.mobile)&&void 0!==b&&b.enabled?null===(T=this.configuration.mobile)||void 0===T?void 0:T.opacity:1,type:"circle"}),e="".concat(n,"Two"),Ar(t,d,e,V,{color:g,handleRadius:null!==(D=this.configuration.mobile)&&void 0!==D&&D.enabled?null===(S=this.configuration.mobile)||void 0===S?void 0:S.handleRadius:3,opacity:null!==(y=this.configuration.mobile)&&void 0!==y&&y.enabled?null===(M=this.configuration.mobile)||void 0===M?void 0:M.opacity:1,type:"rect"})}else if(p&&!i&&!U&&c){var x,O,P,A;const e="".concat(n);Ar(t,d,e,a,{color:g,handleRadius:null!==(x=this.configuration.mobile)&&void 0!==x&&x.enabled?null===(O=this.configuration.mobile)||void 0===O?void 0:O.handleRadius:3,opacity:null!==(P=this.configuration.mobile)&&void 0!==P&&P.enabled?null===(A=this.configuration.mobile)||void 0===A?void 0:A.opacity:1,type:"circle"})}else if(u&&!i&&!U&&h){var R,L,N,k;const e="".concat(n);Ar(t,d,e,V,{color:g,handleRadius:null!==(R=this.configuration.mobile)&&void 0!==R&&R.enabled?null===(L=this.configuration.mobile)||void 0===L?void 0:L.handleRadius:3,opacity:null!==(N=this.configuration.mobile)&&void 0!==N&&N.enabled?null===(k=this.configuration.mobile)||void 0===k?void 0:k.opacity:1,type:"rect"})}else if(i&&c){const e="".concat(n);Ar(t,d,e,a,{color:g,handleRadius:2,fill:g,type:"circle"})}else U&&u&&h&&Ar(t,d,f,V,{color:g,handleRadius:2,fill:g,type:"rect"});r.getSlabThickness()>.5&&h&&(f="".concat(n,"STOne"),Zr(t,d,f,e[5],e[6],{color:g,width:1,lineDash:[2,3]}),f="".concat(n,"STTwo"),Zr(t,d,f,e[7],e[8],{color:g,width:e,lineDash:[2,3]}))}})),n=!0,v.handles.rotationPoints=I,v.handles.slabThicknessPoints=E,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:e}=this.configuration,n=[c*((null==e?void 0:e.xOffset)||.95),h*((null==e?void 0:e.yOffset)||.05)],o=(null==e?void 0:e.circleRadius)||.01*u;ar(t,d,"0",n,o,{color:_,fill:_})}return n})),ae(this,"_getAnnotations",(e=>{const{viewport:t}=e,n=st(this.getToolName(),t.element)||[],o=this._getViewportsInfo().map((e=>{let{viewportId:t}=e;return t}));return n.filter((e=>{const{data:t}=e;return o.includes(t.viewportId)}))})),ae(this,"_onNewVolume",(e=>{const t=this._getViewportsInfo();this.computeToolCenter(t)})),ae(this,"_areViewportIdArraysEqual",((e,t)=>e.length===t.length&&(e.forEach((e=>{let n=!1;for(let o=0;o<t.length;++o)if(e===t[o]){n=!0;break}if(!1===n)return!1})),!0))),ae(this,"_getAnnotationsForViewportsWithDifferentCameras",((e,t)=>{const{viewportId:n,renderingEngine:o,viewport:i}=e,a=t.filter((e=>e.data.viewportId!==n));if(!a||!a.length)return[];const r=i.getCamera(),{viewPlaneNormal:s,position:l}=r,d=a.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera();return!(oe.utilities.isEqual(n.viewPlaneNormal,s,.01)&&oe.utilities.isEqual(n.position,l,1))}));return d})),ae(this,"_filterViewportWithSameOrientation",((e,t,n)=>{const{renderingEngine:o}=e,{data:i}=t,a=o.getViewport(i.viewportId),r=n.filter((e=>{const{data:t}=e,n=o.getViewport(t.viewportId);return!0===this._getReferenceLineControllable(n.id)}));if(!r||!r.length)return[];const s=a.getCamera(),l=s.viewPlaneNormal;return Il().normalize(l),r.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera(),i=n.viewPlaneNormal;return Il().normalize(i),oe.utilities.isEqual(l,i,.01)&&oe.utilities.isEqual(s.viewUp,n.viewUp,.01)}))})),ae(this,"_filterAnnotationsByUniqueViewportOrientations",((e,t)=>{const{renderingEngine:n,viewport:o}=e,i=o.getCamera().viewPlaneNormal;Il().normalize(i);const a=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0===a})),r=[];for(let e=0;e<a.length;++e){const t=a[e],{viewportId:o}=t.data,s=n.getViewport(o).getCamera(),l=s.viewPlaneNormal;if(Il().normalize(l),oe.utilities.isEqual(i,l,.01)||oe.utilities.isOpposite(i,l,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();oe.utilities.isEqual(i.viewPlaneNormal,s.viewPlaneNormal,.01)&&oe.utilities.isEqual(i.position,s.position,1)&&(d=!0)}d||r.push(t)}const s=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0!==a}));for(let e=0;e<s.length;++e){const t=s[e],{viewportId:o}=t.data,a=n.getViewport(o).getCamera(),l=a.viewPlaneNormal;if(Il().normalize(l),oe.utilities.isEqual(i,l,.01)||oe.utilities.isOpposite(i,l,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();oe.utilities.isEqual(i.viewPlaneNormal,a.viewPlaneNormal,.01)&&oe.utilities.isEqual(i.position,a.position,1)&&(d=!0)}d||r.push(t)}const l=this._getAnnotationsForViewportsWithDifferentCameras(e,t);for(let e=0;e<l.length;++e){const t=l[e];if(r.some((e=>e===t)))continue;const{viewportId:o}=t.data,a=n.getViewport(o).getCamera(),s=a.viewPlaneNormal;if(Il().normalize(s),oe.utilities.isEqual(i,s,.01)||oe.utilities.isOpposite(i,s,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();oe.utilities.isEqual(i.viewPlaneNormal,a.viewPlaneNormal,.01)&&oe.utilities.isEqual(i.position,a.position,1)&&(d=!0)}d||r.push(t)}return r})),ae(this,"_checkIfViewportsRenderingSameScene",((e,t)=>{const n=e.getActors(),o=t.getActors();let i=!0;return n.forEach((e=>{n.length===o.length&&void 0!==o.find((t=>{let{uid:n}=t;return n===e.uid}))||(i=!1)})),i})),ae(this,"_jump",((e,t)=>{Ke.isInteractingWithTool=!0;const{viewport:n,renderingEngine:o}=e,i=this._getAnnotations(e),a=[0,0,0];Il().subtract(t,this.toolCenter,a);const r=this._getAnnotationsForViewportsWithDifferentCameras(e,i).filter((e=>{const{data:t}=e,i=o.getViewport(t.viewportId),a=this._checkIfViewportsRenderingSameScene(n,i);return this._getReferenceLineControllable(i.id)&&this._getReferenceLineDraggableRotatable(i.id)&&a}));return 0===r.length?(Ke.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(o,r,a),Ke.isInteractingWithTool=!1,!0)})),ae(this,"_activateModify",(e=>{var t;Ke.isInteractingWithTool=!(null!==(t=this.configuration.mobile)&&void 0!==t&&t.enabled),e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t;this.editData.annotation.data.handles.activeOperation=null,this.editData.annotation.data.activeViewportIds=[],this._deactivateModify(n),vr(n),this.editData=null;const o=Fi(n,this.getToolName(),!1);io(o)})),ae(this,"_dragCallback",(e=>{const t=e.detail,n=t.deltaPoints.world;if(Math.abs(n[0])<.001&&Math.abs(n[1])<.001&&Math.abs(n[2])<.001)return;const{element:o}=t,i=(0,oe.getEnabledElement)(o),{renderingEngine:a,viewport:r}=i,s=this._getAnnotations(i),l=this.filterInteractableAnnotationsForElement(o,s)[0];if(!l)return;const{handles:d}=l.data,{currentPoints:c}=e.detail,h=c.canvas;if(1===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i&&l.data.activeViewportIds.find((e=>e===n.id))}));this._applyDeltaShiftToSelectedViewportCameras(a,e,n)}else if(2===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i})),n=Sn.vec2.create(),o=Sn.vec2.create(),l=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],d=r.worldToCanvas(l),c=t.currentPoints.canvas,h=Sn.vec2.create();Sn.vec2.sub(h,c,t.deltaPoints.canvas),Sn.vec2.sub(n,h,d),Sn.vec2.sub(o,c,d);let u=Sn.vec2.angle(n,o);this._isClockWise(d,h,c)&&(u*=-1),u=Math.round(100*u)/100;const g=r.getCamera().viewPlaneNormal,{matrix:v}=Qf().buildFromRadian().translate(l[0],l[1],l[2]).rotate(u,g).translate(-l[0],-l[1],-l[2]),m=[];e.forEach((e=>{const{data:t}=e;t.handles.toolCenter=l;const n=a.getViewport(t.viewportId),o=n.getCamera(),{viewUp:i,position:r,focalPoint:s}=o;i[0]+=r[0],i[1]+=r[1],i[2]+=r[2],Sn.vec3.transformMat4(s,s,v),Sn.vec3.transformMat4(r,r,v),Sn.vec3.transformMat4(i,i,v),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2],n.setCamera({position:r,viewUp:i,focalPoint:s}),m.push(n.id)})),a.renderViewports(m)}else if(3===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineSlabThicknessControlsOn(n.id);return!0===o&&!0===i&&l.data.activeViewportIds.find((e=>e===n.id))}));if(0===e.length)return;const o=this._filterViewportWithSameOrientation(i,e[0],s),d=[];d.push(r.id),o.forEach((e=>{const{data:o}=e,i=a.getViewport(o.viewportId),s=i.getCamera().viewPlaneNormal,c=Il().dot(n,s),u=[...s];if(Il().multiplyScalar(u,c),Math.abs(u[0])>.001||Math.abs(u[1])>.001||Math.abs(u[2])>.001){const e=Math.sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]),n=t.lastPoints.world,o=[0,0,0],c=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(i.id)){const{rotationPoints:e}=this.editData.annotation.data.handles,t=e.filter((e=>e[1].uid===i.id));if(2===t.length){const e=r.canvasToWorld(t[0][3]),n=r.canvasToWorld(t[1][3]);Il().add(e,n,c),Il().multiplyScalar(c,.5)}}Il().subtract(n,c,o);const g=Il().dot(o,s),v=[...s];Il().multiplyScalar(v,g);const m=[v[0],v[1],v[2]];Sn.vec3.normalize(m,m);const p=[u[0],u[1],u[2]];Sn.vec3.normalize(p,p);let f=i.getSlabThickness();oe.utilities.isOpposite(m,p,.001)?f-=e:f+=e,f=Math.abs(f),f=Math.max(ew.MINIMUM_SLAB_THICKNESS,f),this._pointNearReferenceLine(l,h,6,i)&&(f=ew.MINIMUM_SLAB_THICKNESS),Vn(i.id,a.id).getToolInstance(this.getToolName()).setSlabThickness(i,f),d.push(i.id)}})),a.renderViewports(d)}})),ae(this,"_pointNearReferenceLine",((e,t,n,o)=>{const{data:i}=e,{rotationPoints:a}=i.handles;for(let e=0;e<a.length-1;++e){const i=a[e][1];if(i.id!==o.id)continue;if(!this._getReferenceLineControllable(i.id))continue;const r={start:{x:a[e][2][0],y:a[e][2][1]},end:{x:a[e][3][0],y:a[e][3][1]}},s=es([r.start.x,r.start.y],[r.end.x,r.end.y],[t[0],t[1]]),l={start:{x:a[e+1][2][0],y:a[e+1][2][1]},end:{x:a[e+1][3][0],y:a[e+1][3][1]}},d=es([l.start.x,l.start.y],[l.end.x,l.end.y],[t[0],t[1]]);if(s<=n||d<=n)return!0;e++}return!1})),this._getReferenceLineColor=(null===(e=i.configuration)||void 0===e?void 0:e.getReferenceLineColor)||tw,this._getReferenceLineControllable=(null===(t=i.configuration)||void 0===t?void 0:t.getReferenceLineControllable)||nw,this._getReferenceLineDraggableRotatable=(null===(n=i.configuration)||void 0===n?void 0:n.getReferenceLineDraggableRotatable)||ow,this._getReferenceLineSlabThicknessControlsOn=(null===(o=i.configuration)||void 0===o?void 0:o.getReferenceLineSlabThicknessControlsOn)||iw}onSetToolActive(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this.computeToolCenter(e)}onSetToolPassive(){const e=this._getViewportsInfo();this.computeToolCenter(e)}onSetToolEnabled(){const e=this._getViewportsInfo();this.computeToolCenter(e)}onSetToolDisabled(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),e.forEach((e=>{let{renderingEngineId:t,viewportId:n}=e;const o=(0,oe.getEnabledElementByIds)(n,t);if(!o)return;const i=this._getAnnotations(o);null!=i&&i.length&&i.forEach((e=>{mt(e.annotationUID)}))}))}getHandleNearImagePoint(e,t,n,o){const i=(0,oe.getEnabledElement)(e),{viewport:a}=i;let r=this._getRotationHandleNearImagePoint(a,t,n,o);return null!==r?r:(r=this._getSlabThicknessHandleNearImagePoint(a,t,n,o),null!==r?r:void 0)}_unsubscribeToViewportNewVolumeSet(e){e.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,oe.getEnabledElementByIds)(t,n),{element:i}=o;i.removeEventListener(oe.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_subscribeToViewportNewVolumeSet(e){e.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,oe.getEnabledElementByIds)(t,n),{element:i}=o;i.addEventListener(oe.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_autoPanViewportIfNecessary(e,t){const n=t.getViewport(e),{clientWidth:o,clientHeight:i}=n.canvas,a=n.worldToCanvas(this.toolCenter),r=this.configuration.autoPan.panSize,s=[a[0],a[1]];if(a[0]<0?s[0]=r:a[0]>o&&(s[0]=o-r),a[1]<0?s[1]=r:a[1]>i&&(s[1]=i-r),s[0]===a[0]&&s[1]===a[1])return;const l=n.canvasToWorld(s),d=[l[0]-this.toolCenter[0],l[1]-this.toolCenter[1],l[2]-this.toolCenter[2]],c=n.getCamera(),{focalPoint:h,position:u}=c,g=[u[0]-d[0],u[1]-d[1],u[2]-d[2]],v=[h[0]-d[0],h[1]-d[1],h[2]-d[2]];n.setCamera({focalPoint:v,position:g}),n.render()}setSlabThickness(e,t){let n;const{filterActorUIDsToSetSlabThickness:o}=this.configuration;o&&o.length>0&&(n=o);let i=this.configuration.slabThicknessBlendMode;t===ew.MINIMUM_SLAB_THICKNESS&&(i=oe.Enums.BlendModes.COMPOSITE),e.setBlendMode(i,n,!1),e.setSlabThickness(t,n)}_isClockWise(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])>0}_applyDeltaShiftToSelectedViewportCameras(e,t,n){t.forEach((t=>{this._applyDeltaShiftToViewportCamera(e,t,n)}))}_applyDeltaShiftToViewportCamera(e,t,n){const{data:o}=t,i=e.getViewport(o.viewportId),a=i.getCamera(),r=a.viewPlaneNormal,s=Il().dot(n,r),l=[...r];if(Il().multiplyScalar(l,s),Math.abs(l[0])>.001||Math.abs(l[1])>.001||Math.abs(l[2])>.001){const e=[0,0,0],t=[0,0,0];Il().add(a.focalPoint,l,e),Il().add(a.position,l,t),i.setCamera({focalPoint:e,position:t}),i.render()}}_getRotationHandleNearImagePoint(e,t,n,o){const{data:i}=t,{rotationPoints:a}=i.handles;for(let r=0;r<a.length;r++){const s=a[r][0],l=a[r][1];if(!this._getReferenceLineControllable(l.id))continue;if(!this._getReferenceLineDraggableRotatable(l.id))continue;const d=e.worldToCanvas(s);if(Sn.vec2.distance(n,d)<o)return i.handles.activeOperation=2,this.editData={annotation:t},s}return null}_getSlabThicknessHandleNearImagePoint(e,t,n,o){const{data:i}=t,{slabThicknessPoints:a}=i.handles;for(let r=0;r<a.length;r++){const s=a[r][0],l=a[r][1];if(!this._getReferenceLineControllable(l.id))continue;if(!this._getReferenceLineSlabThicknessControlsOn(l.id))continue;const d=e.worldToCanvas(s);if(Sn.vec2.distance(n,d)<o)return i.handles.activeOperation=3,i.activeViewportIds=[l.id],this.editData={annotation:t},s}return null}_pointNearTool(e,t,n,o){const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{clientWidth:r,clientHeight:s}=a.canvas,l=Math.sqrt(r*r+s*s),{data:d}=t,{rotationPoints:c}=d.handles,{slabThicknessPoints:h}=d.handles,u=[];for(let e=0;e<c.length-1;++e){const t=c[e][1],i=this._getReferenceLineControllable(t.id),a=this._getReferenceLineDraggableRotatable(t.id);if(!i||!a)continue;const r={start:{x:c[e][2][0],y:c[e][2][1]},end:{x:c[e][3][0],y:c[e][3][1]}},s=es([r.start.x,r.start.y],[r.end.x,r.end.y],[n[0],n[1]]),l={start:{x:c[e+1][2][0],y:c[e+1][2][1]},end:{x:c[e+1][3][0],y:c[e+1][3][1]}},h=es([l.start.x,l.start.y],[l.end.x,l.end.y],[n[0],n[1]]);(s<=o||h<=o)&&(u.push(t.id),d.handles.activeOperation=1),e++}for(let e=0;e<h.length-1;++e){const t=h[e][1];if(u.find((e=>e===t.id)))continue;const i=this._getReferenceLineControllable(t.id),a=this._getReferenceLineSlabThicknessControlsOn(t.id);if(!i||!a)continue;const r=h[e][2],s=h[e][3],c=Sn.vec2.create();Sn.vec2.add(c,r,s),Sn.vec2.scale(c,c,.5);const g=Sn.vec2.create();Sn.vec2.subtract(g,r,c),Sn.vec2.normalize(g,g);const v=Sn.vec2.create();Sn.vec2.scale(v,g,.05*l);const m=Sn.vec2.create(),p=Sn.vec2.create();Sn.vec2.add(m,c,v),Sn.vec2.subtract(p,c,v);const f={start:{x:m[0],y:m[1]},end:{x:r[0],y:r[1]}},w=es([f.start.x,f.start.y],[f.end.x,f.end.y],[n[0],n[1]]),I={start:{x:p[0],y:p[1]},end:{x:s[0],y:s[1]}},E=es([I.start.x,I.start.y],[I.end.x,I.end.y],[n[0],n[1]]);(w<=o||E<=o)&&(u.push(t.id),d.handles.activeOperation=null),e++}return d.activeViewportIds=[...u],this.editData={annotation:t},1===d.handles.activeOperation}}ae(aw,"toolName",void 0),aw.toolName="Crosshairs";const rw=aw,{EPSILON:sw}=oe.CONSTANTS;class lw extends zr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",showFullDimension:!1}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",{}),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"_init",(()=>{const e=(0,oe.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=Wi(t,this.getToolName());const n=e.getViewport(this.configuration.sourceViewportId);if(null==n||!n.getImageData())return;const{element:o}=n,{viewUp:i,viewPlaneNormal:a}=n.getCamera(),r=oe.utilities.getViewportImageCornersInWorld(n);let s=this.editData.annotation;const l=n.getFrameOfReferenceUID();if(s)this.editData.annotation.data.handles.points=r;else{const e={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...a],viewUp:[...i],FrameOfReferenceUID:l,referencedImageId:null},data:{handles:{points:r}}};gt(e,o),s=e}this.editData={sourceViewportId:n.id,renderingEngine:e,annotation:s},io(t.filter((e=>e.id!==n.id)).map((e=>e.id)))})),ae(this,"onSetToolEnabled",(()=>{this._init()})),ae(this,"onSetToolConfiguration",(()=>{this._init()})),ae(this,"onCameraModified",(e=>{this._init()})),ae(this,"renderAnnotation",((e,t)=>{var n;const{viewport:o}=e,{annotation:i,sourceViewportId:a}=this.editData;let r=!1;const{viewport:s}=(0,oe.getEnabledElementByViewportId)(a)||{};if(!s)return r;if(s.id===o.id)return r;if(!i||null==i||null===(n=i.data)||void 0===n||null===(n=n.handles)||void 0===n||!n.points)return r;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},d=i.data.handles.points[0],c=i.data.handles.points[1],h=i.data.handles.points[2],u=i.data.handles.points[3],{focalPoint:g,viewPlaneNormal:v,viewUp:m}=o.getCamera(),{viewPlaneNormal:p}=s.getCamera();if(this.isParallel(v,p))return r;const f=oe.utilities.planar.planeEquation(v,g),w=[d,h,c,u],I=[d,c,h,u];let E=w,C=Sn.vec3.subtract(Sn.vec3.create(),w[0],w[1]);C=Sn.vec3.normalize(Sn.vec3.create(),C);let _=Sn.vec3.subtract(Sn.vec3.create(),w[2],w[0]);_=Sn.vec3.normalize(Sn.vec3.create(),_);const b=Sn.vec3.cross(Sn.vec3.create(),C,_);if(this.isParallel(b,v))return r;this.isPerpendicular(C,v)&&(E=I);const T=oe.utilities.planar.linePlaneIntersection(E[0],E[1],f),D=oe.utilities.planar.linePlaneIntersection(E[2],E[3],f),{annotationUID:S}=i;l.annotationUID=S;const y=this.getStyle("lineWidth",l,i),M=this.getStyle("lineDash",l,i),x=this.getStyle("color",l,i),O=this.getStyle("shadow",l,i);let P=[T,D].map((e=>o.worldToCanvas(e)));if(this.configuration.showFullDimension&&(P=this.handleFullDimension(o,T,v,m,D,P)),P.length<2)return r;const A="".concat(S,"-line");return Zr(t,S,"1",P[0],P[1],{color:x,width:y,lineDash:M,shadow:O},A),r=!0,r})),ae(this,"isPerpendicular",((e,t)=>{const n=Sn.vec3.dot(e,t);return Math.abs(n)<sw}))}handleFullDimension(e,t,n,o,i,a){const r=e.getRenderingEngine(),s=this.getTargetId(e),l=this.getTargetIdImage(s,r),d=this.getReferencedImageId(e,t,n,o);if(d&&l)try{const{imageData:n,dimensions:o}=l,[r,s,c,h]=[n.indexToWorld([0,0,0]),n.indexToWorld([o[0]-1,0,0]),n.indexToWorld([o[0]-1,o[1]-1,0]),n.indexToWorld([0,o[1]-1,0])].map((e=>oe.utilities.worldToImageCoords(d,e))),[u,g]=[t,i].map((e=>oe.utilities.worldToImageCoords(d,e)));a=[[r,s],[s,c],[h,c],[r,h]].map((e=>{let[t,n]=e;return this.intersectInfiniteLines(t,n,u,g)})).filter((e=>e&&this.isInBound(e,o))).map((t=>{const n=oe.utilities.imageToWorldCoords(d,t);return e.worldToCanvas(n)}))}catch(e){console.log(e)}return a}intersectInfiniteLines(e,t,n,o){const[i,a]=e,[r,s]=t,[l,d]=n,[c,h]=o,u=s-a,g=i-r,v=r*a-i*s,m=h-d,p=l-c,f=c*d-l*h;if(!(Math.abs(u*p-m*g)<sw))return[(g*f-p*v)/(u*p-m*g),(m*v-u*f)/(u*p-m*g)]}isParallel(e,t){return Math.abs(Sn.vec3.dot(e,t))>1-sw}isInBound(e,t){return e[0]>=0&&e[0]<=t[0]&&e[1]>=0&&e[1]<=t[1]}}ae(lw,"toolName",void 0),lw.toolName="ReferenceLines";const dw=lw,{EPSILON:cw}=oe.CONSTANTS;class hw extends zr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"onSetToolEnabled",(()=>{this._init()})),ae(this,"onSetToolActive",(()=>{this._init()})),ae(this,"_init",(()=>{const e=this.configuration.sourceImageIds;if(null==e||!e.length)return void console.warn("OverlayGridTool: No sourceImageIds provided in configuration");const t=oe.metaData.get("imagePlaneModule",e[0]);if(!t)return void console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");const{frameOfReferenceUID:n}=t,o=ao(this.toolGroupId).viewportsInfo;if(null==o||!o.length)return void console.warn("OverlayGridTool: No viewports found");const i=st(this.getToolName(),n);if(null==i||!i.length){const t=e.map((e=>this.calculateImageIdPointSets(e)));gt({highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:n,referencedImageId:null},data:{viewportData:new Map,pointSets:t}},n)}io(o.map((e=>{let{viewportId:t}=e;return t})))})),ae(this,"calculateImageIdPointSets",(e=>{const{imagePositionPatient:t,rows:n,columns:o,rowCosines:i,columnCosines:a,rowPixelSpacing:r,columnPixelSpacing:s}=oe.metaData.get("imagePlaneModule",e),l=[...t],d=[...t],c=[...t],h=[...t];return Sn.vec3.scaleAndAdd(d,t,a,o*s),Sn.vec3.scaleAndAdd(c,t,i,n*r),Sn.vec3.scaleAndAdd(h,c,a,o*s),{pointSet1:[l,c,d,h],pointSet2:[l,d,c,h]}})),ae(this,"renderAnnotation",((e,t)=>{const n=this.configuration.sourceImageIds;let o=!1;if(null==n||!n.length)return o;const{viewport:i,FrameOfReferenceUID:a}=e;if(i.getImageIds().length<2)return o;const r=st(this.getToolName(),a);if(null==r||!r.length)return o;const s=r[0],{annotationUID:l}=s,{focalPoint:d,viewPlaneNormal:c}=i.getCamera(),h={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},u=this.getImageIdNormal(n[0]);if(this.isParallel(c,u))return o;const g=oe.utilities.planar.planeEquation(c,d),v=s.data.pointSets,m=s.data.viewportData;for(let e=0;e<n.length;e++){const{pointSet1:n,pointSet2:o}=v[e],a=m.get(i.id)||this.initializeViewportData(m,i.id);if(!a.pointSetsToUse[e]){let t=n,i=Sn.vec3.subtract(Sn.vec3.create(),n[0],n[1]);i=Sn.vec3.normalize(Sn.vec3.create(),i),this.isPerpendicular(i,c)&&(t=o),a.pointSetsToUse[e]=t,a.lineStartsWorld[e]=oe.utilities.planar.linePlaneIntersection(t[0],t[1],g),a.lineEndsWorld[e]=oe.utilities.planar.linePlaneIntersection(t[2],t[3],g)}const r=a.lineStartsWorld[e],d=a.lineEndsWorld[e];h.annotationUID=l;const u=this.getStyle("lineWidth",h,s),p=this.getStyle("lineDash",h,s),f=this.getStyle("color",h,s),w=this.getStyle("shadow",h,s),I=[r,d].map((e=>i.worldToCanvas(e))),E="".concat(l,"-line");Zr(t,l,"".concat(e),I[0],I[1],{color:f,width:u,lineDash:p,shadow:w},E)}return o=!0,o})),ae(this,"initializeViewportData",((e,t)=>(e.set(t,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),e.get(t)))),ae(this,"isPerpendicular",((e,t)=>{const n=Sn.vec3.dot(e,t);return Math.abs(n)<cw}))}isParallel(e,t){return Math.abs(Sn.vec3.dot(e,t))>1-cw}getImageIdNormal(e){const{imageOrientationPatient:t}=oe.metaData.get("imagePlaneModule",e),n=Sn.vec3.fromValues(t[0],t[1],t[2]),o=Sn.vec3.fromValues(t[3],t[4],t[5]);return Sn.vec3.cross(Sn.vec3.create(),n,o)}}ae(hw,"toolName",void 0),hw.toolName="OverlayGrid";const uw=hw;class gw extends zr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{opacity:.5}}),ae(this,"_init",(()=>{var e;const t=ao(this.toolGroupId).viewportsInfo;if(null==t||!t.length)return void console.warn(this.getToolName()+"Tool: No viewports found");const n=null===(e=(0,oe.getRenderingEngine)(t[0].renderingEngineId))||void 0===e?void 0:e.getViewport(t[0].viewportId);if(!n)return;const o=n.getFrameOfReferenceUID(),i=st(this.getToolName(),o);if(null==i||!i.length){const e=new Map;!function(e,t){t.forEach((t=>{var n;let{viewportId:o,renderingEngineId:i}=t;const a=null===(n=(0,oe.getRenderingEngine)(i))||void 0===n?void 0:n.getViewport(o);vw(e,a)}))}(e,t),gt({highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:e}},o)}io(t.map((e=>{let{viewportId:t}=e;return t})))})),ae(this,"onSetToolEnabled",(()=>{this._init()})),ae(this,"onCameraModified",(e=>{this._init()})),ae(this,"renderAnnotation",((e,t)=>{const{viewport:n,FrameOfReferenceUID:o}=e;let i=!1;const a=st(this.getToolName(),o);if(null==a||!a.length)return i;const r=a[0],{annotationUID:s}=r,l=r.data.actorsWorldPointsMap;vw(l,n);const d=n.getActors(),c=mw(n);return d.forEach((e=>{if(null==e||!e.clippingFilter)return;const o=l.get(e.uid);if(!o)return;if(!o.get(c))return;let i=1;const{worldPointsSet:a,color:r}=o.get(c);for(let o=0;o<a.length;o++){const l=a[o].map((e=>n.worldToCanvas(e))),d={color:r,fillColor:r,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},c=e.uid+"#"+i;lh(t,s,c,l,d),i++}})),i=!0,i}))}}function vw(e,t){const n=t.getActors(),o=mw(t);n.forEach((t=>{if(null==t||!t.clippingFilter)return;let n=e.get(t.uid);if(n||(n=new Map,e.set(t.uid,n)),!n.get(o)){const e=Ld(t.clippingFilter.getOutputData());if(!e)return;const i=function(e){function t(e){let t=Math.floor(255*e).toString(16);return 1===t.length&&(t="0"+t),t}return"#"+t(e[0])+t(e[1])+t(e[2])}(t.actor.getProperty().getColor());n.set(o,{worldPointsSet:e,color:i})}}))}function mw(e){const{viewPlaneNormal:t}=e.getCamera(),n=e.getCurrentImageIdIndex();return"".concat(e.id,"-").concat(kt(t),"-").concat(n)}ae(gw,"toolName",void 0),gw.toolName="SegmentationIntersection";const pw=gw;function fw(e,t,n,o){const i=Sn.vec3.create();Sn.vec3.cross(i,t,e);const a=Sn.vec3.fromValues(...n),r=Sn.vec3.fromValues(...o),s=Sn.vec3.create();Sn.vec3.subtract(s,a,r);const l=Sn.vec3.length(s);if(l<1e-4)return{worldWidth:0,worldHeight:0};const d=Sn.vec3.dot(s,i)/(l*Sn.vec3.length(i));return{worldWidth:Math.sqrt(1-d*d)*l,worldHeight:d*l}}const{transformWorldToIndex:ww}=oe.utilities;class Iw extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Ew,statsCalculator:cs}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",!1),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(n.canvas,(0,oe.getEnabledElement)(o)),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},initialRotation:r.getRotation()}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,centerWorld:i,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=Va(s.map((e=>a.worldToCanvas(e)))),[d,c]=l,h={left:Math.min(d[0],c[0])+o/2,top:Math.min(d[1],c[1])+o/2,width:Math.abs(d[0]-c[0])-o,height:Math.abs(d[1]-c[1])-o},u={left:Math.min(d[0],c[0])-o/2,top:Math.min(d[1],c[1])-o/2,width:Math.abs(d[0]-c[0])+o,height:Math.abs(d[1]-c[1])+o},g=this._pointInEllipseCanvas(h,n);return!(!this._pointInEllipseCanvas(u,n)||g)})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},mr(o),this._activateModify(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s,l,d,c,h,u=!1;if(n.worldPosition)u=!0;else{const{points:e}=a.handles,{viewport:t}=(0,oe.getEnabledElement)(i),{worldToCanvas:o,canvasToWorld:u}=t;r=e.findIndex((e=>e===n));const g=e.map(o);h=g[r],d=Math.abs(g[2][0]-g[3][0]),c=Math.abs(g[0][1]-g[1][1]),s=[(g[2][0]+g[3][0])/2,(g[0][1]+g[1][1])/2],l=u(s)}const g=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:g,handleIndex:r,canvasWidth:d,canvasHeight:c,centerWorld:l,originalHandleCanvas:h,movingTextBox:u},this._activateModify(i),mr(i);const v=(0,oe.getEnabledElement)(i),{renderingEngine:m}=v;io(g),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;o.highlighted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const{renderingEngine:l}=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o)})),ae(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,oe.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerWorld:h}=this.editData,u=s.worldToCanvas(h),{data:g}=d,v=Math.abs(i[0]-u[0]),m=Math.abs(i[1]-u[1]),p=[u[0],u[1]-m],f=[u[0],u[1]+m],w=[u[0]-v,u[1]],I=[u[0]+v,u[1]];g.handles.points=[l(p),l(f),l(w),l(I)],d.invalidated=!0,this.editData.hasMoved=!0,io(c)})),ae(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"_dragHandle",(e=>{const t=e.detail,{element:n}=t,{viewport:o}=(0,oe.getEnabledElement)(n),{canvasToWorld:i,worldToCanvas:a}=o,{annotation:r,canvasWidth:s,canvasHeight:l,handleIndex:d,centerWorld:c,originalHandleCanvas:h}=this.editData,u=o.worldToCanvas(c),{data:g}=r,{points:v}=g.handles,{currentPoints:m}=t,p=m.canvas;if(0===d||1===d){const e=Math.abs(p[1]-u[1]),t=[u[0],u[1]-e],n=[u[0],u[1]+e];v[0]=i(t),v[1]=i(n);const o=s/2+(p[0]-h[0]),a=[u[0]-o,u[1]],r=[u[0]+o,u[1]];v[2]=i(a),v[3]=i(r)}else{const e=Math.abs(p[0]-u[0]),t=[u[0]-e,u[1]],n=[u[0]+e,u[1]];v[2]=i(t),v[3]=i(n);const o=l/2+(p[1]-h[1]),a=[u[0],u[1]-o],r=[u[0],u[1]+o];v[0]=i(a),v[1]=i(r)}})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{handles:u}=h,{points:g,activeHandleIndex:v}=u;c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),w=g.map((e=>a.worldToCanvas(e))),I=Va(w),{centerPointRadius:E}=this.configuration;if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnits){if(o.invalidated&&(this._throttledCalculateCachedStats(o,a,d,e),a instanceof oe.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=oe.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=oe.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnits:null},this._calculateCachedStats(o,a,d);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let C;if(!Re(r))continue;ue(o)||this.editData||null===v||(C=[w[v]]),C&&Ar(t,r,"0",C,{color:m});const _="".concat(r,"-ellipse"),b="0";if(df(t,r,b,w,{color:m,lineDash:f,lineWidth:p},_),E>0&&Math.min(Math.abs(I[0][0]-I[1][0])/2,Math.abs(I[0][1]-I[1][1])/2)>3*E){const e=this._getCanvasEllipseCenter(w);ar(t,r,"".concat(b,"-center"),e,E,{color:m,lineDash:f,lineWidth:p})}i=!0;const T=this.getLinkedTextBoxStyle(c,o);if(!T.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const D=this.configuration.getTextLines(h,l);if(!D||0===D.length)continue;let S;h.handles.textBox.hasMoved||(S=ns(I),h.handles.textBox.worldPosition=a.canvasToWorld(S));const y=a.worldToCanvas(h.handles.textBox.worldPosition),M=Qr(t,r,"1",D,y,w,{},T),{x,y:O,width:P,height:A}=M;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([x,O]),topRight:a.canvasToWorld([x+P,O]),bottomLeft:a.canvasToWorld([x,O+A]),bottomRight:a.canvasToWorld([x+P,O+A])}}return i})),ae(this,"_calculateCachedStats",((e,t,n)=>{const o=e.data,{element:i}=t,{points:a}=o.handles,r=a.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:s,viewUp:l}=t.getCamera(),[d,c]=Va(r),h=t.canvasToWorld(d),u=t.canvasToWorld(c),{cachedStats:g}=o,v=Object.keys(g),m=h,p=u;for(let o=0;o<v.length;o++){var f,w,I;const i=v[o],a=this.getTargetIdImage(i,n);if(!a)continue;const{dimensions:r,imageData:d,metadata:c}=a,E=ww(d,m);E[0]=Math.floor(E[0]),E[1]=Math.floor(E[1]),E[2]=Math.floor(E[2]);const C=ww(d,p);C[0]=Math.floor(C[0]),C[1]=Math.floor(C[1]),C[2]=Math.floor(C[2]),this.isHandleOutsideImage=!this._isInsideVolume(E,C,r);const _=[[Math.min(E[0],C[0]),Math.max(E[0],C[0])],[Math.min(E[1],C[1]),Math.max(E[1],C[1])],[Math.min(E[2],C[2]),Math.max(E[2],C[2])]],b={center:[(h[0]+u[0])/2,(h[1]+u[1])/2,(h[2]+u[2])/2],xRadius:Math.abs(h[0]-u[0])/2,yRadius:Math.abs(h[1]-u[1])/2,zRadius:Math.abs(h[2]-u[2])/2},{worldWidth:T,worldHeight:D}=fw(s,l,m,p),S=0===T&&0===D,y=[E,C],{scale:M,areaUnits:x}=Ln(a,y),O=Math.abs(Math.PI*(T/2)*(D/2))/M/M,P={isPreScaled:as(t,i),isSuvScaled:this.isSuvScaled(t,i,e.metadata.referencedImageId)},A=is(c.Modality,e.metadata.referencedImageId,P),R=co(d,(e=>Wa(b,e,{fast:!0})),this.configuration.statsCalculator.statsCallback,_),L=this.configuration.statsCalculator.getStatistics();g[i]={Modality:c.Modality,area:O,mean:null===(f=L.mean)||void 0===f?void 0:f.value,max:null===(w=L.max)||void 0===w?void 0:w.value,stdDev:null===(I=L.stdDev)||void 0===I?void 0:I.value,statsArray:L.array,pointsInShape:R,isEmptyArea:S,areaUnits:x,pixelValueUnits:A}}return e.invalidated=!1,Qe(e,i),g})),ae(this,"_isInsideVolume",((e,t,n)=>oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,t){const n=e.width/2,o=e.height/2;if(n<=0||o<=0)return!1;const i=[e.left+n,e.top+o],a=[t[0]-i[0],t[1]-i[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(o*o)<=1}_getCanvasEllipseCenter(e){const[t,n,o,i]=e,a=[o[0],n[1]],r=[i[0],t[1]];return[(a[0]+r[0])/2,(a[1]+r[1])/2]}}function Ew(e,t){const n=e.cachedStats[t],{area:o,mean:i,stdDev:a,max:r,isEmptyArea:s,areaUnits:l,pixelValueUnits:d}=n,c=[];if(o){const e=s?"Area: Oblique not supported":"Area: ".concat(Qd(o)," ").concat(l);c.push(e)}return i&&c.push("Mean: ".concat(Qd(i)," ").concat(d)),r&&c.push("Max: ".concat(Qd(r)," ").concat(d)),a&&c.push("Std Dev: ".concat(Qd(a)," ").concat(d)),c}ae(Iw,"toolName",void 0),Iw.toolName="EllipticalROI";const Cw=Iw;function _w(e){const[t,n]=e;return nl(t,n)}function bw(e){const[t,n]=e,o=nl(t,n);return[[t[0]-o,t[1]-o],[t[0]+o,t[1]+o]]}const{transformWorldToIndex:Tw}=oe.utilities;class Dw extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Sw,statsCalculator:cs}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",!1),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...i],[...i]],activeHandleIndex:null},cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=s.map((e=>a.worldToCanvas(e))),d=_w(l),c=_w([l[0],n]);return Math.abs(c-d)<o/2})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},mr(o),this._activateModify(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;if(n.worldPosition)s=!0;else{const{points:e}=a.handles;r=e.findIndex((e=>e===n))}const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;o.highlighted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const{renderingEngine:l}=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o)})),ae(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,oe.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c}=this.editData,{data:h}=d;h.handles.points=[h.handles.points[0],l(i)],d.invalidated=!0,this.editData.hasMoved=!0,io(c)})),ae(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"_dragHandle",(e=>{const t=e.detail,{element:n}=t,o=(0,oe.getEnabledElement)(n),{canvasToWorld:i,worldToCanvas:a}=o.viewport,{annotation:r,handleIndex:s}=this.editData,{data:l}=r,{points:d}=l.handles,c=d.map((e=>a(e))),{currentPoints:h}=t,u=h.canvas;if(0===s){const e=u[0]-c[0][0],t=u[1]-c[0][1],n=u,o=[c[1][0]+e,c[1][1]+t];d[0]=i(n),d[1]=i(o)}else d[1]=i(u)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{handles:u}=h,{points:g,activeHandleIndex:v}=u;c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),w=g.map((e=>a.worldToCanvas(e))),I=w[0],E=_w(w),C=bw(w),{centerPointRadius:_}=this.configuration;if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnits){if(o.invalidated&&(this._throttledCalculateCachedStats(o,a,d,e),a instanceof oe.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=oe.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=oe.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnits:null,radius:null,radiusUnit:null,perimeter:null},this._calculateCachedStats(o,a,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let b;if(!Re(r))continue;ue(o)||this.editData||null===v||(b=[w[v]]),b&&Ar(t,r,"0",b,{color:m});const T="".concat(r,"-circle"),D="0";ar(t,r,D,I,E,{color:m,lineDash:f,lineWidth:p},T),_>0&&E>3*_&&ar(t,r,"".concat(D,"-center"),I,_,{color:m,lineDash:f,lineWidth:p}),i=!0;const S=this.getLinkedTextBoxStyle(c,o);if(!S.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const y=this.configuration.getTextLines(h,l);if(!y||0===y.length)continue;let M;h.handles.textBox.hasMoved||(M=ns(C),h.handles.textBox.worldPosition=a.canvasToWorld(M));const x=a.worldToCanvas(h.handles.textBox.worldPosition),O=Qr(t,r,"1",y,x,w,{},S),{x:P,y:A,width:R,height:L}=O;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([P,A]),topRight:a.canvasToWorld([P+R,A]),bottomLeft:a.canvasToWorld([P,A+L]),bottomRight:a.canvasToWorld([P+R,A+L])}}return i})),ae(this,"_calculateCachedStats",((e,t,n,o)=>{const i=e.data,{element:a}=t,{points:r}=i.handles,s=r.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:l,viewUp:d}=t.getCamera(),[c,h]=bw(s),u=t.canvasToWorld(c),g=t.canvasToWorld(h),{cachedStats:v}=i,m=Object.keys(v),p=u,f=g;for(let o=0;o<m.length;o++){const i=m[o],a=this.getTargetIdImage(i,n);if(!a)continue;const{dimensions:r,imageData:s,metadata:c,hasPixelSpacing:h}=a,C=Tw(s,p);C[0]=Math.floor(C[0]),C[1]=Math.floor(C[1]),C[2]=Math.floor(C[2]);const _=Tw(s,f);if(_[0]=Math.floor(_[0]),_[1]=Math.floor(_[1]),_[2]=Math.floor(_[2]),this._isInsideVolume(C,_,r)){var w,I,E;const n=[[Math.min(C[0],_[0]),Math.max(C[0],_[0])],[Math.min(C[1],_[1]),Math.max(C[1],_[1])],[Math.min(C[2],_[2]),Math.max(C[2],_[2])]],o={center:[(u[0]+g[0])/2,(u[1]+g[1])/2,(u[2]+g[2])/2],xRadius:Math.abs(u[0]-g[0])/2,yRadius:Math.abs(u[1]-g[1])/2,zRadius:Math.abs(u[2]-g[2])/2},{worldWidth:r,worldHeight:h}=fw(l,d,p,f),m=0===r&&0===h,b=[C,_],{scale:T,lengthUnits:D,areaUnits:S}=Ln(a,b),y=kn(a),M=Math.abs(Math.PI*(r/T/2)*(h/y/T/2)),x={isPreScaled:as(t,i),isSuvScaled:this.isSuvScaled(t,i,e.metadata.referencedImageId)},O=is(c.Modality,e.metadata.referencedImageId,x),P=co(s,(e=>Wa(o,e,{fast:!0})),this.configuration.statsCalculator.statsCallback,n),A=this.configuration.statsCalculator.getStatistics();v[i]={Modality:c.Modality,area:M,mean:null===(w=A.mean)||void 0===w?void 0:w.value,max:null===(I=A.max)||void 0===I?void 0:I.value,stdDev:null===(E=A.stdDev)||void 0===E?void 0:E.value,statsArray:A.array,pointsInShape:P,isEmptyArea:m,areaUnits:S,radius:r/2/T,radiusUnit:D,perimeter:2*Math.PI*(r/2)/T,pixelValueUnits:O}}else this.isHandleOutsideImage=!0,v[i]={Modality:c.Modality}}return e.invalidated=!1,Qe(e,a),v})),ae(this,"_isInsideVolume",((e,t,n)=>oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}}function Sw(e,t){const n=e.cachedStats[t],{radius:o,radiusUnit:i,area:a,mean:r,stdDev:s,max:l,isEmptyArea:d,areaUnits:c,pixelValueUnits:h}=n,u=[];if(o){const e=d?"Radius: Oblique not supported":"Radius: ".concat(Qd(o)," ").concat(i);u.push(e)}if(a){const e=d?"Area: Oblique not supported":"Area: ".concat(Qd(a)," ").concat(c);u.push(e)}return r&&u.push("Mean: ".concat(Qd(r)," ").concat(h)),l&&u.push("Max: ".concat(Qd(l)," ").concat(h)),s&&u.push("Std Dev: ".concat(Qd(s)," ").concat(h)),u}ae(Dw,"toolName",void 0),Dw.toolName="CircleROI";const yw=Dw;class Mw{constructor(e){var t,n,o;ae(this,"_controlPoints",[]),ae(this,"_resolution",void 0),ae(this,"_fixedResolution",void 0),ae(this,"_closed",void 0),ae(this,"_invalidated",!1),ae(this,"_curveSegments",void 0),ae(this,"_aabb",void 0),ae(this,"_length",0),this._controlPoints=[],this._resolution=null!==(t=null==e?void 0:e.resolution)&&void 0!==t?t:20,this._fixedResolution=null!==(n=null==e?void 0:e.fixedResolution)&&void 0!==n&&n,this._closed=null!==(o=null==e?void 0:e.closed)&&void 0!==o&&o,this._invalidated=!0}get controlPoints(){return this._controlPoints}get numControlPoints(){return this._controlPoints.length}get resolution(){return this._resolution}set resolution(e){this._fixedResolution||this._resolution===e||(this._resolution=e,this.invalidated=!0)}get fixedResolution(){return this._fixedResolution}get closed(){return this._closed}set closed(e){this._closed!==e&&(this._closed=e,this.invalidated=!0)}get aabb(){return this._update(),this._aabb}get length(){return this._update(),this._length}get invalidated(){return this._invalidated}set invalidated(e){this._invalidated=e}hasTangentPoints(){return!1}addControlPoint(e){this._controlPoints.push([e[0],e[1]]),this.invalidated=!0}addControlPoints(e){e.forEach((e=>this.addControlPoint(e)))}addControlPointAtU(e){const t=this._getLineSegmentAt(e),{start:n,end:o}=t.points,i=Math.floor(e),a=this._curveSegments[i],r=e-Math.floor(i),s=[n[0]+r*(o[0]-n[0]),n[1]+r*(o[1]-n[1])],l=this._controlPoints.indexOf(a.controlPoints.p1)+1;return this._controlPoints.splice(l,0,s),this.invalidated=!0,{index:l,point:s}}deleteControlPointByIndex(e){const t=this._closed?3:1;return e>=0&&e<this._controlPoints.length&&this._controlPoints.length>t&&(this._controlPoints.splice(e,1),this.invalidated=!0,!0)}clearControlPoints(){this._controlPoints=[],this.invalidated=!0}setControlPoints(e){this.clearControlPoints(),this.addControlPoints(e)}updateControlPoint(e,t){if(e<0||e>=this._controlPoints.length)throw new Error("Index out of bounds");this._controlPoints[e]=[...t],this.invalidated=!0}getControlPoints(){return this._controlPoints.map((e=>[e[0],e[1]]))}getClosestControlPoint(e){const t=this._controlPoints;let n=1/0,o=-1;for(let i=0,a=t.length;i<a;i++){const a=t[i],r=e[0]-a[0],s=e[1]-a[1],l=r*r+s*s;l<n&&(n=l,o=i)}return{index:o,point:-1===o?void 0:[...t[o]],distance:Math.sqrt(n)}}getClosestControlPointWithinDistance(e,t){const n=this.getClosestControlPoint(e);return n.distance<=t?n:void 0}getClosestPoint(e){this._update();const t=this._getCurveSegmmentsDistanceSquaredInfo(e);if(!t.length)return;let n;t.sort(((e,t)=>e.distanceSquared-t.distanceSquared));let o,i,a=-1,r=1/0;for(let s=0;s<t.length;s++){const l=t[s];if(l.distanceSquared>r)continue;const{curveSegmentIndex:d,curveSegment:c}=l,{lineSegments:h}=c;for(let t=0;t<h.length;t++){const s=h[t],{point:c,distanceSquared:u}=Jo(s.points.start,s.points.end,e);u<r&&(i=s,a=d,o=l.curveSegment,n=c,r=u)}}return{point:n,uValue:a+(i.previousLineSegmentsLength+nl(i.points.start,n))/o.length,distance:Math.sqrt(r)}}getClosestPointOnControlPointLines(e){const t=[...this._controlPoints];if(this._closed&&t.push(this._controlPoints[0]),!t.length)return;let n,o=1/0,i=t[0];for(let a=1,r=t.length;a<r;a++){const r=t[a],{point:s,distanceSquared:l}=Jo(i,r,e);l<o&&(n=s,o=l),i=r}return{point:n,distance:Math.sqrt(o)}}getPolylinePoints(){return this._update(),this._convertCurveSegmentsToPolyline(this._curveSegments)}getPreviewPolylinePoints(e,t){if(this._closed)return[];this._update();const n=this.getClosestControlPointWithinDistance(e,t),o=0===(null==n?void 0:n.index),i=this.getPreviewCurveSegments(e,o);return null!=i&&i.length?this._convertCurveSegmentsToPolyline(i):[]}isPointNearCurve(e,t){this._update();const n=this._getCurveSegmmentsWithinDistance(e,t),o=t*t;for(let t=0;t<n.length;t++){const{lineSegments:i}=n[t];for(let t=0;t<i.length;t++){const n=i[t];if(Zo(n.points.start,n.points.end,e)<=o)return!0}}return!1}containsPoint(e){if(this._update(),this._controlPoints.length<3)return!1;const t=[...this._curveSegments],n=this._getClosingCurveSegmentWithStraightLineSegment();n&&t.push(n);let o=0;for(let n=0;n<t.length;n++){const i=t[n],{aabb:a}=i;if(!(e[0]<=a.maxX&&e[1]>=a.minY&&e[1]<a.maxY))continue;const{lineSegments:r}=i;for(let t=0;t<r.length;t++){const n=r[t],{aabb:i}=n;if(e[0]<=i.maxX&&e[1]>=i.minY&&e[1]<i.maxY){const{start:t,end:i}=n.points,a=t[0]===i[0],r=(e[1]-t[1])*(i[0]-t[0])/(i[1]-t[1])+t[0];o+=a||e[0]<=r?1:0}}}return o%2==1}_update(){if(!this._invalidated)return;const e=this.getSplineCurves();let t=0,n=1/0,o=1/0,i=-1/0,a=-1/0;for(let r=0,s=e.length;r<s;r++){const{aabb:s,length:l}=e[r];n=n<=s.minX?n:s.minX,o=o<=s.minY?o:s.minY,i=i>=s.maxX?i:s.maxX,a=a>=s.maxY?a:s.maxY,t+=l}this._curveSegments=e,this._aabb={minX:n,minY:o,maxX:i,maxY:a},this._length=t,this._invalidated=!1}_convertCurveSegmentsToPolyline(e){this._update();const t=[];return e.forEach(((e,n)=>{let{lineSegments:o}=e;o.forEach(((e,o)=>{0===n&&0===o&&t.push([...e.points.start]),t.push([...e.points.end])}))})),t}_getCurveSegmmentsDistanceSquaredInfo(e){this._update();const t=[],{_curveSegments:n}=this;for(let o=0;o<n.length;o++){const i=n[o],a=el(i.aabb,e);t.push({curveSegmentIndex:o,curveSegment:i,distanceSquared:a})}return t}_getCurveSegmmentsWithinDistance(e,t){this._update();const n=t*t;if(el(this.aabb,e)>n)return[];const o=this._getCurveSegmmentsDistanceSquaredInfo(e),i=[];for(let e=0,t=o.length;e<t;e++){const{curveSegment:t,distanceSquared:a}=o[e];a<=n&&i.push(t)}return i}_getLineSegmentAt(e){this._update();const t=Math.floor(e),n=e-t,o=this._curveSegments[t],{lineSegments:i}=o,a=o.length*n;for(let e=0;e<i.length;e++){const t=i[e],n=t.previousLineSegmentsLength+t.length;if(a>=t.previousLineSegmentsLength&&a<=n)return t}}_getClosingCurveSegmentWithStraightLineSegment(){if(this.closed)return;const e=this._controlPoints,t=e[0],n=e[e.length-1],o={points:{start:[...t],end:[...n]},aabb:{minX:Math.min(t[0],n[0]),minY:Math.min(t[1],n[1]),maxX:Math.max(t[0],n[0]),maxY:Math.max(t[1],n[1])}};return{aabb:{minX:o.aabb.minX,minY:o.aabb.minY,maxX:o.aabb.maxX,maxY:o.aabb.maxY},lineSegments:[o]}}}class xw extends Mw{getPreviewCurveSegments(e,t){const n=this._getNumCurveSegments()+1,o=Math.max(0,n-2),i=t?n:n-1,a=this.getTransformMatrix(),r=[...this.controlPoints],s=[];t||r.push(e);for(let e=o;e<=i;e++){const n=this._getCurveSegment(e,a,r,t);s.push(n)}return s}getSplineCurves(){const e=this._getNumCurveSegments(),t=new Array(e);if(e<=0)return[];const n=this.getTransformMatrix();let o=0;for(let i=0;i<e;i++){const e=this._getCurveSegment(i,n);e.previousCurveSegmentsLength=o,t[i]=e,o+=e.length}return t}_getNumCurveSegments(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.controlPoints;return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.closed)?e.length:Math.max(0,e.length-1)}_getPoint(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.controlPoints,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.closed;const i=this._getNumCurveSegments(n,o),a=Math.floor(e);let r=a%i;const s=e-a;if(r<0||r>=i){if(!this.closed)return;r=(i+r)%i}const{p0:l,p1:d,p2:c,p3:h}=this._getCurveSegmentPoints(r,n,o),u=s*s,g=u*s,v=Sn.vec4.fromValues(1,s,u,g),m=Sn.vec4.transformMat4(Sn.vec4.create(),v,t);return[Sn.vec4.dot(m,Sn.vec4.fromValues(l[0],d[0],c[0],h[0])),Sn.vec4.dot(m,Sn.vec4.fromValues(l[1],d[1],c[1],h[1]))]}_getCurveSegmentPoints(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.controlPoints,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.closed;const o=this._getNumCurveSegments(t,n),i=e-1,a=n?(e+1)%o:e+1,r=a+1,s=t[e],l=t[a];let d,c;return d=i>=0?t[i]:n?t[t.length-1]:ol(l,s),c=r<t.length?t[r]:n?t[0]:ol(s,l),{p0:d,p1:s,p2:l,p3:c}}_getLineSegments(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.controlPoints,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.closed;const i=this._getNumCurveSegments(n,o),a=this.resolution+1,r=1/a;let s=e+1;o||e!==i-1||(s-=1e-8);const l=[];let d,c,h=0;for(let i=0,u=e;i<=a;i++,u+=r){u=u>s?s:u;const e=this._getPoint(u,t,n,o);if(!i){d=e;continue}c=e;const a=c[0]-d[0],r=c[1]-d[1],g=Math.sqrt(a**2+r**2),v={minX:d[0]<=c[0]?d[0]:c[0],maxX:d[0]>=c[0]?d[0]:c[0],minY:d[1]<=c[1]?d[1]:c[1],maxY:d[1]>=c[1]?d[1]:c[1]};l.push({points:{start:d,end:c},aabb:v,length:g,previousLineSegmentsLength:h}),d=c,h+=g}return l}_getCurveSegment(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getTransformMatrix(),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.controlPoints,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.closed;const{p0:i,p1:a,p2:r,p3:s}=this._getCurveSegmentPoints(e,n,o),l=this._getLineSegments(e,t,n,o);let d=0,c=1/0,h=1/0,u=-1/0,g=-1/0;return l.forEach((e=>{let{aabb:t,length:n}=e;c=Math.min(c,t.minX),h=Math.min(h,t.minY),u=Math.max(u,t.maxX),g=Math.max(g,t.maxY),d+=n})),{controlPoints:{p0:i,p1:a,p2:r,p3:s},aabb:{minX:c,minY:h,maxX:u,maxY:g},length:d,previousCurveSegmentsLength:0,lineSegments:l}}}class Ow extends xw{constructor(e){var t,n;super(e),ae(this,"_scale",void 0),ae(this,"_fixedScale",void 0),this._scale=null!==(t=null==e?void 0:e.scale)&&void 0!==t?t:.5,this._fixedScale=null!==(n=null==e?void 0:e.fixedScale)&&void 0!==n&&n}get scale(){return this._scale}set scale(e){this._fixedScale||this._scale===e||(this._scale=e,this.invalidated=!0)}get fixedScale(){return this._fixedScale}getTransformMatrix(){const{scale:e}=this,t=2*e;return[0,1,0,0,-e,0,e,0,t,e-3,3-t,-e,-e,2-e,e-2,e]}}class Pw extends Ow{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}class Aw extends Ow{constructor(){super({scale:.5,fixedScale:!0})}}const Rw=Sn.mat4.multiplyScalar(Sn.mat4.create(),Sn.mat4.fromValues(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class Lw extends xw{getTransformMatrix(){return Rw}}const Nw={resolution:20,controlPointAdditionDistance:6,controlPointDeletionDistance:6,showControlPointsConnectors:!1,controlPointAdditionEnabled:!0,controlPointDeletionEnabled:!0};var kw=function(e){return e.Cardinal="CARDINAL",e.Linear="LINEAR",e.CatmullRom="CATMULLROM",e.BSpline="BSPLINE",e}(kw||{}),Uw=function(e){return e.AddControlPoint="addControlPoint",e.DeleteControlPoint="deleteControlPoint",e}(Uw||{});class Vw extends Vh{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,calculateStats:!0,getTextLines:Ww,contourHoleAdditionModifierKey:ac.Shift,decimate:{enabled:!1,epsilon:.1},spline:{configuration:{[kw.Cardinal]:{Class:Ow,scale:.5},[kw.CatmullRom]:{Class:Aw},[kw.Linear]:{Class:Pw},[kw.BSpline]:{Class:Lw,controlPointAdditionEnabled:!1,controlPointDeletionEnabled:!1,showControlPointsConnectors:!0}},type:kw.CatmullRom,drawPreviewEnabled:!0,lastControlPointDeletionKeys:["Backspace","Delete"]},actions:{[Uw.AddControlPoint]:{method:"addControlPointCallback",bindings:[{mouseButton:ic.Primary,modifierKey:ac.Shift}]},[Uw.DeleteControlPoint]:{method:"deleteControlPointCallback",bindings:[{mouseButton:ic.Primary,modifierKey:ac.Ctrl}]}}}}),e=this,ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",!1),ae(this,"fireChangeOnUpdate",null),ae(this,"isPointNearTool",((e,t,n,o)=>{const{instance:i}=t.data.spline;return i.isPointNearCurve(n,o)})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1};const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;this._activateModify(o),io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;if(n.worldPosition)s=!0;else{const{points:e}=a.handles;r=e.findIndex((e=>e===n))}const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,contourHoleProcessingEnabled:r}=this.editData,{data:s}=o;o.autoGenerated=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l,c=this.getTargetIdImage(this.getTargetId(l.viewport),l.renderingEngine),{imageData:h,dimensions:u}=c;this.isHandleOutsideImage=s.handles.points.map((e=>oe.utilities.transformWorldToIndex(h,e))).some((e=>!oe.utilities.indexWithinDimensions(e,u))),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID);const g=a?qe.Completed:qe.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=o.annotationUID,this.fireChangeOnUpdate.changeType=g):this.fireChangeOnUpdate={annotationUID:o.annotationUID,changeType:g,contourHoleProcessingEnabled:r},io(i),this.editData=null,this.isDrawing=!1})),ae(this,"_keyDownCallback",(e=>{var t;const n=e.detail,{element:o}=n,i=null!==(t=n.key)&&void 0!==t?t:"",{lastControlPointDeletionKeys:a}=this.configuration.spline;if(!a.includes(i))return;const{annotation:r}=this.editData,{data:s}=r;if(3!==s.handles.points.length){{const e=s.handles.points.length-1;this._deleteControlPointByIndex(o,r,e)}e.preventDefault()}else this.cancel(o)})),ae(this,"_mouseMoveCallback",(e=>{const{drawPreviewEnabled:t}=this.configuration.spline;if(!t)return;const{element:n}=e.detail,{renderingEngine:o}=(0,oe.getEnabledElement)(n),i=Fi(n,this.getToolName());this.editData.lastCanvasPoint=e.detail.currentPoints.canvas,io(i),e.preventDefault()})),ae(this,"_mouseDownCallback",(e=>{const t=e.type===se.MOUSE_DOUBLE_CLICK,{annotation:n,viewportIdsToRender:o}=this.editData,{data:i}=n;if(i.contour.closed)return;const a=e.detail,{element:r}=a,{currentPoints:s}=a,{canvas:l,world:d}=s,c=(0,oe.getEnabledElement)(r),{renderingEngine:h}=c;let u=i.handles.points.length>=2&&t,g=!0;if(i.handles.points.length>=3){const{instance:e}=i.spline,t=e.getClosestControlPointWithinDistance(l,10);0===(null==t?void 0:t.index)&&(g=!1,u=!0)}g&&i.handles.points.push(d),i.contour.closed=i.contour.closed||u,n.invalidated=!0,io(o),i.contour.closed&&this._endCallback(e),e.preventDefault()})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;this.moveAnnotation(o,n)}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"triggerAnnotationCompleted",((e,t)=>{const n=se.ANNOTATION_COMPLETED,o={annotation:e,changeType:qe.Completed,contourHoleProcessingEnabled:t};(0,oe.triggerEvent)(oe.eventTarget,n,o)})),ae(this,"triggerAnnotationModified",(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:qe.StatsUpdated;const{viewportId:o,renderingEngineId:i}=t,a=se.ANNOTATION_MODIFIED,r={annotation:e,viewportId:o,renderingEngineId:i,changeType:n};(0,oe.triggerEvent)(oe.eventTarget,a,r)})),ae(this,"triggerChangeEvent",(function(t,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:qe.StatsUpdated,i=arguments.length>3?arguments[3]:void 0;o===qe.Completed?e.triggerAnnotationCompleted(t,i):e.triggerAnnotationModified(t,n,o)})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.KEY_DOWN,this._keyDownCallback),e.addEventListener(se.MOUSE_MOVE,this._mouseMoveCallback),e.addEventListener(se.MOUSE_DOWN,this._mouseDownCallback),e.addEventListener(se.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.addEventListener(se.TOUCH_TAP,this._mouseDownCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.KEY_DOWN,this._keyDownCallback),e.removeEventListener(se.MOUSE_MOVE,this._mouseMoveCallback),e.removeEventListener(se.MOUSE_DOWN,this._mouseDownCallback),e.removeEventListener(se.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.removeEventListener(se.TOUCH_TAP,this._mouseDownCallback)})),ae(this,"_renderStats",((e,t,n,o)=>{var i;const a=e.data,r=this.getTargetId(t);if(!a.spline.instance.closed||!o.visibility)return;const s=this.configuration.getTextLines(a,r);if(!s||0===s.length)return;const l=a.handles.points.map((e=>t.worldToCanvas(e)));if(!a.handles.textBox.hasMoved){const e=ns(l);a.handles.textBox.worldPosition=t.canvasToWorld(e)}const d=t.worldToCanvas(a.handles.textBox.worldPosition),c=Qr(n,null!==(i=e.annotationUID)&&void 0!==i?i:"","textBox",s,d,l,{},o),{x:h,y:u,width:g,height:v}=c;a.handles.textBox.worldBoundingBox={topLeft:t.canvasToWorld([h,u]),topRight:t.canvasToWorld([h+g,u]),bottomLeft:t.canvasToWorld([h,u+v]),bottomRight:t.canvasToWorld([h+g,u+v])}})),ae(this,"addControlPointCallback",((e,t)=>{const{data:n}=t,o=n.spline.type,i=this._getSplineConfig(o),a=i.controlPointAdditionDistance;if(!1===i.controlPointAdditionEnabled)return;const r=e.detail,{element:s}=r,l=(0,oe.getEnabledElement)(s),{renderingEngine:d,viewport:c}=l,{canvasToWorld:h}=c,{instance:u}=n.spline,g=e.detail.currentPoints.canvas,v=u.getClosestPoint(g);if(v.distance>a)return;const{index:m,point:p}=u.addControlPointAtU(v.uValue);n.handles.points.splice(m,0,h(p)),t.invalidated=!0;const f=Fi(s,this.getToolName());io(f)})),ae(this,"deleteControlPointCallback",((e,t)=>{const n=t.data.spline.type,o=this._getSplineConfig(n),i=o.controlPointDeletionDistance;if(!1===o.controlPointDeletionEnabled)return;const a=e.detail,{element:r,currentPoints:s}=a,{canvas:l}=s,{instance:d}=t.data.spline,c=d.getClosestControlPointWithinDistance(l,i);c&&this._deleteControlPointByIndex(r,t,c.index)})),ae(this,"_calculateCachedStats",((e,t)=>{if(!this.configuration.calculateStats)return;const n=e.data;if(!n.contour.closed)return;const o=(0,oe.getEnabledElement)(t),{viewport:i,renderingEngine:a}=o,{cachedStats:r}=n,{polyline:s}=n.contour,l=Object.keys(r);for(let e=0;e<l.length;e++){const t=l[e],n=this.getTargetIdImage(t,a);if(!n)continue;const{metadata:o}=n,d=s.map((e=>i.worldToCanvas(e))),c=d[0],h=i.canvasToWorld(c),u=i.canvasToWorld([c[0]+1,c[1]]),g=i.canvasToWorld([c[0],c[1]+1]),v=Sn.vec3.distance(h,u),m=Sn.vec3.distance(h,g),{imageData:p}=n,{scale:f,areaUnits:w}=Ln(n,(()=>{const{maxX:e,maxY:t,minX:n,minY:o}=Un(d),a=i.canvasToWorld([n,o]),r=oe.utilities.transformWorldToIndex(p,a),s=i.canvasToWorld([e,t]);return[r,oe.utilities.transformWorldToIndex(p,s)]}));let I=il(d)/f/f;I*=v*m,r[t]={Modality:o.Modality,area:I,areaUnits:w}}return this.triggerAnnotationModified(e,o,qe.StatsUpdated),r})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,{canvas:i}=n,a=rc(e.detail.event)===this.configuration.contourHoleAdditionModifierKey,r=(0,oe.getEnabledElement)(o),{renderingEngine:s}=r,l=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(l,o);const d=Fi(o,this.getToolName());return this.editData={annotation:l,viewportIdsToRender:d,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,lastCanvasPoint:i,contourHoleProcessingEnabled:a},this._activateDraw(o),e.preventDefault(),io(d),l}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData;o&&mt(t.annotationUID),super.cancelAnnotation(t);const i=(0,oe.getEnabledElement)(e),{renderingEngine:a}=i;return io(n),this.editData=null,t.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){var t,n,o;const{enabledElement:i,targetId:a,svgDrawingHelper:r,annotationStyle:s}=e,{viewport:l}=i,{worldToCanvas:d}=l,{element:c}=l,h=e.annotation,{annotationUID:u,data:g,highlighted:v}=h,{handles:m}=g,{points:p,activeHandleIndex:f}=m,w=null===(t=this.editData)||void 0===t?void 0:t.newAnnotation,{lineWidth:I,lineDash:E,color:C,locked:_}=s,b=p.map((e=>d(e))),{drawPreviewEnabled:T}=this.configuration.spline,D=h.data.spline.type,S=this._getSplineConfig(D),y=h.data.spline.instance,M=ut(h);if(-1!==M.findIndex((e=>!e)))throw new Error("Can't find annotation for child ".concat(h.childAnnotationUIDs.join()));let x;if([h,...M].filter((e=>this._isSplineROIAnnotation(e))).forEach((e=>{const t=this._updateSplineInstance(c,e).getPolylinePoints();this.updateContourPolyline(e,{points:t,closed:g.contour.closed,targetWindingDirection:Xi.Clockwise},l)})),super.renderAnnotationInstance(e),g.cachedStats[a]&&null!=g.cachedStats[a].areaUnits?h.invalidated&&this._throttledCalculateCachedStats(h,c):(g.cachedStats[a]={Modality:null,area:null,areaUnits:null},this._calculateCachedStats(h,c)),_||this.editData||null===f||(x=[b[f]]),(x||w||v)&&Ar(r,u,"0",b,{color:C,lineWidth:Math.max(1,I),handleRadius:"3"}),T&&y.numControlPoints>1&&null!==(n=this.editData)&&void 0!==n&&n.lastCanvasPoint&&!y.closed){const{lastCanvasPoint:e}=this.editData;dh(r,u,"previewSplineChange",y.getPreviewPolylinePoints(e,10),{color:"#9EA0CA",lineDash:E,lineWidth:1})}if(S.showControlPointsConnectors){const e=[...b];y.closed&&e.push(b[0]),dh(r,u,"controlPointsConnectors",e,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(h,l,r,s.textbox),(null===(o=this.fireChangeOnUpdate)||void 0===o?void 0:o.annotationUID)===u&&(this.triggerChangeEvent(h,i,this.fireChangeOnUpdate.changeType,this.fireChangeOnUpdate.contourHoleProcessingEnabled),this.fireChangeOnUpdate=null),h.invalidated=!1,!0}createInterpolatedSplineControl(e){var t;if(null!==(t=e.data.handles.points)&&void 0!==t&&t.length)return;const{polyline:n}=e.data.contour;if(!n||!n.length)return;e.data.handles.points=[];const{points:o}=e.data.handles,i=Math.max(10,Math.floor(n.length/20));for(let e=0;e<n.length-i;e+=i)o.push(n[e]);o.push(n[n.length-1])}createAnnotation(e){var t;const n=super.createAnnotation(e),{world:o}=e.detail.currentPoints,{type:i}=this.configuration.spline,a=this._getSplineConfig(i),r=new a.Class,s=()=>({type:a.type,instance:r,resolution:a.resolution});let l;return null!==(t=this.configuration.interpolation)&&void 0!==t&&t.enabled&&(l=e=>{var t;(t=e.data).spline||(t.spline=s()),this.createInterpolatedSplineControl(e)}),oe.utilities.deepMerge(n,{data:{handles:{points:[[...o]]},spline:s(),cachedStats:{}},onInterpolationComplete:l})}_deleteControlPointByIndex(e,t,n){const o=(0,oe.getEnabledElement)(e),{points:i}=t.data.handles;3===i.length?mt(t.annotationUID):i.splice(n,1);const{renderingEngine:a}=o,r=Fi(e,this.getToolName());t.invalidated=!0,io(r)}_isSplineROIAnnotation(e){var t;return!(null===(t=e.data)||void 0===t||!t.spline)}_getSplineConfig(e){const{configuration:t}=this,n=t.spline.configuration;return Object.assign({type:e},Nw,n[e])}_updateSplineInstance(e,t){const n=(0,oe.getEnabledElement)(e),{viewport:o}=n,{worldToCanvas:i}=o,{data:a}=t,{type:r,instance:s}=t.data.spline,l=this._getSplineConfig(r),d=a.handles.points.map(i),c=void 0!==l.resolution?parseInt(l.resolution):void 0,h=void 0!==l.scale?parseFloat(l.scale):void 0;return s.setControlPoints(d),s.closed=!!a.contour.closed,s.fixedResolution||void 0===c||s.resolution===c||(s.resolution=c,t.invalidated=!0),s instanceof Ow&&!s.fixedScale&&void 0!==h&&s.scale!==h&&(s.scale=h,t.invalidated=!0),s}}function Ww(e,t){const n=e.cachedStats[t],{area:o,isEmptyArea:i,areaUnits:a}=n,r=[];if(o){const e=i?"Area: Oblique not supported":"Area: ".concat(Qd(o)," ").concat(a);r.push(e)}return r}ae(Vw,"toolName",void 0),ae(Vw,"SplineTypes",kw),ae(Vw,"Actions",Uw),Vw.toolName="SplineROI";const Hw=Vw;class Bw extends Hw{constructor(e){super(oe.utilities.deepMerge({configuration:{calculateStats:!1}},e))}isContourSegmentationTool(){return!0}}ae(Bw,"toolName",void 0),Bw.toolName="SplineContourSegmentationTool";const Fw=Bw;class Gw{constructor(e){let{numBits:t,getPriority:n,areEqual:o}=e;ae(this,"_bucketCount",void 0),ae(this,"_mask",void 0),ae(this,"_size",void 0),ae(this,"_currentBucketIndex",void 0),ae(this,"_getPriority",void 0),ae(this,"_areEqual",void 0),ae(this,"_buckets",void 0),this._bucketCount=1<<t,this._mask=this._bucketCount-1,this._size=0,this._currentBucketIndex=0,this._buckets=this._buildArray(this._bucketCount),this._getPriority=void 0!==n?n:e=>e,this._areEqual="function"==typeof o?o:(e,t)=>e===t}push(e){const t=this._getBucketIndex(e),n={value:e,next:this._buckets[t]};this._buckets[t]=n,this._size++}pop(){if(0===this._size)throw new Error("Cannot pop because the queue is empty.");for(;null===this._buckets[this._currentBucketIndex];)this._currentBucketIndex=(this._currentBucketIndex+1)%this._bucketCount;const e=this._buckets[this._currentBucketIndex];return this._buckets[this._currentBucketIndex]=e.next,this._size--,e.value}remove(e){if(!e)return!1;const t=this._getBucketIndex(e),n=this._buckets[t];let o,i=n;for(;null!==i&&!this._areEqual(e,i.value);)o=i,i=i.next;return null!==i&&(i===n?this._buckets[t]=i.next:o.next=i.next,this._size--,!0)}isEmpty(){return 0===this._size}_getBucketIndex(e){return this._getPriority(e)&this._mask}_buildArray(e){const t=new Array(e);return t.fill(null),t}}const{isEqual:qw}=oe.utilities,zw=4294967295,jw=2/(3*Math.PI);class Kw{constructor(e,t,n){ae(this,"searchGranularityBits",void 0),ae(this,"searchGranularity",void 0),ae(this,"width",void 0),ae(this,"height",void 0),ae(this,"grayscalePixelData",void 0),ae(this,"laplace",void 0),ae(this,"gradMagnitude",void 0),ae(this,"gradXNew",void 0),ae(this,"gradYNew",void 0),ae(this,"startPoint",void 0),ae(this,"visited",void 0),ae(this,"parents",void 0),ae(this,"costs",void 0),ae(this,"priorityQueueNew",void 0),ae(this,"_getPointIndex",((e,t)=>{const{width:n}=this;return e*n+t})),ae(this,"_getPointCoordinate",(e=>[e%this.width,Math.floor(e/this.width)])),ae(this,"_getPointCost",(e=>Math.round(this.searchGranularity*this.costs[e])));const o=e.length;this.searchGranularityBits=8,this.searchGranularity=1<<this.searchGranularityBits,this.width=t,this.height=n,this.grayscalePixelData=e,this.laplace=null,this.gradXNew=null,this.gradYNew=null,this.laplace=this._computeLaplace(),this.gradMagnitude=this._computeGradient(),this.gradXNew=this._computeGradientX(),this.gradYNew=this._computeGradientY(),this.visited=new Array(o),this.parents=new Uint32Array(o),this.costs=new Float32Array(o)}startSearch(e){const t=this._getPointIndex(e[1],e[0]);this.startPoint=null,this.visited.fill(!1),this.parents.fill(zw),this.costs.fill(1/0),this.priorityQueueNew=new Gw({numBits:this.searchGranularityBits,getPriority:this._getPointCost}),this.startPoint=e,this.costs[t]=0,this.priorityQueueNew.push(t)}findMinNearby(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;const[n,o]=e,{costs:i}=this,a=[Math.max(0,n-t),Math.min(n+t+1,this.width)],r=[Math.max(0,o-t),Math.min(o+t+1,this.height)];let s=.8*i[this._getPointIndex(o,n)],l=e;for(let n=a[0];n<a[1];n++)for(let o=r[0];o<r[1];o++){const a=1-(Math.abs(n-e[0])+Math.abs(o-e[1]))/t/2,r=.8*i[this._getPointIndex(o,n)]+.2*a;r<s&&(l=[n,o],s=r)}return l}findPathToPoint(e){if(!this.startPoint)throw new Error("There is no search in progress");const{startPoint:t,_getPointIndex:n,_getPointCoordinate:o}=this,i=n(t[1],t[0]),a=n(e[1],e[0]),{visited:r,parents:s,costs:l,priorityQueueNew:d}=this;if(a===i)return[];for(;!d.isEmpty()&&s[a]===zw;){const e=d.pop();if(r[e])continue;const t=o(e),i=this._getNeighborPoints(t);r[e]=!0;for(let o=0,a=i.length;o<a;o++){const a=i[o],r=n(a[1],a[0]),c=this._getWeightedDistance(t,a),h=l[e]+c;h<l[r]&&(l[r]!==1/0&&d.remove(r),l[r]=h,s[r]=e,d.push(r))}}const c=[];let h=a;for(;h!==zw;)c.push(o(h)),h=s[h];return c.reverse()}_getDeltaX(e,t){const{grayscalePixelData:n,width:o}=this;let i=this._getPointIndex(t,e);return e+1===o&&i--,n[i+1]-n[i]}_getDeltaY(e,t){const{grayscalePixelData:n,width:o,height:i}=this;let a=this._getPointIndex(t,e);return t+1===i&&(a-=o),n[a]-n[a+o]}_getGradientMagnitude(e,t){const n=this._getDeltaX(e,t),o=this._getDeltaY(e,t);return Math.sqrt(n*n+o*o)}_getLaplace(e,t){const{grayscalePixelData:n,_getPointIndex:o}=this;let i=n[o(t-2,e)];return i+=n[o(t-1,e-1)]+2*n[o(t-1,e)]+n[o(t-1,e+1)],i+=n[o(t,e-2)]+2*n[o(t,e-1)]-16*n[o(t,e)]+2*n[o(t,e+1)]+n[o(t,e+2)],i+=n[o(t+1,e-1)]+2*n[o(t+1,e)]+n[o(t+1,e+1)],i+=n[o(t+2,e)],i}_computeGradient(){const{width:e,height:t}=this,n=new Float32Array(e*t);let o=0,i=0,a=0,r=0;for(r=0;r<t-1;r++){for(a=0;a<e-1;a++)n[o]=this._getGradientMagnitude(a,r),i=Math.max(n[o],i),o++;n[o]=n[o-1],o++}for(let t=n.length;o<t;o++)n[o]=n[o-e];for(let e=0,t=n.length;e<t;e++)n[e]=1-n[e]/i;return n}_computeLaplace(){const{width:e,height:t,_getPointIndex:n}=this,o=new Float32Array(e*t);o.fill(1,0,n(2,0));for(let i=2;i<t-2;i++){o[n(i,0)]=1,o[n(i,1)]=1;for(let t=2;t<e-2;t++)o[n(i,t)]=this._getLaplace(t,i)>.33?0:1;o[n(i,e-2)]=1,o[n(i,e-1)]=1}return o.fill(1,n(t-2,0)),o}_computeGradientX(){const{width:e,height:t}=this,n=new Float32Array(e*t);let o=0;for(let i=0;i<t;i++)for(let t=0;t<e;t++)n[o++]=this._getDeltaX(t,i);return n}_computeGradientY(){const{width:e,height:t}=this,n=new Float32Array(e*t);let o=0;for(let i=0;i<t;i++)for(let t=0;t<e;t++)n[o++]=this._getDeltaY(t,i);return n}_getGradientUnitVector(e,t){const{gradXNew:n,gradYNew:o,_getPointIndex:i}=this,a=n[i(t,e)],r=o[i(t,e)];let s=Math.sqrt(a*a+r*r);return s=Math.max(s,1e-100),[a/s,r/s]}_getGradientDirection(e,t,n,o){const i=this._getGradientUnitVector(e,t),a=this._getGradientUnitVector(n,o);let r=i[1]*(n-e)-i[0]*(o-t),s=a[1]*(n-e)-a[0]*(o-t);r<0&&(r=-r,s=-s),e!==n&&t!==o&&(r*=Math.SQRT1_2,s*=Math.SQRT1_2),s=Math.min(Math.max(s,-1),1);const l=jw*(Math.acos(Math.min(r,1))+Math.acos(s));return isNaN(l)||!isFinite(l)?(console.warn("Found non-direction:",e,t,n,o,r,s,l),1):l}getCost(e,t){return this._getWeightedDistance(e,t)}_getWeightedDistance(e,t){const{_getPointIndex:n,width:o,height:i}=this,[a,r]=e,[s,l]=t;if(s<0||s>=o||l<0||l>=i)return 1;if(a<0||r<0||a>=o||r>=i)return 0;const d=n(l,s);let c=this.gradMagnitude[d];return a!==s&&r!==l||(c*=Math.SQRT1_2),.43*c+.43*this.laplace[d]+.11*this._getGradientDirection(a,r,s,l)}_getNeighborPoints(e){const{width:t,height:n}=this,o=[],i=Math.max(e[0]-1,0),a=Math.max(e[1]-1,0),r=Math.min(e[0]+1,t-1),s=Math.min(e[1]+1,n-1);for(let t=a;t<=s;t++)for(let n=i;n<=r;n++)n===e[0]&&t===e[1]||o.push([n,t]);return o}static createInstanceFromRawPixelData(e,t,n,o){const i=e.length,a=new Float32Array(i),{lower:r,upper:s}=o,l=s-r;for(let t=0,n=e.length;t<n;t++)a[t]=Math.max(0,Math.min(1,(e[t]-r)/l));return new Kw(a,t,n)}}class Yw{constructor(e,t){ae(this,"pointArray",void 0),ae(this,"_controlPointIndexes",void 0),this.pointArray=e?e.slice():[],this._controlPointIndexes=t?t.slice():[]}getPoint(e){return this.pointArray[e]}getLastPoint(){return this.pointArray[this.pointArray.length-1]}isControlPoint(e){const t=this.pointArray.indexOf(e);if(-1!==t)return-1!==this._controlPointIndexes.indexOf(t);throw new Error("Error: isControlPoint called with not in list point.")}addPoint(e){this.pointArray.push(e)}addControlPoint(e){const t=this.pointArray.indexOf(e);if(-1===t)throw new Error("Cannot mark a non registered point as control point.");this._controlPointIndexes.push(t)}getControlPoints(){return this._controlPointIndexes.map((e=>this.pointArray[e]))}getNumControlPoints(){return this._controlPointIndexes.length}removeLastControlPoint(){this._controlPointIndexes.length&&this._controlPointIndexes.pop()}getLastControlPoint(){if(this._controlPointIndexes.length)return this.pointArray[this._controlPointIndexes[this._controlPointIndexes.length-1]]}removeLastPoints(e){this.pointArray.splice(this.pointArray.length-e,e)}addPoints(e){this.pointArray=this.pointArray.concat(e)}prependPath(e){const t=e.pointArray.length,n=[];this.pointArray=e.pointArray.concat(this.pointArray);for(let e=0;e<this._controlPointIndexes.length;++e)n[e]=this._controlPointIndexes[e]+t;this._controlPointIndexes=e._controlPointIndexes.concat(n)}appendPath(e){this.addPoints(e.pointArray),e._controlPointIndexes.forEach((e=>this._controlPointIndexes.push(e)))}}class Xw extends Vh{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:ac.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{undo:{method:"undo",bindings:[{key:"Escape"}]}}}}),e=this,ae(this,"scissors",void 0),ae(this,"scissorsNext",void 0),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",!1),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,r=o*o,s=t.data.contour.polyline.map((e=>a.worldToCanvas(e)));let l=s[s.length-1];for(let e=0;e<s.length;e++){const t=s[e];if(Zo(l,t,n)<=r)return!0;l=t}return!1})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i};const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;this._activateModify(o),io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;const{points:r}=a.handles,s=r.findIndex((e=>e===n)),l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:s},this._activateModify(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()})),ae(this,"_endCallback",(function(t){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const o=t.detail,{element:i}=o,{annotation:a,viewportIdsToRender:r,newAnnotation:s,contourHoleProcessingEnabled:l}=e.editData,{data:d}=a;d.handles.activeHandleIndex=null,e._deactivateModify(i),e._deactivateDraw(i),vr(i);const c=(0,oe.getEnabledElement)(i);if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage||n)return mt(a.annotationUID),e.clearEditData(),void io(r);io(r);const h=s?qe.Completed:qe.HandlesUpdated;e.triggerChangeEvent(a,c,h,l),e.clearEditData()})),ae(this,"triggerChangeEvent",(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:qe.StatsUpdated,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];n===qe.Completed?tt(e,o):Qe(e,t.viewport.element,n)})),ae(this,"_mouseDownCallback",(e=>{const t=e.type===se.MOUSE_DOUBLE_CLICK,{annotation:n,viewportIdsToRender:o,worldToSlice:i,sliceToWorld:a}=this.editData;if(this.editData.closed)return;const r=e.detail,{element:s}=r,{currentPoints:l}=r,{canvas:d,world:c}=l;let h=c;const u=(0,oe.getEnabledElement)(s),{viewport:g,renderingEngine:v}=u,m=this.editData.currentPath.getControlPoints();let p=m.length>=2&&t;if(m.length>=2){const e={index:-1,distSquared:1/0};for(let t=0,n=m.length;t<n;t++){const n=a(m[t]),o=Xo(d,g.worldToCanvas(n));o<=100&&o<e.distSquared&&(e.distSquared=o,e.index=t)}0===e.index&&(p=!0)}const{snapHandleNearby:f}=this.configuration;if(f&&!this.editData.closed){const e=new Yw,t=this.scissors.findMinNearby(i(c),1),n=this.scissors.findPathToPoint(t);e.addPoints(n),e.prependPath(this.editData.confirmedPath),h=a(t),this.editData.currentPath=e}this.editData.closed=this.editData.closed||p,this.editData.confirmedPath=this.editData.currentPath;const w=this.editData.currentPath.getLastPoint();this.editData.confirmedPath.addControlPoint(w),n.data.handles.points.push(a(w)),this.scissors.startSearch(i(h)),n.invalidated=!0,io(o),this.editData.closed&&(this.updateAnnotation(this.editData.confirmedPath),this._endCallback(e)),e.preventDefault()})),ae(this,"_mouseMoveCallback",(e=>{const{element:t,currentPoints:n}=e.detail,{world:o,canvas:i}=n,{renderingEngine:a}=(0,oe.getEnabledElement)(t),r=Fi(t,this.getToolName());this.editData.lastCanvasPoint=i;const{width:s,height:l}=this.scissors,{worldToSlice:d}=this.editData,c=d(o);if(c[0]<0||c[1]<0||c[0]>=s||c[1]>=l)return;const h=this.scissors.findPathToPoint(c),u=new Yw;u.addPoints(h),u.prependPath(this.editData.confirmedPath),this.editData.currentPath=u,io(r),e.preventDefault()})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData;if(void 0===a)console.warn("No drag implemented for livewire");else{const{currentPoints:e}=t,i=e.world;this.editHandle(i,n,o,a)}const r=(0,oe.getEnabledElement)(n),{renderingEngine:s}=r;io(i)})),ae(this,"cancel",(e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData;o&&mt(t.annotationUID);const i=(0,oe.getEnabledElement)(e),{renderingEngine:a}=i;return io(n),this.editData=null,this.scissors=null,t.annotationUID})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_MOVE,this._mouseMoveCallback),e.addEventListener(se.MOUSE_DOWN,this._mouseDownCallback),e.addEventListener(se.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.addEventListener(se.TOUCH_TAP,this._mouseDownCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_MOVE,this._mouseMoveCallback),e.removeEventListener(se.MOUSE_DOWN,this._mouseDownCallback),e.removeEventListener(se.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.removeEventListener(se.TOUCH_TAP,this._mouseDownCallback)}))}setupBaseEditData(e,t,n,o,i){var a,r,s;const l=(0,oe.getEnabledElement)(t),{viewport:d}=l;this.isDrawing=!0;const c=d.getImageData(),{imageData:h}=c;let u,g,v,m,{scalarData:p}=c;if(d instanceof oe.VolumeViewport||!p){if(!(d instanceof oe.VolumeViewport))throw new Error("Viewport not supported");{const e=oe.utilities.getCurrentVolumeViewportSlice(d),{sliceToIndexMatrix:t,indexToSliceMatrix:n}=e;u=e=>{const t=oe.utilities.transformWorldToIndex(h,e),o=Sn.vec3.transformMat4([0,0,0],t,n);return[o[0],o[1]]},g=e=>{const n=Sn.vec3.transformMat4([0,0,0],[e[0],e[1],0],t);return oe.utilities.transformIndexToWorld(h,n)},p=e.scalarData,v=e.width,m=e.height}}else v=c.dimensions[0],m=c.dimensions[1],u=e=>{const t=oe.utilities.transformWorldToIndex(h,e);return[t[0],t[1]]},g=e=>oe.utilities.transformIndexToWorld(h,[e[0],e[1],0]);p=oe.utilities.convertToGrayscale(p,v,m);const{voiRange:f}=d.getProperties(),w=u(e);this.scissors=Kw.createInstanceFromRawPixelData(p,v,m,f),o&&(this.scissorsNext=Kw.createInstanceFromRawPixelData(p,v,m,f),this.scissorsNext.startSearch(u(o))),this.scissors.startSearch(w);const I=!o,E=new Yw,C=new Yw,_=I?void 0:new Yw;E.addPoint(w),E.addControlPoint(w);const b=Fi(t,this.getToolName()),T=d.worldToCanvas(e);this.editData={annotation:n,viewportIdsToRender:b,newAnnotation:I,hasMoved:!1,lastCanvasPoint:T,confirmedPath:E,currentPath:C,confirmedPathNext:_,closed:!1,handleIndex:null!==(a=null===(r=this.editData)||void 0===r?void 0:r.handleIndex)&&void 0!==a?a:null===(s=n.handles)||void 0===s?void 0:s.activeHandleIndex,worldToSlice:u,sliceToWorld:g,contourHoleProcessingEnabled:i}}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,{world:i}=n,a=this.createAnnotation(e),r=rc(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(i,o,a,void 0,r),this.addAnnotation(a,o),this._activateDraw(o),e.preventDefault(),io(this.editData.viewportIdsToRender),a}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,t,n,o){var i;const{data:a}=n,{points:r}=a.handles,{length:s}=r,l=r[(o-1+s)%s],d=r[(o+1)%s];if(null===(i=this.editData)||void 0===i||!i.confirmedPathNext){this.setupBaseEditData(l,t,n,d);const{polyline:e}=a.contour,i=new Yw,r=new Yw,{worldToSlice:s}=this.editData,c=Ea(n,o-1),h=Ea(n,o+1);if(-1===h||-1===c)throw new Error("Can't find handle index ".concat(-1===h&&d," ").concat(-1===c&&l));0===o?r.addPoints(e.slice(h+1,c).map(s)):(i.addPoints(e.slice(0,c+1).map(s)),r.addPoints(e.slice(h,e.length).map(s))),this.editData.confirmedPath=i,this.editData.confirmedPathNext=r}const{editData:c,scissors:h}=this,{worldToSlice:u,sliceToWorld:g}=c,{activeHandleIndex:v}=a.handles;if(null==v)a.handles.activeHandleIndex=o;else if(v!==o)throw new Error("Trying to edit a different handle than the one currently being edited ".concat(o,"!==").concat(a.handles.activeHandleIndex));const m=u(e);if(m[0]<0||m[0]>=h.width||m[1]<0||m[1]>=h.height)return;r[o]=g(m);const p=h.findPathToPoint(m),f=this.scissorsNext.findPathToPoint(m),w=new Yw;w.prependPath(c.confirmedPath),0!==o&&w.addPoints(p),w.addPoints(f.reverse()),w.appendPath(c.confirmedPathNext),0===o&&w.addPoints(p),c.currentPath=w,n.invalidated=!0,c.hasMoved=!0}renderAnnotation(e,t){var n;return this.updateAnnotation(null===(n=this.editData)||void 0===n?void 0:n.currentPath),super.renderAnnotation(e,t)}isContourSegmentationTool(){return!1}createAnnotation(e){const t=super.createAnnotation(e),{world:n}=e.detail.currentPoints;return oe.utilities.deepMerge(t,{data:{handles:{points:[[...n]]}}})}undo(e,t,n){this.editData&&this._endCallback(n,!0)}renderAnnotationInstance(e){var t,n;const{annotation:o,enabledElement:i,svgDrawingHelper:a,annotationStyle:r}=e,{viewport:s}=i,{worldToCanvas:l}=s,{annotationUID:d,data:c,highlighted:h}=o,{handles:u}=c,g=null===(t=this.editData)||void 0===t?void 0:t.newAnnotation,{lineWidth:v,lineDash:m,color:p}=r;if(h||g&&o.annotationUID===(null===(n=this.editData)||void 0===n||null===(n=n.annotation)||void 0===n?void 0:n.annotationUID)){const e="0",t=u.points.map(l);Ar(a,d,e,t,{color:p,lineDash:m,lineWidth:v})}return super.renderAnnotationInstance(e),!0}updateAnnotation(e){if(!this.editData||!e)return;const{annotation:t,sliceToWorld:n,worldToSlice:o,closed:i,newAnnotation:a}=this.editData;let{pointArray:r}=e;r.length>1&&(r=[...r,r[0]]);const s=a&&i?Xi.Clockwise:void 0;this.updateContourPolyline(t,{points:r,closed:i,targetWindingDirection:s},{canvasToWorld:n,worldToCanvas:o})}}ae(Xw,"toolName",void 0),Xw.toolName="LivewireContour";const Jw=Xw;class Zw extends Jw{updateInterpolatedAnnotation(e,t){!this.editData&&e.invalidated&&e.data.handles.interpolationSources&&(e.data.contour.originalPolyline=e.data.contour.polyline,queueMicrotask((()=>{if(!e.data.handles.interpolationSources)return;const{points:n}=e.data.handles,{element:o}=t.viewport;this.setupBaseEditData(n[0],o,e);const{length:i}=n,{scissors:a}=this,{nearestEdge:r,repeatInterpolation:s}=this.configuration.interpolation;e.data.handles.originalPoints=n;const{worldToSlice:l,sliceToWorld:d}=this.editData,c=[];if(r){let e=l(n[n.length-1]);n.forEach(((t,o)=>{const i=l(t);e=i,c.push(i),a.startSearch(e),a.findPathToPoint(i),a.findPathToPoint(l(n[(o+3)%n.length]));const s=a.findMinNearby(i,r);oe.utilities.isEqual(i,s)||(c[o]=s,e=s,n[o]=d(s))}))}const h=new Yw;for(let e=0;e<i;e++){a.startSearch(l(n[e]));const t=a.findPathToPoint(l(n[(e+1)%i]));h.addPoints(t)}this.updateAnnotation(h),this.scissors=null,this.scissorsNext=null,this.editData=null,e.data.handles.interpolationSources=null,s&&Qe(e,t.viewport.element,qe.InterpolationUpdated)})))}renderAnnotationInstance(e){var t;const{enabledElement:n,svgDrawingHelper:o}=e,i=e.annotation,{annotationUID:a}=i,{viewport:r}=n,{worldToCanvas:s}=r,{showInterpolationPolyline:l}=this.configuration.interpolation||{};null===(t=this.updateInterpolatedAnnotation)||void 0===t||t.call(this,i,n);const{originalPolyline:d}=i.data.contour,c=super.renderAnnotationInstance(e);if(l&&d&&i.autoGenerated){const e=d.map(s);e.push(e[0]),dh(o,a,"interpolationContour-0",e,{color:"#70ffff",lineWidth:1,fillOpacity:0})}return c}isContourSegmentationTool(){return!0}}ae(Zw,"toolName",void 0),Zw.toolName="LivewireContourSegmentationTool";const $w=Zw;class Qw extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:eI,changeTextCallback:tI,preventHandleOutsideImage:!1,arrowFirst:!0}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;mr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),{arrowFirst:u}=this.configuration,g=r.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:g,referencedImageId:h,...r.getViewReference({points:[i]})},data:{text:"",handles:{points:[[...i],[...i]],activeHandleIndex:null,arrowFirst:u,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};gt(v,o);const m=Fi(o,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),io(m),v})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l]=r.handles.points,d=a.worldToCanvas(s),c=a.worldToCanvas(l),h={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}};return es([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]])<=o})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),mr(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;a&&!r||(s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),a?this.configuration.getTextCallback((e=>{if(!e)return mt(o.annotationUID),io(i),this.editData=null,void(this.isDrawing=!1);o.data.text=e,et(o),io(i)})):Qe(o,n),this.editData=null,this.isDrawing=!1)})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"touchTapCallback",(e=>{2==e.detail.taps&&this.doubleClickCallback(e)})),ae(this,"doubleClickCallback",(e=>{var t;const n=e.detail,{element:o}=n;let i=st(this.getToolName(),o);if(i=this.filterInteractableAnnotationsForElement(o,i),null===(t=i)||void 0===t||!t.length)return;const a=i.find((e=>this.isPointNearTool(o,e,n.currentPoints.canvas,6)));if(!a)return;const r=a;this.configuration.changeTextCallback(a,e.detail,this._doneChangingTextCallback.bind(this,o,r)),this.editData=null,this.isDrawing=!1,e.stopImmediatePropagation(),e.preventDefault()})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_END,this._endCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o,data:r}=n,{handles:d,text:c}=r,{points:h,activeHandleIndex:u}=d;l.annotationUID=o;const{color:g,lineWidth:v,lineDash:m}=this.getAnnotationStyle({annotation:n,styleSpecifier:l}),p=h.map((e=>a.worldToCanvas(e)));let f;ue(n)||this.editData||null===u||(f=[p[u]]),f&&Ar(t,o,"0",p,{color:g,lineWidth:v});const w="1";if(this.configuration.arrowFirst?hf(t,o,w,p[1],p[0],{color:g,width:v,lineDash:m}):hf(t,o,w,p[0],p[1],{color:g,width:v,lineDash:m}),i=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;if(!c)continue;const I=this.getLinkedTextBoxStyle(l,n);if(!I.visibility){r.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}if(!r.handles.textBox.hasMoved){const e=p[1];r.handles.textBox.worldPosition=a.canvasToWorld(e)}const E=a.worldToCanvas(r.handles.textBox.worldPosition),C=Qr(t,o,"1",[c],E,p,{},I),{x:_,y:b,width:T,height:D}=C;r.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([_,b]),topRight:a.canvasToWorld([_+T,b]),bottomLeft:a.canvasToWorld([_,b+D]),bottomRight:a.canvasToWorld([_+T,b+D])}}return i}))}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()}_doneChangingTextCallback(e,t,n){t.data.text=n;const o=(0,oe.getEnabledElement)(e),{renderingEngine:i}=o,a=Fi(e,this.getToolName());io(a),Qe(t,e)}_isInsideVolume(e,t,n){return oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n)}}function eI(e){return e(prompt("Enter your annotation:"))}function tI(e,t,n){return n(prompt("Enter your annotation:"))}ae(Qw,"toolName",void 0),Qw.toolName="ArrowAnnotate";const nI=Qw;class oI extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:iI}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"angleStartedNotYetCompleted",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;mr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l,d]=r.handles.points,c=a.worldToCanvas(s),h=a.worldToCanvas(l),u={start:{x:c[0],y:c[1]},end:{x:h[0],y:h[1]}};if(es([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]])<=o)return!0;if(!d)return!1;const g=a.worldToCanvas(d),v={start:{x:h[0],y:h[1]},end:{x:g[0],y:g[1]}};return es([v.start.x,v.start.y],[v.end.x,v.end.y],[n[0],n[1]])<=o})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),mr(o);const a=(0,oe.getEnabledElement)(o),{renderingEngine:r}=a;io(i),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;if(this.angleStartedNotYetCompleted&&2===s.handles.points.length)return void(this.editData.handleIndex=2);this.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o),this.editData=null,this.isDrawing=!1})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){var h;const o=s[n],{annotationUID:r,data:u}=o,{points:g,activeHandleIndex:v}=u.handles;c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),w=g.map((e=>a.worldToCanvas(e)));let I;if(u.cachedStats[l]&&null!=u.cachedStats[l].angle?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(u.cachedStats[l]={angle:null},this._calculateCachedStats(o,d,e)),ue(o)||this.editData||null===v||(I=[w[v]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;I&&Ar(t,r,"0",w,{color:m,lineDash:f,lineWidth:p});let E="1";if(Zr(t,r,E,w[0],w[1],{color:m,width:p,lineDash:f}),i=!0,3!==w.length)return i;if(E="2",Zr(t,r,E,w[1],w[2],{color:m,width:p,lineDash:f}),null===(h=u.cachedStats[l])||void 0===h||!h.angle)continue;const C=this.getLinkedTextBoxStyle(c,o);if(!C.visibility){u.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const _=this.configuration.getTextLines(u,l);if(!u.handles.textBox.hasMoved){const e=w[1];u.handles.textBox.worldPosition=a.canvasToWorld(e)}const b=a.worldToCanvas(u.handles.textBox.worldPosition),T=Qr(t,r,"1",_,b,w,{},C),{x:D,y:S,width:y,height:M}=T;u.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,S]),topRight:a.canvasToWorld([D+y,S]),bottomLeft:a.canvasToWorld([D,S+M]),bottomRight:a.canvasToWorld([D+y,S+M])}}return i})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{element:i}=n.viewport;if(3!==o.handles.points.length)return;const a=o.handles.points[0],r=o.handles.points[1],s=o.handles.points[2],{cachedStats:l}=o,d=Object.keys(l);for(let e=0;e<d.length;e++){const n=d[e],o=Vf([a,r],[r,s]),{dimensions:i,imageData:c}=this.getTargetIdImage(n,t);this.isHandleOutsideImage=[a,r,s].map((e=>oe.utilities.transformWorldToIndex(c,e))).some((e=>!oe.utilities.indexWithinDimensions(e,i))),l[n]={angle:isNaN(o)?"Incomplete Angle":o}}return e.invalidated=!1,Qe(e,i),l}}function iI(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0!==o)return isNaN(o)?["".concat(o)]:["".concat(Qd(o)," ").concat(String.fromCharCode(176))]}ae(oI,"toolName",void 0),oI.toolName="Angle";const aI=oI,rI=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const o=2===t[0].length?[0,0]:[0,0,0],i=t.length;for(const e of t)o[0]+=e[0]/i,o[1]+=e[1]/i,3===o.length&&(o[2]+=e[2]/i);return o};class sI extends Kr{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:lI,showArcLines:!1}}),e=this,ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"angleStartedNotYetCompleted",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;mr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h,...r.getViewReference({points:[i]})},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{distanceToPoint:s,distanceToPoint2:l}=this.distanceToLines({viewport:a,points:r.handles.points,canvasCoords:n,proximity:o});return s<=o||l<=o})),ae(this,"toolSelectedCallback",(function(t,n,o,i){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:6;const r=t.detail,{element:s}=r;n.highlighted=!0;const l=Fi(s,e.getToolName()),d=(0,oe.getEnabledElement)(s),{renderingEngine:c,viewport:h}=d,{isNearFirstLine:u,isNearSecondLine:g}=e.distanceToLines({viewport:h,points:n.data.handles.points,canvasCoords:i,proximity:a});e.editData={annotation:n,viewportIdsToRender:l,movingTextBox:!1,isNearFirstLine:u,isNearSecondLine:g},e._activateModify(s),mr(s),io(l),t.preventDefault()})),ae(this,"_mouseUpCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;if(this.angleStartedNotYetCompleted&&s.handles.points.length<4)return vr(n),void(this.editData.handleIndex=s.handles.points.length);this.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o),this.editData=null,this.isDrawing=!1})),ae(this,"_mouseDownCallback",(e=>{const{annotation:t,handleIndex:n}=this.editData,o=e.detail,{element:i,currentPoints:a}=o,r=a.world,{data:s}=t;return 1===n?(s.handles.points[1]=r,void(this.editData.hasMoved=s.handles.points[1][0]!==s.handles.points[0][0]||s.handles.points[1][1]!==s.handles.points[0][0])):3===n?(s.handles.points[3]=r,this.editData.hasMoved=s.handles.points[3][0]!==s.handles.points[2][0]||s.handles.points[3][1]!==s.handles.points[2][0],void(this.angleStartedNotYetCompleted=!1)):(this.editData.hasMoved=!1,mr(i),s.handles.points[2]=s.handles.points[3]=r,void(this.editData.handleIndex=s.handles.points.length-1))})),ae(this,"_mouseDragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r,isNearFirstLine:s,isNearSecondLine:l}=this.editData,{data:d}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a&&(s||l)){const{deltaPoints:e}=t,n=e.world,i=d.handles.points;s?[i[0],i[1]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})):l&&[i[2],i[3]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;d.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const c=(0,oe.getEnabledElement)(n),{renderingEngine:h}=c;io(i)})),ae(this,"cancel",(e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;i.handles.points.length<4&&mt(t.annotationUID),t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,oe.getEnabledElement)(e),{renderingEngine:r}=a;return io(n),o&&et(t),this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._mouseUpCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(se.MOUSE_CLICK,this._mouseUpCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(se.MOUSE_CLICK,this._mouseUpCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._mouseUpCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(se.MOUSE_DOWN,this._mouseDownCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.removeEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(se.MOUSE_DOWN,this._mouseDownCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){var h;const o=s[n],{annotationUID:r,data:u}=o,{points:g,activeHandleIndex:v}=u.handles;c.annotationUID=r;const{color:m,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:o,styleSpecifier:c}),w=g.map((e=>a.worldToCanvas(e)));let I;if(u.cachedStats[l]&&null!=u.cachedStats[l].angle?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(u.cachedStats[l]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},this._calculateCachedStats(o,d,e)),ue(o)||this.editData||null===v||(I=[w[v]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;I&&Ar(t,r,"0",w,{color:m,lineDash:f,lineWidth:p});const E=[w[0],w[1]],C=[w[2],w[3]];let _="line1";if(Zr(t,r,_,E[0],E[1],{color:m,width:p,lineDash:f}),i=!0,w.length<4)return i;_="line2",Zr(t,r,_,C[0],C[1],{color:m,width:p,lineDash:f}),_="linkLine",Zr(t,r,_,rI(E[0],E[1]),rI(C[0],C[1]),{color:m,lineWidth:"1",lineDash:"1,4"});const{arc1Start:b,arc1End:T,arc2End:D,arc2Start:S}=u.cachedStats[l].points.canvas,{arc1Angle:y,arc2Angle:M}=u.cachedStats[l];if(this.configuration.showArcLines&&(_="arc1",Zr(t,r,_,b,T,{color:m,lineWidth:"1"}),_="arc2",Zr(t,r,_,S,D,{color:m,lineWidth:"1"})),null===(h=u.cachedStats[l])||void 0===h||!h.angle)continue;const x=this.getLinkedTextBoxStyle(c,o);if(!x.visibility){u.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const O=this.configuration.getTextLines(u,l);if(!u.handles.textBox.hasMoved){const e=ns(w);u.handles.textBox.worldPosition=a.canvasToWorld(e)}const P=a.worldToCanvas(u.handles.textBox.worldPosition),A=Qr(t,r,"cobbAngleText",O,P,w,{},x),{x:R,y:L,width:N,height:k}=A;if(u.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([R,L]),topRight:a.canvasToWorld([R+N,L]),bottomLeft:a.canvasToWorld([R,L+k]),bottomRight:a.canvasToWorld([R+N,L+k])},this.configuration.showArcLines){const e="arcAngle1",n=["".concat(y.toFixed(2)," ").concat(String.fromCharCode(176))],o=rI(b,T);Jr(t,r,e,n,o,{...x,padding:3});const i="arcAngle2",a=["".concat(M.toFixed(2)," ").concat(String.fromCharCode(176))],s=rI(S,D);Jr(t,r,i,a,s,{...x,padding:3})}}return i})),ae(this,"distanceToLines",(e=>{let{viewport:t,points:n,canvasCoords:o,proximity:i}=e;const[a,r,s,l]=n,d=t.worldToCanvas(a),c=t.worldToCanvas(r),h=t.worldToCanvas(s),u=t.worldToCanvas(l),g={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}},v={start:{x:h[0],y:h[1]},end:{x:u[0],y:u[1]}},m=es([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]]),p=es([v.start.x,v.start.y],[v.end.x,v.end.y],[o[0],o[1]]);let f=!1,w=!1;return m<=i?f=!0:p<=i&&(w=!0),{distanceToPoint:m,distanceToPoint2:p,isNearFirstLine:f,isNearSecondLine:w}})),ae(this,"getArcsStartEndPoints",(e=>{let{firstLine:t,secondLine:n,mid1:o,mid2:i}=e;const a=[o,i],r=Vf(t,a),s=Vf(n,a),l=r>90?1:0,d=s>90?0:1,c=rI(a[0],a[1]),h=Math.sqrt((a[1][0]-a[0][0])**2+(a[1][1]-a[0][1])**2),u=.1,g=rI(t[0],t[1]),v=rI(n[0],n[1]),m=[t[l][0]-g[0],t[l][1]-g[1]],p=Math.sqrt(m[0]**2+m[1]**2),f=[m[0]/p,m[1]/p],w=[g[0]+f[0]*h*u,g[1]+f[1]*h*u],I=[c[0]-o[0],c[1]-o[1]],E=Math.sqrt(I[0]**2+I[1]**2),C=[I[0]/E,I[1]/E],_=[o[0]+C[0]*h*u,o[1]+C[1]*h*u],b=[n[d][0]-v[0],n[d][1]-v[1]],T=Math.sqrt(b[0]**2+b[1]**2),D=[b[0]/T,b[1]/T],S=[v[0]+D[0]*h*u,v[1]+D[1]*h*u],y=[c[0]-i[0],c[1]-i[1]],M=Math.sqrt(y[0]**2+y[1]**2),x=[y[0]/M,y[1]/M];return{arc1Start:w,arc1End:_,arc2Start:S,arc2End:[i[0]+x[0]*h*u,i[1]+x[1]*h*u],arc1Angle:r>90?180-r:r,arc2Angle:s>90?180-s:s}})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,25,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(l),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data;if(4!==o.handles.points.length)return;const i=[null,null],a=[null,null];let r=Number.MAX_VALUE;for(let e=0;e<2;e+=1)for(let t=2;t<4;t+=1){const n=Sn.vec3.distance(o.handles.points[e],o.handles.points[t]);n<r&&(r=n,i[1]=o.handles.points[e],i[0]=o.handles.points[(e+1)%2],a[0]=o.handles.points[t],a[1]=o.handles.points[2+(t-1)%2])}const{viewport:s}=n,{element:l}=s,d=o.handles.points.map((e=>s.worldToCanvas(e))),c=[d[0],d[1]],h=[d[2],d[3]],u=rI(c[0],c[1]),g=rI(h[0],h[1]),{arc1Start:v,arc1End:m,arc2End:p,arc2Start:f,arc1Angle:w,arc2Angle:I}=this.getArcsStartEndPoints({firstLine:c,secondLine:h,mid1:u,mid2:g}),{cachedStats:E}=o,C=Object.keys(E);for(let e=0;e<C.length;e++)E[C[e]]={angle:Vf(i,a),arc1Angle:w,arc2Angle:I,points:{canvas:{arc1Start:v,arc1End:m,arc2End:p,arc2Start:f},world:{arc1Start:s.canvasToWorld(v),arc1End:s.canvasToWorld(m),arc2End:s.canvasToWorld(p),arc2Start:s.canvasToWorld(f)}}};return e.invalidated=!1,Qe(e,l),E}}function lI(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0!==o)return["".concat(o.toFixed(2)," ").concat(String.fromCharCode(176))]}ae(sI,"toolName",void 0),sI.toolName="CobbAngle";const dI=sI,{transformWorldToIndex:cI}=oe.utilities;class hI extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:uI,displayBothAxesDistances:!1}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"startedDrawing",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{if(this.startedDrawing)return;this.startedDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;if(!(r instanceof oe.StackViewport))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");mr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};gt(g,o);const v=Fi(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),io(v),g})),ae(this,"isPointNearTool",((e,t,n,o)=>!1)),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;if(this.startedDrawing&&1===s.handles.points.length)return void(this.editData.handleIndex=1);this.startedDrawing=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i),a&&et(o),this.editData=null,this.isDrawing=!1})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,oe.getEnabledElement)(n),{renderingEngine:d}=l;io(i)})),ae(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,this.startedDrawing=!1,t.annotationUID}})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u}=h.handles;c.annotationUID=r;const g=this.getStyle("color",c,o),v=u.map((e=>a.worldToCanvas(e)));if(h.cachedStats[l]&&null!=h.cachedStats[l].xValues?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(h.cachedStats[l]={xValues:[0,0],yValues:[0,0],isHorizontal:!1,units:[""],isUnitless:!1},this._calculateCachedStats(o,d,e)),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let m="0";if(Pr(t,r,m,v[0],{color:g},0),i=!0,2!==v.length)return i;if(m="1",Pr(t,r,m,v[1],{color:g},1),h.cachedStats[l].isUnitless){const e="".concat(r,"-line-1");Zr(t,r,"1",v[0],v[1],{color:g,width:1,shadow:this.configuration.shadow},e)}else{const e=v[0],n=v[1],o=n[1]-e[1],i=n[0]-e[0];let a=[0,0];a=h.cachedStats[l].isHorizontal?[e[0]+i,e[1]]:[e[0],e[1]+o];let s="".concat(r,"-line-1"),d="1";Zr(t,r,d,v[0],a,{color:g,width:1,shadow:this.configuration.shadow},s),s="".concat(r,"-line-2"),d="2",Zr(t,r,d,v[1],a,{color:g,width:1,lineDash:[1,1],shadow:this.configuration.shadow},s)}const p=this.getLinkedTextBoxStyle(c,o);if(!p.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const f=this.configuration.getTextLines(h,l,this.configuration);if(!h.handles.textBox.hasMoved){const e=v[1];h.handles.textBox.worldPosition=a.canvasToWorld(e)}const w=a.worldToCanvas(h.handles.textBox.worldPosition),I=Qr(t,r,"1",f,w,v,{},p),{x:E,y:C,width:_,height:b}=I;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([E,C]),topRight:a.canvasToWorld([E+_,C]),bottomLeft:a.canvasToWorld([E,C+b]),bottomRight:a.canvasToWorld([E+_,C+b])}}return i})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}toolSelectedCallback(e,t,n,o){}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;const r=Fi(i,this.getToolName());let s,l=!1;n.worldPosition||(s=a.handles.points.findIndex((e=>e===n))),this.editData={handleIndex:s,annotation:t,viewportIdsToRender:r},this._activateModify(i),mr(i);const d=(0,oe.getEnabledElement)(i),{renderingEngine:c}=d;io(r),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{element:i}=n.viewport;if(2!==o.handles.points.length)return;const{cachedStats:a}=o,r=Object.keys(a);for(let e=0;e<r.length;e++){const i=r[e],s=this.getTargetIdImage(i,t);if(!s)continue;const{imageData:l}=s,d=o.handles.points[0],c=o.handles.points[1],h=cI(l,d),u=cI(l,c),{values:g,units:v}=Nn(s,[h]),{values:m,units:p}=Nn(s,[u]);let f,w,I,E,C=!1;if(v[0]!==p[0]||v[1]!==p[1]||"raw"===v[0]&&"raw"===p[0]){const e=nl(d,c);f=[e,0],w=[e,0],I=["px"],C=!0}else{const e=n.viewport.worldToCanvas(d),t=n.viewport.worldToCanvas(c),o=t[1]-e[1],i=t[0]-e[0];E=Math.abs(i)>Math.abs(o),f=[g[0],m[0]],w=[g[1],m[1]],I=[v[0],v[1]]}a[i]={xValues:f,yValues:w,isHorizontal:E,units:I,isUnitless:C}}return e.invalidated=!1,Qe(e,i),a}}function uI(e,t,n){const o=e.cachedStats[t],{xValues:i,yValues:a,units:r,isUnitless:s,isHorizontal:l}=o;if(s)return["".concat(Qd(i[0])," px")];if(n.displayBothAxesDistances){const e=Math.abs(i[1]-i[0]),t=Math.abs(a[1]-a[0]);return["".concat(Qd(e)," ").concat(r[0]),"".concat(Qd(t)," ").concat(r[1])]}if(l){const e=Math.abs(i[1]-i[0]);return["".concat(Qd(e)," ").concat(r[0])]}{const e=Math.abs(a[1]-a[0]);return["".concat(Qd(e)," ").concat(r[1])]}}ae(hI,"toolName",void 0),hI.toolName="UltrasoundDirectionalTool";const gI=hI;class vI extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:mI,changeTextCallback:pI,canvasPosition:[10,10],canvasSize:10}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a,l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=vI.createAnnotation({metadata:{...r.getViewReference(),referencedImageId:h}});gt(u,o);const g=Fi(o,this.getToolName());return e.preventDefault(),io(g),this.configuration.getTextCallback((e=>{if(!e)return mt(u.annotationUID),io(g),void(this.isDrawing=!1);u.data.text=e,et(u),io(g)})),u})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{canvasPosition:s,canvasSize:l}=this.configuration;return!(null==s||!s.length)&&Math.abs(n[0]-s[0]+l/2)<=l/2&&Math.abs(n[1]-s[1]+l/2)<=l/2})),ae(this,"toolSelectedCallback",((e,t)=>{t.highlighted=!0,e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t;this._deactivateModify(n),vr(n)})),ae(this,"doubleClickCallback",(e=>{var t;const n=e.detail,{element:o}=n;let i=st(this.getToolName(),o);if(i=this.filterInteractableAnnotationsForElement(o,i),null===(t=i)||void 0===t||!t.length)return;const a=i.find((e=>this.isPointNearTool(o,e,n.currentPoints.canvas,6)));if(!a)return;const r=a;this.configuration.changeTextCallback(a,e.detail,this._doneChangingTextCallback.bind(this,o,r)),this.isDrawing=!1,e.stopImmediatePropagation(),e.preventDefault()})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o}=n;l.annotationUID=o;const{color:r}=this.getAnnotationStyle({annotation:n,styleSpecifier:l}),{canvasPosition:d,canvasSize:c}=this.configuration;if(null!=d&&d.length&&hf(t,o,"1",d.map((e=>e+c)),d,{color:r,width:1}),i=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i}return i}))}cancel(){}handleSelectedCallback(e,t,n){}_doneChangingTextCallback(e,t,n){t.data.text=n;const o=(0,oe.getEnabledElement)(e),{renderingEngine:i}=o,a=Fi(e,this.getToolName());io(a),Qe(t,e)}_isInsideVolume(e,t,n){return oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n)}}function mI(e){return e(prompt("Enter your annotation:"))}function pI(e,t,n){return n(prompt("Enter your annotation:"))}ae(vI,"toolName",void 0),vI.toolName="KeyImage";const fI=vI,wI="magnify-viewport";class II extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}}),ae(this,"_bounds",void 0),ae(this,"editData",void 0),ae(this,"_hasBeenRemoved",!1),ae(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=(0,oe.getEnabledElement)(n),{viewport:a,renderingEngine:r}=i;if(!(a instanceof oe.StackViewport))throw new Error("MagnifyTool only works on StackViewports");const s=this._getReferencedImageId(a);if(!s)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");const l=Fi(n,this.getToolName());return this.editData={referencedImageId:s,viewportIdsToRender:l,enabledElement:i,renderingEngine:r,currentPoints:o},this._createMagnificationViewport(),this._activateDraw(n),mr(n),e.preventDefault(),io(l),!0})),ae(this,"preTouchStartCallback",(e=>{this.preMouseDownCallback(e)})),ae(this,"_createMagnificationViewport",(()=>{const{enabledElement:e,referencedImageId:t,viewportIdsToRender:n,renderingEngine:o,currentPoints:i}=this.editData,{viewport:a}=e,{element:r}=a,s=a.getProperties(),{canvas:l,world:d}=i;let c;if(c=r.querySelector(".magnifyTool"),null===c){const e=document.createElement("div");e.classList.add("magnifyTool"),e.style.display="block",e.style.width="".concat(this.configuration.magnifyWidth,"px"),e.style.height="".concat(this.configuration.magnifyHeight,"px"),e.style.position="absolute",c=e,r.querySelector(".viewport-element").appendChild(e);const t={viewportId:wI,type:oe.Enums.ViewportType.STACK,element:c};o.enableElement(t)}c.style.top="".concat(l[1]-this.configuration.magnifyHeight/2,"px"),c.style.left="".concat(l[0]-this.configuration.magnifyWidth/2,"px");const h=o.getViewport(wI);h.setStack([t]).then((()=>{if(this._hasBeenRemoved)return;h.setProperties(s);const{parallelScale:e}=a.getCamera(),{focalPoint:t,position:n,viewPlaneNormal:o}=h.getCamera(),i=Math.sqrt(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)+Math.pow(t[2]-n[2],2)),r=[d[0],d[1],d[2]],l=[r[0]+i*o[0],r[1]+i*o[1],r[2]+i*o[2]];h.setCamera({parallelScale:e*(1/this.configuration.magnifySize),focalPoint:r,position:l}),h.render()})),c.style.display="block",io(n)})),ae(this,"_dragCallback",(e=>{const t=e.detail,{deltaPoints:n,element:o,currentPoints:i}=t,a=n.world,r=i.canvas,s=(0,oe.getEnabledElement)(o),{renderingEngine:l}=s,d=l.getViewport(wI),c=o.querySelector(".magnifyTool");if(!c)return;c.style.top="".concat(r[1]-this.configuration.magnifyHeight/2,"px"),c.style.left="".concat(r[0]-this.configuration.magnifyWidth/2,"px");const{focalPoint:h,position:u}=d.getCamera(),g=[u[0]+a[0],u[1]+a[1],u[2]+a[2]],v=[h[0]+a[0],h[1]+a[1],h[2]+a[2]];d.setCamera({focalPoint:v,position:g}),d.render()})),ae(this,"_dragEndCallback",(e=>{const{element:t}=e.detail,n=(0,oe.getEnabledElement)(t),{renderingEngine:o}=n;o.disableElement(wI);const i=t.querySelector(".viewport-element"),a=i.querySelector(".magnifyTool");i.removeChild(a),this._deactivateDraw(t),vr(t),this._hasBeenRemoved=!0})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,this._hasBeenRemoved=!1,e.addEventListener(se.MOUSE_UP,this._dragEndCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._dragEndCallback),e.addEventListener(se.TOUCH_END,this._dragEndCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._dragEndCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._dragEndCallback),e.removeEventListener(se.TOUCH_END,this._dragEndCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)}))}_getReferencedImageId(e){const t=this.getTargetId(e);let n;return e instanceof oe.StackViewport&&(n=t.split("imageId:")[1]),n}}ae(II,"toolName",void 0),II.toolName="Magnify";const EI=II,CI=125,_I=e=>e.uid!==e.referencedId;class bI{constructor(e){let{magnifyViewportId:t,sourceEnabledElement:n,radius:o=CI,position:i=[0,0],zoomFactor:a,autoPan:r}=e;ae(this,"_viewportId",void 0),ae(this,"_sourceEnabledElement",void 0),ae(this,"_enabledElement",null),ae(this,"_sourceToolGroup",null),ae(this,"_magnifyToolGroup",null),ae(this,"_isViewportReady",!1),ae(this,"_radius",0),ae(this,"_resized",!1),ae(this,"_resizeViewportAsync",void 0),ae(this,"_canAutoPan",!1),ae(this,"_autoPan",void 0),ae(this,"position",void 0),ae(this,"zoomFactor",void 0),ae(this,"visible",void 0),this._viewportId=null!=t?t:oe.utilities.uuidv4(),this._sourceEnabledElement=n,this._autoPan=r,this.radius=o,this.position=i,this.zoomFactor=a,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=rn(this._resizeViewport.bind(this),1),this._initialize()}get sourceEnabledElement(){return this._sourceEnabledElement}get viewportId(){return this._viewportId}get radius(){return this._radius}set radius(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}update(){const{radius:e,position:t,visible:n}=this,{viewport:o}=this._enabledElement,{element:i}=o,a=2*e,[r,s]=t;this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(i.style,{display:n?"block":"hidden",width:"".concat(a,"px"),height:"".concat(a,"px"),left:"".concat(-e,"px"),top:"".concat(-e,"px"),transform:"translate(".concat(r,"px, ").concat(s,"px)")}),this._isViewportReady&&(this._syncViewports(),o.render())}dispose(){const{viewport:e}=this._enabledElement,{element:t}=e,n=e.getRenderingEngine();this._removeEventListeners(t),n.disableElement(e.id),t.parentNode&&t.parentNode.removeChild(t)}_handleToolModeChanged(e){var t;const{_magnifyToolGroup:n}=this,{toolGroupId:o,toolName:i,mode:a,toolBindingsOptions:r}=e.detail;if((null===(t=this._sourceToolGroup)||void 0===t?void 0:t.id)===o)switch(a){case Xe.Active:n.setToolActive(i,r);break;case Xe.Passive:n.setToolPassive(i);break;case Xe.Enabled:n.setToolEnabled(i);break;case Xe.Disabled:n.setToolDisabled(i);break;default:throw new Error("Unknow tool mode (".concat(a,")"))}}_inheritBorderRadius(e){const t=e.querySelector(".viewport-element"),n=e.querySelector(".cornerstone-canvas");t.style.borderRadius="inherit",n.style.borderRadius="inherit"}_createViewportNode(){const e=document.createElement("div"),{radius:t}=this,n=2*t;return e.classList.add("advancedMagnifyTool"),Object.assign(e.style,{display:"block",width:"".concat(n,"px"),height:"".concat(n,"px"),position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:"".concat(-t,"px"),top:"".concat(-t,"px"),transform:"translate(-1000px, -1000px)"}),e}_convertZoomFactorToParallelScale(e,t,n){const{parallelScale:o}=e.getCamera();return o*(1/n)*(t.canvas.offsetWidth/e.canvas.offsetWidth)}_isStackViewport(e){return"setStack"in e}_isVolumeViewport(e){return"addVolumes"in e}_cloneToolGroups(e,t){const n=e.getActors(),o="".concat(t.id,"-toolGroup"),i=Vn(e.id,e.renderingEngineId),a=i.clone(o,(e=>{const t=i.getToolInstance(e);return t instanceof Kr&&!(t instanceof MI)}));return a.addViewport(t.id,t.renderingEngineId),n.filter(_I).forEach((e=>{uu(this.viewportId,[{segmentationId:e.referencedId,type:Ct.Labelmap}])})),{sourceToolGroup:i,magnifyToolGroup:a}}_cloneStack(e,t){const n=e.getImageIds();t.setStack(n).then((()=>{this._isViewportReady=!0,this.update()}))}_cloneVolumes(e,t){const n=e.getActors().filter((e=>!_I(e))).map((e=>({volumeId:e.uid})));return t.setVolumes(n).then((()=>{this._isViewportReady=!0,this.update()})),t}_cloneViewport(e,t){const{viewportId:n}=this,o=e.getRenderingEngine(),{options:i}=e,a={element:t,viewportId:n,type:e.type,defaultOptions:{...i}};o.enableElement(a);const r=o.getViewport(n);this._isStackViewport(e)?this._cloneStack(e,r):this._isVolumeViewport(e)&&this._cloneVolumes(e,r),this._inheritBorderRadius(t);const s=this._cloneToolGroups(e,r);this._sourceToolGroup=s.sourceToolGroup,this._magnifyToolGroup=s.magnifyToolGroup}_cancelMouseEventCallback(e){e.stopPropagation(),e.preventDefault()}_browserMouseUpCallback(e){const{element:t}=this._enabledElement.viewport;document.removeEventListener("mouseup",this._browserMouseUpCallback),t.addEventListener("mouseup",this._cancelMouseEventCallback),t.addEventListener("mousemove",this._cancelMouseEventCallback)}_browserMouseDownCallback(e){var t;const{element:n}=this._enabledElement.viewport;this._canAutoPan=!(null===(t=e.target)||void 0===t||!t.closest(".advancedMagnifyTool")),document.addEventListener("mouseup",this._browserMouseUpCallback),n.removeEventListener("mouseup",this._cancelMouseEventCallback),n.removeEventListener("mousemove",this._cancelMouseEventCallback)}_mouseDragCallback(e){if(!Ke.isInteractingWithTool)return;const{_autoPan:t}=this;if(!t.enabled||!this._canAutoPan)return;const{currentPoints:n}=e.detail,{viewport:o}=this._enabledElement,{canvasToWorld:i}=o,{canvas:a}=n,{radius:r}=this,s=[r,r],l=nl(s,a),d=r-t.padding;if(l<=d)return;const c=l-d,h=Sn.vec2.sub(Sn.vec2.create(),a,s);Sn.vec2.normalize(h,h),Sn.vec2.scale(h,h,c);const u=Sn.vec2.add(Sn.vec2.create(),this.position,h),g=i(this.position),v=i(u),m=Sn.vec3.sub(Sn.vec3.create(),v,g),p={points:{currentPosition:{canvas:this.position,world:g},newPosition:{canvas:u,world:v}},delta:{canvas:h,world:m}};t.callback(p)}_addBrowserEventListeners(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}_removeBrowserEventListeners(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}_addEventListeners(e){oe.eventTarget.addEventListener(se.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){oe.eventTarget.removeEventListener(se.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}_initialize(){const{_sourceEnabledElement:e}=this,{viewport:t}=e,{canvas:n}=t,o=this._createViewportNode();n.parentNode.appendChild(o),this._addEventListeners(o),this._cloneViewport(t,o),this._enabledElement=(0,oe.getEnabledElement)(o)}_syncViewportsCameras(e,t){const n=e.canvasToWorld(this.position),o=this._convertZoomFactorToParallelScale(e,t,this.zoomFactor),{focalPoint:i,position:a,viewPlaneNormal:r}=t.getCamera(),s=Math.sqrt(Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)+Math.pow(i[2]-a[2],2)),l=[n[0],n[1],n[2]],d=[l[0]+s*r[0],l[1]+s*r[1],l[2]+s*r[2]];t.setCamera({parallelScale:o,focalPoint:l,position:d})}_syncStackViewports(e,t){t.setImageIdIndex(e.getCurrentImageIdIndex())}_syncViewports(){const{viewport:e}=this._sourceEnabledElement,{viewport:t}=this._enabledElement,n=e.getProperties();t.getImageData()&&(t.setProperties(n),this._syncViewportsCameras(e,t),this._isStackViewport(e)&&this._syncStackViewports(e,t),this._syncViewportsCameras(e,t),t.render())}_resizeViewport(){const{viewport:e}=this._enabledElement;e.getRenderingEngine().resize()}}const TI=1-oe.CONSTANTS.EPSILON,{Events:DI}=oe.Enums;class SI{constructor(){ae(this,"_magnifyViewportsMap",void 0),ae(this,"createViewport",((e,t)=>{const{magnifyViewportId:n,sourceEnabledElement:o,position:i,radius:a,zoomFactor:r,autoPan:s}=t,{viewport:l}=o,{element:d}=l,c=new bI({magnifyViewportId:n,sourceEnabledElement:o,radius:a,position:i,zoomFactor:r,autoPan:s});return this._addSourceElementEventListener(d),this._magnifyViewportsMap.set(c.viewportId,{annotation:e,magnifyViewport:c,magnifyViewportInfo:t}),c})),ae(this,"_annotationRemovedCallback",(e=>{const{annotation:t}=e.detail;"AdvancedMagnify"===t.metadata.toolName&&this.destroyViewport(t.data.magnifyViewportId)})),ae(this,"_newStackImageCallback",(e=>{const{viewportId:t,imageId:n}=e.detail,o=this._getMagnifyViewportsMapEntriesBySourceViewportId(t),{viewport:i}=(0,oe.getEnabledElementByViewportId)(t);i.stackActorReInitialized&&this._reset(t),o.forEach((e=>{let{annotation:t}=e;t.metadata.referencedImageId=n,t.invalidated=!0}))})),ae(this,"_newVolumeImageCallback",(e=>{const{renderingEngineId:t,viewportId:n}=e.detail,o=(0,oe.getRenderingEngine)(t).getViewport(n),{viewPlaneNormal:i}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach((e=>{let{annotation:t}=e;const{viewPlaneNormal:n}=t.metadata;if(!(Math.abs(Sn.vec3.dot(n,i))>TI))return;const{handles:a}=t.data,r=o.canvasToWorld([0,0]),s=Sn.vec3.sub(Sn.vec3.create(),r,a.points[0]),l=Sn.vec3.dot(s,i),d=Sn.vec3.scale(Sn.vec3.create(),i,l);for(let e=0,t=a.points.length;e<t;e++){const t=a.points[e];t[0]+=d[0],t[1]+=d[1],t[2]+=d[2]}t.invalidated=!0}))})),this._magnifyViewportsMap=new Map,this._initialize()}static getInstance(){var e;return SI._singleton=null!==(e=SI._singleton)&&void 0!==e?e:new SI,SI._singleton}getViewport(e){var t;return null===(t=this._magnifyViewportsMap.get(e))||void 0===t?void 0:t.magnifyViewport}dispose(){this._removeEventListeners(),this._destroyViewports()}destroyViewport(e){const t=this._magnifyViewportsMap.get(e);if(t){const{magnifyViewport:n}=t,{viewport:o}=n.sourceEnabledElement,{element:i}=o;this._removeSourceElementEventListener(i),n.dispose(),this._magnifyViewportsMap.delete(e)}}_destroyViewports(){Array.from(this._magnifyViewportsMap.keys()).forEach((e=>this.destroyViewport(e)))}_getMagnifyViewportsMapEntriesBySourceViewportId(e){return Array.from(this._magnifyViewportsMap.values()).filter((t=>{let{magnifyViewport:n}=t;const{viewport:o}=n.sourceEnabledElement;return o.id===e}))}_reset(e){this._getMagnifyViewportsMapEntriesBySourceViewportId(e).forEach((t=>{let{magnifyViewport:n,annotation:o,magnifyViewportInfo:i}=t;this.destroyViewport(n.viewportId);const a=(0,oe.getEnabledElementByViewportId)(e);this.createViewport(o,{...i,sourceEnabledElement:{...a}})}))}_addEventListeners(){oe.eventTarget.addEventListener(se.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){oe.eventTarget.removeEventListener(se.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(DI.STACK_NEW_IMAGE,this._newStackImageCallback);const t=e=>{const{viewportId:t}=e.detail;this._reset(t)};e.addEventListener(DI.STACK_VIEWPORT_NEW_STACK,t);const n=e=>{const{viewportId:t}=e.detail;this._reset(t)};e.addEventListener(DI.VOLUME_VIEWPORT_NEW_VOLUME,n),e.addEventListener(DI.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=t,e.newVolumeHandler=n}_removeSourceElementEventListener(e){e.removeEventListener(DI.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(DI.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(DI.STACK_VIEWPORT_NEW_STACK,e.newStackHandler),e.removeEventListener(DI.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}ae(SI,"_singleton",void 0);var yI=function(e){return e.ShowZoomFactorsList="showZoomFactorsList",e}(yI||{});class MI extends Kr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:3,zoomFactorList:[1.5,2,2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:{showZoomFactorsList:{method:"showZoomFactorsList",bindings:[{mouseButton:ic.Secondary,modifierKey:ac.Shift}]}}}}),ae(this,"magnifyViewportManager",void 0),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=(0,oe.getEnabledElement)(o),{viewport:a,renderingEngine:r}=i,s=n.world,l=n.canvas,{magnifyingGlass:d}=this.configuration,{radius:c,zoomFactor:h,autoPan:u}=d,g=this._getCanvasHandlePoints(l,c),v=a.getCamera(),{viewPlaneNormal:m,viewUp:p}=v,f=this.getReferencedImageId(a,s,m,p),w=oe.utilities.uuidv4(),I=oe.utilities.uuidv4(),E=a.getFrameOfReferenceUID(),C={annotationUID:w,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...m],viewUp:[...p],FrameOfReferenceUID:E,referencedImageId:f},data:{sourceViewportId:a.id,magnifyViewportId:I,zoomFactor:h,isCanvasAnnotation:!0,handles:{points:g,activeHandleIndex:null}}};this.magnifyViewportManager.createViewport(C,{magnifyViewportId:I,sourceEnabledElement:i,position:l,radius:c,zoomFactor:h,autoPan:{enabled:u.enabled,padding:u.padding,callback:e=>{const t=C.data.handles.points,{canvas:n}=e.delta;for(let e=0,o=t.length;e<o;e++){const o=t[e];o[0]+=n[0],o[1]+=n[1],C.invalidated=!0}}}}),gt(C,o);const _=Fi(o,this.getToolName());return e.preventDefault(),io(_),C})),ae(this,"onSetToolDisabled",(()=>{this.magnifyViewportManager.dispose(),lt().forEach((e=>{e.metadata.toolName===this.getToolName()&&mt(e.annotationUID)}))})),ae(this,"isPointNearTool",((e,t,n,o)=>{const{data:i}=t,{points:a}=i.handles,r=a,s=r[0],l=r[2],d=r[3],c=.5*Math.abs(l[1]-s[1]),h=_w([[d[0]+c,s[1]+c],n]);return Math.abs(h-c)<2*o})),ae(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Fi(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},mr(o),this._activateModify(o),io(i),e.preventDefault()})),ae(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;const{points:r}=a.handles,s=r.findIndex((e=>e===n)),l=Fi(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:s},this._activateModify(i),mr(i),io(l),e.preventDefault()})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData,{data:r}=o;r.handles.activeHandleIndex=null,this._deactivateModify(n),vr(n),this.editData=null,this.isDrawing=!1,io(i),a&&et(o)})),ae(this,"_dragDrawCallback",(e=>{var t;this.isDrawing=!0;const n=e.detail,{deltaPoints:o}=n,i=null!==(t=null==o?void 0:o.canvas)&&void 0!==t?t:[0,0,0],{annotation:a,viewportIdsToRender:r}=this.editData,{points:s}=a.data.handles;s.forEach((e=>{e[0]+=i[0],e[1]+=i[1]})),a.invalidated=!0,this.editData.hasMoved=!0,io(r)})),ae(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData,{data:r}=o;if(void 0===a){const{deltaPoints:e}=t,n=e.canvas;r.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;io(i)})),ae(this,"_dragHandle",(e=>{const t=e.detail,{annotation:n}=this.editData,{data:o}=n,{points:i}=o.handles,a=i,r=a[0],s=a[2],l=a[3],d=.5*Math.abs(s[1]-r[1]),c=[l[0]+d,r[1]+d],{currentPoints:h}=t,u=_w([c,h.canvas]),g=this._getCanvasHandlePoints(c,u);i[0]=g[0],i[1]=g[1],i[2]=g[2],i[3]=g[3]})),ae(this,"cancel",(e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(e),vr(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,io(n),o&&et(t),this.editData=null,t.annotationUID})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;s=null===(o=s)||void 0===o?void 0:o.filter((e=>e.data.sourceViewportId===a.id));const l=this.filterInteractableAnnotationsForElement(r,s);if(null==l||!l.length)return i;const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<l.length;e++){const n=l[e],{annotationUID:o,data:r}=n,{magnifyViewportId:s,zoomFactor:c,handles:h}=r,{points:u,activeHandleIndex:g}=h;d.annotationUID=o,this.getStyle("lineWidth",d,n),this.getStyle("lineDash",d,n);const v=this.getStyle("color",d,n),m=u,p=m[0],f=m[2],w=m[3],I=.5*Math.abs(f[1]-p[1]),E=[w[0]+I,p[1]+I];if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let C;if(!Re(o))continue;ue(n)||this.editData||null===g||(C=[m[g]]),C&&Ar(t,o,"0",C,{color:v});const _="".concat(o,"-advancedMagnify");ar(t,o,"0",E,I,{color:v,lineWidth:5},_);const b=this.magnifyViewportManager.getViewport(s);b.position=E,b.radius=I,b.zoomFactor=c,b.update(),i=!0}return i})),ae(this,"_getCanvasHandlePoints",((e,t)=>[[e[0],e[1]-t,0],[e[0]+t,e[1],0],[e[0],e[1]+t,0],[e[0]-t,e[1],0]])),this.magnifyViewportManager=SI.getInstance()}showZoomFactorsList(e,t){const{element:n,currentPoints:o}=e.detail,i=(0,oe.getEnabledElement)(n),{viewport:a}=i,{canvas:r}=o,s=n.querySelector(":scope .viewport-element"),l=t.data.zoomFactor,d=this._getZoomFactorsListDropdown(l,(e=>{void 0!==e&&(t.data.zoomFactor=Number.parseFloat(e),t.invalidated=!0),d.parentElement.removeChild(d),a.render()}));Object.assign(d.style,{left:"".concat(r[0],"px"),top:"".concat(r[1],"px")}),s.appendChild(d),d.focus()}_getZoomFactorsListDropdown(e,t){const{zoomFactorList:n}=this.configuration.magnifyingGlass,o=document.createElement("select");return o.size=5,Object.assign(o.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach((e=>{o.addEventListener(e,(e=>e.stopPropagation()))})),o.addEventListener("change",(e=>{e.stopPropagation(),t(o.value)})),o.addEventListener("keydown",(e=>{var n,o;((null!==(n=e.keyCode)&&void 0!==n?n:27===e.which)||"escape"===(null===(o=e.key)||void 0===o?void 0:o.toLowerCase()))&&(e.stopPropagation(),t())})),n.forEach((t=>{const n=document.createElement("option");n.label=t,n.title="Zoom factor ".concat(t.toFixed(1)),n.value=t,n.defaultSelected=t===e,o.add(n)})),o}}ae(MI,"toolName",void 0),ae(MI,"Actions",yI),MI.toolName="AdvancedMagnify";class xI extends zr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"isDrawing",!1),ae(this,"isHandleOutsideImage",!1),ae(this,"_elementWithCursor",null),ae(this,"_currentCursorWorldPosition",null),ae(this,"_currentCanvasPosition",null),ae(this,"_disableCursorEnabled",!1),ae(this,"mouseMoveCallback",(e=>{const{detail:t}=e,{element:n,currentPoints:o}=t;this._currentCursorWorldPosition=o.world,this._currentCanvasPosition=o.canvas,this._elementWithCursor=n;const i=this.getActiveAnnotation(n);return null===i?(this.createInitialAnnotation(o.world,n),!1):(this.updateAnnotationPosition(n,i),!1)})),ae(this,"createInitialAnnotation",((e,t)=>{const n=(0,oe.getEnabledElement)(t);if(!n)throw new Error("No enabled element found");const{viewport:o,renderingEngine:i}=n;this.isDrawing=!0;const a=o.getCamera(),{viewPlaneNormal:r,viewUp:s}=a;if(!r||!s)throw new Error("Camera not found");const l=this.getReferencedImageId(o,e,r,s),d=o.getFrameOfReferenceUID(),c={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...r],viewUp:[...s],FrameOfReferenceUID:d,referencedImageId:l},data:{label:"",handles:{points:[[...e]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(st(this.getToolName(),t).length>0)return null;if(null===gt(c,t))return;const h=Fi(t,this.getToolName(),!1);io(h)})),ae(this,"onCameraModified",(e=>{const t=e.detail,{element:n,previousCamera:o,camera:i}=t,a=(0,oe.getEnabledElement)(n).viewport;if(n!==this._elementWithCursor)return;const r=o.focalPoint,s=i.viewPlaneNormal,l=i.focalPoint,d=[0,0,0];if(Il().subtract(l,r,d),0===d.reduce(((e,t)=>e+t),0))return;const c=Il().dot(d,s);if(Math.abs(c)<.01)return;if(!this._currentCanvasPosition)return;const h=a.canvasToWorld(this._currentCanvasPosition);this._currentCursorWorldPosition=h,this.updateAnnotationPosition(n,this.getActiveAnnotation(n))})),ae(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a,FrameOfReferenceUID:r}=e,s=this._elementWithCursor===a.element;this.configuration.positionSync&&!s&&this.updateViewportImage(a);const{element:l}=a;let d=st(this.getToolName(),l);if(null===(n=d)||void 0===n||!n.length)return i;if(d=this.filterInteractableAnnotationsForElement(l,d),null===(o=d)||void 0===o||!o.length)return i;const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<d.length;e++){const n=d[e],{annotationUID:o,data:r}=n,{handles:l}=r,{points:h}=l;if(!o)return i;c.annotationUID=o;const u=parseFloat(this.getStyle("lineWidth",c,n)),g=this.getStyle("lineDash",c,n),v=this.getStyle("color",c,n);if(h[0].some((e=>isNaN(e))))return i;const m=h.map((e=>a.worldToCanvas(e)));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;if(!Re(o))continue;const p={upper:"upper",right:"right",lower:"lower",left:"left"},[f,w]=m[0],I=s?20:7,E=s?5:7;Zr(t,o,p.upper,[f,w-(I/2+E)],[f,w-I/2],{color:v,lineDash:g,lineWidth:u}),Zr(t,o,p.lower,[f,w+(I/2+E)],[f,w+I/2],{color:v,lineDash:g,lineWidth:u}),Zr(t,o,p.right,[f+(I/2+E),w],[f+I/2,w],{color:v,lineDash:g,lineWidth:u}),Zr(t,o,p.left,[f-(I/2+E),w],[f-I/2,w],{color:v,lineDash:g,lineWidth:u}),i=!0}return i})),this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=ao(this.toolGroupId).viewportsInfo;e&&e.map((e=>(0,oe.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&mr(e.viewport.element)}))}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=ao(this.toolGroupId).viewportsInfo;e&&e.map((e=>(0,oe.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&vr(e.viewport.element)}))}getActiveAnnotation(e){const t=st(this.getToolName(),e);return t.length?t[0]:null}updateAnnotationPosition(e,t){var n;const o=this._currentCursorWorldPosition;if(!o)return;if(null===(n=t.data)||void 0===n||null===(n=n.handles)||void 0===n||!n.points)return;t.data.handles.points=[[...o]],t.invalidated=!0;const i=Fi(e,this.getToolName(),!1);(0,oe.getEnabledElement)(e)&&io(i)}filterInteractableAnnotationsForElement(e,t){var n,o;if(!(t instanceof Array)||0===t.length)return[];const i=t[0],a=null===(n=(0,oe.getEnabledElement)(e))||void 0===n?void 0:n.viewport;if(!a)return[];const r=a.getCamera(),{viewPlaneNormal:s,focalPoint:l}=r;if(!s||!l)return[];const d=null===(o=i.data)||void 0===o||null===(o=o.handles)||void 0===o?void 0:o.points;if(!(d instanceof Array)||1!==d.length)return[];const c=d[0],h=oe.utilities.planar.planeEquation(s,l);return oe.utilities.planar.planeDistanceToPoint(h,c)<this.configuration.displayThreshold?[i]:[]}updateViewportImage(e){const t=this._currentCursorWorldPosition;if(t&&!t.some((e=>isNaN(e))))if(e instanceof oe.StackViewport){const n=oe.utilities.getClosestStackImageIndexForPoint(t,e);if(null===n)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof oe.VolumeViewport){const{focalPoint:n,viewPlaneNormal:o}=e.getCamera();if(!n||!o)return;const i=oe.utilities.planar.planeEquation(o,n),a=oe.utilities.planar.planeDistanceToPoint(i,t,!0);if(Math.abs(a)<.5)return;const r=Sn.vec3.normalize(Sn.vec3.create(),Sn.vec3.fromValues(...o)),s=Sn.vec3.scale(Sn.vec3.create(),r,a),l=Sn.vec3.add(Sn.vec3.create(),Sn.vec3.fromValues(...n),s);{e.setCamera({focalPoint:l});const t=e.getRenderingEngine();t&&t.renderViewport(e.id)}}}}ae(xI,"toolName",void 0),xI.toolName="ReferenceCursors";const OI=xI,PI=[];class AI extends zr{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{viewportId:"",scaleLocation:"bottom"}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",{}),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"_init",(()=>{const e=(0,oe.getRenderingEngines)()[0];if(!e)return;const t=ao(this.toolGroupId).viewportsInfo;if(!t)return;const n=t.map((e=>(0,oe.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)));let{viewport:o}=n[0];const{FrameOfReferenceUID:i}=n[0];if(this.configuration.viewportId&&n.forEach((e=>{e.viewport.id==this.configuration.viewportId&&(o=e.viewport)})),!o)return;const{viewUp:a,viewPlaneNormal:r}=o.getCamera(),s=oe.utilities.getViewportImageCornersInWorld(o);let l=this.editData.annotation;const d=st(this.getToolName(),o.element);if(d.length&&(l=d.filter((e=>e.data.viewportId==o.id))[0]),PI.includes(o.id))this.editData.annotation&&this.editData.annotation.data.viewportId==o.id&&(this.editData.annotation.data.handles.points=s,this.editData.annotation.data.viewportId=o.id);else{const e={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...r],viewUp:[...a],FrameOfReferenceUID:i,referencedImageId:null},data:{handles:{points:s},viewportId:o.id}};PI.push(o.id),gt(e,o.element),l=e}this.editData={viewport:o,renderingEngine:e,annotation:l}})),ae(this,"onSetToolEnabled",(()=>{this._init()})),ae(this,"onCameraModified",(e=>{this.configuration.viewportId=e.detail.viewportId,this._init()})),ae(this,"computeScaleSize",((e,t,n)=>{const o=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];let i;return i="top"==n||"bottom"==n?o.filter((t=>t<.6*e&&t>.2*e)):o.filter((e=>e<.6*t&&e>.2*t)),i[0]})),ae(this,"computeEndScaleTicks",((e,t)=>{const n={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]};return{endTick1:[[e[1][0]+n[t][0][0],e[1][1]+n[t][0][0]],[e[1][0]+n[t][1][0],e[1][1]+n[t][1][1]]],endTick2:[[e[0][0]+n[t][0][0],e[0][1]+n[t][0][0]],[e[0][0]+n[t][1][0],e[0][1]+n[t][1][1]]]}})),ae(this,"computeInnerScaleTicks",((e,t,n,o,i)=>{let a;"bottom"==t||"top"==t?a=i[0][0]-o[0][0]:"left"!=t&&"right"!=t||(a=i[0][1]-o[0][1]);const r=[],s=[],l=[];let d=e;e>=50&&(d=e/10);const c=a/d;for(let e=0;e<d-1;e++){const i={bottom:[[c*(e+1),0],[c*(e+1),5]],top:[[c*(e+1),0],[c*(e+1),-5]],left:[[0,c*(e+1)],[-5,c*(e+1)]],right:[[0,c*(e+1)],[5,c*(e+1)]]};r.push("".concat(n,"-tick").concat(e)),s.push("tick".concat(e)),(e+1)%5==0?l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][0][0],o[1][1]+i[t][0][1]]]):l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][1][0],o[1][1]+i[t][1][1]]])}return{tickIds:r,tickUIDs:s,tickCoordinates:l}})),ae(this,"computeWorldScaleCoordinates",((e,t,n)=>{let o,i=Sn.vec3.subtract(Sn.vec3.create(),n[0],n[1]);i=Sn.vec3.normalize(Sn.vec3.create(),i);let a=Sn.vec3.subtract(Sn.vec3.create(),n[2],n[0]);a=Sn.vec3.normalize(Sn.vec3.create(),a);const r={bottom:[n[1],n[2]],top:[n[0],n[3]],right:[n[2],n[3]],left:[n[0],n[1]]},s=Sn.vec3.add(Sn.vec3.create(),r[t][0],r[t][0]).map((e=>e/2)),l=e/2/Math.sqrt(Math.pow(i[0],2)+Math.pow(i[1],2)+Math.pow(i[2],2));return"top"==t||"bottom"==t?o=[Sn.vec3.subtract(Sn.vec3.create(),s,a.map((e=>e*l))),Sn.vec3.add(Sn.vec3.create(),s,a.map((e=>e*l)))]:"left"!=t&&"right"!=t||(o=[Sn.vec3.add(Sn.vec3.create(),s,i.map((e=>e*l))),Sn.vec3.subtract(Sn.vec3.create(),s,i.map((e=>e*l)))]),o})),ae(this,"computeCanvasScaleCoordinates",((e,t,n,o,i)=>{let a;if("top"==i||"bottom"==i){const o=t[0][0]-t[1][0];a=[[e.width/2-o/2,n.height],[e.width/2+o/2,n.height]]}else if("left"==i||"right"==i){const n=t[0][1]-t[1][1];a=[[o.width,e.height/2-n/2],[o.width,e.height/2+n/2]]}return a})),ae(this,"computeScaleBounds",((e,t,n,o)=>{const i=t*Math.min(1e3,e.width),a=n*Math.min(1e3,e.height),r={bottom:[-a,-i],top:[a,i],left:[a,i],right:[-a,-i]},s={bottom:[e.height,e.width],top:[0,e.width],left:[e.height,0],right:[e.height,e.width]};return{height:s[o][0]+r[o][0],width:s[o][1]+r[o][1]}}))}renderAnnotation(e,t){if(!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:o}=e,i=st(this.getToolName(),o.element).filter((e=>e.data.viewportId==o.id))[0],a=e.viewport.canvas,r=!1;if(!o)return r;const s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l={width:a.width/window.devicePixelRatio||1,height:a.height/window.devicePixelRatio||1},d=i.data.handles.points[0],c=i.data.handles.points[1],h=i.data.handles.points[2],u=i.data.handles.points[3],g=[d,h,c,u],v=Sn.vec3.distance(h,u),m=Sn.vec3.distance(d,h),p=this.computeScaleBounds(l,.05,.05,n),f=this.computeScaleBounds(l,.05,.05,n),w=this.computeScaleSize(v,m,n),I=this.computeWorldScaleCoordinates(w,n,g).map((e=>o.worldToCanvas(e))),E=this.computeCanvasScaleCoordinates(l,I,f,p,n),C=this.computeEndScaleTicks(E,n),{annotationUID:_}=i;s.annotationUID=_;const b=this.getStyle("lineWidth",s,i),T=this.getStyle("lineDash",s,i),D=this.getStyle("color",s,i),S=this.getStyle("shadow",s,i),y="".concat(_,"-scaleline");Zr(t,_,"1",E[0],E[1],{color:D,width:b,lineDash:T,shadow:S},y);const M="".concat(_,"-left");Zr(t,_,"2",C.endTick1[0],C.endTick1[1],{color:D,width:b,lineDash:T,shadow:S},M);const x="".concat(_,"-right");Zr(t,_,"3",C.endTick2[0],C.endTick2[1],{color:D,width:b,lineDash:T,shadow:S},x);const O={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},P=[E[0][0]+O[n][0],E[0][1]+O[n][1]],A=this._getTextLines(w),{tickIds:R,tickUIDs:L,tickCoordinates:N}=this.computeInnerScaleTicks(w,n,_,C.endTick1,C.endTick2);for(let e=0;e<L.length;e++)Zr(t,_,L[e],N[e][0],N[e][1],{color:D,width:b,lineDash:T,shadow:S},R[e]);return Jr(t,_,"text0",A,[P[0],P[1]],{fontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",fontSize:"14px",lineDash:"2,3",lineWidth:"1",shadow:!0,color:D}),r}_getTextLines(e){let t,n;return e>=50?(t=e/10,n=" cm"):(t=e,n=" mm"),[t.toString().concat(n)]}}ae(AI,"toolName",void 0),AI.toolName="ScaleOverlay";const RI=AI,LI=(e,t,n)=>{var o;if(null==t||null===(o=t.data)||void 0===o||null===(o=o.contour)||void 0===o||null===(o=o.polyline)||void 0===o||!o.length)return;const{polyline:i}=t.data.contour,{length:a}=i;let r=1/0;for(let t=0;t<a;t++){const o=nl(e.worldToCanvas(i[t]),n);r=Math.min(r,o)}return r===1/0||isNaN(r)?void 0:r};class NI{constructor(){ae(this,"toolInfo",{toolSize:null,maxToolSize:null})}renderShape(e,t,n){ar(e,"SculptorTool","0",t,this.toolInfo.toolSize,n)}pushHandles(e,t){const{points:n,mouseCanvasPoint:o}=t,i={first:void 0,last:void 0};for(let a=0;a<n.length;a++){const r=nl(e.worldToCanvas(n[a]),o);r>this.toolInfo.toolSize||(this.pushOneHandle(a,r,t),void 0===i.first?(i.first=a,i.last=a):i.last=a)}return i}configureToolSize(e){const t=this.toolInfo;if(t.toolSize&&t.maxToolSize)return;const n=e.detail.element,o=Math.min(n.clientWidth,n.clientHeight)/12;t.toolSize=o,t.maxToolSize=o}updateToolSize(e,t,n){const o=this.toolInfo,i=LI(t,n,e);i>0&&(o.toolSize=Math.min(o.maxToolSize,i))}getMaxSpacing(e){return Math.max(this.toolInfo.toolSize/4,e)}getInsertPosition(e,t,n){let o;const{points:i,element:a,mouseCanvasPoint:r}=n,s=this.toolInfo.toolSize,l=(0,oe.getEnabledElement)(a),{viewport:d}=l,c=d.worldToCanvas(i[e]),h=d.worldToCanvas(i[t]),u=[(c[0]+h[0])/2,(c[1]+h[1])/2],g=nl(r,u);if(g<s){const e={x:(u[0]-r[0])/g,y:(u[1]-r[1])/g};o=[r[0]+s*e.x,r[1]+s*e.y]}else o=u;return d.canvasToWorld(o)}pushOneHandle(e,t,n){const{points:o,mousePoint:i}=n,a=this.toolInfo.toolSize,r=o[e],s=(r[0]-i[0])/t,l=(r[1]-i[1])/t,d=(r[2]-i[2])/t,c={x:i[0]+a*s,y:i[1]+a*l,z:i[2]+a*d};r[0]=c.x,r[1]=c.y,r[2]=c.z}}ae(NI,"shapeName","Circle");const kI=NI;class UI extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{minSpacing:1,referencedToolNames:["PlanarFreehandROI","PlanarFreehandContourSegmentationTool"],toolShape:"circle",referencedToolName:"PlanarFreehandROI"}}),ae(this,"registeredShapes",new Map),ae(this,"isActive",!1),ae(this,"selectedShape",void 0),ae(this,"commonData",{activeAnnotationUID:null,viewportIdsToRender:[],isEditingOpenContour:!1,canvasLocation:void 0}),ae(this,"sculptData",void 0),ae(this,"preMouseDownCallback",(e=>{const t=e.detail,n=t.element;if(this.configureToolSize(e),this.selectFreehandTool(t),null!==this.commonData.activeAnnotationUID)return this.isActive=!0,mr(n),this.activateModify(n),!0})),ae(this,"mouseMoveCallback",(e=>{this.mode===Xe.Active?(this.configureToolSize(e),this.updateCursor(e)):this.commonData.canvasLocation=void 0})),ae(this,"endCallback",(e=>{const t=e.detail,{element:n}=t,o=this.configuration,i=(0,oe.getEnabledElement)(n);this.isActive=!1,this.deactivateModify(n),vr(n);const{renderingEngineId:a,viewportId:r}=i,s=Vn(r,a).getToolInstance(o.referencedToolName),l=this.filterSculptableAnnotationsForElement(n).find((e=>e.annotationUID===this.commonData.activeAnnotationUID));s.configuration.calculateStats&&(l.invalidated=!0),Qe(l,n)})),ae(this,"dragCallback",(e=>{const t=e.detail,n=t.element;this.updateCursor(e);const o=this.filterSculptableAnnotationsForElement(n),i=o.find((e=>e.annotationUID===this.commonData.activeAnnotationUID));if(null==o||!o.length||!this.isActive)return;const a=i.data.contour.polyline;this.sculpt(t,a)})),this.registerShapes(kI.shapeName,kI),this.setToolShape(this.configuration.toolShape)}registerShapes(e,t){const n=new t;this.registeredShapes.set(e,n)}sculpt(e,t){const n=this.configuration,o=e.element,i=(0,oe.getEnabledElement)(o),{viewport:a}=i,r=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,points:t,maxSpacing:r.getMaxSpacing(n.minSpacing),element:o};const s=r.pushHandles(a,this.sculptData);void 0!==s.first&&this.insertNewHandles(s)}interpolatePointsWithinMaxSpacing(e,t,n,o){const{element:i}=this.sculptData,a=(0,oe.getEnabledElement)(i),{viewport:r}=a,s=VI(e+1,t.length);nl(r.worldToCanvas(t[e]),r.worldToCanvas(t[s]))>o&&n.push(e)}updateCursor(e){const t=e.detail,n=t.element,o=(0,oe.getEnabledElement)(n),{renderingEngine:i,viewport:a}=o;this.commonData.viewportIdsToRender=[a.id];const r=this.filterSculptableAnnotationsForElement(n);if(null==r||!r.length)return;const s=r.find((e=>e.annotationUID===this.commonData.activeAnnotationUID));if(this.commonData.canvasLocation=t.currentPoints.canvas,this.isActive)s.highlighted=!0;else{const e=this.registeredShapes.get(this.selectedShape),n=t.currentPoints.canvas;e.updateToolSize(n,a,s)}oo(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const t=this.configuration,n=(0,oe.getEnabledElement)(e),{renderingEngineId:o,viewportId:i}=n,a=[],r=Vn(i,o).getToolInstance(t.referencedToolName);return t.referencedToolNames.forEach((t=>{const n=st(t,e);n&&a.push(...n)})),r.filterInteractableAnnotationsForElement(e,a)}configureToolSize(e){this.registeredShapes.get(this.selectedShape).configureToolSize(e)}insertNewHandles(e){const t=this.findNewHandleIndices(e);let n=0;for(let e=0;e<(null==t?void 0:t.length);e++){const o=t[e]+1+n;this.insertHandleRadially(o),n++}}findNewHandleIndices(e){const{points:t,maxSpacing:n}=this.sculptData,o=[];for(let i=e.first;i<=e.last;i++)this.interpolatePointsWithinMaxSpacing(i,t,o,n);return o}insertHandleRadially(e){const{points:t}=this.sculptData;if(e>t.length-1&&this.commonData.isEditingOpenContour)return;const n=this.registeredShapes.get(this.selectedShape),o=e-1,i=VI(e,t.length),a=n.getInsertPosition(o,i,this.sculptData);t.splice(e,0,a)}selectFreehandTool(e){const t=this.getClosestFreehandToolOnElement(e);void 0!==t&&(this.commonData.activeAnnotationUID=t)}getClosestFreehandToolOnElement(e){const{element:t}=e,n=(0,oe.getEnabledElement)(t),{viewport:o}=n,i=this.configuration,a=this.filterSculptableAnnotationsForElement(t);if(null==a||!a.length)return;const r=e.currentPoints.canvas,s={distance:1/0,toolIndex:void 0,annotationUID:void 0};for(let e=0;e<(null==a?void 0:a.length);e++){if(a[e].isLocked||!a[e].isVisible)continue;const t=LI(o,a[e],r);-1!==t&&t<s.distance&&(s.distance=t,s.toolIndex=e,s.annotationUID=a[e].annotationUID)}return this.commonData.isEditingOpenContour=!a[s.toolIndex].data.contour.closed,i.referencedToolName=a[s.toolIndex].metadata.toolName,s.annotationUID}activateModify(e){e.addEventListener(se.MOUSE_UP,this.endCallback),e.addEventListener(se.MOUSE_CLICK,this.endCallback),e.addEventListener(se.MOUSE_DRAG,this.dragCallback),e.addEventListener(se.TOUCH_TAP,this.endCallback),e.addEventListener(se.TOUCH_END,this.endCallback),e.addEventListener(se.TOUCH_DRAG,this.dragCallback)}deactivateModify(e){e.removeEventListener(se.MOUSE_UP,this.endCallback),e.removeEventListener(se.MOUSE_CLICK,this.endCallback),e.removeEventListener(se.MOUSE_DRAG,this.dragCallback),e.removeEventListener(se.TOUCH_TAP,this.endCallback),e.removeEventListener(se.TOUCH_END,this.endCallback),e.removeEventListener(se.TOUCH_DRAG,this.dragCallback)}setToolShape(e){var t;this.selectedShape=null!==(t=this.registeredShapes.get(e))&&void 0!==t?t:kI.shapeName}renderAnnotation(e,t){const{viewport:n}=e,{element:o}=n,i=this.commonData.viewportIdsToRender;if(!this.commonData.canvasLocation||this.mode!==Xe.Active||!i.includes(n.id))return;const a=this.filterSculptableAnnotationsForElement(o);if(null==a||!a.length)return;const r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};let s=Hr("color",r,Fr.Default,this.mode);this.isActive&&(s=Hr("color",r,Fr.Highlighted,this.mode)),this.registeredShapes.get(this.selectedShape).renderShape(t,this.commonData.canvasLocation,{color:s})}}ae(UI,"toolName",void 0);const VI=(e,t)=>(e+t)%t;UI.toolName="SculptorTool";const WI=UI;class HI extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),ae(this,"preMouseDownCallback",(e=>this._deleteNearbyAnnotations(e,"mouse"))),ae(this,"preTouchStartCallback",(e=>this._deleteNearbyAnnotations(e,"touch")))}_deleteNearbyAnnotations(e,t){const{renderingEngineId:n,viewportId:o,element:i,currentPoints:a}=e.detail,r=Vn(o,n);if(!r)return!1;const s=r._toolInstances,l=[];for(const e in s){const n=s[e];if("function"!=typeof n.isPointNearTool||"function"!=typeof n.filterInteractableAnnotationsForElement)continue;const o=st(e,i);if(!o.length)continue;const r=n.filterInteractableAnnotationsForElement(i,o)||[];for(const e of r)n.isPointNearTool(i,e,a.canvas,10,t)&&l.push(e.annotationUID)}for(const e of l)Ce(e),mt(e);return e.preventDefault(),!0}}ae(HI,"toolName",void 0),HI.toolName="Eraser";const BI=HI,{transformWorldToIndex:FI}=oe.utilities;function GI(e,t){!function(e,t){const{points:n,segmentsLocked:o,segmentIndex:i,segmentationId:a}=t,{viewport:r}=e,s=Ra({operationData:t,viewport:e.viewport});if(!s)return void console.warn("No data found for fillRectangle");const{segmentationImageData:l,segmentationScalarData:d}=s;let c=n.map((e=>FI(l,e)));c=c.map((e=>e.map((e=>Math.round(e)))));const h=go(c,l.getDimensions()),u=r instanceof oe.StackViewport||Xl(c),g=l.getDirection(),v=l.getSpacing(),{viewPlaneNormal:m}=r.getCamera(),p=oe.utilities.getSpacingInNormalDirection({direction:g,spacing:v},m),f=vo(n);let[[w,I],[E,C],[_,b]]=f;w-=p,I+=p,E-=p,C+=p,_-=p,b+=p,co(l,u?()=>!0:e=>{const[t,n,o]=e;return t>=w&&t<=I&&n>=E&&n<=C&&o>=_&&o<=b},(e=>{let{value:t,index:n}=e;o.includes(t)||(d[n]=i)}),h),on(a)}(e,t)}function qI(e,t){!function(e,t){GI(e,Object.assign({},t,{segmentIndex:0}))}(e,t)}class zI extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:GI,ERASE_INSIDE:qI},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"preMouseDownCallback",(e=>{if(!0===this.isDrawing)return;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r}=a;this.isDrawing=!0;const s=r.getCamera(),{viewPlaneNormal:l,viewUp:d}=s,c=fr(r.id);if(!c)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:h,segmentationId:u,type:g}=c,v=Tr(u),m=Cr(u),p=vn(h,v),{representationData:f}=Lu(u),w=f[Ct.Labelmap],I={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...l],viewUp:[...d],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:p},data:{handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null}}},E=Fi(o,this.getToolName());if(this.editData={annotation:I,segmentIndex:v,segmentationId:u,segmentsLocked:m,segmentColor:p,viewportIdsToRender:E,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,segmentationRepresentationUID:h},Xt(w,r)){const{volumeId:e}=w,t=oe.cache.getVolume(e);this.editData={...this.editData,volumeId:e,referencedVolumeId:t.referencedVolumeId}}else this.editData={...this.editData};return this._activateDraw(o),mr(o),e.preventDefault(),io(E),!0})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData,{data:r}=o,{currentPoints:s}=t,l=(0,oe.getEnabledElement)(n),{worldToCanvas:d,canvasToWorld:c}=l.viewport,h=s.world,{points:u}=r.handles;let g,v,m,p,f,w,I,E;switch(u[a]=[...h],a){case 0:case 3:g=d(u[0]),p=d(u[3]),v=[p[0],g[1]],m=[g[0],p[1]],w=c(v),I=c(m),u[1]=w,u[2]=I;break;case 1:case 2:v=d(u[1]),m=d(u[2]),g=[m[0],v[1]],p=[v[0],m[1]],f=c(g),E=c(p),u[0]=f,u[3]=E}o.invalidated=!0,this.editData.hasMoved=!0;const{renderingEngine:C}=l;io(i)})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a}=this.editData,{data:r}=o;if(i&&!a)return;r.handles.activeHandleIndex=null,this._deactivateDraw(n),vr(n);const s=(0,oe.getEnabledElement)(n),l={...this.editData,points:r.handles.points};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(s,l)})),ae(this,"_activateDraw",(e=>{e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{annotation:i}=this.editData,a=i.metadata,r=i.annotationUID,s=i.data,{points:l}=s.handles,d=l.map((e=>o.worldToCanvas(e))),c="rgb(".concat(a.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(Lr(t,r,"0",d[0],d[3],{color:c}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}ae(zI,"toolName",void 0),zI.toolName="RectangleScissor";const jI=zI;class KI extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:Ka,ERASE_INSIDE:tr},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"preMouseDownCallback",(e=>{if(!0===this.isDrawing)return;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,oe.getEnabledElement)(o),{viewport:s}=r;this.isDrawing=!0;const l=s.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=fr(s.id);if(!h)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:u,segmentationId:g,type:v}=h,m=Tr(g),p=Cr(g),f=vn(u,m),{representationData:w}=Lu(g),I=w[v];if(!I)throw new Error("No labelmap data found for the active segmentation, create one before using scissors tool");const E={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:f},data:{handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},C=[s.id];if(this.editData={annotation:E,centerCanvas:a,segmentIndex:m,segmentationId:g,segmentsLocked:p,segmentColor:f,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,segmentationRepresentationUID:u},Xt(I,s)){const{volumeId:e}=I,t=oe.cache.getVolume(e);this.editData={...this.editData,volumeId:e,referencedVolumeId:t.referencedVolumeId}}else this.editData={...this.editData};return this._activateDraw(o),mr(o),e.preventDefault(),io(C),!0})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,oe.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerCanvas:h}=this.editData,{data:u}=d,g=Math.abs(i[0]-h[0]),v=Math.abs(i[1]-h[1]),m=Math.sqrt(g*g+v*v),p=[h[0],h[1]+m],f=[h[0],h[1]-m],w=[h[0]-m,h[1]],I=[h[0]+m,h[1]];u.handles.points=[l(p),l(f),l(w),l(I)],d.invalidated=!0,this.editData.hasMoved=!0,io(c)})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a}=this.editData,{data:r}=o,{viewPlaneNormal:s,viewUp:l}=o.metadata;if(i&&!a)return;r.handles.activeHandleIndex=null,this._deactivateDraw(n),vr(n);const d=(0,oe.getEnabledElement)(n),c={...this.editData,points:r.handles.points,viewPlaneNormal:s,viewUp:l,strategySpecificConfiguration:{}};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(d,c)})),ae(this,"_activateDraw",(e=>{e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback),e.addEventListener(se.TOUCH_END,this._endCallback)})),ae(this,"_deactivateDraw",(e=>{e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,s=a.annotationUID,l=a.data,{points:d}=l.handles,c=d.map((e=>o.worldToCanvas(e))),h=c[0],u=c[1],g=[Math.floor((h[0]+u[0])/2),Math.floor((h[1]+u[1])/2)],v=Math.abs(h[1]-Math.floor((h[1]+u[1])/2)),m="rgb(".concat(r.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(ar(t,s,"0",g,v,{color:m}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}ae(KI,"toolName",void 0),KI.toolName="CircleScissor";const YI=KI;class XI extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:$a,ERASE_INSIDE:er},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"preMouseDownCallback",(e=>{if(!0===this.isDrawing)return;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,oe.getEnabledElement)(o),{viewport:s}=r;this.isDrawing=!0;const l=s.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=fr(s.id);if(!h)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:u,segmentationId:g}=h,v=Tr(g),m=Cr(g),p=vn(u,v);this.isDrawing=!0;const f={metadata:{viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:p},data:{invalidated:!0,handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},highlighted:!0}},w=[s.id];this.editData={annotation:f,centerCanvas:a,segmentationRepresentationUID:u,segmentIndex:v,segmentationId:g,segmentsLocked:m,segmentColor:p,toolGroupId:this.toolGroupId,viewportIdsToRender:w,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1};const{representationData:I}=Lu(g),E=I[Ct.Labelmap];if(Xt(E,s)){const{volumeId:e}=E,t=oe.cache.getVolume(e);this.editData={...this.editData,volumeId:e,referencedVolumeId:t.referencedVolumeId}}else this.editData={...this.editData};return this._activateDraw(o),mr(o),e.preventDefault(),io(w),!0})),ae(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,oe.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerCanvas:h}=this.editData,{data:u}=d,g=Math.abs(i[0]-h[0]),v=Math.abs(i[1]-h[1]),m=Math.sqrt(g*g+v*v),p=[h[0],h[1]+m],f=[h[0],h[1]-m],w=[h[0]-m,h[1]],I=[h[0]+m,h[1]];u.handles.points=[l(p),l(f),l(w),l(I)],d.invalidated=!0,this.editData.hasMoved=!0,io(c)})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a,segmentIndex:r,segmentationRepresentationUID:s,segmentsLocked:l}=this.editData,{data:d}=o,{viewPlaneNormal:c,viewUp:h}=o.metadata;if(i&&!a)return;o.highlighted=!1,d.handles.activeHandleIndex=null,this._deactivateDraw(n),vr(n);const u=(0,oe.getEnabledElement)(n),g={...this.editData,points:d.handles.points,segmentIndex:r,segmentationRepresentationUID:s,segmentsLocked:l,viewPlaneNormal:c,viewUp:h};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(u,g)})),ae(this,"_activateDraw",(e=>{e.addEventListener(se.MOUSE_UP,this._endCallback),e.addEventListener(se.MOUSE_DRAG,this._dragCallback),e.addEventListener(se.MOUSE_CLICK,this._endCallback),e.addEventListener(se.MOUSE_MOVE,this._dragCallback),e.addEventListener(se.TOUCH_END,this._endCallback),e.addEventListener(se.TOUCH_TAP,this._endCallback),e.addEventListener(se.TOUCH_DRAG,this._dragCallback)})),ae(this,"_deactivateDraw",(e=>{e.removeEventListener(se.MOUSE_UP,this._endCallback),e.removeEventListener(se.MOUSE_DRAG,this._dragCallback),e.removeEventListener(se.MOUSE_CLICK,this._endCallback),e.removeEventListener(se.MOUSE_MOVE,this._dragCallback),e.removeEventListener(se.TOUCH_END,this._endCallback),e.removeEventListener(se.TOUCH_DRAG,this._dragCallback),e.removeEventListener(se.TOUCH_TAP,this._endCallback)})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,s=a.annotationUID,l=a.data,{points:d}=l.handles,c=d.map((e=>o.worldToCanvas(e))),h=c[0],u=c[1],g=[Math.floor((h[0]+u[0])/2),Math.floor((h[1]+u[1])/2)],v=Math.abs(h[1]-Math.floor((h[1]+u[1])/2)),m="rgb(".concat(r.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(ar(t,s,"0",g,v,{color:m}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}ae(XI,"toolName",void 0),XI.toolName="SphereScissor";const JI=XI,{transformWorldToIndex:ZI}=oe.utilities;class $I extends yw{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{numSlicesToPropagate:10,calculatePointsInsideVolume:!1}}),ae(this,"touchDragCallback",void 0),ae(this,"mouseDragCallback",void 0),ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",!1),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l;let h,u,g;if(r instanceof oe.StackViewport)throw new Error("Stack Viewport Not implemented");{const e=this.getTargetId(r);g=oe.utilities.getVolumeId(e),u=oe.cache.getVolume(g),h=oe.utilities.getClosestImageId(u,i,d)}const v=oe.utilities.getSpacingInNormalDirection(u,d),m=this._getStartSliceIndex(u,i,v,d),p=this._getEndSliceIndex(u,i,v,d),f=r.getFrameOfReferenceUID(),w={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:f,referencedImageId:h,volumeId:g,spacingInNormal:v,enabledElement:a},data:{label:"",startSlice:m,endSlice:p,handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...i],[...i]],activeHandleIndex:null},cachedStats:{pointsInVolume:[],projectionPoints:[]},labelmapUID:null}};gt(w,o);const I=Fi(o,this.getToolName());return this.editData={annotation:w,viewportIdsToRender:I,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(I),w})),ae(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;o.highlighted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n);const l=(0,oe.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID);const d=this.getTargetId(l.viewport),c=oe.cache.getVolume(d.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(o,c,l),io(i),a&&et(o)})),ae(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o}=e,i=st(this.getToolName(),o.element);if(null==i||!i.length)return n;const a=o.getCurrentImageIdIndex(),r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let s=0;s<i.length;s++){const l=i[s],{annotationUID:d,data:c}=l,{startSlice:h,endSlice:u}=c,{points:g,activeHandleIndex:v}=c.handles;r.annotationUID=d;const m=this.getStyle("lineWidth",r,l),p=this.getStyle("lineDash",r,l),f=this.getStyle("color",r,l),w=g.map((e=>o.worldToCanvas(e))),I=w[0],E=_w(w),{centerPointRadius:C}=this.configuration;if(a<Math.min(h,u)||a>Math.max(h,u))continue;l.invalidated&&this._throttledCalculateCachedStats(l,e);let _,b=!1;if(a===Math.round((h+u)/2)&&(b=!0),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!Re(d))continue;ue(l)||this.editData||null===v||!b||(_=[w[v]]),_&&Ar(t,d,"0",_,{color:f});let T=m;b&&(T=3);const D="0";ar(t,d,D,I,E,{color:f,lineDash:p,lineWidth:T}),C>0&&E>3*C&&ar(t,d,"".concat(D,"-center"),I,C,{color:f,lineDash:p,lineWidth:m}),n=!0}return n})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,t){const{data:n,metadata:o}=e,{viewPlaneNormal:i,spacingInNormal:a}=o,{imageData:r}=t,{startSlice:s,endSlice:l}=n,{points:d}=n.handles,c=ZI(r,d[0]);if(c[2]=s,c[2]!==s)throw new Error("Start slice does not match");const h=Sn.vec3.fromValues(c[0],c[1],l),u=Sn.vec3.create();r.indexToWorldVec3(c,u);const g=Sn.vec3.create();r.indexToWorldVec3(h,g);const v=Sn.vec3.distance(u,g),m=[];for(let e=0;e<v;e+=a)m.push(d.map((t=>{const n=Sn.vec3.create();return Sn.vec3.scaleAndAdd(n,t,i,e),Array.from(n)})));n.cachedStats.projectionPoints=m}_computePointsInsideVolume(e,t,n){const{data:o}=e,{viewport:i}=n,a=o.cachedStats.projectionPoints,r=[[]];for(let e=0;e<a.length;e++){if(!t)continue;const n=a[e][0],o=a[e].map((e=>i.worldToCanvas(e))),[s,l]=bw(o),d=i.canvasToWorld(s),c=i.canvasToWorld(l),h=d,u=c,{dimensions:g,imageData:v}=t,m=ZI(v,h),p=ZI(v,n);m[0]=Math.floor(m[0]),m[1]=Math.floor(m[1]),m[2]=Math.floor(p[2]);const f=ZI(v,u);if(f[0]=Math.floor(f[0]),f[1]=Math.floor(f[1]),f[2]=Math.floor(p[2]),this._isInsideVolume(m,f,g)){const e=[[Math.min(m[0],f[0]),Math.max(m[0],f[0])],[Math.min(m[1],f[1]),Math.max(m[1],f[1])],[Math.min(m[2],f[2]),Math.max(m[2],f[2])]],t={center:n,xRadius:Math.abs(d[0]-c[0])/2,yRadius:Math.abs(d[1]-c[1])/2,zRadius:Math.abs(d[2]-c[2])/2},o=co(v,(e=>Wa(t,e)),null,e);r.push(o)}}o.cachedStats.pointsInVolume=r}_calculateCachedStatsTool(e,t){const n=e.data,{viewportId:o,renderingEngineId:i,viewport:a}=t,{cachedStats:r}=n,s=this.getTargetId(a),l=oe.cache.getVolume(s.split(/volumeId:|\?/)[1]);this._computeProjectionPoints(e,l),e.invalidated=!1;const d=se.ANNOTATION_MODIFIED,c={annotation:e,viewportId:o,renderingEngineId:i};return(0,oe.triggerEvent)(oe.eventTarget,d,c),r}_getStartSliceIndex(e,t,n,o){const i=this.configuration.numSlicesToPropagate,a=Math.round(i/2),r=Sn.vec3.create();return Sn.vec3.scaleAndAdd(r,t,o,a*-n),this._getImageIdIndex(e,r,n,o)}_getEndSliceIndex(e,t,n,o){const i=this.configuration.numSlicesToPropagate,a=Math.round(i/2),r=Sn.vec3.create();return Sn.vec3.scaleAndAdd(r,t,o,a*n),this._getImageIdIndex(e,r,n,o)}_getImageIdIndex(e,t,n,o){const i=n/2,{imageIds:a}=e;let r;for(let e=0;e<a.length;e++){const n=a[e],{imagePositionPatient:s}=oe.metaData.get("imagePlaneModule",n),l=Sn.vec3.create();Sn.vec3.sub(l,t,s);const d=Sn.vec3.dot(l,o);Math.abs(d)<i&&(r=e)}return r}}ae($I,"toolName",void 0),$I.toolName="CircleROIStartEndThreshold";const QI=$I;var eE=E(518),tE=E.n(eE),nE=E(744),oE=E.n(nE),iE=E(424),aE=E.n(iE),rE=E(614),sE=E.n(rE);const lE={ANNOTATED_CUBE:1,AXES:2,CUSTOM:3};class dE extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{orientationWidget:{enabled:!0,viewportCorner:tE().Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:dE.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[dE.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE]:{faceProperties:{xPlus:{text:"R",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"L",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:e=>e/2,faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}},[dE.OVERLAY_MARKER_TYPES.AXES]:{},[dE.OVERLAY_MARKER_TYPES.CUSTOM]:{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}}}}),ae(this,"orientationMarkers",void 0),ae(this,"polyDataURL",void 0),ae(this,"_resizeObservers",new Map),ae(this,"onSetToolEnabled",(()=>{this.initViewports(),this._subscribeToViewportEvents()})),ae(this,"onSetToolActive",(()=>{this.initViewports(),this._subscribeToViewportEvents()})),ae(this,"onSetToolDisabled",(()=>{this.cleanUpData(),this._unsubscribeToViewportNewVolumeSet()})),ae(this,"_getViewportsInfo",(()=>ao(this.toolGroupId).viewportsInfo)),ae(this,"resize",(e=>{const t=this.orientationMarkers[e];if(!t)return;const{orientationWidget:n}=t;n.updateViewport()})),this.orientationMarkers={}}_unsubscribeToViewportNewVolumeSet(){const e=()=>{this._getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,oe.getEnabledElementByIds)(t,n),{element:i}=o;i.removeEventListener(oe.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this)),this._resizeObservers.get(t).unobserve(i)}))};oe.eventTarget.removeEventListener(se.TOOLGROUP_VIEWPORT_ADDED,(t=>{t.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())}))}_subscribeToViewportEvents(){const e=()=>{this._getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,oe.getEnabledElementByIds)(t,n),{element:i}=o;this.initViewports(),i.addEventListener(oe.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const a=new ResizeObserver((()=>{setTimeout((()=>{const e=(0,oe.getEnabledElementByIds)(t,n);if(!e)return;const{viewport:o}=e;this.resize(t),o.render()}),100)}));a.observe(i),this._resizeObservers.set(t,a)}))};e(),oe.eventTarget.addEventListener(se.TOOLGROUP_VIEWPORT_ADDED,(t=>{t.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())}))}cleanUpData(){(0,oe.getRenderingEngines)()[0].getViewports().forEach((e=>{const t=this.orientationMarkers[e.id];if(!t)return;const{actor:n,orientationWidget:o}=t;null==o||o.setEnabled(!1),null==o||o.delete(),null==n||n.delete(),e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),e.getRenderingEngine().render(),delete this.orientationMarkers[e.id]}))}initViewports(){const e=(0,oe.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=Wi(t,this.getToolName()),t.forEach((e=>{e.getWidget(this.getToolName())||this.addAxisActorInViewport(e)}))}async addAxisActorInViewport(e){const t=e.id,n=this.configuration.overlayMarkerType,o=this.configuration.overlayConfiguration[n];if(this.orientationMarkers[t]){const{actor:n,orientationWidget:o}=this.orientationMarkers[t];e.getRenderer().removeActor(n),o.setEnabled(!1)}let i;1===n?i=this.createAnnotationCube(o):2===n?i=aE().newInstance():3===n&&(i=await this.createCustomActor());const a=e.getRenderer(),r=e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),{enabled:s,viewportCorner:l,viewportSize:d,minPixelSize:c,maxPixelSize:h}=this.configuration.orientationWidget,u=tE().newInstance({actor:i,interactor:r.getInteractor(),parentRenderer:a});u.setEnabled(s),u.setViewportCorner(l),u.setViewportSize(d),u.setMinPixelSize(c),u.setMaxPixelSize(h),u.updateMarkerOrientation(),this.orientationMarkers[t]={orientationWidget:u,actor:i},e.addWidget(this.getToolName(),u),r.render(),e.getRenderingEngine().render()}async createCustomActor(){const e=this.configuration.overlayConfiguration[lE.CUSTOM].polyDataURL,t=await fetch(e),n=await t.arrayBuffer(),o=sE().newInstance();o.parseAsArrayBuffer(n),o.update();const i=Pt().newInstance();i.shallowCopy(o.getOutputData()),i.getPointData().setActiveScalars("Color");const a=yt().newInstance();a.setInputData(i),a.setColorModeToDirectScalars();const r=xt().newInstance();return r.setMapper(a),r.rotateZ(180),r}createAnnotationCube(e){const t=oE().newInstance();return t.setDefaultStyle({...e.defaultStyle}),t.setXPlusFaceProperty({...e.faceProperties.xPlus}),t.setXMinusFaceProperty({...e.faceProperties.xMinus}),t.setYPlusFaceProperty({...e.faceProperties.yPlus}),t.setYMinusFaceProperty({...e.faceProperties.yMinus}),t.setZPlusFaceProperty({...e.faceProperties.zPlus}),t.setZMinusFaceProperty({...e.faceProperties.zMinus}),t}async createAnnotatedCubeActor(){const e=oE().newInstance(),{faceProperties:t,defaultStyle:n}=this.configuration.annotatedCube;return e.setDefaultStyle(n),Object.keys(t).forEach((n=>{const o="set".concat(n.charAt(0).toUpperCase()+n.slice(1),"FaceProperty");e[o](t[n])})),e}}ae(dE,"toolName",void 0),ae(dE,"CUBE",1),ae(dE,"AXIS",2),ae(dE,"VTPFILE",3),ae(dE,"OVERLAY_MARKER_TYPES",lE),dE.toolName="OrientationMarker";const cE=dE;class hE extends ba{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:hE.SelectMode.Border,searchRadius:6}}),ae(this,"hoverTimer",void 0),ae(this,"mouseMoveCallback",(e=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout((()=>{this._setActiveSegment(e),this.hoverTimer=null}),this.configuration.hoverTimeout),!0))),ae(this,"onSetToolEnabled",(()=>{this.onSetToolActive()})),ae(this,"onSetToolActive",(()=>{this.hoverTimer=null})),ae(this,"onSetToolDisabled",(()=>{this.hoverTimer=null})),this.hoverTimer=null}_setActiveSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Ke.isInteractingWithTool)return;const{element:t,currentPoints:n}=e.detail,o=n.world,i=(0,oe.getEnabledElement)(t);if(!i)return;const{viewport:a}=i,r=fr(a.id);r&&([Ct.Labelmap,Ct.Contour].includes(r.type)?this._setActiveSegmentForType(r,o,a):console.warn("SegmentSelectTool does not support the current segmentation type."))}_setActiveSegmentForType(e,t,n){if(!n.getImageData())return;const{segmentationId:o,type:i}=e;let a;if(this.configuration.mode===hE.SelectMode.Inside)a=Js(o,t,{viewport:n});else switch(i){case Ct.Labelmap:a=Zs(o,t,{viewport:n,searchRadius:this.configuration.searchRadius});break;case Ct.Contour:a=Qs(o)}if(!a||0===a)return;br(o,a);const r=n.getRenderingEngine().getViewports().map((e=>e.id));nn(o),io(r)}}ae(hE,"toolName",void 0),ae(hE,"SelectMode",{Inside:"Inside",Border:"Border"}),hE.toolName="SegmentSelectTool";const uE=hE,{transformWorldToIndex:gE,isEqual:vE}=oe.utilities;class mE extends ba{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),e=this,ae(this,"preMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r}=a,s=r.getCamera(),{viewPlaneNormal:l}=s,d=fr(r.id);if(!d)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:c,type:h,segmentationRepresentationUID:u}=d,g=Tr(c),v=Cr(c),{representationData:m}=Lu(c);let p,f,w,I;if(Xt(m[Ct.Labelmap],r)){const{volumeId:e}=m[h],t=oe.cache.getVolume(e);({dimensions:p,direction:f}=t),w=t.getScalarData(),I=gE(t.imageData,i)}else{const e=rg(r.id,c);if(!e)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const t=oe.cache.getImage(e);w=t.getPixelData();const{imageData:n}=r.getImageData();p=n.getDimensions(),f=n.getDirection(),I=gE(n,i)}const E=this.getFixedDimension(l,f);if(void 0===E)return void console.warn("Oblique paint fill not yet supported");const{floodFillGetter:C,getLabelValue:_,getScalarDataPositionFromPlane:b,inPlaneSeedPoint:T,fixedDimensionValue:D}=this.generateHelpers(w,p,I,E);if(I[0]<0||I[0]>=p[0]||I[1]<0||I[1]>=p[1]||I[2]<0||I[2]>=p[2])return;const S=_(I[0],I[1],I[2]);if(v.includes(S))return;const y=Oa(C,T),{flooded:M}=y;return M.forEach((e=>{const t=b(e[0],e[1]);w[t]=g})),on(c,this.getFramesModified(E,D,y)),!0})),ae(this,"getFramesModified",((e,t,n)=>{const{boundaries:o}=n;if(2===e)return[t];let i=1/0,a=-1/0;for(let e=0;e<o.length;e++){const t=o[e][1];t<i&&(i=t),t>a&&(a=t)}const r=[];for(let e=i;e<=a;e++)r.push(e);return r})),ae(this,"generateHelpers",(function(t,n,o){let i,a,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2;switch(r){case 0:i=o[0],a=[o[1],o[2]];break;case 1:i=o[1],a=[o[0],o[2]];break;case 2:i=o[2],a=[o[0],o[1]];break;default:throw new Error("Invalid fixedDimension: ".concat(r))}const s=(e,t,o)=>o*n[1]*n[0]+t*n[0]+e,l=(e,n,o)=>t[s(e,n,o)],d=e.generateFloodFillGetter(n,r,i,l);return{getScalarDataPositionFromPlane:e.generateGetScalarDataPositionFromPlane(s,r,i),getLabelValue:l,floodFillGetter:d,inPlaneSeedPoint:a,fixedDimensionValue:i}})),ae(this,"generateFloodFillGetter",((e,t,n,o)=>{let i;switch(t){case 0:i=(t,i)=>{if(!(t>=e[1]||t<0||i>=e[2]||i<0))return o(n,t,i)};break;case 1:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[2]||i<0))return o(t,n,i)};break;case 2:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[1]||i<0))return o(t,i,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return i})),ae(this,"generateGetScalarDataPositionFromPlane",((e,t,n)=>{let o;switch(t){case 0:o=(t,o)=>e(n,t,o);break;case 1:o=(t,o)=>e(t,n,o);break;case 2:o=(t,o)=>e(t,o,n);break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return o}))}getFixedDimension(e,t){const n=t.slice(0,3),o=t.slice(3,6),i=t.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(vE(a,r))return 0;const s=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(vE(a,s))return 1;const l=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];return vE(a,l)?2:void 0}}ae(mE,"toolName",void 0),mE.toolName="PaintFill";const pE=mE;class fE extends Kr{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),e=this,ae(this,"_throttledCalculateCachedStats",void 0),ae(this,"editData",void 0),ae(this,"_configuration",void 0),ae(this,"isDrawing",void 0),ae(this,"isHandleOutsideImage",void 0),ae(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,oe.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u={metadata:{viewPlaneNormal:[0,0,1],viewUp:[0,1,0],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:h,toolName:this.getToolName()},data:{invalidated:!0,handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},active:!0}};gt(u,o);const g=Fi(o,this.getToolName(),!1);return this.editData={annotation:u,viewportUIDsToRender:g,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),mr(o),e.preventDefault(),io(g),u})),ae(this,"getHandleNearImagePoint",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles;for(let e=0;e<s.length;e++){const t=s[e],i=a.worldToCanvas(t);if(!0==Sn.vec2.distance(n,i)<o)return r.handles.activeHandleIndex=e,t}r.handles.activeHandleIndex=null})),ae(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,oe.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[3]),c=this._getRectangleImageCoordinates([l,d]),h=[n[0],n[1]],{left:u,top:g,width:v,height:m}=c;if(ts([u,g,v,m],h)<=o)return!0})),ae(this,"toolSelectedCallback",(function(t,n){const o=t.detail,{element:i}=o,{data:a}=n;a.active=!0;const r=Fi(i,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:r},e._activateModify(i),mr(i),io(r),t.preventDefault()})),ae(this,"handleSelectedCallback",(function(t,n,o){const i=t.detail,{element:a}=i,{data:r}=n;r.active=!0;let s,l=!1;o.worldPosition||(s=r.handles.points.findIndex((e=>e===o)));const d=Fi(a,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:d,handleIndex:s},e._activateModify(a),mr(a),io(d),t.preventDefault()})),ae(this,"_mouseUpCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;a&&!r||(s.active=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),vr(n),(0,oe.getEnabledElement)(n),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&mt(o.annotationUID),io(i))})),ae(this,"_mouseDragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:i,handleIndex:a}=this.editData,{data:r}=o;if(void 0===a){const{deltaPoints:e}=t,n=e.world,{points:o}=r.handles;o.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),r.invalidated=!0}else{const{currentPoints:e}=t,o=(0,oe.getEnabledElement)(n),{worldToCanvas:i,canvasToWorld:s}=o.viewport,l=e.world,{points:d}=r.handles;let c,h,u,g,v,m,p,f;switch(d[a]=[...l],a){case 0:case 3:c=i(d[0]),g=i(d[3]),h=[g[0],c[1]],u=[c[0],g[1]],m=s(h),p=s(u),d[1]=m,d[2]=p;break;case 1:case 2:h=i(d[1]),u=i(d[2]),c=[u[0],h[1]],g=[h[0],u[1]],v=s(c),f=s(g),d[0]=v,d[3]=f}r.invalidated=!0}this.editData.hasMoved=!0,(0,oe.getEnabledElement)(n),io(i)})),ae(this,"_activateDraw",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._mouseUpCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(se.TOUCH_END,this._mouseUpCallback),e.addEventListener(se.TOUCH_DRAG,this._mouseDragCallback)})),ae(this,"_deactivateDraw",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(se.MOUSE_MOVE,this._mouseDragCallback),e.removeEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(se.TOUCH_END,this._mouseUpCallback),e.removeEventListener(se.TOUCH_DRAG,this._mouseDragCallback)})),ae(this,"_activateModify",(e=>{Ke.isInteractingWithTool=!0,e.addEventListener(se.MOUSE_UP,this._mouseUpCallback),e.addEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(se.TOUCH_END,this._mouseUpCallback),e.addEventListener(se.TOUCH_DRAG,this._mouseDragCallback)})),ae(this,"_deactivateModify",(e=>{Ke.isInteractingWithTool=!1,e.removeEventListener(se.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(se.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(se.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(se.TOUCH_END,this._mouseUpCallback),e.removeEventListener(se.TOUCH_DRAG,this._mouseDragCallback)})),ae(this,"renderAnnotation",((e,t)=>{var n,o;const i=!1,{viewport:a}=e,{element:r}=a;let s=st(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;this.getTargetId(a),a.getRenderingEngine();const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o}=n,i=(n.metadata,n.data),{points:r,activeHandleIndex:d}=i.handles,c=r.map((e=>a.worldToCanvas(e))),h=this.getStyle("lineWidth",l,n),u=this.getStyle("lineDash",l,n),g=this.getStyle("color",l,n);if(!a.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");let v;this.editData||null===d||(v=[c[d]]),v&&Ar(t,o,"0",v,{color:g}),uf(t,o,"0",c[0],c[3],{color:"black",lineDash:u,lineWidth:h})}})),ae(this,"_getRectangleImageCoordinates",(e=>{const[t,n]=e;return{left:Math.min(t[0],n[0]),top:Math.min(t[1],n[1]),width:Math.abs(t[0]-n[0]),height:Math.abs(t[1]-n[1])}})),ae(this,"_calculateCachedStats",((e,t,n,o,i)=>{const{data:a}=e,{viewportUID:r,renderingEngineUID:s,sceneUID:l}=i,d=a.handles.points[0],c=a.handles.points[3],{cachedStats:h}=a,u=Object.keys(h);for(let e=0;e<u.length;e++){const i=u[e],{imageVolume:a}=this._getImageVolumeFromTargetUID(i,o),{dimensions:r,scalarData:s,vtkImageData:l,metadata:g}=a,v=Sn.vec3.fromValues(0,0,0),m=Sn.vec3.fromValues(0,0,0);if(l.worldToIndexVec3(d,v),v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]),l.worldToIndexVec3(c,m),m[0]=Math.floor(m[0]),m[1]=Math.floor(m[1]),m[2]=Math.floor(m[2]),this._isInsideVolume(v,m,r)){this.isHandleOutsideImage=!1;const e=Math.min(v[0],m[0]),o=Math.max(v[0],m[0]),a=Math.min(v[1],m[1]),l=Math.max(v[1],m[1]),u=Math.min(v[2],m[2]),p=Math.max(v[2],m[2]),{worldWidth:f,worldHeight:w}=fw(t,n,d,c),I=f*w;let E=0,C=0,_=0;const b=r[0],T=r[0]*r[1];for(let t=u;t<=p;t++)for(let n=a;n<=l;n++)for(let i=e;i<=o;i++)E++,C+=s[t*T+n*b+i];C/=E;for(let t=u;t<=p;t++)for(let n=a;n<=l;n++)for(let i=e;i<=o;i++){const e=s[t*T+n*b+i]-C;_+=e*e}_/=E,_=Math.sqrt(_),h[i]={Modality:g.Modality,area:I,mean:C,stdDev:_}}else this.isHandleOutsideImage=!0,h[i]={Modality:g.Modality}}a.invalidated=!1;const g=se.ANNOTATION_MODIFIED,v={annotation:e,viewportUID:r,renderingEngineUID:s,sceneUID:l};return(0,oe.triggerEvent)(oe.eventTarget,g,v),h})),ae(this,"_isInsideVolume",((e,t,n)=>oe.utilities.indexWithinDimensions(e,n)&&oe.utilities.indexWithinDimensions(t,n))),ae(this,"_getTargetVolumeUID",(e=>{if(this.configuration.volumeUID)return this.configuration.volumeUID;const t=e.getVolumeActors();return t||t.length?t[0].uid:void 0})),this._throttledCalculateCachedStats=Fn(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),vr(e);const{annotation:t,viewportUIDsToRender:n}=this.editData,{data:o}=t;return o.active=!1,o.handles.activeHandleIndex=null,io(n),this.editData=null,t.metadata.annotationUID}_getImageVolumeFromTargetUID(e,t){let n;if(e.startsWith("stackTarget")){const o=e.indexOf(":"),i=e.substring(o+1);n=t.getViewport(i).getImageData()}else n=oe.cache.getVolume(e);return{imageVolume:n,viewport:void 0}}_getTargetStackUID(e){return"stackTarget:".concat(e.uid)}}fE.toolName="VideoRedaction";const wE=fE})(),C})()));
3
2
  //# sourceMappingURL=index.js.map