@cornerstonejs/tools 2.0.0-beta.1 → 2.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. package/dist/cjs/drawingSvg/drawCircle.js +9 -5
  2. package/dist/cjs/drawingSvg/drawCircle.js.map +1 -1
  3. package/dist/cjs/drawingSvg/drawEllipse.js +4 -4
  4. package/dist/cjs/drawingSvg/drawEllipse.js.map +1 -1
  5. package/dist/cjs/drawingSvg/drawHandles.js +4 -4
  6. package/dist/cjs/drawingSvg/drawHandles.js.map +1 -1
  7. package/dist/cjs/drawingSvg/drawLine.js +4 -4
  8. package/dist/cjs/drawingSvg/drawLine.js.map +1 -1
  9. package/dist/cjs/drawingSvg/drawPolyline.js +4 -4
  10. package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
  11. package/dist/cjs/drawingSvg/drawRect.js +4 -4
  12. package/dist/cjs/drawingSvg/drawRect.js.map +1 -1
  13. package/dist/cjs/drawingSvg/drawTextBox.js +4 -4
  14. package/dist/cjs/drawingSvg/drawTextBox.js.map +1 -1
  15. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js +1 -1
  16. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js.map +1 -1
  17. package/dist/cjs/drawingSvg/index.d.ts +3 -1
  18. package/dist/cjs/drawingSvg/index.js +5 -1
  19. package/dist/cjs/drawingSvg/index.js.map +1 -1
  20. package/dist/cjs/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  21. package/dist/cjs/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +5 -5
  22. package/dist/cjs/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  23. package/dist/cjs/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  24. package/dist/cjs/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +5 -5
  25. package/dist/cjs/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  26. package/dist/cjs/enums/Events.d.ts +2 -0
  27. package/dist/cjs/enums/Events.js +2 -0
  28. package/dist/cjs/enums/Events.js.map +1 -1
  29. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
  30. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  31. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
  32. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +41 -0
  33. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
  34. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +10 -5
  35. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  36. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
  37. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +39 -0
  38. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
  39. package/dist/cjs/eventListeners/keyboard/keyDownListener.js +8 -0
  40. package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +1 -1
  41. package/dist/cjs/eventListeners/mouse/mouseDownListener.js +7 -2
  42. package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +1 -1
  43. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js +5 -1
  44. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js.map +1 -1
  45. package/dist/cjs/eventListeners/touch/touchStartListener.js +10 -5
  46. package/dist/cjs/eventListeners/touch/touchStartListener.js.map +1 -1
  47. package/dist/cjs/index.d.ts +2 -2
  48. package/dist/cjs/index.js +6 -2
  49. package/dist/cjs/index.js.map +1 -1
  50. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +1 -0
  51. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  52. package/dist/cjs/stateManagement/annotation/config/getState.js +6 -3
  53. package/dist/cjs/stateManagement/annotation/config/getState.js.map +1 -1
  54. package/dist/cjs/stateManagement/annotation/config/helpers.js +4 -2
  55. package/dist/cjs/stateManagement/annotation/config/helpers.js.map +1 -1
  56. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +10 -2
  57. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  58. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +5 -3
  59. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +44 -2
  60. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  61. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  62. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  63. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +25 -22
  64. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  65. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js +1 -1
  66. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  67. package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +36 -0
  68. package/dist/cjs/tools/AdvancedMagnifyTool.js +448 -0
  69. package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -0
  70. package/dist/cjs/tools/AdvancedMagnifyViewport.d.ts +76 -0
  71. package/dist/cjs/tools/AdvancedMagnifyViewport.js +352 -0
  72. package/dist/cjs/tools/AdvancedMagnifyViewport.js.map +1 -0
  73. package/dist/cjs/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
  74. package/dist/cjs/tools/AdvancedMagnifyViewportManager.js +133 -0
  75. package/dist/cjs/tools/AdvancedMagnifyViewportManager.js.map +1 -0
  76. package/dist/cjs/tools/MIPJumpToClickTool.js +4 -2
  77. package/dist/cjs/tools/MIPJumpToClickTool.js.map +1 -1
  78. package/dist/cjs/tools/MagnifyTool.js +2 -2
  79. package/dist/cjs/tools/MagnifyTool.js.map +1 -1
  80. package/dist/cjs/tools/OrientationMarkerTool.d.ts +88 -0
  81. package/dist/cjs/tools/OrientationMarkerTool.js +193 -0
  82. package/dist/cjs/tools/OrientationMarkerTool.js.map +1 -0
  83. package/dist/cjs/tools/OverlayGridTool.d.ts +31 -0
  84. package/dist/cjs/tools/OverlayGridTool.js +170 -0
  85. package/dist/cjs/tools/OverlayGridTool.js.map +1 -0
  86. package/dist/cjs/tools/PlanarRotateTool.js +2 -1
  87. package/dist/cjs/tools/PlanarRotateTool.js.map +1 -1
  88. package/dist/cjs/tools/ReferenceCursors.js +58 -29
  89. package/dist/cjs/tools/ReferenceCursors.js.map +1 -1
  90. package/dist/cjs/tools/ReferenceLinesTool.d.ts +3 -0
  91. package/dist/cjs/tools/ReferenceLinesTool.js +71 -2
  92. package/dist/cjs/tools/ReferenceLinesTool.js.map +1 -1
  93. package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
  94. package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
  95. package/dist/cjs/tools/annotation/AngleTool.d.ts +0 -1
  96. package/dist/cjs/tools/annotation/AngleTool.js +33 -15
  97. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
  98. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +15 -1
  99. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  100. package/dist/cjs/tools/annotation/BidirectionalTool.d.ts +0 -1
  101. package/dist/cjs/tools/annotation/BidirectionalTool.js +30 -15
  102. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
  103. package/dist/cjs/tools/annotation/CircleROITool.d.ts +1 -3
  104. package/dist/cjs/tools/annotation/CircleROITool.js +63 -60
  105. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  106. package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +31 -6
  107. package/dist/cjs/tools/annotation/CobbAngleTool.js +294 -82
  108. package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
  109. package/dist/cjs/tools/annotation/DragProbeTool.js +17 -4
  110. package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
  111. package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +2 -4
  112. package/dist/cjs/tools/annotation/EllipticalROITool.js +67 -61
  113. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  114. package/dist/cjs/tools/annotation/LengthTool.d.ts +0 -1
  115. package/dist/cjs/tools/annotation/LengthTool.js +27 -12
  116. package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
  117. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
  118. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +72 -60
  119. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  120. package/dist/cjs/tools/annotation/ProbeTool.d.ts +1 -3
  121. package/dist/cjs/tools/annotation/ProbeTool.js +28 -22
  122. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  123. package/dist/cjs/tools/annotation/RectangleROITool.d.ts +1 -2
  124. package/dist/cjs/tools/annotation/RectangleROITool.js +55 -57
  125. package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
  126. package/dist/cjs/tools/base/AnnotationDisplayTool.js +4 -0
  127. package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +1 -1
  128. package/dist/cjs/tools/base/AnnotationTool.d.ts +3 -2
  129. package/dist/cjs/tools/base/AnnotationTool.js +27 -16
  130. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  131. package/dist/cjs/tools/base/index.d.ts +2 -1
  132. package/dist/cjs/tools/base/index.js +3 -1
  133. package/dist/cjs/tools/base/index.js.map +1 -1
  134. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +3 -0
  135. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  136. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
  137. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  138. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -0
  139. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  140. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +5 -6
  141. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  142. package/dist/cjs/tools/index.d.ts +5 -2
  143. package/dist/cjs/tools/index.js +8 -1
  144. package/dist/cjs/tools/index.js.map +1 -1
  145. package/dist/cjs/tools/segmentation/BrushTool.js +24 -17
  146. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  147. package/dist/cjs/tools/segmentation/PaintFillTool.js +4 -2
  148. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
  149. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  150. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  151. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +5 -7
  152. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  153. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  154. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +38 -10
  155. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  156. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  157. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +10 -0
  158. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  159. package/dist/cjs/types/CINETypes.d.ts +2 -0
  160. package/dist/cjs/types/CalculatorTypes.d.ts +6 -0
  161. package/dist/cjs/types/CalculatorTypes.js +3 -0
  162. package/dist/cjs/types/CalculatorTypes.js.map +1 -0
  163. package/dist/cjs/types/EventTypes.d.ts +16 -1
  164. package/dist/cjs/types/ISetToolModeOptions.d.ts +2 -2
  165. package/dist/cjs/types/IToolGroup.d.ts +6 -2
  166. package/dist/cjs/types/ToolAction.d.ts +8 -0
  167. package/dist/cjs/types/ToolAction.js +3 -0
  168. package/dist/cjs/types/ToolAction.js.map +1 -0
  169. package/dist/cjs/types/ToolProps.d.ts +5 -1
  170. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +55 -0
  171. package/dist/cjs/types/index.d.ts +4 -2
  172. package/dist/cjs/utilities/cine/playClip.js +13 -3
  173. package/dist/cjs/utilities/cine/playClip.js.map +1 -1
  174. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +7 -4
  175. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  176. package/dist/cjs/utilities/getCalibratedUnits.js +10 -5
  177. package/dist/cjs/utilities/getCalibratedUnits.js.map +1 -1
  178. package/dist/cjs/utilities/getModalityUnit.js +5 -2
  179. package/dist/cjs/utilities/getModalityUnit.js.map +1 -1
  180. package/dist/cjs/utilities/index.d.ts +2 -2
  181. package/dist/cjs/utilities/index.js +4 -3
  182. package/dist/cjs/utilities/index.js.map +1 -1
  183. package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +3 -1
  184. package/dist/cjs/utilities/math/angle/angleBetweenLines.js +18 -1
  185. package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -1
  186. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  187. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js +44 -0
  188. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  189. package/dist/cjs/utilities/math/basic/Calculator.d.ts +8 -0
  190. package/dist/cjs/utilities/math/basic/Calculator.js +6 -0
  191. package/dist/cjs/utilities/math/basic/Calculator.js.map +1 -0
  192. package/dist/cjs/utilities/math/basic/index.d.ts +3 -0
  193. package/dist/cjs/utilities/math/basic/index.js +11 -0
  194. package/dist/cjs/utilities/math/basic/index.js.map +1 -0
  195. package/dist/cjs/utilities/math/index.d.ts +2 -1
  196. package/dist/cjs/utilities/math/index.js +3 -1
  197. package/dist/cjs/utilities/math/index.js.map +1 -1
  198. package/dist/cjs/utilities/math/midPoint.js +2 -1
  199. package/dist/cjs/utilities/math/midPoint.js.map +1 -1
  200. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +2 -1
  201. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +1 -1
  202. package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  203. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js +10 -5
  204. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  205. package/dist/cjs/utilities/pointInShapeCallback.d.ts +7 -1
  206. package/dist/cjs/utilities/pointInShapeCallback.js +6 -1
  207. package/dist/cjs/utilities/pointInShapeCallback.js.map +1 -1
  208. package/dist/cjs/utilities/roundNumber.js +4 -2
  209. package/dist/cjs/utilities/roundNumber.js.map +1 -1
  210. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  211. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  212. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  213. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  214. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  215. package/dist/cjs/utilities/segmentation/utilities.d.ts +1 -2
  216. package/dist/cjs/utilities/segmentation/utilities.js +4 -1
  217. package/dist/cjs/utilities/segmentation/utilities.js.map +1 -1
  218. package/dist/cjs/utilities/stackPrefetch/index.d.ts +3 -2
  219. package/dist/cjs/utilities/stackPrefetch/index.js +8 -6
  220. package/dist/cjs/utilities/stackPrefetch/index.js.map +1 -1
  221. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
  222. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +227 -0
  223. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
  224. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
  225. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +25 -95
  226. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  227. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
  228. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +85 -0
  229. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
  230. package/dist/esm/drawingSvg/drawCircle.js +9 -5
  231. package/dist/esm/drawingSvg/drawCircle.js.map +1 -1
  232. package/dist/esm/drawingSvg/drawEllipse.js +4 -4
  233. package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
  234. package/dist/esm/drawingSvg/drawHandles.js +4 -4
  235. package/dist/esm/drawingSvg/drawHandles.js.map +1 -1
  236. package/dist/esm/drawingSvg/drawLine.js +4 -4
  237. package/dist/esm/drawingSvg/drawLine.js.map +1 -1
  238. package/dist/esm/drawingSvg/drawPolyline.js +4 -4
  239. package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
  240. package/dist/esm/drawingSvg/drawRect.js +4 -4
  241. package/dist/esm/drawingSvg/drawRect.js.map +1 -1
  242. package/dist/esm/drawingSvg/drawTextBox.js +4 -4
  243. package/dist/esm/drawingSvg/drawTextBox.js.map +1 -1
  244. package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
  245. package/dist/esm/drawingSvg/getSvgDrawingHelper.js.map +1 -1
  246. package/dist/esm/drawingSvg/index.d.ts +3 -1
  247. package/dist/esm/drawingSvg/index.js +3 -1
  248. package/dist/esm/drawingSvg/index.js.map +1 -1
  249. package/dist/esm/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  250. package/dist/esm/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +3 -3
  251. package/dist/esm/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  252. package/dist/esm/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  253. package/dist/esm/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +3 -3
  254. package/dist/esm/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  255. package/dist/esm/enums/Events.d.ts +2 -0
  256. package/dist/esm/enums/Events.js +2 -0
  257. package/dist/esm/enums/Events.js.map +1 -1
  258. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
  259. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  260. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
  261. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +35 -0
  262. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
  263. package/dist/esm/eventDispatchers/shared/getMouseModifier.js +10 -5
  264. package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  265. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
  266. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +32 -0
  267. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
  268. package/dist/esm/eventListeners/keyboard/keyDownListener.js +8 -0
  269. package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +1 -1
  270. package/dist/esm/eventListeners/mouse/mouseDownListener.js +7 -2
  271. package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +1 -1
  272. package/dist/esm/eventListeners/mouse/mouseMoveListener.js +5 -1
  273. package/dist/esm/eventListeners/mouse/mouseMoveListener.js.map +1 -1
  274. package/dist/esm/eventListeners/touch/touchStartListener.js +10 -5
  275. package/dist/esm/eventListeners/touch/touchStartListener.js.map +1 -1
  276. package/dist/esm/index.d.ts +2 -2
  277. package/dist/esm/index.js +2 -2
  278. package/dist/esm/index.js.map +1 -1
  279. package/dist/esm/stateManagement/annotation/config/ToolStyle.js +1 -0
  280. package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  281. package/dist/esm/stateManagement/annotation/config/getState.js +6 -3
  282. package/dist/esm/stateManagement/annotation/config/getState.js.map +1 -1
  283. package/dist/esm/stateManagement/annotation/config/helpers.js +4 -2
  284. package/dist/esm/stateManagement/annotation/config/helpers.js.map +1 -1
  285. package/dist/esm/store/SynchronizerManager/Synchronizer.js +10 -2
  286. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  287. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +5 -3
  288. package/dist/esm/store/ToolGroupManager/ToolGroup.js +45 -4
  289. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  290. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  291. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  292. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +26 -23
  293. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  294. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js +1 -1
  295. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  296. package/dist/esm/tools/AdvancedMagnifyTool.d.ts +36 -0
  297. package/dist/esm/tools/AdvancedMagnifyTool.js +440 -0
  298. package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -0
  299. package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +76 -0
  300. package/dist/esm/tools/AdvancedMagnifyViewport.js +346 -0
  301. package/dist/esm/tools/AdvancedMagnifyViewport.js.map +1 -0
  302. package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
  303. package/dist/esm/tools/AdvancedMagnifyViewportManager.js +128 -0
  304. package/dist/esm/tools/AdvancedMagnifyViewportManager.js.map +1 -0
  305. package/dist/esm/tools/MIPJumpToClickTool.js +4 -2
  306. package/dist/esm/tools/MIPJumpToClickTool.js.map +1 -1
  307. package/dist/esm/tools/MagnifyTool.js +2 -2
  308. package/dist/esm/tools/MagnifyTool.js.map +1 -1
  309. package/dist/esm/tools/OrientationMarkerTool.d.ts +88 -0
  310. package/dist/esm/tools/OrientationMarkerTool.js +185 -0
  311. package/dist/esm/tools/OrientationMarkerTool.js.map +1 -0
  312. package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
  313. package/dist/esm/tools/OverlayGridTool.js +165 -0
  314. package/dist/esm/tools/OverlayGridTool.js.map +1 -0
  315. package/dist/esm/tools/PlanarRotateTool.js +2 -1
  316. package/dist/esm/tools/PlanarRotateTool.js.map +1 -1
  317. package/dist/esm/tools/ReferenceCursors.js +58 -29
  318. package/dist/esm/tools/ReferenceCursors.js.map +1 -1
  319. package/dist/esm/tools/ReferenceLinesTool.d.ts +3 -0
  320. package/dist/esm/tools/ReferenceLinesTool.js +71 -2
  321. package/dist/esm/tools/ReferenceLinesTool.js.map +1 -1
  322. package/dist/esm/tools/ScaleOverlayTool.js +2 -1
  323. package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
  324. package/dist/esm/tools/annotation/AngleTool.d.ts +0 -1
  325. package/dist/esm/tools/annotation/AngleTool.js +33 -15
  326. package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
  327. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +15 -1
  328. package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  329. package/dist/esm/tools/annotation/BidirectionalTool.d.ts +0 -1
  330. package/dist/esm/tools/annotation/BidirectionalTool.js +30 -15
  331. package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
  332. package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -3
  333. package/dist/esm/tools/annotation/CircleROITool.js +62 -60
  334. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  335. package/dist/esm/tools/annotation/CobbAngleTool.d.ts +31 -6
  336. package/dist/esm/tools/annotation/CobbAngleTool.js +301 -83
  337. package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
  338. package/dist/esm/tools/annotation/DragProbeTool.js +17 -4
  339. package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
  340. package/dist/esm/tools/annotation/EllipticalROITool.d.ts +2 -4
  341. package/dist/esm/tools/annotation/EllipticalROITool.js +66 -61
  342. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  343. package/dist/esm/tools/annotation/LengthTool.d.ts +0 -1
  344. package/dist/esm/tools/annotation/LengthTool.js +27 -12
  345. package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
  346. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
  347. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +71 -60
  348. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  349. package/dist/esm/tools/annotation/ProbeTool.d.ts +1 -3
  350. package/dist/esm/tools/annotation/ProbeTool.js +28 -22
  351. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  352. package/dist/esm/tools/annotation/RectangleROITool.d.ts +1 -2
  353. package/dist/esm/tools/annotation/RectangleROITool.js +54 -57
  354. package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
  355. package/dist/esm/tools/base/AnnotationDisplayTool.js +3 -0
  356. package/dist/esm/tools/base/AnnotationDisplayTool.js.map +1 -1
  357. package/dist/esm/tools/base/AnnotationTool.d.ts +3 -2
  358. package/dist/esm/tools/base/AnnotationTool.js +26 -16
  359. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  360. package/dist/esm/tools/base/index.d.ts +2 -1
  361. package/dist/esm/tools/base/index.js +2 -1
  362. package/dist/esm/tools/base/index.js.map +1 -1
  363. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -1
  364. package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  365. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
  366. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  367. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +4 -1
  368. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  369. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +5 -6
  370. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  371. package/dist/esm/tools/index.d.ts +5 -2
  372. package/dist/esm/tools/index.js +5 -2
  373. package/dist/esm/tools/index.js.map +1 -1
  374. package/dist/esm/tools/segmentation/BrushTool.js +25 -18
  375. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  376. package/dist/esm/tools/segmentation/PaintFillTool.js +4 -2
  377. package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
  378. package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  379. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  380. package/dist/esm/tools/segmentation/strategies/fillCircle.js +1 -6
  381. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  382. package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  383. package/dist/esm/tools/segmentation/strategies/fillSphere.js +33 -9
  384. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  385. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  386. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +8 -0
  387. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  388. package/dist/esm/types/CINETypes.d.ts +2 -0
  389. package/dist/esm/types/CalculatorTypes.d.ts +6 -0
  390. package/dist/esm/types/CalculatorTypes.js +2 -0
  391. package/dist/esm/types/CalculatorTypes.js.map +1 -0
  392. package/dist/esm/types/EventTypes.d.ts +16 -1
  393. package/dist/esm/types/ISetToolModeOptions.d.ts +2 -2
  394. package/dist/esm/types/IToolGroup.d.ts +6 -2
  395. package/dist/esm/types/ToolAction.d.ts +8 -0
  396. package/dist/esm/types/ToolAction.js +2 -0
  397. package/dist/esm/types/ToolAction.js.map +1 -0
  398. package/dist/esm/types/ToolProps.d.ts +5 -1
  399. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +55 -0
  400. package/dist/esm/types/index.d.ts +4 -2
  401. package/dist/esm/utilities/cine/playClip.js +13 -4
  402. package/dist/esm/utilities/cine/playClip.js.map +1 -1
  403. package/dist/esm/utilities/dynamicVolume/getDataInTime.js +7 -4
  404. package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  405. package/dist/esm/utilities/getCalibratedUnits.js +10 -5
  406. package/dist/esm/utilities/getCalibratedUnits.js.map +1 -1
  407. package/dist/esm/utilities/getModalityUnit.js +5 -2
  408. package/dist/esm/utilities/getModalityUnit.js.map +1 -1
  409. package/dist/esm/utilities/index.d.ts +2 -2
  410. package/dist/esm/utilities/index.js +2 -2
  411. package/dist/esm/utilities/index.js.map +1 -1
  412. package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +3 -1
  413. package/dist/esm/utilities/math/angle/angleBetweenLines.js +19 -2
  414. package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -1
  415. package/dist/esm/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  416. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +36 -0
  417. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  418. package/dist/esm/utilities/math/basic/Calculator.d.ts +8 -0
  419. package/dist/esm/utilities/math/basic/Calculator.js +4 -0
  420. package/dist/esm/utilities/math/basic/Calculator.js.map +1 -0
  421. package/dist/esm/utilities/math/basic/index.d.ts +3 -0
  422. package/dist/esm/utilities/math/basic/index.js +4 -0
  423. package/dist/esm/utilities/math/basic/index.js.map +1 -0
  424. package/dist/esm/utilities/math/index.d.ts +2 -1
  425. package/dist/esm/utilities/math/index.js +2 -1
  426. package/dist/esm/utilities/math/index.js.map +1 -1
  427. package/dist/esm/utilities/math/midPoint.js +2 -1
  428. package/dist/esm/utilities/math/midPoint.js.map +1 -1
  429. package/dist/esm/utilities/math/polyline/pointInPolyline.js +2 -1
  430. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +1 -1
  431. package/dist/esm/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  432. package/dist/esm/utilities/math/vec2/liangBarksyClip.js +10 -5
  433. package/dist/esm/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  434. package/dist/esm/utilities/pointInShapeCallback.d.ts +7 -1
  435. package/dist/esm/utilities/pointInShapeCallback.js +6 -1
  436. package/dist/esm/utilities/pointInShapeCallback.js.map +1 -1
  437. package/dist/esm/utilities/roundNumber.js +4 -2
  438. package/dist/esm/utilities/roundNumber.js.map +1 -1
  439. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  440. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  441. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  442. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  443. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  444. package/dist/esm/utilities/segmentation/utilities.d.ts +1 -2
  445. package/dist/esm/utilities/segmentation/utilities.js +4 -1
  446. package/dist/esm/utilities/segmentation/utilities.js.map +1 -1
  447. package/dist/esm/utilities/stackPrefetch/index.d.ts +3 -2
  448. package/dist/esm/utilities/stackPrefetch/index.js +3 -2
  449. package/dist/esm/utilities/stackPrefetch/index.js.map +1 -1
  450. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
  451. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +220 -0
  452. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
  453. package/dist/esm/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
  454. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +14 -81
  455. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  456. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
  457. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +77 -0
  458. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
  459. package/dist/umd/index.js +1 -1
  460. package/dist/umd/index.js.map +1 -1
  461. package/package.json +3 -3
  462. package/src/drawingSvg/drawCircle.ts +17 -5
  463. package/src/drawingSvg/drawEllipse.ts +4 -4
  464. package/src/drawingSvg/drawHandles.ts +4 -4
  465. package/src/drawingSvg/drawLine.ts +4 -4
  466. package/src/drawingSvg/drawPolyline.ts +4 -4
  467. package/src/drawingSvg/drawRect.ts +4 -4
  468. package/src/drawingSvg/drawTextBox.ts +4 -4
  469. package/src/drawingSvg/getSvgDrawingHelper.ts +4 -1
  470. package/src/drawingSvg/index.ts +4 -0
  471. package/src/drawingSvg/{_setAttributesIfNecessary.ts → setAttributesIfNecessary.ts} +2 -2
  472. package/src/drawingSvg/{_setNewAttributesIfValid.ts → setNewAttributesIfValid.ts} +2 -2
  473. package/src/enums/Events.ts +22 -0
  474. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +11 -2
  475. package/src/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.ts +72 -0
  476. package/src/eventDispatchers/shared/getMouseModifier.ts +15 -5
  477. package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +66 -0
  478. package/src/eventListeners/keyboard/keyDownListener.ts +13 -0
  479. package/src/eventListeners/mouse/mouseDownListener.ts +10 -2
  480. package/src/eventListeners/mouse/mouseMoveListener.ts +7 -1
  481. package/src/eventListeners/touch/touchStartListener.ts +15 -5
  482. package/src/index.ts +8 -0
  483. package/src/stateManagement/annotation/config/ToolStyle.ts +1 -0
  484. package/src/stateManagement/annotation/config/getState.ts +7 -3
  485. package/src/stateManagement/annotation/config/helpers.ts +6 -2
  486. package/src/store/SynchronizerManager/Synchronizer.ts +16 -8
  487. package/src/store/ToolGroupManager/ToolGroup.ts +99 -6
  488. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +3 -1
  489. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +63 -68
  490. package/src/synchronizers/callbacks/voiSyncCallback.ts +1 -1
  491. package/src/tools/AdvancedMagnifyTool.ts +725 -0
  492. package/src/tools/AdvancedMagnifyViewport.ts +624 -0
  493. package/src/tools/AdvancedMagnifyViewportManager.ts +291 -0
  494. package/src/tools/MIPJumpToClickTool.ts +6 -2
  495. package/src/tools/MagnifyTool.ts +2 -2
  496. package/src/tools/OrientationMarkerTool.ts +235 -0
  497. package/src/tools/OverlayGridTool.ts +357 -0
  498. package/src/tools/PlanarRotateTool.ts +3 -1
  499. package/src/tools/ReferenceCursors.ts +85 -29
  500. package/src/tools/ReferenceLinesTool.ts +131 -3
  501. package/src/tools/ScaleOverlayTool.ts +3 -1
  502. package/src/tools/annotation/AngleTool.ts +42 -20
  503. package/src/tools/annotation/ArrowAnnotateTool.ts +16 -1
  504. package/src/tools/annotation/BidirectionalTool.ts +38 -24
  505. package/src/tools/annotation/CircleROITool.ts +94 -107
  506. package/src/tools/annotation/CobbAngleTool.ts +452 -114
  507. package/src/tools/annotation/DragProbeTool.ts +25 -14
  508. package/src/tools/annotation/EllipticalROITool.ts +88 -97
  509. package/src/tools/annotation/LengthTool.ts +33 -18
  510. package/src/tools/annotation/PlanarFreehandROITool.ts +90 -78
  511. package/src/tools/annotation/ProbeTool.ts +43 -49
  512. package/src/tools/annotation/RectangleROITool.ts +80 -92
  513. package/src/tools/base/AnnotationDisplayTool.ts +4 -0
  514. package/src/tools/base/AnnotationTool.ts +41 -18
  515. package/src/tools/base/index.ts +2 -1
  516. package/src/tools/displayTools/Contour/contourDisplay.ts +8 -0
  517. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +4 -1
  518. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +6 -1
  519. package/src/tools/displayTools/SegmentationDisplayTool.ts +12 -18
  520. package/src/tools/index.ts +8 -1
  521. package/src/tools/segmentation/BrushTool.ts +42 -19
  522. package/src/tools/segmentation/PaintFillTool.ts +10 -3
  523. package/src/tools/segmentation/strategies/eraseSphere.ts +2 -0
  524. package/src/tools/segmentation/strategies/fillCircle.ts +1 -13
  525. package/src/tools/segmentation/strategies/fillSphere.ts +56 -8
  526. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +16 -0
  527. package/src/types/CINETypes.ts +8 -2
  528. package/src/types/CalculatorTypes.ts +7 -0
  529. package/src/types/EventTypes.ts +43 -0
  530. package/src/types/ISetToolModeOptions.ts +2 -2
  531. package/src/types/IToolGroup.ts +13 -3
  532. package/src/types/ToolAction.ts +54 -0
  533. package/src/types/ToolProps.ts +7 -1
  534. package/src/types/ToolSpecificAnnotationTypes.ts +58 -0
  535. package/src/types/index.ts +11 -1
  536. package/src/utilities/cine/playClip.ts +20 -3
  537. package/src/utilities/dynamicVolume/getDataInTime.ts +9 -6
  538. package/src/utilities/getCalibratedUnits.ts +15 -5
  539. package/src/utilities/getModalityUnit.ts +8 -2
  540. package/src/utilities/index.ts +2 -1
  541. package/src/utilities/math/angle/angleBetweenLines.ts +39 -9
  542. package/src/utilities/math/basic/BasicStatsCalculator.ts +60 -0
  543. package/src/utilities/math/basic/Calculator.ts +8 -0
  544. package/src/utilities/math/basic/index.ts +4 -0
  545. package/src/utilities/math/index.ts +10 -1
  546. package/src/utilities/math/midPoint.ts +3 -1
  547. package/src/utilities/math/polyline/pointInPolyline.ts +3 -1
  548. package/src/utilities/math/vec2/liangBarksyClip.ts +15 -5
  549. package/src/utilities/pointInShapeCallback.ts +15 -3
  550. package/src/utilities/roundNumber.ts +6 -2
  551. package/src/utilities/segmentation/brushSizeForToolGroup.ts +22 -4
  552. package/src/utilities/segmentation/thresholdVolumeByRange.ts +3 -1
  553. package/src/utilities/segmentation/utilities.ts +8 -1
  554. package/src/utilities/stackPrefetch/index.ts +3 -7
  555. package/src/utilities/stackPrefetch/stackContextPrefetch.ts +380 -0
  556. package/src/utilities/stackPrefetch/stackPrefetch.ts +37 -153
  557. package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +114 -0
  558. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  559. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  560. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  561. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
  562. package/dist/esm/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  563. package/dist/esm/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  564. package/dist/esm/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  565. package/dist/esm/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/tools",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.3",
