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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) 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/index.d.ts +3 -1
  16. package/dist/cjs/drawingSvg/index.js +5 -1
  17. package/dist/cjs/drawingSvg/index.js.map +1 -1
  18. package/dist/cjs/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  19. package/dist/cjs/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +5 -5
  20. package/dist/cjs/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  21. package/dist/cjs/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  22. package/dist/cjs/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +5 -5
  23. package/dist/cjs/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  24. package/dist/cjs/enums/Events.d.ts +1 -0
  25. package/dist/cjs/enums/Events.js +1 -0
  26. package/dist/cjs/enums/Events.js.map +1 -1
  27. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +10 -5
  28. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  29. package/dist/cjs/eventListeners/keyboard/keyDownListener.js +8 -0
  30. package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +1 -1
  31. package/dist/cjs/eventListeners/mouse/mouseDownListener.js +2 -1
  32. package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +1 -1
  33. package/dist/cjs/eventListeners/touch/touchStartListener.js +10 -5
  34. package/dist/cjs/eventListeners/touch/touchStartListener.js.map +1 -1
  35. package/dist/cjs/index.d.ts +2 -2
  36. package/dist/cjs/index.js +3 -2
  37. package/dist/cjs/index.js.map +1 -1
  38. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +1 -0
  39. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  40. package/dist/cjs/stateManagement/annotation/config/getState.js +6 -3
  41. package/dist/cjs/stateManagement/annotation/config/getState.js.map +1 -1
  42. package/dist/cjs/stateManagement/annotation/config/helpers.js +4 -2
  43. package/dist/cjs/stateManagement/annotation/config/helpers.js.map +1 -1
  44. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +10 -2
  45. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  46. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +3 -3
  47. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +9 -2
  48. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  49. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  50. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  51. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +25 -22
  52. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  53. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js +1 -1
  54. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  55. package/dist/cjs/tools/MIPJumpToClickTool.js +4 -2
  56. package/dist/cjs/tools/MIPJumpToClickTool.js.map +1 -1
  57. package/dist/cjs/tools/PlanarRotateTool.js +2 -1
  58. package/dist/cjs/tools/PlanarRotateTool.js.map +1 -1
  59. package/dist/cjs/tools/ReferenceCursors.js +58 -29
  60. package/dist/cjs/tools/ReferenceCursors.js.map +1 -1
  61. package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
  62. package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
  63. package/dist/cjs/tools/annotation/AngleTool.d.ts +0 -1
  64. package/dist/cjs/tools/annotation/AngleTool.js +31 -14
  65. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
  66. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +15 -1
  67. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  68. package/dist/cjs/tools/annotation/BidirectionalTool.d.ts +0 -1
  69. package/dist/cjs/tools/annotation/BidirectionalTool.js +29 -14
  70. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
  71. package/dist/cjs/tools/annotation/CircleROITool.d.ts +0 -1
  72. package/dist/cjs/tools/annotation/CircleROITool.js +56 -53
  73. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  74. package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +0 -1
  75. package/dist/cjs/tools/annotation/CobbAngleTool.js +26 -11
  76. package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
  77. package/dist/cjs/tools/annotation/DragProbeTool.js +13 -1
  78. package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
  79. package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +0 -1
  80. package/dist/cjs/tools/annotation/EllipticalROITool.js +48 -46
  81. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  82. package/dist/cjs/tools/annotation/LengthTool.d.ts +0 -1
  83. package/dist/cjs/tools/annotation/LengthTool.js +26 -11
  84. package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
  85. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +0 -1
  86. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +50 -51
  87. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  88. package/dist/cjs/tools/annotation/ProbeTool.d.ts +0 -1
  89. package/dist/cjs/tools/annotation/ProbeTool.js +18 -13
  90. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  91. package/dist/cjs/tools/annotation/RectangleROITool.d.ts +0 -1
  92. package/dist/cjs/tools/annotation/RectangleROITool.js +46 -48
  93. package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
  94. package/dist/cjs/tools/base/AnnotationTool.d.ts +2 -1
  95. package/dist/cjs/tools/base/AnnotationTool.js +27 -16
  96. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  97. package/dist/cjs/tools/base/index.d.ts +2 -1
  98. package/dist/cjs/tools/base/index.js +3 -1
  99. package/dist/cjs/tools/base/index.js.map +1 -1
  100. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  101. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -0
  102. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  103. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +5 -6
  104. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  105. package/dist/cjs/tools/index.d.ts +2 -2
  106. package/dist/cjs/tools/index.js +2 -1
  107. package/dist/cjs/tools/index.js.map +1 -1
  108. package/dist/cjs/tools/segmentation/BrushTool.js +24 -17
  109. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  110. package/dist/cjs/tools/segmentation/PaintFillTool.js +4 -2
  111. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
  112. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  113. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  114. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +5 -7
  115. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  116. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  117. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +38 -10
  118. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  119. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  120. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +10 -0
  121. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  122. package/dist/cjs/types/CINETypes.d.ts +2 -0
  123. package/dist/cjs/types/CalculatorTypes.d.ts +6 -0
  124. package/dist/cjs/types/CalculatorTypes.js +3 -0
  125. package/dist/cjs/types/CalculatorTypes.js.map +1 -0
  126. package/dist/cjs/types/EventTypes.d.ts +8 -1
  127. package/dist/cjs/types/ISetToolModeOptions.d.ts +2 -2
  128. package/dist/cjs/types/IToolGroup.d.ts +3 -2
  129. package/dist/cjs/types/ToolProps.d.ts +5 -1
  130. package/dist/cjs/types/index.d.ts +3 -2
  131. package/dist/cjs/utilities/cine/playClip.js +13 -3
  132. package/dist/cjs/utilities/cine/playClip.js.map +1 -1
  133. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +7 -4
  134. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  135. package/dist/cjs/utilities/getCalibratedUnits.js +10 -5
  136. package/dist/cjs/utilities/getCalibratedUnits.js.map +1 -1
  137. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  138. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js +44 -0
  139. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  140. package/dist/cjs/utilities/math/basic/Calculator.d.ts +8 -0
  141. package/dist/cjs/utilities/math/basic/Calculator.js +6 -0
  142. package/dist/cjs/utilities/math/basic/Calculator.js.map +1 -0
  143. package/dist/cjs/utilities/math/basic/index.d.ts +3 -0
  144. package/dist/cjs/utilities/math/basic/index.js +11 -0
  145. package/dist/cjs/utilities/math/basic/index.js.map +1 -0
  146. package/dist/cjs/utilities/math/index.d.ts +2 -1
  147. package/dist/cjs/utilities/math/index.js +3 -1
  148. package/dist/cjs/utilities/math/index.js.map +1 -1
  149. package/dist/cjs/utilities/math/midPoint.js +2 -1
  150. package/dist/cjs/utilities/math/midPoint.js.map +1 -1
  151. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +2 -1
  152. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +1 -1
  153. package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  154. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js +10 -5
  155. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  156. package/dist/cjs/utilities/pointInShapeCallback.d.ts +7 -1
  157. package/dist/cjs/utilities/pointInShapeCallback.js +6 -1
  158. package/dist/cjs/utilities/pointInShapeCallback.js.map +1 -1
  159. package/dist/cjs/utilities/roundNumber.js +4 -2
  160. package/dist/cjs/utilities/roundNumber.js.map +1 -1
  161. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  162. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  163. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  164. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  165. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  166. package/dist/cjs/utilities/segmentation/utilities.d.ts +1 -2
  167. package/dist/cjs/utilities/segmentation/utilities.js +4 -1
  168. package/dist/cjs/utilities/segmentation/utilities.js.map +1 -1
  169. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +4 -4
  170. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  171. package/dist/esm/drawingSvg/drawCircle.js +9 -5
  172. package/dist/esm/drawingSvg/drawCircle.js.map +1 -1
  173. package/dist/esm/drawingSvg/drawEllipse.js +4 -4
  174. package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
  175. package/dist/esm/drawingSvg/drawHandles.js +4 -4
  176. package/dist/esm/drawingSvg/drawHandles.js.map +1 -1
  177. package/dist/esm/drawingSvg/drawLine.js +4 -4
  178. package/dist/esm/drawingSvg/drawLine.js.map +1 -1
  179. package/dist/esm/drawingSvg/drawPolyline.js +4 -4
  180. package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
  181. package/dist/esm/drawingSvg/drawRect.js +4 -4
  182. package/dist/esm/drawingSvg/drawRect.js.map +1 -1
  183. package/dist/esm/drawingSvg/drawTextBox.js +4 -4
  184. package/dist/esm/drawingSvg/drawTextBox.js.map +1 -1
  185. package/dist/esm/drawingSvg/index.d.ts +3 -1
  186. package/dist/esm/drawingSvg/index.js +3 -1
  187. package/dist/esm/drawingSvg/index.js.map +1 -1
  188. package/dist/esm/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  189. package/dist/esm/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +3 -3
  190. package/dist/esm/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  191. package/dist/esm/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  192. package/dist/esm/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +3 -3
  193. package/dist/esm/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  194. package/dist/esm/enums/Events.d.ts +1 -0
  195. package/dist/esm/enums/Events.js +1 -0
  196. package/dist/esm/enums/Events.js.map +1 -1
  197. package/dist/esm/eventDispatchers/shared/getMouseModifier.js +10 -5
  198. package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  199. package/dist/esm/eventListeners/keyboard/keyDownListener.js +8 -0
  200. package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +1 -1
  201. package/dist/esm/eventListeners/mouse/mouseDownListener.js +2 -1
  202. package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +1 -1
  203. package/dist/esm/eventListeners/touch/touchStartListener.js +10 -5
  204. package/dist/esm/eventListeners/touch/touchStartListener.js.map +1 -1
  205. package/dist/esm/index.d.ts +2 -2
  206. package/dist/esm/index.js +2 -2
  207. package/dist/esm/index.js.map +1 -1
  208. package/dist/esm/stateManagement/annotation/config/ToolStyle.js +1 -0
  209. package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  210. package/dist/esm/stateManagement/annotation/config/getState.js +6 -3
  211. package/dist/esm/stateManagement/annotation/config/getState.js.map +1 -1
  212. package/dist/esm/stateManagement/annotation/config/helpers.js +4 -2
  213. package/dist/esm/stateManagement/annotation/config/helpers.js.map +1 -1
  214. package/dist/esm/store/SynchronizerManager/Synchronizer.js +10 -2
  215. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  216. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +3 -3
  217. package/dist/esm/store/ToolGroupManager/ToolGroup.js +10 -3
  218. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  219. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  220. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  221. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +26 -23
  222. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  223. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js +1 -1
  224. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  225. package/dist/esm/tools/MIPJumpToClickTool.js +4 -2
  226. package/dist/esm/tools/MIPJumpToClickTool.js.map +1 -1
  227. package/dist/esm/tools/PlanarRotateTool.js +2 -1
  228. package/dist/esm/tools/PlanarRotateTool.js.map +1 -1
  229. package/dist/esm/tools/ReferenceCursors.js +58 -29
  230. package/dist/esm/tools/ReferenceCursors.js.map +1 -1
  231. package/dist/esm/tools/ScaleOverlayTool.js +2 -1
  232. package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
  233. package/dist/esm/tools/annotation/AngleTool.d.ts +0 -1
  234. package/dist/esm/tools/annotation/AngleTool.js +31 -14
  235. package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
  236. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +15 -1
  237. package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  238. package/dist/esm/tools/annotation/BidirectionalTool.d.ts +0 -1
  239. package/dist/esm/tools/annotation/BidirectionalTool.js +29 -14
  240. package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
  241. package/dist/esm/tools/annotation/CircleROITool.d.ts +0 -1
  242. package/dist/esm/tools/annotation/CircleROITool.js +55 -53
  243. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  244. package/dist/esm/tools/annotation/CobbAngleTool.d.ts +0 -1
  245. package/dist/esm/tools/annotation/CobbAngleTool.js +26 -11
  246. package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
  247. package/dist/esm/tools/annotation/DragProbeTool.js +13 -1
  248. package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
  249. package/dist/esm/tools/annotation/EllipticalROITool.d.ts +0 -1
  250. package/dist/esm/tools/annotation/EllipticalROITool.js +47 -46
  251. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  252. package/dist/esm/tools/annotation/LengthTool.d.ts +0 -1
  253. package/dist/esm/tools/annotation/LengthTool.js +26 -11
  254. package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
  255. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +0 -1
  256. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +49 -51
  257. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  258. package/dist/esm/tools/annotation/ProbeTool.d.ts +0 -1
  259. package/dist/esm/tools/annotation/ProbeTool.js +18 -13
  260. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  261. package/dist/esm/tools/annotation/RectangleROITool.d.ts +0 -1
  262. package/dist/esm/tools/annotation/RectangleROITool.js +45 -48
  263. package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
  264. package/dist/esm/tools/base/AnnotationTool.d.ts +2 -1
  265. package/dist/esm/tools/base/AnnotationTool.js +26 -16
  266. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  267. package/dist/esm/tools/base/index.d.ts +2 -1
  268. package/dist/esm/tools/base/index.js +2 -1
  269. package/dist/esm/tools/base/index.js.map +1 -1
  270. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  271. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +4 -1
  272. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  273. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +5 -6
  274. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  275. package/dist/esm/tools/index.d.ts +2 -2
  276. package/dist/esm/tools/index.js +2 -2
  277. package/dist/esm/tools/index.js.map +1 -1
  278. package/dist/esm/tools/segmentation/BrushTool.js +25 -18
  279. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  280. package/dist/esm/tools/segmentation/PaintFillTool.js +4 -2
  281. package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
  282. package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  283. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  284. package/dist/esm/tools/segmentation/strategies/fillCircle.js +1 -6
  285. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  286. package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  287. package/dist/esm/tools/segmentation/strategies/fillSphere.js +33 -9
  288. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  289. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  290. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +8 -0
  291. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  292. package/dist/esm/types/CINETypes.d.ts +2 -0
  293. package/dist/esm/types/CalculatorTypes.d.ts +6 -0
  294. package/dist/esm/types/CalculatorTypes.js +2 -0
  295. package/dist/esm/types/CalculatorTypes.js.map +1 -0
  296. package/dist/esm/types/EventTypes.d.ts +8 -1
  297. package/dist/esm/types/ISetToolModeOptions.d.ts +2 -2
  298. package/dist/esm/types/IToolGroup.d.ts +3 -2
  299. package/dist/esm/types/ToolProps.d.ts +5 -1
  300. package/dist/esm/types/index.d.ts +3 -2
  301. package/dist/esm/utilities/cine/playClip.js +13 -4
  302. package/dist/esm/utilities/cine/playClip.js.map +1 -1
  303. package/dist/esm/utilities/dynamicVolume/getDataInTime.js +7 -4
  304. package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  305. package/dist/esm/utilities/getCalibratedUnits.js +10 -5
  306. package/dist/esm/utilities/getCalibratedUnits.js.map +1 -1
  307. package/dist/esm/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  308. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +36 -0
  309. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  310. package/dist/esm/utilities/math/basic/Calculator.d.ts +8 -0
  311. package/dist/esm/utilities/math/basic/Calculator.js +4 -0
  312. package/dist/esm/utilities/math/basic/Calculator.js.map +1 -0
  313. package/dist/esm/utilities/math/basic/index.d.ts +3 -0
  314. package/dist/esm/utilities/math/basic/index.js +4 -0
  315. package/dist/esm/utilities/math/basic/index.js.map +1 -0
  316. package/dist/esm/utilities/math/index.d.ts +2 -1
  317. package/dist/esm/utilities/math/index.js +2 -1
  318. package/dist/esm/utilities/math/index.js.map +1 -1
  319. package/dist/esm/utilities/math/midPoint.js +2 -1
  320. package/dist/esm/utilities/math/midPoint.js.map +1 -1
  321. package/dist/esm/utilities/math/polyline/pointInPolyline.js +2 -1
  322. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +1 -1
  323. package/dist/esm/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  324. package/dist/esm/utilities/math/vec2/liangBarksyClip.js +10 -5
  325. package/dist/esm/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  326. package/dist/esm/utilities/pointInShapeCallback.d.ts +7 -1
  327. package/dist/esm/utilities/pointInShapeCallback.js +6 -1
  328. package/dist/esm/utilities/pointInShapeCallback.js.map +1 -1
  329. package/dist/esm/utilities/roundNumber.js +4 -2
  330. package/dist/esm/utilities/roundNumber.js.map +1 -1
  331. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  332. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  333. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  334. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  335. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  336. package/dist/esm/utilities/segmentation/utilities.d.ts +1 -2
  337. package/dist/esm/utilities/segmentation/utilities.js +4 -1
  338. package/dist/esm/utilities/segmentation/utilities.js.map +1 -1
  339. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +4 -4
  340. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  341. package/dist/umd/index.js +1 -1
  342. package/dist/umd/index.js.map +1 -1
  343. package/package.json +3 -3
  344. package/src/drawingSvg/drawCircle.ts +17 -5
  345. package/src/drawingSvg/drawEllipse.ts +4 -4
  346. package/src/drawingSvg/drawHandles.ts +4 -4
  347. package/src/drawingSvg/drawLine.ts +4 -4
  348. package/src/drawingSvg/drawPolyline.ts +4 -4
  349. package/src/drawingSvg/drawRect.ts +4 -4
  350. package/src/drawingSvg/drawTextBox.ts +4 -4
  351. package/src/drawingSvg/index.ts +4 -0
  352. package/src/drawingSvg/{_setAttributesIfNecessary.ts → setAttributesIfNecessary.ts} +2 -2
  353. package/src/drawingSvg/{_setNewAttributesIfValid.ts → setNewAttributesIfValid.ts} +2 -2
  354. package/src/enums/Events.ts +13 -0
  355. package/src/eventDispatchers/shared/getMouseModifier.ts +15 -5
  356. package/src/eventListeners/keyboard/keyDownListener.ts +13 -0
  357. package/src/eventListeners/mouse/mouseDownListener.ts +3 -1
  358. package/src/eventListeners/touch/touchStartListener.ts +15 -5
  359. package/src/index.ts +2 -0
  360. package/src/stateManagement/annotation/config/ToolStyle.ts +1 -0
  361. package/src/stateManagement/annotation/config/getState.ts +7 -3
  362. package/src/stateManagement/annotation/config/helpers.ts +6 -2
  363. package/src/store/SynchronizerManager/Synchronizer.ts +16 -8
  364. package/src/store/ToolGroupManager/ToolGroup.ts +21 -5
  365. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +3 -1
  366. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +63 -68
  367. package/src/synchronizers/callbacks/voiSyncCallback.ts +1 -1
  368. package/src/tools/MIPJumpToClickTool.ts +6 -2
  369. package/src/tools/PlanarRotateTool.ts +3 -1
  370. package/src/tools/ReferenceCursors.ts +85 -29
  371. package/src/tools/ScaleOverlayTool.ts +3 -1
  372. package/src/tools/annotation/AngleTool.ts +38 -19
  373. package/src/tools/annotation/ArrowAnnotateTool.ts +16 -1
  374. package/src/tools/annotation/BidirectionalTool.ts +37 -23
  375. package/src/tools/annotation/CircleROITool.ts +83 -89
  376. package/src/tools/annotation/CobbAngleTool.ts +31 -16
  377. package/src/tools/annotation/DragProbeTool.ts +19 -1
  378. package/src/tools/annotation/EllipticalROITool.ts +63 -71
  379. package/src/tools/annotation/LengthTool.ts +32 -17
  380. package/src/tools/annotation/PlanarFreehandROITool.ts +56 -59
  381. package/src/tools/annotation/ProbeTool.ts +26 -19
  382. package/src/tools/annotation/RectangleROITool.ts +67 -75
  383. package/src/tools/base/AnnotationTool.ts +39 -17
  384. package/src/tools/base/index.ts +2 -1
  385. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +3 -0
  386. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +6 -1
  387. package/src/tools/displayTools/SegmentationDisplayTool.ts +12 -18
  388. package/src/tools/index.ts +2 -1
  389. package/src/tools/segmentation/BrushTool.ts +42 -19
  390. package/src/tools/segmentation/PaintFillTool.ts +10 -3
  391. package/src/tools/segmentation/strategies/eraseSphere.ts +2 -0
  392. package/src/tools/segmentation/strategies/fillCircle.ts +1 -13
  393. package/src/tools/segmentation/strategies/fillSphere.ts +56 -8
  394. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +16 -0
  395. package/src/types/CINETypes.ts +8 -2
  396. package/src/types/CalculatorTypes.ts +7 -0
  397. package/src/types/EventTypes.ts +20 -0
  398. package/src/types/ISetToolModeOptions.ts +2 -2
  399. package/src/types/IToolGroup.ts +6 -3
  400. package/src/types/ToolProps.ts +7 -1
  401. package/src/types/index.ts +9 -1
  402. package/src/utilities/cine/playClip.ts +20 -3
  403. package/src/utilities/dynamicVolume/getDataInTime.ts +9 -6
  404. package/src/utilities/getCalibratedUnits.ts +15 -5
  405. package/src/utilities/math/basic/BasicStatsCalculator.ts +60 -0
  406. package/src/utilities/math/basic/Calculator.ts +8 -0
  407. package/src/utilities/math/basic/index.ts +4 -0
  408. package/src/utilities/math/index.ts +10 -1
  409. package/src/utilities/math/midPoint.ts +3 -1
  410. package/src/utilities/math/polyline/pointInPolyline.ts +3 -1
  411. package/src/utilities/math/vec2/liangBarksyClip.ts +15 -5
  412. package/src/utilities/pointInShapeCallback.ts +15 -3
  413. package/src/utilities/roundNumber.ts +6 -2
  414. package/src/utilities/segmentation/brushSizeForToolGroup.ts +22 -4
  415. package/src/utilities/segmentation/thresholdVolumeByRange.ts +3 -1
  416. package/src/utilities/segmentation/utilities.ts +8 -1
  417. package/src/utilities/stackPrefetch/stackPrefetch.ts +10 -4
  418. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  419. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  420. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  421. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
  422. package/dist/esm/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  423. package/dist/esm/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  424. package/dist/esm/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  425. 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.2",
