@ohif/app 3.13.0-beta.64 → 3.13.0-beta.65

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 (33) hide show
  1. package/dist/{2851.bundle.f4f60fab803d915d29c9.js → 2851.bundle.ffc5656f20a4159d591d.js} +2 -2
  2. package/dist/{7537.bundle.1726a7f7a4c378296085.js → 7537.bundle.889ba5f2707418c6fd88.js} +1 -1
  3. package/dist/{9039.bundle.7afa93b103c3b26d4855.js → 9039.bundle.f72736f47fedeff521e2.js} +123 -47
  4. package/dist/{9205.bundle.315c3b56464a7590235a.js → 9205.bundle.ed7bce8436a7a431955e.js} +122 -47
  5. package/dist/{9567.bundle.be350438bed4e656f278.js → 9567.bundle.ff782480a4c66e306027.js} +438 -85
  6. package/dist/{app.bundle.db872e626c172c6ad084.js → app.bundle.9e45525b479dad4d8113.js} +3 -3
  7. package/dist/{compute.bundle.a41ec0ba4f935200ab93.js → compute.bundle.b7c2ea55f1a69f4a736b.js} +1 -1
  8. package/dist/index.html +1 -1
  9. package/dist/{polySeg.bundle.be57af5b834dd833a418.js → polySeg.bundle.e1f6f05d81ea1352bef3.js} +1 -1
  10. package/dist/sw.js +1 -1
  11. package/package.json +21 -21
  12. /package/dist/{1459.bundle.075f1c281d008449f184.js → 1459.bundle.b76252d4cbc3588eba65.js} +0 -0
  13. /package/dist/{1933.bundle.8ab15ac46f3904309eee.js → 1933.bundle.10e823bd588169da5894.js} +0 -0
  14. /package/dist/{2018.bundle.45bbc23e30f022f0f051.js → 2018.bundle.a2960b28da742a90207e.js} +0 -0
  15. /package/dist/{213.bundle.a5eb36962ddcf90bcf1f.js → 213.bundle.33ca5d29734d9e99a676.js} +0 -0
  16. /package/dist/{2424.bundle.aebb08690e66ee2d4cb6.js → 2424.bundle.31d8e6bdf23d51886680.js} +0 -0
  17. /package/dist/{3138.bundle.3bbb1dcd1744680d059b.js → 3138.bundle.2fd53c9e63b1aea321ac.js} +0 -0
  18. /package/dist/{3461.bundle.1f379ffaaa0fa18a557d.js → 3461.bundle.b50d8125ecc168f22da3.js} +0 -0
  19. /package/dist/{4507.bundle.5ce023184cf2bcaa1670.js → 4507.bundle.061dfcf4609ef7aa8ede.js} +0 -0
  20. /package/dist/{4819.bundle.758017f50435d201d4b2.js → 4819.bundle.ac518de1987ad93304c8.js} +0 -0
  21. /package/dist/{5015.bundle.8c007df25792b1e1f7aa.js → 5015.bundle.46f8b754a318286c18ad.js} +0 -0
  22. /package/dist/{5028.bundle.03f40e29fdff23f6849a.js → 5028.bundle.608de6dde0d0af9e2b3e.js} +0 -0
  23. /package/dist/{5457.bundle.b44b51c1cd66d564910a.js → 5457.bundle.449b35dfd1134c977985.js} +0 -0
  24. /package/dist/{5485.bundle.25750f0b942d84d64902.js → 5485.bundle.c59e61ecef95882924d1.js} +0 -0
  25. /package/dist/{6027.bundle.ec904d1b23d3802ff878.js → 6027.bundle.ea6f6e5bbb336cdb2796.js} +0 -0
  26. /package/dist/{7166.bundle.3dbcf50dcc98c5a2dc58.js → 7166.bundle.bd50b3917b5ee6166971.js} +0 -0
  27. /package/dist/{7639.bundle.80cfc93c666ebaf624e1.js → 7639.bundle.04596df767fc6b0003a3.js} +0 -0
  28. /package/dist/{8305.bundle.fb3d726f0b3cc90f1e0a.js → 8305.bundle.a9764cd29cfa5bc6fd79.js} +0 -0
  29. /package/dist/{8499.bundle.5456c7de8e58ee651477.js → 8499.bundle.4a7f127900cf03af4e49.js} +0 -0
  30. /package/dist/{85.bundle.cbf41aeda04786647753.js → 85.bundle.e122f01517ddea1e3af0.js} +0 -0
  31. /package/dist/{8558.bundle.deca7697a26442ff37ec.js → 8558.bundle.522dbc153f443298deaa.js} +0 -0
  32. /package/dist/{8583.bundle.a3c87b570c9206a60c5b.js → 8583.bundle.bd1d92122c5ebfb867fc.js} +0 -0
  33. /package/dist/{9927.bundle.0c91b35dba333bce3a49.js → 9927.bundle.21cdba4cf5309feb8b7d.js} +0 -0
