@ohif/app 3.9.0 → 3.9.2

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 (38) hide show
  1. package/dist/{1185.bundle.a6e220f00576d6926fe7.js → 1185.bundle.d328aabb2b43e9ea1f96.js} +62 -14
  2. package/dist/{1266.bundle.8fd38b710e91305721e5.js → 1266.bundle.46de27eda2ef1fce1243.js} +5 -0
  3. package/dist/{1436.bundle.773756cd51b69e887bac.js → 1436.bundle.27ae9c87e9fc7f52cad3.js} +234 -63
  4. package/dist/{1927.bundle.49539e3ab5b0aad1399c.js → 1927.bundle.2b2fa0b539d6ac5b0dc3.js} +1 -1
  5. package/dist/{3200.bundle.45b19ea468d6208f0e7e.js → 3200.bundle.ccb809fb554332d9a0f5.js} +62 -9
  6. package/dist/{149.bundle.b8d177954628f4631fc0.js → 3900.bundle.3937999d1ee1f391647a.js} +46 -7
  7. package/dist/{4571.bundle.3b1691730b3c57bf4d35.js → 4571.bundle.a37be49663df2f4a2c8a.js} +99 -89
  8. package/dist/{5247.bundle.03fa8aac71d4e597d708.js → 5247.bundle.1a1d7c27de482e4a73f3.js} +2 -2
  9. package/dist/{5252.bundle.5ec502c53a9cc877ed8d.js → 5252.bundle.f2675336275573a288d5.js} +13 -1
  10. package/dist/{1520.bundle.fde5eb31364855194519.js → 5630.bundle.1bd2402f37597078c1a1.js} +70 -59
  11. package/dist/{5717.bundle.848e13f256818475f57f.js → 5717.bundle.32836c212103dbbe8e4a.js} +247 -64
  12. package/dist/{7197.bundle.db0d51e5529d88a4cd7f.js → 7197.bundle.42a975bb7ae4a8df2d00.js} +2 -2
  13. package/dist/{7955.bundle.699bffabae3a9915c326.js → 7955.bundle.f6c5edb284bdf8b80f2a.js} +1 -1
  14. package/dist/{8228.bundle.55ac03d7165248f47d4e.js → 8228.bundle.0a7997d04c82dd8c11c5.js} +2 -2
  15. package/dist/{8523.bundle.648334132159465cdc41.js → 8523.bundle.c0ec85de98ba380ebeb4.js} +55 -13
  16. package/dist/{9551.bundle.13a3eec1e003a46095bc.js → 9551.bundle.63b2679dd7beee6396d8.js} +1 -1
  17. package/dist/{app.bundle.8e454976c3d4c3348750.js → app.bundle.632bc6188462e1c95a41.js} +156 -89
  18. package/dist/app.bundle.css +2 -2
  19. package/dist/index.html +1 -1
  20. package/dist/{polySeg.bundle.b79ae514989e86301c71.js → polySeg.bundle.6e85073e3abf2e6e6078.js} +1 -1
  21. package/dist/serve.json +1 -10
  22. package/dist/{suv-peak-worker.bundle.76dd4fdf82aaa2c3ad41.js → suv-peak-worker.bundle.1f483dc7131d7c26b517.js} +3 -3
  23. package/dist/sw.js +1 -1
  24. package/package.json +19 -19
  25. /package/dist/{1374.bundle.f56c07364d8f6ed2d00e.js → 1374.bundle.1ee8326c0748c7b1a7c0.js} +0 -0
  26. /package/dist/{213.bundle.38caad239bcfec1d28fb.js → 213.bundle.8c04fecea2e3796e4d73.js} +0 -0
  27. /package/dist/{2424.bundle.c7b6d3475da1ffff744b.js → 2424.bundle.38b19314ebd984c9d393.js} +0 -0
  28. /package/dist/{2825.bundle.ba60e0011bcebdf7a413.js → 2825.bundle.0307cae794e8b057c674.js} +0 -0
  29. /package/dist/{3198.bundle.9b80ca2f1d99a7f9a4fe.js → 3198.bundle.ab612063af0d67397377.js} +0 -0
  30. /package/dist/{4834.bundle.4bfa1bd1d4a163de3350.js → 4834.bundle.c25348524be5214e90d6.js} +0 -0
  31. /package/dist/{5139.bundle.b185b1df3847a2025829.js → 5139.bundle.db30dc02cf41e91c8985.js} +0 -0
  32. /package/dist/{5687.bundle.3a558ac2eb26f5295668.js → 5687.bundle.05de4787676bf79f9906.js} +0 -0
  33. /package/dist/{717.bundle.62437bfeb54f01269abe.js → 717.bundle.3a4b8835adf03e4554c7.js} +0 -0
  34. /package/dist/{8008.bundle.1ab47eccf7608fe14e92.js → 8008.bundle.d4187a30e8f656a21316.js} +0 -0
  35. /package/dist/{8259.bundle.4385bd89c3f7f4ced27c.js → 8259.bundle.990db2fa9ce0800319e9.js} +0 -0
  36. /package/dist/{8558.bundle.3b0654ad2a52ac9786dd.js → 8558.bundle.63714e2329c22c9cb9da.js} +0 -0
  37. /package/dist/{9611.bundle.767595c93877e5166c03.js → 9611.bundle.78a4ffb439f65cfd0379.js} +0 -0
  38. /package/dist/{9862.bundle.7146682e56aa66130ae6.js → 9862.bundle.aa2f8e0010f1be1bc87d.js} +0 -0
