@ohif/app 3.8.0 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/{117.bundle.77cc4e62d0de5d843e2e.js → 117.bundle.17ae130d2bb21ef9d31f.js} +75 -80
  2. package/dist/{121.bundle.47f05840a5b3cdf75543.js → 121.bundle.27d181784f24551bc546.js} +2 -1
  3. package/dist/{164.bundle.b101cb64d04a22453984.js → 164.bundle.e30009bee13acb6967da.js} +554 -311
  4. package/dist/{236.bundle.f774cdc955890e6cdac9.js → 236.bundle.79a374f5fdf7fde431f4.js} +753 -140
  5. package/dist/{188.bundle.f2b81ec70ae344f57183.js → 243.bundle.7891b41d969264043783.js} +8 -8
  6. package/dist/{325.bundle.5012b0285b6baadd1884.js → 325.bundle.bfb7de5a397beae16d24.js} +11 -11
  7. package/dist/{342.bundle.36ee082163b01284eeba.js → 342.bundle.17f0c50a27c0ba1f3846.js} +7 -0
  8. package/dist/{203.bundle.3581da3a32a0b720d3a7.js → 370.bundle.e4cd6c20d3496c949374.js} +614 -455
  9. package/dist/{448.bundle.35b8f8e262fa954026df.js → 448.bundle.375bbf6d00a23e35f229.js} +2 -2
  10. package/dist/{483.bundle.581b242d7b90866fdfb9.js → 483.bundle.016de3c3ec209d9fa42a.js} +16 -3
  11. package/dist/{487.bundle.79aff4db7df5f383b423.js → 487.bundle.205821cf073b4d0d2e71.js} +2 -2
  12. package/dist/{416.bundle.9b0d7559344fd02c9e08.js → 501.bundle.de519580f8ba42802378.js} +1206 -305
  13. package/dist/{530.bundle.207b38c15c4c01e4db0e.js → 530.bundle.17b9a34fefff133e5379.js} +3 -3
  14. package/dist/{544.bundle.3542927ec15c3f688c8d.js → 544.bundle.170c67e76a6900a9a644.js} +4 -4
  15. package/dist/{206.bundle.e1ea316389b21006d3df.js → 545.bundle.c9cc3bd30adc9904cf64.js} +28 -24
  16. package/dist/{321.bundle.39a76114e54cd9833c43.js → 550.bundle.53604ec87839bd9b4a49.js} +82 -49
  17. package/dist/{574.bundle.4b059c95cd34efdc9cb3.js → 574.bundle.b369b11b04c3e080f0b3.js} +40 -37
  18. package/dist/{41.bundle.64e0da470e235cfac4bb.js → 682.bundle.fdd752d2920107f695fb.js} +26 -6
  19. package/dist/{699.bundle.b9666b1d4ddf7e8577ee.js → 699.bundle.fee3d1c6609ecc557a9a.js} +32 -3
  20. package/dist/{669.bundle.64309c677c5ca188348c.js → 721.bundle.d01a6829ac9b0abef67d.js} +73 -73
  21. package/dist/{722.bundle.52eb61926d08a08793fe.js → 722.bundle.1242e0348afc63ca4f5e.js} +10 -4
  22. package/dist/{724.bundle.72aef9dfca69ae057d37.js → 776.bundle.bb8a64b917ff1e559734.js} +13 -15
  23. package/dist/{862.bundle.9897a9b748078d53f9ab.js → 862.bundle.59bb164ca7e871a33e44.js} +1 -1
  24. package/dist/{889.bundle.b6231f995fd098f7e3f9.js → 889.bundle.5b10c495e1442d648ffc.js} +8 -8
  25. package/dist/{905.bundle.cd3e2b347340dd47a1b0.js → 905.bundle.1ba21a0406473fc92696.js} +2 -2
  26. package/dist/{907.bundle.723a425dedf8147243d2.js → 907.bundle.b199f25916a94c4ebb97.js} +2 -2
  27. package/dist/{473.bundle.11f707c8170ade2eb56a.js → 914.bundle.2b3a856b7d41ac8298e6.js} +510 -272
  28. package/dist/{94.bundle.33ca3bc10aa42716dbbb.js → 94.bundle.ae3ca435b134c95aea2e.js} +38 -8
  29. package/dist/{961.bundle.2c4663737c970764a41e.js → 961.bundle.d1b25d8f354bde3be17c.js} +2 -2
  30. package/dist/{7.bundle.94692aed50fe4ba2e2f5.js → 981.bundle.808058a6555d322675e1.js} +15 -15
  31. package/dist/{594.bundle.c292423defd9581bfbe3.js → 989.bundle.b929ddc23c16980560de.js} +5 -5
  32. package/dist/{633.bundle.e258ba4843985e67336a.js → 998.bundle.df083f740270855652bd.js} +21 -20
  33. package/dist/app-config.js +5 -1
  34. package/dist/{app.bundle.a05edb830ad2ecd67aac.js → app.bundle.7fa3782f7fa236cc53a8.js} +791 -568
  35. package/dist/app.bundle.css +1 -1
  36. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  37. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  38. package/dist/google.js +1 -0
  39. package/dist/index.html +1 -1
  40. package/dist/{polySeg.bundle.4442dd3318266fddf4d0.js → polySeg.bundle.36ddebc98d8b109edf33.js} +3 -3
  41. package/dist/{suv-peak-worker.bundle.348c016f7f973d05f2d2.js → suv-peak-worker.bundle.f4df597fab47d977d7f3.js} +3 -3
  42. package/dist/sw.js +1 -1
  43. package/package.json +18 -18
  44. /package/dist/{321.css → 550.css} +0 -0
  45. /package/dist/{783.bundle.11d774eb13ffc74cdca5.js → 783.bundle.f4f09b94ebe4d1a466b1.js} +0 -0
  46. /package/dist/{633.css → 998.css} +0 -0
