@cornerstonejs/tools 1.33.0 → 1.35.0

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 (338) hide show
  1. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +4 -4
  2. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  3. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +3 -2
  4. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  5. package/dist/cjs/index.d.ts +2 -2
  6. package/dist/cjs/index.js +3 -2
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/store/SynchronizerManager/Synchronizer.d.ts +1 -0
  9. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +17 -1
  10. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  11. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .d.ts +1 -1
  12. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .js.map +1 -1
  13. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.d.ts → imageSliceSyncCallback.d.ts} +1 -1
  14. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.js → imageSliceSyncCallback.js} +8 -4
  15. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.js.map → imageSliceSyncCallback.js.map} +1 -1
  16. package/dist/cjs/synchronizers/index.d.ts +3 -2
  17. package/dist/cjs/synchronizers/index.js +5 -3
  18. package/dist/cjs/synchronizers/index.js.map +1 -1
  19. package/dist/cjs/synchronizers/synchronizers/{createStackImageSynchronizer.d.ts → createImageSliceSynchronizer.d.ts} +1 -1
  20. package/dist/cjs/synchronizers/synchronizers/createImageSliceSynchronizer.js +17 -0
  21. package/dist/cjs/synchronizers/synchronizers/createImageSliceSynchronizer.js.map +1 -0
  22. package/dist/cjs/synchronizers/synchronizers/index.d.ts +3 -2
  23. package/dist/cjs/synchronizers/synchronizers/index.js +5 -3
  24. package/dist/cjs/synchronizers/synchronizers/index.js.map +1 -1
  25. package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +4 -0
  26. package/dist/cjs/tools/AdvancedMagnifyTool.js +8 -3
  27. package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -1
  28. package/dist/cjs/tools/annotation/SplineROITool.d.ts +59 -0
  29. package/dist/cjs/tools/annotation/SplineROITool.js +709 -0
  30. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -0
  31. package/dist/cjs/tools/annotation/splines/BSpline.d.ts +5 -0
  32. package/dist/cjs/tools/annotation/splines/BSpline.js +14 -0
  33. package/dist/cjs/tools/annotation/splines/BSpline.js.map +1 -0
  34. package/dist/cjs/tools/annotation/splines/CardinalSpline.d.ts +12 -0
  35. package/dist/cjs/tools/annotation/splines/CardinalSpline.js +38 -0
  36. package/dist/cjs/tools/annotation/splines/CardinalSpline.js.map +1 -0
  37. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.d.ts +5 -0
  38. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.js +12 -0
  39. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.js.map +1 -0
  40. package/dist/cjs/tools/annotation/splines/CubicSpline.d.ts +13 -0
  41. package/dist/cjs/tools/annotation/splines/CubicSpline.js +192 -0
  42. package/dist/cjs/tools/annotation/splines/CubicSpline.js.map +1 -0
  43. package/dist/cjs/tools/annotation/splines/LinearSpline.d.ts +5 -0
  44. package/dist/cjs/tools/annotation/splines/LinearSpline.js +12 -0
  45. package/dist/cjs/tools/annotation/splines/LinearSpline.js.map +1 -0
  46. package/dist/cjs/tools/annotation/splines/QuadraticBezier.d.ts +6 -0
  47. package/dist/cjs/tools/annotation/splines/QuadraticBezier.js +20 -0
  48. package/dist/cjs/tools/annotation/splines/QuadraticBezier.js.map +1 -0
  49. package/dist/cjs/tools/annotation/splines/QuadraticSpline.d.ts +9 -0
  50. package/dist/cjs/tools/annotation/splines/QuadraticSpline.js +18 -0
  51. package/dist/cjs/tools/annotation/splines/QuadraticSpline.js.map +1 -0
  52. package/dist/cjs/tools/annotation/splines/Spline.d.ts +49 -0
  53. package/dist/cjs/tools/annotation/splines/Spline.js +420 -0
  54. package/dist/cjs/tools/annotation/splines/Spline.js.map +1 -0
  55. package/dist/cjs/tools/index.d.ts +2 -1
  56. package/dist/cjs/tools/index.js +3 -1
  57. package/dist/cjs/tools/index.js.map +1 -1
  58. package/dist/cjs/types/CardinalSplineProps.d.ts +5 -0
  59. package/dist/cjs/types/CardinalSplineProps.js +3 -0
  60. package/dist/cjs/types/CardinalSplineProps.js.map +1 -0
  61. package/dist/cjs/types/ClosestControlPoint.d.ts +4 -0
  62. package/dist/cjs/types/ClosestControlPoint.js +3 -0
  63. package/dist/cjs/types/ClosestControlPoint.js.map +1 -0
  64. package/dist/cjs/types/ClosestPoint.d.ts +5 -0
  65. package/dist/cjs/types/ClosestPoint.js +3 -0
  66. package/dist/cjs/types/ClosestPoint.js.map +1 -0
  67. package/dist/cjs/types/ClosestSplinePoint.d.ts +4 -0
  68. package/dist/cjs/types/ClosestSplinePoint.js +3 -0
  69. package/dist/cjs/types/ClosestSplinePoint.js.map +1 -0
  70. package/dist/cjs/types/ControlPointInfo.d.ts +5 -0
  71. package/dist/cjs/types/ControlPointInfo.js +3 -0
  72. package/dist/cjs/types/ControlPointInfo.js.map +1 -0
  73. package/dist/cjs/types/ISpline.d.ts +29 -0
  74. package/dist/cjs/types/ISpline.js +3 -0
  75. package/dist/cjs/types/ISpline.js.map +1 -0
  76. package/dist/cjs/types/SplineCurveSegment.d.ts +14 -0
  77. package/dist/cjs/types/SplineCurveSegment.js +3 -0
  78. package/dist/cjs/types/SplineCurveSegment.js.map +1 -0
  79. package/dist/cjs/types/SplineLineSegment.d.ts +10 -0
  80. package/dist/cjs/types/SplineLineSegment.js +3 -0
  81. package/dist/cjs/types/SplineLineSegment.js.map +1 -0
  82. package/dist/cjs/types/SplineProps.d.ts +4 -0
  83. package/dist/cjs/types/SplineProps.js +3 -0
  84. package/dist/cjs/types/SplineProps.js.map +1 -0
  85. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +34 -0
  86. package/dist/cjs/types/index.d.ts +10 -1
  87. package/dist/cjs/utilities/index.d.ts +2 -3
  88. package/dist/cjs/utilities/index.js +5 -5
  89. package/dist/cjs/utilities/index.js.map +1 -1
  90. package/dist/cjs/utilities/math/aabb/distanceToPoint.d.ts +2 -0
  91. package/dist/cjs/utilities/math/aabb/distanceToPoint.js +11 -0
  92. package/dist/cjs/utilities/math/aabb/distanceToPoint.js.map +1 -0
  93. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.d.ts +2 -0
  94. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.js +24 -0
  95. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.js.map +1 -0
  96. package/dist/cjs/utilities/math/aabb/index.d.ts +2 -0
  97. package/dist/cjs/utilities/math/aabb/index.js +11 -0
  98. package/dist/cjs/utilities/math/aabb/index.js.map +1 -0
  99. package/dist/cjs/utilities/math/index.d.ts +6 -5
  100. package/dist/cjs/utilities/math/index.js +11 -9
  101. package/dist/cjs/utilities/math/index.js.map +1 -1
  102. package/dist/cjs/utilities/math/line/distanceToPointSquared.js +5 -21
  103. package/dist/cjs/utilities/math/line/distanceToPointSquared.js.map +1 -1
  104. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.d.ts +5 -0
  105. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.js +56 -0
  106. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.js.map +1 -0
  107. package/dist/cjs/utilities/math/line/index.d.ts +2 -1
  108. package/dist/cjs/utilities/math/line/index.js +3 -1
  109. package/dist/cjs/utilities/math/line/index.js.map +1 -1
  110. package/dist/cjs/utilities/math/point/distanceToPoint.js +5 -6
  111. package/dist/cjs/utilities/math/point/distanceToPoint.js.map +1 -1
  112. package/dist/cjs/utilities/math/point/distanceToPointSquared.d.ts +4 -0
  113. package/dist/cjs/utilities/math/point/distanceToPointSquared.js +12 -0
  114. package/dist/cjs/utilities/math/point/distanceToPointSquared.js.map +1 -0
  115. package/dist/cjs/utilities/math/point/index.d.ts +3 -2
  116. package/dist/cjs/utilities/math/point/index.js +7 -3
  117. package/dist/cjs/utilities/math/point/index.js.map +1 -1
  118. package/dist/cjs/utilities/math/point/mirror.d.ts +2 -0
  119. package/dist/cjs/utilities/math/point/mirror.js +11 -0
  120. package/dist/cjs/utilities/math/point/mirror.js.map +1 -0
  121. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +4 -4
  122. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  123. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +2 -1
  124. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  125. package/dist/esm/index.js +2 -2
  126. package/dist/esm/index.js.map +1 -1
  127. package/dist/esm/store/SynchronizerManager/Synchronizer.js +17 -1
  128. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  129. package/dist/esm/synchronizers/callbacks/areViewportsCoplanar .js.map +1 -1
  130. package/dist/esm/synchronizers/callbacks/{stackImageSyncCallback.js → imageSliceSyncCallback.js} +8 -4
  131. package/dist/esm/synchronizers/callbacks/imageSliceSyncCallback.js.map +1 -0
  132. package/dist/esm/synchronizers/index.js +3 -2
  133. package/dist/esm/synchronizers/index.js.map +1 -1
  134. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.js +11 -0
  135. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.js.map +1 -0
  136. package/dist/esm/synchronizers/synchronizers/index.js +3 -2
  137. package/dist/esm/synchronizers/synchronizers/index.js.map +1 -1
  138. package/dist/esm/tools/AdvancedMagnifyTool.js +8 -3
  139. package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -1
  140. package/dist/esm/tools/annotation/SplineROITool.js +703 -0
  141. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -0
  142. package/dist/esm/tools/annotation/splines/BSpline.js +10 -0
  143. package/dist/esm/tools/annotation/splines/BSpline.js.map +1 -0
  144. package/dist/esm/tools/annotation/splines/CardinalSpline.js +33 -0
  145. package/dist/esm/tools/annotation/splines/CardinalSpline.js.map +1 -0
  146. package/dist/esm/tools/annotation/splines/CatmullRomSpline.js +8 -0
  147. package/dist/esm/tools/annotation/splines/CatmullRomSpline.js.map +1 -0
  148. package/dist/esm/tools/annotation/splines/CubicSpline.js +165 -0
  149. package/dist/esm/tools/annotation/splines/CubicSpline.js.map +1 -0
  150. package/dist/esm/tools/annotation/splines/LinearSpline.js +8 -0
  151. package/dist/esm/tools/annotation/splines/LinearSpline.js.map +1 -0
  152. package/dist/esm/tools/annotation/splines/QuadraticBezier.js +16 -0
  153. package/dist/esm/tools/annotation/splines/QuadraticBezier.js.map +1 -0
  154. package/dist/esm/tools/annotation/splines/QuadraticSpline.js +14 -0
  155. package/dist/esm/tools/annotation/splines/QuadraticSpline.js.map +1 -0
  156. package/dist/esm/tools/annotation/splines/Spline.js +392 -0
  157. package/dist/esm/tools/annotation/splines/Spline.js.map +1 -0
  158. package/dist/esm/tools/index.js +2 -1
  159. package/dist/esm/tools/index.js.map +1 -1
  160. package/dist/esm/types/CardinalSplineProps.js +2 -0
  161. package/dist/esm/types/CardinalSplineProps.js.map +1 -0
  162. package/dist/esm/types/ClosestControlPoint.js +2 -0
  163. package/dist/esm/types/ClosestControlPoint.js.map +1 -0
  164. package/dist/esm/types/ClosestPoint.js +2 -0
  165. package/dist/esm/types/ClosestPoint.js.map +1 -0
  166. package/dist/esm/types/ClosestSplinePoint.js +2 -0
  167. package/dist/esm/types/ClosestSplinePoint.js.map +1 -0
  168. package/dist/esm/types/ControlPointInfo.js +2 -0
  169. package/dist/esm/types/ControlPointInfo.js.map +1 -0
  170. package/dist/esm/types/ISpline.js +2 -0
  171. package/dist/esm/types/ISpline.js.map +1 -0
  172. package/dist/esm/types/SplineCurveSegment.js +2 -0
  173. package/dist/esm/types/SplineCurveSegment.js.map +1 -0
  174. package/dist/esm/types/SplineLineSegment.js +2 -0
  175. package/dist/esm/types/SplineLineSegment.js.map +1 -0
  176. package/dist/esm/types/SplineProps.js +2 -0
  177. package/dist/esm/types/SplineProps.js.map +1 -0
  178. package/dist/esm/utilities/index.js +2 -3
  179. package/dist/esm/utilities/index.js.map +1 -1
  180. package/dist/esm/utilities/math/aabb/distanceToPoint.js +5 -0
  181. package/dist/esm/utilities/math/aabb/distanceToPoint.js.map +1 -0
  182. package/dist/esm/utilities/math/aabb/distanceToPointSquared.js +21 -0
  183. package/dist/esm/utilities/math/aabb/distanceToPointSquared.js.map +1 -0
  184. package/dist/esm/utilities/math/aabb/index.js +3 -0
  185. package/dist/esm/utilities/math/aabb/index.js.map +1 -0
  186. package/dist/esm/utilities/math/index.js +6 -5
  187. package/dist/esm/utilities/math/index.js.map +1 -1
  188. package/dist/esm/utilities/math/line/distanceToPointSquared.js +2 -21
  189. package/dist/esm/utilities/math/line/distanceToPointSquared.js.map +1 -1
  190. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +30 -0
  191. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js.map +1 -0
  192. package/dist/esm/utilities/math/line/index.js +2 -1
  193. package/dist/esm/utilities/math/line/index.js.map +1 -1
  194. package/dist/esm/utilities/math/point/distanceToPoint.js +2 -6
  195. package/dist/esm/utilities/math/point/distanceToPoint.js.map +1 -1
  196. package/dist/esm/utilities/math/point/distanceToPointSquared.js +9 -0
  197. package/dist/esm/utilities/math/point/distanceToPointSquared.js.map +1 -0
  198. package/dist/esm/utilities/math/point/index.js +3 -2
  199. package/dist/esm/utilities/math/point/index.js.map +1 -1
  200. package/dist/esm/utilities/math/point/mirror.js +8 -0
  201. package/dist/esm/utilities/math/point/mirror.js.map +1 -0
  202. package/dist/types/eventDispatchers/mouseEventHandlers/mouseDown.d.ts.map +1 -1
  203. package/dist/types/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts.map +1 -1
  204. package/dist/types/index.d.ts +2 -2
  205. package/dist/types/index.d.ts.map +1 -1
  206. package/dist/types/store/SynchronizerManager/Synchronizer.d.ts +1 -0
  207. package/dist/types/store/SynchronizerManager/Synchronizer.d.ts.map +1 -1
  208. package/dist/types/synchronizers/callbacks/areViewportsCoplanar .d.ts +1 -1
  209. package/dist/types/synchronizers/callbacks/areViewportsCoplanar .d.ts.map +1 -1
  210. package/dist/types/synchronizers/callbacks/{stackImageSyncCallback.d.ts → imageSliceSyncCallback.d.ts} +2 -2
  211. package/dist/types/synchronizers/callbacks/imageSliceSyncCallback.d.ts.map +1 -0
  212. package/dist/types/synchronizers/index.d.ts +3 -2
  213. package/dist/types/synchronizers/index.d.ts.map +1 -1
  214. package/dist/types/synchronizers/synchronizers/createImageSliceSynchronizer.d.ts +3 -0
  215. package/dist/types/synchronizers/synchronizers/createImageSliceSynchronizer.d.ts.map +1 -0
  216. package/dist/types/synchronizers/synchronizers/index.d.ts +3 -2
  217. package/dist/types/synchronizers/synchronizers/index.d.ts.map +1 -1
  218. package/dist/types/tools/AdvancedMagnifyTool.d.ts +4 -0
  219. package/dist/types/tools/AdvancedMagnifyTool.d.ts.map +1 -1
  220. package/dist/types/tools/annotation/SplineROITool.d.ts +60 -0
  221. package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -0
  222. package/dist/types/tools/annotation/splines/BSpline.d.ts +6 -0
  223. package/dist/types/tools/annotation/splines/BSpline.d.ts.map +1 -0
  224. package/dist/types/tools/annotation/splines/CardinalSpline.d.ts +13 -0
  225. package/dist/types/tools/annotation/splines/CardinalSpline.d.ts.map +1 -0
  226. package/dist/types/tools/annotation/splines/CatmullRomSpline.d.ts +6 -0
  227. package/dist/types/tools/annotation/splines/CatmullRomSpline.d.ts.map +1 -0
  228. package/dist/types/tools/annotation/splines/CubicSpline.d.ts +14 -0
  229. package/dist/types/tools/annotation/splines/CubicSpline.d.ts.map +1 -0
  230. package/dist/types/tools/annotation/splines/LinearSpline.d.ts +6 -0
  231. package/dist/types/tools/annotation/splines/LinearSpline.d.ts.map +1 -0
  232. package/dist/types/tools/annotation/splines/QuadraticBezier.d.ts +7 -0
  233. package/dist/types/tools/annotation/splines/QuadraticBezier.d.ts.map +1 -0
  234. package/dist/types/tools/annotation/splines/QuadraticSpline.d.ts +10 -0
  235. package/dist/types/tools/annotation/splines/QuadraticSpline.d.ts.map +1 -0
  236. package/dist/types/tools/annotation/splines/Spline.d.ts +50 -0
  237. package/dist/types/tools/annotation/splines/Spline.d.ts.map +1 -0
  238. package/dist/types/tools/index.d.ts +2 -1
  239. package/dist/types/tools/index.d.ts.map +1 -1
  240. package/dist/types/types/CardinalSplineProps.d.ts +6 -0
  241. package/dist/types/types/CardinalSplineProps.d.ts.map +1 -0
  242. package/dist/types/types/ClosestControlPoint.d.ts +5 -0
  243. package/dist/types/types/ClosestControlPoint.d.ts.map +1 -0
  244. package/dist/types/types/ClosestPoint.d.ts +6 -0
  245. package/dist/types/types/ClosestPoint.d.ts.map +1 -0
  246. package/dist/types/types/ClosestSplinePoint.d.ts +5 -0
  247. package/dist/types/types/ClosestSplinePoint.d.ts.map +1 -0
  248. package/dist/types/types/ControlPointInfo.d.ts +6 -0
  249. package/dist/types/types/ControlPointInfo.d.ts.map +1 -0
  250. package/dist/types/types/ISpline.d.ts +30 -0
  251. package/dist/types/types/ISpline.d.ts.map +1 -0
  252. package/dist/types/types/SplineCurveSegment.d.ts +15 -0
  253. package/dist/types/types/SplineCurveSegment.d.ts.map +1 -0
  254. package/dist/types/types/SplineLineSegment.d.ts +11 -0
  255. package/dist/types/types/SplineLineSegment.d.ts.map +1 -0
  256. package/dist/types/types/SplineProps.d.ts +5 -0
  257. package/dist/types/types/SplineProps.d.ts.map +1 -0
  258. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +34 -0
  259. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  260. package/dist/types/types/index.d.ts +10 -1
  261. package/dist/types/types/index.d.ts.map +1 -1
  262. package/dist/types/utilities/index.d.ts +2 -3
  263. package/dist/types/utilities/index.d.ts.map +1 -1
  264. package/dist/types/utilities/math/aabb/distanceToPoint.d.ts +3 -0
  265. package/dist/types/utilities/math/aabb/distanceToPoint.d.ts.map +1 -0
  266. package/dist/types/utilities/math/aabb/distanceToPointSquared.d.ts +3 -0
  267. package/dist/types/utilities/math/aabb/distanceToPointSquared.d.ts.map +1 -0
  268. package/dist/types/utilities/math/aabb/index.d.ts +3 -0
  269. package/dist/types/utilities/math/aabb/index.d.ts.map +1 -0
  270. package/dist/types/utilities/math/index.d.ts +6 -5
  271. package/dist/types/utilities/math/index.d.ts.map +1 -1
  272. package/dist/types/utilities/math/line/distanceToPointSquared.d.ts.map +1 -1
  273. package/dist/types/utilities/math/line/distanceToPointSquaredInfo.d.ts +6 -0
  274. package/dist/types/utilities/math/line/distanceToPointSquaredInfo.d.ts.map +1 -0
  275. package/dist/types/utilities/math/line/index.d.ts +2 -1
  276. package/dist/types/utilities/math/line/index.d.ts.map +1 -1
  277. package/dist/types/utilities/math/point/distanceToPoint.d.ts.map +1 -1
  278. package/dist/types/utilities/math/point/distanceToPointSquared.d.ts +5 -0
  279. package/dist/types/utilities/math/point/distanceToPointSquared.d.ts.map +1 -0
  280. package/dist/types/utilities/math/point/index.d.ts +3 -2
  281. package/dist/types/utilities/math/point/index.d.ts.map +1 -1
  282. package/dist/types/utilities/math/point/mirror.d.ts +3 -0
  283. package/dist/types/utilities/math/point/mirror.d.ts.map +1 -0
  284. package/dist/umd/index.js +2 -1
  285. package/dist/umd/index.js.LICENSE.txt +6 -0
  286. package/dist/umd/index.js.map +1 -1
  287. package/package.json +3 -3
  288. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +8 -6
  289. package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +3 -2
  290. package/src/index.ts +2 -0
  291. package/src/store/SynchronizerManager/Synchronizer.ts +28 -3
  292. package/src/synchronizers/callbacks/areViewportsCoplanar .ts +2 -2
  293. package/src/synchronizers/callbacks/{stackImageSyncCallback.ts → imageSliceSyncCallback.ts} +16 -8
  294. package/src/synchronizers/index.ts +5 -1
  295. package/src/synchronizers/synchronizers/{createStackImageSynchronizer.ts → createImageSliceSynchronizer.ts} +8 -5
  296. package/src/synchronizers/synchronizers/index.ts +4 -1
  297. package/src/tools/AdvancedMagnifyTool.ts +8 -3
  298. package/src/tools/annotation/SplineROITool.ts +1151 -0
  299. package/src/tools/annotation/splines/BSpline.ts +22 -0
  300. package/src/tools/annotation/splines/CardinalSpline.ts +45 -0
  301. package/src/tools/annotation/splines/CatmullRomSpline.ts +19 -0
  302. package/src/tools/annotation/splines/CubicSpline.ts +288 -0
  303. package/src/tools/annotation/splines/LinearSpline.ts +20 -0
  304. package/src/tools/annotation/splines/QuadraticBezier.ts +20 -0
  305. package/src/tools/annotation/splines/QuadraticSpline.ts +25 -0
  306. package/src/tools/annotation/splines/Spline.ts +729 -0
  307. package/src/tools/index.ts +2 -0
  308. package/src/types/CardinalSplineProps.ts +11 -0
  309. package/src/types/ClosestControlPoint.ts +6 -0
  310. package/src/types/ClosestPoint.ts +8 -0
  311. package/src/types/ClosestSplinePoint.ts +6 -0
  312. package/src/types/ControlPointInfo.ts +8 -0
  313. package/src/types/ISpline.ts +164 -0
  314. package/src/types/SplineCurveSegment.ts +28 -0
  315. package/src/types/SplineLineSegment.ts +20 -0
  316. package/src/types/SplineProps.ts +15 -0
  317. package/src/types/ToolSpecificAnnotationTypes.ts +35 -0
  318. package/src/types/index.ts +21 -0
  319. package/src/utilities/index.ts +6 -2
  320. package/src/utilities/math/aabb/distanceToPoint.ts +20 -0
  321. package/src/utilities/math/aabb/distanceToPointSquared.ts +47 -0
  322. package/src/utilities/math/aabb/index.ts +2 -0
  323. package/src/utilities/math/index.ts +10 -8
  324. package/src/utilities/math/line/distanceToPointSquared.ts +3 -29
  325. package/src/utilities/math/line/distanceToPointSquaredInfo.ts +54 -0
  326. package/src/utilities/math/line/index.ts +7 -1
  327. package/src/utilities/math/point/distanceToPoint.ts +2 -10
  328. package/src/utilities/math/point/distanceToPointSquared.ts +21 -0
  329. package/src/utilities/math/point/index.ts +3 -3
  330. package/src/utilities/math/point/mirror.ts +21 -0
  331. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -15
  332. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  333. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +0 -1
  334. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -9
  335. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  336. package/dist/types/synchronizers/callbacks/stackImageSyncCallback.d.ts.map +0 -1
  337. package/dist/types/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +0 -3
  338. package/dist/types/synchronizers/synchronizers/createStackImageSynchronizer.d.ts.map +0 -1
