@ohif/app 3.9.0-beta.1 → 3.9.0-beta.3

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 (31) hide show
  1. package/dist/{121.bundle.47f05840a5b3cdf75543.js → 121.bundle.b582314ec0024fdf2d15.js} +13 -8
  2. package/dist/{188.bundle.64cbb89e31abbf29a023.js → 243.bundle.96439f589bc338b977ea.js} +8 -8
  3. package/dist/{295.bundle.c935ed0430aa026f7591.js → 295.bundle.9926ff25c6dbf53845b1.js} +10 -6
  4. package/dist/{325.bundle.fee9192f88d50d6ce342.js → 325.bundle.98612a2afacf5d63b25a.js} +20 -18
  5. package/dist/{206.bundle.87e4481bb6a89230b7cf.js → 390.bundle.2751b81dbe439a40ba90.js} +14 -14
  6. package/dist/{448.bundle.75e67836d79e932aa18c.js → 448.bundle.70dc1363d8b2783dc51e.js} +33 -2
  7. package/dist/{487.bundle.fa9fc23fc410e1fa2efd.js → 487.bundle.b1a29dcf2b152693935d.js} +2 -2
  8. package/dist/{530.bundle.207b38c15c4c01e4db0e.js → 530.bundle.17b9a34fefff133e5379.js} +3 -3
  9. package/dist/{544.bundle.b005b8c8b9b08aaa3324.js → 544.bundle.e8227e98860e39636a00.js} +3 -3
  10. package/dist/{321.bundle.f32564ab711ebc0b4e86.js → 550.bundle.a2267752bc8874fedfd5.js} +21 -16
  11. package/dist/{574.bundle.8b2767c9b74fa0c9b04b.js → 574.bundle.72bd5061ccd504235419.js} +36 -45
  12. package/dist/{41.bundle.72b910ddbbd70b2f4c98.js → 682.bundle.ec07ec1bc2f69f9d0d94.js} +36 -5
  13. package/dist/{699.bundle.b50bfe586c0064d6fe8a.js → 699.bundle.2adb0c0ad7f7cb9e338a.js} +2 -2
  14. package/dist/{669.bundle.03a5bd6ba84103d03fdd.js → 721.bundle.a210baa38d34b9bcacfd.js} +73 -73
  15. package/dist/{724.bundle.c5b6e5542a4668715b33.js → 776.bundle.9680d347bafb63f8688a.js} +6 -6
  16. package/dist/{862.bundle.4a0bd82b803ba158018f.js → 862.bundle.55dde21bab4c841b6259.js} +1 -1
  17. package/dist/{889.bundle.89437e456d399b69abfd.js → 889.bundle.5611d644c8cb24f864ff.js} +11 -8
  18. package/dist/{905.bundle.7017e78259e57eda8915.js → 905.bundle.4105e428f61f925a310d.js} +14 -3
  19. package/dist/{907.bundle.6695db6c5f1906d48b81.js → 907.bundle.13dc5f4b5581d12562b8.js} +2 -2
  20. package/dist/{94.bundle.8411670658df7253a77a.js → 94.bundle.9b92ece5801a7df7d08c.js} +2 -2
  21. package/dist/{961.bundle.4aa46c7f78124df1a7cb.js → 961.bundle.2c81565fe334d6cd2f9c.js} +2 -2
  22. package/dist/{7.bundle.9c9caceecb366e3233ca.js → 981.bundle.a0fabcf9845c1a623990.js} +8 -8
  23. package/dist/{594.bundle.64b244e7dcfd3d6c8984.js → 989.bundle.bf6bc62794b717824f7e.js} +5 -5
  24. package/dist/{633.bundle.e2b7f645729f12ba0d78.js → 998.bundle.b8ffa2bc390d5d4edf16.js} +12 -9
  25. package/dist/{app.bundle.0c97d14d514173bc9fab.js → app.bundle.cbecae40543f47cc8c7e.js} +239 -317
  26. package/dist/index.html +1 -1
  27. package/dist/sw.js +1 -1
  28. package/package.json +17 -17
  29. /package/dist/{321.css → 550.css} +0 -0
  30. /package/dist/{783.bundle.2e302abe4156a13530f8.js → 783.bundle.126cd640a5fd49804d8e.js} +0 -0
  31. /package/dist/{633.css → 998.css} +0 -0
