@ohif/app 3.8.0-beta.2 → 3.8.0-beta.21

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 (36) hide show
  1. package/dist/{99.bundle.162517ee32cfe72a492e.js → 126.bundle.ecc43640cdea0799d233.js} +199 -137
  2. package/dist/{181.bundle.2ddc6f90740895a3949c.js → 181.bundle.bce8ecb8af857b2513df.js} +6 -6
  3. package/dist/{19.bundle.b3e9246d53aa79ae7960.js → 19.bundle.83bb9e609a5341b2c539.js} +7 -7
  4. package/dist/{221.bundle.26e8c46147d22ac7db87.js → 221.bundle.85989130912bdd3e4786.js} +10 -10
  5. package/dist/{743.bundle.489f7df3a089d4d374e1.js → 231.bundle.8aad229e39e23731d6c1.js} +18205 -17189
  6. package/dist/{236.bundle.2a2baeb75c8d28cc00bb.js → 236.bundle.07aab629b6fae960fd8b.js} +3 -3
  7. package/dist/{250.bundle.8084960e3318cda37317.js → 250.bundle.3f9fbb8ea16d267d6405.js} +6 -6
  8. package/dist/{359.bundle.161e1d8b66e9040c25ed.js → 359.bundle.51a3b9589ec6df17ceb3.js} +2 -2
  9. package/dist/{410.bundle.18de66c1ed27406c254f.js → 410.bundle.02218cd4a0d6112a31c1.js} +2 -2
  10. package/dist/{342.bundle.c11bb4c95bfb7fb0cfda.js → 43.bundle.b4a1abbd1256e58007eb.js} +131 -53
  11. package/dist/{451.bundle.9fd36f52ff69594f0669.js → 451.bundle.57c21db5d003c75e9d61.js} +2 -2
  12. package/dist/{471.bundle.b3d77b83b1593c09a504.js → 471.bundle.49c8d281adbae4a2c4df.js} +2 -2
  13. package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 485.bundle.8667a696ac2eaf99e4fa.js} +9 -98
  14. package/dist/{370.bundle.e6179cf74d133ce903f9.js → 563.bundle.cd25976497ad15a91e75.js} +320 -179
  15. package/dist/{82.bundle.48e08e39193f3f74377d.js → 575.bundle.8933c681f870a88af641.js} +166 -59
  16. package/dist/{613.bundle.9b005bbf039de90b69ee.js → 613.bundle.3239437a99b4a8cb954c.js} +7 -3
  17. package/dist/{663.bundle.e23c4e894c0792804c6f.js → 663.bundle.12656b0d6714c8f86736.js} +13 -11
  18. package/dist/{788.bundle.c3eec6c3ceea01af04b0.js → 788.bundle.0f9ae3c58f0f147f1fb9.js} +6 -6
  19. package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 82.bundle.122d1b58bc3e22439dd9.js} +12007 -3800
  20. package/dist/{822.bundle.891f2e57b1b7bc2f4cb4.js → 822.bundle.4f0424bd1dc0308bb489.js} +3 -3
  21. package/dist/{886.bundle.4b3a7f2079d085fdbcb3.js → 886.bundle.c8dd3ecc42a4253de278.js} +2 -2
  22. package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 933.bundle.6184b84edf14c687b936.js} +29 -10
  23. package/dist/{app.bundle.e6a19e792f9e31bb385a.js → app.bundle.82dcae1eee3b35631dd0.js} +11801 -11307
  24. package/dist/app.bundle.css +1 -1
  25. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  26. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  27. package/dist/index.html +1 -1
  28. package/dist/sw.js +1 -1
  29. package/package.json +19 -19
  30. /package/dist/{12.bundle.7d9eec7fe48bf64d27fc.js → 12.bundle.1b0367478839ed9be1a7.js} +0 -0
  31. /package/dist/{202.bundle.d3490836f71e001dd30f.js → 202.bundle.ec714227032b22d4fa24.js} +0 -0
  32. /package/dist/{281.bundle.7accd3c1ccfd8625d3b6.js → 281.bundle.94ff32614db4a86841b5.js} +0 -0
  33. /package/dist/{506.bundle.d47786b157f68022ef80.js → 506.bundle.738a7d987830d0e9a157.js} +0 -0
  34. /package/dist/{82.css → 575.css} +0 -0
  35. /package/dist/{687.bundle.7dadbdd458571591c220.js → 687.bundle.626b5a936b1111eaa753.js} +0 -0
  36. /package/dist/{814.bundle.52c2b553bac85767a145.js → 814.bundle.aa347b0ce9d2ab9a055d.js} +0 -0
