@ohif/app 3.11.0-beta.26 → 3.11.0-beta.27

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 (31) hide show
  1. package/dist/{2482.bundle.1fa6683414a09105dabc.js → 2482.bundle.949c140004140a0b8c4c.js} +83 -57
  2. package/dist/{2860.bundle.40fcae6d9eb5d5555090.js → 2860.bundle.aa229be90d30fe16d24a.js} +6 -6
  3. package/dist/{3901.bundle.41b8609da5cf97d100b8.js → 3901.bundle.ccc865838983a2005e2c.js} +31 -11
  4. package/dist/{6066.bundle.89df990e4f257e8ac73b.js → 6066.bundle.5abfb40e96a66bc6c59a.js} +19 -14
  5. package/dist/{662.bundle.7df74563b644953ece3d.js → 662.bundle.b6c80d15be908d1670fc.js} +2 -2
  6. package/dist/{7639.bundle.3cf2ebb64722054432ba.js → 7639.bundle.92cec01499a8932b088c.js} +89 -76
  7. package/dist/{app.bundle.25c9ae6b961f9f069f1c.js → app.bundle.325cd41cfcf85a5f15c7.js} +47 -28
  8. package/dist/{compute.bundle.31da0aa10e69a7f59109.js → compute.bundle.539bb6717f69eecb5e91.js} +1 -1
  9. package/dist/index.html +1 -1
  10. package/dist/{polySeg.bundle.3fc59794577336815831.js → polySeg.bundle.8e6f8ee437015c1dc198.js} +1 -1
  11. package/dist/sw.js +1 -1
  12. package/package.json +19 -19
  13. /package/dist/{1459.bundle.60613f58a8399d968906.js → 1459.bundle.28ecf8e47e78da244f4f.js} +0 -0
  14. /package/dist/{1807.bundle.75b668c97b41c7a75030.js → 1807.bundle.a8416900cce3ce863b19.js} +0 -0
  15. /package/dist/{1919.bundle.ec303b169b611f245db5.js → 1919.bundle.d3b9c64a44567b280f69.js} +0 -0
  16. /package/dist/{20.bundle.aa898e98c1ce5e52cd9f.js → 20.bundle.2cc621073c757d1a47c9.js} +0 -0
  17. /package/dist/{213.bundle.678763c86c58ec1965a1.js → 213.bundle.bf7fae674f4d8b29ca02.js} +0 -0
  18. /package/dist/{2424.bundle.c8c7f586f7726130e4a1.js → 2424.bundle.1607ed9c57519b756e36.js} +0 -0
  19. /package/dist/{2932.bundle.859dd84fc3def7b202e8.js → 2932.bundle.058004570065fffeebb9.js} +0 -0
  20. /package/dist/{3658.bundle.29a7117322b5dad02419.js → 3658.bundle.7b05171bab4b18c37319.js} +0 -0
  21. /package/dist/{4113.bundle.020ca4e8d8c0972f5d11.js → 4113.bundle.3f92235b7fe46418a1b8.js} +0 -0
  22. /package/dist/{5054.bundle.5c87e2de3542d229158c.js → 5054.bundle.b6b2ce49a469c35772ba.js} +0 -0
  23. /package/dist/{6027.bundle.004e865ea9fb25697f5a.js → 6027.bundle.1bc92c35beaeb4732dc9.js} +0 -0
  24. /package/dist/{6201.bundle.11945b7ddfdb52b42816.js → 6201.bundle.9377dc95ffbc20f8a458.js} +0 -0
  25. /package/dist/{7197.bundle.3f9805da9cf6a2f64d8b.js → 7197.bundle.bbdfce599f674b205823.js} +0 -0
  26. /package/dist/{810.bundle.2dd8f5a0a3d35d7d2f49.js → 810.bundle.ae2a3249e1364d487bb3.js} +0 -0
  27. /package/dist/{85.bundle.8bc0371fa84152cb96b2.js → 85.bundle.ce7f0b63eaa8bf35c208.js} +0 -0
  28. /package/dist/{8558.bundle.9c7b1dff89ae6f56d822.js → 8558.bundle.7940aaba554bd955f0a9.js} +0 -0
  29. /package/dist/{8815.bundle.31b6cae894c30cee4fe3.js → 8815.bundle.89e7f9c6f40cf5098431.js} +0 -0
  30. /package/dist/{934.bundle.152c51584c4d4dd41f5e.js → 934.bundle.93e799fc9d94860358b0.js} +0 -0
  31. /package/dist/{963.bundle.c80ec75876ee82c8e6d1.js → 963.bundle.2f757486d9d4278ff5ab.js} +0 -0
