@ohif/app 3.13.0-beta.38 → 3.13.0-beta.39

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 (28) hide show
  1. package/dist/{147.bundle.39390548da6ae43a4143.js → 147.bundle.f71d384c49f50e23f795.js} +13 -38
  2. package/dist/{4688.bundle.3ea55e22200ad55ed122.js → 4688.bundle.324f320f177fe7f70db8.js} +115 -111
  3. package/dist/{9195.bundle.deae38755cca161a92d3.js → 9195.bundle.afd5483195e12e5cef8e.js} +2 -2
  4. package/dist/{app.bundle.548916b36a54916cc5fd.js → app.bundle.6c3daf11c7fbd7e48175.js} +2 -2
  5. package/dist/index.html +1 -1
  6. package/dist/sw.js +1 -1
  7. package/package.json +20 -20
  8. /package/dist/{1459.bundle.91e4470dfa898475826c.js → 1459.bundle.4aef0d934c3a12aa66bb.js} +0 -0
  9. /package/dist/{1933.bundle.f1f357ded29a873c71d2.js → 1933.bundle.0aba0ce3d97d32bd3ca5.js} +0 -0
  10. /package/dist/{2018.bundle.6eb6052ce5f8eb700d08.js → 2018.bundle.896e322e7c39599383f7.js} +0 -0
  11. /package/dist/{213.bundle.3f4a406d7dca2ff2342b.js → 213.bundle.9a4de523c0842d7bd7fd.js} +0 -0
  12. /package/dist/{2424.bundle.30c85c242e97c5196db4.js → 2424.bundle.6a9ca8e7e84f5528c8d1.js} +0 -0
  13. /package/dist/{3138.bundle.6367b88f61f4de436a4a.js → 3138.bundle.a377f868158dec8efdb0.js} +0 -0
  14. /package/dist/{3461.bundle.fe278a80710b3a6d53ab.js → 3461.bundle.b6304f280d7dc0ade73a.js} +0 -0
  15. /package/dist/{4507.bundle.36ac08fd12f382c3cee6.js → 4507.bundle.67c73fab897aa7040fce.js} +0 -0
  16. /package/dist/{4819.bundle.c25a94eb71ef36996b27.js → 4819.bundle.5aa5ed42843908dbb820.js} +0 -0
  17. /package/dist/{5015.bundle.2f9bc4d3df1f4b8c1349.js → 5015.bundle.4f91f03ea8084a82657b.js} +0 -0
  18. /package/dist/{5028.bundle.0683912ba966f892e5a6.js → 5028.bundle.71b240621417df1a6fab.js} +0 -0
  19. /package/dist/{5457.bundle.70649ac2ae0be5f6e134.js → 5457.bundle.109f104b4520e6374fa6.js} +0 -0
  20. /package/dist/{5485.bundle.4bdfa205240c4646b657.js → 5485.bundle.a88fd5be3f5aa20dc643.js} +0 -0
  21. /package/dist/{6027.bundle.b84af7dc3a23cc6be5f9.js → 6027.bundle.555553c951bba02afa54.js} +0 -0
  22. /package/dist/{7639.bundle.ede44f8aeba49d1d4638.js → 7639.bundle.0f0b2419e43c7dc3b88a.js} +0 -0
  23. /package/dist/{8305.bundle.981476ac163dab0cd09f.js → 8305.bundle.371dde3415de88db3f43.js} +0 -0
  24. /package/dist/{8499.bundle.1d877499cf23bba2d6a1.js → 8499.bundle.c179a028eae7170b397d.js} +0 -0
  25. /package/dist/{85.bundle.5fca3f4a44d9585207d3.js → 85.bundle.80b16edc06976de80ae6.js} +0 -0
  26. /package/dist/{8558.bundle.0943e93e6678b139bee2.js → 8558.bundle.f08683ca26d63fb8c0ef.js} +0 -0
  27. /package/dist/{8583.bundle.825e0786dbc34009142b.js → 8583.bundle.f6c226c9fa6de90f2bcb.js} +0 -0
  28. /package/dist/{9927.bundle.4d4aa54a98618d2f3d87.js → 9927.bundle.6966a86ab930197c8295.js} +0 -0
@@ -249,14 +249,11 @@ function CustomizableViewportOverlay({
249
249
  toolGroupService,
250
250
  displaySetService
251
251
  } = servicesManager.services;
252
- const [voi, setVOI] = (0,react.useState)({
253
- windowCenter: null,
254
- windowWidth: null
255
- });
256
252
  const [scale, setScale] = (0,react.useState)(1);
257
253
  const [annotationState, setAnnotationState] = (0,react.useState)(0);
258
254
  const {
259
- isViewportBackgroundLight: isLight
255
+ isViewportBackgroundLight: isLight,
256
+ windowLevel: voi
260
257
  } = (0,hooks/* useViewportRendering */.eH)(viewportId);
261
258
  const {
262
259
  imageIndex
@@ -289,36 +286,6 @@ function CustomizableViewportOverlay({
289
286
  referenceInstance
290
287
  };
291
288
  }, [viewportData, viewportId, instanceNumber, cornerstoneViewportService]);
292
-
293
- /**
294
- * Updating the VOI when the viewport changes its voi
295
- */
296
- (0,react.useEffect)(() => {
297
- const updateVOI = eventDetail => {
298
- const {
299
- range
300
- } = eventDetail.detail;
301
- if (!range) {
302
- return;
303
- }
304
- const {
305
- lower,
306
- upper
307
- } = range;
308
- const {
309
- windowWidth,
310
- windowCenter
311
- } = esm.utilities.windowLevel.toWindowLevel(lower, upper);
312
- setVOI({
313
- windowCenter,
314
- windowWidth
315
- });
316
- };
317
- element.addEventListener(esm.Enums.Events.VOI_MODIFIED, updateVOI);
318
- return () => {
319
- element.removeEventListener(esm.Enums.Events.VOI_MODIFIED, updateVOI);
320
- };
321
- }, [viewportId, viewportData, voi, element]);
322
289
  const annotationModified = (0,react.useCallback)(evt => {
323
290
  if (evt.detail.annotation.metadata.toolName === dist_esm.UltrasoundPleuraBLineTool.toolName) {
324
291
  // Update the annotation state to trigger a re-render
@@ -386,7 +353,7 @@ function CustomizableViewportOverlay({
386
353
  return renderItem.contentF(overlayItemProps);
387
354
  }
388
355
  }
389
- }, [element, viewportData, imageSliceData, viewportId, servicesManager, customizationService, displaySetProps, voi, scale, instanceNumber, annotationState]);
356
+ }, [element, viewportData, imageSliceData, viewportId, servicesManager, customizationService, displaySetProps, voi, scale, instanceNumber, annotationState, isLight]);
390
357
  const getContent = (0,react.useCallback)((customization, keyPrefix) => {
391
358
  const props = {
392
359
  ...displaySetProps,
@@ -545,6 +512,9 @@ function VOIOverlayItem({
545
512
  windowWidth,
546
513
  windowCenter
547
514
  } = voi;
515
+ const {
516
+ title
517
+ } = customization;
548
518
  if (typeof windowCenter !== 'number' || typeof windowWidth !== 'number') {
549
519
  return null;
550
520
  }
@@ -552,7 +522,8 @@ function VOIOverlayItem({
552
522
  className: "overlay-item flex flex-row",
553
523
  style: {
554
524
  color: customization?.color
555
- }
525
+ },
526
+ title: title
556
527
  }, /*#__PURE__*/react.createElement("span", {
557
528
  className: "mr-0.5 shrink-0 opacity-[0.70]"
558
529
  }, "W:"), /*#__PURE__*/react.createElement("span", {
@@ -593,11 +564,15 @@ function InstanceNumberOverlayItem({
593
564
  imageIndex,
594
565
  numberOfSlices
595
566
  } = imageSliceData;
567
+ const {
568
+ title
569
+ } = customization;
596
570
  return /*#__PURE__*/react.createElement("div", {
597
571
  className: "overlay-item flex flex-row",
598
572
  style: {
599
573
  color: customization && customization.color || undefined
600
- }
574
+ },
575
+ title: title
601
576
  }, /*#__PURE__*/react.createElement("span", null, instanceNumber !== undefined && instanceNumber !== null ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
602
577
  className: "mr-0.5 shrink-0 opacity-[0.70]"
603
578
  }, "I:"), /*#__PURE__*/react.createElement("span", null, `${instanceNumber} (${imageIndex + 1}/${numberOfSlices})`)) : `${imageIndex + 1}/${numberOfSlices}`));
@@ -818,7 +818,9 @@ function useViewportDisplaySets(viewportId, options) {
818
818
  /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42356);
819
819
  /* harmony import */ var _useViewportDisplaySets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10225);
820
820
  /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15327);
821
- /* harmony import */ var _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93813);
821
+ /* harmony import */ var _utils_getDataIdForViewport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67142);
822
+ /* harmony import */ var _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(93813);
823
+
822
824
 
823
825
 
824
826
 