4
4
  "description": "Cornerstone3D Tools",
5
5
  "main": "dist/umd/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
30
30
  },
31
31
  "dependencies": {
32
- "@cornerstonejs/core": "^2.0.0-beta.1",
32
+ "@cornerstonejs/core": "^2.0.0-beta.2",
33
33
  "lodash.clonedeep": "4.5.0",
34
34
  "lodash.get": "^4.4.2"
35
35
  },
@@ -52,5 +52,5 @@
52
52
  "type": "individual",
53
53
  "url": "https://ohif.org/donate"
54
54
  },
55
- "gitHead": "8cb0ace8dd10393a32f88507ef911ce823b0069d"
55
+ "gitHead": "c154f7531c166db29a54fe41c76a22ecc7ac47c8"
56
56
  }
@@ -3,8 +3,8 @@ import { SVGDrawingHelper } from '../types';
3
3
 
4
4
  import _getHash from './_getHash';
5
5
 
6
- import _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
  }
@@ -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,19 @@
5
5
  *
6
6
  */
7
7
  enum Events {
8
+ ///////////////////////////////////////
9
+ // Tools
10
+ ///////////////////////////////////////
11
+
12
+ /**
13
+ * Triggers on the eventTarget when a new tools is activated.
14
+ *
15
+ * Make use of {@link EventTypes.ToolActivatedEventType | Tool Activated Event Type }
16
+ * for typing your event listeners for this tool activated event, and see what event
17
+ * detail is included in {@link EventTypes.ToolActivatedEventDetail | Tool Activated Event Detail}.
18
+ */
19
+ TOOL_ACTIVATED = 'CORNERSTONE_TOOLS_TOOL_ACTIVATED',
20
+
8
21
  ///////////////////////////////////////
9
22
  // Annotations
10
23
  ///////////////////////////////////////
@@ -8,14 +8,24 @@ import { KeyboardBindings as kb } from '../../enums';
8
8
  const getMouseModifierKey = (evt) => {
9
9
  // The logic is a hard coded key mapping
10
10
  if (evt.shiftKey) {
11
- if (evt.ctrlKey) 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) {
@@ -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
@@ -168,7 +168,9 @@ function touchStartListener(evt: TouchEvent) {
168
168
  state.renderingEngineId = renderingEngineId;
169
169
  state.viewportId = viewportId;
170
170
  // this prevents multiple start firing
171
- if (state.isTouchStart) return;
171
+ if (state.isTouchStart) {
172
+ return;
173
+ }
172
174
  // this will clear on touchstart and touchend
173
175
  clearTimeout(state.pressTimeout);
174
176
  state.pressTimeout = setTimeout(() => _onTouchPress(evt), state.pressDelay);
@@ -187,7 +189,9 @@ function touchStartListener(evt: TouchEvent) {
187
189
  */
188
190
  function _onTouchPress(evt: TouchEvent) {
189
191
  const totalDistance = state.accumulatedDistance.canvas;
190
- if (totalDistance > state.pressMaxDistance) return;
192
+ if (totalDistance > state.pressMaxDistance) {
193
+ return;
194
+ }
191
195
  const eventDetail: EventTypes.TouchPressEventDetail = {
192
196
  event: evt, // touchstart native event
193
197
  eventName: TOUCH_PRESS,
@@ -384,7 +388,9 @@ function _onTouchEnd(evt: TouchEvent): void {
384
388
  function _checkTouchTap(evt: TouchEvent): void {
385
389
  const currentTime = new Date().getTime();
386
390
  const startTime = state.startTime.getTime();
387
- if (currentTime - startTime > tapState.tapToleranceMs) return;
391
+ if (currentTime - startTime > tapState.tapToleranceMs) {
392
+ return;
393
+ }
388
394
 
389
395
  // first tap, initialize the state
390
396
  if (tapState.taps === 0) {
@@ -422,7 +428,9 @@ function _checkTouchTap(evt: TouchEvent): void {
422
428
  // region where the user has the option to perform unlimited multitaps as long
423
429
  // as they are < the tapToleranceMs value. So a tap somewhere else on the screen
424
430
  // that is > the tapMaxDistance will start a separate and new "TapChain".
425
- if (distanceFromStart > tapState.tapMaxDistance) return;
431
+ if (distanceFromStart > tapState.tapMaxDistance) {
432
+ return;
433
+ }
426
434
 
427
435
  clearTimeout(tapState.tapTimeout);
428
436
  tapState.taps += 1;
@@ -447,7 +455,9 @@ function _checkTouchTap(evt: TouchEvent): void {
447
455
  function _checkTouchSwipe(evt: TouchEvent, deltaPoints: IPoints) {
448
456
  const currentTime = new Date().getTime();
449
457
  const startTime = state.startTime.getTime();
450
- if (state.swiped || currentTime - startTime > state.swipeToleranceMs) return;
458
+ if (state.swiped || currentTime - startTime > state.swipeToleranceMs) {
459
+ return;
460
+ }
451
461
  const [x, y] = deltaPoints.canvas;
452
462
  const eventDetail: EventTypes.TouchSwipeEventDetail = {
453
463
  event: evt,
package/src/index.ts CHANGED
@@ -23,6 +23,7 @@ import * as segmentation from './stateManagement/segmentation';
23
23
  import {
24
24
  BaseTool,
25
25
  AnnotationTool,
26
+ AnnotationDisplayTool,
26
27
  PanTool,
27
28
  TrackballRotateTool,
28
29
  DragProbeTool,
@@ -71,6 +72,7 @@ export {
71
72
  // Base Tools
72
73
  BaseTool,
73
74
  AnnotationTool,
75
+ AnnotationDisplayTool,
74
76
  // Manipulation Tools
75
77
  PanTool,
76
78
  TrackballRotateTool,
@@ -35,6 +35,7 @@ class ToolStyle {
35
35
  lineWidth: '1',
36
36
  lineDash: '',
37
37
  shadow: true,
38
+ textBoxVisibility: true,
38
39
  textBoxFontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif',
39
40
  textBoxFontSize: '14px',
40
41
  textBoxColor: 'rgb(255, 255, 0)',
@@ -11,13 +11,17 @@ import { AnnotationStyleStates } from '../../../enums';
11
11
  */
12
12
  function getState(annotation?: Annotation): AnnotationStyleStates {
13
13
  if (annotation) {
14
- if (annotation.data && annotation.highlighted)
14
+ if (annotation.data && annotation.highlighted) {
15
15
  return AnnotationStyleStates.Highlighted;
16
- if (isAnnotationSelected(annotation.annotationUID))
16
+ }
17
+ if (isAnnotationSelected(annotation.annotationUID)) {
17
18
  return AnnotationStyleStates.Selected;
19
+ }
18
20
 
19
21
  // Todo: make annotation lock api not to rely on the annotation itself
20
- if (isAnnotationLocked(annotation)) return AnnotationStyleStates.Locked;
22
+ if (isAnnotationLocked(annotation)) {
23
+ return AnnotationStyleStates.Locked;
24
+ }
21
25
  }
22
26
 
23
27
  return AnnotationStyleStates.Default;
@@ -15,8 +15,12 @@ function getHierarchalPropertyStyles(
15
15
  mode?: ToolModes
16
16
  ): string[] {
17
17
  const list = [`${property}`];
18
- if (state) list.push(`${list[0]}${state}`);
19
- if (mode) list.push(`${list[list.length - 1]}${mode}`);
18
+ if (state) {
19
+ list.push(`${list[0]}${state}`);
20
+ }
21
+ if (mode) {
22
+ list.push(`${list[list.length - 1]}${mode}`);
23
+ }
20
24
  return list;
21
25
  }
22
26
 
@@ -205,6 +205,7 @@ class Synchronizer {
205
205
  }
206
206
 
207
207
  this._ignoreFiredEvents = true;
208
+ const promises = [];
208
209
  try {
209
210
  for (let i = 0; i < this._targetViewports.length; i++) {
210
211
  const targetViewport = this._targetViewports[i];
@@ -214,19 +215,26 @@ class Synchronizer {
214
215
  if (targetIsSource) {
215
216
  continue;
216
217
  }
217
-
218
- this._eventHandler(
219
- this,
220
- sourceViewport,
221
- targetViewport,
222
- sourceEvent,
223
- this._options
218
+ promises.push(
219
+ this._eventHandler(
220
+ this,
221
+ sourceViewport,
222
+ targetViewport,
223
+ sourceEvent,
224
+ this._options
225
+ )
224
226
  );
225
227
  }
226
228
  } catch (ex) {
227
229
  console.warn(`Synchronizer, for: ${this._eventName}`, ex);
228
230
  } finally {
229
- this._ignoreFiredEvents = false;
231
+ if (promises.length) {
232
+ Promise.allSettled(promises).then(() => {
233
+ this._ignoreFiredEvents = false;
234
+ });
235
+ } else {
236
+ this._ignoreFiredEvents = false;
237
+ }
230
238
  }
231
239
  }
232
240
 
@@ -2,6 +2,8 @@ import { MouseBindings, ToolModes } from '../../enums';
2
2
  import cloneDeep from 'lodash.clonedeep';
3
3
  import get from 'lodash.get';
4
4
  import {
5
+ triggerEvent,
6
+ eventTarget,
5
7
  getRenderingEngine,
6
8
  getRenderingEngines,
7
9
  getEnabledElementByIds,
@@ -9,6 +11,8 @@ import {
9
11
  utilities as csUtils,
10
12
  } from '@cornerstonejs/core';
11
13
  import type { Types } from '@cornerstonejs/core';
14
+ import { Events } from '../../enums';
15
+ import { ToolActivatedEventDetail } from '../../types/EventTypes';
12
16
  import { state } from '../index';
13
17
  import {
14
18
  IToolBinding,
@@ -16,6 +20,7 @@ import {
16
20
  IToolGroup,
17
21
  SetToolBindingsType,
18
22
  ToolOptionsType,
23
+ ToolConfiguration,
19
24
  } from '../../types';
20
25
 
21
26
  import { MouseCursor, SVGMouseCursor } from '../../cursors';
@@ -69,7 +74,7 @@ export default class ToolGroup implements IToolGroup {
69
74
  const toolInstance = this._toolInstances[toolInstanceName];
70
75
  if (!toolInstance) {
71
76
  console.warn(
72
- `'${toolInstanceName}' is not registered with this toolGroup.`
77
+ `'${toolInstanceName}' is not registered with this toolGroup (${this.id}).`
73
78
  );
74
79
  return;
75
80
  }
@@ -83,9 +88,9 @@ export default class ToolGroup implements IToolGroup {
83
88
  * to set the tool to be active or passive or in other states.
84
89
  *
85
90
  * @param toolName - string
86
- * @param configuration - Tool configuration objects
91
+ * @param configuration - Tool configuration objects and a custom statistics calculator if needed
87
92
  */
88
- addTool(toolName: string, configuration = {}): void {
93
+ addTool(toolName: string, configuration: ToolConfiguration = {}): void {
89
94
  const toolDefinition = state.tools[toolName];
90
95
  const hasToolName = typeof toolName !== 'undefined' && toolName !== '';
91
96
  const localToolInstance = this.toolOptions[toolName];
@@ -372,6 +377,14 @@ export default class ToolGroup implements IToolGroup {
372
377
  toolInstance.onSetToolActive();
373
378
  }
374
379
  this._renderViewports();
380
+
381
+ const eventDetail: ToolActivatedEventDetail = {
382
+ toolGroupId: this.id,
383
+ toolName,
384
+ toolBindingsOptions,
385
+ };
386
+
387
+ triggerEvent(eventTarget, Events.TOOL_ACTIVATED, eventDetail);
375
388
  }
376
389
 
377
390
  /**
@@ -593,7 +606,7 @@ export default class ToolGroup implements IToolGroup {
593
606
  */
594
607
  public setToolConfiguration(
595
608
  toolName: string,
596
- configuration: Record<any, any>,
609
+ configuration: ToolConfiguration,
597
610
  overwrite?: boolean
598
611
  ): boolean {
599
612
  if (this._toolInstances[toolName] === undefined) {
@@ -608,7 +621,10 @@ export default class ToolGroup implements IToolGroup {
608
621
  if (overwrite) {
609
622
  _configuration = configuration;
610
623
  } else {
611
- _configuration = csUtils.deepMerge(
624
+ // We should not deep copy here, it is the job of the application to
625
+ // deep copy the configuration before passing it to the toolGroup, otherwise
626
+ // some strange appending behaviour happens for the arrays
627
+ _configuration = Object.assign(
612
628
  this._toolInstances[toolName].configuration,
613
629
  configuration
614
630
  );
@@ -15,7 +15,9 @@ function getToolGroupsWithToolName(toolName: string): IToolGroup[] | [] {
15
15
  const toolGroupToolNames = Object.keys(toolOptions);
16
16
 
17
17
  for (let i = 0; i < toolGroupToolNames.length; i++) {
18
- if (toolName !== toolGroupToolNames[i]) continue;
18
+ if (toolName !== toolGroupToolNames[i]) {
19
+ continue;
20
+ }
19
21
 
20
22
  /* filter out tools that don't have options */
21
23
  if (!toolOptions[toolName]) {