@@ -934,7 +934,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_18__/* ["def
934
934
  sliceIndex ??= currentIndex;
935
935
  const { viewPlaneNormal, focalPoint } = this.getCamera();
936
936
  const querySeparator = volumeId.includes('?') ? '&' : '?';
937
- return `volumeId:${volumeId}${querySeparator}sliceIndex=${sliceIndex}&viewPlaneNormal=${viewPlaneNormal.join(',')}&focalPoint=${focalPoint.join(',')}`;
937
+ return `volumeId:${volumeId}${querySeparator}sliceIndex=${sliceIndex}&viewPlaneNormal=${viewPlaneNormal.join(',')}`;
938
938
  }
939
939
  _addVolumeId(volumeId) {
940
940
  this.volumeIds.add(volumeId);
@@ -16844,6 +16844,12 @@ var cache = __webpack_require__(49038);
16844
16844
 
16845
16845
 
16846
16846
 
16847
+ function convertDataType(data, targetDataType) {
16848
+ const Constructor = (0,getBufferConfiguration/* getConstructorFromType */.j)(targetDataType);
16849
+ const convertedData = new Constructor(data.length);
16850
+ convertedData.set(data);
16851
+ return convertedData;
16852
+ }
16847
16853
  function vtkStreamingOpenGLTexture(publicAPI, model) {
16848
16854
  model.classHierarchy.push('vtkStreamingOpenGLTexture');
16849
16855
  model.updatedFrames = [];
@@ -16894,10 +16900,14 @@ function vtkStreamingOpenGLTexture(publicAPI, model) {
16894
16900
  if (!image) {
16895
16901
  continue;
16896
16902
  }
16897
- const data = image.voxelManager.getScalarData();
16903
+ let data = image.voxelManager.getScalarData();
16898
16904
  const gl = model.context;
16899
- const dataType = data.constructor.name;
16900
- const [pixData] = publicAPI.updateArrayDataTypeForGL(dataType, [data]);
16905
+ if (volume.dataType !== data.constructor.name) {
16906
+ data = convertDataType(data, volume.dataType);
16907
+ }
16908
+ const [pixData] = publicAPI.updateArrayDataTypeForGL(volume.dataType, [
16909
+ data,
16910
+ ]);
16901
16911
  publicAPI.bind();
16902
16912
  const zOffset = i;
16903
16913
  gl.texSubImage3D(model.target, 0, 0, 0, zOffset, model.width, model.height, 1, model.format, model.openGLDataType, pixData);
@@ -16931,8 +16941,12 @@ function vtkStreamingOpenGLTexture(publicAPI, model) {
16931
16941
  constructor = data.constructor;
16932
16942
  }
16933
16943
  const gl = model.context;
16934
- const dataType = data.constructor.name;
16935
- const [pixData] = publicAPI.updateArrayDataTypeForGL(dataType, [data]);
16944
+ if (volume.dataType !== data.constructor.name) {
16945
+ data = convertDataType(data, volume.dataType);
16946
+ }
16947
+ const [pixData] = publicAPI.updateArrayDataTypeForGL(volume.dataType, [
16948
+ data,
16949
+ ]);
16936
16950
  publicAPI.bind();
16937
16951
  let zOffset = i;
16938
16952
  gl.texSubImage3D(model.target, 0, 0, 0, zOffset, model.width, model.height, 1, model.format, model.openGLDataType, pixData);
@@ -25049,12 +25063,20 @@ const deepMerge = (target = {}, source = {}, optionsArgument = undefined) => {
25049
25063
  /* harmony import */ var _getScalingParameters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32173);
25050
25064
  /* harmony import */ var _hasFloatScalingParameters__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30169);
25051
25065
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(59693);
25066
+ /* harmony import */ var _cache_cache__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49038);
25067
+
25052
25068
 
25053
25069
 
25054
25070
 
25055
25071
 
25056
25072
 
25057
25073
 
