@ohif/app 3.11.0-beta.99 → 3.12.0-beta.0

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 (51) hide show
  1. package/dist/{2676.bundle.7e194265450db9aa1e98.js → 1402.bundle.e5306db9171c6c9793a7.js} +1379 -857
  2. package/dist/{9625.bundle.88dafbecfb596dade1a7.js → 1447.bundle.78d3b8f02c28f8ad9924.js} +2401 -2422
  3. package/dist/{147.bundle.c27839e06e2e8cabf9e1.js → 147.bundle.e22bae08eb10c0a51314.js} +42 -122
  4. package/dist/{1919.bundle.c53e597a4d2109ef7c97.js → 1919.bundle.ca1ffebd2ee775dc2d82.js} +6 -4
  5. package/dist/{2011.bundle.c44c0094525a51b528f4.js → 2011.bundle.12539f6bbbfc20a372e9.js} +2726 -197
  6. package/dist/{6216.bundle.48ff7813b6b3b8aba5f0.js → 2345.bundle.1fedf5750caf46ce99d9.js} +1 -35
  7. package/dist/{2701.bundle.d5c7ef6ec8b6cd9c2dfa.js → 2701.bundle.f2c7a5ab4a8b49d73bff.js} +9 -9
  8. package/dist/{2974.bundle.54d5903a8b29f1b09299.js → 2974.bundle.ec95e58b346dbe30a362.js} +2 -0
  9. package/dist/{7750.bundle.216dafe3c87d611928da.js → 319.bundle.45c1c250b562a3feefa5.js} +296 -62
  10. package/dist/{3658.bundle.046b575faed9e6bf1915.js → 3658.bundle.4b03e3bc783328aab18f.js} +2 -2
  11. package/dist/{9594.bundle.e623f61b984d7ff3b4b6.js → 4019.bundle.e07cc2a71b6e189a706a.js} +31 -157
  12. package/dist/{4113.bundle.46086f61126bf7100c6b.js → 4113.bundle.3b3fed48ad784ccda1a1.js} +268 -67
  13. package/dist/{414.bundle.443f391e019ece702e08.js → 414.bundle.fac8463232edcfda0b6c.js} +15 -15
  14. package/dist/{4202.bundle.aa4161a7b8cb7c691072.js → 4202.bundle.f804c72fb887b9543506.js} +1 -1
  15. package/dist/{4759.bundle.4da90b9346bb5e377ac6.js → 4759.bundle.8686abdd7bcf4aa7d107.js} +2 -0
  16. package/dist/{5349.bundle.be4b2d9a58412788944e.js → 5349.bundle.c117cc60ab5ff40eed14.js} +2 -2
  17. package/dist/{6972.bundle.0992b530f9691709f6d8.js → 557.bundle.a0344a04ae7a43642402.js} +5541 -5283
  18. package/dist/{5674.bundle.6c0d445cbd151b6e7aa1.js → 5674.bundle.4e40a906351477a2a193.js} +2 -0
  19. package/dist/{6201.bundle.a43859b8c8d3c89d73fe.js → 6201.bundle.5d7b8937f331f965d1aa.js} +4 -4
  20. package/dist/{6376.bundle.de4abf332424cba7513e.js → 6376.bundle.24e14fa9bf28c7c86e7c.js} +1 -1
  21. package/dist/{1943.bundle.3cf999579ec18e369ae6.js → 6991.bundle.08967b6f5698660e3a19.js} +67 -51
  22. package/dist/{7190.bundle.a35063abb9cb95986e67.js → 7190.bundle.4448c5a66a997bea24ca.js} +45 -8
  23. package/dist/{7197.bundle.c43fa621a7f16a4ea598.js → 7197.bundle.b8ce1b612ab1eff5d3ee.js} +5 -5
  24. package/dist/{810.bundle.0012733e3c8a87684485.js → 810.bundle.84fc54342c180b8a3023.js} +6 -6
  25. package/dist/{8228.bundle.2df7b5c0e4e0fdbb3654.js → 8228.bundle.ec3557eae81cafaed8c9.js} +2 -2
  26. package/dist/{85.bundle.c2855f98bbc7af94324a.js → 85.bundle.f9908f1f7350e5027d37.js} +3 -2
  27. package/dist/{8558.bundle.b69313ff865d69505f3f.js → 8558.bundle.ead200c0f2518d73739f.js} +3 -1
  28. package/dist/{860.bundle.f0d3efcceec48a1147ee.js → 860.bundle.f90055bfb2088bf17617.js} +24 -1
  29. package/dist/{8740.bundle.d0f554795adaecf0292c.js → 8740.bundle.9e567165a05c863b9698.js} +18 -5
  30. package/dist/{8815.bundle.85f43d0109e9e8eb7d2f.js → 8815.bundle.9999a630034893a74508.js} +32 -10
  31. package/dist/{934.bundle.f60a5cfd492b9b2f80d7.js → 934.bundle.e620a43102a8abf8a1e3.js} +4 -2
  32. package/dist/{963.bundle.5a8404d29251b83344c9.js → 963.bundle.b2434897acfb3e8abee5.js} +29 -9
  33. package/dist/{1443.bundle.405ff549a88a585906f3.js → 9732.bundle.91cb05748bef4e4f67c2.js} +883 -1731
  34. package/dist/{9560.bundle.203976e64c9a0202e247.js → 9856.bundle.c34e4165e91ef095aa9f.js} +5853 -5649
  35. package/dist/{9862.bundle.11d2a0f6528e9e916e25.js → 9862.bundle.e404cb5f0e762fbf6a03.js} +2 -14
  36. package/dist/{5886.bundle.181e673d6d5a9333039a.js → 9892.bundle.364aba175ce50baeb46c.js} +35397 -32968
  37. package/dist/app-config.js +8 -0
  38. package/dist/{app.bundle.4c2206d03a480f25fa24.js → app.bundle.41ff3ab8824cbbe55246.js} +2239 -1468
  39. package/dist/{compute.bundle.06ee8311038e4ac2d34d.js → compute.bundle.a1c8365c4732e8b82ca3.js} +3 -3
  40. package/dist/index.html +1 -1
  41. package/dist/{interpolation.bundle.6b3b374f2888d3744e61.js → interpolation.bundle.488206d0a2c4fa1dd6c5.js} +1 -1
  42. package/dist/{polySeg.bundle.d8a36b40716862d016de.js → polySeg.bundle.02258624e0ec30e9934c.js} +3 -3
  43. package/dist/sw.js +1 -1
  44. package/package.json +22 -22
  45. /package/dist/{1459.bundle.ce20cf6141ce43861cb6.js → 1459.bundle.163c80965265cae11781.js} +0 -0
  46. /package/dist/{1807.bundle.b29feec5110c55747364.js → 1807.bundle.d79c83317de38e4cffbd.js} +0 -0
  47. /package/dist/{213.bundle.5f47c7726bac8015c955.js → 213.bundle.f8b1fd7851428f0fa02f.js} +0 -0
  48. /package/dist/{2424.bundle.efc13d194c408554908e.js → 2424.bundle.7469c5960e905196f646.js} +0 -0
  49. /package/dist/{6027.bundle.80487e243df9ca540b1e.js → 6027.bundle.ab73f6c39c04c7662744.js} +0 -0
  50. /package/dist/{7431.bundle.503dc3262479de76225b.js → 7431.bundle.494b080a8141ef60067a.js} +0 -0
  51. /package/dist/{7639.bundle.d266780fbc9fe5a0053f.js → 7639.bundle.664fc584f04ca34a4bf1.js} +0 -0