@@ -10438,6 +10438,7 @@ class AdvancedMagnifyViewport {
10438
10438
  _syncViewportsCameras(sourceViewport, magnifyViewport) {
10439
10439
  const worldPos = sourceViewport.canvasToWorld(this.position);
10440
10440
  const parallelScale = this._convertZoomFactorToParallelScale(sourceViewport, magnifyViewport, this.zoomFactor);
10441
+ const { flipHorizontal, flipVertical } = sourceViewport.getCamera();
10441
10442
  const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
10442
10443
  const distance = Math.sqrt(Math.pow(focalPoint[0] - position[0], 2) +
10443
10444
  Math.pow(focalPoint[1] - position[1], 2) +
@@ -10456,6 +10457,8 @@ class AdvancedMagnifyViewport {
10456
10457
  parallelScale,
10457
10458
  focalPoint: updatedFocalPoint,
10458
10459
  position: updatedPosition,
10460
+ flipHorizontal,
10461
+ flipVertical,
10459
10462
  });
10460
10463
  }
10461
10464
  _syncStackViewports(sourceViewport, magnifyViewport) {
@@ -12518,7 +12521,7 @@ class MagnifyTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .BaseTool */ .oS
12518
12521
  const { viewport } = enabledElement;
12519
12522
  const { element } = viewport;
12520
12523
  const viewportProperties = viewport.getProperties();
12521
- const { rotation: originalViewportRotation } = viewport.getViewPresentation();
12524
+ const { rotation: originalViewportRotation, flipHorizontal: originalViewportFlipHorizontal, flipVertical: originalViewportFlipVertical, } = viewport.getViewPresentation();
12522
12525
  const { canvas: canvasPos, world: worldPos } = currentPoints;
12523
12526
  let magnifyToolElement;
12524
12527
  magnifyToolElement = element.querySelector('.magnifyTool');
@@ -12549,6 +12552,8 @@ class MagnifyTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .BaseTool */ .oS
12549
12552
  magnifyViewport.setProperties(viewportProperties);
12550
12553
  magnifyViewport.setViewPresentation({
12551
12554
  rotation: originalViewportRotation,
12555
+ flipHorizontal: originalViewportFlipHorizontal,
12556
+ flipVertical: originalViewportFlipVertical,
12552
12557
  });
12553
12558
  const { parallelScale } = viewport.getCamera();
12554
12559
  const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
@@ -12756,12 +12761,19 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
12756
12761
  showEdgeFaces: true,
12757
12762
  showCornerFaces: true,
12758
12763
  keepOrientationUp: true,
12764
+ highlightColor: [255, 255, 255],
12765
+ edgeColor: [200, 200, 200],
12766
+ cornerColor: [150, 150, 150],
12767
+ restingAmbient: 1.0,
12768
+ hoverAmbient: 1.0,
12759
12769
  },
12760
12770
  }) {
12761
12771
  super(toolProps, defaultToolProps);
12762
12772
  this.widget = new _utilities_vtkjs_OrientationControllerWidget__WEBPACK_IMPORTED_MODULE_5__/* .vtkOrientationControllerWidget */ .C();
12763
12773
  this.resizeObservers = new Map();
12764
12774
  this.cameraHandlers = new Map();
12775
+ this.animationFrameHandles = new Map();
12776
+ this.animationTokens = new Map();
12765
12777
  this._getViewportsInfo = () => {
12766
12778
  const viewports = (0,_store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_2__.getToolGroup)(this.toolGroupId)?.viewportsInfo;
12767
12779
  return viewports || [];
@@ -12855,6 +12867,7 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
12855
12867
  }
12856
12868
  const volumeViewport = viewport;
12857
12869
  this.widget.positionActors(volumeViewport, actors, this.getPositionConfig());
12870
+ this.widget.syncOverlayViewport(viewportId, volumeViewport);
12858
12871
  viewport.render();
12859
12872
  };
