@ohif/app 3.9.0-beta.2 → 3.9.0-beta.21

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 (46) hide show
  1. package/dist/{117.bundle.a80b1511ef4b302fb7cc.js → 117.bundle.772ce244eee25d9b7316.js} +50 -15
  2. package/dist/{121.bundle.a6063e0272df61cefccc.js → 121.bundle.b582314ec0024fdf2d15.js} +1 -0
  3. package/dist/{164.bundle.1da1cadb56951caef1d6.js → 164.bundle.3221590f5e6855086889.js} +318 -41
  4. package/dist/{236.bundle.4ca7987e1d57f60ec13a.js → 236.bundle.d3a631d79ee8952e3c60.js} +388 -55
  5. package/dist/{188.bundle.b31173cb165eb21c3ec6.js → 243.bundle.866dc990219240efa81f.js} +8 -8
  6. package/dist/{325.bundle.47f5b8a085837ee6b512.js → 325.bundle.d8bf863ddebb832dcaab.js} +10 -11
  7. package/dist/{342.bundle.340982440de15f540a89.js → 342.bundle.67c49f2e52829a5696a4.js} +7 -0
  8. package/dist/{473.bundle.6cd4be953853f35b29c3.js → 367.bundle.6a0746aeca702ae6eba6.js} +279 -29
  9. package/dist/{806.bundle.50e039eb624382ee1fce.js → 370.bundle.baa389d217c390b0e92b.js} +81 -10
  10. package/dist/{206.bundle.e98e6ba9bfd9f36dc508.js → 390.bundle.504391bda56219cc9ef9.js} +37 -26
  11. package/dist/{448.bundle.94a6da9fac68fc69f8c2.js → 448.bundle.67539d1552db51aaca85.js} +2 -2
  12. package/dist/{483.bundle.a353efc5a5dd563c903c.js → 483.bundle.016de3c3ec209d9fa42a.js} +16 -3
  13. package/dist/{487.bundle.71a2893d94d214741e13.js → 487.bundle.3f0e64e16189f92fcebc.js} +2 -2
  14. package/dist/{35.bundle.0168d78bfad0cb784112.js → 501.bundle.7d5003758fa3ffbb344b.js} +750 -247
  15. package/dist/{530.bundle.207b38c15c4c01e4db0e.js → 530.bundle.17b9a34fefff133e5379.js} +3 -3
  16. package/dist/{544.bundle.b005b8c8b9b08aaa3324.js → 544.bundle.4d1fb477b572f50f4220.js} +3 -3
  17. package/dist/{321.bundle.07e853e559665d6e15b6.js → 550.bundle.41e6a1eacc49db2358c5.js} +50 -19
  18. package/dist/{574.bundle.88b619217339b5e93d3e.js → 574.bundle.0bcd9d70f4b1eea48082.js} +35 -32
  19. package/dist/{41.bundle.faaf3b05d1083e3c8831.js → 682.bundle.066197792e6a0d01b669.js} +26 -6
  20. package/dist/{699.bundle.8210579412d62beafa91.js → 699.bundle.428f20dd60662f1e5edd.js} +32 -3
  21. package/dist/{669.bundle.84745782e36f25eb05bc.js → 721.bundle.d21827d733e8811e0b18.js} +73 -73
  22. package/dist/{722.bundle.2547630541b670f10d6e.js → 722.bundle.1242e0348afc63ca4f5e.js} +10 -4
  23. package/dist/{724.bundle.519141a0c4d0d1a3192a.js → 776.bundle.981d8227b59f97f11dd8.js} +17 -12
  24. package/dist/{862.bundle.4a0bd82b803ba158018f.js → 862.bundle.7a102f04ef4d12686894.js} +1 -1
  25. package/dist/{889.bundle.9fbab4f0bbf643306879.js → 889.bundle.ed8937ba0c5455ed894d.js} +8 -8
  26. package/dist/{905.bundle.7e940707e10096970ca1.js → 905.bundle.b101088a20887c27945d.js} +2 -2
  27. package/dist/{907.bundle.f5aa0414d0f77e575a1f.js → 907.bundle.e8d22a858051cd255c9c.js} +2 -2
  28. package/dist/{94.bundle.ecaaba845625d93bad6b.js → 94.bundle.b4f45b237188a8550a35.js} +38 -8
  29. package/dist/{961.bundle.ff7da8afd7d8495d0bbe.js → 961.bundle.b86b71c712fa83e526d3.js} +2 -2
  30. package/dist/{7.bundle.3a17fe8266b2149334a6.js → 981.bundle.7b03f5a200c7dbcbaf1d.js} +10 -9
  31. package/dist/{594.bundle.01b124740b2b3f8a6d20.js → 989.bundle.e81da55a6954a12e5ea1.js} +5 -5
  32. package/dist/{633.bundle.ff1a1d0bdb0d1ef143af.js → 998.bundle.37015da90e590043cda0.js} +7 -7
  33. package/dist/app-config.js +5 -1
  34. package/dist/{app.bundle.c53b289734d5f7178a39.js → app.bundle.a6bfec031243c17f92e9.js} +686 -555
  35. package/dist/app.bundle.css +1 -1
  36. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  37. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  38. package/dist/google.js +1 -0
  39. package/dist/index.html +1 -1
  40. package/dist/{polySeg.bundle.1799686b019040500219.js → polySeg.bundle.b0392069f29e128b4efa.js} +3 -3
  41. package/dist/{suv-peak-worker.bundle.25f8b85eab9ec06da48d.js → suv-peak-worker.bundle.f823d84fae4ce6865f9a.js} +3 -3
  42. package/dist/sw.js +1 -1
  43. package/package.json +20 -19
  44. /package/dist/{321.css → 550.css} +0 -0
  45. /package/dist/{783.bundle.86c38ee55f4d01b111ca.js → 783.bundle.c5b7e2433ecb9d8e2541.js} +0 -0
  46. /package/dist/{633.css → 998.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[188],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[243],{
3
3
 
4
- /***/ 99188:
4
+ /***/ 5243:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -22,8 +22,8 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
22
22
 
23
23
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
24
  var react = __webpack_require__(41766);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
26
- var src = __webpack_require__(55411);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
+ var src = __webpack_require__(8633);
27
27
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
28
28
  var dcmjs_es = __webpack_require__(31426);
29
29
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/loadRTStruct.js
@@ -252,12 +252,12 @@ function _setROIContourRTROIObservations(ROIContourData, RTROIObservationsSequen
252
252
  function _toArray(objOrArray) {
253
253
  return Array.isArray(objOrArray) ? objOrArray : [objOrArray];
254
254
  }
255
- ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/getSopClassHandlerModule.js
255
+ ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/getSopClassHandlerModule.ts
256
256
 
257
257
 
258
258
 
259
259
  const sopClassUids = ['1.2.840.10008.5.1.4.1.1.481.3'];
260
- let loadPromises = {};
260
+ const loadPromises = {};
261
261
  function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) {
262
262
  const instance = instances[0];
263
263
  const {
@@ -313,9 +313,9 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager)
313
313
  displaySet.referencedSeriesInstanceUID = referencedSeries.SeriesInstanceUID;
314
314
  displaySet.getReferenceDisplaySet = () => {
315
315
  const {
316
- DisplaySetService
316
+ displaySetService
317
317
  } = servicesManager.services;
318
- const referencedDisplaySets = DisplaySetService.getDisplaySetsForSeries(displaySet.referencedSeriesInstanceUID);
318
+ const referencedDisplaySets = displaySetService.getDisplaySetsForSeries(displaySet.referencedSeriesInstanceUID);
319
319
  if (!referencedDisplaySets || referencedDisplaySets.length === 0) {
320
320
  throw new Error('Referenced DisplaySet is missing for the RT');
321
321
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[325,481],{
3
3
 
4
- /***/ 219:
4
+ /***/ 84222:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
 
@@ -603,7 +603,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
603
603
  });
604
604
  }
605
605
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewSeries = (promptTrackNewSeries);
606
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewStudy.js
606
+ ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewStudy.ts
607
607
 
608
608
  const promptTrackNewStudy_RESPONSE = {
609
609
  NO_NEVER: -1,
@@ -618,9 +618,8 @@ function promptTrackNewStudy({
618
618
  extensionManager
619
619
  }, ctx, evt) {
620
620
  const {
621
- UIViewportDialogService
621
+ uiViewportDialogService
622
622
  } = servicesManager.services;
623
- const appConfig = extensionManager._appConfig;
624
623
  // When the state change happens after a promise, the state machine sends the retult in evt.data;
625
624
  // In case of direct transition to the state, the state machine sends the data in evt;
626
625
  const {
@@ -629,9 +628,9 @@ function promptTrackNewStudy({
629
628
  SeriesInstanceUID
630
629
  } = evt.data || evt;
631
630
  return new Promise(async function (resolve, reject) {
632
- let promptResult = appConfig?.disableConfirmationPrompts ? promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES : await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
631
+ let promptResult = await promptTrackNewStudy_askTrackMeasurements(uiViewportDialogService, viewportId);
633
632
  if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
634
- promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
633
+ promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(uiViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
635
634
  }
636
635
  resolve({
637
636
  userResponse: promptResult,
@@ -716,7 +715,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
716
715
  }
717
716
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
718
717
  // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
719
- var default_src = __webpack_require__(7206);
718
+ var default_src = __webpack_require__(47390);
720
719
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
721
720
  const MIN_SR_SERIES_NUMBER = 4700;
722
721
  function getNextSRSeriesNumber(displaySetService) {
@@ -806,7 +805,7 @@ async function promptSaveReport({
806
805
  }
807
806
  /* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
808
807
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 14 modules
809
- var cornerstone_dicom_sr_src = __webpack_require__(61669);
808
+ var cornerstone_dicom_sr_src = __webpack_require__(14721);
810
809
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
811
810
 
812
811
 
@@ -1239,7 +1238,7 @@ __webpack_require__.d(__webpack_exports__, {
1239
1238
  });
1240
1239
 
1241
1240
  // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 13 modules
1242
- var getContextModule = __webpack_require__(219);
1241
+ var getContextModule = __webpack_require__(84222);
1243
1242
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1244
1243
  var react = __webpack_require__(41766);
1245
1244
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
@@ -1249,8 +1248,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1249
1248
  var dist = __webpack_require__(37396);
1250
1249
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1251
1250
  var es = __webpack_require__(80619);
1252
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
1253
- var src = __webpack_require__(55411);
1251
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
1252
+ var src = __webpack_require__(8633);
1254
1253
  // EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
1255
1254
  var ui_src = __webpack_require__(5085);
1256
1255
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
@@ -796,6 +796,7 @@ var MeasurementReport$1 = /*#__PURE__*/function () {
796
796
  // Merge the derived dataset with the content from the Measurement Report
797
797
  report.dataset = Object.assign(report.dataset, contentItem);
798
798
  report.dataset._meta = _meta;
799
+ report.dataset.SpecificCharacterSet = "ISO_IR 192";
799
800
  return report;
800
801
  }
801
802
 
@@ -2408,6 +2409,7 @@ function fillSegmentation$1(segmentation, inputLabelmaps3D) {
2408
2409
  Value: ["1.2.840.10008.1.2.5"],
2409
2410
  vr: "UI"
2410
2411
  };
2412
+ segmentation.dataset.SpecificCharacterSet = "ISO_IR 192";
2411
2413
  segmentation.dataset._vrMap.PixelData = "OB";
2412
2414
  segmentation.dataset.PixelData = rleEncodedFrames;
2413
2415
  } else {
@@ -2441,6 +2443,7 @@ function _createSegFromImages(images, isMultiframe, options) {
2441
2443
  var dicomData = DicomMessage.readFile(arrayBuffer);
2442
2444
  var dataset = DicomMetaDictionary$2.naturalizeDataset(dicomData.dict);
2443
2445
  dataset._meta = DicomMetaDictionary$2.namifyDataset(dicomData.meta);
2446
+ dataset.SpecificCharacterSet = "ISO_IR 192";
2444
2447
  datasets.push(dataset);
2445
2448
  } else {
2446
2449
  for (var i = 0; i < images.length; i++) {
@@ -2449,6 +2452,7 @@ function _createSegFromImages(images, isMultiframe, options) {
2449
2452
  var _dicomData = DicomMessage.readFile(_arrayBuffer);
2450
2453
  var _dataset = DicomMetaDictionary$2.naturalizeDataset(_dicomData.dict);
2451
2454
  _dataset._meta = DicomMetaDictionary$2.namifyDataset(_dicomData.meta);
2455
+ _dataset.SpecificCharacterSet = "ISO_IR 192";
2452
2456
  datasets.push(_dataset);
2453
2457
  }
2454
2458
  }
@@ -3810,6 +3814,7 @@ var MeasurementReport = /** @class */ (function () {
3810
3814
  // Merge the derived dataset with the content from the Measurement Report
3811
3815
  report.dataset = Object.assign(report.dataset, contentItem);
3812
3816
  report.dataset._meta = _meta;
3817
+ report.SpecificCharacterSet = "ISO_IR 192";
3813
3818
  return report;
3814
3819
  };
3815
3820
  /**
@@ -5327,6 +5332,7 @@ function generateRTSSFromSegmentations(segmentations, metadataProvider, DicomMet
5327
5332
  }
5328
5333
  };
5329
5334
  dataset._meta = _meta;
5335
+ dataset.SpecificCharacterSet = "ISO_IR 192";
5330
5336
  return dataset;
5331
5337
  }
5332
5338
  /**
@@ -5378,6 +5384,7 @@ function generateRTSSFromAnnotations(annotations, metadataProvider, DicomMetadat
5378
5384
  }
5379
5385
  };
5380
5386
  dataset._meta = _meta;
5387
+ dataset.SpecificCharacterSet = "ISO_IR 192";
5381
5388
  return dataset;
5382
5389
  }
5383
5390
  // /**
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[473],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[367],{
3
3
 
4
4
  /***/ 52454:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -293,6 +293,102 @@ class AnnotationFrameRange {
293
293
  }
294
294
 
295
295
 
296
+ /***/ }),
297
+
298
+ /***/ 25781:
299
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
300
+
301
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
302
+ /* harmony export */ i: () => (/* binding */ annotationHydration),
303
+ /* harmony export */ x: () => (/* binding */ getClosestImageIdForStackViewport)
304
+ /* harmony export */ });
305
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(92136);
306
+ /* harmony import */ var _stateManagement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(95778);
307
+ /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44753);
308
+
309
+
310
+
311
+ function annotationHydration(viewport, toolName, worldPoints, options) {
312
+ const viewReference = viewport.getViewReference();
313
+ const { viewPlaneNormal, FrameOfReferenceUID } = viewReference;
314
+ const annotation = {
315
+ annotationUID: options?.annotationUID || _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.uuidv4(),
316
+ data: {
317
+ handles: {
318
+ points: worldPoints,
319
+ },
320
+ },
321
+ highlighted: false,
322
+ autoGenerated: false,
323
+ invalidated: false,
324
+ isLocked: false,
325
+ isVisible: true,
326
+ metadata: {
327
+ toolName,
328
+ viewPlaneNormal,
329
+ FrameOfReferenceUID,
330
+ referencedImageId: getReferencedImageId(viewport, worldPoints[0], viewPlaneNormal),
331
+ ...options,
332
+ },
333
+ };
334
+ (0,_stateManagement__WEBPACK_IMPORTED_MODULE_1__/* .addAnnotation */ .lC)(annotation, viewport.element);
335
+ return annotation;
336
+ }
337
+ function getReferencedImageId(viewport, worldPos, viewPlaneNormal) {
338
+ let referencedImageId;
339
+ if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.StackViewport) {
340
+ referencedImageId = getClosestImageIdForStackViewport(viewport, worldPos, viewPlaneNormal);
341
+ }
342
+ else if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.BaseVolumeViewport) {
343
+ const targetId = getTargetId(viewport);
344
+ const volumeId = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.getVolumeId(targetId);
345
+ const imageVolume = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getVolume(volumeId);
346
+ referencedImageId = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.getClosestImageId(imageVolume, worldPos, viewPlaneNormal);
347
+ }
348
+ else {
349
+ throw new Error('getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport');
350
+ }
351
+ return referencedImageId;
352
+ }
353
+ function getTargetId(viewport) {
354
+ const targetId = viewport.getReferenceId?.();
355
+ if (targetId) {
356
+ return targetId;
357
+ }
358
+ if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.BaseVolumeViewport) {
359
+ return `volumeId:${getTargetVolumeId(viewport)}`;
360
+ }
361
+ throw new Error('getTargetId: viewport must have a getTargetId method');
362
+ }
363
+ function getTargetVolumeId(viewport) {
364
+ const actorEntries = viewport.getActors();
365
+ if (!actorEntries) {
366
+ return;
367
+ }
368
+ return actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')?.uid;
369
+ }
370
+ function getClosestImageIdForStackViewport(viewport, worldPos, viewPlaneNormal) {
371
+ const imageIds = viewport.getImageIds();
372
+ if (!imageIds || !imageIds.length) {
373
+ return;
374
+ }
375
+ const distanceImagePairs = imageIds.map((imageId) => {
376
+ const { imagePositionPatient } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.metaData.get('imagePlaneModule', imageId);
377
+ const distance = calculateDistanceToImage(worldPos, imagePositionPatient, viewPlaneNormal);
378
+ return { imageId, distance };
379
+ });
380
+ distanceImagePairs.sort((a, b) => a.distance - b.distance);
381
+ return distanceImagePairs[0].imageId;
382
+ }
383
+ function calculateDistanceToImage(worldPos, ImagePositionPatient, viewPlaneNormal) {
384
+ const dir = gl_matrix__WEBPACK_IMPORTED_MODULE_2__/* .vec3.create */ .eR.create();
385
+ gl_matrix__WEBPACK_IMPORTED_MODULE_2__/* .vec3.sub */ .eR.sub(dir, worldPos, ImagePositionPatient);
386
+ const dot = gl_matrix__WEBPACK_IMPORTED_MODULE_2__/* .vec3.dot */ .eR.dot(dir, viewPlaneNormal);
387
+ return Math.abs(dot);
388
+ }
389
+
390
+
391
+
296
392
  /***/ }),
297
393
 
298
394
  /***/ 42290:
@@ -2214,6 +2310,8 @@ __webpack_require__.d(__webpack_exports__, {
2214
2310
  Calculator: () => (/* reexport */ basic_Calculator)
2215
2311
  });
2216
2312
 
2313
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
2314
+ var esm = __webpack_require__(92136);
2217
2315
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/basic/Calculator.js
2218
2316
  class Calculator {
2219
2317
  }
@@ -2221,55 +2319,73 @@ class Calculator {
2221
2319
 
2222
2320
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/basic/BasicStatsCalculator.js
2223
2321
 
2322
+
2323
+ const { PointsManager } = esm.utilities;
2224
2324
  class BasicStatsCalculator extends basic_Calculator {
2225
2325
  static { this.max = [-Infinity]; }
2326
+ static { this.min = [Infinity]; }
2226
2327
  static { this.sum = [0]; }
2227
- static { this.sumSquares = [0]; }
2228
- static { this.squaredDiffSum = [0]; }
2229
2328
  static { this.count = 0; }
2230
- static { this.statsCallback = ({ value: newValue }) => {
2329
+ static { this.runMean = [0]; }
2330
+ static { this.m2 = [0]; }
2331
+ static { this.pointsInShape = PointsManager.create3(1024); }
2332
+ static statsInit(options) {
2333
+ if (options.noPointsCollection) {
2334
+ BasicStatsCalculator.pointsInShape = null;
2335
+ }
2336
+ }
2337
+ static { this.statsCallback = ({ value: newValue, pointLPS = null }) => {
2231
2338
  if (Array.isArray(newValue) &&
2232
2339
  newValue.length > 1 &&
2233
2340
  this.max.length === 1) {
2234
2341
  this.max.push(this.max[0], this.max[0]);
2342
+ this.min.push(this.min[0], this.min[0]);
2235
2343
  this.sum.push(this.sum[0], this.sum[0]);
2236
- this.sumSquares.push(this.sumSquares[0], this.sumSquares[0]);
2237
- this.squaredDiffSum.push(this.squaredDiffSum[0], this.squaredDiffSum[0]);
2344
+ this.runMean.push(0, 0);
2345
+ this.m2.push(this.m2[0], this.m2[0]);
2238
2346
  }
2347
+ this.pointsInShape?.push(pointLPS);
2239
2348
  const newArray = Array.isArray(newValue) ? newValue : [newValue];
2240
2349
  this.count += 1;
2241
- this.max.forEach((it, idx) => (this.max[idx] = Math.max(it, newArray[idx])));
2242
- this.sum.map((it, idx) => (this.sum[idx] += newArray[idx]));
2243
- this.sumSquares.map((it, idx) => (this.sumSquares[idx] += newArray[idx] ** 2));
2244
- this.squaredDiffSum.map((it, idx) => (this.squaredDiffSum[idx] += Math.pow(newArray[idx] - this.sum[idx] / this.count, 2)));
2350
+ this.max.map((it, idx) => {
2351
+ const value = newArray[idx];
2352
+ const delta = value - this.runMean[idx];
2353
+ this.sum[idx] += value;
2354
+ this.runMean[idx] += delta / this.count;
2355
+ const delta2 = value - this.runMean[idx];
2356
+ this.m2[idx] += delta * delta2;
2357
+ this.min[idx] = Math.min(this.min[idx], value);
2358
+ this.max[idx] = Math.max(it, value);
2359
+ });
2245
2360
  }; }
2246
- static { this.getStatistics = () => {
2361
+ static { this.getStatistics = (options) => {
2247
2362
  const mean = this.sum.map((sum) => sum / this.count);
2248
- const stdDev = this.squaredDiffSum.map((squaredDiffSum) => Math.sqrt(squaredDiffSum / this.count));
2249
- const stdDevWithSumSquare = this.sumSquares.map((it, idx) => Math.sqrt(this.sumSquares[idx] / this.count - mean[idx] ** 2));
2363
+ const stdDev = this.m2.map((squaredDiffSum) => Math.sqrt(squaredDiffSum / this.count));
2364
+ const unit = options?.unit || null;
2250
2365
  const named = {
2251
2366
  max: {
2252
2367
  name: 'max',
2253
2368
  label: 'Max Pixel',
2254
2369
  value: singleArrayAsNumber(this.max),
2255
- unit: null,
2370
+ unit,
2371
+ },
2372
+ min: {
2373
+ name: 'min',
2374
+ label: 'Min Pixel',
2375
+ value: singleArrayAsNumber(this.min),
2376
+ unit,
2256
2377
  },
2257
2378
  mean: {
2258
2379
  name: 'mean',
2259
2380
  label: 'Mean Pixel',
2260
2381
  value: singleArrayAsNumber(mean),
2261
- unit: null,
2382
+ unit,
2262
2383
  },
2263
2384
  stdDev: {
2264
2385
  name: 'stdDev',
2265
2386
  label: 'Standard Deviation',
2266
2387
  value: singleArrayAsNumber(stdDev),
2267
- unit: null,
2268
- },
2269
- stdDevWithSumSquare: {
2270
- name: 'stdDevWithSumSquare',
2271
- value: singleArrayAsNumber(stdDevWithSumSquare),
2272
- unit: null,
2388
+ unit,
2273
2389
  },
2274
2390
  count: {
2275
2391
  name: 'count',
@@ -2277,14 +2393,17 @@ class BasicStatsCalculator extends basic_Calculator {
2277
2393
  value: this.count,
2278
2394
  unit: null,
2279
2395
  },
2396
+ pointsInShape: this.pointsInShape,
2280
2397
  array: [],
2281
2398
  };
2282
- named.array.push(named.max, named.mean, named.stdDev, named.stdDevWithSumSquare, named.count);
2399
+ named.array.push(named.max, named.mean, named.stdDev, named.stdDev, named.count);
2283
2400
  this.max = [-Infinity];
2401
+ this.min = [Infinity];
2284
2402
  this.sum = [0];
2285
- this.sumSquares = [0];
2286
- this.squaredDiffSum = [0];
2403
+ this.m2 = [0];
2404
+ this.runMean = [0];
2287
2405
  this.count = 0;
2406
+ this.pointsInShape = PointsManager.create3(1024);
2288
2407
  return named;
2289
2408
  }; }
2290
2409
  }
@@ -6968,14 +7087,145 @@ __webpack_require__.r(__webpack_exports__);
6968
7087
 
6969
7088
  /***/ }),
6970
7089
 
6971
- /***/ 10413:
7090
+ /***/ 14149:
6972
7091
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6973
7092
 
7093
+ // ESM COMPAT FLAG
6974
7094
  __webpack_require__.r(__webpack_exports__);
6975
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6976
- /* harmony export */ colorbar: () => (/* reexport module object */ _colorbar__WEBPACK_IMPORTED_MODULE_0__)
6977
- /* harmony export */ });
6978
- /* harmony import */ var _colorbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64690);
7095
+
7096
+ // EXPORTS
7097
+ __webpack_require__.d(__webpack_exports__, {
7098
+ colorbar: () => (/* reexport */ colorbar),
7099
+ windowLevel: () => (/* reexport */ windowlevel_namespaceObject)
7100
+ });
7101
+
7102
+ // NAMESPACE OBJECT: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/index.js
7103
+ var windowlevel_namespaceObject = {};
7104
+ __webpack_require__.r(windowlevel_namespaceObject);
7105
+ __webpack_require__.d(windowlevel_namespaceObject, {
7106
+ calculateMinMaxMean: () => (calculateMinMaxMean),
7107
+ extractWindowLevelRegionToolData: () => (extractWindowLevelRegionToolData),
7108
+ getLuminanceFromRegion: () => (getLuminanceFromRegion)
7109
+ });
7110
+
7111
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/colorbar/index.js
7112
+ var colorbar = __webpack_require__(64690);
7113
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/getLuminanceFromRegion.js
7114
+ function getLuminanceFromRegion(imageData, x, y, width, height) {
7115
+ const luminance = [];
7116
+ let index = 0;
7117
+ const pixelData = imageData.scalarData;
7118
+ let spIndex, row, column;
7119
+ if (imageData.color) {
7120
+ for (row = 0; row < height; row++) {
7121
+ for (column = 0; column < width; column++) {
7122
+ spIndex = ((row + y) * imageData.columns + (column + x)) * 4;
7123
+ const red = pixelData[spIndex];
7124
+ const green = pixelData[spIndex + 1];
7125
+ const blue = pixelData[spIndex + 2];
7126
+ luminance[index++] = 0.2126 * red + 0.7152 * green + 0.0722 * blue;
7127
+ }
7128
+ }
7129
+ }
7130
+ else {
7131
+ for (row = 0; row < height; row++) {
7132
+ for (column = 0; column < width; column++) {
7133
+ spIndex = (row + y) * imageData.columns + (column + x);
7134
+ luminance[index++] = pixelData[spIndex];
7135
+ }
7136
+ }
7137
+ }
7138
+ return luminance;
7139
+ }
7140
+
7141
+
7142
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/calculateMinMaxMean.js
7143
+ function calculateMinMaxMean(pixelLuminance, globalMin, globalMax) {
7144
+ const numPixels = pixelLuminance.length;
7145
+ let min = globalMax;
7146
+ let max = globalMin;
7147
+ let sum = 0;
7148
+ if (numPixels < 2) {
7149
+ return {
7150
+ min,
7151
+ max,
7152
+ mean: (globalMin + globalMax) / 2,
7153
+ };
7154
+ }
7155
+ for (let index = 0; index < numPixels; index++) {
7156
+ const spv = pixelLuminance[index];
7157
+ min = Math.min(min, spv);
7158
+ max = Math.max(max, spv);
7159
+ sum += spv;
7160
+ }
7161
+ return {
7162
+ min,
7163
+ max,
7164
+ mean: sum / numPixels,
7165
+ };
7166
+ }
7167
+
7168
+
7169
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
7170
+ var esm = __webpack_require__(92136);
7171
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js
7172
+
7173
+ function extractWindowLevelRegionToolData(viewport) {
7174
+ if (viewport instanceof esm.VolumeViewport) {
7175
+ return extractImageDataVolume(viewport);
7176
+ }
7177
+ if (viewport instanceof esm.StackViewport) {
7178
+ return extractImageDataStack(viewport);
7179
+ }
7180
+ throw new Error('Viewport not supported');
7181
+ }
7182
+ function extractImageDataVolume(viewport) {
7183
+ const { scalarData, width, height } = esm.utilities.getCurrentVolumeViewportSlice(viewport);
7184
+ const { min: minPixelValue, max: maxPixelValue } = esm.utilities.getMinMax(scalarData);
7185
+ const volumeId = viewport.getVolumeId();
7186
+ const volume = esm.cache.getVolume(volumeId);
7187
+ const { metadata, cornerstoneImageMetaData } = volume;
7188
+ const { Rows: rows, Columns: columns } = metadata;
7189
+ const { color } = cornerstoneImageMetaData;
7190
+ return {
7191
+ scalarData,
7192
+ width,
7193
+ height,
7194
+ minPixelValue,
7195
+ maxPixelValue,
7196
+ rows,
7197
+ columns,
7198
+ color,
7199
+ };
7200
+ }
7201
+ function extractImageDataStack(viewport) {
7202
+ const imageData = viewport.getImageData();
7203
+ const { scalarData } = imageData;
7204
+ const { min: minPixelValue, max: maxPixelValue } = esm.utilities.getMinMax(scalarData);
7205
+ const width = imageData.dimensions[0];
7206
+ const height = imageData.dimensions[1];
7207
+ const { rows, columns, color } = viewport.getCornerstoneImage();
7208
+ return {
7209
+ scalarData,
7210
+ width,
7211
+ height,
7212
+ minPixelValue,
7213
+ maxPixelValue,
7214
+ rows,
7215
+ columns,
7216
+ color,
7217
+ };
7218
+ }
7219
+
7220
+
7221
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/index.js
7222
+
7223
+
7224
+
7225
+
7226
+
7227
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/index.js
7228
+
6979
7229
 
6980
7230
 
6981
7231