@@ -0,0 +1,392 @@
1
+ import * as math from '../../../utilities/math';
2
+ class Spline {
3
+ constructor(props) {
4
+ this._controlPoints = [];
5
+ this._invalidated = false;
6
+ this._length = 0;
7
+ this._controlPoints = [];
8
+ this._resolution = props?.resolution ?? 20;
9
+ this._closed = props?.closed ?? false;
10
+ this._invalidated = true;
11
+ }
12
+ get controlPoints() {
13
+ return this._controlPoints;
14
+ }
15
+ get numControlPoints() {
16
+ return this._controlPoints.length;
17
+ }
18
+ get resolution() {
19
+ return this._resolution;
20
+ }
21
+ set resolution(resolution) {
22
+ if (this._resolution === resolution) {
23
+ return;
24
+ }
25
+ this._resolution = resolution;
26
+ this.invalidated = true;
27
+ }
28
+ get closed() {
29
+ return this._closed;
30
+ }
31
+ set closed(closed) {
32
+ if (this._closed === closed) {
33
+ return;
34
+ }
35
+ this._closed = closed;
36
+ this.invalidated = true;
37
+ }
38
+ get aabb() {
39
+ this._update();
40
+ return this._aabb;
41
+ }
42
+ get length() {
43
+ this._update();
44
+ return this._length;
45
+ }
46
+ get invalidated() {
47
+ return this._invalidated;
48
+ }
49
+ set invalidated(invalidated) {
50
+ this._invalidated = invalidated;
51
+ }
52
+ hasTangentPoints() {
53
+ return false;
54
+ }
55
+ addControlPoint(point) {
56
+ this._controlPoints.push([point[0], point[1]]);
57
+ this.invalidated = true;
58
+ }
59
+ addControlPoints(points) {
60
+ points.forEach((point) => this.addControlPoint(point));
61
+ }
62
+ addControlPointAtU(u) {
63
+ const lineSegment = this._getLineSegmentAt(u);
64
+ const { start: startPoint, end: endPoint } = lineSegment.points;
65
+ const curveSegmentIndex = Math.floor(u);
66
+ const curveSegment = this._curveSegments[curveSegmentIndex];
67
+ const t = u - Math.floor(curveSegmentIndex);
68
+ const controlPointPos = [
69
+ startPoint[0] + t * (endPoint[0] - startPoint[0]),
70
+ startPoint[1] + t * (endPoint[1] - startPoint[1]),
71
+ ];
72
+ const insertIndex = this._controlPoints.indexOf(curveSegment.controlPoints.p1) + 1;
73
+ this._controlPoints.splice(insertIndex, 0, controlPointPos);
74
+ this.invalidated = true;
75
+ return {
76
+ index: insertIndex,
77
+ point: controlPointPos,
78
+ };
79
+ }
80
+ deleteControlPointByIndex(index) {
81
+ const minControlPoints = this._closed ? 3 : 1;
82
+ const canDelete = index >= 0 &&
83
+ index < this._controlPoints.length &&
84
+ this._controlPoints.length > minControlPoints;
85
+ if (!canDelete) {
86
+ return false;
87
+ }
88
+ this._controlPoints.splice(index, 1);
89
+ this.invalidated = true;
90
+ return true;
91
+ }
92
+ clearControlPoints() {
93
+ this._controlPoints = [];
94
+ this.invalidated = true;
95
+ }
96
+ setControlPoints(points) {
97
+ this.clearControlPoints();
98
+ this.addControlPoints(points);
99
+ }
100
+ updateControlPoint(index, newControlPoint) {
101
+ if (index < 0 || index >= this._controlPoints.length) {
102
+ throw new Error('Index out of bounds');
103
+ }
104
+ this._controlPoints[index] = [...newControlPoint];
105
+ this.invalidated = true;
106
+ }
107
+ getControlPoints() {
108
+ return this._controlPoints.map((controlPoint) => [
109
+ controlPoint[0],
110
+ controlPoint[1],
111
+ ]);
112
+ }
113
+ getClosestControlPoint(point) {
114
+ const controlPoints = this._controlPoints;
115
+ let minSquaredDist = Infinity;
116
+ let closestPointIndex = -1;
117
+ for (let i = 0, len = controlPoints.length; i < len; i++) {
118
+ const controlPoint = controlPoints[i];
119
+ const dx = point[0] - controlPoint[0];
120
+ const dy = point[1] - controlPoint[1];
121
+ const squaredDist = dx * dx + dy * dy;
122
+ if (squaredDist < minSquaredDist) {
123
+ minSquaredDist = squaredDist;
124
+ closestPointIndex = i;
125
+ }
126
+ }
127
+ return {
128
+ index: closestPointIndex,
129
+ point: closestPointIndex === -1
130
+ ? undefined
131
+ : [...controlPoints[closestPointIndex]],
132
+ distance: Math.sqrt(minSquaredDist),
133
+ };
134
+ }
135
+ getClosestControlPointWithinDistance(point, maxDist) {
136
+ const closestControlPoint = this.getClosestControlPoint(point);
137
+ return closestControlPoint.distance <= maxDist
138
+ ? closestControlPoint
139
+ : undefined;
140
+ }
141
+ getClosestPoint(point) {
142
+ this._update();
143
+ const curveSegmentsDistInfo = this._getCurveSegmmentsDistanceSquaredInfo(point);
144
+ if (!curveSegmentsDistInfo.length) {
145
+ return;
146
+ }
147
+ curveSegmentsDistInfo.sort((csA, csB) => csA.distanceSquared - csB.distanceSquared);
148
+ let closestPoint;
149
+ let closestPointCurveSegmentIndex = -1;
150
+ let minDistSquared = Infinity;
151
+ let minDistCurveSegment;
152
+ let minDistLineSegment;
153
+ for (let i = 0; i < curveSegmentsDistInfo.length; i++) {
154
+ const curveSegmentDistInfo = curveSegmentsDistInfo[i];
155
+ if (curveSegmentDistInfo.distanceSquared > minDistSquared) {
156
+ continue;
157
+ }
158
+ const { curveSegmentIndex, curveSegment } = curveSegmentDistInfo;
159
+ const { lineSegments } = curveSegment;
160
+ for (let j = 0; j < lineSegments.length; j++) {
161
+ const lineSegment = lineSegments[j];
162
+ const { point: lineSegPoint, distanceSquared: lineSegDistSquared } = math.lineSegment.distanceToPointSquaredInfo(lineSegment.points.start, lineSegment.points.end, point);
163
+ if (lineSegDistSquared < minDistSquared) {
164
+ minDistLineSegment = lineSegment;
165
+ closestPointCurveSegmentIndex = curveSegmentIndex;
166
+ minDistCurveSegment = curveSegmentDistInfo.curveSegment;
167
+ closestPoint = lineSegPoint;
168
+ minDistSquared = lineSegDistSquared;
169
+ }
170
+ }
171
+ }
172
+ const curveSegmentLengthToPoint = minDistLineSegment.previousLineSegmentsLength +
173
+ math.point.distanceToPoint(minDistLineSegment.points.start, closestPoint);
174
+ const t = curveSegmentLengthToPoint / minDistCurveSegment.length;
175
+ const u = closestPointCurveSegmentIndex + t;
176
+ return {
177
+ point: closestPoint,
178
+ uValue: u,
179
+ distance: Math.sqrt(minDistSquared),
180
+ };
181
+ }
182
+ getClosestPointOnControlPointLines(point) {
183
+ const linePoints = [...this._controlPoints];
184
+ if (this._closed) {
185
+ linePoints.push(this._controlPoints[0]);
186
+ }
187
+ if (!linePoints.length) {
188
+ return;
189
+ }
190
+ let closestPoint;
191
+ let minDistSquared = Infinity;
192
+ let startPoint = linePoints[0];
193
+ for (let i = 1, len = linePoints.length; i < len; i++) {
194
+ const endPoint = linePoints[i];
195
+ const { point: lineSegPoint, distanceSquared: lineSegDistSquared } = math.lineSegment.distanceToPointSquaredInfo(startPoint, endPoint, point);
196
+ if (lineSegDistSquared < minDistSquared) {
197
+ closestPoint = lineSegPoint;
198
+ minDistSquared = lineSegDistSquared;
199
+ }
200
+ startPoint = endPoint;
201
+ }
202
+ return {
203
+ point: closestPoint,
204
+ distance: Math.sqrt(minDistSquared),
205
+ };
206
+ }
207
+ getPolylinePoints() {
208
+ this._update();
209
+ return this._convertCurveSegmentsToPolyline(this._curveSegments);
210
+ }
211
+ getPreviewPolylinePoints(controlPointPreview, closeDistance) {
212
+ if (this._closed) {
213
+ return [];
214
+ }
215
+ this._update();
216
+ const closestControlPoint = this.getClosestControlPointWithinDistance(controlPointPreview, closeDistance);
217
+ const closeSpline = closestControlPoint?.index === 0;
218
+ const previewCurveSegments = this.getPreviewCurveSegments(controlPointPreview, closeSpline);
219
+ return previewCurveSegments?.length
220
+ ? this._convertCurveSegmentsToPolyline(previewCurveSegments)
221
+ : [];
222
+ }
223
+ isPointNearCurve(point, maxDist) {
224
+ this._update();
225
+ const curveSegments = this._getCurveSegmmentsWithinDistance(point, maxDist);
226
+ const maxDistSquared = maxDist * maxDist;
227
+ for (let i = 0; i < curveSegments.length; i++) {
228
+ const { lineSegments } = curveSegments[i];
229
+ for (let j = 0; j < lineSegments.length; j++) {
230
+ const lineSegment = lineSegments[j];
231
+ const lineDistSquared = math.lineSegment.distanceToPointSquared(lineSegment.points.start, lineSegment.points.end, point);
232
+ if (lineDistSquared <= maxDistSquared) {
233
+ return true;
234
+ }
235
+ }
236
+ }
237
+ return false;
238
+ }
239
+ containsPoint(point) {
240
+ this._update();
241
+ const controlPoints = this._controlPoints;
242
+ if (controlPoints.length < 3) {
243
+ return false;
244
+ }
245
+ const curveSegments = [...this._curveSegments];
246
+ const closingCurveSegment = this._getClosingCurveSegmentWithStraightLineSegment();
247
+ if (closingCurveSegment) {
248
+ curveSegments.push(closingCurveSegment);
249
+ }
250
+ let numIntersections = 0;
251
+ for (let i = 0; i < curveSegments.length; i++) {
252
+ const curveSegment = curveSegments[i];
253
+ const { aabb: curveSegAABB } = curveSegment;
254
+ const mayIntersectCurveSegment = point[0] <= curveSegAABB.maxX &&
255
+ point[1] >= curveSegAABB.minY &&
256
+ point[1] < curveSegAABB.maxY;
257
+ if (!mayIntersectCurveSegment) {
258
+ continue;
259
+ }
260
+ const { lineSegments } = curveSegment;
261
+ for (let i = 0; i < lineSegments.length; i++) {
262
+ const lineSegment = lineSegments[i];
263
+ const { aabb: lineSegmentAABB } = lineSegment;
264
+ const mayIntersectLineSegment = point[0] <= lineSegmentAABB.maxX &&
265
+ point[1] >= lineSegmentAABB.minY &&
266
+ point[1] < lineSegmentAABB.maxY;
267
+ if (mayIntersectLineSegment) {
268
+ const { start: p1, end: p2 } = lineSegment.points;
269
+ const isVerticalLine = p1[0] === p2[0];
270
+ const xIntersection = ((point[1] - p1[1]) * (p2[0] - p1[0])) / (p2[1] - p1[1]) + p1[0];
271
+ numIntersections +=
272
+ isVerticalLine || point[0] <= xIntersection ? 1 : 0;
273
+ }
274
+ }
275
+ }
276
+ return numIntersections % 2 === 1;
277
+ }
278
+ _update() {
279
+ if (!this._invalidated) {
280
+ return;
281
+ }
282
+ const curveSegments = this.getSplineCurves();
283
+ let length = 0;
284
+ let minX = Infinity;
285
+ let minY = Infinity;
286
+ let maxX = -Infinity;
287
+ let maxY = -Infinity;
288
+ for (let i = 0, len = curveSegments.length; i < len; i++) {
289
+ const { aabb: curveSegAABB, length: curveSegLength } = curveSegments[i];
290
+ minX = minX <= curveSegAABB.minX ? minX : curveSegAABB.minX;
291
+ minY = minY <= curveSegAABB.minY ? minY : curveSegAABB.minY;
292
+ maxX = maxX >= curveSegAABB.maxX ? maxX : curveSegAABB.maxX;
293
+ maxY = maxY >= curveSegAABB.maxY ? maxY : curveSegAABB.maxY;
294
+ length += curveSegLength;
295
+ }
296
+ this._curveSegments = curveSegments;
297
+ this._aabb = { minX, minY, maxX, maxY };
298
+ this._length = length;
299
+ this._invalidated = false;
300
+ }
301
+ _convertCurveSegmentsToPolyline(curveSegments) {
302
+ this._update();
303
+ const polylinePoints = [];
304
+ curveSegments.forEach(({ lineSegments }, curveSegIndex) => {
305
+ lineSegments.forEach((lineSegment, lineSegIndex) => {
306
+ if (curveSegIndex === 0 && lineSegIndex === 0) {
307
+ polylinePoints.push([...lineSegment.points.start]);
308
+ }
309
+ polylinePoints.push([...lineSegment.points.end]);
310
+ });
311
+ });
312
+ return polylinePoints;
313
+ }
314
+ _getCurveSegmmentsDistanceSquaredInfo(point) {
315
+ this._update();
316
+ const curveSegmentsDistanceSquared = [];
317
+ const { _curveSegments: curveSegments } = this;
318
+ for (let i = 0; i < curveSegments.length; i++) {
319
+ const curveSegment = curveSegments[i];
320
+ const distanceSquared = math.aabb.distanceToPointSquared(curveSegment.aabb, point);
321
+ curveSegmentsDistanceSquared.push({
322
+ curveSegmentIndex: i,
323
+ curveSegment,
324
+ distanceSquared,
325
+ });
326
+ }
327
+ return curveSegmentsDistanceSquared;
328
+ }
329
+ _getCurveSegmmentsWithinDistance(point, maxDist) {
330
+ this._update();
331
+ const maxDistSquared = maxDist * maxDist;
332
+ if (math.aabb.distanceToPointSquared(this.aabb, point) > maxDistSquared) {
333
+ return [];
334
+ }
335
+ const curveSegmentsDistance = this._getCurveSegmmentsDistanceSquaredInfo(point);
336
+ const curveSegmentsWithinRange = [];
337
+ for (let i = 0, len = curveSegmentsDistance.length; i < len; i++) {
338
+ const { curveSegment, distanceSquared: curveSegmentDistSquared } = curveSegmentsDistance[i];
339
+ if (curveSegmentDistSquared <= maxDistSquared) {
340
+ curveSegmentsWithinRange.push(curveSegment);
341
+ }
342
+ }
343
+ return curveSegmentsWithinRange;
344
+ }
345
+ _getLineSegmentAt(u) {
346
+ this._update();
347
+ const curveSegmentIndex = Math.floor(u);
348
+ const t = u - curveSegmentIndex;
349
+ const curveSegment = this._curveSegments[curveSegmentIndex];
350
+ const { lineSegments } = curveSegment;
351
+ const pointLength = curveSegment.length * t;
352
+ for (let i = 0; i < lineSegments.length; i++) {
353
+ const lineSegment = lineSegments[i];
354
+ const lengthEnd = lineSegment.previousLineSegmentsLength + lineSegment.length;
355
+ if (pointLength >= lineSegment.previousLineSegmentsLength &&
356
+ pointLength <= lengthEnd) {
357
+ return lineSegment;
358
+ }
359
+ }
360
+ }
361
+ _getClosingCurveSegmentWithStraightLineSegment() {
362
+ if (this.closed) {
363
+ return;
364
+ }
365
+ const controlPoints = this._controlPoints;
366
+ const startControlPoint = controlPoints[0];
367
+ const endControlPoint = controlPoints[controlPoints.length - 1];
368
+ const closingLineSegment = {
369
+ points: {
370
+ start: [...startControlPoint],
371
+ end: [...endControlPoint],
372
+ },
373
+ aabb: {
374
+ minX: Math.min(startControlPoint[0], endControlPoint[0]),
375
+ minY: Math.min(startControlPoint[1], endControlPoint[1]),
376
+ maxX: Math.max(startControlPoint[0], endControlPoint[0]),
377
+ maxY: Math.max(startControlPoint[1], endControlPoint[1]),
378
+ },
379
+ };
380
+ return {
381
+ aabb: {
382
+ minX: closingLineSegment.aabb.minX,
383
+ minY: closingLineSegment.aabb.minY,
384
+ maxX: closingLineSegment.aabb.maxX,
385
+ maxY: closingLineSegment.aabb.maxY,
386
+ },
387
+ lineSegments: [closingLineSegment],
388
+ };
389
+ }
390
+ }
391
+ export { Spline as default, Spline };
392
+ //# sourceMappingURL=Spline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spline.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/splines/Spline.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import DragProbeTool from './annotation/DragProbeTool';
24
24
  import RectangleROITool from './annotation/RectangleROITool';
