@ohif/app 3.9.0-beta.4 → 3.9.0-beta.40

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 (233) hide show
  1. package/dist/{117.bundle.a80b1511ef4b302fb7cc.js → 117.bundle.1f7b56504d506e7259e3.js} +66 -69
  2. package/dist/{889.bundle.6df37a2db81b97f4a76a.js → 121.bundle.d1d51ac098a41f618eab.js} +40 -12
  3. package/dist/{998.bundle.f2ba5b6c1aa0caa6d672.js → 129.bundle.29770734ee3882c107c0.js} +40 -25
  4. package/dist/{574.bundle.72bd5061ccd504235419.js → 139.bundle.09e5af0a9ae8a285af77.js} +25 -37
  5. package/dist/{989.bundle.bf32dc457ea9abccca09.js → 14.bundle.90dd112f5bc6f21d6ce1.js} +5 -5
  6. package/dist/{783.bundle.1f650e1ef1b10d19870f.js → 140.bundle.a58cbadd477749143dea.js} +2 -2
  7. package/dist/{164.bundle.1da1cadb56951caef1d6.js → 164.bundle.2b23bfbcb23497d7c87a.js} +548 -301
  8. package/dist/{544.bundle.e8227e98860e39636a00.js → 172.bundle.e0ee762bee7496d6491e.js} +16 -30
  9. package/dist/{487.bundle.a517b1d6cd2d82b9a7ea.js → 194.bundle.2dde300e0ed19254b6ba.js} +5 -5
  10. package/dist/{699.bundle.f62694527f6dfe417f81.js → 211.bundle.e8eea5d565da00092f57.js} +43 -5
  11. package/dist/{776.bundle.91747df457143051f872.js → 218.bundle.ec4ecebd17f837a87fff.js} +10 -12
  12. package/dist/{236.bundle.4ca7987e1d57f60ec13a.js → 236.bundle.34db90a140e37d34fd71.js} +544 -221
  13. package/dist/{530.bundle.17b9a34fefff133e5379.js → 265.bundle.b32a0cc143efa80ee3cc.js} +8 -12
  14. package/dist/{862.bundle.55dde21bab4c841b6259.js → 323.bundle.955cc8f5eb5c01295118.js} +5 -9
  15. package/dist/{342.bundle.340982440de15f540a89.js → 342.bundle.fcb2038060a062129d34.js} +7 -0
  16. package/dist/{550.bundle.4f728d9ab7a8c7685abd.js → 363.bundle.34dddd70f4ffd669287e.js} +234 -150
  17. package/dist/{806.bundle.50e039eb624382ee1fce.js → 370.bundle.bd9884c274c26a54dfae.js} +101 -18
  18. package/dist/{682.bundle.0909fbf9a76430e4bbc9.js → 382.bundle.df3ca2c99f3547b31d5b.js} +38 -5
  19. package/dist/{907.bundle.d2c612ec56380e73df89.js → 444.bundle.7d0ca442eef652e676fc.js} +4 -4
  20. package/dist/{483.bundle.a353efc5a5dd563c903c.js → 483.bundle.0f1848f6a2cf34829fef.js} +16 -3
  21. package/dist/{35.bundle.0168d78bfad0cb784112.js → 501.bundle.2f703ca4598a3be0d748.js} +950 -348
  22. package/dist/{905.bundle.c1c60224a599e789feb4.js → 552.bundle.274e23ec01ab41ad7189.js} +3 -3
  23. package/dist/{981.bundle.cccdc8caaa5a11f4a998.js → 555.bundle.b2a12c8da6bb11dad2b7.js} +14 -13
  24. package/dist/{939.bundle.9d93b2e47c52338747a2.js → 612.bundle.297a033523539e0b47f9.js} +2 -2
  25. package/dist/{295.bundle.9926ff25c6dbf53845b1.js → 675.bundle.c9720f40fd7c7e9b7e54.js} +5 -9
  26. package/dist/{325.bundle.1c54c1689fb4b1955e8c.js → 717.bundle.ea82dab5ef9f7f640319.js} +58 -26
  27. package/dist/{722.bundle.2547630541b670f10d6e.js → 722.bundle.1242e0348afc63ca4f5e.js} +10 -4
  28. package/dist/{121.bundle.b582314ec0024fdf2d15.js → 792.bundle.485ad2f98823a4b3feb1.js} +6 -10
  29. package/dist/{721.bundle.0de8f780088aee87dbd9.js → 799.bundle.e744c0af4fdf31b180ac.js} +12 -12
  30. package/dist/{448.bundle.077b4b50ee63487516eb.js → 806.bundle.1632ea111682147bad5f.js} +19 -6
  31. package/dist/{297.bundle.194d8985ab974839b5b6.js → 837.bundle.ff9fe44bf863a5bceabc.js} +2 -2
  32. package/dist/{961.bundle.6aea7b3de9e93a9ebab1.js → 853.bundle.1ccbecc265671c9e009e.js} +4 -4
  33. package/dist/{473.bundle.6cd4be953853f35b29c3.js → 914.bundle.e15be8089bf422ed7b51.js} +512 -274
  34. package/dist/{94.bundle.08683468d52365475d9a.js → 920.bundle.0b80f44e0e0df6829650.js} +39 -9
  35. package/dist/{390.bundle.5a21388b461ee51db594.js → 944.bundle.a58e0a80876da559f6b9.js} +653 -95
  36. package/dist/{243.bundle.391c2805222b849abc2c.js → 989.bundle.47ce0ed7ca8119f2a0f9.js} +4 -4
  37. package/dist/app-config.js +5 -1
  38. package/dist/app.bundle.css +5 -4
  39. package/dist/{app.bundle.9e22e72ec23a08cde379.js → app.bundle.e10ba453bd29c6aa3df0.js} +162761 -45947
  40. package/dist/assets/images/action-new-dialog.svg +14 -0
  41. package/dist/assets/images/arrow-down.svg +5 -0
  42. package/dist/assets/images/arrow-left-small.svg +6 -0
  43. package/dist/assets/images/arrow-left.svg +6 -0
  44. package/dist/assets/images/arrow-right-small.svg +6 -0
  45. package/dist/assets/images/arrow-right.svg +6 -0
  46. package/dist/assets/images/calendar.svg +5 -0
  47. package/dist/assets/images/cancel.svg +8 -0
  48. package/dist/assets/images/checkbox-active.svg +9 -0
  49. package/dist/assets/images/checkbox-checked.svg +9 -0
  50. package/dist/assets/images/checkbox-default.svg +3 -0
  51. package/dist/assets/images/checkbox-unchecked.svg +3 -0
  52. package/dist/assets/images/chevron-down.svg +3 -0
  53. package/dist/assets/images/chevron-left.svg +3 -0
  54. package/dist/assets/images/chevron-menu.svg +12 -0
  55. package/dist/assets/images/chevron-next.svg +6 -0
  56. package/dist/assets/images/chevron-prev.svg +6 -0
  57. package/dist/assets/images/chevron-right.svg +3 -0
  58. package/dist/assets/images/circled-checkmark.svg +6 -0
  59. package/dist/assets/images/clipboard.svg +1 -0
  60. package/dist/assets/images/closeIcon.svg +3 -0
  61. package/dist/assets/images/content-next.svg +9 -0
  62. package/dist/assets/images/content-prev.svg +9 -0
  63. package/dist/assets/images/dotted-circle.svg +3 -0
  64. package/dist/assets/images/edit-patient.svg +15 -0
  65. package/dist/assets/images/exclamation.svg +9 -0
  66. package/dist/assets/images/external-link.svg +5 -0
  67. package/dist/assets/images/eye-hidden.svg +8 -0
  68. package/dist/assets/images/eye-visible.svg +6 -0
  69. package/dist/assets/images/focus-frame-target.svg +13 -0
  70. package/dist/assets/images/group-layers.svg +6 -0
  71. package/dist/assets/images/icon-add.svg +15 -0
  72. package/dist/assets/images/icon-alert-small.svg +8 -0
  73. package/dist/assets/images/icon-chevron-patient.svg +12 -0
  74. package/dist/assets/images/icon-clear-field.svg +8 -0
  75. package/dist/assets/images/icon-close.svg +8 -0
  76. package/dist/assets/images/icon-color-lut.svg +23 -0
  77. package/dist/assets/images/icon-delete.svg +17 -0
  78. package/dist/assets/images/icon-disclosure-close.svg +12 -0
  79. package/dist/assets/images/icon-disclosure-open.svg +12 -0
  80. package/dist/assets/images/icon-display-settings.svg +21 -0
  81. package/dist/assets/images/icon-more-menu.svg +17 -0
  82. package/dist/assets/images/icon-mpr-alt.svg +9 -0
  83. package/dist/assets/images/icon-multiple-patients.svg +21 -0
  84. package/dist/assets/images/icon-next-inactive.svg +6 -0
  85. package/dist/assets/images/icon-next.svg +6 -0
  86. package/dist/assets/images/icon-patient.svg +13 -0
  87. package/dist/assets/images/icon-pause.svg +6 -0
  88. package/dist/assets/images/icon-play.svg +6 -0
  89. package/dist/assets/images/icon-prev-inactive.svg +6 -0
  90. package/dist/assets/images/icon-prev.svg +6 -0
  91. package/dist/assets/images/icon-rename.svg +15 -0
  92. package/dist/assets/images/icon-search.svg +9 -0
  93. package/dist/assets/images/icon-settings.svg +13 -0
  94. package/dist/assets/images/icon-status-alert.svg +8 -0
  95. package/dist/assets/images/icon-tool-scissor.svg +17 -0
  96. package/dist/assets/images/icon-toolbar-back.svg +12 -0
  97. package/dist/assets/images/icon-transferring.svg +6 -0
  98. package/dist/assets/images/icon-upload.svg +6 -0
  99. package/dist/assets/images/icons-alert-outline.svg +8 -0
  100. package/dist/assets/images/illustration-investigational-use.svg +20 -0
  101. package/dist/assets/images/info-action.svg +10 -0
  102. package/dist/assets/images/info-link.svg +7 -0
  103. package/dist/assets/images/info.svg +3 -0
  104. package/dist/assets/images/launch-arrow.svg +7 -0
  105. package/dist/assets/images/launch-info.svg +8 -0
  106. package/dist/assets/images/layout-advanced-3d-four-up.svg +13 -0
  107. package/dist/assets/images/layout-advanced-3d-main.svg +12 -0
  108. package/dist/assets/images/layout-advanced-3d-only.svg +9 -0
  109. package/dist/assets/images/layout-advanced-3d-primary.svg +12 -0
  110. package/dist/assets/images/layout-advanced-axial-primary.svg +11 -0
  111. package/dist/assets/images/layout-advanced-mpr.svg +11 -0
  112. package/dist/assets/images/layout-common-1x1.svg +9 -0
  113. package/dist/assets/images/layout-common-1x2.svg +10 -0
  114. package/dist/assets/images/layout-common-2x2.svg +11 -0
  115. package/dist/assets/images/layout-common-2x3.svg +12 -0
  116. package/dist/assets/images/list-bullets.svg +10 -0
  117. package/dist/assets/images/loading-ohif-mark.svg +5 -0
  118. package/dist/assets/images/lock.svg +1 -0
  119. package/dist/assets/images/logo-ohif-small.svg +5 -0
  120. package/dist/assets/images/magnifier.svg +7 -0
  121. package/dist/assets/images/navigation-panel-right-hide.svg +5 -0
  122. package/dist/assets/images/navigation-panel-right-reveal.svg +5 -0
  123. package/dist/assets/images/next-arrow.svg +12 -0
  124. package/dist/assets/images/notifications-error.svg +8 -0
  125. package/dist/assets/images/notifications-info.svg +8 -0
  126. package/dist/assets/images/notifications-success.svg +6 -0
  127. package/dist/assets/images/notifications-warning.svg +8 -0
  128. package/dist/assets/images/notificationwarning-diamond.svg +10 -0
  129. package/dist/assets/images/ohif-logo-color-darkbg.svg +20 -0
  130. package/dist/assets/images/ohif-logo.svg +18 -0
  131. package/dist/assets/images/old-play.svg +9 -0
  132. package/dist/assets/images/old-stop.svg +9 -0
  133. package/dist/assets/images/old-trash.svg +9 -0
  134. package/dist/assets/images/panel-group-more.svg +6 -0
  135. package/dist/assets/images/panel-group-open-close.svg +6 -0
  136. package/dist/assets/images/pencil.svg +4 -0
  137. package/dist/assets/images/power-off.svg +11 -0
  138. package/dist/assets/images/prev-arrow.svg +12 -0
  139. package/dist/assets/images/profile.svg +1 -0
  140. package/dist/assets/images/push-left.svg +5 -0
  141. package/dist/assets/images/push-right.svg +5 -0
  142. package/dist/assets/images/row-add.svg +8 -0
  143. package/dist/assets/images/row-edit.svg +9 -0
  144. package/dist/assets/images/row-hidden.svg +11 -0
  145. package/dist/assets/images/row-lock.svg +7 -0
  146. package/dist/assets/images/row-shown.svg +9 -0
  147. package/dist/assets/images/row-unlock.svg +7 -0
  148. package/dist/assets/images/settings.svg +6 -0
  149. package/dist/assets/images/side-panel-close-left.svg +14 -0
  150. package/dist/assets/images/side-panel-close-right.svg +14 -0
  151. package/dist/assets/images/sorting-active-down.svg +6 -0
  152. package/dist/assets/images/sorting-active-up.svg +6 -0
  153. package/dist/assets/images/sorting.svg +6 -0
  154. package/dist/assets/images/status-alert-warning.svg +9 -0
  155. package/dist/assets/images/status-alert.svg +7 -0
  156. package/dist/assets/images/status-locked.svg +7 -0
  157. package/dist/assets/images/status-tracked.svg +7 -0
  158. package/dist/assets/images/status-untracked.svg +6 -0
  159. package/dist/assets/images/tab-4d.svg +13 -0
  160. package/dist/assets/images/tab-linear.svg +8 -0
  161. package/dist/assets/images/tab-patient-info.svg +7 -0
  162. package/dist/assets/images/tab-roi-threshold.svg +10 -0
  163. package/dist/assets/images/tab-segmentation.svg +11 -0
  164. package/dist/assets/images/tab-studies.svg +13 -0
  165. package/dist/assets/images/tool-3d-rotate.svg +20 -0
  166. package/dist/assets/images/tool-angle.svg +12 -0
  167. package/dist/assets/images/tool-annotate.svg +11 -0
  168. package/dist/assets/images/tool-bidirectional.svg +21 -0
  169. package/dist/assets/images/tool-calibrate.svg +19 -0
  170. package/dist/assets/images/tool-capture.svg +10 -0
  171. package/dist/assets/images/tool-cine.svg +9 -0
  172. package/dist/assets/images/tool-circle.svg +8 -0
  173. package/dist/assets/images/tool-cobb-angle.svg +14 -0
  174. package/dist/assets/images/tool-create-threshold.svg +9 -0
  175. package/dist/assets/images/tool-crosshair.svg +14 -0
  176. package/dist/assets/images/tool-dicom-tag-browser.svg +15 -0
  177. package/dist/assets/images/tool-flip-horizontal.svg +10 -0
  178. package/dist/assets/images/tool-freehand-polygon.svg +37 -0
  179. package/dist/assets/images/tool-freehand-roi.svg +12 -0
  180. package/dist/assets/images/tool-freehand.svg +34 -0
  181. package/dist/assets/images/tool-fusion-color.svg +13 -0
  182. package/dist/assets/images/tool-invert.svg +10 -0
  183. package/dist/assets/images/tool-layout-default.svg +22 -0
  184. package/dist/assets/images/tool-length.svg +16 -0
  185. package/dist/assets/images/tool-magnetic-roi.svg +17 -0
  186. package/dist/assets/images/tool-magnify.svg +7 -0
  187. package/dist/assets/images/tool-measure-elipse.svg +12 -0
  188. package/dist/assets/images/tool-more-menu.svg +6 -0
  189. package/dist/assets/images/tool-move.svg +13 -0
  190. package/dist/assets/images/tool-polygon.svg +3 -0
  191. package/dist/assets/images/tool-quick-magnify.svg +11 -0
  192. package/dist/assets/images/tool-rectangle.svg +12 -0
  193. package/dist/assets/images/tool-reference-lines.svg +13 -0
  194. package/dist/assets/images/tool-reset.svg +9 -0
  195. package/dist/assets/images/tool-rotate-right.svg +12 -0
  196. package/dist/assets/images/tool-seg-brush.svg +9 -0
  197. package/dist/assets/images/tool-seg-eraser.svg +10 -0
  198. package/dist/assets/images/tool-seg-shape.svg +9 -0
  199. package/dist/assets/images/tool-seg-threshold.svg +17 -0
  200. package/dist/assets/images/tool-spline-roi.svg +14 -0
  201. package/dist/assets/images/tool-stack-image-sync.svg +10 -0
  202. package/dist/assets/images/tool-stack-scroll.svg +10 -0
  203. package/dist/assets/images/tool-toggle-dicom-overlay.svg +9 -0
  204. package/dist/assets/images/tool-ultrasound-bidirectional.svg +15 -0
  205. package/dist/assets/images/tool-window-level.svg +9 -0
  206. package/dist/assets/images/tool-window-region.svg +12 -0
  207. package/dist/assets/images/tool-zoom.svg +9 -0
  208. package/dist/assets/images/tracked.svg +6 -0
  209. package/dist/assets/images/ui-arrow-down.svg +3 -0
  210. package/dist/assets/images/ui-arrow-left.svg +3 -0
  211. package/dist/assets/images/ui-arrow-right.svg +3 -0
  212. package/dist/assets/images/ui-arrow-up.svg +3 -0
  213. package/dist/assets/images/unlink.svg +9 -0
  214. package/dist/assets/images/viewport-status-tracked.svg +13 -0
  215. package/dist/assets/images/viewport-window-level.svg +17 -0
  216. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  217. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  218. package/dist/google.js +1 -0
  219. package/dist/{histogram-worker.bundle.829e14ec12c2b41a4323.js → histogram-worker.bundle.6b31e5ed4c4a7a6998f2.js} +2 -2
  220. package/dist/index.html +1 -1
  221. package/dist/{polySeg.bundle.1799686b019040500219.js → polySeg.bundle.df492df5042827938ba4.js} +3 -3
  222. package/dist/{suv-peak-worker.bundle.25f8b85eab9ec06da48d.js → suv-peak-worker.bundle.8f4b505fad3d371489fe.js} +4 -4
  223. package/dist/sw.js +1 -1
  224. package/package.json +26 -23
  225. /package/dist/{998.css → 129.css} +0 -0
  226. /package/dist/{574.css → 139.css} +0 -0
  227. /package/dist/{544.css → 172.css} +0 -0
  228. /package/dist/{550.css → 363.css} +0 -0
  229. /package/dist/{325.css → 404.css} +0 -0
  230. /package/dist/{481.css → 717.css} +0 -0
  231. /package/dist/{726.bundle.c8de818cf1a3ff0cf7d2.js → 726.bundle.90d63d40a19b058034ee.js} +0 -0
  232. /package/dist/{835.bundle.4c0eaa2c1a427ee41817.js → 835.bundle.5d1951da8bbc6afdf3e0.js} +0 -0
  233. /package/dist/{931.bundle.d270a1fda9a2836c3cc5.js → 931.bundle.058f8de4606f27b31f4f.js} +0 -0