@@ -12,10 +12,10 @@ __webpack_require__.r(__webpack_exports__);
12
12
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);
13
13
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41766);
14
14
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80619);
15
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55411);
15
+ /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8633);
16
16
  /* harmony import */ var _tools_modules_dicomSRModule__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74334);
17
17
  /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5085);
18
- /* harmony import */ var _utils_hydrateStructuredReport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(77089);
18
+ /* harmony import */ var _utils_hydrateStructuredReport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(31808);
19
19
  /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15575);
20
20
  /* harmony import */ var _utils_createReferencedImageDisplaySet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(92643);
21
21
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -330,7 +330,7 @@ OHIFCornerstoneSRViewport.propTypes = {
330
330
  viewportLabel: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),
331
331
  customProps: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object),
332
332
  viewportOptions: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object),
333
- servicesManager: prop_types__WEBPACK_IMPORTED_MODULE_0___default().instanceOf(_ohif_core__WEBPACK_IMPORTED_MODULE_3__/* .ServicesManager */ .CS).isRequired,
333
+ servicesManager: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object).isRequired,
334
334
  extensionManager: prop_types__WEBPACK_IMPORTED_MODULE_0___default().instanceOf(_ohif_core__WEBPACK_IMPORTED_MODULE_3__/* .ExtensionManager */ .nH).isRequired
335
335
  };
336
336
  OHIFCornerstoneSRViewport.defaultProps = {
@@ -256,10 +256,10 @@ const itemGenerator = props => {
256
256
  }, content.value)));
257
257
  };
258
258
  /* harmony default export */ const ViewportOverlay = (generateFromConfig({}));
259
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
260
- var core_src = __webpack_require__(55411);
261
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
262
- var default_src = __webpack_require__(7206);
259
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
260
+ var core_src = __webpack_require__(8633);
261
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 84 modules
262
+ var default_src = __webpack_require__(42545);
263
263
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/dicomWebClient.ts
264
264
 