@@ -826,13 +828,13 @@ function useViewportDisplaySets(viewportId, options) {
826
828
 
827
829
  const getPosition = location => {
828
830
  switch (location) {
829
- case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_4__/* .ButtonLocation */ .ij.LeftMiddle:
831
+ case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_5__/* .ButtonLocation */ .ij.LeftMiddle:
830
832
  return 'left';
831
- case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_4__/* .ButtonLocation */ .ij.RightMiddle:
833
+ case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_5__/* .ButtonLocation */ .ij.RightMiddle:
832
834
  return 'right';
833
- case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_4__/* .ButtonLocation */ .ij.BottomMiddle:
835
+ case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_5__/* .ButtonLocation */ .ij.BottomMiddle:
834
836
  return 'bottom';
835
- case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_4__/* .ButtonLocation */ .ij.TopMiddle:
837
+ case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_5__/* .ButtonLocation */ .ij.TopMiddle:
836
838
  return 'top';
837
839
  default:
838
840
  return 'bottom';
@@ -846,13 +848,6 @@ const linearToOpacity = linearValue => {
846
848
  const opacityToLinear = opacityValue => {
847
849
  return Math.pow(opacityValue, 1.0 / GAMMA);
848
850
  };
849
- const is3DViewport = ({
850
- viewportId,
851
- cornerstoneViewportService
852
- }) => {
853
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
854
- return viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.VolumeViewport3D;
855
- };
856
851
 
857
852
  /**
858
853
  * Hook to access window level functionality for a specific viewport
@@ -871,14 +866,13 @@ function useViewportRendering(viewportId, options) {
871
866
  colorbarService,
872
867
  customizationService
873
868
  } = servicesManager.services;
874
- const [is3DVolume, setIs3DVolume] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(is3DViewport({
875
- viewportId,
876
- cornerstoneViewportService
877
- }));
878
869
  const [hasColorbar, setHasColorbar] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(colorbarService.hasColorbar(viewportId));
879
870
  const [colorbarPosition, setColorbarPosition] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(options?.location ? getPosition(options.location) : 'bottom');
880
871
  const [voiRange, setVoiRange] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
881
872
  const voiRangeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
873
+ // Viewport from service; kept in state so we can subscribe to VIEWPORT_DATA_CHANGED when null and re-run effects when it becomes available
874
+ const [viewport, setViewport] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(() => viewportId ? cornerstoneViewportService.getCornerstoneViewport(viewportId) ?? null : null);
875
+ const [is3DVolume, setIs3DVolume] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.VolumeViewport3D);
882
876
  const [opacity, setOpacityState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
883
877
  const [opacityLinear, setOpacityLinearState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
884
878
  const [threshold, setThresholdState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
@@ -922,6 +916,35 @@ function useViewportRendering(viewportId, options) {
922
916
  }) || [];
923
917
  }, [viewportDisplaySets, presets]);
924
918
 
919
+ // Keep viewport in state; when not available, subscribe to VIEWPORT_DATA_CHANGED so we set it when the viewport is ready
920
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
921
+ if (!viewportId) {
922
+ setViewport(null);
923
+ return;
924
+ }
925
+ const vp = cornerstoneViewportService.getCornerstoneViewport(viewportId);
926
+ setViewport(vp ?? null);
927
+ if (vp) {
928
+ return;
929
+ }
930
+ const {
931
+ unsubscribe
932
+ } = cornerstoneViewportService.subscribe(cornerstoneViewportService.EVENTS.VIEWPORT_DATA_CHANGED, ({
933
+ viewportId: eventViewportId
934
+ }) => {
935
+ if (eventViewportId !== viewportId) {
936
+ return;
937
+ }
938
+ const next = cornerstoneViewportService.getCornerstoneViewport(viewportId);
939
+ if (next) {
940
+ setViewport(next);
941
+ }
942
+ });
943
+ return () => {
944
+ unsubscribe();
945
+ };
946
+ }, [viewportId, cornerstoneViewportService]);
947
+
925
948
  // Calculate pixel value range for the active display set
926
949
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
927
950
  if (!activeDisplaySetInstanceUID) {
@@ -931,21 +954,20 @@ function useViewportRendering(viewportId, options) {
931
954
  if (!selectedDisplaySet?.imageIds?.length) {
932
955
  return;
933
956
  }
934
- const csViewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
935
- if (!csViewport) {
957
+ if (!viewport) {
936
958
  return;
937
959
  }
938
- if (!(csViewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.BaseVolumeViewport)) {
960
+ if (!(viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.BaseVolumeViewport)) {
939
961
  return;
940
962
  }
941
- const volumeIds = csViewport.getAllVolumeIds();
963
+ const volumeIds = viewport.getAllVolumeIds();
942
964
  const volumeId = volumeIds.find(id => id.includes(activeDisplaySetInstanceUID));
943
965
  if (!volumeId) {
944
966
  return;
945
967
  }
946
968
 
947
969
  // only handle volume viewports for now
948
- const imageData = csViewport.getImageData(volumeId);
970
+ const imageData = viewport.getImageData(volumeId);
949
971
  if (!imageData) {
950
972
  return;
951
973
  }
@@ -958,7 +980,7 @@ function useViewportRendering(viewportId, options) {
958
980
  min: range[0],
959
981
  max: range[1]
960
982
  });
961
- }, [activeDisplaySetInstanceUID, displaySetService, cornerstoneViewportService, viewportId]);
983
+ }, [activeDisplaySetInstanceUID, displaySetService, viewport]);
962
984
 
963
985
  // Get the presets specifically for the active display set
964
986
  const activeDisplaySetPresets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
@@ -972,52 +994,33 @@ function useViewportRendering(viewportId, options) {
972
994
  return activePresetData.presets;
973
995
  }, [allWindowLevelPresets, activeDisplaySetInstanceUID]);
974
996
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
975
- setIs3DVolume(is3DViewport({
976
- viewportId,
977
- cornerstoneViewportService
978
- }));
979
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
980
-
981
- // Initialize the VOI range from the viewport
982
- if (viewport && activeDisplaySetInstanceUID) {
983
- try {
984
- let properties;
985
- if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.StackViewport) {
986
- properties = viewport.getProperties();
987
- if (properties.voiRange) {
988
- setVoiRange(properties.voiRange);
989
- voiRangeRef.current = properties.voiRange;
990
- }
991
- } else if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.BaseVolumeViewport) {
992
- // For volume viewports, find the actor for the active display set
993
- const volumeIds = viewport.getAllVolumeIds();
994
- const volumeId = volumeIds.find(id => id.includes(activeDisplaySetInstanceUID));
995
- if (volumeId) {
996
- properties = viewport.getProperties(volumeId);
997
- if (properties?.voiRange) {
998
- setVoiRange(properties.voiRange);
999
- voiRangeRef.current = properties.voiRange;
1000
- }
1001
-
1002
- // Get opacity from colormap if available
1003
- if (properties?.colormap?.opacity !== undefined) {
1004
- const isArray = Array.isArray(properties.colormap.opacity);
1005
- const opacity = isArray ? properties.colormap.opacity.reduce((max, current) => Math.max(max, current), 0) : properties.colormap.opacity;
1006
- setOpacityState(opacity);
1007
- setOpacityLinearState(opacityToLinear(opacity));
1008
- }
1009
-
1010
- // Get threshold from colormap if available
1011
- if (properties?.colormap && properties.colormap.threshold !== undefined) {
1012
- setThresholdState(properties.colormap.threshold);
1013
- }
1014
- }
1015
- }
1016
- } catch (error) {
1017
- console.error('Error initializing VOI range:', error);
997
+ setIs3DVolume(viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.VolumeViewport3D);
998
+ if (!viewport || !activeDisplaySetInstanceUID) {
999
+ return;
1000
+ }
1001
+ try {
1002
+ const dataId = (0,_utils_getDataIdForViewport__WEBPACK_IMPORTED_MODULE_4__/* .getDataIdForViewport */ .V)(viewport, activeDisplaySetInstanceUID);
1003
+ const properties = dataId != null ? viewport.getProperties(dataId) : viewport.getProperties();
1004
+ if (!properties) {
1005
+ return;
1006
+ }
1007
+ if (properties.voiRange) {
1008
+ setVoiRange(properties.voiRange);
1009
+ voiRangeRef.current = properties.voiRange;
1018
1010
  }
1011
+ if (properties.colormap?.opacity !== undefined) {
1012
+ const opacityVal = properties.colormap.opacity;
1013
+ const opacity = Array.isArray(opacityVal) ? opacityVal.reduce((max, current) => Math.max(max, current), 0) : opacityVal;
1014
+ setOpacityState(opacity);
1015
+ setOpacityLinearState(opacityToLinear(opacity));
1016
+ }
1017
+ if (properties.colormap?.threshold !== undefined) {
1018
+ setThresholdState(properties.colormap.threshold);
1019
+ }
1020
+ } catch (error) {
1021
+ console.error('Error initializing VOI range:', error);
1019
1022
  }
1020
- }, [cornerstoneViewportService, viewportId, activeDisplaySetInstanceUID]);
1023
+ }, [activeDisplaySetInstanceUID, viewport]);
1021
1024
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1022
1025
  if (!viewportId) {
1023
1026
  return;
@@ -1035,17 +1038,10 @@ function useViewportRendering(viewportId, options) {
1035
1038
  };
1036
1039
  }, [colorbarService, viewportId]);