@@ -7,7 +7,7 @@
7
7
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8
8
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
9
9
  /* harmony export */ });
10
- async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds, immediateRender = false, suppressEvents = false) {
10
+ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds) {
11
11
  for (const viewportId of viewportIds) {
12
12
  const viewport = renderingEngine.getViewport(viewportId);
13
13
  if (!viewport) {
@@ -20,7 +20,7 @@ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportI
20
20
  }
21
21
  const addStackPromises = viewportIds.map(async (viewportId) => {
22
22
  const viewport = renderingEngine.getViewport(viewportId);
23
- return viewport.addImages(stackInputs, immediateRender, suppressEvents);
23
+ return viewport.addImages(stackInputs);
24
24
  });
25
25
  await Promise.all(addStackPromises);
26
26
  }
@@ -656,12 +656,24 @@ function createAndCacheDerivedImage(referencedImageId, options = {}, preventCach
656
656
  const { TypedArrayConstructor } = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getBufferConfiguration)(options.targetBufferType, length);
657
657
  const imageScalarData = new TypedArrayConstructor(skipCreateBuffer ? 1 : length);
658
658
  const derivedImageId = imageId;
659
- ['imagePixelModule', 'imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
659
+ ['imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
660
660
  _utilities__WEBPACK_IMPORTED_MODULE_4__.genericMetadataProvider.add(derivedImageId, {
661
661
  type,
662
662
  metadata: ___WEBPACK_IMPORTED_MODULE_6__.metaData.get(type, referencedImageId),
663
663
  });
664
664
  });
665
+ const imagePixelModule = ___WEBPACK_IMPORTED_MODULE_6__.metaData.get('imagePixelModule', referencedImageId);
666
+ _utilities__WEBPACK_IMPORTED_MODULE_4__.genericMetadataProvider.add(derivedImageId, {
667
+ type: 'imagePixelModule',
668
+ metadata: {
669
+ ...imagePixelModule,
670
+ bitsAllocated: 8,
671
+ bitsStored: 8,
672
+ highBit: 7,
673
+ samplesPerPixel: 1,
674
+ pixelRepresentation: 0,
675
+ },
676
+ });
665
677
  const localImage = createAndCacheLocalImage({ scalarData: imageScalarData, onCacheAdd, skipCreateBuffer }, imageId, true);
666
678
  const imageLoadObject = {
667
679
  promise: Promise.resolve(localImage),
@@ -1124,9 +1136,23 @@ function generateVolumeScalarData(targetBuffer, scalarLength) {
1124
1136
  throw new Error(_enums_Events__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.CACHE_SIZE_EXCEEDED);
1125
1137
  }
1126
1138
  let volumeScalarData;
1127
- if (targetBuffer?.sharedArrayBuffer) {
1128
- const buffer = new SharedArrayBuffer(numBytes);
1129
- volumeScalarData = new TypedArrayConstructor(buffer);
1139
+ if (targetBuffer?.sharedArrayBuffer ?? (0,_init__WEBPACK_IMPORTED_MODULE_10__/* .getShouldUseSharedArrayBuffer */ .TB)()) {
1140
+ switch (targetBuffer.type) {
1141
+ case 'Float32Array':
1142
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createFloat32SharedArray)(scalarLength);
1143
+ break;
1144
+ case 'Uint8Array':
1145
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint8SharedArray)(scalarLength);
1146
+ break;
1147
+ case 'Uint16Array':
1148
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint16SharedArray)(scalarLength);
1149
+ break;
1150
+ case 'Int16Array':
1151
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint16SharedArray)(scalarLength);
1152
+ break;
1153
+ default:
1154
+ throw new Error('generateVolumeScalarData: SharedArrayBuffer is not supported for the specified target buffer type');
1155
+ }
1130
1156
  }