@@ -1,6 +1,6 @@
1
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[82],{
1
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[575],{
2
2
 
3
- /***/ 78227:
3
+ /***/ 41420:
4
4
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5
5
 
6
6
  "use strict";
@@ -9,6 +9,7 @@ __webpack_require__.r(__webpack_exports__);
9
9
 
10
10
  // EXPORTS
11
11
  __webpack_require__.d(__webpack_exports__, {
12
+ ImageOverlayViewerTool: () => (/* reexport */ tools_ImageOverlayViewerTool),
12
13
  Types: () => (/* reexport */ types_namespaceObject),
13
14
  "default": () => (/* binding */ cornerstone_src),
14
15
  getActiveViewportEnabledElement: () => (/* reexport */ getActiveViewportEnabledElement),
@@ -34,14 +35,14 @@ __webpack_require__.r(types_namespaceObject);
34
35
 
35
36
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
36
37
  var react = __webpack_require__(43001);
37
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
38
- var esm = __webpack_require__(3743);
39
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
40
- var dist_esm = __webpack_require__(14957);
38
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 344 modules
39
+ var esm = __webpack_require__(62231);
40
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 391 modules
41
+ var dist_esm = __webpack_require__(28082);
41
42
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
42
43
  var src = __webpack_require__(71771);
43
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 13 modules
44
- var streaming_image_volume_loader_dist_esm = __webpack_require__(7087);
44
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 15 modules
45
+ var streaming_image_volume_loader_dist_esm = __webpack_require__(32483);
45
46
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js
46
47
  var cornerstoneDICOMImageLoader_min = __webpack_require__(61539);
47
48
  var cornerstoneDICOMImageLoader_min_default = /*#__PURE__*/__webpack_require__.n(cornerstoneDICOMImageLoader_min);
@@ -88,7 +89,7 @@ function initWADOImageLoader(userAuthenticationService, appConfig, extensionMana
88
89
  // Until the default is set to true (which is the case for cornerstone3D),
89
90
  // we should set this flag to false.
90
91
  convertFloatPixelDataToInt: false,
91
- use16BitDataType: Boolean(appConfig.use16BitDataType)
92
+ use16BitDataType: Boolean(appConfig.useNorm16Texture) || Boolean(appConfig.preferSizeOverAccuracy)
92
93
  },
93
94
  beforeSend: function (xhr) {
94
95
  //TODO should be removed in the future and request emitted by DicomWebDataSource
@@ -118,8 +119,8 @@ function destroy() {
118
119
  }
119
120
  webWorkers.length = 0;
120
121
  }
121
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
122
- var ui_src = __webpack_require__(71783);
122
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
123
+ var ui_src = __webpack_require__(22582);
123
124
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/callInputDialog.tsx
124
125
 
125
126
 
@@ -350,8 +351,46 @@ function onCompletedCalibrationLine(servicesManager, csToolsEvent) {
350
351
  });
351
352
  });
352
353
  }