12860
12873
  }
@@ -12920,6 +12933,9 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
12920
12933
  this.resizeObservers.forEach((observer) => observer.disconnect());
12921
12934
  this.resizeObservers.clear();
12922
12935
  this.cameraHandlers.clear();
12936
+ this.animationFrameHandles.forEach((handle) => cancelAnimationFrame(handle));
12937
+ this.animationFrameHandles.clear();
12938
+ this.animationTokens.clear();
12923
12939
  }
12924
12940
  createAnnotatedRhombActor() {
12925
12941
  const faceColors = this.getFaceColors();
@@ -12930,9 +12946,17 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
12930
12946
  opacity: this.configuration.opacity ?? 1.0,
12931
12947
  showEdgeFaces: this.configuration.showEdgeFaces !== false,
12932
12948
  showCornerFaces: this.configuration.showCornerFaces !== false,
12949
+ highlightColor: this.configuration.highlightColor ?? [255, 255, 255],
12950
+ edgeColor: this.configuration.edgeColor ?? [200, 200, 200],
12951
+ cornerColor: this.configuration.cornerColor ?? [150, 150, 150],
12952
+ restingAmbient: this.configuration.restingAmbient ?? 1.0,
12953
+ hoverAmbient: this.configuration.hoverAmbient ?? 1.0,
12933
12954
  });
12934
12955
  }
12935
12956
  addMarkerToViewport(viewportId, renderingEngineId) {
12957
+ if (this.widget.getActors(viewportId)) {
12958
+ return;
12959
+ }
12936
12960
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__.getEnabledElementByIds)(viewportId, renderingEngineId);
12937
12961
  if (!enabledElement) {
12938
12962
  console.warn('OrientationControllerTool: No enabled element found');
@@ -12973,8 +12997,8 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
12973
12997
  }
12974
12998
  },
12975
12999
  onFaceHover: (result) => {
12976
- if (result && result.actorIndex !== 0) {
12977
- this.widget.highlightFace(result.pickedActor, result.cellId, volumeViewport, false);
13000
+ if (result) {
13001
+ this.widget.highlightFace(result.pickedActor, result.cellId, volumeViewport, result.actorIndex === 0);
12978
13002
  }
12979
13003
  else {
12980
13004
  this.widget.clearHighlight();
@@ -13013,6 +13037,14 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
13013
13037
  viewport.render();
13014
13038
  }
13015
13039
  animateCameraToOrientation(viewport, targetViewPlaneNormal, targetViewUp) {
13040
+ const viewportId = viewport.id;
13041
+ const existingHandle = this.animationFrameHandles.get(viewportId);
13042
+ if (existingHandle !== undefined) {
13043
+ cancelAnimationFrame(existingHandle);
13044
+ this.animationFrameHandles.delete(viewportId);
13045
+ }
13046
+ const nextToken = (this.animationTokens.get(viewportId) ?? 0) + 1;
13047
+ this.animationTokens.set(viewportId, nextToken);
13016
13048
  const keepOrientationUp = this.configuration.keepOrientationUp !== false;
13017
13049
  const renderer = viewport.getRenderer();
13018
13050
  const camera = renderer.getActiveCamera();
@@ -13024,34 +13056,33 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
13024
13056
  gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(startRight, startUp, startForward);
13025
13057
  gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(startRight, startRight);
13026
13058
  const startMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.fromValues */ .pB.fromValues(startRight[0], startRight[1], startRight[2], 0, startUp[0], startUp[1], startUp[2], 0, startForward[0], startForward[1], startForward[2], 0, 0, 0, 0, 1);
13059
+ const targetForward = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create(), targetViewPlaneNormal);
13027
13060
  let targetUp;
13028
13061
  if (keepOrientationUp) {
13029
13062
  targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(targetViewUp[0], targetViewUp[1], targetViewUp[2]);
13030
13063
  }
13031
13064
  else {
13032
- const currentUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create(), startUp);
13033
- const normalizedForward = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create();
13034
- gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(normalizedForward, targetViewPlaneNormal);
13035
- const dot = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(currentUp, normalizedForward);
13065
+ const currentFwd = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create(), startForward);
13066
+ const rotQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create();
13067
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.rotationTo */ .Yu.rotationTo(rotQuat, currentFwd, targetForward);
13036
13068
  targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create();
13037
- gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, currentUp, normalizedForward, -dot);
13069
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.transformQuat */ .eR.transformQuat(targetUp, startUp, rotQuat);
13038
13070
  gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