@@ -1000,7 +1000,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
1000
1000
 
1001
1001
  /***/ }),
1002
1002
 
1003
- /***/ 58165:
1003
+ /***/ 79720:
1004
1004
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1005
1005
 
1006
1006
  "use strict";
@@ -2094,6 +2094,30 @@ var uuidv4 = __webpack_require__(80221);
2094
2094
  var getSpacingInNormalDirection = __webpack_require__(85008);
2095
2095
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getClosestImageId.js
2096
2096
  var getClosestImageId = __webpack_require__(88619);
2097
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/reflectVector.js
2098
+
2099
+ function reflectVector(v, normal) {
2100
+ const dotProduct = esm/* vec3.dot */.eR.dot(v, normal);
2101
+ const scaledNormal = esm/* vec3.scale */.eR.scale(esm/* vec3.create */.eR.create(), normal, 2 * dotProduct);
2102
+ return esm/* vec3.sub */.eR.sub(esm/* vec3.create */.eR.create(), v, scaledNormal);
2103
+ }
2104
+
2105
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/adjustInitialViewUp.js
2106
+
2107
+
2108
+ function adjustInitialViewUp(initialViewUp, flipHorizontal, flipVertical, viewPlaneNormal) {
2109
+ let adjustedInitialViewUp = esm/* vec3.clone */.eR.clone(initialViewUp);
2110
+ if (flipVertical) {
2111
+ esm/* vec3.negate */.eR.negate(adjustedInitialViewUp, adjustedInitialViewUp);
2112
+ }
2113
+ if (flipHorizontal) {
2114
+ const screenVerticalAxis = esm/* vec3.cross */.eR.cross(esm/* vec3.create */.eR.create(), viewPlaneNormal, adjustedInitialViewUp);
2115
+ esm/* vec3.normalize */.eR.normalize(screenVerticalAxis, screenVerticalAxis);
2116
+ adjustedInitialViewUp = reflectVector(adjustedInitialViewUp, screenVerticalAxis);
2117
+ }
2118
+ return adjustedInitialViewUp;
2119
+ }
2120
+
2097
2121
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js
2098
2122
 
2099
2123
 
@@ -2137,6 +2161,7 @@ var getClosestImageId = __webpack_require__(88619);
2137
2161
 
2138
2162
 
2139
2163
 
2164
+
2140
2165
 
2141
2166
 
2142
2167
  const EPSILON = 1;
@@ -2225,12 +2250,11 @@ class StackViewport extends Viewport/* default */.A {
2225
2250
  return viewport.rotation;
2226
2251
  };
