@cornerstonejs/tools 1.50.3 → 1.51.1

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 (489) hide show
  1. package/dist/cjs/eventListeners/annotations/annotationCompletedListener.d.ts +2 -0
  2. package/dist/cjs/eventListeners/annotations/annotationCompletedListener.js +35 -0
  3. package/dist/cjs/eventListeners/annotations/annotationCompletedListener.js.map +1 -0
  4. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +2 -0
  5. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +174 -0
  6. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -0
  7. package/dist/cjs/eventListeners/annotations/contourSegmentation/index.d.ts +1 -0
  8. package/dist/cjs/eventListeners/annotations/contourSegmentation/index.js +9 -0
  9. package/dist/cjs/eventListeners/annotations/contourSegmentation/index.js.map +1 -0
  10. package/dist/cjs/eventListeners/annotations/index.d.ts +2 -1
  11. package/dist/cjs/eventListeners/annotations/index.js +3 -1
  12. package/dist/cjs/eventListeners/annotations/index.js.map +1 -1
  13. package/dist/cjs/eventListeners/index.d.ts +2 -2
  14. package/dist/cjs/eventListeners/index.js +2 -1
  15. package/dist/cjs/eventListeners/index.js.map +1 -1
  16. package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts +3 -0
  17. package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +89 -0
  18. package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -0
  19. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +5 -53
  20. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  21. package/dist/cjs/init.js +2 -0
  22. package/dist/cjs/init.js.map +1 -1
  23. package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +3 -1
  24. package/dist/cjs/stateManagement/annotation/helpers/state.js +21 -1
  25. package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
  26. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +1 -0
  27. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +3 -0
  28. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  29. package/dist/cjs/store/addTool.d.ts +1 -0
  30. package/dist/cjs/store/addTool.js +6 -1
  31. package/dist/cjs/store/addTool.js.map +1 -1
  32. package/dist/cjs/store/index.d.ts +2 -2
  33. package/dist/cjs/store/index.js +2 -1
  34. package/dist/cjs/store/index.js.map +1 -1
  35. package/dist/cjs/store/removeEnabledElement.js +1 -2
  36. package/dist/cjs/store/removeEnabledElement.js.map +1 -1
  37. package/dist/cjs/tools/AdvancedMagnifyTool.js +3 -10
  38. package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -1
  39. package/dist/cjs/tools/annotation/AngleTool.js +5 -18
  40. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
  41. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +9 -28
  42. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  43. package/dist/cjs/tools/annotation/BidirectionalTool.js +7 -22
  44. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
  45. package/dist/cjs/tools/annotation/CircleROITool.js +7 -22
  46. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  47. package/dist/cjs/tools/annotation/CobbAngleTool.js +5 -18
  48. package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
  49. package/dist/cjs/tools/annotation/EllipticalROITool.js +7 -22
  50. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  51. package/dist/cjs/tools/annotation/KeyImageTool.js +5 -12
  52. package/dist/cjs/tools/annotation/KeyImageTool.js.map +1 -1
  53. package/dist/cjs/tools/annotation/LengthTool.js +5 -18
  54. package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
  55. package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +4 -1
  56. package/dist/cjs/tools/annotation/LivewireContourTool.js +30 -22
  57. package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
  58. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +2 -1
  59. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +11 -0
  60. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  61. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +2 -10
  62. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +6 -22
  63. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  64. package/dist/cjs/tools/annotation/ProbeTool.js +8 -23
  65. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  66. package/dist/cjs/tools/annotation/RectangleROITool.js +8 -22
  67. package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
  68. package/dist/cjs/tools/annotation/SplineROITool.d.ts +8 -9
  69. package/dist/cjs/tools/annotation/SplineROITool.js +27 -10
  70. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
  71. package/dist/cjs/tools/annotation/UltrasoundDirectionalTool.js +5 -18
  72. package/dist/cjs/tools/annotation/UltrasoundDirectionalTool.js.map +1 -1
  73. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +7 -6
  74. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  75. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +8 -5
  76. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  77. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js +8 -8
  78. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
  79. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -5
  80. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  81. package/dist/cjs/tools/base/ContourBaseTool.d.ts +2 -8
  82. package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -1
  83. package/dist/cjs/tools/base/ContourSegmentationBaseTool.d.ts +3 -2
  84. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +13 -1
  85. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  86. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js +3 -9
  87. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  88. package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js +3 -9
  89. package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js.map +1 -1
  90. package/dist/cjs/types/AnnotationRenderContext.d.ts +11 -0
  91. package/dist/cjs/types/AnnotationRenderContext.js +3 -0
  92. package/dist/cjs/types/AnnotationRenderContext.js.map +1 -0
  93. package/dist/cjs/types/IToolGroup.d.ts +2 -1
  94. package/dist/cjs/types/index.d.ts +2 -1
  95. package/dist/cjs/utilities/contourSegmentation/areSameSegment.d.ts +2 -0
  96. package/dist/cjs/utilities/contourSegmentation/areSameSegment.js +12 -0
  97. package/dist/cjs/utilities/contourSegmentation/areSameSegment.js.map +1 -0
  98. package/dist/cjs/utilities/contourSegmentation/index.d.ts +2 -0
  99. package/dist/cjs/utilities/contourSegmentation/index.js +11 -0
  100. package/dist/cjs/utilities/contourSegmentation/index.js.map +1 -0
  101. package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts +3 -0
  102. package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.js +8 -0
  103. package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.js.map +1 -0
  104. package/dist/cjs/utilities/contours/areCoplanarContours.d.ts +2 -0
  105. package/dist/cjs/utilities/contours/areCoplanarContours.js +19 -0
  106. package/dist/cjs/utilities/contours/areCoplanarContours.js.map +1 -0
  107. package/dist/cjs/utilities/contours/index.d.ts +2 -1
  108. package/dist/cjs/utilities/contours/index.js +3 -1
  109. package/dist/cjs/utilities/contours/index.js.map +1 -1
  110. package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js +3 -22
  111. package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js.map +1 -1
  112. package/dist/cjs/utilities/math/aabb/index.d.ts +1 -0
  113. package/dist/cjs/utilities/math/aabb/index.js +3 -1
  114. package/dist/cjs/utilities/math/aabb/index.js.map +1 -1
  115. package/dist/cjs/utilities/math/aabb/intersectAABB.d.ts +2 -0
  116. package/dist/cjs/utilities/math/aabb/intersectAABB.js +10 -0
  117. package/dist/cjs/utilities/math/aabb/intersectAABB.js.map +1 -0
  118. package/dist/cjs/utilities/math/point/distanceToPointSquared.js +4 -1
  119. package/dist/cjs/utilities/math/point/distanceToPointSquared.js.map +1 -1
  120. package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.d.ts +2 -0
  121. package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.js +59 -0
  122. package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.js.map +1 -0
  123. package/dist/cjs/utilities/math/polyline/combinePolyline.d.ts +4 -0
  124. package/dist/cjs/utilities/math/polyline/combinePolyline.js +213 -0
  125. package/dist/cjs/utilities/math/polyline/combinePolyline.js.map +1 -0
  126. package/dist/cjs/utilities/math/polyline/containsPoint.d.ts +2 -0
  127. package/dist/cjs/utilities/math/polyline/containsPoint.js +36 -0
  128. package/dist/cjs/utilities/math/polyline/containsPoint.js.map +1 -0
  129. package/dist/cjs/utilities/math/polyline/getAABB.d.ts +2 -0
  130. package/dist/cjs/utilities/math/polyline/getAABB.js +18 -0
  131. package/dist/cjs/utilities/math/polyline/getAABB.js.map +1 -0
  132. package/dist/cjs/utilities/math/polyline/getArea.d.ts +2 -0
  133. package/dist/cjs/utilities/math/polyline/{calculateAreaOfPoints.js → getArea.js} +3 -3
  134. package/dist/cjs/utilities/math/polyline/getArea.js.map +1 -0
  135. package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts +5 -0
  136. package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.js +51 -0
  137. package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.js.map +1 -0
  138. package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts +2 -0
  139. package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js +28 -0
  140. package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js.map +1 -0
  141. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts +2 -0
  142. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js +20 -0
  143. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js.map +1 -0
  144. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts +2 -0
  145. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js +22 -0
  146. package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js.map +1 -0
  147. package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.d.ts +2 -0
  148. package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.js +21 -0
  149. package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.js.map +1 -0
  150. package/dist/cjs/utilities/math/polyline/getNormal2.d.ts +2 -0
  151. package/dist/cjs/utilities/math/polyline/getNormal2.js +12 -0
  152. package/dist/cjs/utilities/math/polyline/getNormal2.js.map +1 -0
  153. package/dist/cjs/utilities/math/polyline/getNormal3.d.ts +2 -0
  154. package/dist/cjs/utilities/math/polyline/getNormal3.js +29 -0
  155. package/dist/cjs/utilities/math/polyline/getNormal3.js.map +1 -0
  156. package/dist/cjs/utilities/math/polyline/getSignedArea.d.ts +2 -0
  157. package/dist/cjs/utilities/math/polyline/getSignedArea.js +20 -0
  158. package/dist/cjs/utilities/math/polyline/getSignedArea.js.map +1 -0
  159. package/dist/cjs/utilities/math/polyline/index.d.ts +14 -3
  160. package/dist/cjs/utilities/math/polyline/index.js +28 -6
  161. package/dist/cjs/utilities/math/polyline/index.js.map +1 -1
  162. package/dist/cjs/utilities/math/polyline/intersectPolyline.d.ts +2 -0
  163. package/dist/cjs/utilities/math/polyline/intersectPolyline.js +20 -0
  164. package/dist/cjs/utilities/math/polyline/intersectPolyline.js.map +1 -0
  165. package/dist/cjs/utilities/math/polyline/isClosed.d.ts +2 -0
  166. package/dist/cjs/utilities/math/polyline/isClosed.js +39 -0
  167. package/dist/cjs/utilities/math/polyline/isClosed.js.map +1 -0
  168. package/dist/esm/eventListeners/annotations/annotationCompletedListener.js +9 -0
  169. package/dist/esm/eventListeners/annotations/annotationCompletedListener.js.map +1 -0
  170. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +153 -0
  171. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -0
  172. package/dist/esm/eventListeners/annotations/contourSegmentation/index.js +2 -0
  173. package/dist/esm/eventListeners/annotations/contourSegmentation/index.js.map +1 -0
  174. package/dist/esm/eventListeners/annotations/index.js +2 -1
  175. package/dist/esm/eventListeners/annotations/index.js.map +1 -1
  176. package/dist/esm/eventListeners/index.js +2 -2
  177. package/dist/esm/eventListeners/index.js.map +1 -1
  178. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +61 -0
  179. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -0
  180. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +5 -53
  181. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  182. package/dist/esm/init.js +3 -1
  183. package/dist/esm/init.js.map +1 -1
  184. package/dist/esm/stateManagement/annotation/helpers/state.js +19 -1
  185. package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
  186. package/dist/esm/store/ToolGroupManager/ToolGroup.js +3 -0
  187. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  188. package/dist/esm/store/addTool.js +4 -0
  189. package/dist/esm/store/addTool.js.map +1 -1
  190. package/dist/esm/store/index.js +2 -2
  191. package/dist/esm/store/index.js.map +1 -1
  192. package/dist/esm/store/removeEnabledElement.js +1 -2
  193. package/dist/esm/store/removeEnabledElement.js.map +1 -1
  194. package/dist/esm/tools/AdvancedMagnifyTool.js +4 -11
  195. package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -1
  196. package/dist/esm/tools/annotation/AngleTool.js +6 -19
  197. package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
  198. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +10 -29
  199. package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  200. package/dist/esm/tools/annotation/BidirectionalTool.js +8 -23
  201. package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
  202. package/dist/esm/tools/annotation/CircleROITool.js +8 -23
  203. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  204. package/dist/esm/tools/annotation/CobbAngleTool.js +6 -19
  205. package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
  206. package/dist/esm/tools/annotation/EllipticalROITool.js +8 -23
  207. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  208. package/dist/esm/tools/annotation/KeyImageTool.js +6 -13
  209. package/dist/esm/tools/annotation/KeyImageTool.js.map +1 -1
  210. package/dist/esm/tools/annotation/LengthTool.js +6 -19
  211. package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
  212. package/dist/esm/tools/annotation/LivewireContourTool.js +31 -23
  213. package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
  214. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +11 -0
  215. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  216. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +7 -23
  217. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  218. package/dist/esm/tools/annotation/ProbeTool.js +9 -24
  219. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  220. package/dist/esm/tools/annotation/RectangleROITool.js +9 -23
  221. package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
  222. package/dist/esm/tools/annotation/SplineROITool.js +26 -9
  223. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
  224. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -19
  225. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js.map +1 -1
  226. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +7 -6
  227. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  228. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +8 -5
  229. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  230. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js +8 -8
  231. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
  232. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -5
  233. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  234. package/dist/esm/tools/base/ContourBaseTool.js.map +1 -1
  235. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +13 -1
  236. package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  237. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +4 -10
  238. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  239. package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js +4 -10
  240. package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js.map +1 -1
  241. package/dist/esm/types/AnnotationRenderContext.js +2 -0
  242. package/dist/esm/types/AnnotationRenderContext.js.map +1 -0
  243. package/dist/esm/utilities/contourSegmentation/areSameSegment.js +9 -0
  244. package/dist/esm/utilities/contourSegmentation/areSameSegment.js.map +1 -0
  245. package/dist/esm/utilities/contourSegmentation/index.js +3 -0
  246. package/dist/esm/utilities/contourSegmentation/index.js.map +1 -0
  247. package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.js +4 -0
  248. package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.js.map +1 -0
  249. package/dist/esm/utilities/contours/areCoplanarContours.js +16 -0
  250. package/dist/esm/utilities/contours/areCoplanarContours.js.map +1 -0
  251. package/dist/esm/utilities/contours/index.js +2 -1
  252. package/dist/esm/utilities/contours/index.js.map +1 -1
  253. package/dist/esm/utilities/contours/reverseIfAntiClockwise.js +3 -22
  254. package/dist/esm/utilities/contours/reverseIfAntiClockwise.js.map +1 -1
  255. package/dist/esm/utilities/math/aabb/index.js +1 -0
  256. package/dist/esm/utilities/math/aabb/index.js.map +1 -1
  257. package/dist/esm/utilities/math/aabb/intersectAABB.js +7 -0
  258. package/dist/esm/utilities/math/aabb/intersectAABB.js.map +1 -0
  259. package/dist/esm/utilities/math/point/distanceToPointSquared.js +4 -1
  260. package/dist/esm/utilities/math/point/distanceToPointSquared.js.map +1 -1
  261. package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.js +56 -0
  262. package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.js.map +1 -0
  263. package/dist/esm/utilities/math/polyline/combinePolyline.js +187 -0
  264. package/dist/esm/utilities/math/polyline/combinePolyline.js.map +1 -0
  265. package/dist/esm/utilities/math/polyline/containsPoint.js +30 -0
  266. package/dist/esm/utilities/math/polyline/containsPoint.js.map +1 -0
  267. package/dist/esm/utilities/math/polyline/getAABB.js +15 -0
  268. package/dist/esm/utilities/math/polyline/getAABB.js.map +1 -0
  269. package/dist/esm/utilities/math/polyline/{calculateAreaOfPoints.js → getArea.js} +2 -2
  270. package/dist/esm/utilities/math/polyline/getArea.js.map +1 -0
  271. package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.js +45 -0
  272. package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.js.map +1 -0
  273. package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js +22 -0
  274. package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js.map +1 -0
  275. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js +14 -0
  276. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js.map +1 -0
  277. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js +16 -0
  278. package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js.map +1 -0
  279. package/dist/esm/utilities/math/polyline/getLineSegmentsIntersection.js +18 -0
  280. package/dist/esm/utilities/math/polyline/getLineSegmentsIntersection.js.map +1 -0
  281. package/dist/esm/utilities/math/polyline/getNormal2.js +6 -0
  282. package/dist/esm/utilities/math/polyline/getNormal2.js.map +1 -0
  283. package/dist/esm/utilities/math/polyline/getNormal3.js +26 -0
  284. package/dist/esm/utilities/math/polyline/getNormal3.js.map +1 -0
  285. package/dist/esm/utilities/math/polyline/getSignedArea.js +17 -0
  286. package/dist/esm/utilities/math/polyline/getSignedArea.js.map +1 -0
  287. package/dist/esm/utilities/math/polyline/index.js +14 -3
  288. package/dist/esm/utilities/math/polyline/index.js.map +1 -1
  289. package/dist/esm/utilities/math/polyline/intersectPolyline.js +14 -0
  290. package/dist/esm/utilities/math/polyline/intersectPolyline.js.map +1 -0
  291. package/dist/esm/utilities/math/polyline/isClosed.js +13 -0
  292. package/dist/esm/utilities/math/polyline/isClosed.js.map +1 -0
  293. package/dist/types/eventListeners/annotations/annotationCompletedListener.d.ts +3 -0
  294. package/dist/types/eventListeners/annotations/annotationCompletedListener.d.ts.map +1 -0
  295. package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +3 -0
  296. package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts.map +1 -0
  297. package/dist/types/eventListeners/annotations/contourSegmentation/index.d.ts +2 -0
  298. package/dist/types/eventListeners/annotations/contourSegmentation/index.d.ts.map +1 -0
  299. package/dist/types/eventListeners/annotations/index.d.ts +2 -1
  300. package/dist/types/eventListeners/annotations/index.d.ts.map +1 -1
  301. package/dist/types/eventListeners/index.d.ts +2 -2
  302. package/dist/types/eventListeners/index.d.ts.map +1 -1
  303. package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts +4 -0
  304. package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts.map +1 -0
  305. package/dist/types/eventListeners/segmentation/segmentationDataModifiedEventListener.d.ts.map +1 -1
  306. package/dist/types/init.d.ts.map +1 -1
  307. package/dist/types/stateManagement/annotation/helpers/state.d.ts +3 -1
  308. package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
  309. package/dist/types/store/ToolGroupManager/ToolGroup.d.ts +1 -0
  310. package/dist/types/store/ToolGroupManager/ToolGroup.d.ts.map +1 -1
  311. package/dist/types/store/addTool.d.ts +1 -0
  312. package/dist/types/store/addTool.d.ts.map +1 -1
  313. package/dist/types/store/index.d.ts +2 -2
  314. package/dist/types/store/index.d.ts.map +1 -1
  315. package/dist/types/store/removeEnabledElement.d.ts.map +1 -1
  316. package/dist/types/tools/AdvancedMagnifyTool.d.ts.map +1 -1
  317. package/dist/types/tools/annotation/AngleTool.d.ts.map +1 -1
  318. package/dist/types/tools/annotation/ArrowAnnotateTool.d.ts.map +1 -1
  319. package/dist/types/tools/annotation/BidirectionalTool.d.ts.map +1 -1
  320. package/dist/types/tools/annotation/CircleROITool.d.ts.map +1 -1
  321. package/dist/types/tools/annotation/CobbAngleTool.d.ts.map +1 -1
  322. package/dist/types/tools/annotation/EllipticalROITool.d.ts.map +1 -1
  323. package/dist/types/tools/annotation/KeyImageTool.d.ts.map +1 -1
  324. package/dist/types/tools/annotation/LengthTool.d.ts.map +1 -1
  325. package/dist/types/tools/annotation/LivewireContourTool.d.ts +4 -1
  326. package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
  327. package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +2 -1
  328. package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -1
  329. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts +2 -10
  330. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
  331. package/dist/types/tools/annotation/ProbeTool.d.ts.map +1 -1
  332. package/dist/types/tools/annotation/RectangleROITool.d.ts.map +1 -1
  333. package/dist/types/tools/annotation/SplineROITool.d.ts +8 -9
  334. package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -1
  335. package/dist/types/tools/annotation/UltrasoundDirectionalTool.d.ts.map +1 -1
  336. package/dist/types/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts.map +1 -1
  337. package/dist/types/tools/annotation/planarFreehandROITool/drawLoop.d.ts.map +1 -1
  338. package/dist/types/tools/annotation/planarFreehandROITool/editLoopCommon.d.ts.map +1 -1
  339. package/dist/types/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts.map +1 -1
  340. package/dist/types/tools/base/ContourBaseTool.d.ts +2 -8
  341. package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -1
  342. package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts +3 -2
  343. package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
  344. package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts.map +1 -1
  345. package/dist/types/tools/segmentation/RectangleROIThresholdTool.d.ts.map +1 -1
  346. package/dist/types/types/AnnotationRenderContext.d.ts +12 -0
  347. package/dist/types/types/AnnotationRenderContext.d.ts.map +1 -0
  348. package/dist/types/types/IToolGroup.d.ts +2 -1
  349. package/dist/types/types/IToolGroup.d.ts.map +1 -1
  350. package/dist/types/types/index.d.ts +2 -1
  351. package/dist/types/types/index.d.ts.map +1 -1
  352. package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts +3 -0
  353. package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts.map +1 -0
  354. package/dist/types/utilities/contourSegmentation/index.d.ts +3 -0
  355. package/dist/types/utilities/contourSegmentation/index.d.ts.map +1 -0
  356. package/dist/types/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts +4 -0
  357. package/dist/types/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts.map +1 -0
  358. package/dist/types/utilities/contours/areCoplanarContours.d.ts +3 -0
  359. package/dist/types/utilities/contours/areCoplanarContours.d.ts.map +1 -0
  360. package/dist/types/utilities/contours/index.d.ts +2 -1
  361. package/dist/types/utilities/contours/index.d.ts.map +1 -1
  362. package/dist/types/utilities/contours/reverseIfAntiClockwise.d.ts.map +1 -1
  363. package/dist/types/utilities/math/aabb/index.d.ts +1 -0
  364. package/dist/types/utilities/math/aabb/index.d.ts.map +1 -1
  365. package/dist/types/utilities/math/aabb/intersectAABB.d.ts +3 -0
  366. package/dist/types/utilities/math/aabb/intersectAABB.d.ts.map +1 -0
  367. package/dist/types/utilities/math/point/distanceToPointSquared.d.ts.map +1 -1
  368. package/dist/types/utilities/math/polyline/areLineSegmentsIntersecting.d.ts +3 -0
  369. package/dist/types/utilities/math/polyline/areLineSegmentsIntersecting.d.ts.map +1 -0
  370. package/dist/types/utilities/math/polyline/combinePolyline.d.ts +5 -0
  371. package/dist/types/utilities/math/polyline/combinePolyline.d.ts.map +1 -0
  372. package/dist/types/utilities/math/polyline/containsPoint.d.ts +3 -0
  373. package/dist/types/utilities/math/polyline/containsPoint.d.ts.map +1 -0
  374. package/dist/types/utilities/math/polyline/getAABB.d.ts +3 -0
  375. package/dist/types/utilities/math/polyline/getAABB.d.ts.map +1 -0
  376. package/dist/types/utilities/math/polyline/getArea.d.ts +3 -0
  377. package/dist/types/utilities/math/polyline/getArea.d.ts.map +1 -0
  378. package/dist/types/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts +6 -0
  379. package/dist/types/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts.map +1 -0
  380. package/dist/types/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts +3 -0
  381. package/dist/types/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts.map +1 -0
  382. package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts +3 -0
  383. package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts.map +1 -0
  384. package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts +3 -0
  385. package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts.map +1 -0
  386. package/dist/types/utilities/math/polyline/getLineSegmentsIntersection.d.ts +3 -0
  387. package/dist/types/utilities/math/polyline/getLineSegmentsIntersection.d.ts.map +1 -0
  388. package/dist/types/utilities/math/polyline/getNormal2.d.ts +3 -0
  389. package/dist/types/utilities/math/polyline/getNormal2.d.ts.map +1 -0
  390. package/dist/types/utilities/math/polyline/getNormal3.d.ts +3 -0
  391. package/dist/types/utilities/math/polyline/getNormal3.d.ts.map +1 -0
  392. package/dist/types/utilities/math/polyline/getSignedArea.d.ts +3 -0
  393. package/dist/types/utilities/math/polyline/getSignedArea.d.ts.map +1 -0
  394. package/dist/types/utilities/math/polyline/index.d.ts +14 -3
  395. package/dist/types/utilities/math/polyline/index.d.ts.map +1 -1
  396. package/dist/types/utilities/math/polyline/intersectPolyline.d.ts +3 -0
  397. package/dist/types/utilities/math/polyline/intersectPolyline.d.ts.map +1 -0
  398. package/dist/types/utilities/math/polyline/isClosed.d.ts +3 -0
  399. package/dist/types/utilities/math/polyline/isClosed.d.ts.map +1 -0
  400. package/dist/umd/index.js +1 -2
  401. package/dist/umd/index.js.map +1 -1
  402. package/package.json +3 -3
  403. package/src/eventListeners/annotations/annotationCompletedListener.ts +13 -0
  404. package/src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts +273 -0
  405. package/src/eventListeners/annotations/contourSegmentation/index.ts +1 -0
  406. package/src/eventListeners/annotations/index.ts +6 -1
  407. package/src/eventListeners/index.ts +2 -0
  408. package/src/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.ts +117 -0
  409. package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +5 -99
  410. package/src/init.ts +12 -1
  411. package/src/stateManagement/annotation/helpers/state.ts +42 -2
  412. package/src/store/ToolGroupManager/ToolGroup.ts +10 -0
  413. package/src/store/addTool.ts +11 -0
  414. package/src/store/index.ts +2 -1
  415. package/src/store/removeEnabledElement.ts +2 -1
  416. package/src/tools/AdvancedMagnifyTool.ts +4 -21
  417. package/src/tools/annotation/AngleTool.ts +8 -32
  418. package/src/tools/annotation/ArrowAnnotateTool.ts +12 -45
  419. package/src/tools/annotation/BidirectionalTool.ts +11 -39
  420. package/src/tools/annotation/CircleROITool.ts +10 -34
  421. package/src/tools/annotation/CobbAngleTool.ts +9 -32
  422. package/src/tools/annotation/EllipticalROITool.ts +10 -34
  423. package/src/tools/annotation/KeyImageTool.ts +9 -23
  424. package/src/tools/annotation/LengthTool.ts +9 -33
  425. package/src/tools/annotation/LivewireContourTool.ts +58 -33
  426. package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +22 -1
  427. package/src/tools/annotation/PlanarFreehandROITool.ts +10 -53
  428. package/src/tools/annotation/ProbeTool.ts +11 -36
  429. package/src/tools/annotation/RectangleROITool.ts +11 -33
  430. package/src/tools/annotation/SplineROITool.ts +53 -24
  431. package/src/tools/annotation/UltrasoundDirectionalTool.ts +8 -29
  432. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +9 -11
  433. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +8 -5
  434. package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +9 -8
  435. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +7 -6
  436. package/src/tools/base/ContourBaseTool.ts +5 -8
  437. package/src/tools/base/ContourSegmentationBaseTool.ts +29 -6
  438. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +3 -13
  439. package/src/tools/segmentation/RectangleROIThresholdTool.ts +3 -14
  440. package/src/types/AnnotationRenderContext.ts +13 -0
  441. package/src/types/IToolGroup.ts +3 -1
  442. package/src/types/index.ts +3 -0
  443. package/src/utilities/contourSegmentation/areSameSegment.ts +24 -0
  444. package/src/utilities/contourSegmentation/index.ts +2 -0
  445. package/src/utilities/contourSegmentation/isContourSegmentationAnnotation.ts +8 -0
  446. package/src/utilities/contours/areCoplanarContours.ts +39 -0
  447. package/src/utilities/contours/index.ts +2 -0
  448. package/src/utilities/contours/reverseIfAntiClockwise.ts +6 -25
  449. package/src/utilities/math/aabb/index.ts +1 -0
  450. package/src/utilities/math/aabb/intersectAABB.ts +19 -0
  451. package/src/utilities/math/point/distanceToPointSquared.ts +6 -1
  452. package/src/utilities/math/polyline/areLineSegmentsIntersecting.ts +118 -0
  453. package/src/utilities/math/polyline/combinePolyline.ts +350 -0
  454. package/src/utilities/math/polyline/containsPoint.ts +63 -0
  455. package/src/utilities/math/polyline/getAABB.ts +20 -0
  456. package/src/utilities/math/polyline/{calculateAreaOfPoints.ts → getArea.ts} +1 -1
  457. package/src/utilities/math/polyline/getClosestLineSegmentIntersection.ts +72 -0
  458. package/src/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.ts +42 -0
  459. package/src/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.ts +30 -0
  460. package/src/utilities/math/polyline/getLineSegmentIntersectionsIndexes.ts +35 -0
  461. package/src/utilities/math/polyline/getLineSegmentsIntersection.ts +47 -0
  462. package/src/utilities/math/polyline/getNormal2.ts +17 -0
  463. package/src/utilities/math/polyline/getNormal3.ts +53 -0
  464. package/src/utilities/math/polyline/getSignedArea.ts +47 -0
  465. package/src/utilities/math/polyline/index.ts +27 -8
  466. package/src/utilities/math/polyline/intersectPolyline.ts +34 -0
  467. package/src/utilities/math/polyline/isClosed.ts +26 -0
  468. package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -2
  469. package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
  470. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -9
  471. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js +0 -160
  472. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
  473. package/dist/cjs/utilities/math/polyline/pointInPolyline.d.ts +0 -2
  474. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +0 -15
  475. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +0 -1
  476. package/dist/esm/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
  477. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js +0 -154
  478. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
  479. package/dist/esm/utilities/math/polyline/pointInPolyline.js +0 -12
  480. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +0 -1
  481. package/dist/types/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -3
  482. package/dist/types/utilities/math/polyline/calculateAreaOfPoints.d.ts.map +0 -1
  483. package/dist/types/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -10
  484. package/dist/types/utilities/math/polyline/getIntersectionWithPolyline.d.ts.map +0 -1
  485. package/dist/types/utilities/math/polyline/pointInPolyline.d.ts +0 -3
  486. package/dist/types/utilities/math/polyline/pointInPolyline.d.ts.map +0 -1
  487. package/dist/umd/index.js.LICENSE.txt +0 -6
  488. package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +0 -275
  489. package/src/utilities/math/polyline/pointInPolyline.ts +0 -19