25074
+ const constructorToTypedArray = {
25075
+ Uint8Array: 'Uint8Array',
25076
+ Int16Array: 'Int16Array',
25077
+ Uint16Array: 'Uint16Array',
25078
+ Float32Array: 'Float32Array',
25079
+ };
25058
25080
  function generateVolumePropsFromImageIds(imageIds, volumeId) {
25059
25081
  const volumeMetadata = (0,_makeVolumeMetadata__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(imageIds);
25060
25082
  const { ImageOrientationPatient, PixelSpacing, Columns, Rows } = volumeMetadata;
@@ -25087,6 +25109,10 @@ function generateVolumePropsFromImageIds(imageIds, volumeId) {
25087
25109
  function _determineDataType(imageIds, volumeMetadata) {
25088
25110
  const { BitsAllocated, PixelRepresentation } = volumeMetadata;
25089
25111
  const signed = PixelRepresentation === 1;
25112
+ const cachedDataType = _getDataTypeFromCache(imageIds);
25113
+ if (cachedDataType) {
25114
+ return cachedDataType;
25115
+ }
25090
25116
  const [firstIndex, middleIndex, lastIndex] = [
25091
25117
  0,
25092
25118
  Math.floor(imageIds.length / 2),
@@ -25121,6 +25147,19 @@ function _determineDataType(imageIds, volumeMetadata) {
25121
25147
  throw new Error(`Bits allocated of ${BitsAllocated} is not defined to generate scalarData for the volume.`);
25122
25148
  }
25123
25149
  }
25150
+ function _getDataTypeFromCache(imageIds) {
25151
+ const indices = [0, Math.floor(imageIds.length / 2), imageIds.length - 1];
25152
+ const images = indices.map((i) => _cache_cache__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Ay.getImage(imageIds[i]));
25153
+ if (!images.every(Boolean)) {
25154
+ return null;
25155
+ }
25156
+ const constructorName = images[0].getPixelData().constructor.name;
25157
+ if (images.every((img) => img.getPixelData().constructor.name === constructorName) &&
25158
+ constructorName in constructorToTypedArray) {
25159
+ return constructorToTypedArray[constructorName];
25160
+ }
25161
+ return null;
25162
+ }
25124
25163
 
25125
25164
 
25126
25165
 
@@ -25768,6 +25807,15 @@ const imageRetrieveMetadataProvider = {
25768
25807
  add: (key, payload) => {
25769
25808
  retrieveConfigurationState.set(key, payload);
25770
25809
  },
25810
+ clone: () => {
25811
+ return new Map(retrieveConfigurationState);
25812
+ },
25813
+ restore: (state) => {
25814
+ retrieveConfigurationState.clear();
25815
+ state.forEach((value, key) => {
25816
+ retrieveConfigurationState.set(key, value);
25817
+ });
25818
+ },
25771
25819
  get: (type, ...queries) => {
25772
25820
  if (type === IMAGE_RETRIEVE_CONFIGURATION) {
25773
25821
  return queries
@@ -26693,7 +26741,10 @@ function calculateViewportsSpatialRegistration(viewport1, viewport2) {
26693
26741
 
26694
26742
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getViewportImageCornersInWorld.js
26695
26743
  function getViewportImageCornersInWorld(viewport) {
26696
- const { imageData, dimensions } = viewport.getImageData();
26744
+ const { imageData, dimensions } = viewport.getImageData() || {};
26745
+ if (!imageData || !dimensions) {
26746
+ return [];
26747
+ }
26697
26748
  const { canvas } = viewport;
26698
26749
  const ratio = window.devicePixelRatio;
26699
26750
  const topLeftCanvas = [0, 0];
@@ -30108,6 +30159,10 @@ function getPixelDataTypeFromMinMax(min, max) {
30108
30159
  }
30109
30160
  return pixelDataType || Float32Array;
30110
30161
  }
30162
+ function validatePixelDataType(min, max, type) {
30163
+ const pixelDataType = getPixelDataTypeFromMinMax(min, max);
30164
+ return pixelDataType === type;
30165
+ }
30111
30166
 
30112
30167
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/imageLoader/convertColorSpace.js
30113
30168
 
@@ -31760,7 +31815,7 @@ const workerFn = () => {
31760
31815
  const instance = new Worker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u(1927), __webpack_require__.b), { type: undefined });
31761
31816
  return instance;
31762
31817
  };
31763
- function init(options) {
31818
+ function init(options = {}) {
31764
31819
  setOptions(options);
31765
31820
  imageLoader_registerLoaders();
31766
31821
  const workerManager = (0,esm.getWebWorkerManager)();
@@ -66971,7 +67026,7 @@ function vtkOpenGLTexture(publicAPI, model) {
66971
67026
  }
66972
67027
  return result;
66973
67028
  };
66974
- publicAPI.useHalfFloat = () => model.enableHalfFloat && model.canUseHalfFloat;
67029
+ publicAPI.useHalfFloat = () => model.enableUseHalfFloat && model.canUseHalfFloat;
66975
67030
 
66976
67031
  //----------------------------------------------------------------------------
66977
67032
  publicAPI.setInternalFormat = iFormat => {
@@ -67605,18 +67660,21 @@ function vtkOpenGLTexture(publicAPI, model) {
67605
67660
  }
67606
67661
  function setCanUseHalfFloat(dataType, offset, scale, preferSizeOverAccuracy) {
67607
67662
  publicAPI.getOpenGLDataType(dataType);
67663
+
67664
+ // Don't consider halfFloat and convert back to Float when the range of data does not generate an accurate halfFloat
67665
+ // AND it is not preferable to have a smaller texture than an exact texture.
67666
+ const isExactHalfFloat = hasExactHalfFloat(offset, scale) || preferSizeOverAccuracy;
67608
67667
  let useHalfFloat = false;
67609
67668
  if (model._openGLRenderWindow.getWebgl2()) {
67610
- useHalfFloat = model.openGLDataType === model.context.HALF_FLOAT;
67669
+ // If OES_texture_float_linear is not available, and using a half float would still be exact, force half floats
67670
+ // This is because half floats are always texture filterable in webgl2, while full *32F floats are not (unless the extension is present)
67671
+ const forceHalfFloat = model.openGLDataType === model.context.FLOAT && model.context.getExtension('OES_texture_float_linear') === null && isExactHalfFloat;
67672
+ useHalfFloat = forceHalfFloat || model.openGLDataType === model.context.HALF_FLOAT;
67611
67673
  } else {
67612
67674
  const halfFloatExt = model.context.getExtension('OES_texture_half_float');
67613
67675
  useHalfFloat = halfFloatExt && model.openGLDataType === halfFloatExt.HALF_FLOAT_OES;
67614
67676
  }
67615
-
67616
- // Don't consider halfFloat and convert back to Float when the range of data does not generate an accurate halfFloat
67617
- // AND it is not preferable to have a smaller texture than an exact texture.
67618
- const isHalfFloat = useHalfFloat && (hasExactHalfFloat(offset, scale) || preferSizeOverAccuracy);
67619
- model.canUseHalfFloat = isHalfFloat;
67677
+ model.canUseHalfFloat = useHalfFloat && isExactHalfFloat;
67620
67678
  }
67621
67679
  function processDataArray(dataArray, preferSizeOverAccuracy) {
67622
67680
  const numComps = dataArray.getNumberOfComponents();
@@ -95921,8 +95979,8 @@ function WorkList({
95921
95979
  };
95922
95980
  });
95923
95981
  const hasStudies = numOfStudies > 0;
95924
- const versionNumber = "3.9.0";
95925
- const commitHash = "b41706320067b0d9eee181009453fc2a77b4171b";
95982
+ const versionNumber = "3.9.2";
95983
+ const commitHash = "e5286d9fc2449da50b738e7e6208d489cce1633e";
95926
95984
  const menuOptions = [{
95927
95985
  title: t('Header:About'),
95928
95986
  icon: 'info',
@@ -96708,7 +96766,7 @@ function ViewerViewportGrid(props) {
96708
96766
  isActive: isActive
96709
96767
  }, /*#__PURE__*/react.createElement("div", {
96710
96768
  "data-cy": "viewport-pane",
96711
- className: classnames_default()('flex h-full w-full flex-col', {
96769
+ className: classnames_default()('flex h-full w-full min-w-[5px] flex-col', {
96712
96770
  'pointer-events-none': !isActive && (appConfig?.activateViewportBeforeInteraction ?? true)
96713
96771
  })
96714
96772
  }, /*#__PURE__*/react.createElement(ViewportComponent, {
@@ -96797,35 +96855,35 @@ modes.push("@ohif/mode-preclinical-4d");
96797
96855
  async function loadModule(module) {
96798
96856
  if (typeof module !== 'string') return module;
96799
96857
  if (module === "@ohif/extension-default") {
96800
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(1520), __webpack_require__.e(2591)]).then(__webpack_require__.bind(__webpack_require__, 71520));
96858
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(5630), __webpack_require__.e(2591)]).then(__webpack_require__.bind(__webpack_require__, 55630));
96801
96859
  return imported.default;
96802
96860
  }
96803
96861
  if (module === "@ohif/extension-cornerstone") {
96804
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(4182)]).then(__webpack_require__.bind(__webpack_require__, 11185));
96862
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(4182)]).then(__webpack_require__.bind(__webpack_require__, 11185));
96805
96863
  return imported.default;
96806
96864
  }
96807
96865
  if (module === "@ohif/extension-measurement-tracking") {
96808
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5261), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(3200)]).then(__webpack_require__.bind(__webpack_require__, 71903));
96866
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5261), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(3200)]).then(__webpack_require__.bind(__webpack_require__, 71903));
96809
96867
  return imported.default;
96810
96868
  }
96811
96869
  if (module === "@ohif/extension-cornerstone-dicom-sr") {
96812
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(1801)]).then(__webpack_require__.bind(__webpack_require__, 85687));
96870
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(1801)]).then(__webpack_require__.bind(__webpack_require__, 85687));
96813
96871
  return imported.default;