353
- // EXTERNAL MODULE: ../../core/src/utils/index.js + 25 modules
354
- var utils = __webpack_require__(77250);
354
+ // EXTERNAL MODULE: ../../core/src/utils/index.js + 26 modules
355
+ var utils = __webpack_require__(3225);
356
+ ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/tools/OverlayPlaneModuleProvider.ts
357
+
358
+ const _cachedOverlayMetadata = new Map();
359
+
360
+ /**
361
+ * Image Overlay Viewer tool is not a traditional tool that requires user interactin.
362
+ * But it is used to display Pixel Overlays. And it will provide toggling capability.
363
+ *
364
+ * The documentation for Overlay Plane Module of DICOM can be found in [C.9.2 of
365
+ * Part-3 of DICOM standard](https://dicom.nema.org/medical/dicom/2018b/output/chtml/part03/sect_C.9.2.html)
366
+ *
367
+ * Image Overlay rendered by this tool can be toggled on and off using
368
+ * toolGroup.setToolEnabled() and toolGroup.setToolDisabled()
369
+ */
370
+ const OverlayPlaneModuleProvider = {
371
+ /** Adds the metadata for overlayPlaneModule */
372
+ add: (imageId, metadata) => {
373
+ if (_cachedOverlayMetadata.get(imageId) === metadata) {
374
+ // This is a no-op here as the tool re-caches the data
375
+ return;
376
+ }
377
+ _cachedOverlayMetadata.set(imageId, metadata);
378
+ },
379
+ /** Standard getter for metadata */
380
+ get: (type, query) => {
381
+ if (Array.isArray(query)) {
382
+ return;
383
+ }
384
+ if (type !== 'overlayPlaneModule') {
385
+ return;
386
+ }
387
+ return _cachedOverlayMetadata.get(query);
388
+ }
389
+ };
390
+
391
+ // Needs to be higher priority than default provider
392
+ esm.metaData.addProvider(OverlayPlaneModuleProvider.get, 10_000);
393
+ /* harmony default export */ const tools_OverlayPlaneModuleProvider = (OverlayPlaneModuleProvider);
355
394
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/tools/ImageOverlayViewerTool.tsx
356
395
 
357
396
 
@@ -377,12 +416,7 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
377
416
  }
378
417
  };
379
418
  super(toolProps, defaultToolProps);