@@ -37,19 +37,23 @@ function promptHydrateRT({
37
37
  const {
38
38
  uiViewportDialogService
39
39
  } = servicesManager.services;
40
+ const extensionManager = servicesManager._extensionManager;
41
+ const appConfig = extensionManager._appConfig;
40
42
  return new Promise(async function (resolve, reject) {
41
- const promptResult = await _askHydrate(uiViewportDialogService, viewportId);
43
+ const promptResult = appConfig?.disableConfirmationPrompts ? RESPONSE.HYDRATE_SEG : await _askHydrate(uiViewportDialogService, viewportId);
42
44
  if (promptResult === RESPONSE.HYDRATE_SEG) {
43
45
  preHydrateCallbacks?.forEach(callback => {
44
46
  callback();
45
47
  });
46
- const isHydrated = await hydrateRTDisplaySet({
47
- rtDisplaySet,
48
- viewportId,
49
- toolGroupId,
50
- servicesManager
51
- });
52
- resolve(isHydrated);
48
+ window.setTimeout(async () => {
49
+ const isHydrated = await hydrateRTDisplaySet({
50
+ rtDisplaySet,
51
+ viewportId,
52
+ toolGroupId,
53
+ servicesManager
54
+ });
55
+ resolve(isHydrated);
56
+ }, 0);
53
57
  }
54
58
  });
55
59
  }
@@ -70,6 +74,7 @@ function _askHydrate(uiViewportDialogService, viewportId) {
70
74
  resolve(result);
71
75
  };
72
76
  uiViewportDialogService.show({
77
+ id: 'promptHydrateRT',
73
78
  viewportId,
74
79
  type: 'info',
75
80
  message,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[188],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[243],{
3
3
 
4
- /***/ 99188:
4
+ /***/ 5243:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -22,8 +22,8 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
22
22
 
23
23
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
24
  var react = __webpack_require__(41766);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
26
- var src = __webpack_require__(55411);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
+ var src = __webpack_require__(8633);
27
27
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
28
28
  var dcmjs_es = __webpack_require__(31426);
29
29
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/loadRTStruct.js
@@ -252,12 +252,12 @@ function _setROIContourRTROIObservations(ROIContourData, RTROIObservationsSequen
252
252
  function _toArray(objOrArray) {
253
253
  return Array.isArray(objOrArray) ? objOrArray : [objOrArray];
254
254
  }
255
- ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/getSopClassHandlerModule.js
255
+ ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/getSopClassHandlerModule.ts
256
256
 
257
257
 
258
258
 
259
259
  const sopClassUids = ['1.2.840.10008.5.1.4.1.1.481.3'];
260
- let loadPromises = {};
260
+ const loadPromises = {};
261
261
  function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) {
262
262
  const instance = instances[0];
263
263
  const {
@@ -313,9 +313,9 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager)
313
313
  displaySet.referencedSeriesInstanceUID = referencedSeries.SeriesInstanceUID;
314
314
  displaySet.getReferenceDisplaySet = () => {
315
315
  const {
316
- DisplaySetService
316
+ displaySetService
317
317
  } = servicesManager.services;
318
- const referencedDisplaySets = DisplaySetService.getDisplaySetsForSeries(displaySet.referencedSeriesInstanceUID);
318
+ const referencedDisplaySets = displaySetService.getDisplaySetsForSeries(displaySet.referencedSeriesInstanceUID);
319
319
  if (!referencedDisplaySets || referencedDisplaySets.length === 0) {
320
320
  throw new Error('Referenced DisplaySet is missing for the RT');
321
321
  }
@@ -46,17 +46,21 @@ function promptHydrateSEG({
46
46
  const {
47
47
  uiViewportDialogService
48
48
  } = servicesManager.services;
49
+ const extensionManager = servicesManager._extensionManager;
50
+ const appConfig = extensionManager._appConfig;
49
51
  return new Promise(async function (resolve, reject) {
50
- const promptResult = await _askHydrate(uiViewportDialogService, viewportId);
52
+ const promptResult = appConfig?.disableConfirmationPrompts ? RESPONSE.HYDRATE_SEG : await _askHydrate(uiViewportDialogService, viewportId);
51
53
  if (promptResult === RESPONSE.HYDRATE_SEG) {
52
54
  preHydrateCallbacks?.forEach(callback => {
53
55
  callback();
54
56
  });
55
- const isHydrated = await hydrateSEGDisplaySet({
56
- segDisplaySet,
57
- viewportId
58
- });
59
- resolve(isHydrated);
57
+ window.setTimeout(async () => {
58
+ const isHydrated = await hydrateSEGDisplaySet({
59
+ segDisplaySet,
60
+ viewportId
61
+ });
62
+ resolve(isHydrated);
63
+ }, 0);
60
64
  }
61
65
  });
62
66
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[325,481],{
3
3
 
4
- /***/ 219:
4
+ /***/ 84222:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
 
@@ -436,6 +436,7 @@ function promptBeginTracking({
436
436
  const {
437
437
  uiViewportDialogService
438
438
  } = servicesManager.services;
439
+ const appConfig = extensionManager._appConfig;
439
440
  // When the state change happens after a promise, the state machine sends the retult in evt.data;
440
441
  // In case of direct transition to the state, the state machine sends the data in evt;
441
442
  const {
@@ -444,7 +445,7 @@ function promptBeginTracking({
444
445
  SeriesInstanceUID
445
446
  } = evt.data || evt;
446
447
  return new Promise(async function (resolve, reject) {
447
- let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
448
+ let promptResult = appConfig?.disableConfirmationPrompts ? promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES : await _askTrackMeasurements(uiViewportDialogService, viewportId);
448
449
  resolve({
449
450
  userResponse: promptResult,
450
451
  StudyInstanceUID,
@@ -602,7 +603,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
602
603
  });
603
604
  }
604
605
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewSeries = (promptTrackNewSeries);
605
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewStudy.js
606
+ ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewStudy.ts
606
607
 
607
608
  const promptTrackNewStudy_RESPONSE = {
608
609
  NO_NEVER: -1,
@@ -617,7 +618,7 @@ function promptTrackNewStudy({
617
618
  extensionManager
618
619
  }, ctx, evt) {
619
620
  const {
620
- UIViewportDialogService
621
+ uiViewportDialogService
621
622
  } = servicesManager.services;
622
623
  // When the state change happens after a promise, the state machine sends the retult in evt.data;
623
624
  // In case of direct transition to the state, the state machine sends the data in evt;
@@ -627,9 +628,9 @@ function promptTrackNewStudy({
627
628
  SeriesInstanceUID
628
629
  } = evt.data || evt;
629
630
  return new Promise(async function (resolve, reject) {
630
- let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
631
+ let promptResult = await promptTrackNewStudy_askTrackMeasurements(uiViewportDialogService, viewportId);
631
632
  if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
632
- promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
633
+ promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(uiViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
633
634
  }
634
635
  resolve({
635
636
  userResponse: promptResult,
@@ -714,7 +715,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
714
715
  }
715
716
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
716
717
  // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
717
- var default_src = __webpack_require__(7206);
718
+ var default_src = __webpack_require__(47390);
718
719
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
719
720
  const MIN_SR_SERIES_NUMBER = 4700;
720
721
  function getNextSRSeriesNumber(displaySetService) {
@@ -738,7 +739,7 @@ const PROMPT_RESPONSES_RESPONSE = {
738
739
 
739
740
 
740
741
 
741
- function promptSaveReport({
742
+ async function promptSaveReport({
742
743
  servicesManager,
743
744
  commandsManager,
744
745
  extensionManager
@@ -757,8 +758,7 @@ function promptSaveReport({
757
758
  trackedSeries
758
759
  } = ctx;
759
760
  let displaySetInstanceUIDs;
760
- return new Promise(async function (resolve, reject) {
761
- // TODO: Fallback if (uiDialogService) {
761
+ try {
762
762
  const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
763
763
  extensionManager
764
764
  });
@@ -791,19 +791,21 @@ function promptSaveReport({
791
791
  } else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
792
792
  // Do nothing
793
793
  }
794
- resolve({
794
+ return {
795
795
  userResponse: promptResult.action,
796
796
  createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
797
797
  StudyInstanceUID,
798
798
  SeriesInstanceUID,
799
799
  viewportId,
800
800
  isBackupSave
801
- });
802
- });
801
+ };
802
+ } catch (error) {
803
+ return null;
804
+ }
803
805
  }
804
806
  /* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
805
807
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 14 modules
806
- var cornerstone_dicom_sr_src = __webpack_require__(61669);
808
+ var cornerstone_dicom_sr_src = __webpack_require__(14721);
807
809
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
808
810
 
809
811
 
@@ -831,7 +833,7 @@ function promptHydrateStructuredReport({
831
833
  } = evt;
832
834
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
833
835
  return new Promise(async function (resolve, reject) {
834
- const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
836
+ const promptResult = appConfig?.disableConfirmationPrompts ? promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT : await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
835
837
 
836
838
  // Need to do action here... So we can set state...
837
839
  let StudyInstanceUID, SeriesInstanceUIDs;
@@ -1236,7 +1238,7 @@ __webpack_require__.d(__webpack_exports__, {
1236
1238
  });
1237
1239
 
1238
1240
  // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 13 modules
1239
- var getContextModule = __webpack_require__(219);
1241
+ var getContextModule = __webpack_require__(84222);
1240
1242
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1241
1243
  var react = __webpack_require__(41766);
1242
1244
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
@@ -1246,8 +1248,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1246
1248
  var dist = __webpack_require__(37396);
1247
1249
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1248
1250
  var es = __webpack_require__(80619);
1249
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
1250
- var src = __webpack_require__(55411);
1251
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
1252
+ var src = __webpack_require__(8633);
1251
1253
  // EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
1252
1254
  var ui_src = __webpack_require__(5085);
1253
1255
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[206],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[390],{
3
3
 
4
- /***/ 7206:
4
+ /***/ 47390:
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.9.0-beta.1";
2754
- const commitHash = "0156bc426f1840ae0d090223e94a643726e856cb";
2753
+ const versionNumber = "3.9.0-beta.3";
2754
+ const commitHash = "374065bc3bad9d212f9817a8d41546cc64cfabfb";
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,
@@ -3709,6 +3709,7 @@ async function createReportAsync({
3709
3709
  message: error.message || `Failed to store ${reportType}`,
3710
3710
  type: 'error'
3711
3711
  });
3712
+ throw new Error(`Failed to store ${reportType}. Error: ${error.message || 'Unknown error'}`);
3712
3713
  } finally {
3713
3714
  uiDialogService.dismiss({
3714
3715
  id: loadingDialogId
@@ -4012,7 +4013,7 @@ function PanelMeasurementTable({
4012
4013
  })));
4013
4014
  }
4014
4015
  PanelMeasurementTable.propTypes = {
4015
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS).isRequired
4016
+ servicesManager: (prop_types_default()).object.isRequired
4016
4017
  };
4017
4018
  function _getMappedMeasurements(measurementService) {
4018
4019
  const measurements = measurementService.getMeasurements();
@@ -4744,7 +4745,6 @@ function ToolbarLayoutSelector_extends() { ToolbarLayoutSelector_extends = Objec
4744
4745
 
4745
4746
 
4746
4747
 
4747
-
4748
4748
  const defaultCommonPresets = [{
4749
4749
  icon: 'layout-common-1x1',
4750
4750
  commandOptions: {
@@ -4933,7 +4933,7 @@ LayoutSelector.propTypes = {
4933
4933
  rows: (prop_types_default()).number,
4934
4934
  columns: (prop_types_default()).number,
4935
4935
  onLayoutChange: (prop_types_default()).func,
4936
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS)
4936
+ servicesManager: (prop_types_default()).object.isRequired
4937
4937
  };
4938
4938
  LayoutSelector.defaultProps = {
4939
4939
  columns: 4,
@@ -12,8 +12,8 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  "default": () => (/* binding */ basic_test_mode_src)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
16
- var src = __webpack_require__(55411);
15
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
16
+ var src = __webpack_require__(8633);
17
17
  // EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
18
18
  var ui_src = __webpack_require__(5085);
19
19
  ;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/toolbarButtons.ts
@@ -240,6 +240,16 @@ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-test"
240
240
  const id = package_namespaceObject.UU;
241
241
 
242
242
  ;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/initToolGroups.ts
243
+ const colours = {
244
+ 'viewport-0': 'rgb(200, 0, 0)',
245
+ 'viewport-1': 'rgb(200, 200, 0)',
246
+ 'viewport-2': 'rgb(0, 200, 0)'
247
+ };
248
+ const colorsByOrientation = {
249
+ axial: 'rgb(200, 0, 0)',
250
+ sagittal: 'rgb(200, 200, 0)',
251
+ coronal: 'rgb(0, 200, 0)'
252
+ };
243
253
  function initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) {
244
254
  const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
245
255
  const {
@@ -375,6 +385,10 @@ function initSRToolGroup(extensionManager, toolGroupService, commandsManager) {
375
385
  }
376
386
  function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {
377
387
  const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
388
+ const serviceManager = extensionManager._servicesManager;
389
+ const {
390
+ cornerstoneViewportService
391
+ } = serviceManager.services;
378
392
  const {
379
393
  toolNames,
380
394
  Enums
@@ -440,6 +454,16 @@ function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {
440
454
  autoPan: {
441
455
  enabled: false,
442
456
  panSize: 10
457
+ },
458
+ getReferenceLineColor: viewportId => {
459
+ const viewportInfo = cornerstoneViewportService.getViewportInfo(viewportId);
460
+ const viewportOptions = viewportInfo?.viewportOptions;
461
+ if (viewportOptions) {
462
+ return colours[viewportOptions.id] || colorsByOrientation[viewportOptions.orientation] || '#0c0';
463
+ } else {
464
+ console.warn('missing viewport?', viewportId);
465
+ return '#0c0';
466
+ }
443
467
  }
444
468
  }
445
469
  }, {
@@ -610,6 +634,13 @@ const moreTools = [{
610
634
  tooltip: 'Angle',
611
635
  commands: setToolActiveToolbar,
612
636
  evaluate: 'evaluate.cornerstoneTool'
637
+ }), moreTools_createButton({
638
+ id: 'CobbAngle',
639
+ icon: 'tool-angle',
640
+ label: 'Cobb Angle',
641
+ tooltip: 'Cobb Angle',
642
+ commands: setToolActiveToolbar,
643
+ evaluate: 'evaluate.cornerstoneTool'
613
644
  }), moreTools_createButton({
614
645
  id: 'Magnify',
615
646
  icon: 'tool-magnify',
@@ -26,8 +26,8 @@ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-
26
26
  const id = package_namespaceObject.UU;
27
27
  const SOPClassHandlerName = 'dynamic-volume';
28
28
 
29
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
30
- var src = __webpack_require__(55411);
29
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
30
+ var src = __webpack_require__(8633);
31
31
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
32
32
  var esm = __webpack_require__(92136);
33
33
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
@@ -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);
259
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
260
+ var core_src = __webpack_require__(8633);
261
261
  // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
262
- var default_src = __webpack_require__(7206);
262
+ var default_src = __webpack_require__(47390);
263
263
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/dicomWebClient.ts
264
264
 
265
265
 
@@ -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
 
@@ -8602,8 +8602,11 @@ const ToolGroupService_EVENTS = {
8602
8602
  PRIMARY_TOOL_ACTIVATED: 'event::cornerstone::toolgroupservice:primarytoolactivated'
8603
8603
  };
8604
8604
  class ToolGroupService {
8605
- constructor(serviceManager) {
8606
- this.serviceManager = void 0;
8605
+ constructor(servicesManager) {
8606
+ this.servicesManager = void 0;
8607
+ this.cornerstoneViewportService = void 0;
8608
+ this.viewportGridService = void 0;
8609
+ this.uiNotificationService = void 0;
8607
8610
  this.toolGroupIds = new Set();
8608
8611
  /**
8609
8612
  * Service-specific
@@ -8631,7 +8634,7 @@ class ToolGroupService {
8631
8634
  cornerstoneViewportService,
8632
8635
  viewportGridService,
8633
8636
  uiNotificationService
8634
- } = serviceManager.services;
8637
+ } = servicesManager.services;
8635
8638
  this.cornerstoneViewportService = cornerstoneViewportService;
8636
8639
  this.viewportGridService = viewportGridService;
8637
8640
  this.uiNotificationService = uiNotificationService;
@@ -8892,7 +8895,7 @@ const asSyncGroup = syncGroup => typeof syncGroup === 'string' ? {
8892
8895
  type: syncGroup
8893
8896
  } : syncGroup;
8894
8897
  class SyncGroupService {
8895
- constructor(serviceManager) {
8898
+ constructor(servicesManager) {
8896
8899
  this.servicesManager = void 0;
8897
8900
  this.listeners = {};
8898
8901
  this.EVENTS = void 0;
@@ -8906,7 +8909,7 @@ class SyncGroupService {
8906
8909
  [IMAGE_SLICE]: dist_esm.synchronizers.createImageSliceSynchronizer
8907
8910
  };
8908
8911
  this.synchronizersByType = {};
8909
- this.servicesManager = serviceManager;
8912
+ this.servicesManager = servicesManager;
8910
8913
  this.listeners = {};
8911
8914
  this.EVENTS = SyncGroupService_EVENTS;
8912
8915
  //
@@ -10058,7 +10061,11 @@ class SegmentationService extends src/* PubSubService */.Rc {
10058
10061
  x,
10059
10062
  y,
10060
10063
  z
10061
- } = segDisplaySet.centroids.get(segmentIndex);
10064
+ } = segDisplaySet.centroids.get(segmentIndex) || {
10065
+ x: 0,
10066
+ y: 0,
10067
+ z: 0
10068
+ };
10062
10069
  const centerWorld = derivedVolume.imageData.indexToWorld([x, y, z]);
10063
10070
  segmentation.cachedStats = {
10064
10071
  ...segmentation.cachedStats,
@@ -12708,7 +12715,6 @@ const getViewportVolumeHistogram = async (viewport, volume, options) => {
12708
12715
 
12709
12716
 
12710
12717
 
12711
-
12712
12718
  const {
12713
12719
  Events
12714
12720
  } = esm.Enums;
@@ -12998,7 +13004,7 @@ const ViewportWindowLevel = ({
12998
13004
  }));
12999
13005
  };
13000
13006
  ViewportWindowLevel.propTypes = {
13001
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS),
13007
+ servicesManager: (prop_types_default()).object.isRequired,
13002
13008
  viewportId: (prop_types_default()).string.isRequired
13003
13009
  };
13004
13010
  /* harmony default export */ const ViewportWindowLevel_ViewportWindowLevel = (ViewportWindowLevel);
@@ -13007,7 +13013,6 @@ ViewportWindowLevel.propTypes = {
13007
13013
 
13008
13014
 
13009
13015
 
13010
-
13011
13016
  const ActiveViewportWindowLevel = ({
13012
13017
  servicesManager
13013
13018
  }) => {
@@ -13021,7 +13026,7 @@ const ActiveViewportWindowLevel = ({
13021
13026
  }));
13022
13027
  };
13023
13028
  ActiveViewportWindowLevel.propTypes = {
13024
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS)
13029
+ servicesManager: (prop_types_default()).object.isRequired
13025
13030
  };
13026
13031
  /* harmony default export */ const ActiveViewportWindowLevel_ActiveViewportWindowLevel = (ActiveViewportWindowLevel);
13027
13032
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/components/ActiveViewportWindowLevel/index.js
@@ -13211,7 +13216,7 @@ const cornerstoneExtension = {
13211
13216
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13212
13217
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
13213
13218
  /* harmony export */ });
13214
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55411);
13219
+ /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8633);
13215
13220
  /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5085);
13216
13221
  var _ViewportActionCornersService;
13217
13222