@ohif/app 3.12.0-beta.90 → 3.12.0-beta.92

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 (45) hide show
  1. package/dist/{1037.bundle.87a5adb8c92bd5bf53f5.js → 1037.bundle.dd9098a9a640f0d0ef0f.js} +129 -96
  2. package/dist/{1608.bundle.3d904bc76f5d5f78ff21.js → 1608.bundle.f855c4bdb7f00eb66fca.js} +1 -1
  3. package/dist/{1903.bundle.f0505c6e927d0bef5589.js → 1903.bundle.9a291597f23ebaa3371c.js} +49 -47
  4. package/dist/{1604.bundle.4f01a6b0b8d5b1cbc294.js → 1933.bundle.a5d41c04da5425d06694.js} +13 -26
  5. package/dist/{2018.bundle.59c7c4cb3f79f63bab68.js → 2018.bundle.4527f2b0c1c8ff75f568.js} +18 -43
  6. package/dist/{306.bundle.f9faa2b3cdd7e86b5869.js → 306.bundle.a0af0889477845729c6a.js} +23 -1
  7. package/dist/{3461.bundle.458597198f24359ec78f.js → 3461.bundle.3cac685ef19f883a0f9d.js} +27 -8
  8. package/dist/{4019.bundle.1be1cdd0805ad2c59d65.js → 4019.bundle.03029c488a02493cb7f3.js} +17 -1
  9. package/dist/{2518.bundle.644302643ac0790e7374.js → 4033.bundle.1609f8751de2a6aff280.js} +457 -303
  10. package/dist/{4819.bundle.f187a4c0517c85e37ab0.js → 4819.bundle.14344bf9acf5c5f6d123.js} +3 -3
  11. package/dist/{5028.bundle.6003ab9178779929462f.js → 5028.bundle.c61b7cd88172e2d589d5.js} +2 -2
  12. package/dist/{5400.bundle.c3a3fe8867efa2edfa94.js → 5400.bundle.428fdd2dc347a7fda9e6.js} +96 -92
  13. package/dist/5457.bundle.af893cd38fdaeafd5c2a.js +89 -0
  14. package/dist/{5485.bundle.2ee096f57ff7e51d4c23.js → 5485.bundle.929d9add8bdf90a4f3c7.js} +8 -0
  15. package/dist/{5802.bundle.8922caf16c088b10cdb0.js → 5802.bundle.756d2ed511c06ee8b461.js} +2 -2
  16. package/dist/{6991.bundle.46bc04720d99fbb06785.js → 6991.bundle.7d091de815571097b96e.js} +8 -10
  17. package/dist/{7412.bundle.34fe5e72833e857edc0a.js → 7412.bundle.dfe01ae3e53107abe53d.js} +80 -57
  18. package/dist/{8305.bundle.8ea926425cdffaf84fe3.js → 8305.bundle.08ba73235df90e099838.js} +75 -55
  19. package/dist/{8558.bundle.c9ffb4f942dbbbff1849.js → 8558.bundle.705446f4883e84021bf4.js} +29 -11
  20. package/dist/{8583.bundle.7715397a42e8f00a9e3e.js → 8583.bundle.0288cadf5cf8401446b1.js} +12 -13
  21. package/dist/{874.bundle.92ddc54408fef9debee7.js → 874.bundle.7e543ec9343c9a718e3d.js} +35 -42
  22. package/dist/{3613.bundle.6157004e0592003c0800.js → 8802.bundle.4958d8ba1d0d521a002a.js} +131 -76
  23. package/dist/{9548.bundle.7be4f24aeadd0ad4f16c.js → 9195.bundle.70afccd0f802b78c279a.js} +75 -104
  24. package/dist/{9845.bundle.7e4db5e31b28d73fdac2.js → 9845.bundle.0d22f2210c1d5ac18882.js} +1 -1
  25. package/dist/{app.bundle.bdd8a45996ed4ca28560.js → app.bundle.2b7e40349f89ffdfd96c.js} +1055 -219
  26. package/dist/{compute.bundle.f3ca9fb0e7ce9e885b9c.js → compute.bundle.4c0ef8b919cbe5eef44d.js} +3 -3
  27. package/dist/index.html +1 -1
  28. package/dist/{polySeg.bundle.7b8d1bb21d442a48da1d.js → polySeg.bundle.75f37f2780c5375e161e.js} +3 -3
  29. package/dist/sw.js +1 -1
  30. package/package.json +22 -22
  31. package/dist/5457.bundle.535bae0c872c1ca0c2cb.js +0 -1358
  32. /package/dist/{1459.bundle.0481573ae1bde12b24ee.js → 1459.bundle.c4acfc6df383fc187e9e.js} +0 -0
  33. /package/dist/{147.bundle.6fc65a239d1ae1c6a918.js → 147.bundle.c191ca0b67633f707aff.js} +0 -0
  34. /package/dist/{1515.bundle.73d415797a677ae5261e.js → 1515.bundle.3f81b326242dd945ecdb.js} +0 -0
  35. /package/dist/{1604.css → 1933.css} +0 -0
  36. /package/dist/{213.bundle.9b152cd4d202cae43af2.js → 213.bundle.33092c23ffe1d81ae242.js} +0 -0
  37. /package/dist/{2243.bundle.25ca9faa6d0776355adf.js → 2243.bundle.e37c80996a222167dc14.js} +0 -0
  38. /package/dist/{2424.bundle.57b7484a3b1b1e5a1722.js → 2424.bundle.45583fc64208a2821aa3.js} +0 -0
  39. /package/dist/{319.bundle.4ea0dbcfeb553c900206.js → 319.bundle.febb2a63634488c11db6.js} +0 -0
  40. /package/dist/{6027.bundle.06ab1f1cd27f93f826e5.js → 6027.bundle.b2942a0dd2c583374d7b.js} +0 -0
  41. /package/dist/{7431.bundle.55dd86000e66bee467e2.js → 7431.bundle.b80819b8eb28d2ee897d.js} +0 -0
  42. /package/dist/{7639.bundle.a89f4a8c6e8b2593d7a4.js → 7639.bundle.2ad4b6cd132d87439fa6.js} +0 -0
  43. /package/dist/{85.bundle.f3a9149485e3fcf652f0.js → 85.bundle.a772983604a0f9514e33.js} +0 -0
  44. /package/dist/{9862.bundle.0456a2d473895bf2916e.js → 9862.bundle.eca4ea8821bb040a44c1.js} +0 -0
  45. /package/dist/{9927.bundle.d7051dac659d827d62d3.js → 9927.bundle.775cb41458de4c28a9ba.js} +0 -0