@@ -1,4 +1,4 @@
1
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[2676],{
1
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[1402],{
2
2
 
3
3
  /***/ 660:
4
4
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -18987,9 +18987,11 @@ var vtkWebGPUShaderCache$1 = {
18987
18987
  /* harmony import */ var _utilities_planar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(52268);
18988
18988
  /* harmony import */ var _utilities_isEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(74638);
18989
18989
  /* harmony import */ var _utilities_hasNaNValues__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(38883);
18990
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(19325);
18990
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(76491);
18991
18991
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(71851);
18992
18992
  /* harmony import */ var _utilities_deepClone__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(99949);
18993
+ /* harmony import */ var _utilities_updatePlaneRestriction__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(41365);
18994
+
18993
18995
 
18994
18996
 
18995
18997
 
@@ -19898,16 +19900,52 @@ class Viewport {
19898
19900
  }
19899
19901
  getViewReference(viewRefSpecifier) {
19900
19902
  const { focalPoint: cameraFocalPoint, viewPlaneNormal, viewUp, } = this.getCamera();
19903
+ const FrameOfReferenceUID = this.getFrameOfReferenceUID();
19901
19904
  const target = {
19902
- FrameOfReferenceUID: this.getFrameOfReferenceUID(),
19905
+ FrameOfReferenceUID,
19903
19906
  cameraFocalPoint,
19904
19907
  viewPlaneNormal,
19905
19908
  viewUp,
19906
19909
  sliceIndex: viewRefSpecifier?.sliceIndex ?? this.getSliceIndex(),
19910
+ planeRestriction: {
19911
+ FrameOfReferenceUID,
19912
+ point: viewRefSpecifier?.points?.[0] || cameraFocalPoint,
19913
+ inPlaneVector1: viewUp,
19914
+ inPlaneVector2: (gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.cross */ .eR.cross(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.create */ .eR.create(), viewUp, viewPlaneNormal)),
19915
+ },
19907
19916
  };
19917
+ if (viewRefSpecifier?.points) {
19918
+ (0,_utilities_updatePlaneRestriction__WEBPACK_IMPORTED_MODULE_16__/* .updatePlaneRestriction */ .O)(viewRefSpecifier.points, target.planeRestriction);
19919
+ }
19908
19920
  return target;
19909
19921
  }
19922
+ isPlaneViewable(planeRestriction, options) {
19923
+ if (planeRestriction.FrameOfReferenceUID !== this.getFrameOfReferenceUID()) {
19924
+ return false;
19925
+ }
19926
+ const { focalPoint, viewPlaneNormal } = this.getCamera();
19927
+ const { point, inPlaneVector1, inPlaneVector2 } = planeRestriction;
19928
+ if (options?.withOrientation) {
19929
+ return true;
19930
+ }
19931
+ if (inPlaneVector1 &&
19932
+ !(0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Ay)(0, gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(viewPlaneNormal, inPlaneVector1))) {
19933
+ return false;
19934
+ }
19935
+ if (inPlaneVector2 &&
19936
+ !(0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Ay)(0, gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(viewPlaneNormal, inPlaneVector2))) {
19937
+ return false;
19938
+ }
19939
+ if (options?.withNavigation) {
19940
+ return true;
19941
+ }
19942
+ const pointVector = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.sub */ .eR.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.create */ .eR.create(), point, focalPoint);
19943
+ return (0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Ay)(0, gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(pointVector, viewPlaneNormal));
19944
+ }
19910
19945
  isReferenceViewable(viewRef, options) {
19946
+ if (viewRef.planeRestriction) {
19947
+ return this.isPlaneViewable(viewRef.planeRestriction, options);
19948
+ }
19911
19949
  if (viewRef.FrameOfReferenceUID &&
19912
19950
  viewRef.FrameOfReferenceUID !== this.getFrameOfReferenceUID()) {
19913
19951
  return false;
@@ -25848,405 +25886,6 @@ function isClosed(polyline) {
25848
25886
  }
25849
25887
 
25850
25888
 
25851
- /***/ }),
25852
-
25853
- /***/ 19325:
25854
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25855
-
25856
- "use strict";
25857
-
25858
- // EXPORTS
25859
- __webpack_require__.d(__webpack_exports__, {
25860
- EPSILON: () => (/* reexport */ epsilon),
25861
- MPR_CAMERA_VALUES: () => (/* reexport */ constants_mprCameraValues),
25862
- RENDERING_DEFAULTS: () => (/* reexport */ rendering),
25863
- VIEWPORT_PRESETS: () => (/* reexport */ viewportPresets)
25864
- });
25865
-
25866
- // UNUSED EXPORTS: BACKGROUND_COLORS, CPU_COLORMAPS
25867
-
25868
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/cpuColormaps.js
25869
- var cpuColormaps = __webpack_require__(21093);
25870
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/rendering.js
25871
- const RENDERING_DEFAULTS = {
25872
- MINIMUM_SLAB_THICKNESS: 5e-2,
25873
- MAXIMUM_RAY_DISTANCE: 1e6,
25874
- };
25875
- Object.freeze(RENDERING_DEFAULTS);
25876
- /* harmony default export */ const rendering = (RENDERING_DEFAULTS);
25877
-
25878
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/epsilon.js
25879
- const EPSILON = 1e-3;
25880
- /* harmony default export */ const epsilon = (EPSILON);
25881
-
25882
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/deepFreeze.js
25883
- function deepFreeze(object) {
25884
- const propNames = Object.getOwnPropertyNames(object);
25885
- for (const name of propNames) {
25886
- const value = object[name];
25887
- if (value && typeof value === 'object') {
25888
- deepFreeze(value);
25889
- }
25890
- }
25891
- return Object.freeze(object);
25892
- }
25893
- /* harmony default export */ const utilities_deepFreeze = (deepFreeze);
25894
-
25895
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/mprCameraValues.js
25896
-
25897
- const MPR_CAMERA_VALUES = {
25898
- axial: {
25899
- viewPlaneNormal: [0, 0, -1],
25900
- viewUp: [0, -1, 0],
25901
- viewRight: [1, 0, 0],
25902
- },
25903
- sagittal: {
25904
- viewPlaneNormal: [1, 0, 0],
25905
- viewUp: [0, 0, 1],
25906
- viewRight: [0, 1, 0],
25907
- },
25908
- coronal: {
25909
- viewPlaneNormal: [0, -1, 0],
25910
- viewUp: [0, 0, 1],
25911
- viewRight: [1, 0, 0],
25912
- },
25913
- };
25914
- const mprCameraValues = utilities_deepFreeze(MPR_CAMERA_VALUES);
25915
- /* harmony default export */ const constants_mprCameraValues = (mprCameraValues);
25916
-
25917
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/viewportPresets.js
25918
- const presets = [
25919
- {
25920
- name: 'CT-AAA',
25921
- gradientOpacity: '4 0 1 255 1',
25922
- specularPower: '10',
25923
- scalarOpacity: '12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922',
25924
- specular: '0.2',
25925
- shade: '1',
25926
- ambient: '0.1',
25927
- colorTransfer: '24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1',
25928
- diffuse: '0.9',
25929
- interpolation: '1',
25930
- },
25931
- {
25932
- name: 'CT-AAA2',
25933
- gradientOpacity: '4 0 1 255 1',
25934
- specularPower: '10',
25935
- scalarOpacity: '16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125',
25936
- specular: '0.2',
25937
- shade: '1',
25938
- ambient: '0.1',
25939
- colorTransfer: '32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1',
25940
- diffuse: '0.9',
25941
- interpolation: '1',
25942
- },
25943
- {
25944
- name: 'CT-Bone',
25945
- gradientOpacity: '4 0 1 255 1',
25946
- specularPower: '10',
25947
- scalarOpacity: '8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882',
25948
- specular: '0.2',
25949
- shade: '1',
25950
- ambient: '0.1',
25951
- colorTransfer: '16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1',
25952
- diffuse: '0.9',
25953
- interpolation: '1',
25954
- },
25955
- {
25956
- name: 'CT-Bones',
25957
- gradientOpacity: '4 0 1 985.12 1',
25958
- specularPower: '1',
25959
- scalarOpacity: '8 -1000 0 152.19 0 278.93 0.190476 952 0.2',
25960
- specular: '0',
25961
- shade: '1',
25962
- ambient: '0.2',
25963
- colorTransfer: '20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3',
25964
- diffuse: '1',
25965
- interpolation: '1',
25966
- },
25967
- {
25968
- name: 'CT-Cardiac',
25969
- gradientOpacity: '4 0 1 255 1',
25970
- specularPower: '10',
25971
- scalarOpacity: '12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875',
25972
- specular: '0.2',
25973
- shade: '1',
25974
- ambient: '0.1',
25975
- colorTransfer: '24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1',
25976
- diffuse: '0.9',
25977
- interpolation: '1',
25978
- },
25979
- {
25980
- name: 'CT-Cardiac2',
25981
- gradientOpacity: '4 0 1 255 1',
25982
- specularPower: '10',
25983
- scalarOpacity: '12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902',
25984
- specular: '0.2',
25985
- shade: '1',
25986
- ambient: '0.1',
25987
- colorTransfer: '24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1',
25988
- diffuse: '0.9',
25989
- interpolation: '1',
25990
- },
25991
- {
25992
- name: 'CT-Cardiac3',
25993
- gradientOpacity: '4 0 1 255 1',
25994
- specularPower: '10',
25995
- scalarOpacity: '14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071',
25996
- specular: '0.2',
25997
- shade: '1',
25998
- ambient: '0.1',
25999
- colorTransfer: '28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1',
26000
- diffuse: '0.9',
26001
- interpolation: '1',
26002
- },
26003
- {
26004
- name: 'CT-Chest-Contrast-Enhanced',
26005
- gradientOpacity: '4 0 1 255 1',
26006
- specularPower: '10',
26007
- scalarOpacity: '10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071',
26008
- specular: '0.2',
26009
- shade: '1',
26010
- ambient: '0.1',
26011
- colorTransfer: '20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1',
26012
- diffuse: '0.9',
26013
- interpolation: '1',
26014
- },
26015
- {
26016
- name: 'CT-Chest-Vessels',
26017
- gradientOpacity: '4 0 1 255 1',
26018
- specularPower: '1',
26019
- scalarOpacity: '10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071',
26020
- specular: '0',
26021
- shade: '1',
26022
- ambient: '0.2',
26023
- colorTransfer: '20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1',
26024
- diffuse: '1',
26025
- interpolation: '1',
26026
- },
26027
- {
26028
- name: 'CT-Coronary-Arteries',
26029
- gradientOpacity: '4 0 1 255 1',
26030
- specularPower: '1',
26031
- scalarOpacity: '12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1',
26032
- specular: '0',
26033
- shade: '0',
26034
- ambient: '0.2',
26035
- colorTransfer: '24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1',
26036
- diffuse: '1',
26037
- interpolation: '1',
26038
- },
26039
- {
26040
- name: 'CT-Coronary-Arteries-2',
26041
- gradientOpacity: '4 0 1 255 1',
26042
- specularPower: '1',
26043
- scalarOpacity: '14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357',
26044
- specular: '0',
26045
- shade: '1',
26046
- ambient: '0.2',
26047
- colorTransfer: '28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1',
26048
- diffuse: '1',
26049
- interpolation: '1',
26050
- },
26051
- {
26052
- name: 'CT-Coronary-Arteries-3',
26053
- gradientOpacity: '4 0 1 255 1',
26054
- specularPower: '10',
26055
- scalarOpacity: '14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1',
26056
- specular: '0.2',
26057
- shade: '1',
26058
- ambient: '0.1',
26059
- colorTransfer: '28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1',
26060
- diffuse: '0.9',
26061
- interpolation: '1',
26062
- },
26063
- {
26064
- name: 'CT-Cropped-Volume-Bone',
26065
- gradientOpacity: '4 0 1 255 1',
26066
- specularPower: '1',
26067
- scalarOpacity: '10 -2048 0 -451 0 -450 1 1050 1 3661 1',
26068
- specular: '0',
26069
- shade: '0',
26070
- ambient: '0.2',
26071
- colorTransfer: '20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1',
26072
- diffuse: '1',
26073
- interpolation: '1',
26074
- },
26075
- {
26076
- name: 'CT-Fat',
26077
- gradientOpacity: '6 0 1 985.12 1 988 1',
26078
- specularPower: '1',
26079
- scalarOpacity: '14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0',
26080
- specular: '0',
26081
- shade: '0',
26082
- ambient: '0.2',
26083
- colorTransfer: '36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886',
26084
- diffuse: '1',
26085
- interpolation: '1',
26086
- },
26087
- {
26088
- name: 'CT-Liver-Vasculature',
26089
- gradientOpacity: '4 0 1 255 1',
26090
- specularPower: '1',
26091
- scalarOpacity: '14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214',
26092
- specular: '0',
26093
- shade: '0',
26094
- ambient: '0.2',
26095
- colorTransfer: '28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1',
26096
- diffuse: '1',
26097
- interpolation: '1',
26098
- },
26099
- {
26100
- name: 'CT-Lung',
26101
- gradientOpacity: '6 0 1 985.12 1 988 1',
26102
- specularPower: '1',
26103
- scalarOpacity: '12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0',
26104
- specular: '0',
26105
- shade: '1',
26106
- ambient: '0.2',
26107
- colorTransfer: '24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3',
26108
- diffuse: '1',
26109
- interpolation: '1',
26110
- },
26111
- {
26112
- name: 'CT-MIP',
26113
- gradientOpacity: '4 0 1 255 1',
26114
- specularPower: '10',
26115
- scalarOpacity: '8 -3024 0 -637.62 0 700 1 3071 1',
26116
- specular: '0.2',
26117
- shade: '1',
26118
- ambient: '0.1',
26119
- colorTransfer: '16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1',
26120
- diffuse: '0.9',
26121
- interpolation: '1',
26122
- },
26123
- {
26124
- name: 'CT-Muscle',
26125
- gradientOpacity: '4 0 1 255 1',
26126
- specularPower: '10',
26127
- scalarOpacity: '10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922',
26128
- specular: '0.2',
26129
- shade: '1',
26130
- ambient: '0.1',
26131
- colorTransfer: '20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1',
26132
- diffuse: '0.9',
26133
- interpolation: '1',
26134
- },
26135
- {
26136
- name: 'CT-Pulmonary-Arteries',
26137
- gradientOpacity: '4 0 1 255 1',
26138
- specularPower: '1',
26139
- scalarOpacity: '14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286',
26140
- specular: '0',
26141
- shade: '1',
26142
- ambient: '0.2',
26143
- colorTransfer: '28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1',
26144
- diffuse: '1',
26145
- interpolation: '1',
26146
- },
26147
- {
26148
- name: 'CT-Soft-Tissue',
26149
- gradientOpacity: '4 0 1 255 1',
26150
- specularPower: '1',
26151
- scalarOpacity: '10 -2048 0 -167.01 0 -160 1 240 1 3661 1',
26152
- specular: '0',
26153
- shade: '0',
26154
- ambient: '0.2',
26155
- colorTransfer: '20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1',
26156
- diffuse: '1',
26157
- interpolation: '1',
26158
- },
26159
- {
26160
- name: 'CT-Air',
26161
- gradientOpacity: '4 0 1 255 1',
26162
- specularPower: '10',
26163
- scalarOpacity: '8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0',
26164
- specular: '0.2',
26165
- shade: '1',
26166
- ambient: '0.1',
26167
- colorTransfer: '16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ',
26168
- diffuse: '0.9',
26169
- interpolation: '1',
26170
- },
26171
- {
26172
- name: 'MR-Angio',
26173
- gradientOpacity: '4 0 1 255 1',
26174
- specularPower: '1',
26175
- scalarOpacity: '12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071',
26176
- specular: '0',
26177
- shade: '1',
26178
- ambient: '0.2',
26179
- colorTransfer: '24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1',
26180
- diffuse: '1',
26181
- interpolation: '1',
26182
- },
26183
- {
26184
- name: 'MR-Default',
26185
- gradientOpacity: '4 0 1 255 1',
26186
- specularPower: '1',
26187
- scalarOpacity: '12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5',
26188
- specular: '0',
26189
- shade: '1',
26190
- ambient: '0.2',
26191
- colorTransfer: '24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1',
26192
- diffuse: '1',
26193
- interpolation: '1',
26194
- },
26195
- {
26196
- name: 'MR-MIP',
26197
- gradientOpacity: '4 0 1 255 1',
26198
- specularPower: '1',
26199
- scalarOpacity: '8 0 0 98.3725 0 416.637 1 2800 1',
26200
- specular: '0',
26201
- shade: '0',
26202
- ambient: '0.2',
26203
- colorTransfer: '16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1',
26204
- diffuse: '1',
26205
- interpolation: '1',
26206
- },
26207
- {
26208
- name: 'MR-T2-Brain',
26209
- gradientOpacity: '4 0 1 160.25 1',
26210
- specularPower: '40',
26211
- scalarOpacity: '10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1',
26212
- specular: '0.5',
26213
- shade: '1',
26214
- ambient: '0.3',
26215
- colorTransfer: '16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1',
26216
- diffuse: '0.6',
26217
- interpolation: '1',
26218
- },
26219
- {
26220
- name: 'DTI-FA-Brain',
26221
- gradientOpacity: '4 0 1 0.9950 1',
26222
- specularPower: '40',
26223
- scalarOpacity: '16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0',
26224
- specular: '0.5',
26225
- shade: '1',
26226
- ambient: '0.3',
26227
- colorTransfer: '28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0',
26228
- diffuse: '0.9',
26229
- interpolation: '1',
26230
- },
26231
- ];
26232
- /* harmony default export */ const viewportPresets = (presets);
26233
-
26234
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/backgroundColors.js
26235
- const backgroundColors = {
26236
- slicer3D: [160 / 255, 164 / 255, 217 / 255],
26237
- };
26238
- /* harmony default export */ const constants_backgroundColors = ((/* unused pure expression or super */ null && (backgroundColors)));
26239
-
26240
- ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js
26241
-
26242
-
26243
-
26244
-
26245
-
26246
-
26247
-
26248
-
26249
-
26250
25889
  /***/ }),
26251
25890
 
26252
25891
  /***/ 19704:
@@ -30212,7 +29851,7 @@ var vtkPolyDataFS = "//VTK::System::Dec\n\n/*===================================
30212
29851
  /* harmony export */ });
30213
29852
  /* unused harmony export getOrientationFromScanAxisNormal */
30214
29853
  /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74876);
30215
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19325);
29854
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76491);
30216
29855
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71851);
30217
29856
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3823);
30218
29857
 
@@ -34179,6 +33818,9 @@ const defaultConfig = {
34179
33818
  renderingEngineMode: enums.RenderingEngineModeEnum.ContextPool,
34180
33819
  webGlContextCount: 7,
34181
33820
  },
33821
+ debug: {
33822
+ statsOverlay: false,
33823
+ },
34182
33824
  peerImport: (moduleId) => null,
34183
33825
  };