1131
1157
  else {
1132
1158
  volumeScalarData = new TypedArrayConstructor(scalarLength);
@@ -1683,7 +1709,7 @@ var ToolModes;
1683
1709
  /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61738);
1684
1710
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55965);
1685
1711
  /* harmony import */ var _synchronizers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42375);
1686
- /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2746);
1712
+ /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49574);
1687
1713
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74119);
1688
1714
  /* harmony import */ var _cursors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32916);
1689
1715
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(40969);
@@ -2369,7 +2395,7 @@ function getToolGroupsWithToolName(toolName) {
2369
2395
  /* harmony import */ var _stateManagement_annotation_annotationLocking__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48428);
2370
2396
  /* harmony import */ var _stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21009);
2371
2397
  /* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(54177);
2372
- /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2746);
2398
+ /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(49574);
2373
2399
  /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61738);
2374
2400
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(84901);
2375
2401
  /* harmony import */ var _utilities_viewportFilters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(90252);
@@ -3043,6 +3069,7 @@ class BidirectionalTool extends _base__WEBPACK_IMPORTED_MODULE_4__/* .Annotation
3043
3069
  viewUp: [...viewUp],
3044
3070
  FrameOfReferenceUID,
3045
3071
  referencedImageId,
3072
+ ...viewport.getViewReference({ points: [worldPos] }),
3046
3073
  },
3047
3074
  data: {
3048
3075
  handles: {
@@ -3133,7 +3160,7 @@ BidirectionalTool.toolName = 'Bidirectional';
3133
3160
  /* harmony import */ var _planarFreehandROITool_openContourEndEditLoop__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(72702);