4
4
  "description": "Cornerstone3D Tools",
5
5
  "main": "dist/umd/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
30
30
  },
31
31
  "dependencies": {
32
- "@cornerstonejs/core": "^2.0.0-beta.1",
32
+ "@cornerstonejs/core": "^2.0.0-beta.3",
33
33
  "lodash.clonedeep": "4.5.0",
34
34
  "lodash.get": "^4.4.2"
35
35
  },
@@ -52,5 +52,5 @@
52
52
  "type": "individual",
53
53
  "url": "https://ohif.org/donate"
54
54
  },
55
- "gitHead": "8cb0ace8dd10393a32f88507ef911ce823b0069d"
55
+ "gitHead": "d78cf780d4383a61ea0a9762bafa4104666757a4"
56
56
  }
@@ -3,8 +3,8 @@ import { SVGDrawingHelper } from '../types';
3
3
 
4
4
  import _getHash from './_getHash';
5
5
 
6
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
7
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
6
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
7
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
8
8
 
9
9
  function drawCircle(
10
10
  svgDrawingHelper: SVGDrawingHelper,
@@ -15,13 +15,23 @@ function drawCircle(
15
15
  options = {},
16
16
  dataId = ''
17
17
  ): void {
18
- const { color, fill, width, lineWidth, lineDash } = Object.assign(
18
+ const {
19
+ color,
20
+ fill,
21
+ width,
22
+ lineWidth,
23
+ lineDash,
24
+ fillOpacity,
25
+ strokeOpacity,
26
+ } = Object.assign(
19
27
  {
20
28
  color: 'dodgerblue',
21
29
  fill: 'transparent',
22
30
  width: '2',
23
31
  lineDash: undefined,
24
32
  lineWidth: undefined,
33
+ strokeOpacity: 1,
34
+ fillOpacity: 1,
25
35
  },
26
36
  options
27
37
  );
@@ -42,10 +52,12 @@ function drawCircle(
42
52
  fill,
43
53
  'stroke-width': strokeWidth,
44
54
  'stroke-dasharray': lineDash,
55
+ 'fill-opacity': fillOpacity, // setting fill opacity
56
+ 'stroke-opacity': strokeOpacity, // setting stroke opacity
45
57
  };
46
58
 
47
59
  if (existingCircleElement) {
48
- _setAttributesIfNecessary(attributes, existingCircleElement);
60
+ setAttributesIfNecessary(attributes, existingCircleElement);
49
61
 
50
62
  svgDrawingHelper.setNodeTouched(svgNodeHash);
51
63
  } else {
@@ -55,7 +67,7 @@ function drawCircle(
55
67
  newCircleElement.setAttribute('data-id', dataId);
56
68
  }
57
69
 
58
- _setNewAttributesIfValid(attributes, newCircleElement);
70
+ setNewAttributesIfValid(attributes, newCircleElement);
59
71
 
60
72
  svgDrawingHelper.appendNode(newCircleElement, svgNodeHash);
61
73
  }
@@ -2,8 +2,8 @@ import type { Types } from '@cornerstonejs/core';
2
2
  import { SVGDrawingHelper } from '../types';
3
3
 
4
4
  import _getHash from './_getHash';
5
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
6
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
5
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
6
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
7
7
 
8
8
  function drawEllipse(
9
9
  svgDrawingHelper: SVGDrawingHelper,
@@ -52,7 +52,7 @@ function drawEllipse(
52
52
  };
53
53
 
54
54
  if (existingEllipse) {
55
- _setAttributesIfNecessary(attributes, existingEllipse);
55
+ setAttributesIfNecessary(attributes, existingEllipse);
56
56
 
57
57
  svgDrawingHelper.setNodeTouched(svgNodeHash);
58
58
  } else {
@@ -62,7 +62,7 @@ function drawEllipse(
62
62
  svgEllipseElement.setAttribute('data-id', dataId);
63
63
  }
64
64
 
65
- _setNewAttributesIfValid(attributes, svgEllipseElement);
65
+ setNewAttributesIfValid(attributes, svgEllipseElement);
66
66
 
67
67
  svgDrawingHelper.appendNode(svgEllipseElement, svgNodeHash);
68
68
  }
@@ -1,8 +1,8 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
 
3
3
  import _getHash from './_getHash';
4
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
5
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
4
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
5
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
6
6
  import { SVGDrawingHelper } from '../types';
7
7
 
8
8
  function drawHandles(
@@ -75,13 +75,13 @@ function drawHandles(
75
75
  const existingHandleElement = svgDrawingHelper.getSvgNode(svgNodeHash);
76
76
 
77
77
  if (existingHandleElement) {
78
- _setAttributesIfNecessary(attributes, existingHandleElement);
78
+ setAttributesIfNecessary(attributes, existingHandleElement);
79
79
 
80
80
  svgDrawingHelper.setNodeTouched(svgNodeHash);
81
81
  } else {
82
82
  const newHandleElement = document.createElementNS(svgns, type);
83
83
 
84
- _setNewAttributesIfValid(attributes, newHandleElement);
84
+ setNewAttributesIfValid(attributes, newHandleElement);
85
85
 
86
86
  svgDrawingHelper.appendNode(newHandleElement, svgNodeHash);
87
87
  }
@@ -1,8 +1,8 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
 
3
3
  import _getHash from './_getHash';
4
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
5
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
4
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
5
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
6
6
  import { SVGDrawingHelper } from '../types';
7
7
 
8
8
  export default function drawLine(
@@ -53,7 +53,7 @@ export default function drawLine(
53
53
 
54
54
  if (existingLine) {
55
55
  // This is run to avoid re-rendering annotations that actually haven't changed
56
- _setAttributesIfNecessary(attributes, existingLine);
56
+ setAttributesIfNecessary(attributes, existingLine);
57
57
 
58
58
  svgDrawingHelper.setNodeTouched(svgNodeHash);
59
59
  } else {
@@ -63,7 +63,7 @@ export default function drawLine(
63
63
  newLine.setAttribute('data-id', dataId);
64
64
  }
65
65
 
66
- _setNewAttributesIfValid(attributes, newLine);
66
+ setNewAttributesIfValid(attributes, newLine);
67
67
 
68
68
  svgDrawingHelper.appendNode(newLine, svgNodeHash);
69
69
  }
@@ -1,7 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import _getHash from './_getHash';
3
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
4
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
3
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
4
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
5
5
  import { SVGDrawingHelper } from '../types';
6
6
 
7
7
  /**
@@ -67,13 +67,13 @@ export default function drawPolyline(
67
67
 
68
68
  if (existingPolyLine) {
69
69
  // This is run to avoid re-rendering annotations that actually haven't changed
70
- _setAttributesIfNecessary(attributes, existingPolyLine);
70
+ setAttributesIfNecessary(attributes, existingPolyLine);
71
71
 
72
72
  svgDrawingHelper.setNodeTouched(svgNodeHash);
73
73
  } else {
74
74
  const newPolyLine = document.createElementNS(svgns, 'polyline');
75
75
 
76
- _setNewAttributesIfValid(attributes, newPolyLine);
76
+ setNewAttributesIfValid(attributes, newPolyLine);
77
77
 
78
78
  svgDrawingHelper.appendNode(newPolyLine, svgNodeHash);
79
79
  }
@@ -1,8 +1,8 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
 
3
3
  import _getHash from './_getHash';
4
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
5
- import _setNewAttributesIfValid from './_setNewAttributesIfValid';
4
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
5
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
6
6
  import { SVGDrawingHelper } from '../types';
7
7
 
8
8
  // <rect x="120" y="100" width="100" height="100" />
@@ -53,7 +53,7 @@ export default function drawRect(
53
53
  };
54
54
 
55
55
  if (existingRect) {
56
- _setAttributesIfNecessary(attributes, existingRect);
56
+ setAttributesIfNecessary(attributes, existingRect);
57
57
 
58
58
  svgDrawingHelper.setNodeTouched(svgNodeHash);
59
59
  } else {
@@ -63,7 +63,7 @@ export default function drawRect(
63
63
  svgRectElement.setAttribute('data-id', dataId);
64
64
  }
65
65
 
66
- _setNewAttributesIfValid(attributes, svgRectElement);
66
+ setNewAttributesIfValid(attributes, svgRectElement);
67
67
 
68
68
  svgDrawingHelper.appendNode(svgRectElement, svgNodeHash);
69
69
  }
@@ -2,7 +2,7 @@ import type { Types } from '@cornerstonejs/core';
2
2
  import { SVGDrawingHelper } from '../types';
3
3
 
4
4
  import _getHash from './_getHash';
5
- import _setAttributesIfNecessary from './_setAttributesIfNecessary';
5
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
6
6
 
7
7
  /**
8
8
  * Draws a textBox.
@@ -100,8 +100,8 @@ function _drawTextGroup(
100
100
  };
101
101
 
102
102
  // Todo: for some reason this does not work to not re-render the textBox
103
- _setAttributesIfNecessary(textAttributes, textElement);
104
- _setAttributesIfNecessary(textGroupAttributes, existingTextGroup);
103
+ setAttributesIfNecessary(textAttributes, textElement);
104
+ setAttributesIfNecessary(textGroupAttributes, existingTextGroup);
105
105
 
106
106
  textGroupBoundingBox = _drawTextBackground(existingTextGroup, background);
107
107
 
@@ -205,7 +205,7 @@ function _drawTextBackground(group: SVGGElement, color: string) {
205
205
  fill: color,
206
206
  };
207
207
 
208
- _setAttributesIfNecessary(attributes, element);
208
+ setAttributesIfNecessary(attributes, element);
209
209
 
210
210
  return bBox;
211
211
  }
@@ -38,7 +38,10 @@ function getSvgDrawingHelper(element: HTMLDivElement): SVGDrawingHelper {
38
38
  function _getSvgLayer(element) {
39
39
  const viewportElement = `.${VIEWPORT_ELEMENT}`;
40
40
  const internalDivElement = element.querySelector(viewportElement);
41
- const svgLayer = internalDivElement.querySelector('.svg-layer');
41
+
42
+ // Using :scope to make sure the right svg layer is selected otherwise it
43
+ // may select one from a nested viewport (eg: AdvancedMagnifyTool).
44
+ const svgLayer = internalDivElement.querySelector(':scope > .svg-layer');
42
45
 
43
46
  return svgLayer;
44
47
  }
@@ -8,6 +8,8 @@ import drawLinkedTextBox from './drawLinkedTextBox';
8
8
  import drawRect from './drawRect';
9
9
  import drawTextBox from './drawTextBox';
10
10
  import drawArrow from './drawArrow';
11
+ import setAttributesIfNecessary from './setAttributesIfNecessary';
12
+ import setNewAttributesIfValid from './setNewAttributesIfValid';
11
13
 
12
14
  export {
13
15
  draw,
@@ -20,4 +22,6 @@ export {
20
22
  drawRect,
21
23
  drawTextBox,
22
24
  drawArrow,
25
+ setAttributesIfNecessary,
26
+ setNewAttributesIfValid,
23
27
  };
@@ -1,4 +1,4 @@
1
- export function _setAttributesIfNecessary(attributes, svgNode) {
1
+ export function setAttributesIfNecessary(attributes, svgNode) {
2
2
  Object.keys(attributes).forEach((key) => {
3
3
  const currentValue = svgNode.getAttribute(key);
4
4
  const newValue = attributes[key];
@@ -10,4 +10,4 @@ export function _setAttributesIfNecessary(attributes, svgNode) {
10
10
  });
11
11
  }
12
12
 
13
- export default _setAttributesIfNecessary;
13
+ export default setAttributesIfNecessary;
@@ -1,4 +1,4 @@
1
- export function _setNewAttributesIfValid(attributes, svgNode) {
1
+ export function setNewAttributesIfValid(attributes, svgNode) {
2
2
  Object.keys(attributes).forEach((key) => {
3
3
  const newValue = attributes[key];
4
4
  if (newValue !== undefined && newValue !== '') {
@@ -7,4 +7,4 @@ export function _setNewAttributesIfValid(attributes, svgNode) {
7
7
  });
8
8
  }
9
9
 
10
- export default _setNewAttributesIfValid;
10
+ export default setNewAttributesIfValid;
@@ -5,6 +5,28 @@
5
5
  *
6
6
  */
7
7
  enum Events {
8
+ ///////////////////////////////////////
9
+ // Tools
10
+ ///////////////////////////////////////
11
+
12
+ /**
13
+ * Triggers on the eventTarget when a new tools is activated.
14
+ *
15
+ * Make use of {@link EventTypes.ToolActivatedEventType | Tool Activated Event Type }
16
+ * for typing your event listeners for this tool activated event, and see what event
17
+ * detail is included in {@link EventTypes.ToolActivatedEventDetail | Tool Activated Event Detail}.
18
+ */
19
+ TOOL_ACTIVATED = 'CORNERSTONE_TOOLS_TOOL_ACTIVATED',
20
+
21
+ /**
22
+ * Triggers on the eventTarget when a mode of a tool is changed (active, passive, enabled and disabled).
23
+ *
24
+ * Make use of {@link EventTypes.ToolModeChangedEventType | Tool Mode Changed Event Type }
25
+ * for typing your event listeners for this tool activated event, and see what event
26
+ * detail is included in {@link EventTypes.ToolModeChangedEventDetail | Tool Mode Changed Event Detail}.
27
+ */
28
+ TOOL_MODE_CHANGED = 'CORNERSTONE_TOOLS_TOOL_MODE_CHANGED',
29
+
8
30
  ///////////////////////////////////////
9
31
  // Annotations
10
32
  ///////////////////////////////////////
@@ -20,6 +20,7 @@ import filterToolsWithAnnotationsForElement from '../../store/filterToolsWithAnn
20
20
  import filterMoveableAnnotationTools from '../../store/filterMoveableAnnotationTools';
21
21
  import getActiveToolForMouseEvent from '../shared/getActiveToolForMouseEvent';
22
22
  import getToolsWithModesForMouseEvent from '../shared/getToolsWithModesForMouseEvent';
23
+ import mouseDownAnnotationAction from './mouseDownAnnotationAction';
23
24
 
24
25
  const { Active, Passive } = ToolModes;
25
26
 
@@ -39,8 +40,10 @@ const { Active, Passive } = ToolModes;
39
40
  * - Next we check any tools are interactable (e.g. moving an entire length annotation rather than one of its handles:
40
41
  * `filterMoveableAnnotationTools`). If interactable tools are found, the first tool found consumes the event and the
41
42
  * event does not propagate further.
42
- * - Finally, if the `activeTool` has `postMouseDownCallback`, this is called. If the callback returns `true`,
43
+ * - If the `activeTool` has `postMouseDownCallback`, this is called. If the callback returns `true`,
43
44
  * the event does not propagate further.
45
+ * - Finally, look for annotations actions that could handle the event such as showing a dropdown to allow the user
46
+ * change the magnifying glass zoom factor.
44
47
  *
45
48
  * If the event is not consumed the event will bubble to the `mouseDownActivate` handler.
46
49
  *
@@ -133,7 +136,7 @@ export default function mouseDown(evt: EventTypes.MouseDownEventType) {
133
136
  );
134
137
 
135
138
  toggleAnnotationSelection(annotation.annotationUID, isMultiSelect);
136
- tool.toolSelectedCallback(evt, annotation, 'Mouse');
139
+ tool.toolSelectedCallback(evt, annotation, 'Mouse', canvasCoords);
137
140
 
138
141
  return;
139
142
  }
@@ -148,6 +151,12 @@ export default function mouseDown(evt: EventTypes.MouseDownEventType) {
148
151
  }
149
152
  }
150
153
 
154
+ const actionExecuted = mouseDownAnnotationAction(evt);
155
+
156
+ if (actionExecuted) {
157
+ return;
158
+ }
159
+
151
160
  // Don't stop propagation so that mouseDownActivate can handle the event
152
161
  }
153
162
 
@@ -0,0 +1,72 @@
1
+ import { getEnabledElement } from '@cornerstonejs/core';
2
+ import { state } from '../../store';
3
+ import { ToolModes } from '../../enums';
4
+ import { EventTypes } from '../../types';
5
+
6
+ // Util
7
+ import filterToolsWithAnnotationsForElement from '../../store/filterToolsWithAnnotationsForElement';
8
+ import filterMoveableAnnotationTools from '../../store/filterMoveableAnnotationTools';
9
+ import getToolsWithActionsForMouseEvent from '../shared/getToolsWithActionsForMouseEvent';
10
+
11
+ const { Active, Passive } = ToolModes;
12
+
13
+ /**
14
+ * Look for active or passive annotations with an action that could handle the
15
+ * event based on the bindings and invoke the first one found.
16
+ *
17
+ * @param evt - The normalized mouseDown event.
18
+ * @returns True if an action has executed or false otherwise
19
+ */
20
+ export default function mouseDownAnnotationAction(
21
+ evt: EventTypes.MouseDownEventType
22
+ ): boolean {
23
+ // If a tool has locked the current state it is dealing with an interaction within its own eventLoop.
24
+ if (state.isInteractingWithTool) {
25
+ return false;
26
+ }
27
+
28
+ const eventDetail = evt.detail;
29
+ const { element } = eventDetail;
30
+ const enabledElement = getEnabledElement(element);
31
+ const { canvas: canvasCoords } = eventDetail.currentPoints;
32
+
33
+ if (!enabledElement) {
34
+ return false;
35
+ }
36
+
37
+ // Find all tools that might respond to this mouse down
38
+ const toolsWithActions = getToolsWithActionsForMouseEvent(evt, [
39
+ Active,
40
+ Passive,
41
+ ]);
42
+
43
+ const tools = Array.from(toolsWithActions.keys());
44
+
45
+ // Filter tools with annotations for this element
46
+ const annotationToolsWithAnnotations = filterToolsWithAnnotationsForElement(
47
+ element,
48
+ tools
49
+ );
50
+
51
+ // Only moveable annotations (unlocked, visible and close to the canvas coordinates) may trigger actions
52
+ const moveableAnnotationTools = filterMoveableAnnotationTools(
53
+ element,
54
+ annotationToolsWithAnnotations,
55
+ canvasCoords
56
+ );
57
+
58
+ // If there are annotation tools that are interactable, select the first one
59
+ // that isn't locked. If there's only one annotation tool, select it.
60
+ if (moveableAnnotationTools.length > 0) {
61
+ const { tool, annotation } = moveableAnnotationTools[0];
62
+ const action = toolsWithActions.get(tool);
63
+ const method =
64
+ typeof action.method === 'string' ? tool[action.method] : action.method;
65
+
66
+ method.call(tool, evt, annotation);
67
+
68
+ return true;
69
+ }
70
+
71
+ return false;
72
+ }
@@ -8,14 +8,24 @@ import { KeyboardBindings as kb } from '../../enums';
8
8
  const getMouseModifierKey = (evt) => {
9
9
  // The logic is a hard coded key mapping
10
10
  if (evt.shiftKey) {
11
- if (evt.ctrlKey) return kb.ShiftCtrl;
12
- if (evt.altKey) return kb.ShiftAlt;
13
- if (evt.metaKey) return kb.ShiftMeta;
11
+ if (evt.ctrlKey) {
12
+ return kb.ShiftCtrl;
13
+ }
14
+ if (evt.altKey) {
15
+ return kb.ShiftAlt;
16
+ }
17
+ if (evt.metaKey) {
18
+ return kb.ShiftMeta;
19
+ }
14
20
  return kb.Shift;
15
21
  }
16
22
  if (evt.ctrlKey) {
17
- if (evt.altKey) return kb.CtrlAlt;
18
- if (evt.metaKey) return kb.CtrlMeta;
23
+ if (evt.altKey) {
24
+ return kb.CtrlAlt;
25
+ }
26
+ if (evt.metaKey) {
27
+ return kb.CtrlMeta;
28
+ }
19
29
  return kb.Ctrl;
20
30
  }
21
31
  if (evt.altKey) {
@@ -0,0 +1,66 @@
1
+ import { ToolGroupManager } from '../../store';
2
+ import { ToolModes } from '../../enums';
3
+ import { ToolAction, EventTypes } from '../../types';
4
+
5
+ import { keyEventListener } from '../../eventListeners';
6
+ import getMouseModifier from './getMouseModifier';
7
+
8
+ type ModesFilter = Array<ToolModes>;
9
+
10
+ /**
11
+ * Given the mouse event and a list of tool modes, find all tool instances
12
+ * with actions that were added to the tool group associated with the viewport
13
+ * that triggered the event.
14
+ *
15
+ * @param evt - mouseDown event triggered by a cornerstone viewport
16
+ * @param toolModes - List of tool modes used to filter the tools registered
17
+ * in the viewport's tool group
18
+ */
19
+ export default function getToolsWithActionsForMouseEvent(
20
+ evt: EventTypes.MouseMoveEventType,
21
+ toolModes: ToolModes[]
22
+ ): Map<any, ToolAction> {
23
+ const toolsWithActions = new Map();
24
+ const { renderingEngineId, viewportId } = evt.detail;
25
+ const toolGroup = ToolGroupManager.getToolGroupForViewport(
26
+ viewportId,
27
+ renderingEngineId
28
+ );
29
+
30
+ if (!toolGroup) {
31
+ return toolsWithActions;
32
+ }
33
+
34
+ const toolGroupToolNames = Object.keys(toolGroup.toolOptions);
35
+ const defaultMousePrimary = toolGroup.getDefaultMousePrimary();
36
+ const mouseEvent = evt.detail.event;
37
+ const mouseButton = mouseEvent?.buttons ?? defaultMousePrimary;
38
+ const modifierKey =
39
+ getMouseModifier(mouseEvent) || keyEventListener.getModifierKey();
40
+
41
+ for (let j = 0; j < toolGroupToolNames.length; j++) {
42
+ const toolName = toolGroupToolNames[j];
43
+ const tool = toolGroup.getToolInstance(toolName);
44
+ const actions = tool.configuration?.actions;
45
+
46
+ if (!actions?.length || !toolModes.includes(tool.mode)) {
47
+ continue;
48
+ }
49
+
50
+ const action = actions.find(
51
+ (action) =>
52
+ action.bindings.length &&
53
+ action.bindings.some(
54
+ (binding) =>
55
+ binding.mouseButton === mouseButton &&
56
+ binding.modifierKey === modifierKey
57
+ )
58
+ );
59
+
60
+ if (action) {
61
+ toolsWithActions.set(tool, action);
62
+ }
63
+ }
64
+
65
+ return toolsWithActions;
66
+ }
@@ -64,11 +64,23 @@ function keyListener(evt: KeyboardEvent): void {
64
64
  triggerEvent(eventDetail.element, Events.KEY_DOWN, eventDetail);
65
65
 
66
66
  document.addEventListener('keyup', _onKeyUp);
67
+ document.addEventListener('visibilitychange', _onVisibilityChange);
67
68
 
68
69
  // Todo: handle combination of keys
69
70
  state.element.removeEventListener('keydown', keyListener);
70
71
  }
71
72
 
73
+ /**
74
+ * Whenever the visibility (i.e. tab focus) changes such that the tab is NOT the
75
+ * active tab, reset the modifier key.
76
+ */
77
+ function _onVisibilityChange(): void {
78
+ document.removeEventListener('visibilitychange', _onVisibilityChange);
79
+ if (document.visibilityState === 'hidden') {
80
+ resetModifierKey();
81
+ }
82
+ }
83
+
72
84
  function _onKeyUp(evt: KeyboardEvent): void {
73
85
  const eventDetail: KeyUpEventDetail = {
74
86
  renderingEngineId: state.renderingEngineId,
@@ -81,6 +93,7 @@ function _onKeyUp(evt: KeyboardEvent): void {
81
93
 
82
94
  // Remove our temporary handlers
83
95
  document.removeEventListener('keyup', _onKeyUp);
96
+ document.removeEventListener('visibilitychange', _onVisibilityChange);
84
97
  state.element.addEventListener('keydown', keyListener);
85
98
 
86
99
  // Restore `state` to `defaultState`
@@ -129,7 +129,9 @@ const doubleClickState: IDoubleClickState = {
129
129
  function mouseDownListener(evt: MouseEvent) {
130
130
  if (doubleClickState.doubleClickTimeout) {
131
131
  // A second identical click will be a double click event, so ignore it
132
- if (evt.buttons === doubleClickState.mouseDownEvent.buttons) return;
132
+ if (evt.buttons === doubleClickState.mouseDownEvent.buttons) {
133
+ return;
134
+ }
133
135
 
134
136
  // Record the second button or the changed button event as the initial
135
137
  // button down state so that the multi-button event can be detected
@@ -260,7 +262,13 @@ function _onMouseDrag(evt: MouseEvent) {
260
262
  deltaPoints,
261
263
  };
262
264
 
263
- triggerEvent(state.element, MOUSE_DRAG, eventDetail);
265
+ const consumed = !triggerEvent(state.element, MOUSE_DRAG, eventDetail);
266
+
267
+ // Events.MOUSE_DRAG was consumed, thus no other listener should handle this event.
268
+ if (consumed) {
269
+ evt.stopImmediatePropagation();
270
+ evt.preventDefault();
271
+ }
264
272
 
265
273
  // Update the last points
266
274
  state.lastPoints = _copyPoints(currentPoints);
@@ -27,7 +27,13 @@ function mouseMoveListener(evt: MouseEvent) {
27
27
  event: evt,
28
28
  };
29
29
 
30
- triggerEvent(element, eventName, eventDetail);
30
+ const consumed = !triggerEvent(element, eventName, eventDetail);
31
+
32
+ // Events.MOUSE_MOVE was consumed, thus no other listener should handle this event.
33
+ if (consumed) {
34
+ evt.stopImmediatePropagation();
35
+ evt.preventDefault();
36
+ }
31
37
  }
32
38
 
33
39
  export default mouseMoveListener;