34184
33826
  let config = {
@@ -38476,380 +38118,6 @@ function getOrCreateSegmentationVolume(segmentationId) {
38476
38118
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getOrCreateSegmentationVolume);
38477
38119
 
38478
38120
 
38479
- /***/ }),
38480
-
38481
- /***/ 30885:
38482
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38483
-
38484
- "use strict";
38485
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
38486
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__),
38487
- /* harmony export */ i: () => (/* binding */ VIEWPORT_MIN_SIZE)
38488
- /* harmony export */ });
38489
- /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32643);
38490
- /* harmony import */ var _renderingEngineCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5862);
38491
- /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10364);
38492
- /* harmony import */ var _utilities_uuidv4__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80221);
38493
- /* harmony import */ var _utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69372);
38494
- /* harmony import */ var _enums_ViewportType__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41864);
38495
- /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46347);
38496
- /* harmony import */ var _StackViewport__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(79720);
38497
- /* harmony import */ var _helpers_viewportTypeUsesCustomRenderingPipeline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(81047);
38498
- /* harmony import */ var _helpers_getOrCreateCanvas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(30135);
38499
- /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(26896);
38500
- /* harmony import */ var _helpers_viewportTypeToViewportClass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61177);
38501
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(71851);
38502
-
38503
-
38504
-
38505
-
38506
-
38507
-
38508
-
38509
-
38510
-
38511
-
38512
-
38513
-
38514
-
38515
- const VIEWPORT_MIN_SIZE = 2;
38516
- class BaseRenderingEngine {
38517
- constructor(id) {
38518
- this._needsRender = new Set();
38519
- this._animationFrameSet = false;
38520
- this._animationFrameHandle = null;
38521
- this.renderFrameOfReference = (FrameOfReferenceUID) => {
38522
- const viewports = this._getViewportsAsArray();
38523
- const viewportIdsWithSameFrameOfReferenceUID = viewports.map((vp) => {
38524
- if (vp.getFrameOfReferenceUID() === FrameOfReferenceUID) {
38525
- return vp.id;
38526
- }
38527
- });
38528
- this.renderViewports(viewportIdsWithSameFrameOfReferenceUID);
38529
- };
38530
- this.id = id ? id : (0,_utilities_uuidv4__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)();
38531
- this.useCPURendering = (0,_init__WEBPACK_IMPORTED_MODULE_10__/* .getShouldUseCPURendering */ .LH)();
38532
- _renderingEngineCache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.set(this);
38533
- if (!(0,_init__WEBPACK_IMPORTED_MODULE_10__/* .isCornerstoneInitialized */ .Dh)()) {
38534
- throw new Error('@cornerstonejs/core is not initialized, run init() first');
38535
- }
38536
- this._viewports = new Map();
38537
- this.hasBeenDestroyed = false;
38538
- }
38539
- enableElement(viewportInputEntry) {
38540
- const viewportInput = this._normalizeViewportInputEntry(viewportInputEntry);
38541
- this._throwIfDestroyed();
38542
- const { element, viewportId } = viewportInput;
38543
- if (!element) {
38544
- throw new Error('No element provided');
38545
- }
38546
- const viewport = this.getViewport(viewportId);
38547
- if (viewport) {
38548
- this.disableElement(viewportId);
38549
- }
38550
- const { type } = viewportInput;
38551
- const viewportUsesCustomRenderingPipeline = (0,_helpers_viewportTypeUsesCustomRenderingPipeline__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(type);
38552
- if (!this.useCPURendering && !viewportUsesCustomRenderingPipeline) {
38553
- this.enableVTKjsDrivenViewport(viewportInput);
38554
- }
38555
- else {
38556
- this.addCustomViewport(viewportInput);
38557
- }
38558
- const canvas = (0,_helpers_getOrCreateCanvas__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Ay)(element);
38559
- const { background } = viewportInput.defaultOptions;
38560
- this.fillCanvasWithBackgroundColor(canvas, background);
38561
- }
38562
- disableElement(viewportId) {
38563
- this._throwIfDestroyed();
38564
- const viewport = this.getViewport(viewportId);
38565
- if (!viewport) {
38566
- console.warn(`viewport ${viewportId} does not exist`);
38567
- return;
38568
- }
38569
- this._resetViewport(viewport);
38570
- if (!(0,_helpers_viewportTypeUsesCustomRenderingPipeline__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(viewport.type) &&
38571
- !this.useCPURendering) {
38572
- if (this.offscreenMultiRenderWindow) {
38573
- this.offscreenMultiRenderWindow.removeRenderer(viewportId);
38574
- }
38575
- }
38576
- this._removeViewport(viewportId);
38577
- viewport.isDisabled = true;
38578
- this._needsRender.delete(viewportId);
38579
- const viewports = this.getViewports();
38580
- if (!viewports.length) {
38581
- this._clearAnimationFrame();
38582
- }
38583
- }
38584
- setViewports(publicViewportInputEntries) {
38585
- const viewportInputEntries = this._normalizeViewportInputEntries(publicViewportInputEntries);
38586
- this._throwIfDestroyed();
38587
- this._reset();
38588
- const vtkDrivenViewportInputEntries = [];
38589
- const customRenderingViewportInputEntries = [];
38590
- viewportInputEntries.forEach((vpie) => {
38591
- if (!this.useCPURendering &&
38592
- !(0,_helpers_viewportTypeUsesCustomRenderingPipeline__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(vpie.type)) {
38593
- vtkDrivenViewportInputEntries.push(vpie);
38594
- }
38595
- else {
38596
- customRenderingViewportInputEntries.push(vpie);
38597
- }
38598
- });
38599
- this.setVtkjsDrivenViewports(vtkDrivenViewportInputEntries);
38600
- this.setCustomViewports(customRenderingViewportInputEntries);
38601
- viewportInputEntries.forEach((vp) => {
38602
- const canvas = (0,_helpers_getOrCreateCanvas__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Ay)(vp.element);
38603
- const { background } = vp.defaultOptions;
38604
- this.fillCanvasWithBackgroundColor(canvas, background);
38605
- });
38606
- }
38607
- resize(immediate = true, keepCamera = true) {
38608
- this._throwIfDestroyed();
38609
- const viewports = this._getViewportsAsArray();
38610
- const vtkDrivenViewports = [];
38611
- const customRenderingViewports = [];
38612
- viewports.forEach((vpie) => {
38613
- if (!(0,_helpers_viewportTypeUsesCustomRenderingPipeline__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(vpie.type)) {
38614
- vtkDrivenViewports.push(vpie);
38615
- }
38616
- else {
38617
- customRenderingViewports.push(vpie);
38618
- }
38619
- });
38620
- if (vtkDrivenViewports.length) {
38621
- this._resizeVTKViewports(vtkDrivenViewports, keepCamera, immediate);
38622
- }
38623
- if (customRenderingViewports.length) {
38624
- this._resizeUsingCustomResizeHandler(customRenderingViewports, keepCamera, immediate);
38625
- }
38626
- }
38627
- getViewport(viewportId) {
38628
- return this._viewports?.get(viewportId);
38629
- }
38630
- getViewports() {
38631
- this._throwIfDestroyed();
38632
- return this._getViewportsAsArray();
38633
- }
38634
- getStackViewport(viewportId) {
38635
- this._throwIfDestroyed();
38636
- const viewport = this.getViewport(viewportId);
38637
- if (!viewport) {
38638
- throw new Error(`Viewport with Id ${viewportId} does not exist`);
38639
- }
38640
- if (!(viewport instanceof _StackViewport__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)) {
38641
- throw new Error(`Viewport with Id ${viewportId} is not a StackViewport.`);
38642
- }
38643
- return viewport;
38644
- }
38645
- getStackViewports() {
38646
- this._throwIfDestroyed();
38647
- const viewports = this.getViewports();
38648
- return viewports.filter((vp) => vp instanceof _StackViewport__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A);
38649
- }
38650
- getVolumeViewports() {
38651
- this._throwIfDestroyed();
38652
- const viewports = this.getViewports();
38653
- const isVolumeViewport = (viewport) => {
38654
- return viewport instanceof _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A;
38655
- };
38656
- return viewports.filter(isVolumeViewport);
38657
- }
38658
- render() {
38659
- const viewports = this.getViewports();
38660
- const viewportIds = viewports.map((vp) => vp.id);
38661
- this._setViewportsToBeRenderedNextFrame(viewportIds);
38662
- }
38663
- renderViewports(viewportIds) {
38664
- this._setViewportsToBeRenderedNextFrame(viewportIds);
38665
- }
38666
- renderViewport(viewportId) {
38667
- this._setViewportsToBeRenderedNextFrame([viewportId]);
38668
- }
38669
- destroy() {
38670
- if (this.hasBeenDestroyed) {
38671
- return;
38672
- }
38673
- if (!this.useCPURendering) {
38674
- const viewports = this._getViewportsAsArray();
38675
- viewports.forEach((vp) => {
38676
- if (this.offscreenMultiRenderWindow) {
38677
- this.offscreenMultiRenderWindow.removeRenderer(vp.id);
38678
- }
38679
- });
38680
- if (this.offscreenMultiRenderWindow) {
38681
- this.offscreenMultiRenderWindow.delete();
38682
- }
38683
- delete this.offscreenMultiRenderWindow;
38684
- }
38685
- this._reset();
38686
- _renderingEngineCache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.delete(this.id);
38687
- this.hasBeenDestroyed = true;
38688
- }
38689
- fillCanvasWithBackgroundColor(canvas, backgroundColor) {
38690
- const ctx = canvas.getContext('2d');
38691
- let fillStyle;
38692
- if (backgroundColor) {
38693
- const rgb = backgroundColor.map((f) => Math.floor(255 * f));
38694
- fillStyle = `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;
38695
- }
38696
- else {
38697
- fillStyle = 'black';
38698
- }
38699
- ctx.fillStyle = fillStyle;
38700
- ctx.fillRect(0, 0, canvas.width, canvas.height);
38701
- }
38702
- _normalizeViewportInputEntry(viewportInputEntry) {
38703
- const { type, defaultOptions } = viewportInputEntry;
38704
- let options = defaultOptions;
38705
- if (!options || Object.keys(options).length === 0) {
38706
- options = {
38707
- background: [0, 0, 0],
38708
- orientation: null,
38709
- displayArea: null,
38710
- };
38711
- if (type === _enums_ViewportType__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.ORTHOGRAPHIC) {
38712
- options = {
38713
- ...options,
38714
- orientation: _enums__WEBPACK_IMPORTED_MODULE_12__.OrientationAxis.AXIAL,
38715
- };
38716
- }
38717
- }
38718
- return {
38719
- ...viewportInputEntry,
38720
- defaultOptions: options,
38721
- };
38722
- }
38723
- _normalizeViewportInputEntries(viewportInputEntries) {
38724
- const normalizedViewportInputs = [];
38725
- viewportInputEntries.forEach((viewportInput) => {
38726
- normalizedViewportInputs.push(this._normalizeViewportInputEntry(viewportInput));
38727
- });
38728
- return normalizedViewportInputs;
38729
- }
38730
- _resizeUsingCustomResizeHandler(customRenderingViewports, keepCamera = true, immediate = true) {
38731
- customRenderingViewports.forEach((vp) => {
38732
- if (typeof vp.resize === 'function') {
38733
- vp.resize();
38734
- }
38735
- });
38736
- customRenderingViewports.forEach((vp) => {
38737
- const prevCamera = vp.getCamera();
38738
- vp.resetCamera();
38739
- if (keepCamera) {
38740
- vp.setCamera(prevCamera);
38741
- }
38742
- });
38743
- if (immediate) {
38744
- this.render();
38745
- }
38746
- }
38747
- _removeViewport(viewportId) {
38748
- const viewport = this.getViewport(viewportId);
38749
- if (!viewport) {
38750
- console.warn(`viewport ${viewportId} does not exist`);
38751
- return;
38752
- }
38753
- this._viewports.delete(viewportId);
38754
- }
38755
- addCustomViewport(viewportInputEntry) {
38756
- const { element, viewportId, type, defaultOptions } = viewportInputEntry;
38757
- element.tabIndex = -1;
38758
- const canvas = (0,_helpers_getOrCreateCanvas__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Ay)(element);
38759
- const { clientWidth, clientHeight } = canvas;
38760
- if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
38761
- canvas.width = clientWidth;
38762
- canvas.height = clientHeight;
38763
- }
38764
- const viewportInput = {
38765
- id: viewportId,
38766
- renderingEngineId: this.id,
38767
- element,
38768
- type,
38769
- canvas,
38770
- sx: 0,
38771
- sy: 0,
38772
- sWidth: clientWidth,
38773
- sHeight: clientHeight,
38774
- defaultOptions: defaultOptions || {},
38775
- };
38776
- const ViewportType = _helpers_viewportTypeToViewportClass__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A[type];
38777
- const viewport = new ViewportType(viewportInput);
38778
- this._viewports.set(viewportId, viewport);
38779
- const eventDetail = {
38780
- element,
38781
- viewportId,
38782
- renderingEngineId: this.id,
38783
- };
38784
- (0,_utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_eventTarget__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, _enums_Events__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.ELEMENT_ENABLED, eventDetail);
38785
- }
38786
- getRenderer(viewportId) {
38787
- return this.offscreenMultiRenderWindow.getRenderer(viewportId);
38788
- }
38789
- getOffscreenMultiRenderWindow(viewportId) {
38790
- if (this.useCPURendering) {
38791
- throw new Error('Offscreen multi render window is not available when using CPU rendering.');
38792
- }
38793
- return this.offscreenMultiRenderWindow;
38794
- }
38795
- setCustomViewports(viewportInputEntries) {
38796
- viewportInputEntries.forEach((vpie) => {
38797
- this.addCustomViewport(vpie);
38798
- });
38799
- }
38800
- _getViewportsAsArray() {
38801
- return Array.from(this._viewports.values());
38802
- }
38803
- _setViewportsToBeRenderedNextFrame(viewportIds) {
38804
- viewportIds.forEach((viewportId) => {
38805
- this._needsRender.add(viewportId);
38806
- });
38807
- this._render();
38808
- }
38809
- _render() {
38810
- if (this._needsRender.size > 0 && !this._animationFrameSet) {
38811
- this._animationFrameHandle = window.requestAnimationFrame(this._renderFlaggedViewports);
38812
- this._animationFrameSet = true;
38813
- }
38814
- }
38815
- _resetViewport(viewport) {
38816
- const renderingEngineId = this.id;
38817
- const { element, canvas, id: viewportId } = viewport;
38818
- const eventDetail = {
38819
- element,
38820
- viewportId,
38821
- renderingEngineId,
38822
- };
38823
- viewport.removeWidgets();
38824
- (0,_utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_eventTarget__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, _enums_Events__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.ELEMENT_DISABLED, eventDetail);
38825
- element.removeAttribute('data-viewport-uid');
38826
- element.removeAttribute('data-rendering-engine-uid');
38827
- const context = canvas.getContext('2d');
38828
- context.clearRect(0, 0, canvas.width, canvas.height);
38829
- }
38830
- _clearAnimationFrame() {
38831
- window.cancelAnimationFrame(this._animationFrameHandle);
38832
- this._needsRender.clear();
38833
- this._animationFrameSet = false;
38834
- this._animationFrameHandle = null;
38835
- }
38836
- _reset() {
38837
- const viewports = this._getViewportsAsArray();
38838
- viewports.forEach((viewport) => {
38839
- this._resetViewport(viewport);
38840
- });
38841
- this._clearAnimationFrame();
38842
- this._viewports = new Map();
38843
- }
38844
- _throwIfDestroyed() {
38845
- if (this.hasBeenDestroyed) {
38846
- throw new Error('this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.');
38847
- }
38848
- }
38849
- }
38850
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BaseRenderingEngine);
38851
-
38852
-
38853
38121
  /***/ }),
38854
38122
 
38855
38123
  /***/ 32456:
@@ -39696,7 +38964,7 @@ class VideoViewport extends Viewport/* default */.A {
39696
38964
  }
39697
38965
  }
39698
38966
  getCurrentImageId(index = this.getCurrentImageIdIndex()) {
39699
- const current = this.imageId.replace('/frames/1', `/frames/${index + 1}`);
38967
+ const current = this.imageId?.replace('/frames/1', `/frames/${index + 1}`);
39700
38968
  return current;
39701
38969
  }
39702
38970
  getViewReferenceId(specifier = {}) {
@@ -43679,6 +42947,21 @@ function getRenderingEngines() {
43679
42947
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getRenderingEngine);
43680
42948
 
43681
42949
 
42950
+ /***/ }),
42951
+
42952
+ /***/ 39537:
42953
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
42954
+
42955
+ "use strict";
42956
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
42957
+ /* harmony export */ A: () => (/* binding */ imageIdToURI)
42958
+ /* harmony export */ });
42959
+ function imageIdToURI(imageId) {
42960
+ const colonIndex = imageId.indexOf(':');
42961
+ return imageId.substring(colonIndex + 1);
42962
+ }
42963
+
42964
+
43682
42965
  /***/ }),
43683
42966
 
43684
42967
  /***/ 40336:
@@ -43995,7 +43278,7 @@ function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds) {
43995
43278
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
43996
43279
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
43997
43280
  /* harmony export */ });
43998
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19325);
43281
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76491);
43999
43282
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71851);
44000
43283
  /* harmony import */ var _cache_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49038);
44001
43284
  /* harmony import */ var _helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89821);
@@ -44113,6 +43396,131 @@ class VolumeViewport3D extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_7__/
44113
43396
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VolumeViewport3D);
44114
43397
 
44115
43398
 
43399
+ /***/ }),
43400
+
43401
+ /***/ 40905:
43402
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
43403
+
43404
+ "use strict";
43405
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
43406
+ /* harmony export */ S: () => (/* binding */ getStrategyData)
43407
+ /* harmony export */ });
43408
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15327);
43409
+ /* harmony import */ var _stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(98870);
43410
+ /* harmony import */ var _stateManagement_segmentation_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91963);
43411
+ /* harmony import */ var _utilities_segmentation_getReferenceVolumeForSegmentationVolume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12853);
43412
+
43413
+
43414
+
43415
+
43416
+ function getStrategyDataForVolumeViewport({ operationData }) {
43417
+ const { volumeId } = operationData;
43418
+ if (!volumeId) {
43419
+ const event = new CustomEvent(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.Enums.Events.ERROR_EVENT, {
43420
+ detail: {
43421
+ type: 'Segmentation',
43422
+ message: 'No volume id found for the segmentation',
43423
+ },
43424
+ cancelable: true,
43425
+ });
43426
+ _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.eventTarget.dispatchEvent(event);
43427
+ return null;
43428
+ }
43429
+ const segmentationVolume = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getVolume(volumeId);
43430
+ const imageVolume = (0,_utilities_segmentation_getReferenceVolumeForSegmentationVolume__WEBPACK_IMPORTED_MODULE_3__/* .getReferenceVolumeForSegmentationVolume */ .b)(volumeId);
43431
+ if (!segmentationVolume || !imageVolume) {
43432
+ return null;
43433
+ }
43434
+ const { imageData: segmentationImageData } = segmentationVolume;
43435
+ const { voxelManager: segmentationVoxelManager } = segmentationVolume;
43436
+ const { voxelManager: imageVoxelManager, imageData } = imageVolume;
43437
+ return {
43438
+ segmentationImageData,
43439
+ segmentationVoxelManager,
43440
+ segmentationScalarData: null,
43441
+ imageScalarData: null,
43442
+ imageVoxelManager,
43443
+ imageData,
43444
+ };
43445
+ }
43446
+ function getStrategyDataForStackViewport({ operationData, viewport, strategy, }) {
43447
+ const { segmentationId } = operationData;
43448
+ let segmentationImageData;
43449
+ let segmentationVoxelManager;
43450
+ let segmentationScalarData;
43451
+ let imageScalarData;
43452
+ let imageVoxelManager;
43453
+ let imageData;
43454
+ if (strategy.ensureSegmentationVolumeFor3DManipulation) {
43455
+ strategy.ensureSegmentationVolumeFor3DManipulation({
43456
+ operationData,
43457
+ viewport,
43458
+ });
43459
+ segmentationVoxelManager = operationData.segmentationVoxelManager;
43460
+ segmentationImageData = operationData.segmentationImageData;
43461
+ segmentationScalarData = null;
43462
+ }
43463
+ else {
43464
+ const labelmapImageId = (0,_stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_1__.getCurrentLabelmapImageIdForViewport)(viewport.id, segmentationId);
43465
+ if (!labelmapImageId) {
43466
+ return null;
43467
+ }
43468
+ const actorEntry = (0,_stateManagement_segmentation_helpers__WEBPACK_IMPORTED_MODULE_2__/* .getLabelmapActorEntry */ .wV)(viewport.id, segmentationId);
43469
+ if (!actorEntry) {
43470
+ return null;
43471
+ }
43472
+ const currentSegImage = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getImage(labelmapImageId);
43473
+ segmentationImageData = actorEntry.actor.getMapper().getInputData();
43474
+ segmentationVoxelManager = currentSegImage.voxelManager;
43475
+ const currentSegmentationImageId = operationData.imageId;
43476
+ const segmentationImage = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getImage(currentSegmentationImageId);
43477
+ if (!segmentationImage) {
43478
+ return null;
43479
+ }
43480
+ segmentationScalarData = segmentationImage.getPixelData?.();
43481
+ }
43482
+ if (strategy.ensureImageVolumeFor3DManipulation) {
43483
+ strategy.ensureImageVolumeFor3DManipulation({
43484
+ operationData,
43485
+ viewport,
43486
+ });
43487
+ imageVoxelManager = operationData.imageVoxelManager;
43488
+ imageScalarData = operationData.imageScalarData;
43489
+ imageData = operationData.imageData;
43490
+ }
43491
+ else {
43492
+ const currentImageId = viewport.getCurrentImageId();
43493
+ if (!currentImageId) {
43494
+ return null;
43495
+ }
43496
+ const image = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getImage(currentImageId);
43497
+ imageData = image ? null : viewport.getImageData();
43498
+ imageScalarData = image?.getPixelData() || imageData.getScalarData();
43499
+ imageVoxelManager = image?.voxelManager;
43500
+ }
43501
+ return {
43502
+ segmentationImageData,
43503
+ segmentationScalarData,
43504
+ imageScalarData,
43505
+ segmentationVoxelManager,
43506
+ imageVoxelManager,
43507
+ imageData,
43508
+ };
43509
+ }
43510
+ function getStrategyData({ operationData, viewport, strategy, }) {
43511
+ if (!operationData) {
43512
+ return null;
43513
+ }
43514
+ if (('volumeId' in operationData && operationData.volumeId != null) ||
43515
+ ('referencedVolumeId' in operationData &&
43516
+ operationData.referencedVolumeId != null)) {
43517
+ return getStrategyDataForVolumeViewport({ operationData });
43518
+ }
43519
+ return getStrategyDataForStackViewport({ operationData, viewport, strategy });
43520
+ }
43521
+
43522
+
43523
+
44116
43524
  /***/ }),
44117
43525
 
44118
43526
  /***/ 41864:
@@ -51119,7 +50527,7 @@ class Transform {
51119
50527
  /* harmony import */ var _kitware_vtk_js_Common_DataModel_PiecewiseFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(99341);
51120
50528
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3823);
51121
50529
  /* harmony import */ var _cache_cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49038);
51122
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19325);
50530
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76491);
51123
50531
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(71851);
51124
50532
  /* harmony import */ var _enums_ViewportType__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(41864);
51125
50533
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(10364);
@@ -51145,6 +50553,8 @@ class Transform {
51145
50553
  /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(74876);
51146
50554
  /* harmony import */ var _helpers_getCameraVectors__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(23465);
51147
50555
  /* harmony import */ var _helpers_isContextPoolRenderingEngine__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(27685);
50556
+ /* harmony import */ var _constants_mprCameraValues__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(91004);
50557
+
51148
50558
 
51149
50559
 
51150
50560
 
@@ -51404,11 +50814,11 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
51404
50814
  const volumeActors = this.getActors().filter((actorEntry) => (0,_utilities_actorCheck__WEBPACK_IMPORTED_MODULE_21__/* .actorIsA */ .N)(actorEntry, 'vtkVolume'));
51405
50815
  return volumeActors.some(({ uid, referencedId }) => {
51406
50816
  const volume = _cache_cache__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Ay.getVolume(referencedId || uid);
51407
- if (!volume?.imageIds) {
50817
+ if (!volume?.getImageIdIndex) {
51408
50818
  return false;
51409
50819
  }
51410
- const volumeImageURIs = volume.imageIds.map(_utilities_imageIdToURI__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .A);
51411
- return volumeImageURIs.includes(imageURI);
50820
+ return (volume.getImageIdIndex(imageURI) !== undefined ||
50821
+ volume.getImageURIIndex(imageURI) !== undefined);
51412
50822
  });
51413
50823
  };
51414
50824
  this.getImageIds = (volumeId) => {
@@ -51727,7 +51137,8 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
51727
51137
  return false;
51728
51138
  }
51729
51139
  if (options?.withNavigation) {
51730
- return true;
51140
+ const { referencedImageId } = viewRef;
51141
+ return !referencedImageId || this.hasImageURI(referencedImageId);
51731
51142
  }
51732
51143
  const currentSliceIndex = this.getSliceIndex();
51733
51144
  const { sliceIndex } = viewRef;
@@ -51751,13 +51162,51 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
51751
51162
  });
51752
51163
  this.render();
51753
51164
  }
51165
+ setBestOrentation(inPlaneVector1, inPlaneVector2) {
51166
+ if (!inPlaneVector1 && !inPlaneVector2) {
51167
+ return;
51168
+ }
51169
+ const { viewPlaneNormal } = this.getCamera();
51170
+ if (isCompatible(viewPlaneNormal, inPlaneVector2) &&
51171
+ isCompatible(viewPlaneNormal, inPlaneVector1)) {
51172
+ return;
51173
+ }
51174
+ const acquisition = this._getAcquisitionPlaneOrientation();
51175
+ if (isCompatible(acquisition.viewPlaneNormal, inPlaneVector2) &&
51176
+ isCompatible(acquisition.viewPlaneNormal, inPlaneVector1)) {
51177
+ this.setOrientation(acquisition);
51178
+ return;
51179
+ }
51180
+ for (const orientation of (Object.values(_constants_mprCameraValues__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .A))) {
51181
+ if (isCompatible(orientation.viewPlaneNormal, inPlaneVector2) &&
51182
+ isCompatible(orientation.viewPlaneNormal, inPlaneVector1)) {
51183
+ this.setOrientation(orientation);
51184
+ return;
51185
+ }
51186
+ }
51187
+ const planeNormal = (gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.cross */ .eR.cross(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.create */ .eR.create(), inPlaneVector2 || acquisition.viewPlaneNormal, inPlaneVector1));
51188
+ gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.normalize */ .eR.normalize(planeNormal, planeNormal);
51189
+ this.setOrientation({ viewPlaneNormal: planeNormal });
51190
+ }
51191
+ setViewPlane(planeRestriction) {
51192
+ const { point, inPlaneVector1, inPlaneVector2, FrameOfReferenceUID } = planeRestriction;
51193
+ this.setBestOrentation(inPlaneVector1, inPlaneVector2);
51194
+ this.setViewReference({
51195
+ FrameOfReferenceUID,
51196
+ cameraFocalPoint: point,
51197
+ viewPlaneNormal: this.getCamera().viewPlaneNormal,
51198
+ });
51199
+ }
51754
51200
  setViewReference(viewRef) {
51755
51201
  if (!viewRef) {
51756
51202
  return;
51757
51203
  }
51758
51204
  const volumeId = this.getVolumeId();
51759
- const { viewPlaneNormal: refViewPlaneNormal, FrameOfReferenceUID: refFrameOfReference, cameraFocalPoint, referencedImageId, viewUp, } = viewRef;
51205
+ const { FrameOfReferenceUID: refFrameOfReference, cameraFocalPoint, referencedImageId, planeRestriction, viewPlaneNormal: refViewPlaneNormal, viewUp, } = viewRef;
51760
51206
  let { sliceIndex } = viewRef;
51207
+ if (planeRestriction && !refViewPlaneNormal) {
51208
+ return this.setViewPlane(planeRestriction);
51209
+ }
51761
51210
  const { focalPoint, viewPlaneNormal, position } = this.getCamera();
51762
51211
  const isNegativeNormal = (0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* .isEqualNegative */ .WC)(viewPlaneNormal, refViewPlaneNormal);
51763
51212
  const isSameNormal = (0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Ay)(viewPlaneNormal, refViewPlaneNormal);
@@ -52116,13 +51565,35 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
52116
51565
  }
52117
51566
  return renderingEngine.offscreenMultiRenderWindow?.getRenderer(this.id);
52118
51567
  }
51568
+ _getViewUp(viewPlaneNormal) {
51569
+ const { viewUp } = this.getCamera();
51570
+ const dot = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(viewUp, viewPlaneNormal);
51571
+ if ((0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Ay)(dot, 0)) {
51572
+ return viewUp;
51573
+ }
51574
+ if ((0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* .isEqualAbs */ .Ph)(viewPlaneNormal[0], 1)) {
51575
+ return [0, 0, 1];
51576
+ }
51577
+ if ((0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* .isEqualAbs */ .Ph)(viewPlaneNormal[1], 1)) {
51578
+ return [0, 0, 1];
51579
+ }
51580
+ if ((0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* .isEqualAbs */ .Ph)(viewPlaneNormal[2], 1)) {
51581
+ return [0, -1, 0];
51582
+ }
51583
+ const vupOrthogonal = (gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.create */ .eR.create(), viewUp, viewPlaneNormal, -dot));
51584
+ gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.normalize */ .eR.normalize(vupOrthogonal, vupOrthogonal);
51585
+ return vupOrthogonal;
51586
+ }
52119
51587
  _getOrientationVectors(orientation) {
52120
51588
  if (typeof orientation === 'object') {
52121
- if (orientation.viewPlaneNormal && orientation.viewUp) {
52122
- return orientation;
51589
+ if (orientation.viewPlaneNormal) {
51590
+ return {
51591
+ ...orientation,
51592
+ viewUp: orientation.viewUp || this._getViewUp(orientation.viewPlaneNormal),
51593
+ };
52123
51594
  }
52124
51595
  else {
52125
- throw new Error('Invalid orientation object. It must contain viewPlaneNormal and viewUp');
51596
+ throw new Error('Invalid orientation object. It must contain viewPlaneNormal');
52126
51597
  }
52127
51598
  }
52128
51599
  else if (typeof orientation === 'string') {
@@ -52225,6 +51696,9 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
52225
51696
  }
52226
51697
  }
52227
51698
  }
51699
+ function isCompatible(viewPlaneNormal, vector) {
51700
+ return !vector || (0,_utilities_isEqual__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Ay)(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(viewPlaneNormal, vector), 0);
51701
+ }
52228
51702
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BaseVolumeViewport);
52229
51703
 
52230
51704
 
@@ -56770,7 +56244,7 @@ var vtkVolumeMapper$1 = {
56770
56244
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
56771
56245
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
56772
56246
  /* harmony export */ });
56773
- /* harmony import */ var _BaseRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30885);
56247
+ /* harmony import */ var _BaseRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86871);
56774
56248
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32643);
56775
56249
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10364);
56776
56250
  /* harmony import */ var _utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69372);
@@ -67843,6 +67317,372 @@ function drawRectByCoordinates(svgDrawingHelper, annotationUID, rectangleUID, ca
67843
67317
  }
67844
67318
 
67845
67319
 
67320
+ /***/ }),
67321
+
67322
+ /***/ 76491:
67323
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67324
+
67325
+ "use strict";
67326
+
67327
+ // EXPORTS
67328
+ __webpack_require__.d(__webpack_exports__, {
67329
+ EPSILON: () => (/* reexport */ epsilon),
67330
+ MPR_CAMERA_VALUES: () => (/* reexport */ mprCameraValues/* default */.A),
67331
+ RENDERING_DEFAULTS: () => (/* reexport */ rendering),
67332
+ VIEWPORT_PRESETS: () => (/* reexport */ viewportPresets)
67333
+ });
67334
+
67335
+ // UNUSED EXPORTS: BACKGROUND_COLORS, CPU_COLORMAPS
67336
+
67337
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/cpuColormaps.js
67338
+ var cpuColormaps = __webpack_require__(21093);
67339
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/rendering.js
67340
+ const RENDERING_DEFAULTS = {
67341
+ MINIMUM_SLAB_THICKNESS: 5e-2,
67342
+ MAXIMUM_RAY_DISTANCE: 1e6,
67343
+ };
67344
+ Object.freeze(RENDERING_DEFAULTS);
67345
+ /* harmony default export */ const rendering = (RENDERING_DEFAULTS);
67346
+
67347
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/epsilon.js
67348
+ const EPSILON = 1e-3;
67349
+ /* harmony default export */ const epsilon = (EPSILON);
67350
+
67351
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/mprCameraValues.js + 1 modules
67352
+ var mprCameraValues = __webpack_require__(91004);
67353
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/viewportPresets.js
67354
+ const presets = [
67355
+ {
67356
+ name: 'CT-AAA',
67357
+ gradientOpacity: '4 0 1 255 1',
67358
+ specularPower: '10',
67359
+ scalarOpacity: '12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922',
67360
+ specular: '0.2',
67361
+ shade: '1',
67362
+ ambient: '0.1',
67363
+ colorTransfer: '24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1',
67364
+ diffuse: '0.9',
67365
+ interpolation: '1',
67366
+ },
67367
+ {
67368
+ name: 'CT-AAA2',
67369
+ gradientOpacity: '4 0 1 255 1',
67370
+ specularPower: '10',
67371
+ scalarOpacity: '16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125',
67372
+ specular: '0.2',
67373
+ shade: '1',
67374
+ ambient: '0.1',
67375
+ colorTransfer: '32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1',
67376
+ diffuse: '0.9',
67377
+ interpolation: '1',
67378
+ },
67379
+ {
67380
+ name: 'CT-Bone',
67381
+ gradientOpacity: '4 0 1 255 1',
67382
+ specularPower: '10',
67383
+ scalarOpacity: '8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882',
67384
+ specular: '0.2',
67385
+ shade: '1',
67386
+ ambient: '0.1',
67387
+ colorTransfer: '16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1',
67388
+ diffuse: '0.9',
67389
+ interpolation: '1',
67390
+ },
67391
+ {
67392
+ name: 'CT-Bones',
67393
+ gradientOpacity: '4 0 1 985.12 1',
67394
+ specularPower: '1',
67395
+ scalarOpacity: '8 -1000 0 152.19 0 278.93 0.190476 952 0.2',
67396
+ specular: '0',
67397
+ shade: '1',
67398
+ ambient: '0.2',
67399
+ colorTransfer: '20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3',
67400
+ diffuse: '1',
67401
+ interpolation: '1',
67402
+ },
67403
+ {
67404
+ name: 'CT-Cardiac',
67405
+ gradientOpacity: '4 0 1 255 1',
67406
+ specularPower: '10',
67407
+ scalarOpacity: '12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875',
67408
+ specular: '0.2',
67409
+ shade: '1',
67410
+ ambient: '0.1',
67411
+ colorTransfer: '24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1',
67412
+ diffuse: '0.9',
67413
+ interpolation: '1',
67414
+ },
67415
+ {
67416
+ name: 'CT-Cardiac2',
67417
+ gradientOpacity: '4 0 1 255 1',
67418
+ specularPower: '10',
67419
+ scalarOpacity: '12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902',
67420
+ specular: '0.2',
67421
+ shade: '1',
67422
+ ambient: '0.1',
67423
+ colorTransfer: '24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1',
67424
+ diffuse: '0.9',
67425
+ interpolation: '1',
67426
+ },
67427
+ {
67428
+ name: 'CT-Cardiac3',
67429
+ gradientOpacity: '4 0 1 255 1',
67430
+ specularPower: '10',
67431
+ scalarOpacity: '14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071',
67432
+ specular: '0.2',
67433
+ shade: '1',
67434
+ ambient: '0.1',
67435
+ colorTransfer: '28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1',
67436
+ diffuse: '0.9',
67437
+ interpolation: '1',
67438
+ },
67439
+ {
67440
+ name: 'CT-Chest-Contrast-Enhanced',
67441
+ gradientOpacity: '4 0 1 255 1',
67442
+ specularPower: '10',
67443
+ scalarOpacity: '10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071',
67444
+ specular: '0.2',
67445
+ shade: '1',
67446
+ ambient: '0.1',
67447
+ colorTransfer: '20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1',
67448
+ diffuse: '0.9',
67449
+ interpolation: '1',
67450
+ },
67451
+ {
67452
+ name: 'CT-Chest-Vessels',
67453
+ gradientOpacity: '4 0 1 255 1',
67454
+ specularPower: '1',
67455
+ scalarOpacity: '10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071',
67456
+ specular: '0',
67457
+ shade: '1',
67458
+ ambient: '0.2',
67459
+ colorTransfer: '20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1',
67460
+ diffuse: '1',
67461
+ interpolation: '1',
67462
+ },
67463
+ {
67464
+ name: 'CT-Coronary-Arteries',
67465
+ gradientOpacity: '4 0 1 255 1',
67466
+ specularPower: '1',
67467
+ scalarOpacity: '12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1',
67468
+ specular: '0',
67469
+ shade: '0',
67470
+ ambient: '0.2',
67471
+ colorTransfer: '24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1',
67472
+ diffuse: '1',
67473
+ interpolation: '1',
67474
+ },
67475
+ {
67476
+ name: 'CT-Coronary-Arteries-2',
67477
+ gradientOpacity: '4 0 1 255 1',
67478
+ specularPower: '1',
67479
+ scalarOpacity: '14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357',
67480
+ specular: '0',
67481
+ shade: '1',
67482
+ ambient: '0.2',
67483
+ colorTransfer: '28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1',
67484
+ diffuse: '1',
67485
+ interpolation: '1',
67486
+ },
67487
+ {
67488
+ name: 'CT-Coronary-Arteries-3',
67489
+ gradientOpacity: '4 0 1 255 1',
67490
+ specularPower: '10',
67491
+ scalarOpacity: '14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1',
67492
+ specular: '0.2',
67493
+ shade: '1',
67494
+ ambient: '0.1',
67495
+ colorTransfer: '28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1',
67496
+ diffuse: '0.9',
67497
+ interpolation: '1',
67498
+ },
67499
+ {
67500
+ name: 'CT-Cropped-Volume-Bone',
67501
+ gradientOpacity: '4 0 1 255 1',
67502
+ specularPower: '1',
67503
+ scalarOpacity: '10 -2048 0 -451 0 -450 1 1050 1 3661 1',
67504
+ specular: '0',
67505
+ shade: '0',
67506
+ ambient: '0.2',
67507
+ colorTransfer: '20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1',
67508
+ diffuse: '1',
67509
+ interpolation: '1',
67510
+ },
67511
+ {
67512
+ name: 'CT-Fat',
67513
+ gradientOpacity: '6 0 1 985.12 1 988 1',
67514
+ specularPower: '1',
67515
+ scalarOpacity: '14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0',
67516
+ specular: '0',
67517
+ shade: '0',
67518
+ ambient: '0.2',
67519
+ colorTransfer: '36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886',
67520
+ diffuse: '1',
67521
+ interpolation: '1',
67522
+ },
67523
+ {
67524
+ name: 'CT-Liver-Vasculature',
67525
+ gradientOpacity: '4 0 1 255 1',
67526
+ specularPower: '1',
67527
+ scalarOpacity: '14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214',
67528
+ specular: '0',
67529
+ shade: '0',
67530
+ ambient: '0.2',
67531
+ colorTransfer: '28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1',
67532
+ diffuse: '1',
67533
+ interpolation: '1',
67534
+ },
67535
+ {
67536
+ name: 'CT-Lung',
67537
+ gradientOpacity: '6 0 1 985.12 1 988 1',
67538
+ specularPower: '1',
67539
+ scalarOpacity: '12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0',
67540
+ specular: '0',
67541
+ shade: '1',
67542
+ ambient: '0.2',
67543
+ colorTransfer: '24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3',
67544
+ diffuse: '1',
67545
+ interpolation: '1',
67546
+ },
67547
+ {
67548
+ name: 'CT-MIP',
67549
+ gradientOpacity: '4 0 1 255 1',
67550
+ specularPower: '10',
67551
+ scalarOpacity: '8 -3024 0 -637.62 0 700 1 3071 1',
67552
+ specular: '0.2',
67553
+ shade: '1',
67554
+ ambient: '0.1',
67555
+ colorTransfer: '16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1',
67556
+ diffuse: '0.9',
67557
+ interpolation: '1',
67558
+ },
67559
+ {
67560
+ name: 'CT-Muscle',
67561
+ gradientOpacity: '4 0 1 255 1',
67562
+ specularPower: '10',
67563
+ scalarOpacity: '10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922',
67564
+ specular: '0.2',
67565
+ shade: '1',
67566
+ ambient: '0.1',
67567
+ colorTransfer: '20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1',
67568
+ diffuse: '0.9',
67569
+ interpolation: '1',
67570
+ },
67571
+ {
67572
+ name: 'CT-Pulmonary-Arteries',
67573
+ gradientOpacity: '4 0 1 255 1',
67574
+ specularPower: '1',
67575
+ scalarOpacity: '14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286',
67576
+ specular: '0',
67577
+ shade: '1',
67578
+ ambient: '0.2',
67579
+ colorTransfer: '28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1',
67580
+ diffuse: '1',
67581
+ interpolation: '1',
67582
+ },
67583
+ {
67584
+ name: 'CT-Soft-Tissue',
67585
+ gradientOpacity: '4 0 1 255 1',
67586
+ specularPower: '1',
67587
+ scalarOpacity: '10 -2048 0 -167.01 0 -160 1 240 1 3661 1',
67588
+ specular: '0',
67589
+ shade: '0',
67590
+ ambient: '0.2',
67591
+ colorTransfer: '20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1',
67592
+ diffuse: '1',
67593
+ interpolation: '1',
67594
+ },
67595
+ {
67596
+ name: 'CT-Air',
67597
+ gradientOpacity: '4 0 1 255 1',
67598
+ specularPower: '10',
67599
+ scalarOpacity: '8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0',
67600
+ specular: '0.2',
67601
+ shade: '1',
67602
+ ambient: '0.1',
67603
+ colorTransfer: '16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ',
67604
+ diffuse: '0.9',
67605
+ interpolation: '1',
67606
+ },
67607
+ {
67608
+ name: 'MR-Angio',
67609
+ gradientOpacity: '4 0 1 255 1',
67610
+ specularPower: '1',
67611
+ scalarOpacity: '12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071',
67612
+ specular: '0',
67613
+ shade: '1',
67614
+ ambient: '0.2',
67615
+ colorTransfer: '24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1',
67616
+ diffuse: '1',
67617
+ interpolation: '1',
67618
+ },
67619
+ {
67620
+ name: 'MR-Default',
67621
+ gradientOpacity: '4 0 1 255 1',
67622
+ specularPower: '1',
67623
+ scalarOpacity: '12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5',
67624
+ specular: '0',
67625
+ shade: '1',
67626
+ ambient: '0.2',
67627
+ colorTransfer: '24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1',
67628
+ diffuse: '1',
67629
+ interpolation: '1',
67630
+ },
67631
+ {
67632
+ name: 'MR-MIP',
67633
+ gradientOpacity: '4 0 1 255 1',
67634
+ specularPower: '1',
67635
+ scalarOpacity: '8 0 0 98.3725 0 416.637 1 2800 1',
67636
+ specular: '0',
67637
+ shade: '0',
67638
+ ambient: '0.2',
67639
+ colorTransfer: '16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1',
67640
+ diffuse: '1',
67641
+ interpolation: '1',
67642
+ },
67643
+ {
67644
+ name: 'MR-T2-Brain',
67645
+ gradientOpacity: '4 0 1 160.25 1',
67646
+ specularPower: '40',
67647
+ scalarOpacity: '10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1',
67648
+ specular: '0.5',
67649
+ shade: '1',
67650
+ ambient: '0.3',
67651
+ colorTransfer: '16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1',
67652
+ diffuse: '0.6',
67653
+ interpolation: '1',
67654
+ },
67655
+ {
67656
+ name: 'DTI-FA-Brain',
67657
+ gradientOpacity: '4 0 1 0.9950 1',
67658
+ specularPower: '40',
67659
+ scalarOpacity: '16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0',
67660
+ specular: '0.5',
67661
+ shade: '1',
67662
+ ambient: '0.3',
67663
+ colorTransfer: '28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0',
67664
+ diffuse: '0.9',
67665
+ interpolation: '1',
67666
+ },
67667
+ ];
67668
+ /* harmony default export */ const viewportPresets = (presets);
67669
+
67670
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/backgroundColors.js
67671
+ const backgroundColors = {
67672
+ slicer3D: [160 / 255, 164 / 255, 217 / 255],
67673
+ };
67674
+ /* harmony default export */ const constants_backgroundColors = ((/* unused pure expression or super */ null && (backgroundColors)));
67675
+
67676
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js
67677
+
67678
+
67679
+
67680
+
67681
+
67682
+
67683
+
67684
+
67685
+
67846
67686
  /***/ }),
67847
67687
 
67848
67688
  /***/ 76617:
@@ -68574,7 +68414,7 @@ function isContourSegmentationAnnotation(annotation) {
68574
68414
 
68575
68415
  "use strict";
68576
68416
  /* unused harmony export version */
68577
- const version = '3.30.3';
68417
+ const version = '3.32.5';
68578
68418
 
68579
68419
 
68580
68420
  /***/ }),
@@ -73861,10 +73701,13 @@ class StackViewport extends Viewport/* default */.A {
73861
73701
  this.imageKeyToIndexMap.get(multiSliceReference.referencedImageId);
73862
73702
  return testIndex <= rangeEndSliceIndex && testIndex >= foundSliceIndex;
73863
73703
  }
73864
- if (!super.isReferenceViewable(viewRef, options)) {
73704
+ if (!super.isReferenceViewable(viewRef, {
73705
+ ...options,
73706
+ withOrientation: options?.asVolume,
73707
+ })) {
73865
73708
  return false;
73866
73709
  }
73867
- if (viewRef.volumeId) {
73710
+ if (viewRef.volumeId || viewRef.FrameOfReferenceUID) {
73868
73711
  return options.asVolume;
73869
73712
  }
73870
73713
  const { cameraFocalPoint } = viewRef;
@@ -74866,8 +74709,8 @@ var rendering_transform = __webpack_require__(45354);
74866
74709
  var Viewport = __webpack_require__(10056);
74867
74710
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js + 3 modules
74868
74711
  var helpers = __webpack_require__(40661);
74869
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 6 modules
74870
- var constants = __webpack_require__(19325);
74712
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 4 modules
74713
+ var constants = __webpack_require__(76491);
74871
74714
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/triggerEvent.js
74872
74715
  var triggerEvent = __webpack_require__(69372);
74873
74716
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js + 2 modules
@@ -79051,70 +78894,692 @@ function getEnabledElements() {
79051
78894
 
79052
78895
  /***/ }),
79053
78896
 
79054
- /***/ 87063:
78897
+ /***/ 86871:
79055
78898
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
79056
78899
 
79057
78900
  "use strict";
79058
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
79059
- /* harmony export */ C: () => (/* binding */ getBoundingBoxAroundShapeWorld),
79060
- /* harmony export */ g: () => (/* binding */ getBoundingBoxAroundShapeIJK)
79061
- /* harmony export */ });
79062
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15327);
79063
78901
 
79064
- const { EPSILON } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.CONSTANTS;
79065
- function calculateBoundingBox(points, dimensions, isWorld = false) {
79066
- let xMin = Infinity;
79067
- let xMax = isWorld ? -Infinity : 0;
79068
- let yMin = Infinity;
79069
- let yMax = isWorld ? -Infinity : 0;
79070
- let zMin = Infinity;
79071
- let zMax = isWorld ? -Infinity : 0;
79072
- const is3D = points[0]?.length === 3;
79073
- for (let i = 0; i < points.length; i++) {
79074
- const p = points[i];
79075
- xMin = Math.min(p[0], xMin);
79076
- xMax = Math.max(p[0], xMax);
79077
- yMin = Math.min(p[1], yMin);
79078
- yMax = Math.max(p[1], yMax);
79079
- if (is3D) {
79080
- zMin = Math.min(p[2] ?? zMin, zMin);
79081
- zMax = Math.max(p[2] ?? zMax, zMax);
79082
- }
79083
- }
79084
- if (dimensions) {
79085
- xMin = Math.max(isWorld ? dimensions[0] + EPSILON : 0, xMin);
79086
- xMax = Math.min(isWorld ? dimensions[0] - EPSILON : dimensions[0] - 1, xMax);
79087
- yMin = Math.max(isWorld ? dimensions[1] + EPSILON : 0, yMin);
79088
- yMax = Math.min(isWorld ? dimensions[1] - EPSILON : dimensions[1] - 1, yMax);
79089
- if (is3D && dimensions.length === 3) {
79090
- zMin = Math.max(isWorld ? dimensions[2] + EPSILON : 0, zMin);
79091
- zMax = Math.min(isWorld ? dimensions[2] - EPSILON : dimensions[2] - 1, zMax);
79092
- }
79093
- }
79094
- else if (!isWorld) {
79095
- xMin = Math.max(0, xMin);
79096
- xMax = Math.min(Infinity, xMax);
79097
- yMin = Math.max(0, yMin);
79098
- yMax = Math.min(Infinity, yMax);
79099
- if (is3D) {
79100
- zMin = Math.max(0, zMin);
79101
- zMax = Math.min(Infinity, zMax);
79102
- }
79103
- }
79104
- return is3D
79105
- ? [
79106
- [xMin, xMax],
79107
- [yMin, yMax],
79108
- [zMin, zMax],
79109
- ]
79110
- : [[xMin, xMax], [yMin, yMax], null];
79111
- }
79112
- function getBoundingBoxAroundShapeIJK(points, dimensions) {
79113
- return calculateBoundingBox(points, dimensions, false);
79114
- }
79115
- function getBoundingBoxAroundShapeWorld(points, clipBounds) {
79116
- return calculateBoundingBox(points, clipBounds, true);
78902
+ // EXPORTS
78903
+ __webpack_require__.d(__webpack_exports__, {
78904
+ i: () => (/* binding */ VIEWPORT_MIN_SIZE),
78905
+ A: () => (/* binding */ RenderingEngine_BaseRenderingEngine)
78906
+ });
78907
+
78908
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/Events.js
78909
+ var Events = __webpack_require__(32643);
78910
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/renderingEngineCache.js
78911
+ var renderingEngineCache = __webpack_require__(5862);
78912
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/eventTarget.js
78913
+ var eventTarget = __webpack_require__(10364);
78914
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/uuidv4.js
78915
+ var uuidv4 = __webpack_require__(80221);
78916
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/triggerEvent.js
78917
+ var triggerEvent = __webpack_require__(69372);
78918
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
78919
+ var ViewportType = __webpack_require__(41864);
78920
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
78921
+ var BaseVolumeViewport = __webpack_require__(46347);
78922
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js + 14 modules
78923
+ var StackViewport = __webpack_require__(79720);
78924
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/viewportTypeUsesCustomRenderingPipeline.js
78925
+ var viewportTypeUsesCustomRenderingPipeline = __webpack_require__(81047);
78926
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.js
78927
+ var getOrCreateCanvas = __webpack_require__(30135);
78928
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js + 2 modules
78929
+ var init = __webpack_require__(26896);
78930
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js
78931
+ var viewportTypeToViewportClass = __webpack_require__(61177);
78932
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 1 modules
78933
+ var enums = __webpack_require__(71851);
78934
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/stats/constants.js
78935
+ const PANEL_CONFIG = {
78936
+ WIDTH: 160,
78937
+ HEIGHT: 96,
78938
+ TEXT_PADDING: 3,
78939
+ TEXT_Y_OFFSET: 2,
78940
+ GRAPH_Y_OFFSET: 15,
78941
+ GRAPH_WIDTH: 150,
78942
+ GRAPH_HEIGHT: 70,
78943
+ FONT_SIZE: 9,
78944
+ FONT_FAMILY: 'Helvetica,Arial,sans-serif',
78945
+ GRAPH_ALPHA: 0.9,
78946
+ };
78947
+ const STATS_CONFIG = {
78948
+ UPDATE_INTERVAL: 1000,
78949
+ MAX_MS_VALUE: 200,
78950
+ MAX_FPS_VALUE: 300,
78951
+ OVERLAY_STYLES: {
78952
+ position: 'fixed',
78953
+ top: '0px',
78954
+ right: '0px',
78955
+ left: 'auto',
78956
+ zIndex: '9999',
78957
+ cursor: 'pointer',
78958
+ opacity: '0.9',
78959
+ },
78960
+ };
78961
+ const CONVERSION = {
78962
+ BYTES_TO_MB: 1048576,
78963
+ MS_PER_SECOND: 1000,
78964
+ };
78965
+ const PANEL_CONFIGS = [
78966
+ { name: 'FPS', foregroundColor: '#0ff', backgroundColor: '#002' },
78967
+ { name: 'MS', foregroundColor: '#0f0', backgroundColor: '#020' },
78968
+ { name: 'MB', foregroundColor: '#f08', backgroundColor: '#201' },
78969
+ ];
78970
+
78971
+
78972
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/stats/StatsPanel.js
78973
+
78974
+ class StatsPanel {
78975
+ constructor(name, foregroundColor, backgroundColor) {
78976
+ this.minValue = Infinity;
78977
+ this.maxValue = 0;
78978
+ this.name = name;
78979
+ this.foregroundColor = foregroundColor;
78980
+ this.backgroundColor = backgroundColor;
78981
+ this.devicePixelRatio = Math.round(window.devicePixelRatio || 1);
78982
+ this.dimensions = this.calculateDimensions();
78983
+ this.dom = this.createCanvas();
78984
+ this.context = this.initializeContext();
78985
+ this.drawInitialPanel();
78986
+ }
78987
+ update(value, maxValue) {
78988
+ this.updateMinMax(value);
78989
+ this.clearTextArea();
78990
+ this.drawText(value);
78991
+ this.scrollGraph();
78992
+ this.drawNewValue(value, maxValue);
78993
+ }
78994
+ calculateDimensions() {
78995
+ const pr = this.devicePixelRatio;
78996
+ return {
78997
+ width: PANEL_CONFIG.WIDTH * pr,
78998
+ height: PANEL_CONFIG.HEIGHT * pr,
78999
+ textX: PANEL_CONFIG.TEXT_PADDING * pr,
79000
+ textY: PANEL_CONFIG.TEXT_Y_OFFSET * pr,
79001
+ graphX: PANEL_CONFIG.TEXT_PADDING * pr,
79002
+ graphY: PANEL_CONFIG.GRAPH_Y_OFFSET * pr,
79003
+ graphWidth: PANEL_CONFIG.GRAPH_WIDTH * pr,
79004
+ graphHeight: PANEL_CONFIG.GRAPH_HEIGHT * pr,
79005
+ };
79006
+ }
79007
+ createCanvas() {
79008
+ const canvas = document.createElement('canvas');
79009
+ canvas.width = this.dimensions.width;
79010
+ canvas.height = this.dimensions.height;
79011
+ canvas.style.cssText = `width:${PANEL_CONFIG.WIDTH}px;height:${PANEL_CONFIG.HEIGHT}px`;
79012
+ return canvas;
79013
+ }
79014
+ initializeContext() {
79015
+ const ctx = this.dom.getContext('2d');
79016
+ if (!ctx) {
79017
+ throw new Error('Failed to get 2D context');
79018
+ }
79019
+ ctx.font = `bold ${PANEL_CONFIG.FONT_SIZE * this.devicePixelRatio}px ${PANEL_CONFIG.FONT_FAMILY}`;
79020
+ ctx.textBaseline = 'top';
79021
+ return ctx;
79022
+ }
79023
+ drawInitialPanel() {
79024
+ const { width, height, textX, textY, graphX, graphY, graphWidth, graphHeight, } = this.dimensions;
79025
+ this.context.fillStyle = this.backgroundColor;
79026
+ this.context.fillRect(0, 0, width, height);
79027
+ this.context.fillStyle = this.foregroundColor;
79028
+ this.context.fillText(this.name, textX, textY);
79029
+ this.context.fillRect(graphX, graphY, graphWidth, graphHeight);
79030
+ this.context.fillStyle = this.backgroundColor;
79031
+ this.context.globalAlpha = PANEL_CONFIG.GRAPH_ALPHA;
79032
+ this.context.fillRect(graphX, graphY, graphWidth, graphHeight);
79033
+ this.context.globalAlpha = 1;
79034
+ }
79035
+ updateMinMax(value) {
79036
+ this.minValue = Math.min(this.minValue, value);
79037
+ this.maxValue = Math.max(this.maxValue, value);
79038
+ }
79039
+ clearTextArea() {
79040
+ const { width, graphY } = this.dimensions;
79041
+ this.context.fillStyle = this.backgroundColor;
79042
+ this.context.fillRect(0, 0, width, graphY);
79043
+ }
79044
+ drawText(value) {
79045
+ const { textX, textY } = this.dimensions;
79046
+ const text = this.formatText(value);
79047
+ this.context.fillStyle = this.foregroundColor;
79048
+ this.context.fillText(text, textX, textY);
79049
+ }
79050
+ formatText(value) {
79051
+ const roundedValue = Math.round(value);
79052
+ const roundedMin = Math.round(this.minValue);
79053
+ const roundedMax = Math.round(this.maxValue);
79054
+ return `${roundedValue} ${this.name} (${roundedMin}-${roundedMax})`;
79055
+ }
79056
+ scrollGraph() {
79057
+ const { graphX, graphY, graphWidth, graphHeight } = this.dimensions;
79058
+ const pr = this.devicePixelRatio;
79059
+ this.context.drawImage(this.dom, graphX + pr, graphY, graphWidth - pr, graphHeight, graphX, graphY, graphWidth - pr, graphHeight);
79060
+ }
79061
+ drawNewValue(value, maxValue) {
79062
+ const { graphX, graphY, graphWidth, graphHeight } = this.dimensions;
79063
+ const pr = this.devicePixelRatio;
79064
+ const x = graphX + graphWidth - pr;
79065
+ this.context.fillStyle = this.foregroundColor;
79066
+ this.context.fillRect(x, graphY, pr, graphHeight);
79067
+ const normalizedHeight = Math.round((1 - value / maxValue) * graphHeight);
79068
+ this.context.fillStyle = this.backgroundColor;
79069
+ this.context.globalAlpha = PANEL_CONFIG.GRAPH_ALPHA;
79070
+ this.context.fillRect(x, graphY, pr, normalizedHeight);
79071
+ this.context.globalAlpha = 1;
79072
+ }
79073
+ }
79074
+
79075
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/stats/enums.js
79076
+ var PanelType;
79077
+ (function (PanelType) {
79078
+ PanelType[PanelType["FPS"] = 0] = "FPS";
79079
+ PanelType[PanelType["MS"] = 1] = "MS";
79080
+ PanelType[PanelType["MEMORY"] = 2] = "MEMORY";
79081
+ })(PanelType || (PanelType = {}));
79082
+
79083
+
79084
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/stats/StatsOverlay.js
79085
+
79086
+
79087
+
79088
+ class StatsOverlay {
79089
+ static { this.instance = null; }
79090
+ constructor() {
79091
+ this.dom = null;
79092
+ this.currentMode = 0;
79093
+ this.startTime = 0;
79094
+ this.lastUpdateTime = 0;
79095
+ this.frameCount = 0;
79096
+ this.panels = new Map();
79097
+ this.animationFrameId = null;
79098
+ this.isSetup = false;
79099
+ }
79100
+ static getInstance() {
79101
+ if (!StatsOverlay.instance) {
79102
+ StatsOverlay.instance = new StatsOverlay();
79103
+ }
79104
+ return StatsOverlay.instance;
79105
+ }
79106
+ setup() {
79107
+ if (this.isSetup) {
79108
+ return;
79109
+ }
79110
+ try {
79111
+ this.dom = this.createOverlayElement();
79112
+ this.startTime = performance.now();
79113
+ this.lastUpdateTime = this.startTime;
79114
+ this.initializePanels();
79115
+ this.showPanel(PanelType.FPS);
79116
+ this.applyOverlayStyles();
79117
+ document.body.appendChild(this.dom);
79118
+ this.startLoop();
79119
+ this.isSetup = true;
79120
+ }
79121
+ catch (error) {
79122
+ console.warn('Failed to setup stats overlay:', error);
79123
+ }
79124
+ }
79125
+ cleanup() {
79126
+ this.stopLoop();
79127
+ if (this.dom && this.dom.parentNode) {
79128
+ this.dom.parentNode.removeChild(this.dom);
79129
+ }
79130
+ this.dom = null;
79131
+ this.panels.clear();
79132
+ this.isSetup = false;
79133
+ }
79134
+ showPanel(panelType) {
79135
+ const children = Array.from(this.dom.children);
79136
+ children.forEach((child, index) => {
79137
+ child.style.display = index === panelType ? 'block' : 'none';
79138
+ });
79139
+ this.currentMode = panelType;
79140
+ }
79141
+ update() {
79142
+ this.startTime = this.updateStats();
79143
+ }
79144
+ createOverlayElement() {
79145
+ const element = document.createElement('div');
79146
+ element.addEventListener('click', this.handleClick.bind(this), false);
79147
+ return element;
79148
+ }
79149
+ applyOverlayStyles() {
79150
+ Object.assign(this.dom.style, STATS_CONFIG.OVERLAY_STYLES);
79151
+ }
79152
+ handleClick(event) {
79153
+ event.preventDefault();
79154
+ const panelCount = this.dom.children.length;
79155
+ this.showPanel((this.currentMode + 1) % panelCount);
79156
+ }
79157
+ initializePanels() {
79158
+ const fpsPanel = new StatsPanel(PANEL_CONFIGS[PanelType.FPS].name, PANEL_CONFIGS[PanelType.FPS].foregroundColor, PANEL_CONFIGS[PanelType.FPS].backgroundColor);
79159
+ this.addPanel(PanelType.FPS, fpsPanel);
79160
+ const msPanel = new StatsPanel(PANEL_CONFIGS[PanelType.MS].name, PANEL_CONFIGS[PanelType.MS].foregroundColor, PANEL_CONFIGS[PanelType.MS].backgroundColor);
79161
+ this.addPanel(PanelType.MS, msPanel);
79162
+ if (this.isMemoryAvailable()) {
79163
+ const memPanel = new StatsPanel(PANEL_CONFIGS[PanelType.MEMORY].name, PANEL_CONFIGS[PanelType.MEMORY].foregroundColor, PANEL_CONFIGS[PanelType.MEMORY].backgroundColor);
79164
+ this.addPanel(PanelType.MEMORY, memPanel);
79165
+ }
79166
+ }
79167
+ isMemoryAvailable() {
79168
+ const perf = performance;
79169
+ return perf.memory !== undefined;
79170
+ }
79171
+ addPanel(type, panel) {
79172
+ this.dom.appendChild(panel.dom);
79173
+ this.panels.set(type, panel);
79174
+ }
79175
+ startLoop() {
79176
+ const loop = () => {
79177
+ this.update();
79178
+ this.animationFrameId = requestAnimationFrame(loop);
79179
+ };
79180
+ this.animationFrameId = requestAnimationFrame(loop);
79181
+ }
79182
+ stopLoop() {
79183
+ if (this.animationFrameId !== null) {
79184
+ cancelAnimationFrame(this.animationFrameId);
79185
+ this.animationFrameId = null;
79186
+ }
79187
+ }
79188
+ updateStats() {
79189
+ this.frameCount++;
79190
+ const currentTime = performance.now();
79191
+ const deltaTime = currentTime - this.startTime;
79192
+ const msPanel = this.panels.get(PanelType.MS);
79193
+ if (msPanel) {
79194
+ msPanel.update(deltaTime, STATS_CONFIG.MAX_MS_VALUE);
79195
+ }
79196
+ if (currentTime >= this.lastUpdateTime + STATS_CONFIG.UPDATE_INTERVAL) {
79197
+ const fps = (this.frameCount * CONVERSION.MS_PER_SECOND) /
79198
+ (currentTime - this.lastUpdateTime);
79199
+ const fpsPanel = this.panels.get(PanelType.FPS);
79200
+ if (fpsPanel) {
79201
+ fpsPanel.update(fps, STATS_CONFIG.MAX_FPS_VALUE);
79202
+ }
79203
+ this.lastUpdateTime = currentTime;
79204
+ this.frameCount = 0;
79205
+ this.updateMemoryPanel();
79206
+ }
79207
+ return currentTime;
79208
+ }
79209
+ updateMemoryPanel() {
79210
+ const memPanel = this.panels.get(PanelType.MEMORY);
79211
+ if (!memPanel) {
79212
+ return;
79213
+ }
79214
+ const perf = performance;
79215
+ if (perf.memory) {
79216
+ const memoryMB = perf.memory.usedJSHeapSize / CONVERSION.BYTES_TO_MB;
79217
+ const maxMemoryMB = perf.memory.jsHeapSizeLimit / CONVERSION.BYTES_TO_MB;
79218
+ memPanel.update(memoryMB, maxMemoryMB);
79219
+ }
79220
+ }
79221
+ }
79222
+
79223
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/stats/index.js
79224
+
79225
+ const stats_StatsOverlay = StatsOverlay.getInstance();
79226
+
79227
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseRenderingEngine.js
79228
+
79229
+
79230
+
79231
+
79232
+
79233
+
79234
+
79235
+
79236
+
79237
+
79238
+
79239
+
79240
+
79241
+
79242
+ const VIEWPORT_MIN_SIZE = 2;
79243
+ class BaseRenderingEngine {
79244
+ constructor(id) {
79245
+ this._needsRender = new Set();
79246
+ this._animationFrameSet = false;
79247
+ this._animationFrameHandle = null;
79248
+ this.renderFrameOfReference = (FrameOfReferenceUID) => {
79249
+ const viewports = this._getViewportsAsArray();
79250
+ const viewportIdsWithSameFrameOfReferenceUID = viewports.map((vp) => {
79251
+ if (vp.getFrameOfReferenceUID() === FrameOfReferenceUID) {
79252
+ return vp.id;
79253
+ }
79254
+ });
79255
+ this.renderViewports(viewportIdsWithSameFrameOfReferenceUID);
79256
+ };
79257
+ this.id = id ? id : (0,uuidv4/* default */.A)();
79258
+ this.useCPURendering = (0,init/* getShouldUseCPURendering */.LH)();
79259
+ renderingEngineCache/* default */.A.set(this);
79260
+ if (!(0,init/* isCornerstoneInitialized */.Dh)()) {
79261
+ throw new Error('@cornerstonejs/core is not initialized, run init() first');
79262
+ }
79263
+ this._viewports = new Map();
79264
+ this.hasBeenDestroyed = false;
79265
+ const config = (0,init/* getConfiguration */.D0)();
79266
+ if (config?.debug?.statsOverlay) {
79267
+ stats_StatsOverlay.setup();
79268
+ }
79269
+ }
79270
+ enableElement(viewportInputEntry) {
79271
+ const viewportInput = this._normalizeViewportInputEntry(viewportInputEntry);
79272
+ this._throwIfDestroyed();
79273
+ const { element, viewportId } = viewportInput;
79274
+ if (!element) {
79275
+ throw new Error('No element provided');
79276
+ }
79277
+ const viewport = this.getViewport(viewportId);
79278
+ if (viewport) {
79279
+ this.disableElement(viewportId);
79280
+ }
79281
+ const { type } = viewportInput;
79282
+ const viewportUsesCustomRenderingPipeline = (0,viewportTypeUsesCustomRenderingPipeline/* default */.A)(type);
79283
+ if (!this.useCPURendering && !viewportUsesCustomRenderingPipeline) {
79284
+ this.enableVTKjsDrivenViewport(viewportInput);
79285
+ }
79286
+ else {
79287
+ this.addCustomViewport(viewportInput);
79288
+ }
79289
+ const canvas = (0,getOrCreateCanvas/* default */.Ay)(element);
79290
+ const { background } = viewportInput.defaultOptions;
79291
+ this.fillCanvasWithBackgroundColor(canvas, background);
79292
+ }
79293
+ disableElement(viewportId) {
79294
+ this._throwIfDestroyed();
79295
+ const viewport = this.getViewport(viewportId);
79296
+ if (!viewport) {
79297
+ console.warn(`viewport ${viewportId} does not exist`);
79298
+ return;
79299
+ }
79300
+ this._resetViewport(viewport);
79301
+ if (!(0,viewportTypeUsesCustomRenderingPipeline/* default */.A)(viewport.type) &&
79302
+ !this.useCPURendering) {
79303
+ if (this.offscreenMultiRenderWindow) {
79304
+ this.offscreenMultiRenderWindow.removeRenderer(viewportId);
79305
+ }
79306
+ }
79307
+ this._removeViewport(viewportId);
79308
+ viewport.isDisabled = true;
79309
+ this._needsRender.delete(viewportId);
79310
+ const viewports = this.getViewports();
79311
+ if (!viewports.length) {
79312
+ this._clearAnimationFrame();
79313
+ }
79314
+ }
79315
+ setViewports(publicViewportInputEntries) {
79316
+ const viewportInputEntries = this._normalizeViewportInputEntries(publicViewportInputEntries);
79317
+ this._throwIfDestroyed();
79318
+ this._reset();
79319
+ const vtkDrivenViewportInputEntries = [];
79320
+ const customRenderingViewportInputEntries = [];
79321
+ viewportInputEntries.forEach((vpie) => {
79322
+ if (!this.useCPURendering &&
79323
+ !(0,viewportTypeUsesCustomRenderingPipeline/* default */.A)(vpie.type)) {
79324
+ vtkDrivenViewportInputEntries.push(vpie);
79325
+ }
79326
+ else {
79327
+ customRenderingViewportInputEntries.push(vpie);
79328
+ }
79329
+ });
79330
+ this.setVtkjsDrivenViewports(vtkDrivenViewportInputEntries);
79331
+ this.setCustomViewports(customRenderingViewportInputEntries);
79332
+ viewportInputEntries.forEach((vp) => {
79333
+ const canvas = (0,getOrCreateCanvas/* default */.Ay)(vp.element);
79334
+ const { background } = vp.defaultOptions;
79335
+ this.fillCanvasWithBackgroundColor(canvas, background);
79336
+ });
79337
+ }
79338
+ resize(immediate = true, keepCamera = true) {
79339
+ this._throwIfDestroyed();
79340
+ const viewports = this._getViewportsAsArray();
79341
+ const vtkDrivenViewports = [];
79342
+ const customRenderingViewports = [];
79343
+ viewports.forEach((vpie) => {
79344
+ if (!(0,viewportTypeUsesCustomRenderingPipeline/* default */.A)(vpie.type)) {
79345
+ vtkDrivenViewports.push(vpie);
79346
+ }
79347
+ else {
79348
+ customRenderingViewports.push(vpie);
79349
+ }
79350
+ });
79351
+ if (vtkDrivenViewports.length) {
79352
+ this._resizeVTKViewports(vtkDrivenViewports, keepCamera, immediate);
79353
+ }
79354
+ if (customRenderingViewports.length) {
79355
+ this._resizeUsingCustomResizeHandler(customRenderingViewports, keepCamera, immediate);
79356
+ }
79357
+ }
79358
+ getViewport(viewportId) {
79359
+ return this._viewports?.get(viewportId);
79360
+ }
79361
+ getViewports() {
79362
+ this._throwIfDestroyed();
79363
+ return this._getViewportsAsArray();
79364
+ }
79365
+ getStackViewport(viewportId) {
79366
+ this._throwIfDestroyed();
79367
+ const viewport = this.getViewport(viewportId);
79368
+ if (!viewport) {
79369
+ throw new Error(`Viewport with Id ${viewportId} does not exist`);
79370
+ }
79371
+ if (!(viewport instanceof StackViewport/* default */.A)) {
79372
+ throw new Error(`Viewport with Id ${viewportId} is not a StackViewport.`);
79373
+ }
79374
+ return viewport;
79375
+ }
79376
+ getStackViewports() {
79377
+ this._throwIfDestroyed();
79378
+ const viewports = this.getViewports();
79379
+ return viewports.filter((vp) => vp instanceof StackViewport/* default */.A);
79380
+ }
79381
+ getVolumeViewports() {
79382
+ this._throwIfDestroyed();
79383
+ const viewports = this.getViewports();
79384
+ const isVolumeViewport = (viewport) => {
79385
+ return viewport instanceof BaseVolumeViewport/* default */.A;
79386
+ };
79387
+ return viewports.filter(isVolumeViewport);
79388
+ }
79389
+ render() {
79390
+ const viewports = this.getViewports();
79391
+ const viewportIds = viewports.map((vp) => vp.id);
79392
+ this._setViewportsToBeRenderedNextFrame(viewportIds);
79393
+ }
79394
+ renderViewports(viewportIds) {
79395
+ this._setViewportsToBeRenderedNextFrame(viewportIds);
79396
+ }
79397
+ renderViewport(viewportId) {
79398
+ this._setViewportsToBeRenderedNextFrame([viewportId]);
79399
+ }
79400
+ destroy() {
79401
+ if (this.hasBeenDestroyed) {
79402
+ return;
79403
+ }
79404
+ stats_StatsOverlay.cleanup();
79405
+ if (!this.useCPURendering) {
79406
+ const viewports = this._getViewportsAsArray();
79407
+ viewports.forEach((vp) => {
79408
+ if (this.offscreenMultiRenderWindow) {
79409
+ this.offscreenMultiRenderWindow.removeRenderer(vp.id);
79410
+ }
79411
+ });
79412
+ if (this.offscreenMultiRenderWindow) {
79413
+ this.offscreenMultiRenderWindow.delete();
79414
+ }
79415
+ delete this.offscreenMultiRenderWindow;
79416
+ }
79417
+ this._reset();
79418
+ renderingEngineCache/* default */.A.delete(this.id);
79419
+ this.hasBeenDestroyed = true;
79420
+ }
79421
+ fillCanvasWithBackgroundColor(canvas, backgroundColor) {
79422
+ const ctx = canvas.getContext('2d');
79423
+ let fillStyle;
79424
+ if (backgroundColor) {
79425
+ const rgb = backgroundColor.map((f) => Math.floor(255 * f));
79426
+ fillStyle = `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;
79427
+ }
79428
+ else {
79429
+ fillStyle = 'black';
79430
+ }
79431
+ ctx.fillStyle = fillStyle;
79432
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
79433
+ }
79434
+ _normalizeViewportInputEntry(viewportInputEntry) {
79435
+ const { type, defaultOptions } = viewportInputEntry;
79436
+ let options = defaultOptions;
79437
+ if (!options || Object.keys(options).length === 0) {
79438
+ options = {
79439
+ background: [0, 0, 0],
79440
+ orientation: null,
79441
+ displayArea: null,
79442
+ };
79443
+ if (type === ViewportType/* default */.A.ORTHOGRAPHIC) {
79444
+ options = {
79445
+ ...options,
79446
+ orientation: enums.OrientationAxis.AXIAL,
79447
+ };
79448
+ }
79449
+ }
79450
+ return {
79451
+ ...viewportInputEntry,
79452
+ defaultOptions: options,
79453
+ };
79454
+ }
79455
+ _normalizeViewportInputEntries(viewportInputEntries) {
79456
+ const normalizedViewportInputs = [];
79457
+ viewportInputEntries.forEach((viewportInput) => {
79458
+ normalizedViewportInputs.push(this._normalizeViewportInputEntry(viewportInput));
79459
+ });
79460
+ return normalizedViewportInputs;
79461
+ }
79462
+ _resizeUsingCustomResizeHandler(customRenderingViewports, keepCamera = true, immediate = true) {
79463
+ customRenderingViewports.forEach((vp) => {
79464
+ if (typeof vp.resize === 'function') {
79465
+ vp.resize();
79466
+ }
79467
+ });
79468
+ customRenderingViewports.forEach((vp) => {
79469
+ const prevCamera = vp.getCamera();
79470
+ vp.resetCamera();
79471
+ if (keepCamera) {
79472
+ vp.setCamera(prevCamera);
79473
+ }
79474
+ });
79475
+ if (immediate) {
79476
+ this.render();
79477
+ }
79478
+ }
79479
+ _removeViewport(viewportId) {
79480
+ const viewport = this.getViewport(viewportId);
79481
+ if (!viewport) {
79482
+ console.warn(`viewport ${viewportId} does not exist`);
79483
+ return;
79484
+ }
79485
+ this._viewports.delete(viewportId);
79486
+ }
79487
+ addCustomViewport(viewportInputEntry) {
79488
+ const { element, viewportId, type, defaultOptions } = viewportInputEntry;
79489
+ element.tabIndex = -1;
79490
+ const canvas = (0,getOrCreateCanvas/* default */.Ay)(element);
79491
+ const { clientWidth, clientHeight } = canvas;
79492
+ if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
79493
+ canvas.width = clientWidth;
79494
+ canvas.height = clientHeight;
79495
+ }
79496
+ const viewportInput = {
79497
+ id: viewportId,
79498
+ renderingEngineId: this.id,
79499
+ element,
79500
+ type,
79501
+ canvas,
79502
+ sx: 0,
79503
+ sy: 0,
79504
+ sWidth: clientWidth,
79505
+ sHeight: clientHeight,
79506
+ defaultOptions: defaultOptions || {},
79507
+ };
79508
+ const ViewportType = viewportTypeToViewportClass/* default */.A[type];
79509
+ const viewport = new ViewportType(viewportInput);
79510
+ this._viewports.set(viewportId, viewport);
79511
+ const eventDetail = {
79512
+ element,
79513
+ viewportId,
79514
+ renderingEngineId: this.id,
79515
+ };
79516
+ (0,triggerEvent/* default */.A)(eventTarget/* default */.A, Events/* default */.A.ELEMENT_ENABLED, eventDetail);
79517
+ }
79518
+ getRenderer(viewportId) {
79519
+ return this.offscreenMultiRenderWindow.getRenderer(viewportId);
79520
+ }
79521
+ getOffscreenMultiRenderWindow(viewportId) {
79522
+ if (this.useCPURendering) {
79523
+ throw new Error('Offscreen multi render window is not available when using CPU rendering.');
79524
+ }
79525
+ return this.offscreenMultiRenderWindow;
79526
+ }
79527
+ setCustomViewports(viewportInputEntries) {
79528
+ viewportInputEntries.forEach((vpie) => {
79529
+ this.addCustomViewport(vpie);
79530
+ });
79531
+ }
79532
+ _getViewportsAsArray() {
79533
+ return Array.from(this._viewports.values());
79534
+ }
79535
+ _setViewportsToBeRenderedNextFrame(viewportIds) {
79536
+ viewportIds.forEach((viewportId) => {
79537
+ this._needsRender.add(viewportId);
79538
+ });
79539
+ this._render();
79540
+ }
79541
+ _render() {
79542
+ if (this._needsRender.size > 0 && !this._animationFrameSet) {
79543
+ this._animationFrameHandle = window.requestAnimationFrame(this._renderFlaggedViewports);
79544
+ this._animationFrameSet = true;
79545
+ }
79546
+ }
79547
+ _resetViewport(viewport) {
79548
+ const renderingEngineId = this.id;
79549
+ const { element, canvas, id: viewportId } = viewport;
79550
+ const eventDetail = {
79551
+ element,
79552
+ viewportId,
79553
+ renderingEngineId,
79554
+ };
79555
+ viewport.removeWidgets();
79556
+ (0,triggerEvent/* default */.A)(eventTarget/* default */.A, Events/* default */.A.ELEMENT_DISABLED, eventDetail);
79557
+ element.removeAttribute('data-viewport-uid');
79558
+ element.removeAttribute('data-rendering-engine-uid');
79559
+ const context = canvas.getContext('2d');
79560
+ context.clearRect(0, 0, canvas.width, canvas.height);
79561
+ }
79562
+ _clearAnimationFrame() {
79563
+ window.cancelAnimationFrame(this._animationFrameHandle);
79564
+ this._needsRender.clear();
79565
+ this._animationFrameSet = false;
79566
+ this._animationFrameHandle = null;
79567
+ }
79568
+ _reset() {
79569
+ const viewports = this._getViewportsAsArray();
79570
+ viewports.forEach((viewport) => {
79571
+ this._resetViewport(viewport);
79572
+ });
79573
+ this._clearAnimationFrame();
79574
+ this._viewports = new Map();
79575
+ }
79576
+ _throwIfDestroyed() {
79577
+ if (this.hasBeenDestroyed) {
79578
+ throw new Error('this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.');
79579
+ }
79580
+ }
79117
79581
  }
79582
+ /* harmony default export */ const RenderingEngine_BaseRenderingEngine = (BaseRenderingEngine);
79118
79583
 
79119
79584
 
79120
79585
  /***/ }),
@@ -88394,8 +88859,8 @@ __webpack_require__.d(__webpack_exports__, {
88394
88859
  var init = __webpack_require__(26896);
88395
88860
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/TiledRenderingEngine.js
88396
88861
  var RenderingEngine_TiledRenderingEngine = __webpack_require__(54072);
88397
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseRenderingEngine.js
88398
- var BaseRenderingEngine = __webpack_require__(30885);
88862
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseRenderingEngine.js + 5 modules
88863
+ var BaseRenderingEngine = __webpack_require__(86871);
88399
88864
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/vtkClasses/index.js + 26 modules
88400
88865
  var vtkClasses = __webpack_require__(42295);
88401
88866
  ;// ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/WebGLContextPool.js
@@ -88674,6 +89139,9 @@ class ContextPoolRenderingEngine_ContextPoolRenderingEngine extends BaseRenderin
88674
89139
  });
88675
89140
  renderWindow.render();
88676
89141
  allRenderers.forEach(({ renderer: r }) => r.setDraw(false));
89142
+ widgetRenderers.forEach((_, renderer) => {
89143
+ renderer.setDraw(false);
89144
+ });
88677
89145
  const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
88678
89146
  const context = openGLRenderWindow.get3DContext();
88679
89147
  const offScreenCanvas = context.canvas;
@@ -88686,6 +89154,10 @@ class ContextPoolRenderingEngine_ContextPoolRenderingEngine extends BaseRenderin
88686
89154
  _resizeOffScreenCanvasForViewport(viewportCanvas, offScreenCanvasContainer, offscreenMultiRenderWindow) {
88687
89155
  const offScreenCanvasWidth = viewportCanvas.width;
88688
89156
  const offScreenCanvasHeight = viewportCanvas.height;
89157
+ if (offScreenCanvasContainer.height === offScreenCanvasHeight &&
89158
+ offScreenCanvasContainer.width === offScreenCanvasWidth) {
89159
+ return;
89160
+ }
88689
89161
  offScreenCanvasContainer.width = offScreenCanvasWidth;
88690
89162
  offScreenCanvasContainer.height = offScreenCanvasHeight;
88691
89163
  offscreenMultiRenderWindow.resize();
@@ -89054,6 +89526,54 @@ var resourceSharingHelper = {
89054
89526
 
89055
89527
 
89056
89528
 
89529
+ /***/ }),
89530
+
89531
+ /***/ 91004:
89532
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
89533
+
89534
+ "use strict";
89535
+
89536
+ // EXPORTS
89537
+ __webpack_require__.d(__webpack_exports__, {
89538
+ A: () => (/* binding */ constants_mprCameraValues)
89539
+ });
89540
+
89541
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/deepFreeze.js
89542
+ function deepFreeze(object) {
89543
+ const propNames = Object.getOwnPropertyNames(object);
89544
+ for (const name of propNames) {
89545
+ const value = object[name];
89546
+ if (value && typeof value === 'object') {
89547
+ deepFreeze(value);
89548
+ }
89549
+ }
89550
+ return Object.freeze(object);
89551
+ }
89552
+ /* harmony default export */ const utilities_deepFreeze = (deepFreeze);
89553
+
89554
+ ;// ../../../node_modules/@cornerstonejs/core/dist/esm/constants/mprCameraValues.js
89555
+
89556
+ const MPR_CAMERA_VALUES = {
89557
+ axial: {
89558
+ viewPlaneNormal: [0, 0, -1],
89559
+ viewUp: [0, -1, 0],
89560
+ viewRight: [1, 0, 0],
89561
+ },
89562
+ sagittal: {
89563
+ viewPlaneNormal: [1, 0, 0],
89564
+ viewUp: [0, 0, 1],
89565
+ viewRight: [0, 1, 0],
89566
+ },
89567
+ coronal: {
89568
+ viewPlaneNormal: [0, -1, 0],
89569
+ viewUp: [0, 0, 1],
89570
+ viewRight: [1, 0, 0],
89571
+ },
89572
+ };
89573
+ const mprCameraValues = utilities_deepFreeze(MPR_CAMERA_VALUES);
89574
+ /* harmony default export */ const constants_mprCameraValues = (mprCameraValues);
89575
+
89576
+
89057
89577
  /***/ }),