3134
3161
  /* harmony import */ var _planarFreehandROITool_renderMethods__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(11585);
3135
3162
  /* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(54177);
3136
- /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(2746);
3163
+ /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(49574);
3137
3164
  /* harmony import */ var _utilities_drawing__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10910);
3138
3165
  /* harmony import */ var _utilities_math_polyline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(56634);
3139
3166
  /* harmony import */ var _utilities_pointInShapeCallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(75403);
@@ -3202,6 +3229,7 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
3202
3229
  enabled: false,
3203
3230
  epsilon: 0.1,
3204
3231
  },
3232
+ displayOnePointAsCrosshairs: false,
3205
3233
  calculateStats: true,
3206
3234
  getTextLines: defaultGetTextLines,
3207
3235
  statsCalculator: _utilities_math_basic__WEBPACK_IMPORTED_MODULE_22__.BasicStatsCalculator,
@@ -3538,7 +3566,13 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
3538
3566
  const isEditingOpen = this.isEditingOpen;
3539
3567
  const isEditingClosed = this.isEditingClosed;
3540
3568
  if (!(isDrawing || isEditingOpen || isEditingClosed)) {
3541
- this.renderContour(enabledElement, svgDrawingHelper, annotation);
3569
+ if (this.configuration.displayOnePointAsCrosshairs &&
3570
+ annotation.data.contour.polyline.length === 1) {
3571
+ this.renderPointContourWithMarker(enabledElement, svgDrawingHelper, annotation);
3572
+ }
3573
+ else {
3574
+ this.renderContour(enabledElement, svgDrawingHelper, annotation);
3575
+ }
3542
3576
  }