25
25
  import EllipticalROITool from './annotation/EllipticalROITool';
26
26
  import CircleROITool from './annotation/CircleROITool';
27
+ import SplineROITool from './annotation/SplineROITool';
27
28
  import PlanarFreehandROITool from './annotation/PlanarFreehandROITool';
28
29
  import ArrowAnnotateTool from './annotation/ArrowAnnotateTool';
29
30
  import AngleTool from './annotation/AngleTool';
@@ -38,5 +39,5 @@ import RectangleROIStartEndThresholdTool from './segmentation/RectangleROIStartE
38
39
  import BrushTool from './segmentation/BrushTool';
39
40
  import PaintFillTool from './segmentation/PaintFillTool';
40
41
  import OrientationMarkerTool from './OrientationMarkerTool';
41
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, KeyImageTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, };
42
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, KeyImageTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, };
42
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,yBAAyB,MAAM,iCAAiC,CAAC;AACxE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAGrD,OAAO,uBAAuB,MAAM,wCAAwC,CAAC;AAG7E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AACjF,OAAO,iCAAiC,MAAM,kDAAkD,CAAC;AACjG,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,qBAAqB,EAErB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAEhB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,uBAAuB,EAEvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACtB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,yBAAyB,MAAM,iCAAiC,CAAC;AACxE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAGrD,OAAO,uBAAuB,MAAM,wCAAwC,CAAC;AAG7E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AACjF,OAAO,iCAAiC,MAAM,kDAAkD,CAAC;AACjG,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,qBAAqB,EAErB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAEhB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,uBAAuB,EAEvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CardinalSplineProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardinalSplineProps.js","sourceRoot":"","sources":["../../../src/types/CardinalSplineProps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClosestControlPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestControlPoint.js","sourceRoot":"","sources":["../../../src/types/ClosestControlPoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClosestPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestPoint.js","sourceRoot":"","sources":["../../../src/types/ClosestPoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClosestSplinePoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestSplinePoint.js","sourceRoot":"","sources":["../../../src/types/ClosestSplinePoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ControlPointInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlPointInfo.js","sourceRoot":"","sources":["../../../src/types/ControlPointInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ISpline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISpline.js","sourceRoot":"","sources":["../../../src/types/ISpline.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SplineCurveSegment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplineCurveSegment.js","sourceRoot":"","sources":["../../../src/types/SplineCurveSegment.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SplineLineSegment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplineLineSegment.js","sourceRoot":"","sources":["../../../src/types/SplineLineSegment.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SplineProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplineProps.js","sourceRoot":"","sources":["../../../src/types/SplineProps.ts"],"names":[],"mappings":""}
@@ -4,8 +4,7 @@ import throttle from './throttle';
4
4
  import isObject from './isObject';