96814
96872
  }
96815
96873
  if (module === "@ohif/extension-cornerstone-dicom-seg") {
96816
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3970), __webpack_require__.e(1520), __webpack_require__.e(7197)]).then(__webpack_require__.bind(__webpack_require__, 96975));
96874
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3970), __webpack_require__.e(5630), __webpack_require__.e(7197)]).then(__webpack_require__.bind(__webpack_require__, 96975));
96817
96875
  return imported.default;
96818
96876
  }
96819
96877
  if (module === "@ohif/extension-cornerstone-dicom-pmap") {
96820
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(5139)]).then(__webpack_require__.bind(__webpack_require__, 82098));
96878
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(5139)]).then(__webpack_require__.bind(__webpack_require__, 82098));
96821
96879
  return imported.default;
96822
96880
  }
96823
96881
  if (module === "@ohif/extension-cornerstone-dynamic-volume") {
96824
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(717)]).then(__webpack_require__.bind(__webpack_require__, 14696));
96882
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(717)]).then(__webpack_require__.bind(__webpack_require__, 14696));
96825
96883
  return imported.default;
96826
96884
  }
96827
96885
  if (module === "@ohif/extension-dicom-microscopy") {
96828
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(5807), __webpack_require__.e(1520), __webpack_require__.e(5247)]).then(__webpack_require__.bind(__webpack_require__, 22801));
96886
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(5807), __webpack_require__.e(5630), __webpack_require__.e(5247)]).then(__webpack_require__.bind(__webpack_require__, 22801));
96829
96887
  return imported.default;
96830
96888
  }
96831
96889
  if (module === "@ohif/extension-dicom-pdf") {
@@ -96837,7 +96895,7 @@ async function loadModule(module) {
96837
96895
  return imported.default;
96838
96896
  }
96839
96897
  if (module === "@ohif/extension-tmtv") {
96840
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(3198)]).then(__webpack_require__.bind(__webpack_require__, 57289));
96898
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(3198)]).then(__webpack_require__.bind(__webpack_require__, 57289));
96841
96899
  return imported.default;
96842
96900
  }
96843
96901
  if (module === "@ohif/extension-test") {
@@ -96849,7 +96907,7 @@ async function loadModule(module) {
96849
96907
  return imported.default;
96850
96908
  }
96851
96909
  if (module === "@ohif/mode-longitudinal") {
96852
- const imported = await Promise.all(/* import() */[__webpack_require__.e(149), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(1520), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(1266)]).then(__webpack_require__.bind(__webpack_require__, 35589));
96910
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(3900), __webpack_require__.e(1436), __webpack_require__.e(3334), __webpack_require__.e(3970), __webpack_require__.e(5630), __webpack_require__.e(1185), __webpack_require__.e(5687), __webpack_require__.e(1266)]).then(__webpack_require__.bind(__webpack_require__, 35589));
96853
96911
  return imported.default;
96854
96912
  }
