@ohif/app 3.8.0-beta.84 → 3.8.0-beta.86

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 (27) hide show
  1. package/dist/{183.bundle.fd870b9c566be6b8de8d.js → 183.bundle.c88c4355c4829ed94a88.js} +46 -4
  2. package/dist/{206.bundle.3463fafd7176cfbd9e72.js → 206.bundle.1203a96e327b365264e5.js} +24 -14
  3. package/dist/{217.bundle.c8c6e6cc3a615ceb5db3.js → 217.bundle.bbc6090836dcca555dfc.js} +46 -4
  4. package/dist/{321.bundle.1a9f3ebdd475b2dd8530.js → 321.bundle.5bd98d3324768715f634.js} +2 -11
  5. package/dist/{325.bundle.7ec033513edfd24b6ef8.js → 325.bundle.ac07a6ca0a4e66bed604.js} +3 -2
  6. package/dist/{41.bundle.c6a04e25c6bd63a7c70c.js → 41.bundle.45737afb9f85e7e69ff3.js} +4 -4
  7. package/dist/{448.bundle.af46db8da6e0ccfb30a6.js → 448.bundle.fde8b8e0fd744f39389d.js} +4 -4
  8. package/dist/{633.bundle.f789df2e75775c886d51.js → 633.bundle.3961c49efec0b913b9cc.js} +3 -2
  9. package/dist/{699.bundle.afb727fae607b97705d0.js → 699.bundle.7228b225e0c2b8100077.js} +4 -4
  10. package/dist/{722.bundle.2ee939850f552481d21f.js → 722.bundle.a91ce7b563b901b25db0.js} +3 -1
  11. package/dist/{app.bundle.859fca0ed6f5c5729346.js → app.bundle.ce0e385dbbb6c1c1769f.js} +92 -40
  12. package/dist/index.html +1 -1
  13. package/dist/{polySeg.bundle.f75afca9b957abed095e.js → polySeg.bundle.c2653f8ce77f44ae095b.js} +1 -1
  14. package/dist/sw.js +1 -1
  15. package/package.json +18 -18
  16. /package/dist/{164.bundle.dc005679ad055cc13d77.js → 164.bundle.288b10692cc72b81a98d.js} +0 -0
  17. /package/dist/{188.bundle.7b2b917e8b8fc9099128.js → 188.bundle.d9b13c4a2910858bca9b.js} +0 -0
  18. /package/dist/{335.bundle.94e6c9b94f313227d188.js → 335.bundle.fab6af469f98e7a59bfa.js} +0 -0
  19. /package/dist/{487.bundle.ef09c04455ac31f82ef8.js → 487.bundle.8d0477af42cf9f8c0937.js} +0 -0
  20. /package/dist/{594.bundle.df47ede0294d3bf28e27.js → 594.bundle.e8e1b20c5c46cf16ffa3.js} +0 -0
  21. /package/dist/{669.bundle.a41a0e03a374f7180983.js → 669.bundle.5652fa450c1d63575a5a.js} +0 -0
  22. /package/dist/{724.bundle.efb6fef97bbc303483fd.js → 724.bundle.634bee9667a518d1202f.js} +0 -0
  23. /package/dist/{889.bundle.6eadfbd5c47fd71c488d.js → 889.bundle.e2700d7456565ce71dad.js} +0 -0
  24. /package/dist/{905.bundle.495777396d8221e5e269.js → 905.bundle.ec6275a2096f7f096618.js} +0 -0
  25. /package/dist/{907.bundle.b69f3a5bf3dd39b364db.js → 907.bundle.d2823642d3a32b5209a2.js} +0 -0
  26. /package/dist/{94.bundle.e6e0c5f54c2f1a8d1233.js → 94.bundle.b35c818d871de99336d8.js} +0 -0
  27. /package/dist/{961.bundle.baec988dc0ebf8bef788.js → 961.bundle.34a9b1fbf372d18b9b36.js} +0 -0
@@ -9715,13 +9715,19 @@ PanTool.toolName = 'Pan';
9715
9715
 
9716
9716
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/Math.js
9717
9717
  var Core_Math = __webpack_require__(61199);
9718
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/index.js + 3 modules
9719
+ var enums = __webpack_require__(84901);
9718
9720
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
9719
9721
  var gl_matrix_esm = __webpack_require__(44753);
9722
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/ToolGroupManager/index.js
9723
+ var ToolGroupManager = __webpack_require__(52610);
9720
9724
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/TrackballRotateTool.js
9721
9725
 
9722
9726
 
9723
9727
 
9724
9728
 