5
5
  import clip from './clip';
6
6
  import calibrateImageSpacing from './calibrateImageSpacing';
7
- import getCalibratedLengthUnits from './getCalibratedUnits';
8
- import { getCalibratedScale } from './getCalibratedUnits';
7
+ import { getCalibratedLengthUnits, getCalibratedAreaUnits, getCalibratedScale, } from './getCalibratedUnits';
9
8
  import triggerAnnotationRenderForViewportIds from './triggerAnnotationRenderForViewportIds';
10
9
  import triggerAnnotationRender from './triggerAnnotationRender';
11
10
  import jumpToSlice from './viewport/jumpToSlice';
@@ -32,5 +31,5 @@ import * as dynamicVolume from './dynamicVolume';
32
31
  import * as polyDataUtils from './polyData/utils';
33
32
  import * as voi from './voi';
34
33
  import { triggerEvent } from '@cornerstonejs/core';
35
- export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnits, getCalibratedScale, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, };
34
+ export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnits, getCalibratedAreaUnits, getCalibratedScale, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, };
36
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,qCAAqC,EACrC,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,GAAG,EACH,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,qCAAqC,EACrC,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,GAAG,EACH,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import distanceToPointSquared from './distanceToPointSquared';
2
+ export default function distanceToPoint(aabb, point) {
3
+ return Math.sqrt(distanceToPointSquared(aabb, point));
4
+ }
5
+ //# sourceMappingURL=distanceToPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distanceToPoint.js","sourceRoot":"","sources":["../../../../../src/utilities/math/aabb/distanceToPoint.ts"],"names":[],"mappings":"AACA,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAa9D,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,IAAiB,EACjB,KAAmB;IAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,21 @@
1
+ export default function distanceToPointSquared(aabb, point) {
2
+ const aabbWidth = aabb.maxX - aabb.minX;
3
+ const aabbHeight = aabb.maxY - aabb.minY;
4
+ const aabbSize = [aabbWidth, aabbHeight];
5
+ const aabbCenter = [
6
+ aabb.minX + aabbWidth / 2,
7
+ aabb.minY + aabbHeight / 2,
8
+ ];
9
+ const translatedPoint = [
10
+ Math.abs(point[0] - aabbCenter[0]),
11
+ Math.abs(point[1] - aabbCenter[1]),
12
+ ];
13
+ const dx = translatedPoint[0] - aabbSize[0] * 0.5;
14
+ const dy = translatedPoint[1] - aabbSize[1] * 0.5;
15
+ if (dx > 0 && dy > 0) {
16
+ return dx * dx + dy * dy;
17
+ }
18
+ const dist = Math.max(dx, 0) + Math.max(dy, 0);
19
+ return dist * dist;
20
+ }
21
+ //# sourceMappingURL=distanceToPointSquared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distanceToPointSquared.js","sourceRoot":"","sources":["../../../../../src/utilities/math/aabb/distanceToPointSquared.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,IAAiB,EACjB,KAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,UAAU,GAAiB;QAC/B,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC;KAC3B,CAAC;IAIF,MAAM,eAAe,GAAG;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACnC,CAAC;IAGF,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAClD,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAMlD,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACpB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;KAC1B;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE/C,OAAO,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as distanceToPoint } from './distanceToPoint';
2
+ export { default as distanceToPointSquared } from './distanceToPointSquared';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/aabb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,9 +1,10 @@
1
- import * as vec2 from './vec2';
1
+ import * as aabb from './aabb';
2
+ import * as BasicStatsCalculator from './basic';
2
3
  import * as ellipse from './ellipse';
3
4
  import * as lineSegment from './line';
4
- import * as rectangle from './rectangle';
5
- import * as polyline from './polyline';
6
5
  import * as point from './point';
7
- import * as BasicStatsCalculator from './basic';
8
- export { vec2, ellipse, lineSegment, rectangle, polyline, point, BasicStatsCalculator, };
6
+ import * as polyline from './polyline';
7
+ import * as rectangle from './rectangle';
8
+ import * as vec2 from './vec2';
9
+ export { aabb, BasicStatsCalculator, ellipse, lineSegment, point, polyline, rectangle, vec2, };
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,WAAW,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,oBAAoB,MAAM,SAAS,CAAC;AAEhD,OAAO,EACL,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,QAAQ,EACR,KAAK,EACL,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,oBAAoB,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,WAAW,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EACL,IAAI,EACJ,oBAAoB,EACpB,OAAO,EACP,WAAW,EACX,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,GACL,CAAC"}