@@ -306,12 +306,12 @@ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-
306
306
  const id = package_namespaceObject.UU;
307
307
  const SOPClassHandlerName = 'dynamic-volume';
308
308
 
309
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
310
+ var esm = __webpack_require__(4667);
311
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
312
+ var dist_esm = __webpack_require__(15327);
309
313
  // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
310
314
  var src = __webpack_require__(42356);
311
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
312
- var esm = __webpack_require__(15327);
313
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
314
- var dist_esm = __webpack_require__(4667);
315
315
  ;// ../../../extensions/cornerstone-dynamic-volume/src/actions/updateSegmentationsChartDisplaySet.ts
316
316
 
317
317
 
@@ -323,7 +323,7 @@ const SEG_CHART_INSTANCE_UID = src/* utils */.Wp.guid();
323
323
  const ChartDataSOPClassUid = '1.9.451.13215.7.3.2.7.6.1';
324
324
  const {
325
325
  utilities: csToolsUtils
326
- } = dist_esm;
326
+ } = esm;
327
327
  function _getDateTimeStr() {
328
328
  const now = new Date();
329
329
  const date = now.getFullYear() + ('0' + now.getUTCMonth()).slice(-2) + ('0' + now.getUTCDate()).slice(-2);
@@ -429,7 +429,7 @@ function _getSegmentationData(segmentation, volumesTimePointsCache, {
429
429
  // const referencedDynamicVolume = cs.cache.getVolume(dynamic4DDisplaySet.displaySetInstanceUID);
430
430
  let volumeCacheKey;
431
431
  const volumeId = dynamic4DDisplaySet.displaySetInstanceUID;
432
- for (const [key] of esm.cache._volumeCache) {
432
+ for (const [key] of dist_esm.cache._volumeCache) {
433
433
  if (key.includes(volumeId)) {
434
434
  volumeCacheKey = key;
435
435
  break;
@@ -437,7 +437,7 @@ function _getSegmentationData(segmentation, volumesTimePointsCache, {
437
437
  }
438
438
  let referencedDynamicVolume;
439
439
  if (volumeCacheKey) {
440
- referencedDynamicVolume = esm.cache.getVolume(volumeCacheKey);
440
+ referencedDynamicVolume = dist_esm.cache.getVolume(volumeCacheKey);
441
441
  }
442
442
  const {
443
443
  StudyInstanceUID,
@@ -460,7 +460,7 @@ function _getSegmentationData(segmentation, volumesTimePointsCache, {
460
460
  // );
461
461
  const viewportId = viewportGridService.getActiveViewportId();
462
462
  const color = segmentationService.getSegmentColor(viewportId, segmentation.segmentationId, 1);
463
- const hexColor = esm.utilities.color.rgbToHex(color[0], color[1], color[2]);
463
+ const hexColor = dist_esm.utilities.color.rgbToHex(color[0], color[1], color[2]);
464
464
  let timePointsData = volumesTimePointsCache.get(referencedDynamicVolume);
465
465
  if (!timePointsData) {
466
466
  timePointsData = _getTimePointsData(referencedDynamicVolume);
@@ -576,7 +576,10 @@ function updateSegmentationsChartDisplaySet({
576
576
 
577
577
 
578
578
 
579
- const LABELMAP = dist_esm.Enums.SegmentationRepresentations.Labelmap;
579
+
580
+ const {
581
+ downloadCsv
582
+ } = src/* utils */.Wp;
580
583
  const commandsModule = ({
581
584
  commandsManager,
582
585
  servicesManager
@@ -610,8 +613,6 @@ const commandsModule = ({
610
613
  },
611
614
  exportTimeReportCSV: ({
612
615
  segmentations,
613
- config,
614
- options,
615
616
  summaryStats
616
617
  }) => {
617
618
  const dynamic4DDisplaySet = actions.getDynamic4DDisplaySet();
@@ -622,7 +623,7 @@ const commandsModule = ({
622
623
  // so we can't do cache._volumeCache.get(volumeId) we should iterate
623
624
  // over the keys and find the one that includes the volumeId
624
625
  let volumeCacheKey;
625
- for (const [key] of esm.cache._volumeCache) {
626
+ for (const [key] of dist_esm.cache._volumeCache) {
626
627
  if (key.includes(volumeId)) {
627
628
  volumeCacheKey = key;
628
629
  break;
@@ -630,7 +631,7 @@ const commandsModule = ({
630
631
  }
631
632
  let dynamicVolume;
632
633
  if (volumeCacheKey) {
633
- dynamicVolume = esm.cache.getVolume(volumeCacheKey);
634
+ dynamicVolume = dist_esm.cache.getVolume(volumeCacheKey);
634
635
  }
635
636
  const instance = dynamic4DDisplaySet.instances[0];
636
637
  const csv = [];
@@ -658,7 +659,7 @@ const commandsModule = ({
658
659
  // Iterate through each segmentation to get the timeData and ijkCoords
659
660
  segmentations.forEach(segmentation => {
660
661
  const volume = segmentationService.getLabelmapVolume(segmentation.segmentationId);
661
- const [timeData, ijkCoords] = dist_esm.utilities.dynamicVolume.getDataInTime(dynamicVolume, {
662
+ const [timeData, ijkCoords] = esm.utilities.dynamicVolume.getDataInTime(dynamicVolume, {
662
663
  maskVolumeId: volume.volumeId
663
664
  });
664
665
  if (summaryStats) {
@@ -762,17 +763,9 @@ const commandsModule = ({
762
763
 
763
764
  // Generate filename and trigger download
764
765
  const filename = `${instance.PatientID}.csv`;
765
- const blob = new Blob([csvContent], {
766
- type: 'text/csv;charset=utf-8;'
766
+ downloadCsv(csvContent, {
767
+ filename
767
768
  });
768
- const link = document.createElement('a');
769
- const url = URL.createObjectURL(blob);
770
- link.setAttribute('href', url);
771
- link.setAttribute('download', filename);
772
- link.style.visibility = 'hidden';
773
- document.body.appendChild(link);
774
- link.click();
775
- document.body.removeChild(link);
776
769
  },
777
770
  swapDynamicWithComputedDisplaySet: ({
778
771
  displaySet
@@ -1008,7 +1001,7 @@ const DynamicVolumeControls = ({
1008
1001
  onDynamicClick
1009
1002
  }) => {
1010
1003
  const [computedView, setComputedView] = (0,react.useState)(false);
1011
- const [computeViewMode, setComputeViewMode] = (0,react.useState)(esm.Enums.DynamicOperatorType.SUM);
1004
+ const [computeViewMode, setComputeViewMode] = (0,react.useState)(dist_esm.Enums.DynamicOperatorType.SUM);
1012
1005
 
1013
1006
  // Wrapper for onGenerate to handle potential errors
1014
1007
  const handleGenerate = () => {
@@ -1080,15 +1073,15 @@ const DynamicVolumeControls = ({
1080
1073
  }, /*#__PURE__*/react.createElement(ui_next_src/* TabsList */.j7C, {
1081
1074
  className: "w-full gap-1"
1082
1075
  }, ' ', /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
1083
- value: String(esm.Enums.DynamicOperatorType.SUM),
1076
+ value: String(dist_esm.Enums.DynamicOperatorType.SUM),
1084
1077
  className: "w-1/3"
1085
- }, toUpperCaseString(esm.Enums.DynamicOperatorType.SUM)), /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
1086
- value: String(esm.Enums.DynamicOperatorType.AVERAGE),
1078
+ }, toUpperCaseString(dist_esm.Enums.DynamicOperatorType.SUM)), /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
1079
+ value: String(dist_esm.Enums.DynamicOperatorType.AVERAGE),
1087
1080
  className: "w-1/3"
1088
- }, toUpperCaseString(esm.Enums.DynamicOperatorType.AVERAGE)), /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
1089
- value: String(esm.Enums.DynamicOperatorType.SUBTRACT),
1081
+ }, toUpperCaseString(dist_esm.Enums.DynamicOperatorType.AVERAGE)), /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
1082
+ value: String(dist_esm.Enums.DynamicOperatorType.SUBTRACT),
1090
1083
  className: "w-1/3"
1091
- }, toUpperCaseString(esm.Enums.DynamicOperatorType.SUBTRACT)))), /*#__PURE__*/react.createElement("div", {
1084
+ }, toUpperCaseString(dist_esm.Enums.DynamicOperatorType.SUBTRACT)))), /*#__PURE__*/react.createElement("div", {
1092
1085
  className: "mt-2 w-full"
1093
1086
  }, /*#__PURE__*/react.createElement(ui_next_src/* Numeric */.ewR.Container, {
1094
1087
  mode: "doubleRange",
@@ -1203,7 +1196,7 @@ function PanelGenerateImage({
1203
1196
  const [displayingComputed, setDisplayingComputed] = (0,react.useState)(false);
1204
1197
 
1205
1198
  //
1206
- const uuidComputedVolume = (0,react.useRef)(esm.utilities.uuidv4());
1199
+ const uuidComputedVolume = (0,react.useRef)(dist_esm.utilities.uuidv4());
1207
1200
  const uuidDynamicVolume = (0,react.useRef)(null);
1208
1201
  const computedVolumeId = `cornerstoneStreamingImageVolume:${uuidComputedVolume.current}`;
1209
1202
  (0,react.useEffect)(() => {
@@ -1234,13 +1227,13 @@ function PanelGenerateImage({
1234
1227
  };
1235
1228
  }, [cornerstoneViewportService, cineService, servicesManager.services.cineService]);
1236
1229
  (0,react.useEffect)(() => {
1237
- const evt = esm.Enums.Events.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED;
1230
+ const evt = dist_esm.Enums.Events.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED;
1238
1231
  const callback = evt => {
1239
1232
  setDimensionGroupNumberRendered(evt.detail.dimensionGroupNumber);
1240
1233
  };
1241
- esm.eventTarget.addEventListener(evt, callback);
1234
+ dist_esm.eventTarget.addEventListener(evt, callback);
1242
1235
  return () => {
1243
- esm.eventTarget.removeEventListener(evt, callback);
1236
+ dist_esm.eventTarget.removeEventListener(evt, callback);
1244
1237
  };
1245
1238
  }, []);
1246
1239
  (0,react.useEffect)(() => {
@@ -1253,7 +1246,7 @@ function PanelGenerateImage({
1253
1246
  if (!dynamicVolumeDisplaySet) {
1254
1247
  return;
1255
1248
  }
1256
- const dynamicVolume = esm.cache.getVolumes().find(volume => volume.volumeId.includes(dynamicVolumeDisplaySet.displaySetInstanceUID));
1249
+ const dynamicVolume = dist_esm.cache.getVolumes().find(volume => volume.volumeId.includes(dynamicVolumeDisplaySet.displaySetInstanceUID));
1257
1250
  if (!dynamicVolume) {
1258
1251
  return;
1259
1252
  }
@@ -1278,9 +1271,9 @@ function PanelGenerateImage({
1278
1271
  if (!dynamicVolumeId) {
1279
1272
  return;
1280
1273
  }
1281
- let computedVolume = esm.cache.getVolume(computedVolumeId);
1274
+ let computedVolume = dist_esm.cache.getVolume(computedVolumeId);
1282
1275
  if (!computedVolume) {
1283
- computedVolume = await esm.volumeLoader.createAndCacheDerivedVolume(dynamicVolumeId, {
1276
+ computedVolume = await dist_esm.volumeLoader.createAndCacheDerivedVolume(dynamicVolumeId, {
1284
1277
  volumeId: computedVolumeId
1285
1278
  });
1286
1279
  }
@@ -1293,7 +1286,7 @@ function PanelGenerateImage({
1293
1286
  dimensionGroupNumbers: operationName === 'SUBTRACT' ? [start, end] : frameNumbers,
1294
1287
  targetVolume: computedVolume
1295
1288
  };
1296
- dist_esm.utilities.dynamicVolume.updateVolumeFromTimeData(dynamicVolume, operationName, options);
1289
+ esm.utilities.dynamicVolume.updateVolumeFromTimeData(dynamicVolume, operationName, options);
1297
1290
 
1298
1291
  // If computed display set does not exist, create an object to be used as
1299
1292
  // the displaySet. If it does exist, update the image data and vtkTexture
@@ -1407,8 +1400,8 @@ function WorkflowPanel({
1407
1400
 
1408
1401
 
1409
1402
 
1410
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 141 modules
1411
- var default_src = __webpack_require__(39548);
1403
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 139 modules
1404
+ var default_src = __webpack_require__(39195);
1412
1405
  // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
1413
1406
  var cornerstone_src = __webpack_require__(71903);
1414
1407
  ;// ../../../extensions/cornerstone-dynamic-volume/src/panels/DynamicExport.tsx
@@ -2131,7 +2124,7 @@ const dynamicVolumeExtension = {
2131
2124
  configuration = {}
2132
2125
  }) => {
2133
2126
  // TODO: look for the right fix
2134
- esm.cache.setMaxCacheSize(5 * 1024 * 1024 * 1024);
2127
+ dist_esm.cache.setMaxCacheSize(5 * 1024 * 1024 * 1024);
2135
2128
  },
2136
2129
  /**
2137
2130
  * PanelModule should provide a list of panels that will be available in OHIF
@@ -1,4 +1,4 @@
1
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[3613],{
1
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[8802],{
2
2
 
3
3
  /***/ 86871:
4
4
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -23676,7 +23676,20 @@ var MetadataModules;
23676
23676
  MetadataModules["SOP_COMMON"] = "sopCommonModule";
23677
23677
  MetadataModules["ULTRASOUND_ENHANCED_REGION"] = "ultrasoundEnhancedRegionModule";
23678
23678
  MetadataModules["VOI_LUT"] = "voiLutModule";
23679
+ MetadataModules["FRAME_MODULE"] = "frameModule";
23679
23680
  MetadataModules["WADO_WEB_CLIENT"] = "wadoWebClient";
23681
+ MetadataModules["INSTANCE"] = "instance";
23682
+ MetadataModules["IMAGE_SOP_INSTANCE_REFERENCE"] = "ImageSopInstanceReference";
23683
+ MetadataModules["REFERENCED_SERIES_REFERENCE"] = "ReferencedSeriesReference";
23684
+ MetadataModules["PREDECESSOR_SEQUENCE"] = "PredecessorSequence";
23685
+ MetadataModules["STUDY_DATA"] = "StudyData";
23686
+ MetadataModules["SERIES_DATA"] = "SeriesData";
23687
+ MetadataModules["IMAGE_DATA"] = "ImageData";
23688
+ MetadataModules["RTSS_INSTANCE_DATA"] = "RtssInstanceData";
23689
+ MetadataModules["NEW_INSTANCE_DATA"] = "NewInstanceData";
23690
+ MetadataModules["RTSS_CONTOUR"] = "metaRTSSContour";
23691
+ MetadataModules["SEG_BIT"] = "metaSegBitmap";
23692
+ MetadataModules["SR_ANNOTATION"] = "metaSrAnnotation";
23680
23693
  })(MetadataModules || (MetadataModules = {}));
23681
23694
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MetadataModules);
23682
23695
 
@@ -32961,8 +32974,11 @@ __webpack_require__.r(__webpack_exports__);
32961
32974
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32962
32975
  /* harmony export */ addProvider: () => (/* binding */ addProvider),
32963
32976
  /* harmony export */ get: () => (/* binding */ getMetaData),
32977
+ /* harmony export */ getNormalized: () => (/* binding */ getNormalized),
32964
32978
  /* harmony export */ removeAllProviders: () => (/* binding */ removeAllProviders),
32965
- /* harmony export */ removeProvider: () => (/* binding */ removeProvider)
32979
+ /* harmony export */ removeProvider: () => (/* binding */ removeProvider),
32980
+ /* harmony export */ toLowerCamelTag: () => (/* binding */ toLowerCamelTag),
32981
+ /* harmony export */ toUpperCamelTag: () => (/* binding */ toUpperCamelTag)
32966
32982
  /* harmony export */ });
32967
32983
  const providers = [];
32968
32984
  function addProvider(provider, priority = 0) {
@@ -32998,6 +33014,46 @@ function getMetaData(type, ...queries) {
32998
33014
  }
32999
33015
  }
33000
33016
  }
33017
+ function getNormalized(imageId, types, metaDataProvider = getMetaData) {
33018
+ const result = {};
33019
+ for (const t of types) {
33020
+ try {
33021
+ const data = metaDataProvider(t, imageId);
33022
+ if (data) {
33023
+ const capitalizedData = {};
33024
+ for (const key in data) {
33025
+ if (key in data) {
33026
+ const capitalizedKey = toUpperCamelTag(key);
33027
+ capitalizedData[capitalizedKey] = data[key];
33028
+ }
33029
+ }
33030
+ Object.assign(result, capitalizedData);
33031
+ }
33032
+ }
33033
+ catch (error) {
33034
+ console.error(`Error retrieving ${t} data:`, error);
33035
+ }
33036
+ }
33037
+ return result;
33038
+ }
33039
+ const toUpperCamelTag = (tag) => {
33040
+ if (tag.startsWith('sop')) {
33041
+ return `SOP${tag.substring(3)}`;
33042
+ }
33043
+ if (tag.endsWith('Id')) {
33044
+ tag = `${tag.substring(0, tag.length - 2)}ID`;
33045
+ }
33046
+ return tag.charAt(0).toUpperCase() + tag.slice(1);
33047
+ };
33048
+ const toLowerCamelTag = (tag) => {
33049
+ if (tag.startsWith('SOP')) {
33050
+ return `sop${tag.substring(3)}`;
33051
+ }
33052
+ if (tag.endsWith('ID')) {
33053
+ tag = `${tag.substring(0, tag.length - 2)}Id`;
33054
+ }
33055
+ return tag.charAt(0).toLowerCase() + tag.slice(1);
33056
+ };
33001
33057
 
33002
33058
 
33003
33059
 
@@ -34469,7 +34525,7 @@ function uuidv4() {
34469
34525
 
34470
34526
  "use strict";
34471
34527
  /* unused harmony export version */
34472
- const version = '4.11.2';
34528
+ const version = '4.11.3';
34473
34529
 
34474
34530
 
34475
34531
  /***/ }),
@@ -37460,7 +37516,7 @@ function getSurfaceRepresentationUID(segmentationId, segmentIndex) {
37460
37516
 
37461
37517
  "use strict";
37462
37518
  /* unused harmony export default */
37463
- /* harmony import */ var _utilities_contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6936);
37519
+ /* harmony import */ var _utilities_contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19111);
37464
37520
  /* harmony import */ var _annotation_annotationState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82056);
37465
37521
  /* harmony import */ var _getSegmentation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33283);
37466
37522
  /* harmony import */ var _extractSegmentPolylines__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(96629);
@@ -37814,7 +37870,7 @@ function removeCompleteContourAnnotation(annotation) {
37814
37870
 
37815
37871
  "use strict";
37816
37872
  /* unused harmony export default */
37817
- /* harmony import */ var _utilities_contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6936);
37873
+ /* harmony import */ var _utilities_contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19111);
37818
37874
  /* harmony import */ var _annotation_annotationState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82056);
37819
37875
  /* harmony import */ var _getSegmentation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33283);
37820
37876
  /* harmony import */ var _extractSegmentPolylines__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(96629);
@@ -38879,25 +38935,6 @@ BaseTool.toolName = 'BaseTool';
38879
38935
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BaseTool);
38880
38936
 
38881
38937
 
38882
- /***/ }),
38883
-
38884
- /***/ 85817:
38885
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38886
-
38887
- "use strict";
38888
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
38889
- /* harmony export */ EC: () => (/* reexport safe */ _AnnotationTool__WEBPACK_IMPORTED_MODULE_1__.A),
38890
- /* harmony export */ oS: () => (/* reexport safe */ _BaseTool__WEBPACK_IMPORTED_MODULE_0__.A)
38891
- /* harmony export */ });
38892
- /* harmony import */ var _BaseTool__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37234);
38893
- /* harmony import */ var _AnnotationTool__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91350);
38894
- /* harmony import */ var _AnnotationDisplayTool__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6030);
38895
-
38896
-
38897
-
38898
-
38899
-
38900
-
38901
38938
  /***/ }),
38902
38939
 
38903
38940
  /***/ 25894:
@@ -39027,14 +39064,20 @@ function _checkContourGeometryMatchViewport(geometryIds, viewportNormal) {
39027
39064
  return false;
39028
39065
  }
39029
39066
  const contours = geometryData.contours;
39030
- const points = contours[0].points;
39031
- const point1 = points[0];
39032
- const point2 = points[1];
39033
- const point3 = points[2];
39034
- let normal = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.cross */ .eR.cross(gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create(), gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.sub */ .eR.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create(), point2, point1), gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.sub */ .eR.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create(), point3, point1));
39035
- normal = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create(), normal);
39036
- const dotProduct = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.dot */ .eR.dot(normal, viewportNormal);
39037
- return Math.abs(dotProduct) > 0.9;
39067
+ const { points } = contours[0];
39068
+ const [point] = points;
39069
+ const delta = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create();
39070
+ const { length } = points;
39071
+ const increment = Math.ceil(length / 25);
39072
+ for (let i = 1; i < length; i += increment) {
39073
+ const point2 = points[i];
39074
+ gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.sub */ .eR.sub(delta, point, point2);
39075
+ gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.normalize */ .eR.normalize(delta, delta);
39076
+ if (gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.dot */ .eR.dot(viewportNormal, delta) > 0.1) {
39077
+ return false;
39078
+ }
39079
+ }
39080
+ return true;
39038
39081
  }
39039
39082
  function _checkContourNormalsMatchViewport(annotationUIDsMap, viewportNormal) {
39040
39083
  const annotationUIDs = Array.from(annotationUIDsMap.values())
@@ -41681,6 +41724,58 @@ function cleanupPolylines(polylines) {
41681
41724
  }
41682
41725
 
41683
41726
 
41727
+ /***/ }),
41728
+
41729
+ /***/ 29632:
41730
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
41731
+
41732
+ "use strict";
41733
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
41734
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
41735
+ /* harmony export */ });
41736
+ /* harmony import */ var _RectangleROIStartEndThreshold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(109);
41737
+
41738
+ function validateAnnotation(annotation) {
41739
+ if (!annotation?.data) {
41740
+ throw new Error('Tool data is empty');
41741
+ }
41742
+ if (!annotation.metadata || !annotation.metadata.referencedImageId) {
41743
+ throw new Error('Tool data is not associated with any imageId');
41744
+ }
41745
+ }
41746
+ class AnnotationToPointData {
41747
+ static { this.TOOL_NAMES = {}; }
41748
+ constructor() {
41749
+ }
41750
+ static convert(annotation, segment, metadataProvider) {
41751
+ validateAnnotation(annotation);
41752
+ const { toolName } = annotation.metadata;
41753
+ const toolClass = AnnotationToPointData.TOOL_NAMES[toolName];
41754
+ if (!toolClass) {
41755
+ throw new Error(`Unknown tool type: ${toolName}, cannot convert to RTSSReport`);
41756
+ }
41757
+ const contourSequence = toolClass.getContourSequence(annotation, metadataProvider);
41758
+ const color = segment.color?.slice(0, 3) || [
41759
+ Math.floor(Math.random() * 255),
41760
+ Math.floor(Math.random() * 255),
41761
+ Math.floor(Math.random() * 255),
41762
+ ];
41763
+ return {
41764
+ ReferencedROINumber: segment.segmentIndex,
41765
+ ROIDisplayColor: color,
41766
+ ContourSequence: Array.isArray(contourSequence)
41767
+ ? contourSequence
41768
+ : [contourSequence],
41769
+ };
41770
+ }
41771
+ static register(toolClass) {
41772
+ AnnotationToPointData.TOOL_NAMES[toolClass.toolName] = toolClass;
41773
+ }
41774
+ }
41775
+ AnnotationToPointData.register(_RectangleROIStartEndThreshold__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A);
41776
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AnnotationToPointData);
41777
+
41778
+
41684
41779
  /***/ }),
41685
41780
 
41686
41781
  /***/ 93843:
@@ -41791,7 +41886,7 @@ function getContourHolesDataWorld(annotation) {
41791
41886
 
41792
41887
  /***/ }),
41793
41888
 
41794
- /***/ 6936:
41889
+ /***/ 19111:
41795
41890
  /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
41796
41891
 
41797
41892
  "use strict";
@@ -42048,48 +42143,8 @@ async function generateContourSetsFromLabelmap({ segmentations }) {
42048
42143
  }
42049
42144
 
42050
42145
 
42051
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/RectangleROIStartEndThreshold.js
42052
- var RectangleROIStartEndThreshold = __webpack_require__(109);
42053
- ;// ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/AnnotationToPointData.js
42054
-
42055
- function validateAnnotation(annotation) {
42056
- if (!annotation?.data) {
42057
- throw new Error('Tool data is empty');
42058
- }
42059
- if (!annotation.metadata || annotation.metadata.referencedImageId) {
42060
- throw new Error('Tool data is not associated with any imageId');
42061
- }
42062
- }
42063
- class AnnotationToPointData {
42064
- static { this.TOOL_NAMES = {}; }
42065
- constructor() {
42066
- }
42067
- static convert(annotation, index, metadataProvider) {
42068
- validateAnnotation(annotation);
42069
- const { toolName } = annotation.metadata;
42070
- const toolClass = AnnotationToPointData.TOOL_NAMES[toolName];
42071
- if (!toolClass) {
42072
- throw new Error(`Unknown tool type: ${toolName}, cannot convert to RTSSReport`);
42073
- }
42074
- const ContourSequence = toolClass.getContourSequence(annotation, metadataProvider);
42075
- const color = [
42076
- Math.floor(Math.random() * 255),
42077
- Math.floor(Math.random() * 255),
42078
- Math.floor(Math.random() * 255),
42079
- ];
42080
- return {
42081
- ReferencedROINumber: index + 1,
42082
- ROIDisplayColor: color,
42083
- ContourSequence,
42084
- };
42085
- }
42086
- static register(toolClass) {
42087
- AnnotationToPointData.TOOL_NAMES[toolClass.toolName] = toolClass;
42088
- }
42089
- }
42090
- AnnotationToPointData.register(RectangleROIStartEndThreshold/* default */.A);
42091
- /* harmony default export */ const contours_AnnotationToPointData = ((/* unused pure expression or super */ null && (AnnotationToPointData)));
42092
-
42146
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/AnnotationToPointData.js
42147
+ var AnnotationToPointData = __webpack_require__(29632);
42093
42148
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/getContourHolesDataWorld.js
42094
42149
  var getContourHolesDataWorld = __webpack_require__(55659);
42095
42150
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/getContourHolesDataCanvas.js
@@ -43342,7 +43397,7 @@ async function calculateForVolume({ segmentationIds, segmentIndex }) {
43342
43397
 
43343
43398
  "use strict";
43344
43399
  /* unused harmony export default */
43345
- /* harmony import */ var _contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6936);
43400
+ /* harmony import */ var _contours__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19111);
43346
43401
  /* harmony import */ var _findLargestBidirectional__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60199);
43347
43402
  /* harmony import */ var _getOrCreateSegmentationVolume__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30722);
43348
43403