1037
1040
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1038
- if (!viewportId || !activeDisplaySetInstanceUID) {
1039
- return;
1040
- }
1041
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
1042
- if (!viewport) {
1041
+ if (!activeDisplaySetInstanceUID || !viewport?.element) {
1043
1042
  return;
1044
1043
  }
1045
1044
  const element = viewport.element;
1046
- if (!element) {
1047
- return;
1048
- }
1049
1045
  const updateVOI = eventDetail => {
1050
1046
  const {
1051
1047
  range
@@ -1085,7 +1081,7 @@ function useViewportRendering(viewportId, options) {
1085
1081
  element.removeEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.Enums.Events.VOI_MODIFIED, updateVOI);
1086
1082
  element.removeEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.Enums.Events.COLORMAP_MODIFIED, updateColormap);
1087
1083
  };
1088
- }, [viewportId, activeDisplaySetInstanceUID, cornerstoneViewportService, opacityToLinear]);
1084
+ }, [activeDisplaySetInstanceUID, viewport, opacityToLinear]);
1089
1085
  const validateActiveDisplaySet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
1090
1086
  if (!activeDisplaySetInstanceUID) {
1091
1087
  throw new Error('No active display set instance UID is available');
@@ -1238,12 +1234,8 @@ function useViewportRendering(viewportId, options) {
1238
1234
  },
1239
1235
  context: 'CORNERSTONE'
1240
1236
  });
1241
- }, [commandsManager, viewportId, validateActiveDisplaySet]);
1237
+ }, [commandsManager, validateActiveDisplaySet, viewport, viewportId]);
1242
1238
  const setOpacity = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(opacityValue => {
1243
- if (!viewportId) {
1244
- return;
1245
- }
1246
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
1247
1239
  if (!viewport || !(viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.BaseVolumeViewport)) {
1248
1240
  return;
1249
1241
  }
@@ -1274,17 +1266,13 @@ function useViewportRendering(viewportId, options) {
1274
1266
  colormap: updatedColormap
1275
1267
  }, volumeId);
1276
1268
  viewport.render();
1277
- }, [cornerstoneViewportService, viewportId, validateActiveDisplaySet, opacityToLinear]);
1269
+ }, [validateActiveDisplaySet, opacityToLinear, viewport]);
1278
1270
  const setOpacityLinear = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(linearValue => {
1279
1271
  // Convert linear UI value to actual opacity value and apply it
1280
1272
  const actualOpacity = linearToOpacity(linearValue);
1281
1273
  setOpacity(actualOpacity);
1282
1274
  }, [linearToOpacity, setOpacity]);
1283
1275
  const setThreshold = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(thresholdValue => {
1284
- if (!viewportId) {
1285
- return;
1286
- }
1287
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
1288
1276
  if (!viewport || !(viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.BaseVolumeViewport)) {
1289
1277
  return;
1290
1278
  }
@@ -1302,15 +1290,14 @@ function useViewportRendering(viewportId, options) {
1302
1290
  }
1303
1291
  }, volumeId);
1304
1292
  viewport.render();
1305
- }, [cornerstoneViewportService, viewportId, validateActiveDisplaySet]);
1293
+ }, [validateActiveDisplaySet, viewport]);
1306
1294
 
1307
1295
  // Get the current colormap for the active display set
1308
1296
  const colormap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
1309
- if (!viewportId || !activeDisplaySetInstanceUID || !viewportDisplaySets?.length) {
1297
+ if (!activeDisplaySetInstanceUID || !viewportDisplaySets?.length) {
1310
1298
  return null;
1311
1299
  }
1312
1300
  try {
1313
- const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
1314
1301
  if (!viewport) {
1315
1302
  return null;
1316
1303
  }
@@ -1339,7 +1326,7 @@ function useViewportRendering(viewportId, options) {
1339
1326
  console.error('Error getting viewport colormap:', error);
1340
1327
  return colorbarProperties?.colormaps?.find(c => c.Name === 'Grayscale') || colorbarProperties?.colormaps?.[0];
1341
1328
  }
1342
- }, [cornerstoneViewportService, viewportId, activeDisplaySetInstanceUID, viewportDisplaySets, colorbarProperties?.colormaps]);
1329
+ }, [activeDisplaySetInstanceUID, viewportDisplaySets, colorbarProperties?.colormaps, viewport]);
1343
1330
 
1344
1331
  // 3D volume rendering functions
1345
1332
  const setVolumeRenderingPreset = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(preset => {
@@ -1405,7 +1392,10 @@ function useViewportRendering(viewportId, options) {
1405
1392
  setWindowLevel,
1406
1393
  setVOIRange,
1407
1394
  voiRange,
1408
- windowLevel: _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.utilities.windowLevel.toWindowLevel(voiRange?.lower, voiRange?.upper),
1395
+ windowLevel: voiRange ? _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__.utilities.windowLevel.toWindowLevel(voiRange?.lower, voiRange?.upper) : {
1396
+ windowCenter: null,
1397
+ windowWidth: null
1398
+ },
1409
1399
  // Colorbar functions
1410
1400
  hasColorbar,
1411
1401
  toggleColorbar,
@@ -7412,7 +7402,8 @@ function _showCPURenderingModal(uiModalService, hangingProtocolService) {
7412
7402
  'viewportOverlay.topRight': [],
7413
7403
  'viewportOverlay.bottomLeft': [{
7414
7404
  id: 'WindowLevel',
7415
- inheritsFrom: 'ohif.overlayItem.windowLevel'
7405
+ inheritsFrom: 'ohif.overlayItem.windowLevel',
7406
+ title: 'Window Level'
7416
7407
  }, {
7417
7408
  id: 'ZoomLevel',
7418
7409
  inheritsFrom: 'ohif.overlayItem.zoomLevel',
@@ -7423,7 +7414,8 @@ function _showCPURenderingModal(uiModalService, hangingProtocolService) {
7423
7414
  }],
7424
7415
  'viewportOverlay.bottomRight': [{
7425
7416
  id: 'InstanceNumber',
7426
- inheritsFrom: 'ohif.overlayItem.instanceNumber'
7417
+ inheritsFrom: 'ohif.overlayItem.instanceNumber',
7418
+ title: 'Instance Number'
7427
7419
  }]
7428
7420
  });
7429
7421
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3076 modules
@@ -22796,6 +22788,8 @@ CornerstoneViewportService.REGISTRATION = {
22796
22788
  }
22797
22789
  };
22798
22790
  /* harmony default export */ const ViewportService_CornerstoneViewportService = (CornerstoneViewportService);
22791
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/utils/getDataIdForViewport.ts
22792
+ var getDataIdForViewport = __webpack_require__(67142);
22799
22793
  ;// ../../../extensions/cornerstone/src/types/Colorbar.ts
22800
22794
  // Position options
22801
22795
 
@@ -22838,6 +22832,7 @@ var _ColorbarService;
22838
22832
 
22839
22833
 
22840
22834
 
22835
+
22841
22836
  class ColorbarService extends src/* PubSubService */.Rc {
22842
22837
  constructor(servicesManager) {
22843
22838
  super(ColorbarService.EVENTS);
@@ -22861,23 +22856,6 @@ class ColorbarService extends src/* PubSubService */.Rc {
22861
22856
  this.servicesManager = servicesManager;
22862
22857
  }
22863
22858
 
22864
- /**
22865
- * Gets the appropriate data ID for a viewport and display set
22866
- * @param viewport - The viewport instance
22867
- * @param displaySetInstanceUID - The display set instance UID to identify data
22868
- * @returns The appropriate data ID for the viewport type (volumeId for volume viewports, undefined for stack)
22869
- */
22870
- getDataIdForViewport(viewport, displaySetInstanceUID) {
22871
- // For volume viewports, find the matching volumeId
22872
- if (viewport.getAllVolumeIds) {
22873
- const volumeIds = viewport.getAllVolumeIds() || [];
22874
- return volumeIds.length > 0 ? volumeIds.find(id => id.includes(displaySetInstanceUID)) || undefined : undefined;
22875
- }
22876
-
22877
- // For other viewports, no specific dataId is needed for now
22878
- return undefined;
22879
- }
22880
-
22881
22859
  /**
22882
22860
  * Adds a colorbar to a specific viewport identified by `viewportId`, using the provided `displaySetInstanceUIDs` and `options`.
22883
22861
  * This method prepares the colorbar state that will be used by the ViewportColorbarsContainer component.
@@ -22909,7 +22887,7 @@ class ColorbarService extends src/* PubSubService */.Rc {
22909
22887
  if (displaySet.isOverlayDisplaySet) {
22910
22888
  return;
22911
22889
  }
22912
- const dataId = this.getDataIdForViewport(viewport, displaySetInstanceUID);
22890
+ const dataId = (0,getDataIdForViewport/* getDataIdForViewport */.V)(viewport, displaySetInstanceUID);
22913
22891
  const properties = dataId ? viewport.getProperties(dataId) : viewport.getProperties();
22914
22892
  const colormap = properties?.colormap;
22915
22893
  if (activeColormapName && !colormap) {
@@ -23047,7 +23025,7 @@ class ColorbarService extends src/* PubSubService */.Rc {
23047
23025
  }
23048
23026
 
23049
23027
  // Get the appropriate dataId for this viewport/displaySet combination
23050
- const dataId = this.getDataIdForViewport(viewport, displaySetInstanceUID);
23028
+ const dataId = (0,getDataIdForViewport/* getDataIdForViewport */.V)(viewport, displaySetInstanceUID);
23051
23029
 
23052
23030
  // Set properties with or without dataId based on what the viewport supports
23053
23031
  viewport.setProperties({
@@ -26879,6 +26857,32 @@ const useSynchronizersStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__/* .create
26879
26857
  name: 'SynchronizersStore'
26880
26858
  }) : createSynchronizersStore);
26881
26859
 
26860
+ /***/ },
26861
+
26862
+ /***/ 67142
26863
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
26864
+
26865
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26866
+ /* harmony export */ V: () => (/* binding */ getDataIdForViewport)
26867
+ /* harmony export */ });
26868
+ /**
26869
+ * Resolves the data ID (e.g. volumeId) for a viewport and display set.
26870
+ * For viewports with multiple volumes/actors, returns the id that matches the display set; otherwise undefined.
26871
+ * Use this to call viewport.getProperties(dataId) in a viewport-type-agnostic way.
26872
+ *
26873
+ * @param viewport - Viewport instance (stack, volume, or future types with optional getAllVolumeIds)
26874
+ * @param displaySetInstanceUID - Display set instance UID to match
26875
+ * @returns volumeId (or equivalent) for multi-actor viewports, undefined for single-actor
26876
+ */
26877
+ function getDataIdForViewport(viewport, displaySetInstanceUID) {
26878
+ const vp = viewport;
26879
+ if (typeof vp.getAllVolumeIds !== 'function') {
26880
+ return undefined;
26881
+ }
26882
+ const volumeIds = vp.getAllVolumeIds() || [];
26883
+ return volumeIds.length > 0 ? volumeIds.find(id => id.includes(displaySetInstanceUID)) ?? undefined : undefined;
26884
+ }
26885
+
26882
26886
  /***/ }
26883
26887
 
26884
26888
  }]);
@@ -10402,8 +10402,8 @@ function AboutModalDefault() {
10402
10402
  name
10403
10403
  } = (0,browser_detect_es5/* default */.A)();
10404
10404
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
10405
- const versionNumber = "3.13.0-beta.38";
10406
- const commitHash = "7b5d0ce40e5422ccfce6091ac3d7559586cbe57e";
10405
+ const versionNumber = "3.13.0-beta.39";
10406
+ const commitHash = "fe1ecfe0cc5d1bcf82686d821f356da8936a8c4b";
10407
10407
  const [main, beta] = versionNumber.split('-');
10408
10408
  return /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU, {
10409
10409
  className: "w-[400px]"
@@ -80732,7 +80732,7 @@ const detectionOptions = {
80732
80732
  }
80733
80733
  });