13039
- if (gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.length */ .eR.length(targetUp) < 0.001) {
13040
- if (Math.abs(normalizedForward[2]) < 0.9) {
13041
- targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(0, 0, 1);
13042
- }
13043
- else {
13044
- targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(0, 1, 0);
13045
- }
13046
- const dot2 = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, normalizedForward);
13047
- gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, normalizedForward, -dot2);
13048
- gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
13049
- }
13050
13071
  }
13072
+ const upDotForward = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, targetForward);
13073
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, targetForward, -upDotForward);
13074
+ if (gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.length */ .eR.length(targetUp) < 0.0001) {
13075
+ targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.clone */ .eR.clone(startUp);
13076
+ const fallbackDot = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, targetForward);
13077
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, targetForward, -fallbackDot);
13078
+ }
13079
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
13051
13080
  const targetRight = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create();
13052
- gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetRight, targetUp, targetViewPlaneNormal);
13081
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetRight, targetUp, targetForward);
13053
13082
  gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetRight, targetRight);
13054
- const targetMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.fromValues */ .pB.fromValues(targetRight[0], targetRight[1], targetRight[2], 0, targetUp[0], targetUp[1], targetUp[2], 0, targetViewPlaneNormal[0], targetViewPlaneNormal[1], targetViewPlaneNormal[2], 0, 0, 0, 0, 1);
13083
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetUp, targetForward, targetRight);
13084
+ gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
13085
+ const targetMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.fromValues */ .pB.fromValues(targetRight[0], targetRight[1], targetRight[2], 0, targetUp[0], targetUp[1], targetUp[2], 0, targetForward[0], targetForward[1], targetForward[2], 0, 0, 0, 0, 1);
13055
13086
  const startQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.getRotation */ .pB.getRotation(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create(), startMatrix);
13056
13087
  const targetQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.getRotation */ .pB.getRotation(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create(), targetMatrix);
13057
13088
  let dotProduct = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.dot */ .Yu.dot(startQuat, targetQuat);
@@ -13063,13 +13094,21 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
13063
13094
  if (dotProduct > threshold) {
13064
13095
  return;
13065
13096
  }
13066
- const steps = 10;
13067
13097
  const duration = 150;
13068
- const stepDuration = duration / steps;
13069
- let currentStep = 0;
13070
- const animate = () => {
13071
- currentStep++;
13072
- const t = currentStep / steps;
13098
+ const animationStart = performance.now();
13099
+ const finalNormal = [
13100
+ targetForward[0],
13101
+ targetForward[1],
13102
+ targetForward[2],
13103
+ ];
13104
+ const finalUp = [targetUp[0], targetUp[1], targetUp[2]];
13105
+ const animate = (now) => {
13106
+ if (this.animationTokens.get(viewportId) !== nextToken) {
13107
+ return;
13108
+ }
13109
+ const elapsed = now - animationStart;
13110
+ const t = Math.min(1, elapsed / duration);
13111
+ const isLastStep = t >= 1;
13073
13112
  const easedT = t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;
13074
13113
  const interpolatedQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create();
13075
13114
  gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.slerp */ .Yu.slerp(interpolatedQuat, startQuat, targetQuat, easedT);
@@ -13078,16 +13117,21 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
13078
13117
  const interpolatedForward = interpolatedMatrix.slice(8, 11);
13079
13118
  const interpolatedUp = interpolatedMatrix.slice(4, 7);
13080
13119
  viewport.setCamera({
13081
- viewPlaneNormal: interpolatedForward,
13082
- viewUp: interpolatedUp,
13120
+ viewPlaneNormal: isLastStep ? finalNormal : interpolatedForward,
13121
+ viewUp: isLastStep ? finalUp : interpolatedUp,
13083
13122
  });
13084
13123
  viewport.resetCamera(ANIMATE_RESET_CAMERA_OPTIONS);
13085
13124
  viewport.render();
13086
- if (currentStep < steps) {
13087
- setTimeout(animate, stepDuration);
13125
+ if (!isLastStep) {
13126
+ const handle = requestAnimationFrame(animate);
13127
+ this.animationFrameHandles.set(viewportId, handle);
13128
+ }
13129
+ else {
13130
+ this.animationFrameHandles.delete(viewportId);
13088
13131
  }
13089
13132
  };
13090
- animate();
13133
+ const handle = requestAnimationFrame(animate);
13134
+ this.animationFrameHandles.set(viewportId, handle);
13091
13135
  }
13092
13136
  }