3543
3577
  else {
3544
3578
  const activeAnnotationUID = this.commonData.annotation.annotationUID;
@@ -3557,7 +3591,13 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
3557
3591
  }
3558
3592
  }
3559
3593
  else {
3560
- this.renderContour(enabledElement, svgDrawingHelper, annotation);
3594
+ if (this.configuration.displayOnePointAsCrosshairs &&
3595
+ annotation.data.contour.polyline.length === 1) {
3596
+ this.renderPointContourWithMarker(enabledElement, svgDrawingHelper, annotation);
3597
+ }
3598
+ else {
3599
+ this.renderContour(enabledElement, svgDrawingHelper, annotation);
3600
+ }
3561
3601
  }
3562
3602
  renderStatus = true;
3563
3603
  }
@@ -3764,7 +3804,7 @@ __webpack_require__.d(__webpack_exports__, {
3764
3804
  t0: () => (/* reexport */ SegmentationDisplayTool/* default */.A)
3765
3805
  });
3766
3806
 
3767
- // UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelTool, ZoomTool
3807
+ // UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelRegionTool, WindowLevelTool, ZoomTool
3768
3808
 
3769
3809
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/base/index.js
3770
3810
  var base = __webpack_require__(96214);
@@ -3774,6 +3814,8 @@ var PanTool = __webpack_require__(25294);
3774
3814
  var TrackballRotateTool = __webpack_require__(15924);
3775
3815
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/WindowLevelTool.js
3776
3816
  var WindowLevelTool = __webpack_require__(455);
3817
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/WindowLevelRegionTool.js
3818
+ var WindowLevelRegionTool = __webpack_require__(60747);
3777
3819
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/StackScrollTool.js
3778
3820
  var StackScrollTool = __webpack_require__(20132);
3779
3821
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/PlanarRotateTool.js
@@ -3856,8 +3898,8 @@ var esm = __webpack_require__(92136);
3856
3898
  var stateManagement = __webpack_require__(95778);
3857
3899
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/stateManagement/annotation/annotationLocking.js
3858
3900
  var annotationLocking = __webpack_require__(48428);
3859
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js + 17 modules
3860
- var drawingSvg = __webpack_require__(2746);
3901
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js + 18 modules
3902
+ var drawingSvg = __webpack_require__(49574);
3861
3903
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/index.js + 4 modules
3862
3904
  var viewportFilters = __webpack_require__(90252);
3863
3905
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
@@ -4393,6 +4435,7 @@ var SegmentSelectTool = __webpack_require__(34041);
4393
4435
 
4394
4436
 
4395
4437
 
4438
+
4396
4439
 
4397
4440
 
4398
4441
  /***/ }),
@@ -4418,57 +4461,6 @@ __webpack_require__.r(__webpack_exports__);
4418
4461
 
4419
4462
 
4420
4463
 
4421
- /***/ }),
4422
-
4423
- /***/ 75534:
4424
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4425
-
4426
- "use strict";
4427
- __webpack_require__.r(__webpack_exports__);
4428
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4429
- /* harmony export */ AnnotationToPointData: () => (/* reexport safe */ _AnnotationToPointData__WEBPACK_IMPORTED_MODULE_5__.A),
4430
- /* harmony export */ acceptAutogeneratedInterpolations: () => (/* reexport safe */ _interpolation_acceptAutogeneratedInterpolations__WEBPACK_IMPORTED_MODULE_9__.A),
4431
- /* harmony export */ areCoplanarContours: () => (/* reexport safe */ _areCoplanarContours__WEBPACK_IMPORTED_MODULE_0__.A),
4432
- /* harmony export */ calculatePerimeter: () => (/* reexport safe */ _calculatePerimeter__WEBPACK_IMPORTED_MODULE_12__.A),
4433
- /* harmony export */ contourFinder: () => (/* reexport safe */ _contourFinder__WEBPACK_IMPORTED_MODULE_1__.Ay),
4434
- /* harmony export */ detectContourHoles: () => (/* reexport safe */ _detectContourHoles__WEBPACK_IMPORTED_MODULE_3__.A),
4435
- /* harmony export */ findHandlePolylineIndex: () => (/* reexport safe */ _findHandlePolylineIndex__WEBPACK_IMPORTED_MODULE_11__.A),
4436
- /* harmony export */ generateContourSetsFromLabelmap: () => (/* reexport safe */ _generateContourSetsFromLabelmap__WEBPACK_IMPORTED_MODULE_4__.d),
4437
- /* harmony export */ getContourHolesDataCanvas: () => (/* reexport safe */ _getContourHolesDataCanvas__WEBPACK_IMPORTED_MODULE_7__.A),
4438
- /* harmony export */ getContourHolesDataWorld: () => (/* reexport safe */ _getContourHolesDataWorld__WEBPACK_IMPORTED_MODULE_6__.A),
4439
- /* harmony export */ getDeduplicatedVTKPolyDataPoints: () => (/* reexport safe */ _getDeduplicatedVTKPolyDataPoints__WEBPACK_IMPORTED_MODULE_2__.v),
4440
- /* harmony export */ interpolation: () => (/* reexport module object */ _interpolation__WEBPACK_IMPORTED_MODULE_10__),
4441
- /* harmony export */ updateContourPolyline: () => (/* reexport safe */ _updateContourPolyline__WEBPACK_IMPORTED_MODULE_8__.A)
4442
- /* harmony export */ });
4443
- /* harmony import */ var _areCoplanarContours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14633);
4444
- /* harmony import */ var _contourFinder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11716);
4445
- /* harmony import */ var _getDeduplicatedVTKPolyDataPoints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19866);
4446
- /* harmony import */ var _detectContourHoles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92806);
4447
- /* harmony import */ var _generateContourSetsFromLabelmap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36392);
4448
- /* harmony import */ var _AnnotationToPointData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(93712);
4449
- /* harmony import */ var _getContourHolesDataWorld__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98043);
4450
- /* harmony import */ var _getContourHolesDataCanvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(88267);
4451
- /* harmony import */ var _updateContourPolyline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(89111);
4452
- /* harmony import */ var _interpolation_acceptAutogeneratedInterpolations__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(65864);
4453
- /* harmony import */ var _interpolation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(69115);
4454
- /* harmony import */ var _findHandlePolylineIndex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(84045);
4455
- /* harmony import */ var _calculatePerimeter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(53891);
4456
-
4457
-
4458
-
4459
-
4460
-
4461
-
4462
-
4463
-
4464
-
4465
-
4466
-
4467
-
4468
-
4469
-
4470
-
4471
-
4472
4464
  /***/ }),