96855
96913
  if (module === "@ohif/mode-segmentation") {
@@ -97351,9 +97409,9 @@ function ModeRoute({
97351
97409
  const hangingProtocolIdToUse = hangingProtocolService.getProtocolById(runTimeHangingProtocolId) ? runTimeHangingProtocolId : hangingProtocol;
97352
97410
 
97353
97411
  // Determine the index of the stageId if the hangingProtocolIdToUse is defined
97354
- const stageIndex = hangingProtocolIdToUse ? hangingProtocolService.getStageIndex(hangingProtocolIdToUse, {
97412
+ const stageIndex = Array.isArray(hangingProtocolIdToUse) ? -1 : hangingProtocolService.getStageIndex(hangingProtocolIdToUse, {
97355
97413
  stageId: runTimeStageId || undefined
97356
- }) : -1;
97414
+ });
97357
97415
  // Ensure that the stage index is never negative
97358
97416
  // If stageIndex is negative (e.g., if stage wasn't found), use 0 as the default
97359
97417
  const stageIndexToUse = Math.max(0, stageIndex);
@@ -103004,14 +103062,17 @@ class UIDialogService extends pubSubServiceInterface/* PubSubService */.R {
103004
103062
  id,
103005
103063
  content,
103006
103064
  contentProps,
103007
- onStart,
103008
- onDrag,
103009
- onStop,
103065
+ onStart = () => {},
103066
+ onDrag = () => {},
103067
+ onStop = () => {},
103010
103068
  centralize = false,
103011
103069
  preservePosition = true,
103012
103070
  isDraggable = true,
103013
103071
  showOverlay = false,
103014
- defaultPosition
103072
+ defaultPosition = {
103073
+ x: 0,
103074
+ y: 0
103075
+ }
103015
103076
  }) {
103016
103077
  return this.serviceImplementation._create({
103017
103078
  id,
@@ -107350,7 +107411,7 @@ class CustomizationService extends pubSubServiceInterface/* PubSubService */.R {
107350
107411
  return customization;
107351
107412
  }
107352
107413
  const parent = this.getCustomization(customizationType);
107353
- const result = parent ? Object.assign(Object.create(parent), customization) : customization;
107414
+ const result = parent ? Object.assign({}, parent, customization) : customization;
107354
107415
  // Execute an nested type information
107355
107416
  return result.transform?.(this) || result;
107356
107417
  }
@@ -108481,7 +108542,7 @@ class StudyPrefetcherService extends pubSubServiceInterface/* PubSubService */.R
108481
108542
  this._displaySetLoadingStates.clear();
108482
108543
  this._imageIdsToDisplaySetsMap.clear();
108483
108544
  this._inflightRequests.clear();
108484
- this.imageLoadPoolManager.clearRequestStack(IMAGE_REQUEST_TYPE);
108545
+ this.imageLoadPoolManager.clearRequestStack(this.requestType);
108485
108546
  this._broadcastEvent(this.EVENTS.SERVICE_STOPPED, {});
108486
108547
  }
108487
108548
 
@@ -109723,7 +109784,11 @@ function _getPaletteColor(paletteColorLookupTableData, lutDescriptor) {
109723
109784
  }
109724
109785
  // EXTERNAL MODULE: ../../core/src/utils/toNumber.js
109725
109786
  var toNumber = __webpack_require__(37827);
109787
+ // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
109788
+ var esm = __webpack_require__(3823);
109726
109789
  ;// CONCATENATED MODULE: ../../core/src/utils/combineFrameInstance.ts
109790
+
109791
+
109727
109792
  /**
109728
109793
  * Combine the Per instance frame data, the shared frame data
109729
109794
  * and the root data objects.
@@ -109738,21 +109803,34 @@ const combineFrameInstance = (frame, instance) => {
109738
109803
  const {
109739
109804
  PerFrameFunctionalGroupsSequence,
109740
109805
  SharedFunctionalGroupsSequence,
109741
- NumberOfFrames
109806
+ NumberOfFrames,
109807
+ SpacingBetweenSlices
109742
109808
  } = instance;
109743
109809
  if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) {
109744
109810
  const frameNumber = Number.parseInt(frame || 1);
109745
- const shared = (SharedFunctionalGroupsSequence ? Object.values(SharedFunctionalGroupsSequence[0]) : []).filter(it => !!it).map(it => it[0]).filter(it => it !== undefined && typeof it === 'object');
109746
- const perFrame = (PerFrameFunctionalGroupsSequence ? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1]) : []).filter(it => !!it).map(it => it[0]).filter(it => it !== undefined && typeof it === 'object');
109811
+ const shared = SharedFunctionalGroupsSequence ? Object.values(SharedFunctionalGroupsSequence[0]).filter(Boolean).map(it => it[0]).filter(it => typeof it === 'object') : [];
109812
+ const perFrame = PerFrameFunctionalGroupsSequence ? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1]).filter(Boolean).map(it => it[0]).filter(it => typeof it === 'object') : [];
109747
109813
 
109748
109814
  // this is to fix NM multiframe datasets with position and orientation
109749
109815
  // information inside DetectorInformationSequence
109750
109816
  if (!instance.ImageOrientationPatient && instance.DetectorInformationSequence) {
109751
109817
  instance.ImageOrientationPatient = instance.DetectorInformationSequence[0].ImageOrientationPatient;
109752
109818
  }
109819
+ let ImagePositionPatientToUse = instance.ImagePositionPatient;
109753
109820
  if (!instance.ImagePositionPatient && instance.DetectorInformationSequence) {
109754
- instance.ImagePositionPatient = instance.DetectorInformationSequence[0].ImagePositionPatient;
109821
+ const imagePositionPatient = instance.DetectorInformationSequence[0].ImagePositionPatient;
109822
+ const imageOrientationPatient = instance.ImageOrientationPatient;
109823
+
109824
+ // Calculate the position for the current frame
109825
+ if (imageOrientationPatient && SpacingBetweenSlices) {
109826
+ const rowOrientation = esm/* vec3.fromValues */.eR.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
109827
+ const colOrientation = esm/* vec3.fromValues */.eR.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
109828
+ const normalVector = esm/* vec3.cross */.eR.cross(esm/* vec3.create */.eR.create(), rowOrientation, colOrientation);
109829
+ const position = esm/* vec3.scaleAndAdd */.eR.scaleAndAdd(esm/* vec3.create */.eR.create(), imagePositionPatient, normalVector, SpacingBetweenSlices * (frameNumber - 1));
109830
+ ImagePositionPatientToUse = [position[0], position[1], position[2]];
109831
+ }
109755
109832
  }
109833
+ console.debug('🚀 ~ ImagePositionPatientToUse:', ImagePositionPatientToUse);
109756
109834
  const newInstance = Object.assign(instance, {
109757
109835
  frameNumber: frameNumber
109758
109836
  });
@@ -109768,7 +109846,7 @@ const combineFrameInstance = (frame, instance) => {
109768
109846
  // back to the dicomMetaStore so we don't have to do this again.
109769
109847
  return {
109770
109848
  ...newInstance,
109771
- ImagePositionPatient: newInstance.ImagePositionPatient ?? [0, 0, frameNumber]
109849
+ ImagePositionPatient: ImagePositionPatientToUse ?? newInstance.ImagePositionPatient ?? [0, 0, frameNumber]
109772
109850
  };
109773
109851
  } else {
109774
109852
  return instance;
@@ -109786,7 +109864,6 @@ const combineFrameInstance = (frame, instance) => {
109786
109864
 
109787
109865
  class MetadataProvider {
109788
109866
  constructor() {
109789
- this.studies = new Map();
109790
109867
  this.imageURIToUIDs = new Map();
109791
109868
  this.imageUIDsByImageId = new Map();
109792
109869
  // Can be used to store custom metadata for a specific type.
@@ -109795,6 +109872,10 @@ class MetadataProvider {
109795
109872
  this.customMetadata = new Map();
109796
109873
  }
109797
109874
  addImageIdToUIDs(imageId, uids) {
109875
+ if (!imageId) {
109876
+ throw new Error('MetadataProvider::Empty imageId');
109877
+ }
109878
+
109798
109879
  // This method is a fallback for when you don't have WADO-URI or WADO-RS.
109799
109880
  // You can add instances fetched by any method by calling addInstance, and hook an imageId to point at it here.
109800
109881
  // An example would be dicom hosted at some random site.
@@ -109810,6 +109891,9 @@ class MetadataProvider {
109810
109891
  this.customMetadata.get(type)[imageURI] = metadata;
109811
109892
  }
109812
109893
  _getInstance(imageId) {
109894
+ if (!imageId) {
109895
+ throw new Error('MetadataProvider::Empty imageId');
109896
+ }
109813
109897
  const uids = this.getUIDsFromImageID(imageId);
109814
109898
  if (!uids) {
109815
109899
  return;
@@ -110181,17 +110265,6 @@ class MetadataProvider {
110181
110265
  return;
110182
110266
  }
110183
110267
  getUIDsFromImageID(imageId) {
110184
- if (!imageId) {
110185
- throw new Error('MetadataProvider::Empty imageId');
110186
- }
110187
- // TODO: adding csiv here is not really correct. Probably need to use
110188
- // metadataProvider.addImageIdToUIDs(imageId, {
110189
- // StudyInstanceUID,
110190
- // SeriesInstanceUID,
110191
- // SOPInstanceUID,
110192
- // })
110193
- // somewhere else
110194
-
110195
110268
  const cachedUIDs = this.imageUIDsByImageId.get(imageId);
110196
110269
  if (cachedUIDs) {
110197
110270
  return cachedUIDs;
@@ -115009,7 +115082,7 @@ const detectionOptions = {
115009
115082
  }
115010
115083
  });
115011
115084
  ;// CONCATENATED MODULE: ../../i18n/package.json
115012
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.9.0-beta.111"}');
115085
+ const package_namespaceObject = {"rE":"3.9.1"};
115013
115086
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
115014
115087
  const languagesMap = {
115015
115088
  ar: 'Arabic',
@@ -239568,13 +239641,6 @@ SidePanel.propTypes = {
239568
239641
  side: prop_types_default().oneOf(['left', 'right']).isRequired,
239569
239642
  className: (prop_types_default()).string,
239570
239643
  activeTabIndex: (prop_types_default()).number,
239571
- tabs: prop_types_default().oneOfType([prop_types_default().arrayOf(prop_types_default().shape({
239572
- iconName: (prop_types_default()).string.isRequired,
239573
- iconLabel: (prop_types_default()).string.isRequired,
239574
- name: (prop_types_default()).string.isRequired,
239575
- label: (prop_types_default()).string.isRequired,
239576
- content: (prop_types_default()).func // TODO: Should be node, but it keeps complaining?
239577
- }))]),
239578
239644
  onOpen: (prop_types_default()).func,
239579
239645
  onClose: (prop_types_default()).func,
239580
239646
  onActiveTabIndexChange: (prop_types_default()).func,
@@ -240929,7 +240995,7 @@ const Thumbnail = ({
240929
240995
  };
240930
240996
  const renderThumbnailPreset = () => {
240931
240997
  return /*#__PURE__*/react.createElement("div", {
240932
- className: classnames_default()('flex h-full w-full flex-col items-center justify-center gap-[2px] p-[4px]', isActive && 'bg-popover')
240998
+ className: classnames_default()('flex h-full w-full flex-col items-center justify-center gap-[2px] p-[4px]', isActive && 'bg-popover rounded')
240933
240999
  }, /*#__PURE__*/react.createElement("div", {
240934
241000
  className: "h-[114px] w-[128px]"
240935
241001
  }, /*#__PURE__*/react.createElement("div", {
@@ -241016,7 +241082,7 @@ const Thumbnail = ({
241016
241082
  };
241017
241083
  const renderListPreset = () => {
241018
241084
  return /*#__PURE__*/react.createElement("div", {
241019
- className: classnames_default()('flex h-full w-full items-center justify-between pr-[8px] pl-[8px] pt-[4px] pb-[4px]', isActive && 'bg-popover')
241085
+ className: classnames_default()('flex h-full w-full items-center justify-between pr-[8px] pl-[8px] pt-[4px] pb-[4px]', isActive && 'bg-popover rounded')
241020
241086
  }, /*#__PURE__*/react.createElement("div", {
241021
241087
  className: "relative flex h-[32px] items-center gap-[8px]"
241022
241088
  }, /*#__PURE__*/react.createElement("div", {
@@ -241268,6 +241334,7 @@ const StudyItem = ({
241268
241334
  collapsible: true,
241269
241335
  onClick: onClick,
241270
241336
  onKeyDown: () => {},
241337
+ className: "flex-shrink-0",
241271
241338
  role: "button",
241272
241339
  tabIndex: 0,
241273
241340
  defaultValue: isActive ? 'study-item' : undefined
@@ -241488,9 +241555,9 @@ const StudyBrowser = ({
241488
241555
  });
241489
241556
  };
241490
241557
  return /*#__PURE__*/react.createElement("div", {
241491
- className: "ohif-scrollbar invisible-scrollbar bg-bkg-low flex flex-1 flex-col gap-[4px] overflow-auto",
241558
+ className: "ohif-scrollbar invisible-scrollbar bg-bkg-low flex flex-1 flex-col gap-[4px] overflow-auto pt-px",
241492
241559
  "data-cy": 'studyBrowser-panel'
241493
- }, /*#__PURE__*/react.createElement("div", null, showSettings && /*#__PURE__*/react.createElement("div", {
241560
+ }, showSettings && /*#__PURE__*/react.createElement("div", {
241494
241561
  className: "w-100 bg-bkg-low flex h-[48px] items-center justify-center gap-[10px] px-[8px] py-[10px]"
241495
241562
  }, /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(StudyBrowserViewOptions, {
241496
241563
  tabs: tabs,
@@ -241498,7 +241565,7 @@ const StudyBrowser = ({
241498
241565
  activeTabName: activeTabName
241499
241566
  }), /*#__PURE__*/react.createElement(StudyBrowserSort, {
241500
241567
  servicesManager: servicesManager
241501
- }))), getTabContent()));
241568
+ }))), getTabContent());
241502
241569
  };
241503
241570
  StudyBrowser.propTypes = {
241504
241571
  onClickTab: (prop_types_default()).func.isRequired,
@@ -242193,9 +242260,7 @@ const DataRow = ({
242193
242260
  return /*#__PURE__*/react.createElement("div", {
242194
242261
  key: cleanText,
242195
242262
  className: "whitespace-pre-wrap"
242196
- }, indentation, cleanText.includes(':') ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
242197
- className: "font-medium"
242198
- }, cleanText.split(':')[0], ":"), cleanText.split(':')[1]) : /*#__PURE__*/react.createElement("span", {
242263
+ }, indentation, /*#__PURE__*/react.createElement("span", {
242199
242264
  className: "font-medium"
242200
242265
  }, cleanText));
242201
242266
  };
@@ -242303,11 +242368,13 @@ const DataRow = ({
242303
242368
  className: "text-foreground"
242304
242369
  }), /*#__PURE__*/react.createElement("span", {
242305
242370
  className: "pl-2"
242306
- }, isLocked ? 'Unlock' : 'Lock')))))), details && details.primary?.length > 0 && /*#__PURE__*/react.createElement("div", {
242371
+ }, isLocked ? 'Unlock' : 'Lock')))))), details && (details.primary?.length > 0 || details.secondary?.length > 0) && /*#__PURE__*/react.createElement("div", {
242307
242372
  className: "ml-7 px-2 py-2"
242308
242373
  }, /*#__PURE__*/react.createElement("div", {
242309
- className: "text-secondary-foreground text-base leading-normal"
242310
- }, renderDetails(details.primary))));
242374
+ className: "text-secondary-foreground flex items-center gap-1 text-base leading-normal"
242375
+ }, details.primary?.length > 0 && renderDetails(details.primary), details.secondary?.length > 0 && /*#__PURE__*/react.createElement("div", {
242376
+ className: "text-muted-foreground ml-auto text-sm"
242377
+ }, renderDetails(details.secondary)))));
242311
242378
  };
242312
242379
  /* harmony default export */ const DataRow_DataRow = (DataRow);
242313
242380
  ;// CONCATENATED MODULE: ../../ui-next/src/components/DataRow/index.ts
@@ -242493,7 +242560,7 @@ const SegmentationSegments = ({
242493
242560
  return null;
242494
242561
  }
242495
242562
  const segmentCount = Object.keys(representationToUse.segments).length;
242496
- const height = mode === 'collapsed' ? 'h-[600px]' : `h-[${segmentCount * 200}px]`;
242563
+ const height = mode === 'collapsed' ? 'h-[900px]' : `h-[${segmentCount * 200}px]`;
242497
242564
  return /*#__PURE__*/react.createElement(ScrollArea_ScrollArea, {
242498
242565
  className: `ohif-scrollbar invisible-scrollbar bg-bkg-low space-y-px ${height}`,
242499
242566
  showArrows: true
@@ -243244,24 +243311,24 @@ Stack: ${error.stack}
243244
243311
  }, /*#__PURE__*/react.createElement(Dialog_DialogContent, {
243245
243312
  className: "border-input h-[50vh] w-[90vw] border-2 sm:max-w-[900px]"
243246
243313
  }, /*#__PURE__*/react.createElement(DialogHeader, null, /*#__PURE__*/react.createElement(Dialog_DialogTitle, {
243247
- className: "text-xl"
243248
- }, title), /*#__PURE__*/react.createElement(Dialog_DialogDescription, {
243249
- className: "text-lg"
243250
- }, subtitle)), /*#__PURE__*/react.createElement(ScrollArea_ScrollArea, {
243251
- className: "h-[calc(90vh-120px)]"
243314
+ className: "text-muted-foreground flex justify-between text-xl"
243252
243315
  }, /*#__PURE__*/react.createElement("div", {
243253
- className: "space-y-4 pr-4 font-mono text-base"
243254
- }, /*#__PURE__*/react.createElement("div", {
243255
- className: "flex justify-end"
243256
- }, /*#__PURE__*/react.createElement("button", {
243316
+ className: "flex items-center"
243317
+ }, title), /*#__PURE__*/react.createElement("button", {
243257
243318
  onClick: () => {
243258
243319
  copyErrorDetails();
243259
243320
  setShowDetails(false);
243260
243321
  },
243261
- className: "text-aqua-pale hover:text-aqua-pale/80 flex items-center gap-2 rounded bg-gray-800 px-4 py-2"
243322
+ className: "text-aqua-pale hover:text-aqua-pale/80 flex items-center gap-2 rounded bg-gray-800 px-4 py-2 font-light"
243262
243323
  }, /*#__PURE__*/react.createElement(Icons.Code, {
243263
243324
  className: "h-4 w-4"
243264
- }), t('Copy Details'))), /*#__PURE__*/react.createElement("div", {
243325
+ }), t('Copy Details'))), /*#__PURE__*/react.createElement(Dialog_DialogDescription, {
243326
+ className: "text-lg"
243327
+ }, subtitle)), /*#__PURE__*/react.createElement(ScrollArea_ScrollArea, {
243328
+ className: "h-[100%]"
243329
+ }, /*#__PURE__*/react.createElement("div", {
243330
+ className: "space-y-4 pr-4 font-mono text-base"
243331
+ }, /*#__PURE__*/react.createElement("div", {
243265
243332
  className: "space-y-4"
243266
243333
  }, /*#__PURE__*/react.createElement("p", {
243267
243334
  className: "text-aqua-pale break-words text-lg"
@@ -265568,7 +265635,7 @@ const SidePanel_SidePanel = ({
265568
265635
  position: side === 'left' ? 'right' : 'left',
265569
265636
  key: index,
265570
265637
  content: getToolTipContent(childComponent.label, childComponent.disabled),
265571
- className: classnames_default()('flex items-center', side === 'left' ? 'justify-end ' : 'justify-start ')
265638
+ className: classnames_default()('flex items-center', side === 'left' ? 'justify-end' : 'justify-start')
265572
265639
  }, /*#__PURE__*/react.createElement("div", {
265573
265640
  id: `${childComponent.name}-btn`,
265574
265641
  "data-cy": `${childComponent.name}-btn`,
@@ -265606,7 +265673,7 @@ const SidePanel_SidePanel = ({
265606
265673
  const getTabGridComponent = () => {
265607
265674
  const numCols = getNumGridColumns(tabs.length, gridWidth);
265608
265675
  return /*#__PURE__*/react.createElement("div", {
265609
- className: classnames_default()('flex grow ', side === 'right' ? 'justify-start' : 'justify-end')
265676
+ className: classnames_default()('flex grow', side === 'right' ? 'justify-start' : 'justify-end')
265610
265677
  }, /*#__PURE__*/react.createElement("div", {
265611
265678
  className: classnames_default()('bg-primary-dark text-primary-active flex flex-wrap'),
265612
265679
  style: getGridStyle(side, tabs.length, gridWidth, expandedWidth)
@@ -265645,7 +265712,7 @@ const SidePanel_SidePanel = ({
265645
265712
  };
265646
265713
  const getOneTabComponent = () => {
265647
265714
  return /*#__PURE__*/react.createElement("div", {
265648
- className: classnames_default()('text-primary-active flex grow cursor-pointer select-none justify-center self-center text-[13px]'),
265715
+ className: classnames_default()('text-primary-active flex grow cursor-pointer select-none justify-center self-center text-[13px]'),
265649
265716
  style: {
265650
265717
  ...(side === 'left' ? {
265651
265718
  marginLeft: `${closeIconWidth}px`
@@ -265659,7 +265726,7 @@ const SidePanel_SidePanel = ({
265659
265726
  };
265660
265727
  const getOpenStateComponent = () => {
265661
265728
  return /*#__PURE__*/react.createElement("div", {
265662
- className: "bg-primary-dark flex select-none rounded-t pt-1.5 pb-[2px]\t"
265729
+ className: "bg-primary-dark flex select-none rounded-t pt-1.5 pb-[2px]"
265663
265730
  }, getCloseIcon(), tabs.length === 1 ? getOneTabComponent() : getTabGridComponent());
265664
265731
  };
265665
265732
  return /*#__PURE__*/react.createElement("div", {
@@ -421563,7 +421630,7 @@ function __disposeResources(env) {
421563
421630
  /******/ // This function allow to reference async chunks
421564
421631
  /******/ __webpack_require__.u = (chunkId) => {
421565
421632
  /******/ // return url for filenames based on template
421566
- /******/ return "" + ({"572":"polySeg","3054":"histogram-worker","3584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"149":"b8d177954628f4631fc0","213":"38caad239bcfec1d28fb","572":"b79ae514989e86301c71","717":"62437bfeb54f01269abe","1185":"a6e220f00576d6926fe7","1266":"8fd38b710e91305721e5","1374":"f56c07364d8f6ed2d00e","1436":"773756cd51b69e887bac","1520":"fde5eb31364855194519","1801":"c552846463998fdc9ad4","1927":"49539e3ab5b0aad1399c","2424":"c7b6d3475da1ffff744b","2591":"e1bbdc34a55bee082ff2","2701":"8c1ff2e0faaa7d2f4716","2825":"ba60e0011bcebdf7a413","3054":"f0e060cf2637a2ca94b7","3121":"d3e7092e305cf6cecdb5","3198":"9b80ca2f1d99a7f9a4fe","3200":"45b19ea468d6208f0e7e","3334":"0e6ba24024018199ab66","3584":"76dd4fdf82aaa2c3ad41","3970":"31942cc0c12a008e7ba0","4182":"ec850ce1f74b1f6fe559","4202":"5c8120ed4841da0af211","4834":"4bfa1bd1d4a163de3350","5139":"b185b1df3847a2025829","5247":"03fa8aac71d4e597d708","5261":"74682659cce85f3ae592","5687":"3a558ac2eb26f5295668","5807":"dac5ce36534a71c77723","6939":"9b79da82315a25f37d96","7159":"9f4856182f1eda29c59d","7197":"db0d51e5529d88a4cd7f","7955":"699bffabae3a9915c326","8008":"1ab47eccf7608fe14e92","8228":"55ac03d7165248f47d4e","8259":"4385bd89c3f7f4ced27c","8295":"4ecb27f9e58526f12bcb","8558":"3b0654ad2a52ac9786dd","9551":"13a3eec1e003a46095bc","9611":"767595c93877e5166c03","9862":"7146682e56aa66130ae6"}[chunkId] + ".js";
421633
+ /******/ return "" + ({"572":"polySeg","3054":"histogram-worker","3584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"213":"8c04fecea2e3796e4d73","572":"6e85073e3abf2e6e6078","717":"3a4b8835adf03e4554c7","1185":"d328aabb2b43e9ea1f96","1266":"46de27eda2ef1fce1243","1374":"1ee8326c0748c7b1a7c0","1436":"27ae9c87e9fc7f52cad3","1801":"c552846463998fdc9ad4","1927":"2b2fa0b539d6ac5b0dc3","2424":"38b19314ebd984c9d393","2591":"e1bbdc34a55bee082ff2","2701":"8c1ff2e0faaa7d2f4716","2825":"0307cae794e8b057c674","3054":"f0e060cf2637a2ca94b7","3121":"d3e7092e305cf6cecdb5","3198":"ab612063af0d67397377","3200":"ccb809fb554332d9a0f5","3334":"0e6ba24024018199ab66","3584":"1f483dc7131d7c26b517","3900":"3937999d1ee1f391647a","3970":"31942cc0c12a008e7ba0","4182":"ec850ce1f74b1f6fe559","4202":"5c8120ed4841da0af211","4834":"c25348524be5214e90d6","5139":"db30dc02cf41e91c8985","5247":"1a1d7c27de482e4a73f3","5261":"74682659cce85f3ae592","5630":"1bd2402f37597078c1a1","5687":"05de4787676bf79f9906","5807":"dac5ce36534a71c77723","6939":"9b79da82315a25f37d96","7159":"9f4856182f1eda29c59d","7197":"42a975bb7ae4a8df2d00","7955":"f6c5edb284bdf8b80f2a","8008":"d4187a30e8f656a21316","8228":"0a7997d04c82dd8c11c5","8259":"990db2fa9ce0800319e9","8295":"4ecb27f9e58526f12bcb","8558":"63714e2329c22c9cb9da","9551":"63b2679dd7beee6396d8","9611":"78a4ffb439f65cfd0379","9862":"aa2f8e0010f1be1bc87d"}[chunkId] + ".js";
421567
421634
  /******/ };
421568
421635
  /******/ })();
421569
421636
  /******/