@ohif/app 3.13.0-beta.3 → 3.13.0-beta.30

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 (70) hide show
  1. package/dist/{1459.bundle.06807094c21c02b6a2bc.js → 1459.bundle.c0c8b330b99905595d52.js} +5 -6
  2. package/dist/{147.bundle.37d627289453cb6c3937.js → 147.bundle.9c245011849e09bd7904.js} +6 -5
  3. package/dist/{1608.bundle.0687c661f1c9edfb3b8a.js → 1608.bundle.7a4a3b49cae10f6ba2cf.js} +8 -8
  4. package/dist/{1927.bundle.3050588e95f43cf57cdd.js → 1927.bundle.be67b3aafe238ca9f191.js} +27 -38
  5. package/dist/{1933.bundle.931455c6772b70d3336e.js → 1933.bundle.a0f8d45f85ec50bab14d.js} +15 -16
  6. package/dist/{2018.bundle.a9ea7d41cb8aef67e21b.js → 2018.bundle.7e1a60775161236309fc.js} +18 -19
  7. package/dist/{6409.bundle.b36048896cb11c8571fb.js → 2075.bundle.16215ba94d714a1c905f.js} +308 -237
  8. package/dist/{2108.bundle.e84aa8d858d8c4f2413e.js → 2108.bundle.f1ef8e8746eb3936bb47.js} +567 -556
  9. package/dist/{213.bundle.141ce91906813f9f3682.js → 213.bundle.eedadfee12970dfd388e.js} +3 -5
  10. package/dist/{2424.bundle.e695a735566cea98e16f.js → 2424.bundle.4d1a8e472898c55b38c9.js} +3 -5
  11. package/dist/{2516.bundle.1ea0988d309a757bb6da.js → 2516.bundle.f62228e9a800de8d4b31.js} +6 -6
  12. package/dist/{2701.bundle.12bd01a80a9f8ea4cd94.js → 2701.bundle.8abdc7f6578c00d4539f.js} +6 -6
  13. package/dist/{3081.bundle.ef4a1a9f71f455c2c951.js → 3081.bundle.c4c74cdd2914ef79b4a7.js} +273 -179
  14. package/dist/{1730.bundle.0d6e739187811c6a5927.js → 3138.bundle.c86a8589e8d530ec807d.js} +10 -304
  15. package/dist/{3461.bundle.0f02169530057dfb2ecb.js → 3461.bundle.1996770c27b696098e8d.js} +22 -26
  16. package/dist/{4202.bundle.5a0f8e4004c5d8a68548.js → 4202.bundle.dd592e5575b8e302689a.js} +4 -4
  17. package/dist/{4019.bundle.83a604779f7da0101ced.js → 4287.bundle.d2d09ffd5cd8680fad8d.js} +345 -234
  18. package/dist/{5462.bundle.21beddaca145b7465c72.js → 4406.bundle.573d234b4641d23cf8db.js} +1083 -1308
  19. package/dist/{1403.bundle.9b81d7ef41459986c8a9.js → 4507.bundle.49d36bfebcc4975a30df.js} +10 -305
  20. package/dist/{4819.bundle.0e7fa0da8b548fdcd360.js → 4819.bundle.caeb4a74c913acab73d3.js} +25 -26
  21. package/dist/{4775.bundle.ffcdc0c1c013d5a1844d.js → 5015.bundle.4ba7da46f139ba50f346.js} +27 -331
  22. package/dist/{5028.bundle.5a8ddc736d637ecdd865.js → 5028.bundle.a25490803261d97788e9.js} +9 -11
  23. package/dist/{5261.bundle.6e1a017f8f1027557f5b.js → 5261.bundle.2655560097e9250eac44.js} +412 -345
  24. package/dist/{5457.bundle.65a0f54faba80efcb561.js → 5457.bundle.c2780891311f1dd4a732.js} +16 -23
  25. package/dist/{5485.bundle.bad8122607ed6e274d69.js → 5485.bundle.31b82091a3124b2ab136.js} +14 -29
  26. package/dist/{5491.bundle.2e01dd7ad29e4cc01bc1.js → 5491.bundle.4866d2ecb20dd089e071.js} +54 -51
  27. package/dist/{5802.bundle.3bf5e6b3ab330a594a47.js → 5802.bundle.70d423c8b488cc56cc36.js} +74 -16
  28. package/dist/5802.css +1 -1
  29. package/dist/{6347.bundle.784c48912700f281de1d.js → 581.bundle.b70e5d2d0f3958df69f0.js} +337 -543
  30. package/dist/{5830.bundle.b073c265c4fcea1afff3.js → 5830.bundle.791019deddd536980a11.js} +3 -3
  31. package/dist/{5858.bundle.ff6b340cf7457db76a1a.js → 5858.bundle.466e58128de344ab53f3.js} +90 -86
  32. package/dist/{6027.bundle.6027e854811684e41980.js → 6027.bundle.e2985d6b51ea2c748e4f.js} +3 -5
  33. package/dist/{997.bundle.822b33e561263084e18c.js → 6280.bundle.081861b7e685b28616c8.js} +2345 -1657
  34. package/dist/{6354.bundle.c387737dc09c9cab4ff2.js → 6354.bundle.d8a592b03e9a5b7a66c2.js} +102 -96
  35. package/dist/{6376.bundle.9cb74d7bc08476e2f1a7.js → 6376.bundle.839c708f2fc41e76ee58.js} +6 -6
  36. package/dist/{2842.bundle.860b9f10fcdd9656947a.js → 6386.bundle.c0618e49b65769ddf752.js} +876 -2295
  37. package/dist/6939.bundle.41fbdef87597b5172ec6.js +3 -3
  38. package/dist/{7159.bundle.a5991a5d4f0dd8f1c95f.js → 7159.bundle.fb9df255868960f69765.js} +7 -5
  39. package/dist/{7190.bundle.e8f0193e0e06472f795c.js → 7190.bundle.6314b558746e394aeb0e.js} +40 -40
  40. package/dist/{732.bundle.6978ac30a1e36abf06db.js → 732.bundle.ea6f9d8504e37e01a208.js} +5 -13
  41. package/dist/{7431.bundle.b01791d10e6cf9f503b0.js → 7431.bundle.84b3d88ef94b97c84298.js} +28 -28
  42. package/dist/{4410.bundle.c5224cd7d6238a7d4660.js → 7537.bundle.1a18959ceec98634bc48.js} +4423 -1541
  43. package/dist/{7639.bundle.b4ac770b1338438aa3a2.js → 7639.bundle.96bf42a21823ff690fe3.js} +3 -5
  44. package/dist/7758.bundle.c8d106364298e7d288f0.js +3 -3
  45. package/dist/{8094.bundle.5c44190a325ac23e3e5c.js → 8094.bundle.148a66619607e37cbf19.js} +3 -4
  46. package/dist/{8305.bundle.5819f9bf422ecbb27900.js → 8305.bundle.fc0d3fa5990fb216ea03.js} +11 -13
  47. package/dist/{6163.bundle.d2cf9edf196d02c98b8c.js → 8499.bundle.4f062cc70286b2c8359c.js} +5 -300
  48. package/dist/8499.css +2 -0
  49. package/dist/{85.bundle.4252b24960db7d6ecd97.js → 85.bundle.a8b8950343186ffc49aa.js} +3 -5
  50. package/dist/{8558.bundle.b02fe1cd95ab4b4f6336.js → 8558.bundle.c3a80780e11ec22d6cf7.js} +11 -309
  51. package/dist/{8583.bundle.c614a4ced182d6a5ffc6.js → 8583.bundle.79bf310af0fbd0cc7b0c.js} +18 -21
  52. package/dist/{9195.bundle.d363cc5b470efa218617.js → 9195.bundle.cdb04b7e160651c88e15.js} +97 -112
  53. package/dist/{7412.bundle.fab1742191b7fe937330.js → 9205.bundle.09c52845b43bd8513d50.js} +4336 -1908
  54. package/dist/{3584.bundle.8cc0750425513433e9cc.js → 933.bundle.ea9db108b8a4e3d51904.js} +264 -2219
  55. package/dist/{9845.bundle.255e7c7f7a88193b4e47.js → 9845.bundle.d52e8993eb5cde995219.js} +6 -6
  56. package/dist/{9862.bundle.3a8958a82c572015d25d.js → 9862.bundle.126a8a8c84421a076527.js} +6 -4
  57. package/dist/{9927.bundle.e7d188ce9b9ea5b719e2.js → 9927.bundle.659c241178cc2ba15b2c.js} +3 -5
  58. package/dist/{app.bundle.eca4b5be61ff963d8c53.js → app.bundle.79dd773adecba17db1dc.js} +65469 -63535
  59. package/dist/app.bundle.css +3 -3
  60. package/dist/{compute.bundle.64280c7af19ff567465f.js → compute.bundle.6016de6e5f7c25749422.js} +10 -22
  61. package/dist/{histogram-worker.bundle.d4e40a8018d2698b072e.js → histogram-worker.bundle.5b679ce4142c803c80a4.js} +11 -23
  62. package/dist/index.html +1 -1
  63. package/dist/{interpolation.bundle.c70cb95d164dc494e6dc.js → interpolation.bundle.072a28b303f2dbafe05c.js} +14 -26
  64. package/dist/{polySeg.bundle.a5aa9130b4191253c410.js → polySeg.bundle.cdcc2c3d11009ccf112c.js} +8 -20
  65. package/dist/sw.js +1 -1
  66. package/package.json +23 -22
  67. package/dist/3343.bundle.d7578ce8f75d158c0bab.js +0 -297
  68. /package/dist/{1730.css → 3138.css} +0 -0
  69. /package/dist/{3343.css → 4972.css} +0 -0
  70. /package/dist/{6163.css → 7829.css} +0 -0
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[3081],{
3
3
 
4
- /***/ 38007:
5
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4
+ /***/ 38007
5
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6
6
 
7
7
 
8
8
  // EXPORTS
@@ -109,10 +109,10 @@ var useViewportRendering = __webpack_require__(47488);
109
109
 
110
110
 
111
111
 
112
- /***/ }),
112
+ /***/ },
113
113
 