89058
89578
 
89059
89579
  /***/ 91073:
@@ -90824,6 +91344,8 @@ var Events;
90824
91344
  Events["TOOLGROUP_VIEWPORT_REMOVED"] = "CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED";
90825
91345
  Events["TOOL_MODE_CHANGED"] = "CORNERSTONE_TOOLS_TOOL_MODE_CHANGED";
90826
91346
  Events["CROSSHAIR_TOOL_CENTER_CHANGED"] = "CORNERSTONE_TOOLS_CROSSHAIR_TOOL_CENTER_CHANGED";
91347
+ Events["VOLUMECROPPINGCONTROL_TOOL_CHANGED"] = "CORNERSTONE_TOOLS_VOLUMECROPPINGCONTROL_TOOL_CHANGED";
91348
+ Events["VOLUMECROPPING_TOOL_CHANGED"] = "CORNERSTONE_TOOLS_VOLUMECROPPING_TOOL_CHANGED";
90827
91349
  Events["ANNOTATION_ADDED"] = "CORNERSTONE_TOOLS_ANNOTATION_ADDED";
90828
91350
  Events["ANNOTATION_COMPLETED"] = "CORNERSTONE_TOOLS_ANNOTATION_COMPLETED";
90829
91351
  Events["ANNOTATION_MODIFIED"] = "CORNERSTONE_TOOLS_ANNOTATION_MODIFIED";
@@ -90958,8 +91480,8 @@ var esm = __webpack_require__(3823);
90958
91480
  var Plane = __webpack_require__(75127);
90959
91481
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/cache/cache.js
90960
91482
  var cache = __webpack_require__(49038);
90961
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 6 modules
90962
- var constants = __webpack_require__(19325);
91483
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 4 modules
91484
+ var constants = __webpack_require__(76491);
90963
91485
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 1 modules
90964
91486
  var enums = __webpack_require__(71851);
90965
91487
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/actorCheck.js