265
265
 
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[206],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[545],{
3
3
 
4
- /***/ 7206:
4
+ /***/ 42545:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -32,8 +32,8 @@ __webpack_require__.d(utils_namespaceObject, {
32
32
 
33
33
  // EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
34
34
  var dicomweb_client_es = __webpack_require__(36922);
35
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
36
- var src = __webpack_require__(55411);
35
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
36
+ var src = __webpack_require__(8633);
37
37
  // EXTERNAL MODULE: ../../core/src/utils/sortStudy.ts
38
38
  var sortStudy = __webpack_require__(45476);
39
39
  ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/qido.js
@@ -1345,9 +1345,9 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1345
1345
  return xhrRequestHeaders;
1346
1346
  };
1347
1347
  generateWadoHeader = () => {
1348
- let authorizationHeader = getAuthrorizationHeader();
1348
+ const authorizationHeader = getAuthrorizationHeader();
1349
1349
  //Generate accept header depending on config params
1350
- let formattedAcceptHeader = src.utils.generateAcceptHeader(dicomWebConfig.acceptHeader, dicomWebConfig.requestTransferSyntaxUID, dicomWebConfig.omitQuotationForMultipartRequest);
1350
+ const formattedAcceptHeader = src.utils.generateAcceptHeader(dicomWebConfig.acceptHeader, dicomWebConfig.requestTransferSyntaxUID, dicomWebConfig.omitQuotationForMultipartRequest);
1351
1351
  return {
1352
1352
  ...authorizationHeader,
1353
1353
  Accept: formattedAcceptHeader
@@ -2253,7 +2253,7 @@ function createDicomLocalApi(dicomLocalConfig) {
2253
2253
  return src/* IWebApiDataSource */.pt.create(implementation);
2254
2254
  }
2255
2255
 
2256
- ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebProxyDataSource/index.js
2256
+ ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebProxyDataSource/index.ts
2257
2257
 
2258
2258
 
2259
2259
 
@@ -2280,7 +2280,7 @@ function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager) {
2280
2280
  throw new Error(`No url for '${name}'`);
2281
2281
  } else {
2282
2282
  const response = await fetch(url);
2283
- let data = await response.json();
2283
+ const data = await response.json();
2284
2284
  if (!data.servers?.dicomWeb?.[0]) {
2285
2285
  throw new Error('Invalid configuration returned by url');
2286
2286
  }
@@ -2750,8 +2750,8 @@ function ViewerHeader({
2750
2750
  hotkeyDefinitions,
2751
2751
  hotkeyDefaults
2752
2752
  } = hotkeysManager;
2753
- const versionNumber = "3.8.0";
2754
- const commitHash = "1dcdc9dabe9d4179f223912d6adc00bc95629a85";
2753
+ const versionNumber = "3.8.2\n";
2754
+ const commitHash = "339299113c65b5ce4032b02b5b4043a8968107ed";
2755
2755
  const menuOptions = [{
2756
2756
  title: t('Header:About'),
2757
2757
  icon: 'info',
@@ -3037,7 +3037,7 @@ ViewerLayout.propTypes = {
3037
3037
  getModuleEntry: (prop_types_default()).func.isRequired
3038
3038
  }).isRequired,
3039
3039
  commandsManager: prop_types_default().instanceOf(src/* CommandsManager */.Sp),
3040
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS),
3040
+ servicesManager: (prop_types_default()).object.isRequired,
3041
3041
  // From modes
3042
3042
  leftPanels: (prop_types_default()).array,
3043
3043
  rightPanels: (prop_types_default()).array,
@@ -4012,7 +4012,7 @@ function PanelMeasurementTable({
4012
4012
  })));
4013
4013
  }
4014
4014
  PanelMeasurementTable.propTypes = {
4015
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS).isRequired
4015
+ servicesManager: (prop_types_default()).object.isRequired
4016
4016
  };
4017
4017
  function _getMappedMeasurements(measurementService) {
4018
4018
  const measurements = measurementService.getMeasurements();
@@ -4744,7 +4744,6 @@ function ToolbarLayoutSelector_extends() { ToolbarLayoutSelector_extends = Objec
4744
4744
 
4745
4745
 
4746
4746
 
4747
-
4748
4747
  const defaultCommonPresets = [{
4749
4748
  icon: 'layout-common-1x1',
4750
4749
  commandOptions: {
@@ -4856,6 +4855,7 @@ function LayoutSelector({
4856
4855
  ...rest
4857
4856
  }) {
4858
4857
  const [isOpen, setIsOpen] = (0,react.useState)(false);
4858
+ const dropdownRef = (0,react.useRef)(null);
4859
4859
  const {
4860
4860
  customizationService
4861
4861
  } = servicesManager.services;
@@ -4863,15 +4863,21 @@ function LayoutSelector({
4863
4863
  const advancedPresets = customizationService.get('advancedPresets') || generateAdvancedPresets({
4864
4864
  servicesManager
4865
4865
  });
4866
- const closeOnOutsideClick = () => {
4867
- if (isOpen) {
4866
+ const closeOnOutsideClick = event => {
4867
+ if (isOpen && dropdownRef.current) {
4868
4868
  setIsOpen(false);
4869
4869
  }
4870
4870
  };
4871
4871
  (0,react.useEffect)(() => {
4872
- window.addEventListener('click', closeOnOutsideClick);
4872
+ if (!isOpen) {
4873
+ return;
4874
+ }
4875
+ setTimeout(() => {
4876
+ window.addEventListener('click', closeOnOutsideClick);
4877
+ }, 0);
4873
4878
  return () => {
4874
4879
  window.removeEventListener('click', closeOnOutsideClick);
4880
+ dropdownRef.current = null;
4875
4881
  };
4876
4882
  }, [isOpen]);
4877
4883
  const onInteractionHandler = () => {
@@ -4887,7 +4893,8 @@ function LayoutSelector({
4887
4893
  rounded: rest.rounded,
4888
4894
  disableToolTip: tooltipDisabled,
4889
4895
  dropdownContent: DropdownContent !== null && /*#__PURE__*/react.createElement("div", {
4890
- className: "flex "
4896
+ className: "flex",
4897
+ ref: dropdownRef
4891
4898
  }, /*#__PURE__*/react.createElement("div", {
4892
4899
  className: "bg-secondary-dark flex flex-col gap-2.5 p-2"
4893
4900
  }, /*#__PURE__*/react.createElement("div", {
@@ -4933,7 +4940,7 @@ LayoutSelector.propTypes = {
4933
4940
  rows: (prop_types_default()).number,
4934
4941
  columns: (prop_types_default()).number,
4935
4942
  onLayoutChange: (prop_types_default()).func,
4936
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS)
4943
+ servicesManager: (prop_types_default()).object.isRequired
4937
4944
  };
4938
4945
  LayoutSelector.defaultProps = {
4939
4946
  columns: 4,
@@ -5055,7 +5062,7 @@ function ToolbarButtonGroupWithServices({
5055
5062
  return /*#__PURE__*/react.createElement(ui_src/* ButtonGroup */.e2, null, getSplitButtonItems(items));
5056
5063
  }
5057
5064
  /* harmony default export */ const Toolbar_ToolbarButtonGroupWithServices = (ToolbarButtonGroupWithServices);
5058
- ;// CONCATENATED MODULE: ../../../extensions/default/src/components/ProgressDropdownWithService/ProgressDropdownWithService.tsx
5065
+ ;// CONCATENATED MODULE: ../../../extensions/default/src/Components/ProgressDropdownWithService.tsx
5059
5066
 
5060
5067
 
5061
5068
  const workflowStepsToDropdownOptions = (steps = []) => steps.map(step => ({
@@ -5136,9 +5143,6 @@ function ProgressDropdownWithService({
5136
5143
  onChange: handleDropdownChange
5137
5144
  });
5138
5145
  }
5139
- /* harmony default export */ const ProgressDropdownWithService_ProgressDropdownWithService = (ProgressDropdownWithService);
5140
- ;// CONCATENATED MODULE: ../../../extensions/default/src/components/ProgressDropdownWithService/index.js
5141
-
5142
5146
  ;// CONCATENATED MODULE: ../../../extensions/default/src/getToolbarModule.tsx
5143
5147
 
5144
5148
 
@@ -5179,7 +5183,7 @@ function getToolbarModule({
5179
5183
  defaultComponent: Toolbar_ToolbarButtonGroupWithServices
5180
5184
  }, {
5181
5185
  name: 'ohif.progressDropdown',
5182
- defaultComponent: ProgressDropdownWithService_ProgressDropdownWithService
5186
+ defaultComponent: ProgressDropdownWithService
5183
5187
  }, {
5184
5188
  name: 'evaluate.group.promoteToPrimary',
5185
5189
  evaluate: ({
@@ -7951,7 +7955,7 @@ function getCustomizationModule({
7951
7955
  factory: dataSourceName => new GoogleCloudDataSourceConfigurationAPI(dataSourceName, servicesManager, extensionManager)
7952
7956
  }, {
7953
7957
  id: 'progressDropdownWithServiceComponent',
7954
- component: ProgressDropdownWithService_ProgressDropdownWithService
7958
+ component: ProgressDropdownWithService
7955
7959
  }]
7956
7960
  }];
7957
7961
  }
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[321],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[550],{
3
3
 
4
4
  /***/ 76255:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -141,7 +141,7 @@ const useViewportActionCornersContext = () => (0,react__WEBPACK_IMPORTED_MODULE_
141
141
 
142
142
  /***/ }),
143
143
 
144
- /***/ 12702:
144
+ /***/ 550:
145
145
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
146
146
 
147
147
  // ESM COMPAT FLAG
@@ -181,8 +181,8 @@ var esm = __webpack_require__(92136);
181
181
  var dist_esm = __webpack_require__(39371);
182
182
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 13 modules
183
183
  var streaming_image_volume_loader_dist_esm = __webpack_require__(23722);
184
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
185
- var src = __webpack_require__(55411);
184
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
185
+ var src = __webpack_require__(8633);
186
186
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js
187
187
  var cornerstoneDICOMImageLoader_min = __webpack_require__(54578);
188
188
  var cornerstoneDICOMImageLoader_min_default = /*#__PURE__*/__webpack_require__.n(cornerstoneDICOMImageLoader_min);
@@ -3590,7 +3590,7 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
3590
3590
  return factories;
3591
3591
  };
3592
3592
  /* harmony default export */ const measurementServiceMappings_measurementServiceMappingsFactory = (measurementServiceMappingsFactory);
3593
- ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/initMeasurementService.js
3593
+ ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/initMeasurementService.ts
3594
3594
 
3595
3595
 
3596
3596
 
@@ -4944,12 +4944,16 @@ async function init({
4944
4944
  clearOnModeExit: true
4945
4945
  });
4946
4946
  const labelmapRepresentation = dist_esm.Enums.SegmentationRepresentations.Labelmap;
4947
+ const contourRepresentation = dist_esm.Enums.SegmentationRepresentations.Contour;
4947
4948
  dist_esm.segmentation.config.setGlobalRepresentationConfig(labelmapRepresentation, {
4948
4949
  fillAlpha: 0.5,
4949
4950
  fillAlphaInactive: 0.2,
4950
4951
  outlineOpacity: 1,
4951
4952
  outlineOpacityInactive: 0.65
4952
4953
  });
4954
+ dist_esm.segmentation.config.setGlobalRepresentationConfig(contourRepresentation, {
4955
+ renderFill: false
4956
+ });
4953
4957
  const metadataProvider = src/* default.classes */.Ay.classes.MetadataProvider;
4954
4958
  esm.volumeLoader.registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.FC);
4955
4959
  esm.volumeLoader.registerVolumeLoader('cornerstoneStreamingDynamicImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingDynamicImageVolumeLoader */.Mr);
@@ -6068,7 +6072,7 @@ const CornerstoneViewportDownloadForm = ({
6068
6072
  // for some reason we need a reset camera here, and I don't know why
6069
6073
  downloadViewport.resetCamera();
6070
6074
  const presentation = activeViewport.getViewPresentation();
6071
- downloadViewport.setView(activeViewport.getViewReference(), presentation);
6075
+ downloadViewport.setViewPresentation(presentation);
6072
6076
  downloadViewport.render();
6073
6077
  });
6074
6078
  });
@@ -8602,8 +8606,11 @@ const ToolGroupService_EVENTS = {
8602
8606
  PRIMARY_TOOL_ACTIVATED: 'event::cornerstone::toolgroupservice:primarytoolactivated'
8603
8607
  };
8604
8608
  class ToolGroupService {
8605
- constructor(serviceManager) {
8606
- this.serviceManager = void 0;
8609
+ constructor(servicesManager) {
8610
+ this.servicesManager = void 0;
8611
+ this.cornerstoneViewportService = void 0;
8612
+ this.viewportGridService = void 0;
8613
+ this.uiNotificationService = void 0;
8607
8614
  this.toolGroupIds = new Set();
8608
8615
  /**
8609
8616
  * Service-specific
@@ -8631,7 +8638,7 @@ class ToolGroupService {
8631
8638
  cornerstoneViewportService,
8632
8639
  viewportGridService,
8633
8640
  uiNotificationService
8634
- } = serviceManager.services;
8641
+ } = servicesManager.services;
8635
8642
  this.cornerstoneViewportService = cornerstoneViewportService;
8636
8643
  this.viewportGridService = viewportGridService;
8637
8644
  this.uiNotificationService = uiNotificationService;
@@ -8892,7 +8899,7 @@ const asSyncGroup = syncGroup => typeof syncGroup === 'string' ? {
8892
8899
  type: syncGroup
8893
8900
  } : syncGroup;
8894
8901
  class SyncGroupService {
8895
- constructor(serviceManager) {
8902
+ constructor(servicesManager) {
8896
8903
  this.servicesManager = void 0;
8897
8904
  this.listeners = {};
8898
8905
  this.EVENTS = void 0;
@@ -8906,7 +8913,7 @@ class SyncGroupService {
8906
8913
  [IMAGE_SLICE]: dist_esm.synchronizers.createImageSliceSynchronizer
8907
8914
  };
8908
8915
  this.synchronizersByType = {};
8909
- this.servicesManager = serviceManager;
8916
+ this.servicesManager = servicesManager;
8910
8917
  this.listeners = {};
8911
8918
  this.EVENTS = SyncGroupService_EVENTS;
8912
8919
  //
@@ -9348,6 +9355,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
9348
9355
  };
9349
9356
  this.addSegmentationRepresentationToToolGroup = async (toolGroupId, segmentationId, hydrateSegmentation = false, representationType = dist_esm.Enums.SegmentationRepresentations.Labelmap, suppressEvents = false) => {
9350
9357
  const segmentation = this.getSegmentation(segmentationId);
9358
+ toolGroupId = toolGroupId || this._getApplicableToolGroupId();
9351
9359
  if (!segmentation) {
9352
9360
  throw new Error(`Segmentation with segmentationId ${segmentationId} not found.`);
9353
9361
  }
@@ -10807,32 +10815,48 @@ class CornerstoneCacheService {
10807
10815
  const newViewportData = await this._getVolumeViewportData(dataSource, displaySets, viewportData.viewportType);
10808
10816
  return newViewportData;
10809
10817
  }
10810
- _getStackViewportData(dataSource, displaySets, initialImageIndex, viewportType) {
10811
- // For Stack Viewport we don't have fusion currently
10812
- const displaySet = displaySets[0];
10818
+ async _getStackViewportData(dataSource, displaySets, initialImageIndex, viewportType) {
10819
+ const overlayDisplaySets = displaySets.filter(ds => ds.isOverlayDisplaySet);
10820
+ const nonOverlayDisplaySets = displaySets.filter(ds => !ds.isOverlayDisplaySet);
10821
+
10822
+ // load overlays if they are not loaded
10823
+ for (const overlayDisplaySet of overlayDisplaySets) {
10824
+ if (overlayDisplaySet.load && overlayDisplaySet.load instanceof Function) {
10825
+ const {
10826
+ userAuthenticationService
10827
+ } = this.servicesManager.services;
10828
+ const headers = userAuthenticationService.getAuthorizationHeader();
10829
+ await overlayDisplaySet.load({
10830
+ headers
10831
+ });
10832
+ }
10833
+ }
10834
+ const displaySet = nonOverlayDisplaySets[0];
10813
10835
  let stackImageIds = this.stackImageIds.get(displaySet.displaySetInstanceUID);
10814
10836
  if (!stackImageIds) {
10815
10837
  stackImageIds = this._getCornerstoneStackImageIds(displaySet, dataSource);
10816
10838
  this.stackImageIds.set(displaySet.displaySetInstanceUID, stackImageIds);
10817
10839
  }
10818
- const {
10819
- displaySetInstanceUID,
10820
- StudyInstanceUID,
10821
- isCompositeStack
10822
- } = displaySet;
10823
- const StackViewportData = {
10824
- viewportType,
10825
- data: {
10840
+
10841
+ // Ensuring the first non-overlay `displaySet` is always the primary one
10842
+ const StackViewportData = [displaySet, ...overlayDisplaySets].map(ds => {
10843
+ const {
10844
+ displaySetInstanceUID,
10845
+ StudyInstanceUID,
10846
+ isCompositeStack
10847
+ } = ds;
10848
+ return {
10826
10849
  StudyInstanceUID,
10827
10850
  displaySetInstanceUID,
10828
10851
  isCompositeStack,
10829
- imageIds: stackImageIds
10830
- }
10852
+ imageIds: stackImageIds,
10853
+ initialImageIndex
10854
+ };
10855
+ });
10856
+ return {
10857
+ viewportType,
10858
+ data: StackViewportData
10831
10859
  };
10832
- if (typeof initialImageIndex === 'number') {
10833
- StackViewportData.data.initialImageIndex = initialImageIndex;
10834
- }
10835
- return StackViewportData;
10836
10860
  }
10837
10861
  async _getVolumeViewportData(dataSource, displaySets, viewportType) {
10838
10862
  // Todo: Check the cache for multiple scenarios to see if we need to
@@ -11689,12 +11713,16 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
11689
11713
  }
11690
11714
  async _setStackViewport(viewport, viewportData, viewportInfo, presentations = {}) {
11691
11715
  const displaySetOptions = viewportInfo.getDisplaySetOptions();
11716
+ const displaySetInstanceUIDs = viewportData.data.map(data => data.displaySetInstanceUID);
11717
+
11718
+ // based on the cache service construct always the first one is the non-overlay
11719
+ // and the rest are overlays
11720
+
11721
+ this.viewportsDisplaySets.set(viewport.id, [...displaySetInstanceUIDs]);
11692
11722
  const {
11693
- imageIds,
11694
11723
  initialImageIndex,
11695
- displaySetInstanceUID
11696
- } = viewportData.data;
11697
- this.viewportsDisplaySets.set(viewport.id, [displaySetInstanceUID]);
11724
+ imageIds
11725
+ } = viewportData.data[0];
11698
11726
  let initialImageIndexToUse = presentations?.positionPresentation?.initialImageIndex ?? initialImageIndex;
11699
11727
  if (initialImageIndexToUse === undefined || initialImageIndexToUse === null) {
11700
11728
  initialImageIndexToUse = this._getInitialImageIndexForViewport(viewportInfo, imageIds) || 0;
@@ -11725,6 +11753,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
11725
11753
  properties.colormap = colormap;
11726
11754
  }
11727
11755
  }
11756
+ this._handleOverlays(viewport);
11728
11757
  return viewport.setStack(imageIds, initialImageIndexToUse).then(() => {
11729
11758
  viewport.setProperties({
11730
11759
  ...properties
@@ -11900,6 +11929,24 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
11900
11929
  viewport.setProperties(properties, volumeId);
11901
11930
  });
11902
11931
  this.setPresentations(viewport.id, presentations);
11932
+ this._handleOverlays(viewport);
11933
+ const toolGroup = toolGroupService.getToolGroupForViewport(viewport.id);
11934
+ dist_esm.utilities.segmentation.triggerSegmentationRender(toolGroup.id);
11935
+ const imageIndex = this._getInitialImageIndexForViewport(viewportInfo);
11936
+ if (imageIndex !== undefined) {
11937
+ dist_esm.utilities.jumpToSlice(viewport.element, {
11938
+ imageIndex
11939
+ });
11940
+ }
11941
+ viewport.render();
11942
+ this._broadcastEvent(this.EVENTS.VIEWPORT_VOLUMES_CHANGED, {
11943
+ viewportInfo
11944
+ });
11945
+ }
11946
+ _handleOverlays(viewport) {
11947
+ const {
11948
+ displaySetService
11949
+ } = this.servicesManager.services;
11903
11950
 
11904
11951
  // load any secondary displaySets
11905
11952
  const displaySetInstanceUIDs = this.viewportsDisplaySets.get(viewport.id);
@@ -11916,18 +11963,6 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
11916
11963
  // get segmentations only returns the hydrated segmentations
11917
11964
  this._addSegmentationRepresentationToToolGroupIfNecessary(displaySetInstanceUIDs, viewport);
11918
11965
  }
11919
- const toolGroup = toolGroupService.getToolGroupForViewport(viewport.id);
11920
- dist_esm.utilities.segmentation.triggerSegmentationRender(toolGroup.id);
11921
- const imageIndex = this._getInitialImageIndexForViewport(viewportInfo);
11922
- if (imageIndex !== undefined) {
11923
- dist_esm.utilities.jumpToSlice(viewport.element, {
11924
- imageIndex
11925
- });
11926
- }
11927
- viewport.render();
11928
- this._broadcastEvent(this.EVENTS.VIEWPORT_VOLUMES_CHANGED, {
11929
- viewportInfo
11930
- });
11931
11966
  }
11932
11967
  _addSegmentationRepresentationToToolGroupIfNecessary(displaySetInstanceUIDs, viewport) {
11933
11968
  const {
@@ -12708,7 +12743,6 @@ const getViewportVolumeHistogram = async (viewport, volume, options) => {
12708
12743
 
12709
12744
 
12710
12745
 
12711
-
12712
12746
  const {
12713
12747
  Events
12714
12748
  } = esm.Enums;
@@ -12998,7 +13032,7 @@ const ViewportWindowLevel = ({
12998
13032
  }));
12999
13033
  };
13000
13034
  ViewportWindowLevel.propTypes = {
13001
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS),
13035
+ servicesManager: (prop_types_default()).object.isRequired,
13002
13036
  viewportId: (prop_types_default()).string.isRequired
13003
13037
  };
13004
13038
  /* harmony default export */ const ViewportWindowLevel_ViewportWindowLevel = (ViewportWindowLevel);
@@ -13007,7 +13041,6 @@ ViewportWindowLevel.propTypes = {
13007
13041
 
13008
13042
 
13009
13043
 
13010
-
13011
13044
  const ActiveViewportWindowLevel = ({
13012
13045
  servicesManager
13013
13046
  }) => {
@@ -13021,7 +13054,7 @@ const ActiveViewportWindowLevel = ({
13021
13054
  }));
13022
13055
  };
13023
13056
  ActiveViewportWindowLevel.propTypes = {
13024
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS)
13057
+ servicesManager: (prop_types_default()).object.isRequired
13025
13058
  };
13026
13059
  /* harmony default export */ const ActiveViewportWindowLevel_ActiveViewportWindowLevel = (ActiveViewportWindowLevel);
13027
13060
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/components/ActiveViewportWindowLevel/index.js
@@ -13211,7 +13244,7 @@ const cornerstoneExtension = {
13211
13244
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13212
13245
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
13213
13246
  /* harmony export */ });
13214
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55411);
13247
+ /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8633);
13215
13248
  /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5085);
13216
13249
  var _ViewportActionCornersService;
13217
13250