4473
4465
 
4474
4466
  /***/ 74119:
@@ -4481,6 +4473,7 @@ __webpack_require__.r(__webpack_exports__);
4481
4473
  // EXPORTS
4482
4474
  __webpack_require__.d(__webpack_exports__, {
4483
4475
  annotationFrameRange: () => (/* reexport */ annotationFrameRange/* default */.A),
4476
+ annotationHydration: () => (/* reexport */ annotationHydration/* annotationHydration */.i),
4484
4477
  boundingBox: () => (/* reexport */ boundingBox),
4485
4478
  calibrateImageSpacing: () => (/* reexport */ calibrateImageSpacing/* default */.A),
4486
4479
  cine: () => (/* reexport */ cine),
@@ -4495,6 +4488,7 @@ __webpack_require__.d(__webpack_exports__, {
4495
4488
  getCalibratedAspect: () => (/* reexport */ getCalibratedUnits/* getCalibratedAspect */.CQ),
4496
4489
  getCalibratedLengthUnitsAndScale: () => (/* reexport */ getCalibratedUnits/* getCalibratedLengthUnitsAndScale */.Op),
4497
4490
  getCalibratedProbeUnitsAndValue: () => (/* reexport */ getCalibratedUnits/* getCalibratedProbeUnitsAndValue */.Xw),
4491
+ getClosestImageIdForStackViewport: () => (/* reexport */ annotationHydration/* getClosestImageIdForStackViewport */.x),
4498
4492
  getSphereBoundsInfo: () => (/* reexport */ getSphereBoundsInfo/* getSphereBoundsInfo */.R),
4499
4493
  getViewportForAnnotation: () => (/* reexport */ getViewportForAnnotation/* default */.A),
4500
4494
  isObject: () => (/* reexport */ isObject/* default */.A),
@@ -4570,8 +4564,10 @@ var annotationFrameRange = __webpack_require__(41209);
4570
4564
  var pointInSurroundingSphereCallback = __webpack_require__(5093);
4571
4565
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getViewportForAnnotation.js
4572
4566
  var getViewportForAnnotation = __webpack_require__(39490);
4573
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/index.js
4574
- var contours = __webpack_require__(75534);
4567
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/annotationHydration.js
4568
+ var annotationHydration = __webpack_require__(25781);
4569
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/index.js + 9 modules
4570
+ var contours = __webpack_require__(75908);
4575
4571
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/segmentation/index.js
4576
4572
  var segmentation = __webpack_require__(10351);
4577
4573
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/drawing/index.js + 1 modules
@@ -4609,8 +4605,8 @@ var touch = __webpack_require__(54868);
4609
4605
  var dynamicVolume = __webpack_require__(16390);
4610
4606
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/polyData/utils.js
4611
4607
  var utils = __webpack_require__(46514);
4612
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/index.js
4613
- var voi = __webpack_require__(10413);
4608
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/index.js + 4 modules
4609
+ var voi = __webpack_require__(14149);
4614
4610
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contourSegmentation/index.js
4615
4611
  var contourSegmentation = __webpack_require__(7259);
4616
4612
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/index.js
@@ -4649,6 +4645,7 @@ var contourSegmentation = __webpack_require__(7259);
4649
4645
 
4650
4646
 
4651
4647
 
4648
+
4652
4649
 
4653
4650
 
4654
4651
  const roundNumber = esm.utilities.roundNumber;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[889],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[121],{
3
3
 
4
- /***/ 62889:
4
+ /***/ 67121:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -20,10 +20,10 @@ const id = package_namespaceObject.UU;
20
20
 
21
21
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
22
22
  var react = __webpack_require__(41766);
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
24
- var src = __webpack_require__(5085);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 782 modules
24
+ var src = __webpack_require__(79047);
25
25
  // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
- var core_src = __webpack_require__(8633);
26
+ var core_src = __webpack_require__(75186);
27
27
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
28
28
  var es = __webpack_require__(80619);
29
29
  // EXTERNAL MODULE: ../../../node_modules/mathjs/lib/esm/index.js + 996 modules
@@ -1349,6 +1349,15 @@ class MicroscopyService extends core_src/* PubSubService */.Rc {
1349
1349
  setROIStyle(uid, styleOptions) {
1350
1350
  this.managedViewers.forEach(mv => mv.setROIStyle(uid, styleOptions));
1351
1351
  }
1352
+
1353
+ /**
1354
+ * Get all managed viewers
1355
+ *
1356
+ * @returns {Array} managedViewers
1357
+ */
1358
+ getAllManagedViewers() {
1359
+ return Array.from(this.managedViewers);
1360
+ }
1352
1361
  }
1353
1362
  _MicroscopyService = MicroscopyService;
1354
1363
  MicroscopyService.REGISTRATION = servicesManager => {
@@ -2565,6 +2574,11 @@ function getDicomMicroscopySRSopClassHandler({
2565
2574
  getDisplaySetsFromSeries
2566
2575
  };
2567
2576
  }
2577
+ // EXTERNAL MODULE: ../../../node_modules/react-resize-detector/build/index.esm.js
2578
+ var index_esm = __webpack_require__(78668);
2579
+ // EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
2580
+ var lodash_debounce = __webpack_require__(14771);
2581
+ var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
2568
2582
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/index.tsx
2569
2583
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2570
2584
 
@@ -2575,8 +2589,10 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
2575
2589
 
2576
2590
 
2577
2591
 
2592
+
2593
+
2578
2594
  const Component = /*#__PURE__*/react.lazy(() => {
2579
- return Promise.all(/* import() */[__webpack_require__.e(806), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(931), __webpack_require__.e(390), __webpack_require__.e(544)]).then(__webpack_require__.bind(__webpack_require__, 17919));
2595
+ return Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(931), __webpack_require__.e(944), __webpack_require__.e(172)]).then(__webpack_require__.bind(__webpack_require__, 66921));
2580
2596
  });
2581
2597
  const MicroscopyViewport = props => {
2582
2598
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -2628,14 +2644,25 @@ const extension = {
2628
2644
  const {
2629
2645
  activeViewportId
2630
2646
  } = viewportGrid;
2631
-
2632
- // a unique identifier based on the contents of displaySets.
2633
- // since we changed our rendering pipeline and if there is no
2634
- // element size change nor viewportId change we won't re-render
2635
- // we need a way to force re-rendering when displaySets change.
2636
2647
  const displaySetsKey = (0,react.useMemo)(() => {
2637
2648
  return props.displaySets.map(ds => ds.displaySetInstanceUID).join('-');
2638
2649
  }, [props.displaySets]);
2650
+ const onResize = lodash_debounce_default()(() => {
2651
+ const {
2652
+ microscopyService
2653
+ } = servicesManager.services;
2654
+ const managedViewer = microscopyService.getAllManagedViewers();
2655
+ if (managedViewer && managedViewer.length > 0) {
2656
+ managedViewer[0].viewer.resize();
2657
+ }
2658
+ }, 100);
2659
+ const {
2660
+ ref: resizeRef
2661
+ } = (0,index_esm/* useResizeDetector */.u)({
2662
+ onResize,
2663
+ handleHeight: true,
2664
+ handleWidth: true
2665
+ });
2639
2666
  return /*#__PURE__*/react.createElement(MicroscopyViewport, _extends({
2640
2667
  key: displaySetsKey,
2641
2668
  servicesManager: servicesManager,
@@ -2645,7 +2672,8 @@ const extension = {
2645
2672
  setViewportActive: viewportId => {
2646
2673
  viewportGridService.setActiveViewportId(viewportId);
2647
2674
  },
2648
- viewportData: viewportOptions
2675
+ viewportData: viewportOptions,
2676
+ resizeRef: resizeRef
2649
2677
  }, props));
2650
2678
  };
2651
2679
  return [{
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[998,481],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[129,404],{
3
3
 
4
- /***/ 32009:
4
+ /***/ 70282:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -23,7 +23,7 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
23
23
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
24
  var react = __webpack_require__(41766);
25
25
  // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
- var src = __webpack_require__(8633);
26
+ var src = __webpack_require__(75186);
27
27
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
28
28
  var esm = __webpack_require__(92136);
29
29
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
@@ -314,11 +314,11 @@ function getHangingProtocolModule() {
314
314
  /* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
315
315
 
316
316
  // EXTERNAL MODULE: ./state/index.js + 1 modules
317
- var state = __webpack_require__(15575);
318
- // EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
319
- var ui_src = __webpack_require__(5085);
320
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
321
- var default_src = __webpack_require__(47390);
317
+ var state = __webpack_require__(81883);
318
+ // EXTERNAL MODULE: ../../ui/src/index.js + 782 modules
319
+ var ui_src = __webpack_require__(79047);
320
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 93 modules
321
+ var default_src = __webpack_require__(16944);
322
322
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
323
323
  var prop_types = __webpack_require__(11374);
324
324
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
@@ -880,7 +880,8 @@ var ImageData = __webpack_require__(51250);
880
880
  * @param params.viewportId - ID of the viewport to be updated.
881
881
  * @param params.loadFn - Function to load the segmentation data.
882
882
  * @param params.servicesManager - The services manager.
883
- * @param params.referencedDisplaySetInstanceUID - Optional UID for the referenced display set instance.
883
+ * @param params.displaySet - the display set.
884
+ * @param params.initialSliceIndex - The initial slice index.
884
885
  *
885
886
  * @returns Returns true upon successful update of viewports for segmentation rendering.
886
887
  */
@@ -888,7 +889,8 @@ async function updateViewportsForSegmentationRendering({
888
889
  viewportId,
889
890
  loadFn,
890
891
  servicesManager,
891
- referencedDisplaySetInstanceUID
892
+ displaySet,
893
+ initialSliceIndex = null
892
894
  }) {
893
895
  const {
894
896
  cornerstoneViewportService,
@@ -900,11 +902,11 @@ async function updateViewportsForSegmentationRendering({
900
902
  viewportGridService
901
903
  });
902
904
  const targetViewportId = viewport.viewportOptions.viewportId;
903
- referencedDisplaySetInstanceUID = referencedDisplaySetInstanceUID || viewport?.displaySetInstanceUIDs[0];
905
+ const referencedDisplaySetInstanceUID = displaySet?.referencedDisplaySetInstanceUID || viewport?.displaySetInstanceUIDs[0];
904
906
  const updatedViewports = getUpdatedViewportsForSegmentation({
905
- servicesManager,
906
907
  viewportId,
907
- referencedDisplaySetInstanceUID
908
+ servicesManager,
909
+ displaySet
908
910
  });
909
911
 
910
912
  // create Segmentation callback which needs to be waited until
@@ -920,16 +922,24 @@ async function updateViewportsForSegmentationRendering({
920
922
  updatedViewports.forEach(async viewport => {
921
923
  viewport.viewportOptions = {
922
924
  ...viewport.viewportOptions,
923
- viewportType: 'volume',
925
+ viewportType: displaySet?.Modality === 'RTSTRUCT' ? 'stack' : 'volume',
924
926
  needsRerendering: true
925
927
  };
926
928
  const viewportId = viewport.viewportId;
929
+
930
+ // maintain the prehydration slice on the target viewport only
931
+ if (viewportId === targetViewportId) {
932
+ viewport.viewportOptions.initialImageOptions = {
933
+ index: initialSliceIndex,
934
+ useOnce: true
935
+ };
936
+ }
927
937
  const csViewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
928
938
  const prevCamera = csViewport.getCamera();
929
939
 
930
940
  // only run the createSegmentationForVolume for the targetViewportId
931
941
  // since the rest will get handled by cornerstoneViewportService
932
- if (volumeExists && viewportId === targetViewportId) {
942
+ if ((volumeExists || displaySet.Modality === 'RTSTRUCT') && viewportId === targetViewportId) {
933
943
  await createSegmentationForVolume();
934
944
  return;
935
945
  }
@@ -978,14 +988,14 @@ const getTargetViewport = ({
978
988
  * @param {Object} params - Parameters for the function.
979
989
  * @param params.viewportId - the ID of the viewport to be updated.
980
990
  * @param params.servicesManager - The services manager
981
- * @param params.referencedDisplaySetInstanceUID - Optional UID for the referenced display set instance.
991
+ * @param params.displaySet - the display set.
982
992
  *
983
993
  * @returns {Array} Returns an array of viewports that require updates for segmentation rendering.
984
994
  */
985
995
  function getUpdatedViewportsForSegmentation({
986
996
  viewportId,
987
997
  servicesManager,
988
- referencedDisplaySetInstanceUID
998
+ displaySet
989
999
  }) {
990
1000
  const {
991
1001
  hangingProtocolService,
@@ -1003,7 +1013,7 @@ function getUpdatedViewportsForSegmentation({
1003
1013
  });
1004
1014
  const targetViewportId = viewport.viewportOptions.viewportId;
1005
1015
  const displaySetInstanceUIDs = viewports.get(targetViewportId).displaySetInstanceUIDs;
1006
- const referenceDisplaySetInstanceUID = referencedDisplaySetInstanceUID || displaySetInstanceUIDs[0];
1016
+ const referenceDisplaySetInstanceUID = displaySet?.referencedDisplaySetInstanceUID || displaySetInstanceUIDs[0];
1007
1017
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(referenceDisplaySetInstanceUID);
1008
1018
  const segmentationFrameOfReferenceUID = referencedDisplaySet.instances[0].FrameOfReferenceUID;
1009
1019
  const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(targetViewportId, referenceDisplaySetInstanceUID, isHangingProtocolLayout);
@@ -1017,7 +1027,7 @@ function getUpdatedViewportsForSegmentation({
1017
1027
  viewportId,
1018
1028
  displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
1019
1029
  viewportOptions: {
1020
- viewportType: 'volume',
1030
+ viewportType: displaySet?.Modality === 'RTSTRUCT' ? 'stack' : 'volume',
1021
1031
  needsRerendering: true
1022
1032
  }
1023
1033
  });
@@ -1071,7 +1081,8 @@ const commandsModule = ({
1071
1081
  uiDialogService,
1072
1082
  displaySetService,
1073
1083
  viewportGridService,
1074
- toolGroupService
1084
+ toolGroupService,
1085
+ cornerstoneViewportService
1075
1086
  } = servicesManager.services;
1076
1087
  const actions = {
1077
1088
  /**
@@ -1119,6 +1130,7 @@ const commandsModule = ({
1119
1130
  updateViewportsForSegmentationRendering({
1120
1131
  viewportId,
1121
1132
  servicesManager,
1133
+ displaySet,
1122
1134
  loadFn: async () => {
1123
1135
  const currentSegmentations = segmentationService.getSegmentations();
1124
1136
  const segmentationId = await segmentationService.createSegmentationForDisplaySet(displaySetInstanceUID, {
@@ -1222,10 +1234,12 @@ const commandsModule = ({
1222
1234
  // Todo: handle adding more than one segmentation
1223
1235
  const displaySet = displaySets[0];
1224
1236
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(displaySet.referencedDisplaySetInstanceUID);
1237
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
1238
+ const initialSliceIndex = viewport.getSliceIndex();
1225
1239
  updateViewportsForSegmentationRendering({
1226
1240
  viewportId,
1227
1241
  servicesManager,
1228
- referencedDisplaySetInstanceUID: displaySet.referencedDisplaySetInstanceUID,
1242
+ displaySet,
1229
1243
  loadFn: async () => {
1230
1244
  const segDisplaySet = displaySet;
1231
1245
  const suppressEvents = false;
@@ -1235,7 +1249,8 @@ const commandsModule = ({
1235
1249
  const segmentation = segmentationService.getSegmentation(segmentationId);
1236
1250
  segmentation.description = `S${referencedDisplaySet.SeriesNumber}: ${referencedDisplaySet.SeriesDescription}`;
1237
1251
  return segmentationId;
1238
- }
1252
+ },
1253
+ initialSliceIndex
1239
1254
  });
1240
1255
  },
1241
1256
  /**
@@ -1281,8 +1296,8 @@ const commandsModule = ({
1281
1296
  const segmentMetadata = {
1282
1297
  SegmentNumber: segmentIndex.toString(),
1283
1298
  SegmentLabel: label,
1284
- SegmentAlgorithmType: 'MANUAL',
1285
- SegmentAlgorithmName: 'OHIF Brush',
1299
+ SegmentAlgorithmType: segment?.algorithmType || 'MANUAL',
1300
+ SegmentAlgorithmName: segment?.algorithmName || 'OHIF Brush',
1286
1301
  RecommendedDisplayCIELabValue,
1287
1302
  SegmentedPropertyCategoryCodeSequence: {
1288
1303
  CodeValue: 'T-D0050',
@@ -1538,7 +1553,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
1538
1553
 
1539
1554
 
1540
1555
  const Component = /*#__PURE__*/react.lazy(() => {
1541
- return __webpack_require__.e(/* import() */ 295).then(__webpack_require__.bind(__webpack_require__, 58295));
1556
+ return __webpack_require__.e(/* import() */ 675).then(__webpack_require__.bind(__webpack_require__, 93675));
1542
1557
  });
1543
1558
  const OHIFCornerstoneSEGViewport = props => {
1544
1559
  return /*#__PURE__*/react.createElement(react.Suspense, {