@@ -3,8 +3,6 @@ import { AnnotationTool } from '../base';
3
3
  import {
4
4
  getEnabledElement,
5
5
  VolumeViewport,
6
- triggerEvent,
7
- eventTarget,
8
6
  utilities as csUtils,
9
7
  } from '@cornerstonejs/core';
10
8
  import type { Types } from '@cornerstonejs/core';
@@ -22,6 +20,10 @@ import {
22
20
  } from '../../stateManagement';
23
21
  import { isAnnotationLocked } from '../../stateManagement/annotation/annotationLocking';
24
22
  import { isAnnotationVisible } from '../../stateManagement/annotation/annotationVisibility';
23
+ import {
24
+ triggerAnnotationCompleted,
25
+ triggerAnnotationModified,
26
+ } from '../../stateManagement/annotation/helpers/state';
25
27
  import {
26
28
  drawHandles as drawHandlesSvg,
27
29
  drawLinkedTextBox as drawLinkedTextBoxSvg,
@@ -48,10 +50,6 @@ import {
48
50
  SVGDrawingHelper,
49
51
  } from '../../types';
50
52
  import { RectangleROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
51
- import {
52
- AnnotationCompletedEventDetail,
53
- AnnotationModifiedEventDetail,
54
- } from '../../types/EventTypes';
55
53
  import { StyleSpecifier } from '../../types/AnnotationStyle';
56
54
  import { getModalityUnit } from '../../utilities/getModalityUnit';
57
55
  import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
@@ -369,8 +367,7 @@ class RectangleROITool extends AnnotationTool {
369
367
 
370
368
  resetElementCursor(element);
371
369
 
372
- const enabledElement = getEnabledElement(element);
373
- const { renderingEngine } = enabledElement;
370
+ const { renderingEngine } = getEnabledElement(element);
374
371
 
375
372
  this.editData = null;
376
373
  this.isDrawing = false;
@@ -385,13 +382,7 @@ class RectangleROITool extends AnnotationTool {
385
382
  triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
386
383
 
387
384
  if (newAnnotation) {
388
- const eventType = Events.ANNOTATION_COMPLETED;
389
-
390
- const eventDetail: AnnotationCompletedEventDetail = {
391
- annotation,
392
- };
393
-
394
- triggerEvent(eventTarget, eventType, eventDetail);
385
+ triggerAnnotationCompleted(annotation);
395
386
  }
396
387
  };
397
388
 
@@ -520,8 +511,7 @@ class RectangleROITool extends AnnotationTool {
520
511
  annotation.highlighted = false;
521
512
  data.handles.activeHandleIndex = null;
522
513
 
523
- const enabledElement = getEnabledElement(element);
524
- const { renderingEngine } = enabledElement;
514
+ const { renderingEngine } = getEnabledElement(element);
525
515
 
526
516
  triggerAnnotationRenderForViewportIds(
527
517
  renderingEngine,
@@ -529,13 +519,7 @@ class RectangleROITool extends AnnotationTool {
529
519
  );
530
520
 
531
521
  if (newAnnotation) {
532
- const eventType = Events.ANNOTATION_COMPLETED;
533
-
534
- const eventDetail: AnnotationCompletedEventDetail = {
535
- annotation,
536
- };
537
-
538
- triggerEvent(eventTarget, eventType, eventDetail);
522
+ triggerAnnotationCompleted(annotation);
539
523
  }
540
524
 
541
525
  this.editData = null;
@@ -872,7 +856,8 @@ class RectangleROITool extends AnnotationTool {
872
856
  enabledElement
873
857
  ) => {
874
858
  const { data } = annotation;
875
- const { viewportId, renderingEngineId, viewport } = enabledElement;
859
+ const { viewport } = enabledElement;
860
+ const { element } = viewport;
876
861
 
877
862
  const worldPos1 = data.handles.points[0];
878
863
  const worldPos2 = data.handles.points[3];
@@ -988,14 +973,7 @@ class RectangleROITool extends AnnotationTool {
988
973
  annotation.invalidated = false;
989
974
 
990
975
  // Dispatching annotation modified
991
- const eventType = Events.ANNOTATION_MODIFIED;
992
-
993
- const eventDetail: AnnotationModifiedEventDetail = {
994
- annotation,
995
- viewportId,
996
- renderingEngineId,
997
- };
998
- triggerEvent(eventTarget, eventType, eventDetail);
976
+ triggerAnnotationModified(annotation, element);
999
977
 
1000
978
  return cachedStats;
1001
979
  };
@@ -20,14 +20,14 @@ import {
20
20
  ChangeTypes,
21
21
  } from '../../enums';
22
22
  import { resetElementCursor } from '../../cursors/elementCursor';
23
- import {
23
+ import type {
24
24
  Annotation,
25
25
  EventTypes,
26
26
  ToolHandle,
27
27
  TextBoxHandle,
28
28
  PublicToolProps,
29
29
  ToolProps,
30
- SVGDrawingHelper,
30
+ AnnotationRenderContext,
31
31
  } from '../../types';
32
32
  import {
33
33
  math,
@@ -41,7 +41,10 @@ import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters'
41
41
  import { getTextBoxCoordsCanvas } from '../../utilities/drawing';
42
42
 
43
43
  import { SplineROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
44
- import { AnnotationModifiedEventDetail } from '../../types/EventTypes';
44
+ import {
45
+ AnnotationCompletedEventDetail,
46
+ AnnotationModifiedEventDetail,
47
+ } from '../../types/EventTypes';
45
48
  import { ISpline } from '../../types/ISpline';
46
49
  import { CardinalSpline } from './splines/CardinalSpline';
47
50
  import { LinearSpline } from './splines/LinearSpline';
@@ -93,7 +96,10 @@ class SplineROITool extends ContourSegmentationBaseTool {
93
96
  } | null;
94
97
  isDrawing: boolean;
95
98
  isHandleOutsideImage = false;
96
- fireChangeOnUpdate: ChangeTypes = null;
99
+ fireChangeOnUpdate: {
100
+ annotationUID: string;
101
+ changeType: ChangeTypes;
102
+ } = null;
97
103
 
98
104
  constructor(
99
105
  toolProps: PublicToolProps = {},
@@ -327,9 +333,13 @@ class SplineROITool extends ContourSegmentationBaseTool {
327
333
  removeAnnotation(annotation.annotationUID);
328
334
  }
329
335
 
330
- this.fireChangeOnUpdate ||= newAnnotation
331
- ? ChangeTypes.Completed
332
- : ChangeTypes.HandlesUpdated;
336
+ this.fireChangeOnUpdate ||= {
337
+ annotationUID: annotation.annotationUID,
338
+ changeType: newAnnotation
339
+ ? ChangeTypes.Completed
340
+ : ChangeTypes.HandlesUpdated,
341
+ };
342
+
333
343
  triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
334
344
 
335
345
  this.editData = null;
@@ -509,6 +519,19 @@ class SplineROITool extends ContourSegmentationBaseTool {
509
519
  return annotation.annotationUID;
510
520
  }
511
521
 
522
+ /**
523
+ * Triggers an annotation completed event.
524
+ */
525
+ triggerAnnotationCompleted = (annotation: SplineROIAnnotation): void => {
526
+ const eventType = Events.ANNOTATION_COMPLETED;
527
+ const eventDetail: AnnotationCompletedEventDetail = {
528
+ annotation,
529
+ changeType: ChangeTypes.Completed,
530
+ };
531
+
532
+ triggerEvent(eventTarget, eventType, eventDetail);
533
+ };
534
+
512
535
  /**
513
536
  * Triggers an annotation modified event.
514
537
  */
@@ -518,11 +541,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
518
541
  changeType = ChangeTypes.StatsUpdated
519
542
  ): void => {
520
543
  const { viewportId, renderingEngineId } = enabledElement;
521
- const eventType =
522
- changeType === ChangeTypes.Completed
523
- ? Events.ANNOTATION_COMPLETED
524
- : Events.ANNOTATION_MODIFIED;
525
-
544
+ const eventType = Events.ANNOTATION_MODIFIED;
526
545
  const eventDetail: AnnotationModifiedEventDetail = {
527
546
  annotation,
528
547
  viewportId,
@@ -533,6 +552,21 @@ class SplineROITool extends ContourSegmentationBaseTool {
533
552
  triggerEvent(eventTarget, eventType, eventDetail);
534
553
  };
535
554
 
555
+ /**
556
+ * Triggers an annotation complete or modified event based on changeType.
557
+ */
558
+ triggerChangeEvent = (
559
+ annotation: SplineROIAnnotation,
560
+ enabledElement: Types.IEnabledElement,
561
+ changeType = ChangeTypes.StatsUpdated
562
+ ): void => {
563
+ if (changeType === ChangeTypes.Completed) {
564
+ this.triggerAnnotationCompleted(annotation);
565
+ } else {
566
+ this.triggerAnnotationModified(annotation, enabledElement, changeType);
567
+ }
568
+ };
569
+
536
570
  private _activateModify = (element) => {
537
571
  state.isInteractingWithTool = true;
538
572
 
@@ -596,13 +630,9 @@ class SplineROITool extends ContourSegmentationBaseTool {
596
630
  * @param renderContext - Render context that contains the annotation, enabledElement, etc.
597
631
  * @returns True if the annotation is rendered or false otherwise
598
632
  */
599
- protected renderAnnotationInstance(renderContext: {
600
- enabledElement: Types.IEnabledElement;
601
- targetId: string;
602
- annotation: Annotation;
603
- annotationStyle: Record<string, any>;
604
- svgDrawingHelper: SVGDrawingHelper;
605
- }): boolean {
633
+ protected renderAnnotationInstance(
634
+ renderContext: AnnotationRenderContext
635
+ ): boolean {
606
636
  const { enabledElement, targetId, svgDrawingHelper, annotationStyle } =
607
637
  renderContext;
608
638
  const { viewport } = enabledElement;
@@ -734,11 +764,11 @@ class SplineROITool extends ContourSegmentationBaseTool {
734
764
  annotationStyle.textbox
735
765
  );
736
766
 
737
- if (this.fireChangeOnUpdate) {
738
- this.triggerAnnotationModified(
767
+ if (this.fireChangeOnUpdate?.annotationUID === annotationUID) {
768
+ this.triggerChangeEvent(
739
769
  annotation,
740
770
  enabledElement,
741
- this.fireChangeOnUpdate
771
+ this.fireChangeOnUpdate.changeType
742
772
  );
743
773
  this.fireChangeOnUpdate = null;
744
774
  }
@@ -1058,8 +1088,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
1058
1088
  const deltaInY = vec3.distance(originalWorldPoint, deltaYPoint);
1059
1089
 
1060
1090
  const scale = getCalibratedScale(image);
1061
- let area =
1062
- math.polyline.calculateAreaOfPoints(canvasCoordinates) / scale / scale;
1091
+ let area = math.polyline.getArea(canvasCoordinates) / scale / scale;
1063
1092
 
1064
1093
  // Convert from canvas_pixels ^2 to mm^2
1065
1094
  area *= deltaInX * deltaInY;
@@ -1,8 +1,6 @@
1
1
  import { Events } from '../../enums';
2
2
  import {
3
3
  getEnabledElement,
4
- triggerEvent,
5
- eventTarget,
6
4
  utilities as csUtils,
7
5
  StackViewport,
8
6
  } from '@cornerstonejs/core';
@@ -15,6 +13,10 @@ import {
15
13
  getAnnotations,
16
14
  removeAnnotation,
17
15
  } from '../../stateManagement/annotation/annotationState';
16
+ import {
17
+ triggerAnnotationCompleted,
18
+ triggerAnnotationModified,
19
+ } from '../../stateManagement/annotation/helpers/state';
18
20
  import { UltrasoundDirectionalAnnotation } from '../../types/ToolSpecificAnnotationTypes';
19
21
 
20
22
  import {
@@ -27,10 +29,6 @@ import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters'
27
29
  import { roundNumber } from '../../utilities';
28
30
  import { distanceToPoint } from '../../utilities/math/point';
29
31
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
30
- import {
31
- AnnotationCompletedEventDetail,
32
- AnnotationModifiedEventDetail,
33
- } from '../../types/EventTypes';
34
32
 
35
33
  import {
36
34
  resetElementCursor,
@@ -310,13 +308,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
310
308
  triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
311
309
 
312
310
  if (newAnnotation) {
313
- const eventType = Events.ANNOTATION_COMPLETED;
314
-
315
- const eventDetail: AnnotationCompletedEventDetail = {
316
- annotation,
317
- };
318
-
319
- triggerEvent(eventTarget, eventType, eventDetail);
311
+ triggerAnnotationCompleted(annotation);
320
312
  }
321
313
 
322
314
  this.editData = null;
@@ -398,13 +390,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
398
390
  );
399
391
 
400
392
  if (newAnnotation) {
401
- const eventType = Events.ANNOTATION_COMPLETED;
402
-
403
- const eventDetail: AnnotationCompletedEventDetail = {
404
- annotation,
405
- };
406
-
407
- triggerEvent(eventTarget, eventType, eventDetail);
393
+ triggerAnnotationCompleted(annotation);
408
394
  }
409
395
 
410
396
  this.editData = null;
@@ -797,7 +783,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
797
783
 
798
784
  _calculateCachedStats(annotation, renderingEngine, enabledElement) {
799
785
  const data = annotation.data;
800
- const { viewportId, renderingEngineId } = enabledElement;
786
+ const { element } = enabledElement.viewport;
801
787
 
802
788
  // Until we have all two anchors bail out
803
789
  if (data.handles.points.length !== 2) {
@@ -873,14 +859,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
873
859
  annotation.invalidated = false;
874
860
 
875
861
  // Dispatching annotation modified
876
- const eventType = Events.ANNOTATION_MODIFIED;
877
-
878
- const eventDetail: AnnotationModifiedEventDetail = {
879
- annotation,
880
- viewportId,
881
- renderingEngineId,
882
- };
883
- triggerEvent(eventTarget, eventType, eventDetail);
862
+ triggerAnnotationModified(annotation, element);
884
863
 
885
864
  return cachedStats;
886
865
  }
@@ -1,3 +1,4 @@
1
+ import { vec3, vec2 } from 'gl-matrix';
1
2
  import { getEnabledElement } from '@cornerstonejs/core';
2
3
  import type { Types } from '@cornerstonejs/core';
3
4
  import { state } from '../../../store';
@@ -8,19 +9,16 @@ import {
8
9
  } from '../../../cursors/elementCursor';
9
10
  import { EventTypes } from '../../../types';
10
11
  import { polyline } from '../../../utilities/math';
11
- import { vec3, vec2 } from 'gl-matrix';
12
12
  import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
13
13
  import {
14
14
  getInterpolatedPoints,
15
15
  shouldSmooth,
16
16
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
17
17
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
18
+ import { triggerAnnotationModified } from '../../../stateManagement/annotation/helpers/state';
18
19
 
19
- const {
20
- getSubPixelSpacingAndXYDirections,
21
- addCanvasPointsToArray,
22
- calculateAreaOfPoints,
23
- } = polyline;
20
+ const { getSubPixelSpacingAndXYDirections, addCanvasPointsToArray, getArea } =
21
+ polyline;
24
22
 
25
23
  /**
26
24
  * Activates the closed contour edit event loop.
@@ -236,7 +234,7 @@ function finishEditAndStartNewEdit(evt: EventTypes.InteractionEventType): void {
236
234
  annotation.autoGenerated = false;
237
235
  }
238
236
 
239
- this.triggerAnnotationModified(annotation, enabledElement);
237
+ triggerAnnotationModified(annotation, element);
240
238
 
241
239
  const lastEditCanvasPoint = editCanvasPoints.pop();
242
240
 
@@ -408,8 +406,8 @@ function fuseEditPointsWithClosedContour(
408
406
  }
409
407
  }
410
408
 
411
- const areaPointSet1 = calculateAreaOfPoints(pointSet1);
412
- const areaPointSet2 = calculateAreaOfPoints(pointSet2);
409
+ const areaPointSet1 = getArea(pointSet1);
410
+ const areaPointSet2 = getArea(pointSet2);
413
411
 
414
412
  const pointsToRender: Types.Point2[] =
415
413
  areaPointSet1 > areaPointSet2 ? pointSet1 : pointSet2;
@@ -453,14 +451,14 @@ function completeClosedContourEdit(element: HTMLDivElement) {
453
451
  );
454
452
  annotation.data.contour.polyline = worldPoints;
455
453
  annotation.data.contour.closed = true;
456
-
457
454
  annotation.invalidated = true;
455
+
458
456
  // If any manual update, triggered on an annotation, then it will be treated as non-autogenerated.
459
457
  if (annotation.autoGenerated) {
460
458
  annotation.autoGenerated = false;
461
459
  }
462
460
 
463
- this.triggerAnnotationModified(annotation, enabledElement);
461
+ triggerAnnotationModified(annotation, element);
464
462
  }
465
463
 
466
464
  this.isEditingClosed = false;
@@ -12,6 +12,7 @@ import {
12
12
  getInterpolatedPoints,
13
13
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
14
14
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
15
+ import { triggerAnnotationCompleted } from '../../../stateManagement/annotation/helpers/state';
15
16
  import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
16
17
  import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
17
18
  import { polyline } from '../../../utilities/math';
@@ -21,7 +22,7 @@ import reverseIfAntiClockwise from '../../../utilities/contours/reverseIfAntiClo
21
22
  const {
22
23
  addCanvasPointsToArray,
23
24
  pointsAreWithinCloseContourProximity,
24
- getFirstIntersectionWithPolyline,
25
+ getFirstLineSegmentIntersectionIndexes,
25
26
  getSubPixelSpacingAndXYDirections,
26
27
  } = polyline;
27
28
 
@@ -233,10 +234,11 @@ function completeDrawClosedContour(element: HTMLDivElement): boolean {
233
234
 
234
235
  annotation.data.contour.polyline = worldPoints;
235
236
  annotation.data.contour.closed = true;
237
+ annotation.invalidated = true;
236
238
  const { textBox } = annotation.data.handles;
237
239
 
238
240
  if (!textBox.hasMoved) {
239
- this.triggerAnnotationCompleted(annotation);
241
+ triggerAnnotationCompleted(annotation);
240
242
  }
241
243
 
242
244
  this.isDrawing = false;
@@ -261,7 +263,7 @@ function removeCrossedLinesOnCompleteDraw(): void {
261
263
  const endToStart = [canvasPoints[0], canvasPoints[numPoints - 1]];
262
264
  const canvasPointsMinusEnds = canvasPoints.slice(0, -1).slice(1);
263
265
 
264
- const lineSegment = getFirstIntersectionWithPolyline(
266
+ const lineSegment = getFirstLineSegmentIntersectionIndexes(
265
267
  canvasPointsMinusEnds,
266
268
  endToStart[0],
267
269
  endToStart[1],
@@ -303,6 +305,7 @@ function completeDrawOpenContour(element: HTMLDivElement): boolean {
303
305
 
304
306
  annotation.data.contour.polyline = worldPoints;
305
307
  annotation.data.contour.closed = false;
308
+ annotation.invalidated = true;
306
309
  const { textBox } = annotation.data.handles;
307
310
 
308
311
  // Add the first and last points to the list of handles. These means they
@@ -319,7 +322,7 @@ function completeDrawOpenContour(element: HTMLDivElement): boolean {
319
322
  }
320
323
 
321
324
  if (!textBox.hasMoved) {
322
- this.triggerAnnotationCompleted(annotation);
325
+ triggerAnnotationCompleted(annotation);
323
326
  }
324
327
 
325
328
  this.isDrawing = false;
@@ -349,7 +352,7 @@ function findCrossingIndexDuringCreate(
349
352
  const { canvasPoints } = this.drawData;
350
353
  const pointsLessLastOne = canvasPoints.slice(0, -1);
351
354
 
352
- const lineSegment = getFirstIntersectionWithPolyline(
355
+ const lineSegment = getFirstLineSegmentIntersectionIndexes(
353
356
  pointsLessLastOne,
354
357
  canvasPos,
355
358
  lastCanvasPoint,
@@ -3,7 +3,8 @@ import { vec2 } from 'gl-matrix';
3
3
  import { polyline } from '../../../utilities/math';
4
4
  import { EventTypes } from '../../../types';
5
5
 
6
- const { addCanvasPointsToArray, getFirstIntersectionWithPolyline } = polyline;
6
+ const { addCanvasPointsToArray, getFirstLineSegmentIntersectionIndexes } =
7
+ polyline;
7
8
 
8
9
  /**
9
10
  * Check if the `editCanvasPoints` have crossed the `prevCanvasPoints` during
@@ -28,7 +29,7 @@ function checkForFirstCrossing(
28
29
  const lastCanvasPoint = lastPoints.canvas;
29
30
  const { editCanvasPoints, prevCanvasPoints } = this.editData;
30
31
 
31
- const crossedLineSegment = getFirstIntersectionWithPolyline(
32
+ const crossedLineSegment = getFirstLineSegmentIntersectionIndexes(
32
33
  prevCanvasPoints,
33
34
  canvasPos,
34
35
  lastCanvasPoint,
@@ -91,7 +92,7 @@ function checkForFirstCrossing(
91
92
  ];
92
93
 
93
94
  const crossedLineSegmentFromExtendedPoint =
94
- getFirstIntersectionWithPolyline(
95
+ getFirstLineSegmentIntersectionIndexes(
95
96
  prevCanvasPoints,
96
97
  extendedPoint,
97
98
  editCanvasPoints[0],
@@ -133,7 +134,7 @@ function removePointsUpUntilFirstCrossing(isClosedContour: boolean): void {
133
134
  for (let i = 0; i < editCanvasPoints.length - 1; i++) {
134
135
  const firstLine = [editCanvasPoints[i], editCanvasPoints[i + 1]];
135
136
 
136
- const didCrossLine = !!getFirstIntersectionWithPolyline(
137
+ const didCrossLine = !!getFirstLineSegmentIntersectionIndexes(
137
138
  prevCanvasPoints,
138
139
  firstLine[0],
139
140
  firstLine[1],
@@ -173,7 +174,7 @@ function checkForSecondCrossing(
173
174
  // for the second crossing of the prevCanvasPoints, by checking if the last
174
175
  // mouse drag crossed these. This class method is only called if the edit loop
175
176
  // has already has a crossing earlier in the edit.
176
- const crossedLineSegment = getFirstIntersectionWithPolyline(
177
+ const crossedLineSegment = getFirstLineSegmentIntersectionIndexes(
177
178
  prevCanvasPoints,
178
179
  canvasPos,
179
180
  lastCanvasPoint,
@@ -199,7 +200,7 @@ function removePointsAfterSecondCrossing(isClosedContour: boolean): void {
199
200
  for (let i = editCanvasPoints.length - 1; i > 0; i--) {
200
201
  const lastLine = [editCanvasPoints[i], editCanvasPoints[i - 1]];
201
202
 
202
- const didCrossLine = !!getFirstIntersectionWithPolyline(
203
+ const didCrossLine = !!getFirstLineSegmentIntersectionIndexes(
203
204
  prevCanvasPoints,
204
205
  lastLine[0],
205
206
  lastLine[1],
@@ -255,7 +256,7 @@ function findSnapIndex(): number {
255
256
  const snapCanvasPosition = prevCanvasPoints[index];
256
257
  const lastEditCanvasPoint = editCanvasPoints[editCanvasPoints.length - 1];
257
258
 
258
- const crossedLineSegment = getFirstIntersectionWithPolyline(
259
+ const crossedLineSegment = getFirstLineSegmentIntersectionIndexes(
259
260
  editCanvasPointsLessLastOne,
260
261
  snapCanvasPosition,
261
262
  lastEditCanvasPoint,
@@ -290,7 +291,7 @@ function checkAndRemoveCrossesOnEditLine(
290
291
 
291
292
  const editCanvasPointsLessLastOne = editCanvasPoints.slice(0, -2);
292
293
 
293
- const crossedLineSegment = getFirstIntersectionWithPolyline(
294
+ const crossedLineSegment = getFirstLineSegmentIntersectionIndexes(
294
295
  editCanvasPointsLessLastOne,
295
296
  canvasPos,
296
297
  lastCanvasPoint,
@@ -1,3 +1,4 @@
1
+ import { vec3, vec2 } from 'gl-matrix';
1
2
  import { getEnabledElement } from '@cornerstonejs/core';
2
3
  import type { Types } from '@cornerstonejs/core';
3
4
  import { state } from '../../../store';
@@ -8,7 +9,6 @@ import {
8
9
  } from '../../../cursors/elementCursor';
9
10
  import type { EventTypes } from '../../../types';
10
11
  import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
11
- import { vec3, vec2 } from 'gl-matrix';
12
12
  import { polyline } from '../../../utilities/math';
13
13
  import {
14
14
  shouldSmooth,
@@ -16,6 +16,7 @@ import {
16
16
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
17
17
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
18
18
  import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
19
+ import { triggerAnnotationModified } from '../../../stateManagement/annotation/helpers/state';
19
20
 
20
21
  const { addCanvasPointsToArray, getSubPixelSpacingAndXYDirections } = polyline;
21
22
 
@@ -226,7 +227,7 @@ function openContourEditOverwriteEnd(
226
227
  ];
227
228
  annotation.data.handles.activeHandleIndex = 1;
228
229
 
229
- this.triggerAnnotationModified(annotation, enabledElement);
230
+ triggerAnnotationModified(annotation, element);
230
231
 
231
232
  this.isEditingOpen = false;
232
233
  this.editData = undefined;
@@ -505,7 +506,7 @@ function finishEditOpenOnSecondCrossing(
505
506
  worldPoints[worldPoints.length - 1],
506
507
  ];
507
508
 
508
- this.triggerAnnotationModified(annotation, enabledElement);
509
+ triggerAnnotationModified(annotation, element);
509
510
 
510
511
  const lastEditCanvasPoint = editCanvasPoints.pop();
511
512
 
@@ -553,6 +554,8 @@ function completeOpenContourEdit(element: HTMLDivElement) {
553
554
  const worldPoints = updatedPoints.map((canvasPoint) =>
554
555
  viewport.canvasToWorld(canvasPoint)
555
556
  );
557
+
558
+ annotation.invalidated = true;
556
559
  annotation.data.contour.polyline = worldPoints;
557
560
  annotation.data.contour.closed = false;
558
561
  annotation.data.handles.points = [
@@ -566,9 +569,7 @@ function completeOpenContourEdit(element: HTMLDivElement) {
566
569
  findOpenUShapedContourVectorToPeak(fusedCanvasPoints, viewport);
567
570
  }
568
571
 
569
- annotation.invalidated = true;
570
-
571
- this.triggerAnnotationModified(annotation, enabledElement);
572
+ triggerAnnotationModified(annotation, element);
572
573
  }
573
574
 
574
575
  this.isEditingOpen = false;
@@ -4,13 +4,14 @@ import {
4
4
  addAnnotation,
5
5
  getAnnotations,
6
6
  } from '../../stateManagement/annotation/annotationState';
7
- import {
7
+ import type {
8
8
  Annotation,
9
9
  ContourAnnotation,
10
10
  EventTypes,
11
11
  PublicToolProps,
12
12
  ToolProps,
13
13
  SVGDrawingHelper,
14
+ AnnotationRenderContext,
14
15
  } from '../../types';
15
16
  import { drawPolyline as drawPolylineSvg } from '../../drawingSvg';
16
17
  import { StyleSpecifier } from '../../types/AnnotationStyle';
@@ -191,13 +192,9 @@ abstract class ContourBaseTool extends AnnotationTool {
191
192
  /**
192
193
  * Render a contour segmentation instance
193
194
  */
194
- protected renderAnnotationInstance(renderContext: {
195
- enabledElement: Types.IEnabledElement;
196
- targetId: string;
197
- annotation: Annotation;
198
- annotationStyle: Record<string, any>;
199
- svgDrawingHelper: SVGDrawingHelper;
200
- }): boolean {
195
+ protected renderAnnotationInstance(
196
+ renderContext: AnnotationRenderContext
197
+ ): boolean {
201
198
  const { enabledElement, annotationStyle, svgDrawingHelper } = renderContext;
202
199
  const annotation = renderContext.annotation as ContourAnnotation;
203
200
  const { annotationUID } = annotation;