80734
80734
  ;// ../../i18n/package.json
80735
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.13.0-beta.37"}');
80735
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.13.0-beta.38"}');
80736
80736
  ;// ../../i18n/src/utils.js
80737
80737
  const languagesMap = {
80738
80738
  ar: 'Arabic',
@@ -396689,7 +396689,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
396689
396689
  /******/ // This function allow to reference async chunks
396690
396690
  /******/ __webpack_require__.u = (chunkId) => {
396691
396691
  /******/ // return url for filenames based on template
396692
- /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"5fca3f4a44d9585207d3","147":"39390548da6ae43a4143","213":"3f4a406d7dca2ff2342b","572":"8954fb59f99daeb3f0b0","581":"f48ce2a0f0dae080154c","732":"ea6f9d8504e37e01a208","1459":"91e4470dfa898475826c","1608":"c10d9aef452fe5a86d77","1927":"be67b3aafe238ca9f191","1933":"f1f357ded29a873c71d2","2007":"53073c15cca1c5a41ae4","2018":"6eb6052ce5f8eb700d08","2075":"0e69a126a39539ff8e9a","2108":"f1ef8e8746eb3936bb47","2424":"30c85c242e97c5196db4","2701":"28b3ca0e6ae5a13f78b3","3054":"a2a50c4674d99c619ca7","3138":"6367b88f61f4de436a4a","3461":"fe278a80710b3a6d53ab","3694":"47da6b38c64751bdb9c4","4202":"f11f02596e30a22d1105","4287":"b7840e7b94cbbc102236","4406":"573d234b4641d23cf8db","4507":"36ac08fd12f382c3cee6","4688":"3ea55e22200ad55ed122","4819":"c25a94eb71ef36996b27","5015":"2f9bc4d3df1f4b8c1349","5028":"0683912ba966f892e5a6","5261":"2655560097e9250eac44","5457":"70649ac2ae0be5f6e134","5485":"4bdfa205240c4646b657","5802":"a3a398ddaac222cf08f7","6027":"b84af7dc3a23cc6be5f9","6939":"41fbdef87597b5172ec6","7159":"fb9df255868960f69765","7431":"e5a9b628c993b78ff7db","7639":"ede44f8aeba49d1d4638","8094":"148a66619607e37cbf19","8305":"981476ac163dab0cd09f","8499":"1d877499cf23bba2d6a1","8558":"0943e93e6678b139bee2","8583":"825e0786dbc34009142b","9195":"deae38755cca161a92d3","9205":"7c4a29705386dcefd999","9567":"be350438bed4e656f278","9845":"36b3563ae1dba65b6b9a","9862":"f59f3a574a92024c8823","9927":"4d4aa54a98618d2f3d87"}[chunkId] + ".js";
396692
+ /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"80b16edc06976de80ae6","147":"f71d384c49f50e23f795","213":"9a4de523c0842d7bd7fd","572":"8954fb59f99daeb3f0b0","581":"f48ce2a0f0dae080154c","732":"ea6f9d8504e37e01a208","1459":"4aef0d934c3a12aa66bb","1608":"c10d9aef452fe5a86d77","1927":"be67b3aafe238ca9f191","1933":"0aba0ce3d97d32bd3ca5","2007":"53073c15cca1c5a41ae4","2018":"896e322e7c39599383f7","2075":"0e69a126a39539ff8e9a","2108":"f1ef8e8746eb3936bb47","2424":"6a9ca8e7e84f5528c8d1","2701":"28b3ca0e6ae5a13f78b3","3054":"a2a50c4674d99c619ca7","3138":"a377f868158dec8efdb0","3461":"b6304f280d7dc0ade73a","3694":"47da6b38c64751bdb9c4","4202":"f11f02596e30a22d1105","4287":"b7840e7b94cbbc102236","4406":"573d234b4641d23cf8db","4507":"67c73fab897aa7040fce","4688":"324f320f177fe7f70db8","4819":"5aa5ed42843908dbb820","5015":"4f91f03ea8084a82657b","5028":"71b240621417df1a6fab","5261":"2655560097e9250eac44","5457":"109f104b4520e6374fa6","5485":"a88fd5be3f5aa20dc643","5802":"a3a398ddaac222cf08f7","6027":"555553c951bba02afa54","6939":"41fbdef87597b5172ec6","7159":"fb9df255868960f69765","7431":"e5a9b628c993b78ff7db","7639":"0f0b2419e43c7dc3b88a","8094":"148a66619607e37cbf19","8305":"371dde3415de88db3f43","8499":"c179a028eae7170b397d","8558":"f08683ca26d63fb8c0ef","8583":"f6c226c9fa6de90f2bcb","9195":"afd5483195e12e5cef8e","9205":"7c4a29705386dcefd999","9567":"be350438bed4e656f278","9845":"36b3563ae1dba65b6b9a","9862":"f59f3a574a92024c8823","9927":"6966a86ab930197c8295"}[chunkId] + ".js";
396693
396693
  /******/ };
396694
396694
  /******/ })();
396695
396695
  /******/
package/dist/index.html CHANGED
@@ -3,4 +3,4 @@
3
3
  return import(moduleId);
4
4
  }
5
5
 
6
- window.PUBLIC_URL = '/';</script><script defer="defer" src="/app.bundle.548916b36a54916cc5fd.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="react-portal"></div><div id="root"></div></body></html>
6
+ window.PUBLIC_URL = '/';</script><script defer="defer" src="/app.bundle.6c3daf11c7fbd7e48175.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="react-portal"></div><div id="root"></div></body></html>
package/dist/sw.js CHANGED
@@ -50,7 +50,7 @@ self.addEventListener('message', event => {
50
50
  }
51
51
  }
52
52
  });