380
- this._cachedOverlayMetadata = new Map();
381
- this._cachedStats = {};
382
- this.onSetToolDisabled = () => {
383
- this._cachedStats = {};
384
- this._cachedOverlayMetadata = new Map();
385
- };
419
+ this.onSetToolDisabled = () => {};
386
420
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
387
421
  const {
388
422
  viewport
@@ -391,14 +425,23 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
391
425
  if (!imageId) {
392
426
  return;
393
427
  }
394
- const overlays = this._cachedOverlayMetadata.get(imageId) ?? esm.metaData.get('overlayPlaneModule', imageId)?.overlays;
428
+ const overlayMetadata = esm.metaData.get('overlayPlaneModule', imageId);
429
+ const overlays = overlayMetadata?.overlays;
395
430
 
396
431
  // no overlays
397
432
  if (!overlays?.length) {
398
433
  return;
399
434
  }
400
- this._cachedOverlayMetadata.set(imageId, overlays);
401
- this._getCachedStat(imageId, overlays, this.configuration.fillColor).then(cachedStat => {
435
+
436
+ // Fix the x, y positions
437
+ overlays.forEach(overlay => {
438
+ overlay.x ||= 0;
439
+ overlay.y ||= 0;
440
+ });
441
+
442
+ // Will clear cached stat data when the overlay data changes
443
+ ImageOverlayViewerTool.addOverlayPlaneModule(imageId, overlayMetadata);
444
+ this._getCachedStat(imageId, overlayMetadata, this.configuration.fillColor).then(cachedStat => {
402
445
  cachedStat.overlays.forEach(overlay => {
403
446
  this._renderOverlay(enabledElement, svgDrawingHelper, overlay);
404
447
  });
@@ -472,10 +515,11 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
472
515
  return true;
473
516
  }
474
517
  async _getCachedStat(imageId, overlayMetadata, color) {
475
- if (this._cachedStats[imageId] && this._isSameColor(this._cachedStats[imageId].color, color)) {
476
- return this._cachedStats[imageId];
518
+ const missingOverlay = overlayMetadata.overlays.filter(overlay => overlay.pixelData && !overlay.dataUrl);
519
+ if (missingOverlay.length === 0) {
520
+ return overlayMetadata;
477
521
  }
478
- const overlays = await Promise.all(overlayMetadata.filter(overlay => overlay.pixelData).map(async (overlay, idx) => {
522
+ const overlays = await Promise.all(overlayMetadata.overlays.filter(overlay => overlay.pixelData).map(async (overlay, idx) => {
479
523
  let pixelData = null;
480
524
  if (overlay.pixelData.Value) {
481
525
  pixelData = overlay.pixelData.Value;
@@ -490,7 +534,7 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
490
534
  const dataUrl = this._renderOverlayToDataUrl({
491
535
  width: overlay.columns,
492
536
  height: overlay.rows
493
- }, color, pixelData);
537
+ }, overlay.color || color, pixelData);
494
538
  return {
495
539
  ...overlay,
496
540
  _id: (0,utils/* guid */.M8)(),
@@ -499,11 +543,8 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
499
543
  color
500
544
  };
501
545
  }));
502
- this._cachedStats[imageId] = {
503
- color: color,
504
- overlays: overlays.filter(overlay => overlay)
505
- };
506
- return this._cachedStats[imageId];
546
+ overlayMetadata.overlays = overlays;
547
+ return overlayMetadata;
507
548
  }
508
549
 
509
550
  /**
@@ -562,6 +603,11 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
562
603
  }
563
604
  }
564
605
  ImageOverlayViewerTool.toolName = 'ImageOverlayViewer';
606
+ /**
607
+ * The overlay plane module provider add method is exposed here to be used
608
+ * when updating the overlay for this tool to use for displaying data.
609
+ */
610
+ ImageOverlayViewerTool.addOverlayPlaneModule = tools_OverlayPlaneModuleProvider.add;
565
611
  /* harmony default export */ const tools_ImageOverlayViewerTool = (ImageOverlayViewerTool);
566
612
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/initCornerstoneTools.js
567
613
 
@@ -1554,7 +1600,6 @@ const ArrowAnnotate_Length = {
1554
1600
  toolName: metadata.toolName,
1555
1601
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
1556
1602
  label: data.text,
1557
- text: data.text,
1558
1603
  displayText: displayText,
1559
1604
  data: data.cachedStats,
1560
1605
  type: getValueTypeFromToolType(toolName),
@@ -3540,8 +3585,8 @@ async function init(_ref) {
3540
3585
  }
3541
3586
  await (0,esm.init)({
3542
3587
  rendering: {
3543
- preferSizeOverAccuracy: Boolean(appConfig.use16BitDataType),
3544
- useNorm16Texture: Boolean(appConfig.use16BitDataType)
3588
+ preferSizeOverAccuracy: Boolean(appConfig.preferSizeOverAccuracy),
3589
+ useNorm16Texture: Boolean(appConfig.useNorm16Texture)
3545
3590
  }
3546
3591
  });
3547
3592
 
@@ -3710,6 +3755,18 @@ async function init(_ref) {
3710
3755
  });
3711
3756
  });
3712
3757
  };
3758
+
3759
+ /**
3760
+ * Runs error handler for failed requests.
3761
+ * @param event
3762
+ */
3763
+ const imageLoadFailedHandler = _ref2 => {
3764
+ let {
3765
+ detail
3766
+ } = _ref2;
3767
+ const handler = src/* errorHandler */.Po.getHTTPErrorHandler();
3768
+ handler(detail.error);
3769
+ };
3713
3770
  const resetCrosshairs = evt => {
3714
3771
  const {
3715
3772
  element
@@ -3737,6 +3794,8 @@ async function init(_ref) {
3737
3794
  } = evt.detail;
3738
3795
  dist_esm.utilities.stackContextPrefetch.enable(element);
3739
3796
  });
3797
+ esm.eventTarget.addEventListener(esm.EVENTS.IMAGE_LOAD_FAILED, imageLoadFailedHandler);
3798
+ esm.eventTarget.addEventListener(esm.EVENTS.IMAGE_LOAD_ERROR, imageLoadFailedHandler);
3740
3799
  function elementEnabledHandler(evt) {
3741
3800
  const {
3742
3801
  element
@@ -4444,6 +4503,8 @@ function getCustomizationModule() {
4444
4503
  }];
4445
4504
  }
4446
4505
  /* harmony default export */ const src_getCustomizationModule = (getCustomizationModule);
4506
+ // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
4507
+ var gl_matrix_esm = __webpack_require__(45451);
4447
4508
  // EXTERNAL MODULE: ../../../node_modules/html2canvas/dist/html2canvas.esm.js
4448
4509
  var html2canvas_esm = __webpack_require__(76010);
4449
4510
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx
@@ -4767,6 +4828,7 @@ function getReconstructableStackViewports(viewportGridService, displaySetService
4767
4828
 
4768
4829
 
4769
4830
 
4831
+
4770
4832
  function commandsModule(_ref) {
4771
4833
  let {
4772
4834
  servicesManager,
@@ -5157,10 +5219,18 @@ function commandsModule(_ref) {
5157
5219
  const {
5158
5220
  viewport
5159
5221
  } = enabledElement;
5160
- if (viewport instanceof esm.StackViewport) {
5161
- const {
5162
- rotation: currentRotation
5163
- } = viewport.getProperties();
5222
+ if (viewport instanceof esm.BaseVolumeViewport) {
5223
+ const camera = viewport.getCamera();
5224
+ const rotAngle = rotation * Math.PI / 180;
5225
+ const rotMat = gl_matrix_esm/* mat4.identity */._E.identity(new Float32Array(16));
5226
+ gl_matrix_esm/* mat4.rotate */._E.rotate(rotMat, rotMat, rotAngle, camera.viewPlaneNormal);
5227
+ const rotatedViewUp = gl_matrix_esm/* vec3.transformMat4 */.R3.transformMat4(gl_matrix_esm/* vec3.create */.R3.create(), camera.viewUp, rotMat);
5228
+ viewport.setCamera({
5229
+ viewUp: rotatedViewUp
5230
+ });
5231
+ viewport.render();
5232
+ } else if (viewport.getRotation !== undefined) {
5233
+ const currentRotation = viewport.getRotation();
5164
5234
  const newRotation = (currentRotation + rotation) % 360;
5165
5235
  viewport.setProperties({
5166
5236
  rotation: newRotation
@@ -5236,13 +5306,8 @@ function commandsModule(_ref) {
5236
5306
  const {
5237
5307
  viewport
5238
5308
  } = enabledElement;
5239
- if (viewport instanceof esm.StackViewport) {
5240
- viewport.resetProperties();
5241
- viewport.resetCamera();
5242
- } else {
5243
- viewport.resetProperties();
5244
- viewport.resetCamera();
5245
- }
5309
+ viewport.resetProperties?.();
5310
+ viewport.resetCamera();
5246
5311
  viewport.render();
5247
5312
  },
5248
5313
  scaleViewport: _ref12 => {
@@ -5398,6 +5463,27 @@ function commandsModule(_ref) {
5398
5463
  cornerstoneViewportService.storePresentation({
5399
5464
  viewportId
5400
5465
  });
5466
+ },
5467
+ attachProtocolViewportDataListener: _ref20 => {
5468
+ let {
5469
+ protocol,
5470
+ stageIndex
5471
+ } = _ref20;
5472
+ const EVENT = cornerstoneViewportService.EVENTS.VIEWPORT_DATA_CHANGED;
5473
+ const command = protocol.callbacks.onViewportDataInitialized;
5474
+ const numPanes = protocol.stages?.[stageIndex]?.viewports.length ?? 1;
5475
+ let numPanesWithData = 0;
5476
+ const {
5477
+ unsubscribe
5478
+ } = cornerstoneViewportService.subscribe(EVENT, evt => {
5479
+ numPanesWithData++;
5480
+ if (numPanesWithData === numPanes) {
5481
+ commandsManager.run(...command);
5482
+
5483
+ // Unsubscribe from the event
5484
+ unsubscribe(EVENT);
5485
+ }
5486
+ });
5401
5487
  }
5402
5488
  };
5403
5489
  const definitions = {
@@ -5546,6 +5632,9 @@ function commandsModule(_ref) {
5546
5632
  },
5547
5633
  cleanUpCrosshairs: {
5548
5634
  commandFn: actions.cleanUpCrosshairs
5635
+ },
5636
+ attachProtocolViewportDataListener: {
5637
+ commandFn: actions.attachProtocolViewportDataListener
5549
5638
  }
5550
5639
  };
5551
5640
  return {
@@ -8600,14 +8689,16 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
8600
8689
  viewportInfo.setViewportId(viewportId);
8601
8690
  this.viewportsById.set(viewportId, viewportInfo);
8602
8691
  const viewport = renderingEngine.getViewport(viewportId);
8603
- this._setDisplaySets(viewport, viewportData, viewportInfo, presentations);
8692
+ const displaySetPromise = this._setDisplaySets(viewport, viewportData, viewportInfo, presentations);
8604
8693
 
8605
8694
  // The broadcast event here ensures that listeners have a valid, up to date
8606
8695
  // viewport to access. Doing it too early can result in exceptions or
8607
8696
  // invalid data.
8608
- this._broadcastEvent(this.EVENTS.VIEWPORT_DATA_CHANGED, {
8609
- viewportData,
8610
- viewportId
8697
+ displaySetPromise.then(() => {
8698
+ this._broadcastEvent(this.EVENTS.VIEWPORT_DATA_CHANGED, {
8699
+ viewportData,
8700
+ viewportId
8701
+ });
8611
8702
  });
8612
8703
  }
8613
8704
  getCornerstoneViewport(viewportId) {
@@ -8621,7 +8712,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
8621
8712
  getViewportInfo(viewportId) {
8622
8713
  return this.viewportsById.get(viewportId);
8623
8714
  }
8624
- _setStackViewport(viewport, viewportData, viewportInfo, presentations) {
8715
+ async _setStackViewport(viewport, viewportData, viewportInfo, presentations) {
8625
8716
  const displaySetOptions = viewportInfo.getDisplaySetOptions();
8626
8717
  const {
8627
8718
  imageIds,
@@ -8655,7 +8746,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
8655
8746
  properties.invert = voiInverted;
8656
8747
  }
8657
8748
  }
8658
- viewport.setStack(imageIds, initialImageIndexToUse).then(() => {
8749
+ return viewport.setStack(imageIds, initialImageIndexToUse).then(() => {
8659
8750
  viewport.setProperties({
8660
8751
  ...properties
8661
8752
  });
@@ -8928,26 +9019,31 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
8928
9019
  const viewportInfo = this.getViewportInfo(viewportId);
8929
9020
  const viewport = this.getCornerstoneViewport(viewportId);
8930
9021
  const viewportCamera = viewport.getCamera();
9022
+ let displaySetPromise;
8931
9023
  if (viewport instanceof esm.VolumeViewport || viewport instanceof esm.VolumeViewport3D) {
8932
- this._setVolumeViewport(viewport, viewportData, viewportInfo).then(() => {
9024
+ displaySetPromise = this._setVolumeViewport(viewport, viewportData, viewportInfo).then(() => {
8933
9025
  if (keepCamera) {
8934
9026
  viewport.setCamera(viewportCamera);
8935
9027
  viewport.render();
8936
9028
  }
8937
9029
  });
8938
- return;
8939
9030
  }
8940
9031
  if (viewport instanceof esm.StackViewport) {
8941
- this._setStackViewport(viewport, viewportData, viewportInfo);
8942
- return;
9032
+ displaySetPromise = this._setStackViewport(viewport, viewportData, viewportInfo);
8943
9033
  }
9034
+ displaySetPromise.then(() => {
9035
+ this._broadcastEvent(this.EVENTS.VIEWPORT_DATA_CHANGED, {
9036
+ viewportData,
9037
+ viewportId
9038
+ });
9039
+ });
8944
9040
  }
8945
9041
  _setDisplaySets(viewport, viewportData, viewportInfo) {
8946
9042
  let presentations = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
8947
9043
  if (viewport instanceof esm.StackViewport) {
8948
- this._setStackViewport(viewport, viewportData, viewportInfo, presentations);
9044
+ return this._setStackViewport(viewport, viewportData, viewportInfo, presentations);
8949
9045
  } else if (viewport instanceof esm.VolumeViewport || viewport instanceof esm.VolumeViewport3D) {
8950
- this._setVolumeViewport(viewport, viewportData, viewportInfo, presentations);
9046
+ return this._setVolumeViewport(viewport, viewportData, viewportInfo, presentations);
8951
9047
  } else {
8952
9048
  throw new Error('Unknown viewport type');
8953
9049
  }
@@ -9181,7 +9277,8 @@ class DicomLoaderService {
9181
9277
  SOPInstanceUID,
9182
9278
  authorizationHeaders,
9183
9279
  wadoRoot,
9184
- wadoUri
9280
+ wadoUri,
9281
+ instance
9185
9282
  } = dataset;
9186
9283
  // Retrieve wadors or just try to fetch wadouri
9187
9284
  if (!someInvalidStrings(wadoRoot)) {
@@ -9190,6 +9287,15 @@ class DicomLoaderService {
9190
9287
  return fetchIt(wadoUri, {
9191
9288
  headers: authorizationHeaders
9192
9289
  });
9290
+ } else if (!someInvalidStrings(instance?.url)) {
9291
+ // make sure the url is absolute, remove the scope
9292
+ // from it if it is not absolute. For instance it might be dicomweb:http://....
9293
+ // and we need to remove the dicomweb: part
9294
+ const url = instance.url;
9295
+ const absoluteUrl = url.startsWith('http') ? url : url.substring(url.indexOf(':') + 1);
9296
+ return fetchIt(absoluteUrl, {
9297
+ headers: authorizationHeaders
9298
+ });
9193
9299
  }
9194
9300
  }
9195
9301
  *getLoaderIterator(dataset, studies, headers) {
@@ -9243,6 +9349,7 @@ function src_extends() { src_extends = Object.assign ? Object.assign.bind() : fu
9243
9349
 
9244
9350
 
9245
9351
 
9352
+
9246
9353
 
9247
9354
 
9248
9355
  const Component = /*#__PURE__*/react.lazy(() => {
@@ -9398,7 +9505,7 @@ const reset = () => {
9398
9505
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9399
9506
  /* harmony export */ Z: () => (/* binding */ getSOPInstanceAttributes)
9400
9507
  /* harmony export */ });
9401
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3743);
9508
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62231);
9402
9509
 
9403
9510
 
9404
9511
  /**
@@ -20,8 +20,8 @@ const package_namespaceObject = JSON.parse('{"u2":"@ohif/mode-segmentation"}');
20
20
 
21
21
  const id = package_namespaceObject.u2;
22
22
 
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
24
- var ui_src = __webpack_require__(71783);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
24
+ var ui_src = __webpack_require__(22582);
25
25
  ;// CONCATENATED MODULE: ../../../modes/segmentation/src/toolbarButtons.ts
26
26
 
27
27
 
@@ -467,12 +467,16 @@ function modeFactory(_ref) {
467
467
  },
468
468
  /**
469
469
  * A boolean return value that indicates whether the mode is valid for the
470
- * modalities of the selected studies. For instance a PET/CT mode should be
470
+ * modalities of the selected studies. Currently we don't have stack viewport
471
+ * segmentations and we should exclude them
471
472
  */
472
473
  isValidMode: _ref4 => {
473
474
  let {
474
475
  modalities
475
476
  } = _ref4;
477
+ if (modalities.length === 1) {
478
+ return !['SM', 'US', 'MG', 'OT', 'DOC', 'CR'].includes(modalities[0]);
479
+ }
476
480
  return true;
477
481
  },
478
482
  /**
@@ -29,10 +29,10 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
29
29
  var src = __webpack_require__(71771);
30
30
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
31
31
  var esm = __webpack_require__(45451);
32
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
33
- var dist_esm = __webpack_require__(14957);
34
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
35
- var core_dist_esm = __webpack_require__(3743);
32
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 391 modules
33
+ var dist_esm = __webpack_require__(28082);
34
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 344 modules
35
+ var core_dist_esm = __webpack_require__(62231);
36
36
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/tools/modules/dicomSRModule.js
37
37
  var dicomSRModule = __webpack_require__(64035);
38
38
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-sr/src/constants/scoordTypes.js
@@ -724,9 +724,11 @@ function _checkIfCanAddMeasurementsToDisplaySet(srDisplaySet, newDisplaySet, dat
724
724
  // This also filters out _this_ displaySet, as it is not an ImageSet.
725
725
  return;
726
726
  }
727
+ if (newDisplaySet.unsupported) {
728
+ return;
729
+ }
727
730
  const {
728
- sopClassUids,
729
- images
731
+ sopClassUids
730
732
  } = newDisplaySet;
731
733
 
732
734
  // Check if any have the newDisplaySet is the correct SOPClass.
@@ -1531,7 +1533,7 @@ const dicomSRExtension = {
1531
1533
  /* harmony export */ yR: () => (/* binding */ getTrackingUniqueIdentifiersForElement)
1532
1534
  /* harmony export */ });
1533
1535
  /* unused harmony export setActiveTrackingUniqueIdentifierForElement */
1534
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3743);
1536
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62231);
1535
1537
 
1536
1538
  const state = {
1537
1539
  TrackingUniqueIdentifier: null,
@@ -1594,8 +1596,8 @@ __webpack_require__.d(__webpack_exports__, {
1594
1596
  Z: () => (/* binding */ hydrateStructuredReport)
1595
1597
  });
1596
1598
 
1597
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
1598
- var esm = __webpack_require__(3743);
1599
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 344 modules
1600
+ var esm = __webpack_require__(62231);
1599
1601
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
1600
1602
  var src = __webpack_require__(71771);
1601
1603
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js
@@ -1622,8 +1624,8 @@ function getLabelFromDCMJSImportedToolData(toolData) {
1622
1624
  }
1623
1625
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
1624
1626
  var adapters_es = __webpack_require__(91202);
1625
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
1626
- var dist_esm = __webpack_require__(14957);
1627
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 391 modules
1628
+ var dist_esm = __webpack_require__(28082);
1627
1629
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js
1628
1630
 
1629
1631
 
@@ -696,8 +696,8 @@ var react = __webpack_require__(43001);
696
696
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
697
697
  var prop_types = __webpack_require__(3827);
698
698
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
699
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
700
- var src = __webpack_require__(71783);
699
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
700
+ var src = __webpack_require__(22582);
701
701
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
702
702
  var core_src = __webpack_require__(71771);
703
703
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
@@ -1542,10 +1542,10 @@ function getPanelModule(_ref) {
1542
1542
  }];
1543
1543
  }
1544
1544
  /* harmony default export */ const src_getPanelModule = (getPanelModule);
1545
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
1546
- var esm = __webpack_require__(14957);
1547
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
1548
- var dist_esm = __webpack_require__(3743);
1545
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 391 modules
1546
+ var esm = __webpack_require__(28082);
1547
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 344 modules
1548
+ var dist_esm = __webpack_require__(62231);
1549
1549
  ;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/constants/supportedTools.js
1550
1550
  /* harmony default export */ const supportedTools = (['RectangleROIStartEndThreshold']);
1551
1551
  ;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js