2227
2252
  this.getRotationGPU = () => {
2228
- const { viewUp: currentViewUp, viewPlaneNormal, flipVertical, } = this.getCameraNoRotation();
2229
- const initialViewUp = flipVertical
2230
- ? esm/* vec3.negate */.eR.negate(esm/* vec3.create */.eR.create(), this.initialViewUp)
2231
- : this.initialViewUp;
2232
- const initialToCurrentViewUpAngle = (esm/* vec3.angle */.eR.angle(initialViewUp, currentViewUp) * 180) / Math.PI;
2233
- const initialToCurrentViewUpCross = esm/* vec3.cross */.eR.cross(esm/* vec3.create */.eR.create(), initialViewUp, currentViewUp);
2253
+ const { viewUp: currentViewUp, viewPlaneNormal, flipVertical, flipHorizontal, } = this.getCameraNoRotation();
2254
+ const adjustedViewUp = adjustInitialViewUp(this.initialViewUp, flipHorizontal, flipVertical, viewPlaneNormal);
2255
+ const angleRad = esm/* vec3.angle */.eR.angle(adjustedViewUp, currentViewUp);
2256
+ const initialToCurrentViewUpAngle = (angleRad * 180) / Math.PI;
2257
+ const initialToCurrentViewUpCross = esm/* vec3.cross */.eR.cross(esm/* vec3.create */.eR.create(), adjustedViewUp, currentViewUp);
2234
2258
  const normalDot = esm/* vec3.dot */.eR.dot(initialToCurrentViewUpCross, viewPlaneNormal);
2235
2259
  return normalDot >= 0
2236
2260
  ? initialToCurrentViewUpAngle
@@ -2892,12 +2916,10 @@ class StackViewport extends Viewport/* default */.A {
2892
2916
  const pan = this.getPan();
2893
2917
  const panSub = esm/* vec2.sub */.Zc.sub([0, 0], panFit, pan);
2894
2918
  this.setPan(panSub, false);
2895
- const { flipVertical } = this.getCamera();
2896
- const initialViewUp = flipVertical
2897
- ? esm/* vec3.negate */.eR.negate(esm/* vec3.create */.eR.create(), this.initialViewUp)
2898
- : this.initialViewUp;
2919
+ const { flipVertical, flipHorizontal, viewPlaneNormal } = this.getCamera();
2920
+ const adjustedViewUp = adjustInitialViewUp(this.initialViewUp, flipHorizontal, flipVertical, viewPlaneNormal);
2899
2921
  this.setCameraNoEvent({
2900
- viewUp: initialViewUp,
2922
+ viewUp: adjustedViewUp,
2901
2923
  });
2902
2924
  this.getVtkActiveCamera().roll(-rotation);
2903
2925
  const afterPan = this.getPan();
@@ -5943,9 +5965,6 @@ class Viewport {
5943
5965
  if (pan) {
5944
5966
  this.setPan(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec2.scale */ .Zc.scale([0, 0], pan, zoom));
5945
5967
  }
5946
- if (rotation >= 0) {
5947
- this.setRotation(rotation);
5948
- }
5949
5968
  if (flipHorizontal !== undefined &&
5950
5969
  flipHorizontal !== this.flipHorizontal) {
5951
5970
  this.flip({ flipHorizontal });
@@ -5953,6 +5972,9 @@ class Viewport {
5953
5972
  if (flipVertical !== undefined && flipVertical !== this.flipVertical) {
5954
5973
  this.flip({ flipVertical });
5955
5974
  }
5975
+ if (rotation >= 0) {
5976
+ this.setRotation(rotation);
5977
+ }
5956
5978
  }
5957
5979
  _getCorners(bounds) {
5958
5980
  return [
@@ -7343,12 +7365,9 @@ class WSIViewport extends Viewport/* default */.A {
7343
7365
  }
7344
7366
  getCamera() {
7345
7367
  this.refreshRenderValues();
7346
- const { resolution, xSpacing } = this.internalCamera;
7368
+ const { resolution, xSpacing, centerIndex } = this.internalCamera;
7347
7369
  const canvasToWorldRatio = resolution * xSpacing;
7348
- const canvasCenter = [
7349
- this.element.clientWidth / 2,
7350
- this.element.clientHeight / 2,
7351
- ];
7370
+ const canvasCenter = this.indexToCanvas(centerIndex.slice(0, 2));
7352
7371
  const focalPoint = this.canvasToWorld(canvasCenter);
7353
7372
  return {
7354
7373
  parallelProjection: true,
@@ -10176,8 +10195,8 @@ var ViewportType = __webpack_require__(41864);
10176
10195
  var VolumeViewport = __webpack_require__(94155);
10177
10196
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
10178
10197
  var BaseVolumeViewport = __webpack_require__(46347);
10179
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 12 modules
10180
- var StackViewport = __webpack_require__(58165);
10198
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
10199
+ var StackViewport = __webpack_require__(79720);
10181
10200
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VolumeViewport3D.js
10182
10201
  var VolumeViewport3D = __webpack_require__(40893);
10183
10202
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VideoViewport.js + 3 modules
@@ -37406,17 +37425,19 @@ async function render(viewport, representation) {
37406
37425
  /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17328);
37407
37426
  /* harmony import */ var _utilities_viewportFilters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(60810);
37408
37427
  /* harmony import */ var _utilities_throttle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(27730);
37409
- /* harmony import */ var _utilities_drawing__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(473);
37410
- /* harmony import */ var _utilities_planar_getWorldWidthAndHeightFromCorners__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(35489);
37411
- /* harmony import */ var _stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29601);
37412
- /* harmony import */ var _cursors_elementCursor__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7001);
37413
- /* harmony import */ var _utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(58640);
37414
- /* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(44049);
37415
- /* harmony import */ var _annotation_RectangleROITool__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(4010);
37416
- /* harmony import */ var _utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(18990);
37417
- /* harmony import */ var _utilities_math_basic__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(73262);
37418
- /* harmony import */ var _utilities_planar__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(13165);
37419
- /* harmony import */ var _utilities_getPixelValueUnits__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(40634);
37428
+ /* harmony import */ var _utilities_debounce__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52905);
37429
+ /* harmony import */ var _utilities_drawing__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(473);
37430
+ /* harmony import */ var _utilities_planar_getWorldWidthAndHeightFromCorners__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(35489);
37431
+ /* harmony import */ var _stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(29601);
37432
+ /* harmony import */ var _cursors_elementCursor__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7001);
37433
+ /* harmony import */ var _utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(58640);
37434
+ /* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(44049);
37435
+ /* harmony import */ var _annotation_RectangleROITool__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(4010);
37436
+ /* harmony import */ var _utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(18990);
37437
+ /* harmony import */ var _utilities_math_basic__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(73262);
37438
+ /* harmony import */ var _utilities_planar__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(13165);
37439
+ /* harmony import */ var _utilities_getPixelValueUnits__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(40634);
37440
+
37420
37441
 
37421
37442
 
37422
37443
 
@@ -37437,15 +37458,16 @@ async function render(viewport, representation) {
37437
37458
 
37438
37459
 
37439
37460
  const { transformWorldToIndex } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities;
37440
- class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .A {
37461
+ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .A {
37441
37462
  constructor(toolProps = {}, defaultToolProps = {
37442
37463
  configuration: {
37443
37464
  storePointData: false,
37444
37465
  numSlicesToPropagate: 10,
37445
- computePointsInsideVolume: false,
37466
+ calculatePointsInsideVolume: true,
37446
37467
  getTextLines: defaultGetTextLines,
37447
- statsCalculator: _utilities_math_basic__WEBPACK_IMPORTED_MODULE_16__.BasicStatsCalculator,
37468
+ statsCalculator: _utilities_math_basic__WEBPACK_IMPORTED_MODULE_17__.BasicStatsCalculator,
37448
37469
  showTextBox: false,
37470
+ throttleTimeout: 100,
37449
37471
  },
37450
37472
  }) {
37451
37473
  super(toolProps, defaultToolProps);
@@ -37528,9 +37550,9 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37528
37550
  hasMoved: false,
37529
37551
  };
37530
37552
  this._activateDraw(element);
37531
- (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_11__.hideElementCursor)(element);
37553
+ (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_12__.hideElementCursor)(element);
37532
37554
  evt.preventDefault();
37533
- (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .A)(viewportIdsToRender);
37555
+ (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .A)(viewportIdsToRender);
37534
37556
  return annotation;
37535
37557
  };
37536
37558
  this._endCallback = (evt) => {
@@ -37544,7 +37566,7 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37544
37566
  data.handles.activeHandleIndex = null;
37545
37567
  this._deactivateModify(element);
37546
37568
  this._deactivateDraw(element);
37547
- (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_11__.resetElementCursor)(element);
37569
+ (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_12__.resetElementCursor)(element);
37548
37570
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElement)(element);
37549
37571
  this.editData = null;
37550
37572
  this.isDrawing = false;
@@ -37554,12 +37576,13 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37554
37576
  }
37555
37577
  const targetId = this.getTargetId(enabledElement.viewport);
37556
37578
  const imageVolume = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
37557
- if (this.configuration.calculatePointsInsideVolume) {
37558
- this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
37559
- }
37560
- (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .A)(viewportIdsToRender);
37579
+ this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
37580
+ (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .A)(viewportIdsToRender);
37561
37581
  if (newAnnotation) {
37562
- (0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_13__.triggerAnnotationCompleted)(annotation);
37582
+ (0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_14__.triggerAnnotationCompleted)(annotation);
37583
+ }
37584
+ else {
37585
+ (0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_14__.triggerAnnotationModified)(annotation, element);
37563
37586
  }
37564
37587
  };
37565
37588
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
@@ -37569,7 +37592,7 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37569
37592
  if (!annotations?.length) {
37570
37593
  return renderStatus;
37571
37594
  }
37572
- annotations = (0,_utilities_planar__WEBPACK_IMPORTED_MODULE_17__.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
37595
+ annotations = (0,_utilities_planar__WEBPACK_IMPORTED_MODULE_18__.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
37573
37596
  const styleSpecifier = {
37574
37597
  toolGroupId: this.toolGroupId,
37575
37598
  toolName: this.getToolName(),
@@ -37623,7 +37646,7 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37623
37646
  return renderStatus;
37624
37647
  }
37625
37648
  let activeHandleCanvasCoords;
37626
- if (!(0,_stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_10__.isAnnotationVisible)(annotationUID)) {
37649
+ if (!(0,_stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_11__.isAnnotationVisible)(annotationUID)) {
37627
37650
  continue;
37628
37651
  }
37629
37652
  if (!(0,_stateManagement_annotation_annotationLocking__WEBPACK_IMPORTED_MODULE_4__.isAnnotationLocked)(annotationUID) &&
@@ -37649,8 +37672,7 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37649
37672
  lineWidth,
37650
37673
  });
37651
37674
  renderStatus = true;
37652
- if (this.configuration.showTextBox &&
37653
- this.configuration.calculatePointsInsideVolume) {
37675
+ if (this.configuration.showTextBox) {
37654
37676
  const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
37655
37677
  if (!options.visibility) {
37656
37678
  data.handles.textBox = {
@@ -37670,7 +37692,7 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37670
37692
  continue;
37671
37693
  }
37672
37694
  if (!data.handles.textBox.hasMoved) {
37673
- const canvasTextBoxCoords = (0,_utilities_drawing__WEBPACK_IMPORTED_MODULE_8__.getTextBoxCoordsCanvas)(canvasCoordinates);
37695
+ const canvasTextBoxCoords = (0,_utilities_drawing__WEBPACK_IMPORTED_MODULE_9__.getTextBoxCoordsCanvas)(canvasCoordinates);
37674
37696
  data.handles.textBox.worldPosition =
37675
37697
  viewport.canvasToWorld(canvasTextBoxCoords);
37676
37698
  }
@@ -37688,7 +37710,12 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37688
37710
  }
37689
37711
  return renderStatus;
37690
37712
  };
37691
- this._throttledCalculateCachedStats = (0,_utilities_throttle__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(this._calculateCachedStatsTool, 100, { trailing: true });
37713
+ if (this.configuration.calculatePointsInsideVolume) {
37714
+ this._throttledCalculateCachedStats = (0,_utilities_throttle__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(this._calculateCachedStatsTool, this.configuration.throttleTimeout, { trailing: true });
37715
+ }
37716
+ else {
37717
+ this._throttledCalculateCachedStats = (0,_utilities_debounce__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(this._calculateCachedStatsTool, this.configuration.throttleTimeout);
37718
+ }
37692
37719
  }
37693
37720
  _computeProjectionPoints(annotation, imageVolume) {
37694
37721
  const { data, metadata } = annotation;
@@ -37734,15 +37761,15 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37734
37761
  const image = this.getTargetImageData(targetId);
37735
37762
  const worldPos1 = data.handles.points[0];
37736
37763
  const worldPos2 = data.handles.points[3];
37737
- const { worldWidth, worldHeight } = (0,_utilities_planar_getWorldWidthAndHeightFromCorners__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
37764
+ const { worldWidth, worldHeight } = (0,_utilities_planar_getWorldWidthAndHeightFromCorners__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
37738
37765
  const measureInfo = (0,_utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_1__/* .getCalibratedLengthUnitsAndScale */ .Op)(image, data.habdles);
37739
37766
  const area = Math.abs(worldWidth * worldHeight) /
37740
37767
  (measureInfo.scale * measureInfo.scale);
37741
37768
  const modalityUnitOptions = {
37742
- isPreScaled: (0,_utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_15__/* .isViewportPreScaled */ .u)(viewport, targetId),
37769
+ isPreScaled: (0,_utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_16__/* .isViewportPreScaled */ .u)(viewport, targetId),
37743
37770
  isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
37744
37771
  };
37745
- const modalityUnit = (0,_utilities_getPixelValueUnits__WEBPACK_IMPORTED_MODULE_18__/* .getPixelValueUnits */ .j)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
37772
+ const modalityUnit = (0,_utilities_getPixelValueUnits__WEBPACK_IMPORTED_MODULE_19__/* .getPixelValueUnits */ .j)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
37746
37773
  for (let i = 0; i < projectionPoints.length; i++) {
37747
37774
  if (!imageVolume) {
37748
37775
  continue;
@@ -37804,11 +37831,9 @@ class RectangleROIStartEndThresholdTool extends _annotation_RectangleROITool__WE
37804
37831
  const targetId = this.getTargetId(viewport);
37805
37832
  const imageVolume = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
37806
37833
  this._computeProjectionPoints(annotation, imageVolume);
37807
- if (this.configuration.calculatePointsInsideVolume) {
37808
- this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
37809
- }
37834
+ this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
37810
37835
  annotation.invalidated = false;
37811
- (0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_13__.triggerAnnotationModified)(annotation, viewport.element);
37836
+ (0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_14__.triggerAnnotationModified)(annotation, viewport.element);
37812
37837
  return cachedStats;
37813
37838
  }
37814
37839
  _getStartCoordinate(worldPos, viewPlaneNormal) {
@@ -40032,6 +40057,7 @@ async function calculateVolumeStatistics({ operationData, indices, unit, mode, }
40032
40057
  segmentationInfo,
40033
40058
  imageInfo,
40034
40059
  indices,
40060
+ unit,
40035
40061
  mode,
40036
40062
  });
40037
40063
  (0,_utilsForWorker__WEBPACK_IMPORTED_MODULE_1__/* .triggerWorkerProgress */ .sg)(_enums__WEBPACK_IMPORTED_MODULE_4__.WorkerTypes.COMPUTE_STATISTICS, 100);
@@ -367,8 +367,8 @@ var VolumeViewport = __webpack_require__(94155);
367
367
  var VolumeViewport3D = __webpack_require__(40893);
368
368
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
369
369
  var BaseVolumeViewport = __webpack_require__(46347);
370
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 12 modules
371
- var StackViewport = __webpack_require__(58165);
370
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
371
+ var StackViewport = __webpack_require__(79720);
372
372
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VideoViewport.js + 3 modules
373
373
  var VideoViewport = __webpack_require__(32501);
374
374
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/WSIViewport.js + 1 modules
@@ -4176,8 +4176,8 @@ var PointsManager = __webpack_require__(13876);
4176
4176
  var deepMerge = __webpack_require__(74268);
4177
4177
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getScalingParameters.js
4178
4178
  var getScalingParameters = __webpack_require__(32173);
4179
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 12 modules
4180
- var StackViewport = __webpack_require__(58165);
4179
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
4180
+ var StackViewport = __webpack_require__(79720);
4181
4181
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/getEnabledElement.js
4182
4182
  var getEnabledElement = __webpack_require__(86846);
4183
4183
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getImageLegacy.js
@@ -14111,7 +14111,7 @@ const computeWorker = {
14111
14111
  };
14112
14112
  },
14113
14113
  calculateSegmentsStatisticsVolume: (args) => {
14114
- const { mode, indices } = args;
14114
+ const { mode, indices, unit } = args;
14115
14115
  const { segmentation, image } = computeWorker.getArgsFromInfo(args);
14116
14116
  const { voxelManager: segVoxelManager, spacing: segmentationSpacing } = segmentation;
14117
14117
  const { voxelManager: imageVoxelManager } = image;
@@ -14125,8 +14125,8 @@ const computeWorker = {
14125
14125
  });
14126
14126
  const stats = SegmentStatsCalculator.getStatistics({
14127
14127
  spacing: segmentationSpacing,
14128
- unit: 'mm',
14129
14128
  mode,
14129
+ unit,
14130
14130
  });
14131
14131
  return stats;
14132
14132
  },
@@ -625,6 +625,29 @@ function ViewportOrientationMarkers({
625
625
  const {
626
626
  cornerstoneViewportService
627
627
  } = servicesManager.services;
628
+
629
+ // Store initial viewUp and viewRight for volume viewports
630
+ const initialVolumeOrientationRef = (0,react.useRef)({
631
+ initialViewUp: null,
632
+ initialViewRight: null
633
+ });
634
+ (0,react.useEffect)(() => {
635
+ initialVolumeOrientationRef.current.initialViewUp = null;
636
+ initialVolumeOrientationRef.current.initialViewRight = null;
637
+ if (viewportData?.viewportType !== 'stack' && element && (0,dist_esm.getEnabledElement)(element)) {
638
+ const {
639
+ viewport
640
+ } = (0,dist_esm.getEnabledElement)(element);
641
+ const {
642
+ viewUp,
643
+ viewPlaneNormal
644
+ } = viewport.getCamera();
645
+ const viewRight = gl_matrix_esm/* vec3.create */.eR.create();
646
+ gl_matrix_esm/* vec3.cross */.eR.cross(viewRight, viewUp, viewPlaneNormal);
647
+ initialVolumeOrientationRef.current.initialViewUp = [...viewUp];
648
+ initialVolumeOrientationRef.current.initialViewRight = [...viewRight];
649
+ }
650
+ }, [element, viewportData]);
628
651
  (0,react.useEffect)(() => {
629
652
  const cameraModifiedListener = evt => {
630
653
  const {
@@ -672,17 +695,14 @@ function ViewportOrientationMarkers({
672
695
  if (!element || !(0,dist_esm.getEnabledElement)(element)) {
673
696
  return '';
674
697
  }
675
- const {
676
- viewport
677
- } = (0,dist_esm.getEnabledElement)(element);
678
- const {
679
- viewUp,
680
- viewPlaneNormal
681
- } = viewport.getCamera();
682
- const viewRight = gl_matrix_esm/* vec3.create */.eR.create();
683
- gl_matrix_esm/* vec3.cross */.eR.cross(viewRight, viewUp, viewPlaneNormal);
684
- columnCosines = [-viewUp[0], -viewUp[1], -viewUp[2]];
685
- rowCosines = viewRight;
698
+ if (initialVolumeOrientationRef.current.initialViewUp && initialVolumeOrientationRef.current.initialViewRight) {
699
+ // Use initial orientation values for consistency, even as the camera changes
700
+ columnCosines = [-initialVolumeOrientationRef.current.initialViewUp[0], -initialVolumeOrientationRef.current.initialViewUp[1], -initialVolumeOrientationRef.current.initialViewUp[2]];
701
+ rowCosines = initialVolumeOrientationRef.current.initialViewRight;
702
+ } else {
703
+ console.warn('ViewportOrientationMarkers::No initial orientation values');
704
+ return '';
705
+ }
686
706
  }
687
707
  if (!rowCosines || !columnCosines || rotation === undefined || isDefaultValueSetForRowCosine || isDefaultValueSetForColumnCosine) {
688
708
  return '';
@@ -381,8 +381,8 @@ var VolumeViewport = __webpack_require__(94155);
381
381
  var VolumeViewport3D = __webpack_require__(40893);
382
382
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
383
383
  var BaseVolumeViewport = __webpack_require__(46347);
384
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 12 modules
385
- var StackViewport = __webpack_require__(58165);
384
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
385
+ var StackViewport = __webpack_require__(79720);
386
386
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VideoViewport.js + 3 modules
387
387
  var VideoViewport = __webpack_require__(32501);
388
388
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/WSIViewport.js + 1 modules
@@ -4235,8 +4235,8 @@ var PointsManager = __webpack_require__(13876);
4235
4235
  var deepMerge = __webpack_require__(74268);
4236
4236
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getScalingParameters.js
4237
4237
  var getScalingParameters = __webpack_require__(32173);
4238
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 12 modules
4239
- var StackViewport = __webpack_require__(58165);
4238
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
4239
+ var StackViewport = __webpack_require__(79720);
4240
4240
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/getEnabledElement.js
4241
4241
  var getEnabledElement = __webpack_require__(86846);
4242
4242
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getImageLegacy.js
@@ -23826,6 +23826,7 @@ var RectangleROIStartEndThresholdTool = __webpack_require__(67847);
23826
23826
 
23827
23827
 
23828
23828
 
23829
+
23829
23830
 
23830
23831
 
23831
23832
  const { transformWorldToIndex: CircleROIStartEndThresholdTool_transformWorldToIndex } = esm.utilities;
@@ -23835,10 +23836,11 @@ class CircleROIStartEndThresholdTool extends annotation_CircleROITool {
23835
23836
  configuration: {
23836
23837
  storePointData: false,
23837
23838
  numSlicesToPropagate: 10,
23838
- calculatePointsInsideVolume: false,
23839
+ calculatePointsInsideVolume: true,
23839
23840
  getTextLines: CircleROIStartEndThresholdTool_defaultGetTextLines,
23840
23841
  statsCalculator: basic.BasicStatsCalculator,
23841
23842
  showTextBox: false,
23843
+ throttleTimeout: 100,
23842
23844
  },
23843
23845
  }) {
23844
23846
  super(toolProps, defaultToolProps);
@@ -23942,13 +23944,14 @@ class CircleROIStartEndThresholdTool extends annotation_CircleROITool {
23942
23944
  }
23943
23945
  const targetId = this.getTargetId(enabledElement.viewport);
23944
23946
  const imageVolume = esm.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
23945
- if (this.configuration.calculatePointsInsideVolume) {
23946
- this._computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement);
23947
- }
23947
+ this._computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement);
23948
23948
  (0,triggerAnnotationRenderForViewportIds/* default */.A)(viewportIdsToRender);
23949
23949
  if (newAnnotation) {
23950
23950
  (0,helpers_state.triggerAnnotationCompleted)(annotation);
23951
23951
  }
23952
+ else {
23953
+ (0,helpers_state.triggerAnnotationModified)(annotation, element);
23954
+ }
23952
23955
  };
23953
23956
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
23954
23957
  let renderStatus = false;
@@ -24053,8 +24056,7 @@ class CircleROIStartEndThresholdTool extends annotation_CircleROITool {
24053
24056
  }
24054
24057
  }
24055
24058
  renderStatus = true;
24056
- if (this.configuration.showTextBox == true &&
24057
- this.configuration.calculatePointsInsideVolume == true) {
24059
+ if (this.configuration.showTextBox) {
24058
24060
  const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
24059
24061
  if (!options.visibility) {
24060
24062
  data.handles.textBox = {
@@ -24093,7 +24095,12 @@ class CircleROIStartEndThresholdTool extends annotation_CircleROITool {
24093
24095
  }
24094
24096
  return renderStatus;
24095
24097
  };
24096
- this._throttledCalculateCachedStats = (0,throttle/* default */.A)(this._calculateCachedStatsTool, 100, { trailing: true });
24098
+ if (this.configuration.calculatePointsInsideVolume) {
24099
+ this._throttledCalculateCachedStats = (0,throttle/* default */.A)(this._calculateCachedStatsTool, this.configuration.throttleTimeout, { trailing: true });
24100
+ }
24101
+ else {
24102
+ this._throttledCalculateCachedStats = (0,debounce/* default */.A)(this._calculateCachedStatsTool, this.configuration.throttleTimeout);
24103
+ }
24097
24104
  }
24098
24105
  _computeProjectionPoints(annotation, imageVolume) {
24099
24106
  const { data, metadata } = annotation;
@@ -24233,9 +24240,7 @@ class CircleROIStartEndThresholdTool extends annotation_CircleROITool {
24233
24240
  const targetId = this.getTargetId(viewport);
24234
24241
  const imageVolume = esm.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
24235
24242
  this._computeProjectionPoints(annotation, imageVolume);
24236
- if (this.configuration.calculatePointsInsideVolume) {
24237
- this._computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement);
24238
- }
24243
+ this._computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement);
24239
24244
  annotation.invalidated = false;
24240
24245
  (0,helpers_state.triggerAnnotationModified)(annotation, viewport.element);
24241
24246
  return cachedStats;
@@ -10455,8 +10455,8 @@ function AboutModalDefault() {
10455
10455
  name
10456
10456
  } = (0,browser_detect_es5/* default */.A)();
10457
10457
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
10458
- const versionNumber = "3.11.0-beta.26";
10459
- const commitHash = "c829270c80c0899132aff0294b8e7386475dc71c";
10458
+ const versionNumber = "3.11.0-beta.27";
10459
+ const commitHash = "a5ea3e15c70f6b8f2d16257f5f5c774c921d82cb";
10460
10460
  const [main, beta] = versionNumber.split('-');
10461
10461
  return /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU, {
10462
10462
  className: "w-[400px]"