53
- workbox.precaching.precacheAndRoute([{'revision':null,'url':'/1459.bundle.91e4470dfa898475826c.js'},{'revision':null,'url':'/147.bundle.39390548da6ae43a4143.js'},{'revision':'e0cfcadcf2c2fbc1f117196b9f62bf3e','url':'/147.css'},{'revision':null,'url':'/1608.bundle.c10d9aef452fe5a86d77.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1608.css'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/1927.bundle.be67b3aafe238ca9f191.js'},{'revision':null,'url':'/1933.bundle.f1f357ded29a873c71d2.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1933.css'},{'revision':null,'url':'/2018.bundle.6eb6052ce5f8eb700d08.js'},{'revision':null,'url':'/2075.bundle.0e69a126a39539ff8e9a.js'},{'revision':null,'url':'/2108.bundle.f1ef8e8746eb3936bb47.js'},{'revision':null,'url':'/213.bundle.3f4a406d7dca2ff2342b.js'},{'revision':null,'url':'/2424.bundle.30c85c242e97c5196db4.js'},{'revision':null,'url':'/2516.bundle.f62228e9a800de8d4b31.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/2591.css'},{'revision':null,'url':'/2701.bundle.28b3ca0e6ae5a13f78b3.js'},{'revision':null,'url':'/3138.bundle.6367b88f61f4de436a4a.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/3138.css'},{'revision':null,'url':'/31fb9346313fc3740d7b.woff2'},{'revision':null,'url':'/3461.bundle.fe278a80710b3a6d53ab.js'},{'revision':null,'url':'/4202.bundle.f11f02596e30a22d1105.js'},{'revision':null,'url':'/4287.bundle.b7840e7b94cbbc102236.js'},{'revision':null,'url':'/4406.bundle.573d234b4641d23cf8db.js'},{'revision':null,'url':'/4507.bundle.36ac08fd12f382c3cee6.js'},{'revision':null,'url':'/4688.bundle.3ea55e22200ad55ed122.js'},{'revision':null,'url':'/4819.bundle.c25a94eb71ef36996b27.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4819.css'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4972.css'},{'revision':null,'url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/5015.bundle.2f9bc4d3df1f4b8c1349.js'},{'revision':null,'url':'/5028.bundle.0683912ba966f892e5a6.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/5028.css'},{'revision':null,'url':'/5261.bundle.2655560097e9250eac44.js'},{'revision':null,'url':'/5457.bundle.70649ac2ae0be5f6e134.js'},{'revision':null,'url':'/5485.bundle.4bdfa205240c4646b657.js'},{'revision':null,'url':'/5491.bundle.4866d2ecb20dd089e071.js'},{'revision':null,'url':'/5802.bundle.a3a398ddaac222cf08f7.js'},{'revision':'db90dfc1361c5dfac355bf8067ab4371','url':'/5802.css'},{'revision':null,'url':'/581.bundle.f48ce2a0f0dae080154c.js'},{'revision':null,'url':'/5830.bundle.791019deddd536980a11.js'},{'revision':null,'url':'/5858.bundle.466e58128de344ab53f3.js'},{'revision':null,'url':'/6027.bundle.b84af7dc3a23cc6be5f9.js'},{'revision':null,'url':'/6354.bundle.929febcf6d326e582e00.js'},{'revision':null,'url':'/6376.bundle.839c708f2fc41e76ee58.js'},{'revision':null,'url':'/6386.bundle.e75a2f70039dfe42f935.js'},{'revision':null,'url':'/6939.bundle.41fbdef87597b5172ec6.js'},{'revision':null,'url':'/7159.bundle.fb9df255868960f69765.js'},{'revision':'20a92cf14c2d8be6cd580f68780cc7fa','url':'/7159.css'},{'revision':null,'url':'/7190.bundle.6314b558746e394aeb0e.js'},{'revision':null,'url':'/732.bundle.ea6f9d8504e37e01a208.js'},{'revision':null,'url':'/7431.bundle.e5a9b628c993b78ff7db.js'},{'revision':null,'url':'/7537.bundle.b784154ebd4c85946642.js'},{'revision':null,'url':'/7639.bundle.ede44f8aeba49d1d4638.js'},{'revision':null,'url':'/7758.bundle.c8d106364298e7d288f0.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/7829.css'},{'revision':null,'url':'/8094.bundle.148a66619607e37cbf19.js'},{'revision':null,'url':'/8305.bundle.981476ac163dab0cd09f.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8305.css'},{'revision':null,'url':'/8499.bundle.1d877499cf23bba2d6a1.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8499.css'},{'revision':null,'url':'/85.bundle.5fca3f4a44d9585207d3.js'},{'revision':null,'url':'/8558.bundle.0943e93e6678b139bee2.js'},{'revision':null,'url':'/8583.bundle.825e0786dbc34009142b.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8583.css'},{'revision':null,'url':'/9039.bundle.fd54c15934103ff3fd3b.js'},{'revision':null,'url':'/9195.bundle.deae38755cca161a92d3.js'},{'revision':null,'url':'/9205.bundle.7c4a29705386dcefd999.js'},{'revision':null,'url':'/9567.bundle.be350438bed4e656f278.js'},{'revision':null,'url':'/982b0633e475d94949df.wasm'},{'revision':null,'url':'/9845.bundle.36b3563ae1dba65b6b9a.js'},{'revision':null,'url':'/9862.bundle.f59f3a574a92024c8823.js'},{'revision':null,'url':'/9927.bundle.4d4aa54a98618d2f3d87.js'},{'revision':'d41d8cd98f00b204e9800998ecf8427e','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':null,'url':'/a957c5cd315f89b6feb1.wasm'},{'revision':'c11dc68cde4925f1ce47ab53247b4c97','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.548916b36a54916cc5fd.js'},{'revision':'3222f79932379aaa0893deaabcc3fbc6','url':'/app.bundle.css'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2547879ee2928a5fd56dca483bcbd967','url':'/assets/images/CT-AAA.png'},{'revision':'245628fb9d18d6c5cd529615079f8e86','url':'/assets/images/CT-AAA2.png'},{'revision':'997a9c8b57e7b4e46d8f01fb49d078c6','url':'/assets/images/CT-Air.png'},{'revision':'e7ed89711f63348d49898da3a2b73ab9','url':'/assets/images/CT-Bone.png'},{'revision':'09d1dc6efebb10a60cdf85ed74a10214','url':'/assets/images/CT-Bones.png'},{'revision':'f8ae9bafd3b90ba3efbdcbe8901db187','url':'/assets/images/CT-Cardiac.png'},{'revision':'ed0cc538aba90d6a1c029923ca9b47db','url':'/assets/images/CT-Cardiac2.png'},{'revision':'dfdaf4e4889aefbf09514545f45726bb','url':'/assets/images/CT-Cardiac3.png'},{'revision':'5d4b9a331136a1a5d7ce7ccf7dfcca36','url':'/assets/images/CT-Chest-Contrast-Enhanced.png'},{'revision':'5fb264499a5bb42487663b00e42d1513','url':'/assets/images/CT-Chest-Vessels.png'},{'revision':'ab8f0e569c972388ddaaa61b92449fac','url':'/assets/images/CT-Coronary-Arteries-2.png'},{'revision':'e4e7e2e3cc09bc8c4fb03b6441bd2845','url':'/assets/images/CT-Coronary-Arteries-3.png'},{'revision':'79a2962a2d3cbe4bd3b675b5ca83c659','url':'/assets/images/CT-Coronary-Arteries.png'},{'revision':'6502a6bdab1c70e2188c3bf12ce5d4e4','url':'/assets/images/CT-Cropped-Volume-Bone.png'},{'revision':'e28ad3cf5ed2006fc5a7cffd602736fc','url':'/assets/images/CT-Fat.png'},{'revision':'ca1c5be76053edee27e68ffbf9105101','url':'/assets/images/CT-Liver-Vasculature.png'},{'revision':'d6c9ab857ed2ad19f1ff20bea02b6655','url':'/assets/images/CT-Lung.png'},{'revision':'ddb599c6a163bdf28ece8de1a337470a','url':'/assets/images/CT-MIP.png'},{'revision':'0b0dcf7940a555e2a9a0900f7f84d4d3','url':'/assets/images/CT-Muscle.png'},{'revision':'6082d383f9ce375a5873e2a00fc4d372','url':'/assets/images/CT-Pulmonary-Arteries.png'},{'revision':'b317366149ee2607bec95d63eb4d7661','url':'/assets/images/CT-Soft-Tissue.png'},{'revision':'4b0cd5a673ebb71da22a91ed608d6695','url':'/assets/images/DTI-FA-Brain.png'},{'revision':'3ea1cbee022af5b94710b73726308832','url':'/assets/images/MR-Angio.png'},{'revision':'bd25ca7b166193547f34950eed440e5c','url':'/assets/images/MR-Default.png'},{'revision':'2e50a49b859aeb316a1c23f911fce9ad','url':'/assets/images/MR-MIP.png'},{'revision':'6ba74de6961e08652ff9e2f1871b473d','url':'/assets/images/MR-T2-Brain.png'},{'revision':'42406bb474f0f87cf04a5afbbcd5e389','url':'/assets/images/VolumeRendering.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':null,'url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':null,'url':'/compute.bundle.47da6b38c64751bdb9c4.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/dicom-microscopy-viewer/charlswasm_decode.wasm'},{'revision':'9214592a1edd456ad2ef69772201398e','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js'},{'revision':'813dee9adb3a3478dedc6dfe1479e15b','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js.map'},{'revision':'fb088ddc5ec5de63aa6095f70baa2d45','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js'},{'revision':'cdf943673c34e8dd6be85b026bdffc70','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/dicom-microscopy-viewer/dicomiccwasm.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm'},{'revision':'54a25d82a224dfd401569baffc8b478d','url':'/dicom-microscopy-viewer/openjpegwasm_decode.wasm'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'92b01d0a387d59841e02cc3a4c994657','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.a2a50c4674d99c619ca7.js'},{'revision':'d08e1b1a8c1b761359fcc28fedf646fb','url':'/index.html'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':null,'url':'/interpolation.bundle.53073c15cca1c5a41ae4.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'242abae066a3d4717e09f218703f1923','url':'/ort/cjs/ort.all.min.js'},{'revision':'039ea411b3b655094035e85bb2e245d4','url':'/ort/cjs/ort.all.min.js.map'},{'revision':'fb509ab752acf788c3cc25459ae72e62','url':'/ort/cjs/ort.min.js'},{'revision':'30087ad61fc31272eb6094962e3a0451','url':'/ort/cjs/ort.min.js.map'},{'revision':'0fad6d8ca65291350ca8a1751659a536','url':'/ort/cjs/ort.training.wasm.min.js'},{'revision':'da692fb2cd7f67223b92a90955b87cb3','url':'/ort/cjs/ort.training.wasm.min.js.map'},{'revision':'f471b605fb03df54c63d5bc77a32226b','url':'/ort/cjs/ort.wasm-core.min.js'},{'revision':'cc4475faebff69233b4fdc1a78eb0399','url':'/ort/cjs/ort.wasm-core.min.js.map'},{'revision':'d228221765171d0a4cf3cb3909dd0be3','url':'/ort/cjs/ort.wasm.min.js'},{'revision':'6d132c02e5eeadf4da54c8bcc0c15200','url':'/ort/cjs/ort.wasm.min.js.map'},{'revision':'9a463e37f9550d7a23f5a47076b6b3d8','url':'/ort/cjs/ort.webgl.min.js'},{'revision':'26e251b6aee08c91a3d6e1af1410659d','url':'/ort/cjs/ort.webgl.min.js.map'},{'revision':'5cd623012201d7c5ddbbdb57224ac26d','url':'/ort/cjs/ort.webgpu.min.js'},{'revision':'e53c54f9663a5d7573b66dd3d25fb93a','url':'/ort/cjs/ort.webgpu.min.js.map'},{'revision':'a6b7eb31b5dcf3835a90ea0d201f21e3','url':'/ort/cjs/package.json'},{'revision':'2ccbe0c4397149108dd0d7ced00b5879','url':'/ort/esm/ort.all.min.js'},{'revision':'2b2ff793ba11a59563a504067aa1e469','url':'/ort/esm/ort.all.min.js.map'},{'revision':'978e978337e66e848c2351da61fd7e8e','url':'/ort/esm/ort.min.js'},{'revision':'add9f88f20194b214c8a97b200c4eac0','url':'/ort/esm/ort.min.js.map'},{'revision':'61471773b94ac06d0d814b49cf619233','url':'/ort/esm/ort.training.wasm.min.js'},{'revision':'60057feb2e9c1d39d7e52b165e450e72','url':'/ort/esm/ort.training.wasm.min.js.map'},{'revision':'12635093e14a67921565de89f678c470','url':'/ort/esm/ort.wasm-core.min.js'},{'revision':'1d2c905465e8b47dc023beaf715bb6ae','url':'/ort/esm/ort.wasm-core.min.js.map'},{'revision':'f2780d73ea108c5728b4c4fb6bd1e8df','url':'/ort/esm/ort.wasm.min.js'},{'revision':'e1af0f0e8befaa973a9192cdc1a882fb','url':'/ort/esm/ort.wasm.min.js.map'},{'revision':'c5a2e8ed939ccfb0211336d8b385d81a','url':'/ort/esm/ort.webgl.min.js'},{'revision':'9e0198bc10517578066aed6c8baef1a3','url':'/ort/esm/ort.webgl.min.js.map'},{'revision':'0c96a22438d8ffdf94f13b1693dbed8b','url':'/ort/esm/ort.webgpu.min.js'},{'revision':'24126f825e1c2dd678b4b85cde6c4e3a','url':'/ort/esm/ort.webgpu.min.js.map'},{'revision':'b305354b5d3207dc798e87449005a1de','url':'/ort/esm/package.json'},{'revision':'10ba4d1a5289405cff7d9b5f453b60b4','url':'/ort/ort-training-wasm-simd.wasm'},{'revision':'f7380fb5928344460bac0e5833ee4a82','url':'/ort/ort-wasm-simd-threaded.jsep.wasm'},{'revision':'068e15f5aba004197782c011a782c500','url':'/ort/ort-wasm-simd-threaded.wasm'},{'revision':'8a468bda81bfb9e375907f0b6da8ffee','url':'/ort/ort-wasm-simd.jsep.wasm'},{'revision':'27a8292511e77fc50ced64326875ca4a','url':'/ort/ort-wasm-simd.wasm'},{'revision':'c9cf2d09cfabe6ea517c87620091a2fb','url':'/ort/ort-wasm-threaded.wasm'},{'revision':'88cb0475e8c4228b29dd201646223f0c','url':'/ort/ort-wasm.wasm'},{'revision':'708def774c211a2b036384d9e14dbfe7','url':'/ort/ort.all.js'},{'revision':'32e292212f5767983e5433f0a88d3425','url':'/ort/ort.all.min.js'},{'revision':'c4a4b66af400491c83591ab732dac868','url':'/ort/ort.all.min.js.map'},{'revision':'5d78ec66bcab8a26756d43b8c63a8f1e','url':'/ort/ort.js'},{'revision':'d552a78742409520bd30fb824a88a266','url':'/ort/ort.min.js'},{'revision':'a1fdb4abef4a6130f72148fe469ca114','url':'/ort/ort.min.js.map'},{'revision':'e3b420cb98f192d8755934dde7c014db','url':'/ort/ort.node.min.js'},{'revision':'9b0c2098e6c9b0f6d6e54e8cb434ed76','url':'/ort/ort.node.min.js.map'},{'revision':'722dabcfbb18772ca80ef96ef9b9a036','url':'/ort/ort.training.wasm.min.js'},{'revision':'de35b3d2e302163bdcb80d3e20c84266','url':'/ort/ort.training.wasm.min.js.map'},{'revision':'f92b62229fc36d346f720b2410e63576','url':'/ort/ort.wasm-core.min.js'},{'revision':'8f56640956155afecadc318d8a32e0f6','url':'/ort/ort.wasm-core.min.js.map'},{'revision':'5ac1ffe964e3bd1f0d2e6a3a18a5a1ba','url':'/ort/ort.wasm.min.js'},{'revision':'9b0a74e48529a07b61428b1a48233b39','url':'/ort/ort.wasm.min.js.map'},{'revision':'4591c9c641ab0151b9a8cdc1ce110286','url':'/ort/ort.webgl.min.js'},{'revision':'77e632e10b98c8d10e17bb3071d5cba4','url':'/ort/ort.webgl.min.js.map'},{'revision':'027aca68552f5081e90a08f7fb064fb7','url':'/ort/ort.webgpu.min.js'},{'revision':'12dc9d5c577bac166f0f74590e4d27dd','url':'/ort/ort.webgpu.min.js.map'},{'revision':null,'url':'/polySeg.bundle.8954fb59f99daeb3f0b0.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'981ac7f7543b8330e3826aff72c33382','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
53
+ workbox.precaching.precacheAndRoute([{'revision':null,'url':'/1459.bundle.4aef0d934c3a12aa66bb.js'},{'revision':null,'url':'/147.bundle.f71d384c49f50e23f795.js'},{'revision':'e0cfcadcf2c2fbc1f117196b9f62bf3e','url':'/147.css'},{'revision':null,'url':'/1608.bundle.c10d9aef452fe5a86d77.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1608.css'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/1927.bundle.be67b3aafe238ca9f191.js'},{'revision':null,'url':'/1933.bundle.0aba0ce3d97d32bd3ca5.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1933.css'},{'revision':null,'url':'/2018.bundle.896e322e7c39599383f7.js'},{'revision':null,'url':'/2075.bundle.0e69a126a39539ff8e9a.js'},{'revision':null,'url':'/2108.bundle.f1ef8e8746eb3936bb47.js'},{'revision':null,'url':'/213.bundle.9a4de523c0842d7bd7fd.js'},{'revision':null,'url':'/2424.bundle.6a9ca8e7e84f5528c8d1.js'},{'revision':null,'url':'/2516.bundle.f62228e9a800de8d4b31.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/2591.css'},{'revision':null,'url':'/2701.bundle.28b3ca0e6ae5a13f78b3.js'},{'revision':null,'url':'/3138.bundle.a377f868158dec8efdb0.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/3138.css'},{'revision':null,'url':'/31fb9346313fc3740d7b.woff2'},{'revision':null,'url':'/3461.bundle.b6304f280d7dc0ade73a.js'},{'revision':null,'url':'/4202.bundle.f11f02596e30a22d1105.js'},{'revision':null,'url':'/4287.bundle.b7840e7b94cbbc102236.js'},{'revision':null,'url':'/4406.bundle.573d234b4641d23cf8db.js'},{'revision':null,'url':'/4507.bundle.67c73fab897aa7040fce.js'},{'revision':null,'url':'/4688.bundle.324f320f177fe7f70db8.js'},{'revision':null,'url':'/4819.bundle.5aa5ed42843908dbb820.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4819.css'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4972.css'},{'revision':null,'url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/5015.bundle.4f91f03ea8084a82657b.js'},{'revision':null,'url':'/5028.bundle.71b240621417df1a6fab.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/5028.css'},{'revision':null,'url':'/5261.bundle.2655560097e9250eac44.js'},{'revision':null,'url':'/5457.bundle.109f104b4520e6374fa6.js'},{'revision':null,'url':'/5485.bundle.a88fd5be3f5aa20dc643.js'},{'revision':null,'url':'/5491.bundle.4866d2ecb20dd089e071.js'},{'revision':null,'url':'/5802.bundle.a3a398ddaac222cf08f7.js'},{'revision':'db90dfc1361c5dfac355bf8067ab4371','url':'/5802.css'},{'revision':null,'url':'/581.bundle.f48ce2a0f0dae080154c.js'},{'revision':null,'url':'/5830.bundle.791019deddd536980a11.js'},{'revision':null,'url':'/5858.bundle.466e58128de344ab53f3.js'},{'revision':null,'url':'/6027.bundle.555553c951bba02afa54.js'},{'revision':null,'url':'/6354.bundle.929febcf6d326e582e00.js'},{'revision':null,'url':'/6376.bundle.839c708f2fc41e76ee58.js'},{'revision':null,'url':'/6386.bundle.e75a2f70039dfe42f935.js'},{'revision':null,'url':'/6939.bundle.41fbdef87597b5172ec6.js'},{'revision':null,'url':'/7159.bundle.fb9df255868960f69765.js'},{'revision':'20a92cf14c2d8be6cd580f68780cc7fa','url':'/7159.css'},{'revision':null,'url':'/7190.bundle.6314b558746e394aeb0e.js'},{'revision':null,'url':'/732.bundle.ea6f9d8504e37e01a208.js'},{'revision':null,'url':'/7431.bundle.e5a9b628c993b78ff7db.js'},{'revision':null,'url':'/7537.bundle.b784154ebd4c85946642.js'},{'revision':null,'url':'/7639.bundle.0f0b2419e43c7dc3b88a.js'},{'revision':null,'url':'/7758.bundle.c8d106364298e7d288f0.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/7829.css'},{'revision':null,'url':'/8094.bundle.148a66619607e37cbf19.js'},{'revision':null,'url':'/8305.bundle.371dde3415de88db3f43.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8305.css'},{'revision':null,'url':'/8499.bundle.c179a028eae7170b397d.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8499.css'},{'revision':null,'url':'/85.bundle.80b16edc06976de80ae6.js'},{'revision':null,'url':'/8558.bundle.f08683ca26d63fb8c0ef.js'},{'revision':null,'url':'/8583.bundle.f6c226c9fa6de90f2bcb.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8583.css'},{'revision':null,'url':'/9039.bundle.fd54c15934103ff3fd3b.js'},{'revision':null,'url':'/9195.bundle.afd5483195e12e5cef8e.js'},{'revision':null,'url':'/9205.bundle.7c4a29705386dcefd999.js'},{'revision':null,'url':'/9567.bundle.be350438bed4e656f278.js'},{'revision':null,'url':'/982b0633e475d94949df.wasm'},{'revision':null,'url':'/9845.bundle.36b3563ae1dba65b6b9a.js'},{'revision':null,'url':'/9862.bundle.f59f3a574a92024c8823.js'},{'revision':null,'url':'/9927.bundle.6966a86ab930197c8295.js'},{'revision':'d41d8cd98f00b204e9800998ecf8427e','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':null,'url':'/a957c5cd315f89b6feb1.wasm'},{'revision':'c11dc68cde4925f1ce47ab53247b4c97','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.6c3daf11c7fbd7e48175.js'},{'revision':'3222f79932379aaa0893deaabcc3fbc6','url':'/app.bundle.css'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2547879ee2928a5fd56dca483bcbd967','url':'/assets/images/CT-AAA.png'},{'revision':'245628fb9d18d6c5cd529615079f8e86','url':'/assets/images/CT-AAA2.png'},{'revision':'997a9c8b57e7b4e46d8f01fb49d078c6','url':'/assets/images/CT-Air.png'},{'revision':'e7ed89711f63348d49898da3a2b73ab9','url':'/assets/images/CT-Bone.png'},{'revision':'09d1dc6efebb10a60cdf85ed74a10214','url':'/assets/images/CT-Bones.png'},{'revision':'f8ae9bafd3b90ba3efbdcbe8901db187','url':'/assets/images/CT-Cardiac.png'},{'revision':'ed0cc538aba90d6a1c029923ca9b47db','url':'/assets/images/CT-Cardiac2.png'},{'revision':'dfdaf4e4889aefbf09514545f45726bb','url':'/assets/images/CT-Cardiac3.png'},{'revision':'5d4b9a331136a1a5d7ce7ccf7dfcca36','url':'/assets/images/CT-Chest-Contrast-Enhanced.png'},{'revision':'5fb264499a5bb42487663b00e42d1513','url':'/assets/images/CT-Chest-Vessels.png'},{'revision':'ab8f0e569c972388ddaaa61b92449fac','url':'/assets/images/CT-Coronary-Arteries-2.png'},{'revision':'e4e7e2e3cc09bc8c4fb03b6441bd2845','url':'/assets/images/CT-Coronary-Arteries-3.png'},{'revision':'79a2962a2d3cbe4bd3b675b5ca83c659','url':'/assets/images/CT-Coronary-Arteries.png'},{'revision':'6502a6bdab1c70e2188c3bf12ce5d4e4','url':'/assets/images/CT-Cropped-Volume-Bone.png'},{'revision':'e28ad3cf5ed2006fc5a7cffd602736fc','url':'/assets/images/CT-Fat.png'},{'revision':'ca1c5be76053edee27e68ffbf9105101','url':'/assets/images/CT-Liver-Vasculature.png'},{'revision':'d6c9ab857ed2ad19f1ff20bea02b6655','url':'/assets/images/CT-Lung.png'},{'revision':'ddb599c6a163bdf28ece8de1a337470a','url':'/assets/images/CT-MIP.png'},{'revision':'0b0dcf7940a555e2a9a0900f7f84d4d3','url':'/assets/images/CT-Muscle.png'},{'revision':'6082d383f9ce375a5873e2a00fc4d372','url':'/assets/images/CT-Pulmonary-Arteries.png'},{'revision':'b317366149ee2607bec95d63eb4d7661','url':'/assets/images/CT-Soft-Tissue.png'},{'revision':'4b0cd5a673ebb71da22a91ed608d6695','url':'/assets/images/DTI-FA-Brain.png'},{'revision':'3ea1cbee022af5b94710b73726308832','url':'/assets/images/MR-Angio.png'},{'revision':'bd25ca7b166193547f34950eed440e5c','url':'/assets/images/MR-Default.png'},{'revision':'2e50a49b859aeb316a1c23f911fce9ad','url':'/assets/images/MR-MIP.png'},{'revision':'6ba74de6961e08652ff9e2f1871b473d','url':'/assets/images/MR-T2-Brain.png'},{'revision':'42406bb474f0f87cf04a5afbbcd5e389','url':'/assets/images/VolumeRendering.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':null,'url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':null,'url':'/compute.bundle.47da6b38c64751bdb9c4.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/dicom-microscopy-viewer/charlswasm_decode.wasm'},{'revision':'9214592a1edd456ad2ef69772201398e','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js'},{'revision':'813dee9adb3a3478dedc6dfe1479e15b','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js.map'},{'revision':'fb088ddc5ec5de63aa6095f70baa2d45','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js'},{'revision':'cdf943673c34e8dd6be85b026bdffc70','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/dicom-microscopy-viewer/dicomiccwasm.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm'},{'revision':'54a25d82a224dfd401569baffc8b478d','url':'/dicom-microscopy-viewer/openjpegwasm_decode.wasm'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'92b01d0a387d59841e02cc3a4c994657','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.a2a50c4674d99c619ca7.js'},{'revision':'077d4accd4040a4b37fc6bca5550a08c','url':'/index.html'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':null,'url':'/interpolation.bundle.53073c15cca1c5a41ae4.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'242abae066a3d4717e09f218703f1923','url':'/ort/cjs/ort.all.min.js'},{'revision':'039ea411b3b655094035e85bb2e245d4','url':'/ort/cjs/ort.all.min.js.map'},{'revision':'fb509ab752acf788c3cc25459ae72e62','url':'/ort/cjs/ort.min.js'},{'revision':'30087ad61fc31272eb6094962e3a0451','url':'/ort/cjs/ort.min.js.map'},{'revision':'0fad6d8ca65291350ca8a1751659a536','url':'/ort/cjs/ort.training.wasm.min.js'},{'revision':'da692fb2cd7f67223b92a90955b87cb3','url':'/ort/cjs/ort.training.wasm.min.js.map'},{'revision':'f471b605fb03df54c63d5bc77a32226b','url':'/ort/cjs/ort.wasm-core.min.js'},{'revision':'cc4475faebff69233b4fdc1a78eb0399','url':'/ort/cjs/ort.wasm-core.min.js.map'},{'revision':'d228221765171d0a4cf3cb3909dd0be3','url':'/ort/cjs/ort.wasm.min.js'},{'revision':'6d132c02e5eeadf4da54c8bcc0c15200','url':'/ort/cjs/ort.wasm.min.js.map'},{'revision':'9a463e37f9550d7a23f5a47076b6b3d8','url':'/ort/cjs/ort.webgl.min.js'},{'revision':'26e251b6aee08c91a3d6e1af1410659d','url':'/ort/cjs/ort.webgl.min.js.map'},{'revision':'5cd623012201d7c5ddbbdb57224ac26d','url':'/ort/cjs/ort.webgpu.min.js'},{'revision':'e53c54f9663a5d7573b66dd3d25fb93a','url':'/ort/cjs/ort.webgpu.min.js.map'},{'revision':'a6b7eb31b5dcf3835a90ea0d201f21e3','url':'/ort/cjs/package.json'},{'revision':'2ccbe0c4397149108dd0d7ced00b5879','url':'/ort/esm/ort.all.min.js'},{'revision':'2b2ff793ba11a59563a504067aa1e469','url':'/ort/esm/ort.all.min.js.map'},{'revision':'978e978337e66e848c2351da61fd7e8e','url':'/ort/esm/ort.min.js'},{'revision':'add9f88f20194b214c8a97b200c4eac0','url':'/ort/esm/ort.min.js.map'},{'revision':'61471773b94ac06d0d814b49cf619233','url':'/ort/esm/ort.training.wasm.min.js'},{'revision':'60057feb2e9c1d39d7e52b165e450e72','url':'/ort/esm/ort.training.wasm.min.js.map'},{'revision':'12635093e14a67921565de89f678c470','url':'/ort/esm/ort.wasm-core.min.js'},{'revision':'1d2c905465e8b47dc023beaf715bb6ae','url':'/ort/esm/ort.wasm-core.min.js.map'},{'revision':'f2780d73ea108c5728b4c4fb6bd1e8df','url':'/ort/esm/ort.wasm.min.js'},{'revision':'e1af0f0e8befaa973a9192cdc1a882fb','url':'/ort/esm/ort.wasm.min.js.map'},{'revision':'c5a2e8ed939ccfb0211336d8b385d81a','url':'/ort/esm/ort.webgl.min.js'},{'revision':'9e0198bc10517578066aed6c8baef1a3','url':'/ort/esm/ort.webgl.min.js.map'},{'revision':'0c96a22438d8ffdf94f13b1693dbed8b','url':'/ort/esm/ort.webgpu.min.js'},{'revision':'24126f825e1c2dd678b4b85cde6c4e3a','url':'/ort/esm/ort.webgpu.min.js.map'},{'revision':'b305354b5d3207dc798e87449005a1de','url':'/ort/esm/package.json'},{'revision':'10ba4d1a5289405cff7d9b5f453b60b4','url':'/ort/ort-training-wasm-simd.wasm'},{'revision':'f7380fb5928344460bac0e5833ee4a82','url':'/ort/ort-wasm-simd-threaded.jsep.wasm'},{'revision':'068e15f5aba004197782c011a782c500','url':'/ort/ort-wasm-simd-threaded.wasm'},{'revision':'8a468bda81bfb9e375907f0b6da8ffee','url':'/ort/ort-wasm-simd.jsep.wasm'},{'revision':'27a8292511e77fc50ced64326875ca4a','url':'/ort/ort-wasm-simd.wasm'},{'revision':'c9cf2d09cfabe6ea517c87620091a2fb','url':'/ort/ort-wasm-threaded.wasm'},{'revision':'88cb0475e8c4228b29dd201646223f0c','url':'/ort/ort-wasm.wasm'},{'revision':'708def774c211a2b036384d9e14dbfe7','url':'/ort/ort.all.js'},{'revision':'32e292212f5767983e5433f0a88d3425','url':'/ort/ort.all.min.js'},{'revision':'c4a4b66af400491c83591ab732dac868','url':'/ort/ort.all.min.js.map'},{'revision':'5d78ec66bcab8a26756d43b8c63a8f1e','url':'/ort/ort.js'},{'revision':'d552a78742409520bd30fb824a88a266','url':'/ort/ort.min.js'},{'revision':'a1fdb4abef4a6130f72148fe469ca114','url':'/ort/ort.min.js.map'},{'revision':'e3b420cb98f192d8755934dde7c014db','url':'/ort/ort.node.min.js'},{'revision':'9b0c2098e6c9b0f6d6e54e8cb434ed76','url':'/ort/ort.node.min.js.map'},{'revision':'722dabcfbb18772ca80ef96ef9b9a036','url':'/ort/ort.training.wasm.min.js'},{'revision':'de35b3d2e302163bdcb80d3e20c84266','url':'/ort/ort.training.wasm.min.js.map'},{'revision':'f92b62229fc36d346f720b2410e63576','url':'/ort/ort.wasm-core.min.js'},{'revision':'8f56640956155afecadc318d8a32e0f6','url':'/ort/ort.wasm-core.min.js.map'},{'revision':'5ac1ffe964e3bd1f0d2e6a3a18a5a1ba','url':'/ort/ort.wasm.min.js'},{'revision':'9b0a74e48529a07b61428b1a48233b39','url':'/ort/ort.wasm.min.js.map'},{'revision':'4591c9c641ab0151b9a8cdc1ce110286','url':'/ort/ort.webgl.min.js'},{'revision':'77e632e10b98c8d10e17bb3071d5cba4','url':'/ort/ort.webgl.min.js.map'},{'revision':'027aca68552f5081e90a08f7fb064fb7','url':'/ort/ort.webgpu.min.js'},{'revision':'12dc9d5c577bac166f0f74590e4d27dd','url':'/ort/ort.webgpu.min.js.map'},{'revision':null,'url':'/polySeg.bundle.8954fb59f99daeb3f0b0.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'981ac7f7543b8330e3826aff72c33382','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
54
54
 
55
55
  // TODO: Cache API
56
56
  // https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/app",
3
- "version": "3.13.0-beta.38",
3
+ "version": "3.13.0-beta.39",
4
4
  "productVersion": "3.4.0",
5
5
  "description": "OHIF Viewer",
6
6
  "author": "OHIF Contributors",
@@ -56,25 +56,25 @@
56
56
  "@cornerstonejs/codec-openjph": "2.4.7",
57
57
  "@cornerstonejs/dicom-image-loader": "4.19.0",
58
58
  "@emotion/serialize": "1.3.3",
59
- "@ohif/core": "3.13.0-beta.38",
60
- "@ohif/extension-cornerstone": "3.13.0-beta.38",
61
- "@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.38",
62
- "@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.38",
63
- "@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.38",
64
- "@ohif/extension-default": "3.13.0-beta.38",
65
- "@ohif/extension-dicom-microscopy": "3.13.0-beta.38",
66
- "@ohif/extension-dicom-pdf": "3.13.0-beta.38",
67
- "@ohif/extension-dicom-video": "3.13.0-beta.38",
68
- "@ohif/extension-test": "3.13.0-beta.38",
69
- "@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.38",
70
- "@ohif/i18n": "3.13.0-beta.38",
71
- "@ohif/mode-basic-dev-mode": "3.13.0-beta.38",
72
- "@ohif/mode-longitudinal": "3.13.0-beta.38",
73
- "@ohif/mode-microscopy": "3.13.0-beta.38",
74
- "@ohif/mode-test": "3.13.0-beta.38",
75
- "@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.38",
76
- "@ohif/ui": "3.13.0-beta.38",
77
- "@ohif/ui-next": "3.13.0-beta.38",
59
+ "@ohif/core": "3.13.0-beta.39",
60
+ "@ohif/extension-cornerstone": "3.13.0-beta.39",
61
+ "@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.39",
62
+ "@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.39",
63
+ "@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.39",
64
+ "@ohif/extension-default": "3.13.0-beta.39",
65
+ "@ohif/extension-dicom-microscopy": "3.13.0-beta.39",
66
+ "@ohif/extension-dicom-pdf": "3.13.0-beta.39",
67
+ "@ohif/extension-dicom-video": "3.13.0-beta.39",
68
+ "@ohif/extension-test": "3.13.0-beta.39",
69
+ "@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.39",
70
+ "@ohif/i18n": "3.13.0-beta.39",
71
+ "@ohif/mode-basic-dev-mode": "3.13.0-beta.39",
72
+ "@ohif/mode-longitudinal": "3.13.0-beta.39",
73
+ "@ohif/mode-microscopy": "3.13.0-beta.39",
74
+ "@ohif/mode-test": "3.13.0-beta.39",
75
+ "@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.39",
76
+ "@ohif/ui": "3.13.0-beta.39",
77
+ "@ohif/ui-next": "3.13.0-beta.39",
78
78
  "@svgr/webpack": "8.1.0",
79
79
  "@types/react": "18.3.23",
80
80
  "classnames": "2.5.1",