13093
13137
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrientationControllerTool);
@@ -16524,6 +16568,8 @@ VolumeCroppingControlTool.toolName = 'VolumeCroppingControl';
16524
16568
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29857);
16525
16569
  /* harmony import */ var _utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(88380);
16526
16570
  /* harmony import */ var _utilities_draw3D__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(68304);
16571
+ /* harmony import */ var _utilities_interactionDragCoordinator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(51970);
16572
+
16527
16573
 
16528
16574
 
16529
16575
 
@@ -16567,6 +16613,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
16567
16613
  this.originalClippingPlanes = [];
16568
16614
  this.draggingSphereIndex = null;
16569
16615
  this.rotatePlanesOnDrag = false;
16616
+ this.suppressPlaneRotationForCurrentDrag = false;
16570
16617
  this.cornerDragOffset = null;
16571
16618
  this.faceDragOffset = null;
16572
16619
  this.volumeDirectionVectors = null;
@@ -16589,8 +16636,11 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
16589
16636
  const { element } = eventDetail;
16590
16637
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_8__.getEnabledElement)(element);
16591
16638
  const { viewport } = enabledElement;
16592
- const actorEntry = viewport.getDefaultActor();
16593
- const actor = actorEntry.actor;
16639
+ this.suppressPlaneRotationForCurrentDrag = (0,_utilities_interactionDragCoordinator__WEBPACK_IMPORTED_MODULE_13__/* .isDragOwnedBy */ .lq)(viewport.id, 'orientation-controller');
16640
+ const actor = this._getVolumeActor(viewport);
16641
+ if (!actor) {
16642
+ return false;
16643
+ }
16594
16644
  const mapper = actor.getMapper();
16595
16645
  const mouseCanvas = [
16596
16646
  evt.detail.currentPoints.canvas[0],
@@ -16661,6 +16711,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
16661
16711
  this.draggingSphereIndex = null;
16662
16712
  this.cornerDragOffset = null;
16663
16713
  this.faceDragOffset = null;
16714
+ this.suppressPlaneRotationForCurrentDrag = false;
16664
16715
  viewport.render();
16665
16716
  this._hasResolutionChanged = false;
16666
16717
  };
@@ -16818,12 +16869,12 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
16818
16869
  if (!viewport) {
16819
16870
  return;
16820
16871
  }
16821
- const volumeActors = viewport.getActors();
16822
- if (!volumeActors || volumeActors.length === 0) {
16872
+ const volumeActor = this._getVolumeActor(viewport);
16873
+ if (!volumeActor) {
16823
16874
  console.warn('VolumeCroppingTool: No volume actors found in the viewport.');
16824
16875
  return;
16825
16876
  }
16826
- const imageData = volumeActors[0].actor.getMapper().getInputData();
16877
+ const imageData = volumeActor.getMapper().getInputData();
16827
16878
  if (!imageData) {
16828
16879
  console.warn('VolumeCroppingTool: No image data found for volume actor.');
16829
16880
  return;
@@ -16945,9 +16996,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
16945
16996
  this.edgeLines[uid] = { actor, source, key1, key2 };
16946
16997
  }
16947
16998
  });