114
- /***/ 9234:
115
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
114
+ /***/ 9234
115
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
116
116
 
117
117
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
118
118
  /* harmony export */ c: () => (/* binding */ useActiveViewportSegmentationRepresentations)
@@ -131,10 +131,10 @@ function useActiveViewportSegmentationRepresentations() {
131
131
  }
132
132
 
133
133
 
134
- /***/ }),
134
+ /***/ },
135
135
 
136
- /***/ 84535:
137
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
136
+ /***/ 84535
137
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
138
138
 
139
139
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
140
140
  /* harmony export */ R: () => (/* binding */ useMeasurementTracking)
@@ -238,10 +238,10 @@ function useMeasurementTracking({
238
238
  }
239
239
  /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (useMeasurementTracking)));
240
240
 
241
- /***/ }),
241
+ /***/ },
242
242
 
243
- /***/ 19214:
244
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
243
+ /***/ 19214
244
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
245
245
 
246
246
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
247
247
  /* harmony export */ d: () => (/* binding */ useMeasurements)
@@ -348,10 +348,10 @@ function useMeasurements({
348
348
  return displayMeasurements;
349
349
  }
350
350
 
351
- /***/ }),
351
+ /***/ },
352
352
 
353
- /***/ 73421:
354
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
353
+ /***/ 73421
354
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
355
355
 
356
356
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
357
357
  /* harmony export */ j: () => (/* binding */ useSegmentations)
@@ -483,10 +483,10 @@ function useSegmentations(options) {
483
483
  return segmentations;
484
484
  }
485
485
 
486
- /***/ }),
486
+ /***/ },
487
487
 
488
- /***/ 10225:
489
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
488
+ /***/ 10225
489
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
490
490
 
491
491
 
492
492
  // EXPORTS
@@ -805,10 +805,10 @@ function useViewportDisplaySets(viewportId, options) {
805
805
  return result;
806
806
  }
807
807
 
808
- /***/ }),
808
+ /***/ },
809
809
 
810
- /***/ 47488:
811
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
810
+ /***/ 47488
811
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
812
812
 
813
813
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
814
814
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__),
@@ -1473,10 +1473,10 @@ function getCustomizationData(customizationService) {
1473
1473
  };
1474
1474
  }
1475
1475
 
1476
- /***/ }),
1476
+ /***/ },
1477
1477
 
1478
- /***/ 79063:
1479
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1478
+ /***/ 79063
1479
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1480
1480
 
1481
1481
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1482
1482
  /* harmony export */ L: () => (/* binding */ useViewportSegmentations)
@@ -1657,74 +1657,36 @@ function useViewportSegmentations({
1657
1657
  return segmentationsWithRepresentations;
1658
1658
  }
1659
1659
 
1660
- /***/ }),
1660
+ /***/ },
1661
1661
 
1662
- /***/ 63081:
1663
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1662
+ /***/ 63081
1663
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1664
1664
 
1665
- // ESM COMPAT FLAG
1666
- __webpack_require__.r(__webpack_exports__);
1667
1665
 
1668
1666
  // EXPORTS
1669
1667
  __webpack_require__.d(__webpack_exports__, {
1670
- AccordionGroup: () => (/* reexport */ AccordionGroup),
1671
- CloneChildren: () => (/* reexport */ CloneChildren),
1672
- Colorbar: () => (/* reexport */ Colorbar),
1673
- Colormap: () => (/* reexport */ Colormap),
1674
- CornerstoneViewportDownloadForm: () => (/* reexport */ utils_CornerstoneViewportDownloadForm),
1675
- DYNAMIC_VOLUME_LOADER_SCHEME: () => (/* reexport */ DYNAMIC_VOLUME_LOADER_SCHEME),
1676
- DicomUpload: () => (/* reexport */ DicomUpload_DicomUpload),
1677
- Enums: () => (/* reexport */ enums),
1678
- ImageOverlayViewerTool: () => (/* reexport */ tools_ImageOverlayViewerTool),
1679
- MeasumentsMenu: () => (/* reexport */ MeasumentsMenu),
1680
- MeasurementOrAdditionalFindingSets: () => (/* reexport */ MeasurementOrAdditionalFindingSets),
1681
- MeasurementsOrAdditionalFindings: () => (/* reexport */ MeasurementsOrAdditionalFindings),
1682
- OHIFCornerstoneViewport: () => (/* binding */ OHIFCornerstoneViewport),
1683
- PanelMeasurement: () => (/* reexport */ PanelMeasurement),
1684
- PanelSegmentation: () => (/* reexport */ PanelSegmentation),
1685
- PlanarFreehandROI: () => (/* reexport */ measurementServiceMappings_PlanarFreehandROI),
1686
- RectangleROI: () => (/* reexport */ measurementServiceMappings_RectangleROI),
1687
- SeriesMeasurementTrigger: () => (/* reexport */ SeriesMeasurementTrigger),
1688
- SeriesMeasurements: () => (/* reexport */ SeriesMeasurements),
1689
- StudyMeasurements: () => (/* reexport */ StudyMeasurements),
1690
- StudyMeasurementsActions: () => (/* reexport */ StudyMeasurementsActions),
1691
- StudySummaryFromMetadata: () => (/* reexport */ StudySummaryFromMetadata),
1692
- Types: () => (/* reexport */ types_namespaceObject),
1693
- VOLUME_LOADER_SCHEME: () => (/* reexport */ VOLUME_LOADER_SCHEME),
1694
- VolumeLighting: () => (/* reexport */ VolumeLighting),
1695
- VolumeRenderingOptions: () => (/* reexport */ VolumeRenderingOptions),
1696
- VolumeRenderingPresets: () => (/* reexport */ VolumeRenderingPresets),
1697
- VolumeRenderingQuality: () => (/* reexport */ VolumeRenderingQuality),
1698
- VolumeShade: () => (/* reexport */ VolumeShade),
1699
- VolumeShift: () => (/* reexport */ VolumeShift),
1700
- WindowLevel: () => (/* reexport */ WindowLevel),
1701
- WindowLevelActionMenu: () => (/* reexport */ WindowLevelActionMenu),
1702
- WindowLevelActionMenuContent: () => (/* reexport */ WindowLevelActionMenuContent),
1703
- WindowLevelActionMenuWrapper: () => (/* reexport */ WindowLevelActionMenuWrapper),
1668
+ _I: () => (/* reexport */ AccordionGroup),
1669
+ fX: () => (/* reexport */ enums),
1670
+ CP: () => (/* reexport */ MeasurementsOrAdditionalFindings),
1671
+ R9: () => (/* binding */ OHIFCornerstoneViewport),
1672
+ re: () => (/* reexport */ PanelMeasurement),
1673
+ rE: () => (/* reexport */ PanelSegmentation),
1674
+ V: () => (/* reexport */ SeriesMeasurements),
1675
+ B9: () => (/* reexport */ StudyMeasurements),
1676
+ _9: () => (/* reexport */ StudyMeasurementsActions),
1677
+ x3: () => (/* reexport */ StudySummaryFromMetadata),
1678
+ Rj: () => (/* reexport */ VOLUME_LOADER_SCHEME),
1704
1679
  "default": () => (/* binding */ cornerstone_src),
1705
- dicomLoaderService: () => (/* reexport */ utils_dicomLoaderService),
1706
- findNearbyToolData: () => (/* reexport */ findNearbyToolData),
1707
- getActiveViewportEnabledElement: () => (/* reexport */ getActiveViewportEnabledElement),
1708
- getEnabledElement: () => (/* reexport */ state/* getEnabledElement */.kJ),
1709
- getSOPInstanceAttributes: () => (/* reexport */ getSOPInstanceAttributes),
1710
- groupByDisplaySet: () => (/* reexport */ groupByDisplaySet),
1711
- groupByNamedSets: () => (/* reexport */ groupByNamedSets),
1712
- groupByStudy: () => (/* reexport */ groupByStudy),
1713
- measurementMappingUtils: () => (/* reexport */ utils_namespaceObject),
1714
- setEnabledElement: () => (/* reexport */ state/* setEnabledElement */.ye),
1715
- toolNames: () => (/* reexport */ toolNames),
1716
- useActiveViewportSegmentationRepresentations: () => (/* reexport */ useActiveViewportSegmentationRepresentations/* useActiveViewportSegmentationRepresentations */.c),
1717
- useLutPresentationStore: () => (/* reexport */ useLutPresentationStore/* useLutPresentationStore */.I),
1718
- useMeasurementTracking: () => (/* reexport */ useMeasurementTracking/* useMeasurementTracking */.R),
1719
- useMeasurements: () => (/* reexport */ useMeasurements/* useMeasurements */.d),
1720
- usePositionPresentationStore: () => (/* reexport */ usePositionPresentationStore/* usePositionPresentationStore */.q),
1721
- useSegmentationPresentationStore: () => (/* reexport */ useSegmentationPresentationStore/* useSegmentationPresentationStore */.v),
1722
- useSegmentations: () => (/* reexport */ useSegmentations/* useSegmentations */.j),
1723
- useSelectedSegmentationsForViewportStore: () => (/* reexport */ useSelectedSegmentationsForViewportStore),
1724
- useSynchronizersStore: () => (/* reexport */ useSynchronizersStore/* useSynchronizersStore */.U),
1725
- utils: () => (/* reexport */ src_utils)
1680
+ HA: () => (/* reexport */ utils_dicomLoaderService),
1681
+ J4: () => (/* reexport */ getSOPInstanceAttributes),
1682
+ c3: () => (/* reexport */ useActiveViewportSegmentationRepresentations/* useActiveViewportSegmentationRepresentations */.c),
1683
+ qu: () => (/* reexport */ usePositionPresentationStore/* usePositionPresentationStore */.q),
1684
+ jo: () => (/* reexport */ useSegmentations/* useSegmentations */.j),
1685
+ Wp: () => (/* reexport */ src_utils)
1726
1686
  });