9729
+
9730
+
9725
9731
  class TrackballRotateTool extends base/* BaseTool */.oS {
9726
9732
  constructor(toolProps = {}, defaultToolProps = {
9727
9733
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -9730,6 +9736,7 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
9730
9736
  },
9731
9737
  }) {
9732
9738
  super(toolProps, defaultToolProps);
9739
+ this._resizeObservers = new Map();
9733
9740
  this.preMouseDownCallback = (evt) => {
9734
9741
  const eventDetail = evt.detail;
9735
9742
  const { element } = eventDetail;
@@ -9750,6 +9757,45 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
9750
9757
  document.addEventListener('mouseup', this.cleanUp, { once: true });
9751
9758
  return true;
9752
9759
  };
9760
+ this._getViewportsInfo = () => {
9761
+ const viewports = (0,ToolGroupManager.getToolGroup)(this.toolGroupId).viewportsInfo;
9762
+ return viewports;
9763
+ };
9764
+ this.onSetToolActive = () => {
9765
+ const subscribeToElementResize = () => {
9766
+ const viewportsInfo = this._getViewportsInfo();
9767
+ viewportsInfo.forEach(({ viewportId, renderingEngineId }) => {
9768
+ if (!this._resizeObservers.has(viewportId)) {
9769
+ const { viewport } = (0,esm.getEnabledElementByIds)(viewportId, renderingEngineId);
9770
+ const { element } = viewport;
9771
+ const resizeObserver = new ResizeObserver(() => {
9772
+ const { viewport } = (0,esm.getEnabledElementByIds)(viewportId, renderingEngineId);
9773
+ viewport.resetCamera();
9774
+ viewport.render();
9775
+ });
9776
+ resizeObserver.observe(element);
9777
+ this._resizeObservers.set(viewportId, resizeObserver);
9778
+ }
9779
+ });
9780
+ };
9781
+ subscribeToElementResize();
9782
+ this._viewportAddedListener = (evt) => {
9783
+ if (evt.detail.toolGroupId === this.toolGroupId) {
9784
+ subscribeToElementResize();
9785
+ }
9786
+ };
9787
+ esm.eventTarget.addEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this._viewportAddedListener);
9788
+ };
9789
+ this.onSetToolDisabled = () => {
9790
+ this._resizeObservers.forEach((resizeObserver, viewportId) => {
9791
+ resizeObserver.disconnect();
9792
+ this._resizeObservers.delete(viewportId);
9793
+ });
9794
+ if (this._viewportAddedListener) {
9795
+ esm.eventTarget.removeEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this._viewportAddedListener);
9796
+ this._viewportAddedListener = null;
9797
+ }
9798
+ };
9753
9799
  this.rotateCamera = (viewport, centerWorld, axis, angle) => {
9754
9800
  const vtkCamera = viewport.getVtkActiveCamera();
9755
9801
  const viewUp = vtkCamera.getViewUp();
@@ -10428,8 +10474,6 @@ VolumeRotateMouseWheelTool.toolName = 'VolumeRotateMouseWheel';
10428
10474
  var planar = __webpack_require__(84797);
10429
10475
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewport/jumpToWorld.js
10430
10476
  var jumpToWorld = __webpack_require__(88240);
10431
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/ToolGroupManager/index.js
10432
- var ToolGroupManager = __webpack_require__(52610);
10433
10477
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/MIPJumpToClickTool.js
10434
10478
 
10435
10479
 
@@ -10498,8 +10542,6 @@ var annotationState = __webpack_require__(38296);
10498
10542
  var drawingSvg = __webpack_require__(2746);
10499
10543
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/index.js + 4 modules
10500
10544
  var store = __webpack_require__(61738);
10501
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/index.js + 3 modules
10502
- var enums = __webpack_require__(84901);
10503
10545
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/index.js + 4 modules
10504
10546
  var viewportFilters = __webpack_require__(90252);
10505
10547
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
@@ -2750,8 +2750,8 @@ function ViewerHeader({
2750
2750
  hotkeyDefinitions,
2751
2751
  hotkeyDefaults
2752
2752
  } = hotkeysManager;
2753
- const versionNumber = "3.8.0-beta.84";
2754
- const commitHash = "da7c1a5d8c54bfa1d3f97bbc500386bf76e7fd9d";
2753
+ const versionNumber = "3.8.0-beta.86";
2754
+ const commitHash = "d250d04580883446fcb8d748b2a97c5c198922af";
2755
2755
  const menuOptions = [{
2756
2756
  title: t('Header:About'),
2757
2757
  icon: 'info',
@@ -3117,7 +3117,8 @@ function PanelStudyBrowser({
3117
3117
  } = (0,ui_src/* useImageViewer */.Bz)();
3118
3118
  const [{
3119
3119
  activeViewportId,
3120
- viewports
3120
+ viewports,
3121
+ isHangingProtocolLayout
3121
3122
  }, viewportGridService] = (0,ui_src/* useViewportGrid */.ih)();
3122
3123
  const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
3123
3124
  const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = (0,react.useState)([...StudyInstanceUIDs]);
@@ -3128,7 +3129,7 @@ function PanelStudyBrowser({
3128
3129
  let updatedViewports = [];
3129
3130
  const viewportId = activeViewportId;
3130
3131
  try {
3131
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
3132
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID, isHangingProtocolLayout);
3132
3133
  } catch (error) {
3133
3134
  console.warn(error);
3134
3135
  uiNotificationService.show({
@@ -4560,6 +4561,9 @@ function getDisplaySetInfo(instances) {
4560
4561
  timePoints
4561
4562
  } = dynamicVolumeInfo;
4562
4563
  let displaySetInfo;
4564
+ const {
4565
+ appConfig
4566
+ } = appContext;
4563
4567
  if (isDynamicVolume) {
4564
4568
  const timePoint = timePoints[0];
4565
4569
  const instancesMap = new Map();
@@ -4567,9 +4571,9 @@ function getDisplaySetInfo(instances) {
4567
4571
  // O(n) to convert it into a map and O(1) to find each instance
4568
4572
  instances.forEach(instance => instancesMap.set(instance.imageId, instance));
4569
4573
  const firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId));
4570
- displaySetInfo = (0,isDisplaySetReconstructable/* default */.Ay)(firstTimePointInstances);
4574
+ displaySetInfo = (0,isDisplaySetReconstructable/* default */.Ay)(firstTimePointInstances, appConfig);
4571
4575
  } else {
4572
- displaySetInfo = (0,isDisplaySetReconstructable/* default */.Ay)(instances);
4576
+ displaySetInfo = (0,isDisplaySetReconstructable/* default */.Ay)(instances, appConfig);
4573
4577
  }
4574
4578
  return {
4575
4579
  isDynamicVolume,
@@ -4786,6 +4790,9 @@ const generateAdvancedPresets = ({
4786
4790
  return [];
4787
4791
  }
4788
4792
  const displaySetInsaneUIDs = viewportGridService.getDisplaySetsUIDsForViewport(viewportId);
4793
+ if (!displaySetInsaneUIDs) {
4794
+ return [];
4795
+ }
4789
4796
  const displaySets = displaySetInsaneUIDs.map(uid => displaySetService.getDisplaySetByUID(uid));
4790
4797
  return hangingProtocols.map(hp => {
4791
4798
  if (!hp.isPreset) {
@@ -6178,7 +6185,7 @@ const reuseCachedLayout = (state, hangingProtocolService, syncService) => {
6178
6185
  * This class uses the options to store the already viewed
6179
6186
  * display sets, filling it initially with the pre-existing viewports.
6180
6187
  */
6181
- const findViewportsByPosition_findOrCreateViewport = (hangingProtocolService, viewportsByPosition, position, positionId, options) => {
6188
+ const findViewportsByPosition_findOrCreateViewport = (hangingProtocolService, isHangingProtocolLayout, viewportsByPosition, position, positionId, options) => {
6182
6189
  const byPositionViewport = viewportsByPosition?.[positionId];
6183
6190
  if (byPositionViewport) {
6184
6191
  return {
@@ -6194,8 +6201,9 @@ const findViewportsByPosition_findOrCreateViewport = (hangingProtocolService, vi
6194
6201
  if (!options.inDisplay) {
6195
6202
  options.inDisplay = [...viewportsByPosition.initialInDisplay];
6196
6203
  }
6197
- // See if there is a default viewport for new views.
6198
- const missing = hangingProtocolService.getMissingViewport(protocolId, stageIndex, options);
6204
+
6205
+ // See if there is a default viewport for new views
6206
+ const missing = hangingProtocolService.getMissingViewport(isHangingProtocolLayout ? protocolId : 'default', stageIndex, options);
6199
6207
  if (missing) {
6200
6208
  const displaySetInstanceUIDs = missing.displaySetsInfo.map(it => it.displaySetInstanceUID);
6201
6209
  options.inDisplay.push(...displaySetInstanceUIDs);
@@ -6534,7 +6542,7 @@ const commandsModule = ({
6534
6542
  numRows,
6535
6543
  numCols
6536
6544
  }, stateSyncService);
6537
- const findOrCreateViewport = findViewportsByPosition_findOrCreateViewport.bind(null, hangingProtocolService, stateReduce.viewportsByPosition);
6545
+ const findOrCreateViewport = findViewportsByPosition_findOrCreateViewport.bind(null, hangingProtocolService, isHangingProtocolLayout, stateReduce.viewportsByPosition);
6538
6546
  viewportGridService.setLayout({
6539
6547
  numRows,
6540
6548
  numCols,
@@ -6551,7 +6559,8 @@ const commandsModule = ({
6551
6559
  const {
6552
6560
  activeViewportId,
6553
6561
  viewports,
6554
- layout
6562
+ layout,
6563
+ isHangingProtocolLayout
6555
6564
  } = viewportGridState;
6556
6565
  const {
6557
6566
  displaySetInstanceUIDs,
@@ -6575,7 +6584,7 @@ const commandsModule = ({
6575
6584
  // updatedViewportsViaHP below contains the viewports applicable to the HP that existed
6576
6585
  // prior to the toggle to one-up - including the updated viewports if a display
6577
6586
  // set swap were to have occurred.
6578
- const updatedViewportsViaHP = displaySetInstanceUIDs.length > 1 ? [] : displaySetInstanceUIDs.map(displaySetInstanceUID => hangingProtocolService.getViewportsRequireUpdate(viewportIdToUpdate, displaySetInstanceUID)).flat();
6587
+ const updatedViewportsViaHP = displaySetInstanceUIDs.length > 1 ? [] : displaySetInstanceUIDs.map(displaySetInstanceUID => hangingProtocolService.getViewportsRequireUpdate(viewportIdToUpdate, displaySetInstanceUID, isHangingProtocolLayout)).flat();
6579
6588
 
6580
6589
  // findOrCreateViewport returns either one of the updatedViewportsViaHP
6581
6590
  // returned from the HP service OR if there is not one from the HP service then
@@ -6742,7 +6751,8 @@ const commandsModule = ({
6742
6751
  currentDisplaySets.sort(dsSortFn);
6743
6752
  const {
6744
6753
  activeViewportId,
6745
- viewports
6754
+ viewports,
6755
+ isHangingProtocolLayout
6746
6756
  } = viewportGridService.getState();
6747
6757
  const {
6748
6758
  displaySetInstanceUIDs
@@ -6762,7 +6772,7 @@ const commandsModule = ({
6762
6772
  } = currentDisplaySets[displaySetIndexToShow];
6763
6773
  let updatedViewports = [];
6764
6774
  try {
6765
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(activeViewportId, displaySetInstanceUID);
6775
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(activeViewportId, displaySetInstanceUID, isHangingProtocolLayout);
6766
6776
  } catch (error) {
6767
6777
  console.warn(error);
6768
6778
  uiNotificationService.show({
@@ -53278,13 +53278,19 @@ PanTool.toolName = 'Pan';
53278
53278
 
53279
53279
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/Math.js
53280
53280
  var Core_Math = __webpack_require__(61199);
53281
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/index.js + 3 modules
53282
+ var enums = __webpack_require__(84901);
53281
53283
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
53282
53284
  var gl_matrix_esm = __webpack_require__(44753);
53285
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/ToolGroupManager/index.js
53286
+ var ToolGroupManager = __webpack_require__(52610);
53283
53287
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/TrackballRotateTool.js
53284
53288
 
53285
53289
 
53286
53290
 
53287
53291
 
53292
+
53293
+
53288
53294
  class TrackballRotateTool extends base/* BaseTool */.oS {
53289
53295
  constructor(toolProps = {}, defaultToolProps = {
53290
53296
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -53293,6 +53299,7 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
53293
53299
  },
53294
53300
  }) {
53295
53301
  super(toolProps, defaultToolProps);
53302
+ this._resizeObservers = new Map();
53296
53303
  this.preMouseDownCallback = (evt) => {
53297
53304
  const eventDetail = evt.detail;
53298
53305
  const { element } = eventDetail;
@@ -53313,6 +53320,45 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
53313
53320
  document.addEventListener('mouseup', this.cleanUp, { once: true });
53314
53321
  return true;
53315
53322
  };
53323
+ this._getViewportsInfo = () => {
53324
+ const viewports = (0,ToolGroupManager.getToolGroup)(this.toolGroupId).viewportsInfo;
53325
+ return viewports;
53326
+ };
53327
+ this.onSetToolActive = () => {
53328
+ const subscribeToElementResize = () => {
53329
+ const viewportsInfo = this._getViewportsInfo();
53330
+ viewportsInfo.forEach(({ viewportId, renderingEngineId }) => {
53331
+ if (!this._resizeObservers.has(viewportId)) {
53332
+ const { viewport } = (0,esm.getEnabledElementByIds)(viewportId, renderingEngineId);
53333
+ const { element } = viewport;
53334
+ const resizeObserver = new ResizeObserver(() => {
53335
+ const { viewport } = (0,esm.getEnabledElementByIds)(viewportId, renderingEngineId);
53336
+ viewport.resetCamera();
53337
+ viewport.render();
53338
+ });
53339
+ resizeObserver.observe(element);
53340
+ this._resizeObservers.set(viewportId, resizeObserver);
53341
+ }
53342
+ });
53343
+ };
53344
+ subscribeToElementResize();
53345
+ this._viewportAddedListener = (evt) => {
53346
+ if (evt.detail.toolGroupId === this.toolGroupId) {
53347
+ subscribeToElementResize();
53348
+ }
53349
+ };
53350
+ esm.eventTarget.addEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this._viewportAddedListener);
53351
+ };
53352
+ this.onSetToolDisabled = () => {
53353
+ this._resizeObservers.forEach((resizeObserver, viewportId) => {
53354
+ resizeObserver.disconnect();
53355
+ this._resizeObservers.delete(viewportId);
53356
+ });
53357
+ if (this._viewportAddedListener) {
53358
+ esm.eventTarget.removeEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this._viewportAddedListener);
53359
+ this._viewportAddedListener = null;
53360
+ }
53361
+ };
53316
53362
  this.rotateCamera = (viewport, centerWorld, axis, angle) => {
53317
53363
  const vtkCamera = viewport.getVtkActiveCamera();
53318
53364
  const viewUp = vtkCamera.getViewUp();
@@ -53991,8 +54037,6 @@ VolumeRotateMouseWheelTool.toolName = 'VolumeRotateMouseWheel';
53991
54037
  var planar = __webpack_require__(84797);
53992
54038
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewport/jumpToWorld.js
53993
54039
  var jumpToWorld = __webpack_require__(88240);
53994
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/ToolGroupManager/index.js
53995
- var ToolGroupManager = __webpack_require__(52610);
53996
54040
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/MIPJumpToClickTool.js
53997
54041
 
53998
54042
 
@@ -54061,8 +54105,6 @@ var annotationState = __webpack_require__(38296);
54061
54105
  var drawingSvg = __webpack_require__(2746);
54062
54106
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/index.js + 4 modules
54063
54107
  var store = __webpack_require__(61738);
54064
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/index.js + 3 modules
54065
- var enums = __webpack_require__(84901);
54066
54108
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/index.js + 4 modules
54067
54109
  var viewportFilters = __webpack_require__(90252);
54068
54110
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
@@ -823,6 +823,7 @@ ImageOverlayViewerTool.addOverlayPlaneModule = tools_OverlayPlaneModuleProvider.
823
823
  function initCornerstoneTools(configuration = {}) {
824
824
  dist_esm.CrosshairsTool.isAnnotation = false;
825
825
  dist_esm.ReferenceLinesTool.isAnnotation = false;
826
+ dist_esm.AdvancedMagnifyTool.isAnnotation = false;
826
827
  (0,dist_esm.init)(configuration);
827
828
  (0,dist_esm.addTool)(dist_esm.PanTool);
828
829
  (0,dist_esm.addTool)(dist_esm.WindowLevelTool);
@@ -7717,17 +7718,7 @@ const mpr = {
7717
7718
  numberOfPriorsReferenced: 0,
7718
7719
  protocolMatchingRules: [],
7719
7720
  imageLoadStrategy: 'nth',
7720
- callbacks: {
7721
- // Switches out of MPR mode when the layout change button is used
7722
- onLayoutChange: [{
7723
- commandName: 'toggleHangingProtocol',
7724
- commandOptions: {
7725
- protocolId: 'mpr'
7726
- },
7727
- context: 'DEFAULT'
7728
- }]
7729
- // Turns off crosshairs when switching out of MPR mode
7730
- },
7721
+ callbacks: {},
7731
7722
  displaySetSelectors: {
7732
7723
  activeDisplaySet: {
7733
7724
  seriesMatchingRules: [{
@@ -1293,7 +1293,8 @@ function PanelStudyBrowserTracking({
1293
1293
  } = (0,ui_src/* useImageViewer */.Bz)();
1294
1294
  const [{
1295
1295
  activeViewportId,
1296
- viewports
1296
+ viewports,
1297
+ isHangingProtocolLayout
1297
1298
  }, viewportGridService] = (0,ui_src/* useViewportGrid */.ih)();
1298
1299
  const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.B)();
1299
1300
  const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
@@ -1306,7 +1307,7 @@ function PanelStudyBrowserTracking({
1306
1307
  let updatedViewports = [];
1307
1308
  const viewportId = activeViewportId;
1308
1309
  try {
1309
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
1310
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID, isHangingProtocolLayout);
1310
1311
  } catch (error) {
1311
1312
  console.warn(error);
1312
1313
  uiNotificationService.show({
@@ -611,8 +611,8 @@ const moreTools = [{
611
611
  }), moreTools_createButton({
612
612
  id: 'Magnify',
613
613
  icon: 'tool-magnify',
614
- label: 'Magnify',
615
- tooltip: 'Magnify',
614
+ label: 'Zoom-in',
615
+ tooltip: 'Zoom-in',
616
616
  commands: setToolActiveToolbar,
617
617
  evaluate: 'evaluate.cornerstoneTool'
618
618
  }), moreTools_createButton({
@@ -631,8 +631,8 @@ const moreTools = [{
631
631
  }), moreTools_createButton({
632
632
  id: 'AdvancedMagnify',
633
633
  icon: 'icon-tool-loupe',
634
- label: 'Loupe',
635
- tooltip: 'Loupe',
634
+ label: 'Magnify Probe',
635
+ tooltip: 'Magnify Probe',
636
636
  commands: 'toggleActiveDisabledToolbar',
637
637
  evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled'
638
638
  }), moreTools_createButton({
@@ -613,8 +613,8 @@ const moreTools = [{
613
613
  }), moreTools_createButton({
614
614
  id: 'Magnify',
615
615
  icon: 'tool-magnify',
616
- label: 'Magnify',
617
- tooltip: 'Magnify',
616
+ label: 'Zoom-in',
617
+ tooltip: 'Zoom-in',
618
618
  commands: setToolActiveToolbar,
619
619
  evaluate: 'evaluate.cornerstoneTool'
620
620
  }), moreTools_createButton({
@@ -640,8 +640,8 @@ const moreTools = [{
640
640
  }), moreTools_createButton({
641
641
  id: 'AdvancedMagnify',
642
642
  icon: 'icon-tool-loupe',
643
- label: 'Loupe',
644
- tooltip: 'Loupe',
643
+ label: 'Magnify Probe',
644
+ tooltip: 'Magnify Probe',
645
645
  commands: 'toggleActiveDisabledToolbar',
646
646
  evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled'
647
647
  }), moreTools_createButton({
@@ -980,7 +980,8 @@ function getUpdatedViewportsForSegmentation({
980
980
  viewportGridService
981
981
  } = servicesManager.services;
982
982
  const {
983
- viewports
983
+ viewports,
984
+ isHangingProtocolLayout
984
985
  } = viewportGridService.getState();
985
986
  const viewport = getTargetViewport({
986
987
  viewportId,
@@ -991,7 +992,7 @@ function getUpdatedViewportsForSegmentation({
991
992
  const referenceDisplaySetInstanceUID = referencedDisplaySetInstanceUID || displaySetInstanceUIDs[0];
992
993
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(referenceDisplaySetInstanceUID);
993
994
  const segmentationFrameOfReferenceUID = referencedDisplaySet.instances[0].FrameOfReferenceUID;
994
- const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(targetViewportId, referenceDisplaySetInstanceUID);
995
+ const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(targetViewportId, referenceDisplaySetInstanceUID, isHangingProtocolLayout);
995
996
  viewports.forEach((viewport, viewportId) => {
996
997
  if (targetViewportId === viewportId || updatedViewports.find(v => v.viewportId === viewportId)) {
997
998
  return;
@@ -206,8 +206,8 @@ const toolbarButtons = [{
206
206
  }), createButton({
207
207
  id: 'Magnify',
208
208
  icon: 'tool-magnify',
209
- label: 'Magnify',
210
- tooltip: 'Magnify',
209
+ label: 'Zoom-in',
210
+ tooltip: 'Zoom-in',
211
211
  commands: setToolActiveToolbar,
212
212
  evaluate: 'evaluate.cornerstoneTool'
213
213
  }), createButton({
@@ -233,8 +233,8 @@ const toolbarButtons = [{
233
233
  }), createButton({
234
234
  id: 'AdvancedMagnify',
235
235
  icon: 'icon-tool-loupe',
236
- label: 'Loupe',
237
- tooltip: 'Loupe',
236
+ label: 'Magnify Probe',
237
+ tooltip: 'Magnify Probe',
238
238
  commands: 'toggleActiveDisabledToolbar',
239
239
  evaluate: 'evaluate.cornerstoneTool.toggle.ifStrictlyDisabled'
240
240
  }), createButton({
@@ -435,6 +435,8 @@ class BaseStreamingImageVolume extends esm.ImageVolume {
435
435
  const eventDetail = {
436
436
  FrameOfReferenceUID,
437
437
  imageVolume: this,
438
+ numberOfFrames: numFrames,
439
+ framesProcessed: this.framesProcessed,
438
440
  };
439
441
  (0,esm.triggerEvent)(esm.eventTarget, esm.Enums.Events.IMAGE_VOLUME_MODIFIED, eventDetail);
440
442
  if (complete && this.framesProcessed === this.totalNumFrames) {
@@ -670,7 +672,7 @@ class BaseStreamingImageVolume extends esm.ImageVolume {
670
672
  });
671
673
  }
672
674
  _scaleIfNecessary(image, scalingParametersToUse) {
673
- if (!image.preScale.enabled) {
675
+ if (!image.preScale?.enabled) {
674
676
  return image.getPixelData().slice(0);
675
677
  }
676
678
  const imageIsAlreadyScaled = image.preScale?.scaled;
@@ -1004,8 +1004,8 @@ function WorkList({
1004
1004
  };
1005
1005
  });
1006
1006
  const hasStudies = numOfStudies > 0;
1007
- const versionNumber = "3.8.0-beta.84";
1008
- const commitHash = "da7c1a5d8c54bfa1d3f97bbc500386bf76e7fd9d";
1007
+ const versionNumber = "3.8.0-beta.86";
1008
+ const commitHash = "d250d04580883446fcb8d748b2a97c5c198922af";
1009
1009
  const menuOptions = [{
1010
1010
  title: t('Header:About'),
1011
1011
  icon: 'info',
@@ -1618,15 +1618,9 @@ function ViewerViewportGrid(props) {
1618
1618
  });
1619
1619
  };
1620
1620
  const _getUpdatedViewports = (0,react.useCallback)((viewportId, displaySetInstanceUID) => {
1621
- if (!isHangingProtocolLayout) {
1622
- return [{
1623
- viewportId,
1624
- displaySetInstanceUIDs: [displaySetInstanceUID]
1625
- }];
1626
- }
1627
1621
  let updatedViewports = [];
1628
1622
  try {
1629
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
1623
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID, isHangingProtocolLayout);
1630
1624
  } catch (error) {
1631
1625
  console.warn(error);
1632
1626
  uiNotificationService.show({
@@ -3270,6 +3264,12 @@ function App({
3270
3264
  oidc,
3271
3265
  showStudyList
3272
3266
  } = appConfigState;
3267
+
3268
+ // get the maximum 3D texture size
3269
+ const canvas = document.createElement('canvas');
3270
+ const gl = canvas.getContext('webgl2');
3271
+ const max3DTextureSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE);
3272
+ appConfigState.max3DTextureSize = max3DTextureSize;
3273
3273
  const {
3274
3274
  uiDialogService,
3275
3275
  uiModalService,
@@ -5123,7 +5123,7 @@ const iopTolerance = 0.01;
5123
5123
  *
5124
5124
  * @param {Object[]} instances An array of `OHIFInstanceMetadata` objects.
5125
5125
  */
5126
- function isDisplaySetReconstructable(instances) {
5126
+ function isDisplaySetReconstructable(instances, appConfig) {
5127
5127
  if (!instances.length) {
5128
5128
  return {
5129
5129
  value: false
@@ -5131,7 +5131,15 @@ function isDisplaySetReconstructable(instances) {
5131
5131
  }
5132
5132
  const firstInstance = instances[0];
5133
5133
  const isMultiframe = firstInstance.NumberOfFrames > 1;
5134
-
5134
+ if (appConfig) {
5135
+ const rows = (0,_toNumber__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(firstInstance.Rows);
5136
+ const columns = (0,_toNumber__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(firstInstance.Columns);
5137
+ if (rows > appConfig.max3DTextureSize || columns > appConfig.max3DTextureSize) {
5138
+ return {
5139
+ value: false
5140
+ };
5141
+ }
5142
+ }
5135
5143
  // We used to check is reconstructable modalities here, but the logic is removed
5136
5144
  // in favor of the calculation by metadata (orientation and positions)
5137
5145
 
@@ -6607,7 +6615,7 @@ const detectionOptions = {
6607
6615
  }
6608
6616
  });
6609
6617
  ;// CONCATENATED MODULE: ../../i18n/package.json
6610
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.8.0-beta.83"}');
6618
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.8.0-beta.85"}');
6611
6619
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6612
6620
  const languagesMap = {
6613
6621
  ar: 'Arabic',
@@ -19399,7 +19407,6 @@ function ViewportGridProvider({
19399
19407
  // If empty viewportOptions, we use numRow and numCols to calculate number of viewports
19400
19408
  const hasOptions = layoutOptions?.length;
19401
19409
  const viewports = new Map();
19402
-
19403
19410
  // Options is a temporary state store which can be used by the
19404
19411
  // findOrCreate to store state about already found viewports. Typically,
19405
19412
  // it will be used to store the display set UID's which are already
@@ -19411,7 +19418,23 @@ function ViewportGridProvider({
19411
19418
  for (let col = 0; col < numCols; col++) {
19412
19419
  const position = col + row * numCols;
19413
19420
  const layoutOption = layoutOptions[position];
19414
- const positionId = layoutOption?.positionId || `${col}-${row}`;
19421
+ let xPos, yPos, w, h;
19422
+ if (layoutOptions && layoutOptions[position]) {
19423
+ ({
19424
+ x: xPos,
19425
+ y: yPos,
19426
+ width: w,
19427
+ height: h
19428
+ } = layoutOptions[position]);
19429
+ } else {
19430
+ w = 1 / numCols;
19431
+ h = 1 / numRows;
19432
+ xPos = col * w;
19433
+ yPos = row * h;
19434
+ }
19435
+ const colIndex = Math.round(xPos * numCols);
19436
+ const rowIndex = Math.round(yPos * numRows);
19437
+ const positionId = layoutOption?.positionId || `${colIndex}-${rowIndex}`;
19415
19438
  if (hasOptions && position >= layoutOptions.length) {
19416
19439
  continue;
19417
19440
  }
@@ -19432,20 +19455,6 @@ function ViewportGridProvider({
19432
19455
  // Create a new viewport object as it is getting updated here
19433
19456
  // and it is part of the read only state
19434
19457
  viewports.set(viewport.viewportId, viewport);
19435
- let xPos, yPos, w, h;
19436
- if (layoutOptions && layoutOptions[position]) {
19437
- ({
19438
- x: xPos,
19439
- y: yPos,
19440
- width: w,
19441
- height: h
19442
- } = layoutOptions[position]);
19443
- } else {
19444
- w = 1 / numCols;
19445
- h = 1 / numRows;
19446
- xPos = col * w;
19447
- yPos = row * h;
19448
- }
19449
19458
  Object.assign(viewport, {
19450
19459
  width: w,
19451
19460
  height: h,
@@ -35983,21 +35992,30 @@ const Thumbnail = ({
35983
35992
  return Object.keys(dragData).length !== 0;
35984
35993
  }
35985
35994
  });
35995
+ const [lastTap, setLastTap] = (0,react.useState)(0);
35996
+ const handleTouchEnd = e => {
35997
+ const currentTime = new Date().getTime();
35998
+ const tapLength = currentTime - lastTap;
35999
+ if (tapLength < 300 && tapLength > 0) {
36000
+ onDoubleClick(e);
36001
+ } else {
36002
+ onClick(e);
36003
+ }
36004
+ setLastTap(currentTime);
36005
+ };
35986
36006
  return /*#__PURE__*/react.createElement("div", {
35987
36007
  className: classnames_default()(className, 'group mb-8 flex flex-1 cursor-pointer select-none flex-col px-3 outline-none'),
35988
36008
  id: `thumbnail-${displaySetInstanceUID}`,
35989
36009
  "data-cy": `study-browser-thumbnail`,
35990
36010
  onClick: onClick,
35991
36011
  onDoubleClick: onDoubleClick,
36012
+ onTouchEnd: handleTouchEnd,
35992
36013
  role: "button",
35993
36014
  tabIndex: "0"
35994
36015
  }, /*#__PURE__*/react.createElement("div", {
35995
36016
  ref: drag
35996
36017
  }, /*#__PURE__*/react.createElement("div", {
35997
- className: classnames_default()('flex h-32 flex-1 items-center justify-center overflow-hidden rounded-md bg-black text-base text-white', isActive ? 'border-primary-light border-2' : 'border-secondary-light border hover:border-blue-300'),
35998
- style: {
35999
- margin: isActive ? '0' : '1px'
36000
- }
36018
+ className: classnames_default()('flex h-32 flex-1 items-center justify-center overflow-hidden rounded-md bg-black text-base text-white', isActive ? 'border-primary-light border-2' : 'border-secondary-light border hover:border-blue-300')
36001
36019
  }, imageSrc ? /*#__PURE__*/react.createElement("img", {
36002
36020
  src: imageSrc,
36003
36021
  alt: imageAltText,
@@ -36085,6 +36103,17 @@ const ThumbnailNoImage = ({
36085
36103
  return Object.keys(dragData).length !== 0;
36086
36104
  }
36087
36105
  });
36106
+ const [lastTap, setLastTap] = (0,react.useState)(0);
36107
+ const handleTouchEnd = e => {
36108
+ const currentTime = new Date().getTime();
36109
+ const tapLength = currentTime - lastTap;
36110
+ if (tapLength < 300 && tapLength > 0) {
36111
+ onDoubleClick(e);
36112
+ } else {
36113
+ onClick(e);
36114
+ }
36115
+ setLastTap(currentTime);
36116
+ };
36088
36117
  return /*#__PURE__*/react.createElement("div", {
36089
36118
  className: classnames_default()('flex flex-1 cursor-pointer select-none flex-row rounded outline-none hover:border-blue-300 focus:border-blue-300', isActive ? 'border-primary-light border-2' : 'border border-transparent'),
36090
36119
  style: {
@@ -36093,6 +36122,7 @@ const ThumbnailNoImage = ({
36093
36122
  id: `thumbnail-${displaySetInstanceUID}`,
36094
36123
  onClick: onClick,
36095
36124
  onDoubleClick: onDoubleClick,
36125
+ onTouchEnd: handleTouchEnd,
36096
36126
  role: "button",
36097
36127
  tabIndex: "0",
36098
36128
  "data-cy": `study-browser-thumbnail-no-image`
@@ -67116,7 +67146,33 @@ class HangingProtocolService extends pubSubServiceInterface/* PubSubService */.R
67116
67146
  protocol: validatedProtocol
67117
67147
  };
67118
67148
  }
67119
- getViewportsRequireUpdate(viewportId, displaySetInstanceUID) {
67149
+
67150
+ /**
67151
+ * This will return the viewports that need to be updated based on the
67152
+ * hanging protocol layout and the displaySetInstanceUID that needs to be updated.
67153
+ *
67154
+ * This is useful, when for instance we drag and drop a displaySet into a viewport
67155
+ * which is in MPR, and we need to update the other viewports that are showing the same
67156
+ * layout.
67157
+ *
67158
+ * However, sometimes since we get out of sync with the hanging protocol layout, when
67159
+ * the user use the custom grid layout, we should not update the other viewports, and that is
67160
+ * when the isHangingProtocolLayout is set to false.
67161
+ *
67162
+ * @param viewportId - the id of the viewport that needs to be updated
67163
+ * @param displaySetInstanceUID - the displaySetInstanceUID that needs to be updated
67164
+ * @param isHangingProtocolLayout - whether the layout is a hanging protocol layout
67165
+ * @returns
67166
+ */
67167
+ getViewportsRequireUpdate(viewportId, displaySetInstanceUID, isHangingProtocolLayout = true) {
67168
+ const newDisplaySetInstanceUID = displaySetInstanceUID;
67169
+ const defaultReturn = [{
67170
+ viewportId,
67171
+ displaySetInstanceUIDs: [newDisplaySetInstanceUID]
67172
+ }];
67173
+ if (!isHangingProtocolLayout) {
67174
+ return defaultReturn;
67175
+ }
67120
67176
  const {
67121
67177
  displaySetService
67122
67178
  } = this._servicesManager.services;
@@ -67124,14 +67180,9 @@ class HangingProtocolService extends pubSubServiceInterface/* PubSubService */.R
67124
67180
  if (displaySet?.unsupported) {
67125
67181
  throw new Error('Unsupported displaySet');
67126
67182
  }
67127
- const newDisplaySetInstanceUID = displaySetInstanceUID;
67128
67183
  const protocol = this.protocol;
67129
67184
  const protocolStage = protocol.stages[this.stageIndex];
67130
67185
  const protocolViewports = protocolStage.viewports;
67131
- const defaultReturn = [{
67132
- viewportId,
67133
- displaySetInstanceUIDs: [newDisplaySetInstanceUID]
67134
- }];
67135
67186
  if (!protocolViewports) {
67136
67187
  return defaultReturn;
67137
67188
  }
@@ -67513,7 +67564,8 @@ class HangingProtocolService extends pubSubServiceInterface/* PubSubService */.R
67513
67564
  */
67514
67565
  getMissingViewport(protocolId, stageIdx, options) {
67515
67566
  if (this.protocol.id !== protocolId) {
67516
- throw new Error(`Currently applied protocol ${this.protocol.id} is different from ${protocolId}`);
67567
+ console.warn('setting protocol');
67568
+ this.protocol = this.getProtocolById(protocolId);
67517
67569
  }
67518
67570
  const protocol = this.protocol;
67519
67571
  const stage = protocol.stages[stageIdx];
@@ -255619,7 +255671,7 @@ var selectOrdinal = function selectOrdinal() {
255619
255671
  /******/ // This function allow to reference async chunks
255620
255672
  /******/ __webpack_require__.u = (chunkId) => {
255621
255673
  /******/ // return url for filenames based on template
255622
- /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg"}[chunkId] || chunkId) + ".bundle." + {"41":"c6a04e25c6bd63a7c70c","54":"829e14ec12c2b41a4323","94":"e6e0c5f54c2f1a8d1233","109":"b4fee2a22b622839baf5","121":"47f05840a5b3cdf75543","164":"dc005679ad055cc13d77","183":"fd870b9c566be6b8de8d","188":"7b2b917e8b8fc9099128","206":"3463fafd7176cfbd9e72","295":"5ace95771ced62bdcab8","297":"194d8985ab974839b5b6","321":"1a9f3ebdd475b2dd8530","325":"7ec033513edfd24b6ef8","335":"94e6c9b94f313227d188","342":"8c74ac4c7871bd4a6f60","433":"c92d3f716a797127c1be","445":"38c6d2af64e41cd7c614","448":"af46db8da6e0ccfb30a6","481":"a2b01ffe06a262fa9375","487":"ef09c04455ac31f82ef8","525":"d3a56dc9f62df5e11019","530":"207b38c15c4c01e4db0e","544":"80c013bb477a263bcf10","572":"f75afca9b957abed095e","574":"9919f94ea252d4a45aaf","594":"df47ede0294d3bf28e27","633":"f789df2e75775c886d51","644":"1e77691d2eeb96a423b0","669":"a41a0e03a374f7180983","699":"afb727fae607b97705d0","722":"2ee939850f552481d21f","724":"efb6fef97bbc303483fd","726":"0b3d9277d22fe7e15b89","835":"15aff0b7433bb0dd6d6d","862":"217ce894d955626c78c5","889":"6eadfbd5c47fd71c488d","905":"495777396d8221e5e269","907":"b69f3a5bf3dd39b364db","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"baec988dc0ebf8bef788"}[chunkId] + ".js";
255674
+ /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg"}[chunkId] || chunkId) + ".bundle." + {"41":"45737afb9f85e7e69ff3","54":"829e14ec12c2b41a4323","94":"b35c818d871de99336d8","109":"b4fee2a22b622839baf5","121":"47f05840a5b3cdf75543","164":"288b10692cc72b81a98d","183":"c88c4355c4829ed94a88","188":"d9b13c4a2910858bca9b","206":"1203a96e327b365264e5","295":"5ace95771ced62bdcab8","297":"194d8985ab974839b5b6","321":"5bd98d3324768715f634","325":"ac07a6ca0a4e66bed604","335":"fab6af469f98e7a59bfa","342":"8c74ac4c7871bd4a6f60","433":"c92d3f716a797127c1be","445":"38c6d2af64e41cd7c614","448":"fde8b8e0fd744f39389d","481":"a2b01ffe06a262fa9375","487":"8d0477af42cf9f8c0937","525":"d3a56dc9f62df5e11019","530":"207b38c15c4c01e4db0e","544":"80c013bb477a263bcf10","572":"c2653f8ce77f44ae095b","574":"9919f94ea252d4a45aaf","594":"e8e1b20c5c46cf16ffa3","633":"3961c49efec0b913b9cc","644":"1e77691d2eeb96a423b0","669":"5652fa450c1d63575a5a","699":"7228b225e0c2b8100077","722":"a91ce7b563b901b25db0","724":"634bee9667a518d1202f","726":"0b3d9277d22fe7e15b89","835":"15aff0b7433bb0dd6d6d","862":"217ce894d955626c78c5","889":"e2700d7456565ce71dad","905":"ec6275a2096f7f096618","907":"d2823642d3a32b5209a2","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"34a9b1fbf372d18b9b36"}[chunkId] + ".js";
255623
255675
  /******/ };
255624
255676
  /******/ })();
255625
255677
  /******/
package/dist/index.html CHANGED
@@ -1,2 +1,2 @@
1
1
  <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="mobile-web-app-capable" content="yes"/><meta name="application-name" content="OHIF Viewer"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="@ohif/app"/><meta name="msapplication-TileColor" content="#fff"/><meta name="msapplication-TileImage" content="/assets/mstile-144x144.png"/><meta name="msapplication-config" content="/assets/browserconfig.xml"/><script>console.time('scriptToView');
2
- window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.859fca0ed6f5c5729346.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>
2
+ window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.ce0e385dbbb6c1c1769f.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>
@@ -136,7 +136,7 @@
136
136
  /******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
137
137
  /******/ __webpack_require__.u = (chunkId) => {
138
138
  /******/ // return url for filenames based on template
139
- /******/ return "" + (chunkId === 572 ? "polySeg" : chunkId) + ".bundle." + {"217":"c8c6e6cc3a615ceb5db3","433":"c92d3f716a797127c1be","572":"f75afca9b957abed095e","702":"963481fbf871984b646f"}[chunkId] + ".js";
139
+ /******/ return "" + (chunkId === 572 ? "polySeg" : chunkId) + ".bundle." + {"217":"bbc6090836dcca555dfc","433":"c92d3f716a797127c1be","572":"c2653f8ce77f44ae095b","702":"963481fbf871984b646f"}[chunkId] + ".js";
140
140
  /******/ };
141
141
  /******/ })();
142
142
  /******/
package/dist/sw.js CHANGED
@@ -51,7 +51,7 @@ self.addEventListener('message', event => {
51
51
  }
52
52
  }
53
53
  });
54
- workbox.precaching.precacheAndRoute([{'revision':null,'url':'/109.bundle.b4fee2a22b622839baf5.js'},{'revision':null,'url':'/121.bundle.47f05840a5b3cdf75543.js'},{'revision':null,'url':'/141.bundle.556b4c1e4cab770417ac.js'},{'revision':null,'url':'/164.bundle.dc005679ad055cc13d77.js'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/183.bundle.fd870b9c566be6b8de8d.js'},{'revision':null,'url':'/188.bundle.7b2b917e8b8fc9099128.js'},{'revision':null,'url':'/206.bundle.3463fafd7176cfbd9e72.js'},{'revision':'d32549aa3716d55d525e59e31e2f6591','url':'/20fc4c659b85ccd2a9c0.wasm'},{'revision':null,'url':'/217.bundle.c8c6e6cc3a615ceb5db3.js'},{'revision':null,'url':'/295.bundle.5ace95771ced62bdcab8.js'},{'revision':null,'url':'/297.bundle.194d8985ab974839b5b6.js'},{'revision':null,'url':'/321.bundle.1a9f3ebdd475b2dd8530.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/321.css'},{'revision':null,'url':'/325.bundle.7ec033513edfd24b6ef8.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/325.css'},{'revision':null,'url':'/335.bundle.94e6c9b94f313227d188.js'},{'revision':null,'url':'/342.bundle.8c74ac4c7871bd4a6f60.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/41.bundle.c6a04e25c6bd63a7c70c.js'},{'revision':null,'url':'/433.bundle.c92d3f716a797127c1be.js'},{'revision':null,'url':'/445.bundle.38c6d2af64e41cd7c614.js'},{'revision':null,'url':'/448.bundle.af46db8da6e0ccfb30a6.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/481.css'},{'revision':null,'url':'/487.bundle.ef09c04455ac31f82ef8.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/530.bundle.207b38c15c4c01e4db0e.js'},{'revision':null,'url':'/544.bundle.80c013bb477a263bcf10.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/544.css'},{'revision':null,'url':'/574.bundle.9919f94ea252d4a45aaf.js'},{'revision':'a04a2f233dc569826f5f6e21b65bc87b','url':'/574.css'},{'revision':null,'url':'/594.bundle.df47ede0294d3bf28e27.js'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':null,'url':'/633.bundle.f789df2e75775c886d51.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/633.css'},{'revision':null,'url':'/644.bundle.1e77691d2eeb96a423b0.js'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/669.bundle.a41a0e03a374f7180983.js'},{'revision':null,'url':'/699.bundle.afb727fae607b97705d0.js'},{'revision':null,'url':'/702.bundle.963481fbf871984b646f.js'},{'revision':null,'url':'/722.bundle.2ee939850f552481d21f.js'},{'revision':null,'url':'/724.bundle.efb6fef97bbc303483fd.js'},{'revision':null,'url':'/726.bundle.0b3d9277d22fe7e15b89.js'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/835.bundle.15aff0b7433bb0dd6d6d.js'},{'revision':null,'url':'/862.bundle.217ce894d955626c78c5.js'},{'revision':null,'url':'/889.bundle.6eadfbd5c47fd71c488d.js'},{'revision':null,'url':'/905.bundle.495777396d8221e5e269.js'},{'revision':null,'url':'/907.bundle.b69f3a5bf3dd39b364db.js'},{'revision':null,'url':'/931.bundle.d270a1fda9a2836c3cc5.js'},{'revision':null,'url':'/939.bundle.9d93b2e47c52338747a2.js'},{'revision':null,'url':'/94.bundle.e6e0c5f54c2f1a8d1233.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':null,'url':'/961.bundle.baec988dc0ebf8bef788.js'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'2c0f91522bd3a5072b6b2c1b0ea93a4f','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.859fca0ed6f5c5729346.js'},{'revision':'9d23631dfa9ae4237bff849edc5e8c0a','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':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'1a1a46826e3f7eeeacea15da7417e6d6','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'338b8847ebdcc49a1e250ddaf55adfc2','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.829e14ec12c2b41a4323.js'},{'revision':'22058bd299567f78cb4d1c9dedcb0de1','url':'/index.html'},{'revision':'9046c04c3af284876bdd62b8052507d1','url':'/index.worker.f4bda803c15bc6359d5f.worker.js'},{'revision':'5a2e75731a97dfa37207b574921d0fff','url':'/index.worker.f4bda803c15bc6359d5f.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.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':null,'url':'/polySeg.bundle.f75afca9b957abed095e.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'af9346d3e597071ba9ee8cd32f8cc0ea','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
54
+ workbox.precaching.precacheAndRoute([{'revision':null,'url':'/109.bundle.b4fee2a22b622839baf5.js'},{'revision':null,'url':'/121.bundle.47f05840a5b3cdf75543.js'},{'revision':null,'url':'/141.bundle.556b4c1e4cab770417ac.js'},{'revision':null,'url':'/164.bundle.288b10692cc72b81a98d.js'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/183.bundle.c88c4355c4829ed94a88.js'},{'revision':null,'url':'/188.bundle.d9b13c4a2910858bca9b.js'},{'revision':null,'url':'/206.bundle.1203a96e327b365264e5.js'},{'revision':'d32549aa3716d55d525e59e31e2f6591','url':'/20fc4c659b85ccd2a9c0.wasm'},{'revision':null,'url':'/217.bundle.bbc6090836dcca555dfc.js'},{'revision':null,'url':'/295.bundle.5ace95771ced62bdcab8.js'},{'revision':null,'url':'/297.bundle.194d8985ab974839b5b6.js'},{'revision':null,'url':'/321.bundle.5bd98d3324768715f634.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/321.css'},{'revision':null,'url':'/325.bundle.ac07a6ca0a4e66bed604.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/325.css'},{'revision':null,'url':'/335.bundle.fab6af469f98e7a59bfa.js'},{'revision':null,'url':'/342.bundle.8c74ac4c7871bd4a6f60.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/41.bundle.45737afb9f85e7e69ff3.js'},{'revision':null,'url':'/433.bundle.c92d3f716a797127c1be.js'},{'revision':null,'url':'/445.bundle.38c6d2af64e41cd7c614.js'},{'revision':null,'url':'/448.bundle.fde8b8e0fd744f39389d.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/481.css'},{'revision':null,'url':'/487.bundle.8d0477af42cf9f8c0937.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/530.bundle.207b38c15c4c01e4db0e.js'},{'revision':null,'url':'/544.bundle.80c013bb477a263bcf10.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/544.css'},{'revision':null,'url':'/574.bundle.9919f94ea252d4a45aaf.js'},{'revision':'a04a2f233dc569826f5f6e21b65bc87b','url':'/574.css'},{'revision':null,'url':'/594.bundle.e8e1b20c5c46cf16ffa3.js'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':null,'url':'/633.bundle.3961c49efec0b913b9cc.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/633.css'},{'revision':null,'url':'/644.bundle.1e77691d2eeb96a423b0.js'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/669.bundle.5652fa450c1d63575a5a.js'},{'revision':null,'url':'/699.bundle.7228b225e0c2b8100077.js'},{'revision':null,'url':'/702.bundle.963481fbf871984b646f.js'},{'revision':null,'url':'/722.bundle.a91ce7b563b901b25db0.js'},{'revision':null,'url':'/724.bundle.634bee9667a518d1202f.js'},{'revision':null,'url':'/726.bundle.0b3d9277d22fe7e15b89.js'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/835.bundle.15aff0b7433bb0dd6d6d.js'},{'revision':null,'url':'/862.bundle.217ce894d955626c78c5.js'},{'revision':null,'url':'/889.bundle.e2700d7456565ce71dad.js'},{'revision':null,'url':'/905.bundle.ec6275a2096f7f096618.js'},{'revision':null,'url':'/907.bundle.d2823642d3a32b5209a2.js'},{'revision':null,'url':'/931.bundle.d270a1fda9a2836c3cc5.js'},{'revision':null,'url':'/939.bundle.9d93b2e47c52338747a2.js'},{'revision':null,'url':'/94.bundle.b35c818d871de99336d8.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':null,'url':'/961.bundle.34a9b1fbf372d18b9b36.js'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'2c0f91522bd3a5072b6b2c1b0ea93a4f','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.ce0e385dbbb6c1c1769f.js'},{'revision':'9d23631dfa9ae4237bff849edc5e8c0a','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':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'1a1a46826e3f7eeeacea15da7417e6d6','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'338b8847ebdcc49a1e250ddaf55adfc2','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.829e14ec12c2b41a4323.js'},{'revision':'3e7ba71c5ab07109c7f878594baf8c9c','url':'/index.html'},{'revision':'9046c04c3af284876bdd62b8052507d1','url':'/index.worker.f4bda803c15bc6359d5f.worker.js'},{'revision':'5a2e75731a97dfa37207b574921d0fff','url':'/index.worker.f4bda803c15bc6359d5f.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.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':null,'url':'/polySeg.bundle.c2653f8ce77f44ae095b.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'af9346d3e597071ba9ee8cd32f8cc0ea','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
55
55
 
56
56
  // TODO: Cache API
57
57
  // 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.8.0-beta.84",
3
+ "version": "3.8.0-beta.86",
4
4
  "productVersion": "3.4.0",
5
5
  "description": "OHIF Viewer",
6
6
  "author": "OHIF Contributors",
@@ -54,24 +54,24 @@
54
54
  "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
55
55
  "@cornerstonejs/codec-openjpeg": "^1.2.2",
56
56
  "@cornerstonejs/codec-openjph": "^2.4.5",
57
- "@cornerstonejs/dicom-image-loader": "^1.70.8",
57
+ "@cornerstonejs/dicom-image-loader": "^1.70.9",
58
58
  "@emotion/serialize": "^1.1.3",
59
- "@ohif/core": "3.8.0-beta.84",
60
- "@ohif/extension-cornerstone": "3.8.0-beta.84",
61
- "@ohif/extension-cornerstone-dicom-rt": "3.8.0-beta.84",
62
- "@ohif/extension-cornerstone-dicom-seg": "3.8.0-beta.84",
63
- "@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.84",
64
- "@ohif/extension-default": "3.8.0-beta.84",
65
- "@ohif/extension-dicom-microscopy": "3.8.0-beta.84",
66
- "@ohif/extension-dicom-pdf": "3.8.0-beta.84",
67
- "@ohif/extension-dicom-video": "3.8.0-beta.84",
68
- "@ohif/extension-test": "3.8.0-beta.84",
69
- "@ohif/i18n": "3.8.0-beta.84",
70
- "@ohif/mode-basic-dev-mode": "3.8.0-beta.84",
71
- "@ohif/mode-longitudinal": "3.8.0-beta.84",
72
- "@ohif/mode-microscopy": "3.8.0-beta.84",
73
- "@ohif/mode-test": "3.8.0-beta.84",
74
- "@ohif/ui": "3.8.0-beta.84",
59
+ "@ohif/core": "3.8.0-beta.86",
60
+ "@ohif/extension-cornerstone": "3.8.0-beta.86",
61
+ "@ohif/extension-cornerstone-dicom-rt": "3.8.0-beta.86",
62
+ "@ohif/extension-cornerstone-dicom-seg": "3.8.0-beta.86",
63
+ "@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.86",
64
+ "@ohif/extension-default": "3.8.0-beta.86",
65
+ "@ohif/extension-dicom-microscopy": "3.8.0-beta.86",
66
+ "@ohif/extension-dicom-pdf": "3.8.0-beta.86",
67
+ "@ohif/extension-dicom-video": "3.8.0-beta.86",
68
+ "@ohif/extension-test": "3.8.0-beta.86",
69
+ "@ohif/i18n": "3.8.0-beta.86",
70
+ "@ohif/mode-basic-dev-mode": "3.8.0-beta.86",
71
+ "@ohif/mode-longitudinal": "3.8.0-beta.86",
72
+ "@ohif/mode-microscopy": "3.8.0-beta.86",
73
+ "@ohif/mode-test": "3.8.0-beta.86",
74
+ "@ohif/ui": "3.8.0-beta.86",
75
75
  "@types/react": "^17.0.38",
76
76
  "classnames": "^2.3.2",
77
77
  "core-js": "^3.16.1",