16948
- const mapper = viewport
16949
- .getDefaultActor()
16950
- .actor.getMapper();
16999
+ const mapper = volumeActor.getMapper();
16951
17000
  mapper.addClippingPlane(planeXMin);
16952
17001
  mapper.addClippingPlane(planeXMax);
16953
17002
  mapper.addClippingPlane(planeYMin);
@@ -17294,6 +17343,23 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
17294
17343
  getHandlesVisible() {
17295
17344
  return this.configuration.showHandles;
17296
17345
  }
17346
+ setHandleRadius(radius) {
17347
+ this.configuration.sphereRadius = radius;
17348
+ this.sphereStates.forEach((state) => {
17349
+ if (state?.sphereSource?.setRadius) {
17350
+ state.sphereSource.setRadius(radius);
17351
+ state.sphereSource.modified();
17352
+ }
17353
+ });
17354
+ const viewportsInfo = this._getViewportsInfo();
17355
+ const [viewport3D] = viewportsInfo;
17356
+ if (!viewport3D) {
17357
+ return;
17358
+ }
17359
+ const renderingEngine = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_8__.getRenderingEngine)(viewport3D.renderingEngineId);
17360
+ const viewport = renderingEngine?.getViewport(viewport3D.viewportId);
17361
+ viewport?.render();
17362
+ }
17297
17363
  getClippingPlanesVisible() {
17298
17364
  return this.configuration.showClippingPlanes;
17299
17365
  }
@@ -17329,7 +17395,8 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
17329
17395
  }
17330
17396
  else {
17331
17397
  const shiftKey = evt.detail.event?.shiftKey ?? false;
17332
- if (this.rotatePlanesOnDrag === true || shiftKey) {
17398
+ if ((this.rotatePlanesOnDrag === true || shiftKey) &&
17399
+ !this.suppressPlaneRotationForCurrentDrag) {
17333
17400
  this._rotateClippingPlanes(evt);
17334
17401
  return;
17335
17402
  }
@@ -17387,9 +17454,11 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
17387
17454
  }
17388
17455
  }
17389
17456
  _updateClippingPlanes(viewport) {
17390
- const actorEntry = viewport.getDefaultActor();
17391
- const actor = actorEntry.actor;
17392
- const mapper = actor.getMapper();
17457
+ const actor = this._getVolumeActor(viewport);
17458
+ const mapper = this._getVolumeMapper(viewport);
17459
+ if (!actor || !mapper) {
17460
+ return;
17461
+ }
17393
17462
  const matrix = actor.getMatrix();
17394
17463
  if (!this.configuration.showClippingPlanes) {
17395
17464
  mapper.removeAllClippingPlanes();
@@ -17526,7 +17595,10 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
17526
17595
  }
17527
17596
  _getVolumeActor(viewport) {
17528
17597
  const vp = viewport || this._getViewport();
17529
- return vp?.getDefaultActor()?.actor;
17598
+ return vp
17599
+ ?.getActors?.()
17600
+ ?.find((entry) => entry.actor?.getClassName?.() === 'vtkVolume')
17601
+ ?.actor;
17530
17602
  }
17531
17603
  _getVolumeMapper(viewport) {
17532
17604
  const actor = this._getVolumeActor(viewport);
@@ -17543,7 +17615,10 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
17543
17615
  }
17544
17616
  }
17545
17617
  _updateClippingPlanesFromFaceSpheres(viewport) {
17546
- const mapper = viewport.getDefaultActor().actor.getMapper();
17618
+ const mapper = this._getVolumeMapper(viewport);
17619
+ if (!mapper) {
17620
+ return;
17621
+ }
17547
17622
  this.originalClippingPlanes[_utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__.PLANEINDEX.XMIN].origin = [
17548
17623
  ...this.sphereStates[_utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__.SPHEREINDEX.XMIN].point,
17549
17624
  ];
@@ -47473,7 +47548,7 @@ __webpack_require__.r(__webpack_exports__);
47473
47548
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
47474
47549
  /* harmony export */ r: () => (/* binding */ version)
47475
47550
  /* harmony export */ });
47476
- const version = '4.21.7';
47551
+ const version = '4.22.3';
47477
47552
 
47478
47553
 
47479
47554
  /***/ },