1727
1687
 
1688
+ // UNUSED EXPORTS: CloneChildren, Colorbar, Colormap, CornerstoneViewportDownloadForm, DYNAMIC_VOLUME_LOADER_SCHEME, DicomUpload, ImageOverlayViewerTool, MeasumentsMenu, MeasurementOrAdditionalFindingSets, PlanarFreehandROI, RectangleROI, SeriesMeasurementTrigger, Types, VolumeLighting, VolumeRenderingOptions, VolumeRenderingPresets, VolumeRenderingQuality, VolumeShade, VolumeShift, WindowLevel, WindowLevelActionMenu, WindowLevelActionMenuContent, WindowLevelActionMenuWrapper, findNearbyToolData, getActiveViewportEnabledElement, getEnabledElement, groupByDisplaySet, groupByNamedSets, groupByStudy, measurementMappingUtils, setEnabledElement, toolNames, useLutPresentationStore, useMeasurementTracking, useMeasurements, useSegmentationPresentationStore, useSelectedSegmentationsForViewportStore, useSynchronizersStore
1689
+
1728
1690
  // NAMESPACE OBJECT: ../../../extensions/cornerstone/src/enums.ts
1729
1691
  var enums_namespaceObject = {};
1730
1692
  __webpack_require__.r(enums_namespaceObject);
@@ -1734,22 +1696,6 @@ __webpack_require__.d(enums_namespaceObject, {
1734
1696
  Ay: () => (enums)
1735
1697
  });
1736
1698
 
1737
- // NAMESPACE OBJECT: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/utils/index.ts
1738
- var utils_namespaceObject = {};
1739
- __webpack_require__.r(utils_namespaceObject);
1740
- __webpack_require__.d(utils_namespaceObject, {
1741
- getDisplayUnit: () => (utils_getDisplayUnit),
1742
- getFirstAnnotationSelected: () => (getFirstAnnotationSelected),
1743
- getHandlesFromPoints: () => (getHandlesFromPoints),
1744
- getSOPInstanceAttributes: () => (getSOPInstanceAttributes),
1745
- isAnnotationSelected: () => (isAnnotationSelected),
1746
- setAnnotationSelected: () => (setAnnotationSelected)
1747
- });
1748
-
1749
- // NAMESPACE OBJECT: ../../../extensions/cornerstone/src/types/index.ts
1750
- var types_namespaceObject = {};
1751
- __webpack_require__.r(types_namespaceObject);
1752
-
1753
1699
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1754
1700
  var react = __webpack_require__(86326);
1755
1701
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
@@ -1770,8 +1716,8 @@ var src = __webpack_require__(42356);
1770
1716
  var loaders = __webpack_require__(19742);
1771
1717
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
1772
1718
  var RequestType = __webpack_require__(43213);
1773
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/index.js + 77 modules
1774
- var dicom_image_loader_dist_esm = __webpack_require__(75524);
1719
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/index.js + 80 modules
1720
+ var dicom_image_loader_dist_esm = __webpack_require__(76318);
1775
1721
  ;// ../../../extensions/cornerstone/src/initWADOImageLoader.js
1776
1722
 
1777
1723
 
@@ -1913,7 +1859,7 @@ function onCompletedCalibrationLine(servicesManager, csToolsEvent) {
1913
1859
  reject('UIDialogService is not initiated');
1914
1860
  return;
1915
1861
  }
1916
- (0,default_src.callInputDialog)({
1862
+ (0,default_src/* callInputDialog */.l5)({
1917
1863
  uiDialogService,
1918
1864
  title: 'Calibration',
1919
1865
  placeholder: 'Actual Physical distance (mm)',
@@ -2614,6 +2560,7 @@ function getHandlesFromPoints(points) {
2614
2560
  }), {});
2615
2561
  }
2616
2562
  ;// ../../../extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts
2563
+ /* unused harmony import specifier */ var cs3dToolAnnotationUtils;
2617
2564
 
2618
2565
 
2619
2566
  /**
@@ -2622,7 +2569,7 @@ function getHandlesFromPoints(points) {
2622
2569
  * @returns boolean
2623
2570
  */
2624
2571
  function isAnnotationSelected(annotationUID) {
2625
- return dist_esm.annotation.selection.isAnnotationSelected(annotationUID);
2572
+ return cs3dToolAnnotationUtils.selection.isAnnotationSelected(annotationUID);
2626
2573
  }
2627
2574
 
2628
2575
  /**
@@ -2634,7 +2581,7 @@ function setAnnotationSelected(annotationUID, selected) {
2634
2581
  const isCurrentSelected = isAnnotationSelected(annotationUID);
2635
2582
  // branch cut, avoid invoking imaging library unnecessarily.
2636
2583
  if (isCurrentSelected !== selected) {
2637
- dist_esm.annotation.selection.setAnnotationSelected(annotationUID, selected);
2584
+ cs3dToolAnnotationUtils.selection.setAnnotationSelected(annotationUID, selected);
2638
2585
  }
2639
2586
  }
2640
2587
  function getFirstAnnotationSelected(element) {
@@ -7815,7 +7762,7 @@ function SegmentationToolConfig() {
7815
7762
  });
7816
7763
  };
7817
7764
  return /*#__PURE__*/react.createElement("div", {
7818
- className: "bg-muted flex flex-col gap-2 border-b border-b-[2px] border-black px-2 py-3"
7765
+ className: "bg-muted flex flex-col gap-2 border-b border-b-[2px] border-background px-2 py-3"
7819
7766
  }, /*#__PURE__*/react.createElement("div", {
7820
7767
  className: "flex items-center gap-2"
7821
7768
  }, /*#__PURE__*/react.createElement(ui_next_src/* Switch */.dOG, {
@@ -8624,7 +8571,7 @@ const DicomUploadProgressItem = /*#__PURE__*/(0,react.memo)(({
8624
8571
  }, /*#__PURE__*/react.createElement("div", {
8625
8572
  className: "flex w-6 shrink-0 items-center justify-center"
8626
8573
  }, getStatusIcon()), /*#__PURE__*/react.createElement("div", {
8627
- className: "overflow-hidden text-ellipsis whitespace-nowrap text-white"
8574
+ className: "text-foreground overflow-hidden text-ellipsis whitespace-nowrap"
8628
8575
  }, dicomFileUploader.getFileName())), failedReason && /*#__PURE__*/react.createElement("div", {
8629
8576
  className: "pl-10"
8630
8577
  }, failedReason)), /*#__PURE__*/react.createElement("div", {
@@ -8866,7 +8813,7 @@ function DicomUploadProgress({
8866
8813
  }, [numFilesCompleted]);
8867
8814
  const getNumCompletedAndTimeRemainingComponent = () => {
8868
8815
  return /*#__PURE__*/react.createElement("div", {
8869
- className: "bg-muted flex h-14 items-center px-1 pb-4 text-lg text-white"
8816
+ className: "bg-muted text-foreground flex h-14 items-center px-1 pb-4 text-lg"
8870
8817
  }, numFilesCompleted === dicomFileUploaderArr.length ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
8871
8818
  className: NO_WRAP_ELLIPSIS_CLASS_NAMES
8872
8819
  }, `${dicomFileUploaderArr.length} ${dicomFileUploaderArr.length > 1 ? 'files' : 'file'} completed.`), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
@@ -8916,7 +8863,7 @@ function DicomUploadProgress({
8916
8863
  return /*#__PURE__*/react.createElement("div", {
8917
8864
  className: "flex grow flex-col"
8918
8865
  }, getNumCompletedAndTimeRemainingComponent(), /*#__PURE__*/react.createElement("div", {
8919
- className: "flex grow flex-col overflow-hidden bg-black text-lg"
8866
+ className: "flex grow flex-col overflow-hidden bg-background text-lg"
8920
8867
  }, getPercentCompleteComponent(), /*#__PURE__*/react.createElement("div", {
8921
8868
  className: "ohif-scrollbar h-1 grow overflow-y-scroll px-2"
8922
8869
  }, dicomFileUploaderArr.filter(dicomFileUploader => !showFailedOnly || dicomFileUploader.getStatus() === UploadStatus.Failed).map(dicomFileUploader => /*#__PURE__*/react.createElement(DicomUpload_DicomUploadProgressItem, {
@@ -8945,7 +8892,7 @@ function DicomUpload({
8945
8892
  onComplete,
8946
8893
  onStarted
8947
8894
  }) {
8948
- const baseClassNames = 'min-h-[375px] flex flex-col bg-black select-none rounded-lg overflow-hidden';
8895
+ const baseClassNames = 'min-h-[375px] flex flex-col bg-background select-none rounded-lg overflow-hidden';
8949
8896
  const [dicomFileUploaderArr, setDicomFileUploaderArr] = (0,react.useState)([]);
8950
8897
  const onDrop = (0,react.useCallback)(async acceptedFiles => {
8951
8898
  onStarted();
@@ -9067,7 +9014,8 @@ function ViewportDownloadFormNew({
9067
9014
  onDimensionsChange,
9068
9015
  onEnableViewport,
9069
9016
  onDisableViewport,
9070
- onDownload
9017
+ onDownload,
9018
+ onCopyToClipboard
9071
9019
  }) {
9072
9020
  const [viewportElement, setViewportElement] = (0,react.useState)(null);
9073
9021
  const [showWarningMessage, setShowWarningMessage] = (0,react.useState)(true);
@@ -9094,7 +9042,7 @@ function ViewportDownloadFormNew({
9094
9042
  "data-viewport-uid": viewportId,
9095
9043
  ref: setViewportElement
9096
9044
  }, warningState.enabled && showWarningMessage && /*#__PURE__*/react.createElement("div", {
9097
- className: "text-foreground absolute left-1/2 bottom-[5px] z-[1000] -translate-x-1/2 whitespace-nowrap rounded bg-black p-3 text-xs font-bold",
9045
+ className: "text-foreground absolute left-1/2 bottom-[5px] z-[1000] -translate-x-1/2 whitespace-nowrap rounded bg-background p-3 text-xs font-bold",
9098
9046
  style: {
9099
9047
  fontSize: '12px'
9100
9048
  }
@@ -9140,12 +9088,23 @@ function ViewportDownloadFormNew({
9140
9088
  className: "mt-2"
9141
9089
  }, /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu.Right, null, /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu.Secondary, {
9142
9090
  onClick: onClose
9143
- }, t('Common:Cancel')), /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu.Primary, {
9091
+ }, t('Common:Cancel')), /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu.Secondary, {
9092
+ onClick: async () => {
9093
+ try {
9094
+ await onCopyToClipboard();
9095
+ ui_next_src/* toast */.oRP.success(t('Image copied to clipboard'));
9096
+ onClose();
9097
+ } catch (error) {
9098
+ ui_next_src/* toast */.oRP.error(t('Failed to copy image to clipboard'));
9099
+ console.error('Failed to copy to clipboard:', error);
9100
+ }
9101
+ }
9102
+ }, t('Copy to Clipboard')), /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu.Primary, {
9144
9103
  onClick: () => {
9145
9104
  onDownload(filename || DEFAULT_FILENAME, fileType);
9146
9105
  onClose();
9147
9106
  }
9148
- }, t('Common:Save')))))));
9107
+ }, t('Save Image')))))));
9149
9108
  }
9150
9109
  /* harmony default export */ const captureViewportModalCustomization = ({
9151
9110
  'ohif.captureViewportModal': ViewportDownloadFormNew
@@ -9563,17 +9522,39 @@ const CornerstoneViewportDownloadForm = ({
9563
9522
  } = activeViewportEnabledElement;
9564
9523
  const downloadViewport = renderingEngine.getViewport(VIEWPORT_ID);
9565
9524
  try {
9525
+ // Capture current viewport state
9526
+ // - properties: VOI, colormap, interpolation, etc.
9527
+ // - viewPresentation: flip/rotate/zoom presentation state added for
9528
+ // saving flip and rotation for capture
9529
+ // - viewReference: image/volume reference
9530
+ const properties = viewport.getProperties();
9531
+ const viewPresentation = viewport.getViewPresentation?.();
9532
+ const viewRef = viewport.getViewReference?.();
9566
9533
  if (downloadViewport instanceof esm.StackViewport) {
9567
9534
  const imageId = viewport.getCurrentImageId();
9568
- const properties = viewport.getProperties();
9569
9535
  await downloadViewport.setStack([imageId]);
9570
- downloadViewport.setProperties(properties);
9571
9536
  } else if (downloadViewport instanceof esm.BaseVolumeViewport) {
9572
9537
  const volumeIds = viewport.getAllVolumeIds();
9573
- downloadViewport.setVolumes([{
9538
+ await downloadViewport.setVolumes([{
9574
9539
  volumeId: volumeIds[0]
9575
9540
  }]);
9576
9541
  }
9542
+
9543
+ // Apply presentation state so captured image preserves flip/rotate
9544
+ if (viewPresentation && downloadViewport.setViewPresentation) {
9545
+ downloadViewport.setViewPresentation(viewPresentation);
9546
+ }
9547
+
9548
+ // Apply viewport display properties
9549
+ downloadViewport.setProperties(properties);
9550
+
9551
+ // Ensure correct image/volume reference
9552
+ if (viewRef && downloadViewport.setViewReference) {
9553
+ downloadViewport.setViewReference(viewRef);
9554
+ }
9555
+ downloadViewport.render();
9556
+
9557
+ // Re-apply segmentation overlays to the download viewport
9577
9558
  if (segmentationRepresentations?.length) {
9578
9559
  segmentationRepresentations.forEach(segRepresentation => {
9579
9560
  const {
@@ -9667,6 +9648,36 @@ const CornerstoneViewportDownloadForm = ({
9667
9648
  filename
9668
9649
  });
9669
9650
  };
9651
+ const handleCopyToClipboard = async () => {
9652
+ const divForDownloadViewport = document.querySelector(`div[data-viewport-uid="${VIEWPORT_ID}"]`);
9653
+ if (!divForDownloadViewport) {
9654
+ console.debug('No viewport found for copy');
9655
+ return;
9656
+ }
9657
+ try {
9658
+ const canvas = await (0,html2canvas_esm/* default */.A)(divForDownloadViewport);
9659
+
9660
+ // Clipboard API only supports PNG format in most browsers
9661
+ const blob = await new Promise((resolve, reject) => {
9662
+ canvas.toBlob(blob => {
9663
+ if (blob) {
9664
+ resolve(blob);
9665
+ } else {
9666
+ reject(new Error('Failed to create blob from canvas'));
9667
+ }
9668
+ }, 'image/png', 1.0);
9669
+ });
9670
+
9671
+ // Copy to clipboard using the Clipboard API
9672
+ await navigator.clipboard.write([new ClipboardItem({
9673
+ 'image/png': blob
9674
+ })]);
9675
+ console.log('Image copied to clipboard successfully');
9676
+ } catch (error) {
9677
+ console.error('Failed to copy image to clipboard:', error);
9678
+ throw error;
9679
+ }
9680
+ };
9670
9681
  const ViewportDownloadFormNew = customizationService.getCustomization('ohif.captureViewportModal');
9671
9682
  return /*#__PURE__*/react.createElement(ViewportDownloadFormNew, {
9672
9683
  onClose: hide,
@@ -9680,6 +9691,7 @@ const CornerstoneViewportDownloadForm = ({
9680
9691
  onEnableViewport: handleEnableViewport,
9681
9692
  onDisableViewport: handleDisableViewport,
9682
9693
  onDownload: handleDownload,
9694
+ onCopyToClipboard: handleCopyToClipboard,
9683
9695
  warningState: warningState
9684
9696
  });
9685
9697
  };
@@ -10756,11 +10768,26 @@ function commandsModule({
10756
10768
  segmentIndex: targetIndex
10757
10769
  } = targetSegmentation;
10758
10770
 
10771
+ // Check if the segment has voxels before computing bidirectional measurement
10772
+ const uniqueSegmentIndices = dist_esm.utilities.segmentation.getUniqueSegmentIndices(targetId);
10773
+ const hasVoxels = uniqueSegmentIndices.includes(targetIndex);
10774
+ if (!hasVoxels) {
10775
+ uiNotificationService.show({
10776
+ title: i18n_src/* default */.A.t('SegmentationPanel:Segment Bidirectional'),
10777
+ message: i18n_src/* default */.A.t('SegmentationPanel:Draw a segment before using bidirectional measurement'),
10778
+ type: 'warning'
10779
+ });
10780
+ return;
10781
+ }
10782
+
10759
10783
  // Get bidirectional measurement data
10760
10784
  const bidirectionalData = await dist_esm.utilities.segmentation.getSegmentLargestBidirectional({
10761
10785
  segmentationId: targetId,
10762
10786
  segmentIndices: [targetIndex]
10763
10787
  });
10788
+ if (!bidirectionalData.length) {
10789
+ return;
10790
+ }
10764
10791
  const activeViewportId = viewportGridService.getActiveViewportId();
10765
10792
 
10766
10793
  // Process each bidirectional measurement
@@ -10962,7 +10989,7 @@ function commandsModule({
10962
10989
  return;
10963
10990
  }
10964
10991
  if (!labelConfig) {
10965
- const label = await (0,default_src.callInputDialog)({
10992
+ const label = await (0,default_src/* callInputDialog */.l5)({
10966
10993
  uiDialogService,
10967
10994
  title: i18n_src/* default */.A.t('Tools:Edit Measurement Label'),
10968
10995
  placeholder: measurement.label || i18n_src/* default */.A.t('Tools:Enter new label'),
@@ -10976,7 +11003,7 @@ function commandsModule({
10976
11003
  }
10977
11004
  return;
10978
11005
  }
10979
- const val = await (0,default_src.callInputDialogAutoComplete)({
11006
+ const val = await (0,default_src/* callInputDialogAutoComplete */.fq)({
10980
11007
  measurement,
10981
11008
  uiDialogService,
10982
11009
  labelConfig,
@@ -11196,7 +11223,7 @@ function commandsModule({
11196
11223
  const labelConfig = customizationService.getCustomization('measurementLabels');
11197
11224
  const renderContent = customizationService.getCustomization('ui.labellingComponent');
11198
11225
  if (!labelConfig) {
11199
- const label = await (0,default_src.callInputDialog)({
11226
+ const label = await (0,default_src/* callInputDialog */.l5)({
11200
11227
  uiDialogService,
11201
11228
  title: i18n_src/* default */.A.t('Tools:Edit Arrow Text'),
11202
11229
  placeholder: data?.data?.label || i18n_src/* default */.A.t('Tools:Enter new text'),
@@ -11205,7 +11232,7 @@ function commandsModule({
11205
11232
  callback?.(label);
11206
11233
  return;
11207
11234
  }
11208
- const value = await (0,default_src.callInputDialogAutoComplete)({
11235
+ const value = await (0,default_src/* callInputDialogAutoComplete */.fq)({
11209
11236
  uiDialogService,
11210
11237
  labelConfig,
11211
11238
  renderContent
@@ -12101,7 +12128,7 @@ function commandsModule({
12101
12128
  segmentationService,
12102
12129
  viewportGridService
12103
12130
  } = servicesManager.services;
12104
- const displaySetInstanceUIDs = await (0,default_src.createReportAsync)({
12131
+ const displaySetInstanceUIDs = await (0,default_src/* createReportAsync */.Vy)({
12105
12132
  servicesManager,
12106
12133
  getReport: () => commandsManager.runCommand('storeSegmentation', args),
12107
12134
  reportType: 'Segmentation'
@@ -12178,14 +12205,15 @@ function commandsModule({
12178
12205
  * @param props.segmentationId - The ID of the segmentation to remove
12179
12206
  */
12180
12207
  removeSegmentationFromViewportCommand: ({
12181
- segmentationId
12208
+ segmentationId: displaySetInstanceUID
12182
12209
  }) => {
12183
12210
  const {
12184
- segmentationService,
12185
12211
  viewportGridService
12186
12212
  } = servicesManager.services;
12187
- segmentationService.removeSegmentationRepresentations(viewportGridService.getActiveViewportId(), {
12188
- segmentationId
12213
+ const viewportId = viewportGridService.getActiveViewportId();
12214
+ commandsManager.runCommand('removeDisplaySetLayer', {
12215
+ viewportId,
12216
+ displaySetInstanceUID
12189
12217
  });
12190
12218
  },
12191
12219
  /**
@@ -12213,7 +12241,7 @@ function commandsModule({
12213
12241
  return;
12214
12242
  }
12215
12243
  const segment = segmentation.segments[segmentIndex];
12216
- (0,default_src.callInputDialog)({
12244
+ (0,default_src/* callInputDialog */.l5)({
12217
12245
  uiDialogService,
12218
12246
  title: i18n_src/* default */.A.t('Tools:Edit Segment Label'),
12219
12247
  placeholder: i18n_src/* default */.A.t('Tools:Enter new label'),
@@ -12236,7 +12264,7 @@ function commandsModule({
12236
12264
  const {
12237
12265
  label
12238
12266
  } = segmentation;
12239
- (0,default_src.callInputDialog)({
12267
+ (0,default_src/* callInputDialog */.l5)({
12240
12268
  uiDialogService,
12241
12269
  title: i18n_src/* default */.A.t('Tools:Edit Segmentation Label'),
12242
12270
  placeholder: i18n_src/* default */.A.t('Tools:Enter new label'),
@@ -12266,7 +12294,7 @@ function commandsModule({
12266
12294
  a: color[3] / 255.0
12267
12295
  };
12268
12296
  uiDialogService.show({
12269
- content: default_src.colorPickerDialog,
12297
+ content: default_src/* colorPickerDialog */.wS,
12270
12298
  title: i18n_src/* default */.A.t('Tools:Segment Color'),
12271
12299
  contentProps: {
12272
12300
  value: rgbaColor,
@@ -15923,7 +15951,7 @@ function ViewportOrientationMenu({
15923
15951
  }) : null), /*#__PURE__*/react.createElement("div", {
15924
15952
  className: "flex-1 text-left"
15925
15953
  }, "Acquisition")), /*#__PURE__*/react.createElement("div", {
15926
- className: "mx-1 my-2 border-t border-white/20"
15954
+ className: "border-input mx-1 my-2 border-t"
15927
15955
  }), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
15928
15956
  variant: "ghost",
15929
15957
  className: "flex h-7 w-full flex-shrink-0 items-center justify-start self-stretch px-1 py-0",
@@ -16264,7 +16292,7 @@ function VolumeRenderingPresetsContent({
16264
16292
  }
16265
16293
  }, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ByName, {
16266
16294
  name: preset.name,
16267
- className: selectedPreset?.name === preset.name ? 'border-highlight h-[75px] w-[95px] max-w-none rounded border-2' : 'hover:border-highlight h-[75px] w-[95px] max-w-none rounded border-2 border-black'
16295
+ className: selectedPreset?.name === preset.name ? 'border-highlight h-[75px] w-[95px] max-w-none rounded border-2' : 'hover:border-highlight h-[75px] w-[95px] max-w-none rounded border-2 border-background'
16268
16296
  }), /*#__PURE__*/react.createElement("label", {
16269
16297
  className: "text-muted-foreground mt-1 text-left text-xs"
16270
16298
  }, formatLabel(preset.name, 11)))))), /*#__PURE__*/react.createElement(ui_next_src/* FooterAction */.esu, {
@@ -17410,9 +17438,9 @@ function ModalityLoadBadge({
17410
17438
  if (!statusInfo.isHydrated) {
17411
17439
  return /*#__PURE__*/react.createElement("div", {
17412
17440
  "data-cy": `ModalityLoadBadge-${viewportId}`,
17413
- className: "flex h-6 cursor-default text-sm leading-6 text-white"
17441
+ className: "text-foreground flex h-6 cursor-default text-sm leading-6"
17414
17442
  }, /*#__PURE__*/react.createElement("div", {
17415
- className: "bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
17443
+ className: "bg-popover flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
17416
17444
  }, /*#__PURE__*/react.createElement(StatusIcon, null), /*#__PURE__*/react.createElement("span", {
17417
17445
  className: "ml-1"
17418
17446
  }, statusInfo.type)), statusInfo.type !== 'SR' && /*#__PURE__*/react.createElement(ui_next_src/* ViewportActionButton */.N8H, {
@@ -19196,11 +19224,11 @@ class SegmentationService extends src/* PubSubService */.Rc {
19196
19224
  this.EVENTS = SegmentationService_EVENTS;
19197
19225
  this.destroy = () => {
19198
19226
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_MODIFIED, this._onSegmentationModifiedFromSource);
19199
- esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REMOVED, this._onSegmentationModifiedFromSource);
19227
+ esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REMOVED, this._onSegmentationRemovedFromSource);
19200
19228
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_DATA_MODIFIED, this._onSegmentationDataModifiedFromSource);
19201
19229
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_MODIFIED, this._onSegmentationRepresentationModifiedFromSource);
19202
19230
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_ADDED, this._onSegmentationRepresentationModifiedFromSource);
19203
- esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_REMOVED, this._onSegmentationRepresentationModifiedFromSource);
19231
+ esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_REMOVED, this._onSegmentationRepresentationRemovedFromSource);
19204
19232
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.SEGMENTATION_ADDED, this._onSegmentationAddedFromSource);
19205
19233
  this.reset();
19206
19234
  };
@@ -19261,6 +19289,16 @@ class SegmentationService extends src/* PubSubService */.Rc {
19261
19289
  viewportId
19262
19290
  });
19263
19291
  };
19292
+ this._onSegmentationRepresentationRemovedFromSource = evt => {
19293
+ const {
19294
+ segmentationId,
19295
+ viewportId
19296
+ } = evt.detail;
19297
+ this._broadcastEvent(this.EVENTS.SEGMENTATION_REPRESENTATION_REMOVED, {
19298
+ segmentationId,
19299
+ viewportId
19300
+ });
19301
+ };
19264
19302
  this._onSegmentationModifiedFromSource = evt => {
19265
19303
  const {
19266
19304
  segmentationId
@@ -19277,6 +19315,14 @@ class SegmentationService extends src/* PubSubService */.Rc {
19277
19315
  segmentationId
19278
19316
  });
19279
19317
  };
19318
+ this._onSegmentationRemovedFromSource = evt => {
19319
+ const {
19320
+ segmentationId
19321
+ } = evt.detail;
19322
+ this._broadcastEvent(this.EVENTS.SEGMENTATION_REMOVED, {
19323
+ segmentationId
19324
+ });
19325
+ };
19280
19326
  this._onAnnotationCutMergeProcessCompletedFromSource = evt => {
19281
19327
  const {
19282
19328
  segmentationId
@@ -20170,14 +20216,14 @@ class SegmentationService extends src/* PubSubService */.Rc {
20170
20216
  }
20171
20217
  /**
20172
20218
  * Clears segmentation representations from the viewport.
20173
- * Unlike removeSegmentationRepresentations, this doesn't update
20219
+ * Unlike removeRepresentationsFromViewport, this doesn't update
20174
20220
  * removed display set and representation maps.
20175
20221
  * We track removed segmentations manually to avoid re-adding them
20176
20222
  * when the display set is added again.
20177
20223
  * @param viewportId - The viewport ID to clear segmentation representations from.
20178
20224
  */
20179
20225
  clearSegmentationRepresentations(viewportId) {
20180
- this.removeSegmentationRepresentations(viewportId);
20226
+ this.removeRepresentationsFromViewport(viewportId);
20181
20227
  }
20182
20228
 
20183
20229
  /**
@@ -20192,7 +20238,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
20192
20238
  }
20193
20239
 
20194
20240
  /**
20195
- * It removes the segmentation representations from the viewport.
20241
+ * Removes segmentation representations from the viewport.
20196
20242
  * @param viewportId - The viewport id to remove the segmentation representations from.
20197
20243
  * @param specifier - The specifier to remove the segmentation representations.
20198
20244
  *
@@ -20202,7 +20248,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
20202
20248
  * If a type specifier is provided, only the segmentation representation with the specified type are removed.
20203
20249
  * If both a segmentationId and type specifier are provided, only the segmentation representation with the specified segmentationId and type are removed.
20204
20250
  */
20205
- removeSegmentationRepresentations(viewportId, specifier = {}) {
20251
+ removeRepresentationsFromViewport(viewportId, specifier = {}) {
20206
20252
  dist_esm.segmentation.removeSegmentationRepresentations(viewportId, specifier);
20207
20253
  }
20208
20254
 
@@ -20570,11 +20616,11 @@ class SegmentationService extends src/* PubSubService */.Rc {
20570
20616
  }
20571
20617
  _initSegmentationService() {
20572
20618
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_MODIFIED, this._onSegmentationModifiedFromSource);
20573
- esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REMOVED, this._onSegmentationModifiedFromSource);
20619
+ esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REMOVED, this._onSegmentationRemovedFromSource);
20574
20620
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_DATA_MODIFIED, this._onSegmentationDataModifiedFromSource);
20575
20621
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_MODIFIED, this._onSegmentationRepresentationModifiedFromSource);
20576
20622
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_ADDED, this._onSegmentationRepresentationModifiedFromSource);
20577
- esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_REMOVED, this._onSegmentationRepresentationModifiedFromSource);
20623
+ esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_REPRESENTATION_REMOVED, this._onSegmentationRepresentationRemovedFromSource);
20578
20624
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.SEGMENTATION_ADDED, this._onSegmentationAddedFromSource);
20579
20625
  esm.eventTarget.addEventListener(dist_esm.Enums.Events.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED, this._onAnnotationCutMergeProcessCompletedFromSource);
20580
20626
  }
@@ -23265,9 +23311,9 @@ const {
23265
23311
  denaturalizeDataset
23266
23312
  } = dcmjs_es/* default.data */.Ay.data.DicomMetaDictionary;
23267
23313
  const {
23268
- transferDenaturalizedDataset,
23269
- fixMultiValueKeys
23270
- } = default_src.dicomWebUtils;
23314
+ /* transferDenaturalizedDataset */ "If": transferDenaturalizedDataset,
23315
+ /* fixMultiValueKeys */ "Uk": fixMultiValueKeys
23316
+ } = default_src/* dicomWebUtils */.CA;
23271
23317
  const SOP_CLASS_UIDS = {
23272
23318
  VL_WHOLE_SLIDE_MICROSCOPY_IMAGE_STORAGE: '1.2.840.10008.5.1.4.1.1.77.1.6'
23273
23319
  };
@@ -23424,7 +23470,7 @@ function SegmentationUtilityButton(props) {
23424
23470
  isActive,
23425
23471
  id
23426
23472
  } = props;
23427
- const activeSegmentationUtility = (0,default_src.useUIStateStore)(store => store.uiState.activeSegmentationUtility);
23473
+ const activeSegmentationUtility = (0,default_src/* useUIStateStore */.FS)(store => store.uiState.activeSegmentationUtility);
23428
23474
  const toolButtonClassName = (0,ui_next_src.cn)('w-7 h-7 text-primary hover:text-primary hover:!bg-primary/30', className, isActive && 'bg-primary/30');
23429
23475
  const handleMouseDownCapture = (0,react.useCallback)(event => {
23430
23476
  if (activeSegmentationUtility === id) {
@@ -23555,7 +23601,7 @@ function PanelSegmentation({
23555
23601
  segmentationsWithRepresentations,
23556
23602
  disabled
23557
23603
  } = (0,useActiveViewportSegmentationRepresentations/* useActiveViewportSegmentationRepresentations */.c)();
23558
- const setUIState = (0,default_src.useUIStateStore)(store => store.setUIState);
23604
+ const setUIState = (0,default_src/* useUIStateStore */.FS)(store => store.setUIState);
23559
23605
 
23560
23606
  // useEffect for handling clicks on any of the non-active viewports.
23561
23607
  // The ViewportGrid stops the propagation of pointer/mouse events
@@ -23816,7 +23862,7 @@ function PanelSegmentation({
23816
23862
  IconContainer: components_SegmentationUtilityButton
23817
23863
  }, /*#__PURE__*/react.createElement("div", {
23818
23864
  className: "flex flex-wrap gap-[3px] bg-transparent pb-[2px] pl-[8px] pt-[6px]"
23819
- }, /*#__PURE__*/react.createElement(default_src.Toolbar, {
23865
+ }, /*#__PURE__*/react.createElement(default_src/* Toolbar */.M7, {
23820
23866
  buttonSection: buttonSection
23821
23867
  })));
23822
23868
  };
@@ -24343,12 +24389,12 @@ function DefaultAccordion(props) {
24343
24389
  if (!allChildren || !groups) {
24344
24390
  return null;
24345
24391
  }
24346
- if (Boolean(asChild)) {
24392
+ if (asChild) {
24347
24393
  return /*#__PURE__*/react.cloneElement(props.children, props);
24348
24394
  }
24349
24395
  return /*#__PURE__*/react.createElement(ui_next_src/* Accordion */.nD3, {
24350
24396
  type: grouping.type || 'multiple',
24351
- className: "text-white",
24397
+ className: "text-foreground",
24352
24398
  defaultValue: defaultValue
24353
24399
  }, [...groups.entries()].map(([key, group]) => {
24354
24400
  return /*#__PURE__*/react.createElement(ui_next_src/* AccordionItem */.AsP, {
@@ -24826,7 +24872,7 @@ function PanelMeasurement(props) {
24826
24872
  return EmptyComponent ? /*#__PURE__*/react.createElement(EmptyComponent, {
24827
24873
  items: displayMeasurements
24828
24874
  }) : /*#__PURE__*/react.createElement("span", {
24829
- className: "text-white"
24875
+ className: "text-foreground"
24830
24876
  }, "No Measurements");
24831
24877
  }
24832
24878
  if (children) {
@@ -24891,7 +24937,7 @@ const getPanelModule = ({
24891
24937
  } = (0,es/* useTranslation */.Bd)('SegmentationPanel');
24892
24938
  const tKey = `${props.segmentationRepresentationTypes?.[0] ?? 'Segmentation'} tools`;
24893
24939
  const tValue = t(tKey);
24894
- return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(default_src.Toolbox, {
24940
+ return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(default_src/* Toolbox */.OO, {
24895
24941
  buttonSectionId: toolSectionMap[props.segmentationRepresentationTypes?.[0]],
24896
24942
  title: tValue
24897
24943
  }), /*#__PURE__*/react.createElement(PanelSegmentation, {
@@ -25368,7 +25414,8 @@ const setUpSegmentationEventHandlers = ({
25368
25414
  const {
25369
25415
  segmentationService,
25370
25416
  customizationService,
25371
- displaySetService
25417
+ displaySetService,
25418
+ viewportGridService
25372
25419
  } = servicesManager.services;
25373
25420
  const {
25374
25421
  unsubscribe: unsubscribeSegmentationDataModifiedHandler
@@ -25413,12 +25460,42 @@ const setUpSegmentationEventHandlers = ({
25413
25460
  };
25414
25461
  displaySetService.addDisplaySets(segmentationDisplaySet);
25415
25462
  });
25463
+ const {
25464
+ unsubscribe: unsubscribeSegmentationRemoved
25465
+ } = segmentationService.subscribe(segmentationService.EVENTS.SEGMENTATION_REMOVED, ({
25466
+ segmentationId
25467
+ }) => {
25468
+ const displaySet = displaySetService.getDisplaySetByUID(segmentationId);
25469
+
25470
+ // Remove the display set layer from all viewports that have it
25471
+ if (displaySet) {
25472
+ const state = viewportGridService.getState();
25473
+ const viewports = state.viewports;
25474
+
25475
+ // Find all viewports that contain this segmentation's display set as a layer
25476
+ for (const [viewportId, viewport] of viewports.entries()) {
25477
+ const displaySetInstanceUIDs = viewport.displaySetInstanceUIDs || [];
25478
+ if (displaySetInstanceUIDs.includes(segmentationId)) {
25479
+ // Remove the display set layer from this viewport
25480
+ commandsManager.runCommand('removeDisplaySetLayer', {
25481
+ viewportId,
25482
+ displaySetInstanceUID: segmentationId
25483
+ });
25484
+ }
25485
+ }
25486
+
25487
+ // Delete the display set from the service if it was made in client
25488
+ if (displaySet.madeInClient) {
25489
+ displaySetService.deleteDisplaySet(segmentationId);
25490
+ }
25491
+ }
25492
+ });
25416
25493
  const {
25417
25494
  unsubscribeSelectedSegmentationsForViewportEvents
25418
25495
  } = setUpSelectedSegmentationsForViewportHandler({
25419
25496
  segmentationService
25420
25497
  });
25421
- const unsubscriptions = [unsubscribeSegmentationDataModifiedHandler, unsubscribeSegmentationModifiedHandler, unsubscribeSegmentationCreated, ...unsubscribeSelectedSegmentationsForViewportEvents];
25498
+ const unsubscriptions = [unsubscribeSegmentationDataModifiedHandler, unsubscribeSegmentationModifiedHandler, unsubscribeSegmentationCreated, unsubscribeSegmentationRemoved, ...unsubscribeSelectedSegmentationsForViewportEvents];
25422
25499
  return {
25423
25500
  unsubscriptions
25424
25501
  };
@@ -25442,6 +25519,9 @@ const setUpAnnotationEventHandlers = () => {
25442
25519
  };
25443
25520
  return [annotationInterpolationProcessCompletedUnsubscribe];
25444
25521
  };
25522
+ // EXTERNAL MODULE: ../../../node_modules/immutability-helper/index.js
25523
+ var immutability_helper = __webpack_require__(1752);
25524
+ var immutability_helper_default = /*#__PURE__*/__webpack_require__.n(immutability_helper);
25445
25525
  ;// ../../../extensions/cornerstone/src/components/MeasurementsMenu.tsx
25446
25526
 
25447
25527
 
@@ -25558,7 +25638,7 @@ function PanelAccordionTrigger(props) {
25558
25638
  }, /*#__PURE__*/react.createElement("button", {
25559
25639
  onClick: onClickDefault.bind(props)
25560
25640
  }, /*#__PURE__*/react.createElement("span", {
25561
- className: `inline-flex rounded-l border-r border-black ${isActive ? 'bg-highlight' : 'bg-muted'}`
25641
+ className: `inline-flex rounded-l border-r border-background ${isActive ? 'bg-highlight' : 'bg-muted'}`
25562
25642
  }, count !== undefined ? /*#__PURE__*/react.createElement("span", {
25563
25643
  className: "px-2"
25564
25644
  }, count) : null, colorHex && /*#__PURE__*/react.createElement(ui_next_src/* ColorCircle */.cd8, {
@@ -25806,6 +25886,7 @@ function src_extends() { return src_extends = Object.assign ? Object.assign.bind
25806
25886
 
25807
25887
 
25808
25888
 
25889
+
25809
25890
 
25810
25891
 
25811
25892
  const {
@@ -25819,7 +25900,7 @@ const OHIFCornerstoneViewport = props => {
25819
25900
  fallback: /*#__PURE__*/react.createElement("div", null, "Loading...")
25820
25901
  }, /*#__PURE__*/react.createElement(Component, props));
25821
25902
  };
25822
- const stackRetrieveOptions = {
25903
+ const DEFAULT_STACK_RETRIEVE_OPTIONS = {
25823
25904
  retrieveOptions: {
25824
25905
  single: {
25825
25906
  streaming: true,
@@ -25827,6 +25908,11 @@ const stackRetrieveOptions = {
25827
25908
  }
25828
25909
  }
25829
25910
  };
25911
+
25912
+ /** Normalize to immutability-helper spec: plain object → $merge, otherwise use as-is. */
25913
+ const toUpdateSpec = obj => obj != null && typeof obj === 'object' && Object.keys(obj).some(k => k.startsWith('$')) ? obj : {
25914
+ $merge: obj ?? {}
25915
+ };
25830
25916
  const unsubscriptions = [];
25831
25917
  /**
25832
25918
  *
@@ -25838,7 +25924,8 @@ const cornerstoneExtension = {
25838
25924
  id: id,
25839
25925
  onModeEnter: ({
25840
25926
  servicesManager,
25841
- commandsManager
25927
+ commandsManager,
25928
+ extensionManager
25842
25929
  }) => {
25843
25930
  const {
25844
25931
  cornerstoneViewportService,
@@ -25865,10 +25952,17 @@ const cornerstoneExtension = {
25865
25952
  // This interleaves images and replicates them for low-resolution depth volume
25866
25953
  // reconstruction, which progressively improves
25867
25954
  imageRetrieveMetadataProvider.add('volume', esm.ProgressiveRetrieveImages.interleavedRetrieveStages);
25868
- // The default stack loading option is to progressive load HTJ2K images
25869
- // There are other possible options, but these need more thought about
25870
- // how to define them.
25871
- imageRetrieveMetadataProvider.add('stack', stackRetrieveOptions);
25955
+
25956
+ /**
25957
+ * Stack retrieve options: read from active data source configuration.
25958
+ * Pass an immutability-helper spec (e.g. { $merge: {...} } or { $set: {...} }) in
25959
+ * stackRetrieveOptions to customize. Plain object is treated as $merge for backward compat.
25960
+ * Set streaming: false for uncompressed DICOM that requires full file before decode.
25961
+ */
25962
+ const sourceConfig = extensionManager?.getActiveDataSource?.()?.[0]?.getConfig?.() ?? {};
25963
+ const config = sourceConfig.stackRetrieveOptions ?? {};
25964
+ const stackOptions = immutability_helper_default()(DEFAULT_STACK_RETRIEVE_OPTIONS, toUpdateSpec(config));
25965
+ imageRetrieveMetadataProvider.add('stack', stackOptions);
25872
25966
  },
25873
25967
  getPanelModule: src_getPanelModule,
25874
25968
  onModeExit: ({
@@ -25892,7 +25986,7 @@ const cornerstoneExtension = {
25892
25986
  useLutPresentationStore/* useLutPresentationStore */.I.getState().clearLutPresentationStore();
25893
25987
  usePositionPresentationStore/* usePositionPresentationStore */.q.getState().clearPositionPresentationStore();
25894
25988
  useSynchronizersStore/* useSynchronizersStore */.U.getState().clearSynchronizersStore();
25895
- default_src.useToggleOneUpViewportGridStore.getState().clearToggleOneUpViewportGridStore();
25989
+ default_src/* useToggleOneUpViewportGridStore */.Yd.getState().clearToggleOneUpViewportGridStore();
25896
25990
  useSegmentationPresentationStore/* useSegmentationPresentationStore */.v.getState().clearSegmentationPresentationStore();
25897
25991
  useSelectedSegmentationsForViewportStore.getState().clearSelectedSegmentationsForViewportStore();
25898
25992
  segmentationService.removeAllSegmentations();
@@ -25983,10 +26077,10 @@ const cornerstoneExtension = {
25983
26077
 
25984
26078
  /* harmony default export */ const cornerstone_src = (cornerstoneExtension);
25985
26079
 
25986
- /***/ }),
26080
+ /***/ },
25987
26081
 
25988
- /***/ 71353:
25989
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26082
+ /***/ 71353
26083
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
25990
26084
 
25991
26085
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25992
26086
  /* harmony export */ cL: () => (/* binding */ reset),
@@ -26025,10 +26119,10 @@ const reset = () => {
26025
26119
  };
26026
26120
 
26027
26121
 
26028
- /***/ }),
26122
+ /***/ },
26029
26123
 
26030
- /***/ 46026:
26031
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26124
+ /***/ 46026
26125
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26032
26126
 
26033
26127
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26034
26128
  /* harmony export */ FG: () => (/* binding */ JOIN_STR),
@@ -26068,10 +26162,10 @@ const addUniqueIndex = (arr, key, viewports, isUpdatingSameViewport) => {
26068
26162
  };
26069
26163
 
26070
26164
 
26071
- /***/ }),
26165
+ /***/ },
26072
26166
 
26073
- /***/ 10182:
26074
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26167
+ /***/ 10182
26168
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26075
26169
 
26076
26170
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26077
26171
  /* harmony export */ I: () => (/* binding */ useLutPresentationStore)
@@ -26183,10 +26277,10 @@ const useLutPresentationStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__/* .creat
26183
26277
  name: 'LutPresentationStore'
26184
26278
  }) : createLutPresentationStore);
26185
26279
 
26186
- /***/ }),
26280
+ /***/ },
26187
26281
 
26188
- /***/ 44646:
26189
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26282
+ /***/ 44646
26283
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26190
26284
 
26191
26285
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26192
26286
  /* harmony export */ q: () => (/* binding */ usePositionPresentationStore)
@@ -26294,10 +26388,10 @@ const usePositionPresentationStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__/* .
26294
26388
  name: 'PositionPresentationStore'
26295
26389
  }) : createPositionPresentationStore);
26296
26390
 
26297
- /***/ }),
26391
+ /***/ },
26298
26392
 
26299
- /***/ 2847:
26300
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26393
+ /***/ 2847
26394
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26301
26395
 
26302
26396
 
26303
26397
  // EXPORTS
@@ -26503,10 +26597,10 @@ const useSegmentationPresentationStore = (0,esm/* create */.vt)()(DEBUG_STORE ?
26503
26597
  name: 'Segmentation Presentation Store'
26504
26598
  }) : createSegmentationPresentationStore);
26505
26599
 
26506
- /***/ }),
26600
+ /***/ },
26507
26601
 
26508
- /***/ 68578:
26509
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26602
+ /***/ 68578
26603
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26510
26604
 
26511
26605
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26512
26606
  /* harmony export */ U: () => (/* binding */ useSynchronizersStore)
@@ -26567,6 +26661,6 @@ const useSynchronizersStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__/* .create
26567
26661
  name: 'SynchronizersStore'
26568
26662
  }) : createSynchronizersStore);
26569
26663
 
26570
- /***/ })
26664
+ /***/ }
26571
26665
 
26572
26666
  }]);