@ohif/app 3.12.0-beta.37 → 3.12.0-beta.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/{1447.bundle.e72d561a95728144eb80.js → 1447.bundle.e1abda3a7f374ea48644.js} +2 -2
  2. package/dist/5457.bundle.451d7b3b9227cbc8e174.js +1366 -0
  3. package/dist/{6980.bundle.fd51cc989630e11678db.js → 5485.bundle.9153094dec354e1279ad.js} +250 -177
  4. package/dist/{7656.bundle.9461b3916d12642f8a2f.js → 7656.bundle.9443079e27d7d8f36257.js} +4 -4
  5. package/dist/{810.bundle.9e3b4c5de962b05a470a.js → 810.bundle.16f391c4e7da9848a949.js} +2 -2
  6. package/dist/{app.bundle.2fa71005e467945f966b.js → app.bundle.a9bfe5da304e33900bed.js} +69 -9
  7. package/dist/index.html +1 -1
  8. package/dist/sw.js +1 -1
  9. package/package.json +20 -20
  10. /package/dist/{1459.bundle.fe6b17d2e7fecf6c10bc.js → 1459.bundle.6d912e6019da628cd492.js} +0 -0
  11. /package/dist/{1604.bundle.758d9406d21535408ac2.js → 1604.bundle.bc6c02b33c3ddd17a04c.js} +0 -0
  12. /package/dist/{1807.bundle.a4eee598457de106aeff.js → 1807.bundle.0f86d6bd87a1fc204bfd.js} +0 -0
  13. /package/dist/{1919.bundle.7f6637cc74838eeaed64.js → 1919.bundle.90e6282dbd3ce41fa7dc.js} +0 -0
  14. /package/dist/{213.bundle.cde01f88349a95bb7d32.js → 213.bundle.4487a3ea21668eb84e13.js} +0 -0
  15. /package/dist/{2243.bundle.9a43de7b1521de21a66d.js → 2243.bundle.60352e87f85cb1ec5726.js} +0 -0
  16. /package/dist/{2424.bundle.96745b99607e2cf0dc1d.js → 2424.bundle.67f472e25f465cb097ab.js} +0 -0
  17. /package/dist/{4113.bundle.4aad9b2ab063e6c22809.js → 4113.bundle.41441b4f42dc493ead44.js} +0 -0
  18. /package/dist/{414.bundle.aa26fe881a500f4ecf44.js → 414.bundle.888425a9fa3b4d5efaec.js} +0 -0
  19. /package/dist/{6027.bundle.9e7c2c19be894e22a162.js → 6027.bundle.c6ac80144b3111fac9d8.js} +0 -0
  20. /package/dist/{6201.bundle.33b49c5ca4f9c40f32d2.js → 6201.bundle.d5afb33076730728189f.js} +0 -0
  21. /package/dist/{6991.bundle.6b7ce759442776c84fa4.js → 6991.bundle.60df34bab80853e97851.js} +0 -0
  22. /package/dist/{7197.bundle.2b488950c7312fd7304e.js → 7197.bundle.3d8123242414bedbcd12.js} +0 -0
  23. /package/dist/{7639.bundle.a7cc37008fc233ce6258.js → 7639.bundle.8ed96aea654d5e51d53c.js} +0 -0
  24. /package/dist/{85.bundle.c5a60c52f890ca369801.js → 85.bundle.59f6dd4a87b898971a5f.js} +0 -0
  25. /package/dist/{8558.bundle.23a5d42f9b1c37dfbf98.js → 8558.bundle.cdfdbc82525fc0a6dccf.js} +0 -0
  26. /package/dist/{8815.bundle.b8f66e79a5e581fde793.js → 8815.bundle.5ef65b0b08cbbd044225.js} +0 -0
  27. /package/dist/{934.bundle.0d5afaa1248704b4091f.js → 934.bundle.1300bc4b558647bff6a8.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[6980],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[5485],{
3
3
 
4
- /***/ 6980:
4
+ /***/ 35485:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -9,20 +9,38 @@ __webpack_require__.r(__webpack_exports__);
9
9
 
10
10
  // EXPORTS
11
11
  __webpack_require__.d(__webpack_exports__, {
12
- "default": () => (/* binding */ longitudinal_src),
12
+ NON_IMAGE_MODALITIES: () => (/* binding */ NON_IMAGE_MODALITIES),
13
+ basicLayout: () => (/* binding */ basicLayout),
14
+ basicRoute: () => (/* binding */ basicRoute),
15
+ cornerstone: () => (/* binding */ cornerstone),
16
+ "default": () => (/* binding */ basic_src),
17
+ dicomPmap: () => (/* binding */ dicomPmap),
18
+ dicomRT: () => (/* binding */ dicomRT),
19
+ dicomSeg: () => (/* binding */ dicomSeg),
20
+ dicompdf: () => (/* binding */ dicompdf),
21
+ dicomsr: () => (/* binding */ dicomsr),
22
+ dicomvideo: () => (/* binding */ dicomvideo),
23
+ extensionDependencies: () => (/* binding */ extensionDependencies),
13
24
  initToolGroups: () => (/* reexport */ src_initToolGroups),
14
- toolbarButtons: () => (/* reexport */ src_toolbarButtons)
25
+ isValidMode: () => (/* binding */ isValidMode),
26
+ layoutTemplate: () => (/* binding */ layoutTemplate),
27
+ mode: () => (/* binding */ mode),
28
+ modeFactory: () => (/* binding */ modeFactory),
29
+ modeInstance: () => (/* binding */ modeInstance),
30
+ ohif: () => (/* binding */ ohif),
31
+ onModeEnter: () => (/* binding */ onModeEnter),
32
+ onModeExit: () => (/* binding */ onModeExit),
33
+ sopClassHandlers: () => (/* binding */ sopClassHandlers),
34
+ toolbarButtons: () => (/* reexport */ src_toolbarButtons),
35
+ toolbarSections: () => (/* binding */ toolbarSections)
15
36
  });
16
37
 
17
- // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
18
- var i18next = __webpack_require__(40680);
19
- ;// ../../../modes/longitudinal/package.json
20
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-longitudinal"}');
21
- ;// ../../../modes/longitudinal/src/id.js
22
-
23
- const id = package_namespaceObject.UU;
24
-
25
- ;// ../../../modes/longitudinal/src/initToolGroups.js
38
+ // EXTERNAL MODULE: ../../../node_modules/immutability-helper/index.js
39
+ var immutability_helper = __webpack_require__(1752);
40
+ var immutability_helper_default = /*#__PURE__*/__webpack_require__.n(immutability_helper);
41
+ // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
42
+ var src = __webpack_require__(76569);
43
+ ;// ../../../modes/basic/src/initToolGroups.ts
26
44
  const colours = {
27
45
  'viewport-0': 'rgb(200, 0, 0)',
28
46
  'viewport-1': 'rgb(200, 200, 0)',
@@ -361,9 +379,9 @@ function initToolGroups(extensionManager, toolGroupService, commandsManager) {
361
379
  /* harmony default export */ const src_initToolGroups = (initToolGroups);
362
380
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
363
381
  var esm = __webpack_require__(15327);
364
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
365
- var src = __webpack_require__(76569);
366
- ;// ../../../modes/longitudinal/src/toolbarButtons.ts
382
+ // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
383
+ var i18next = __webpack_require__(40680);
384
+ ;// ../../../modes/basic/src/toolbarButtons.ts
367
385
 
368
386
 
369
387
 
@@ -979,15 +997,33 @@ const toolbarButtons = [
979
997
  // },
980
998
  ];
981
999
  /* harmony default export */ const src_toolbarButtons = (toolbarButtons);
982
- ;// ../../../modes/longitudinal/src/index.ts
1000
+ ;// ../../../modes/basic/package.json
1001
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-basic"}');
1002
+ ;// ../../../modes/basic/src/id.js
1003
+
1004
+ const id = package_namespaceObject.UU;
983
1005
 
1006
+ ;// ../../../modes/basic/src/index.tsx
984
1007
 
985
1008
 
986
1009
 
987
1010
 
988
- // Allow this mode by excluding non-imaging modalities such as SR, SEG
989
- // Also, SM is not a simple imaging modalities, so exclude it.
990
- const NON_IMAGE_MODALITIES = ['ECG', 'SEG', 'RTSTRUCT', 'RTPLAN', 'PR'];
1011
+
1012
+ const {
1013
+ TOOLBAR_SECTIONS
1014
+ } = src/* ToolbarService */.hx;
1015
+ const {
1016
+ structuredCloneWithFunctions
1017
+ } = src/* utils */.Wp;
1018
+
1019
+ /**
1020
+ * Define non-imaging modalities.
1021
+ * This can be used to exclude modes which have only these modalities,
1022
+ * or it can be used to not display thumbnails for some of these.
1023
+ * This list used to include SM, for whole slide imaging, but this is now supported
1024
+ * by cornerstone. Others of these may get added.
1025
+ */
1026
+ const NON_IMAGE_MODALITIES = ['ECG', 'SEG', 'RTSTRUCT', 'RTPLAN', 'PR', 'SR', 'DOC'];
991
1027
  const ohif = {
992
1028
  layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',
993
1029
  sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',
@@ -996,12 +1032,8 @@ const ohif = {
996
1032
  };
997
1033
  const cornerstone = {
998
1034
  measurements: '@ohif/extension-cornerstone.panelModule.panelMeasurement',
999
- segmentation: '@ohif/extension-cornerstone.panelModule.panelSegmentation'
1000
- };
1001
- const tracked = {
1002
- measurements: '@ohif/extension-measurement-tracking.panelModule.trackedMeasurements',
1003
- thumbnailList: '@ohif/extension-measurement-tracking.panelModule.seriesList',
1004
- viewport: '@ohif/extension-measurement-tracking.viewportModule.cornerstone-tracked'
1035
+ segmentation: '@ohif/extension-cornerstone.panelModule.panelSegmentation',
1036
+ viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone'
1005
1037
  };
1006
1038
  const dicomsr = {
1007
1039
  sopClassHandler: '@ohif/extension-cornerstone-dicom-sr.sopClassHandlerModule.dicom-sr',
@@ -1032,7 +1064,6 @@ const extensionDependencies = {
1032
1064
  // Can derive the versions at least process.env.from npm_package_version
1033
1065
  '@ohif/extension-default': '^3.0.0',
1034
1066
  '@ohif/extension-cornerstone': '^3.0.0',
1035
- '@ohif/extension-measurement-tracking': '^3.0.0',
1036
1067
  '@ohif/extension-cornerstone-dicom-sr': '^3.0.0',
1037
1068
  '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',
1038
1069
  '@ohif/extension-cornerstone-dicom-pmap': '^3.0.0',
@@ -1040,167 +1071,209 @@ const extensionDependencies = {
1040
1071
  '@ohif/extension-dicom-pdf': '^3.0.1',
1041
1072
  '@ohif/extension-dicom-video': '^3.0.1'
1042
1073
  };
1043
- function modeFactory({
1044
- modeConfiguration
1045
- }) {
1046
- let _activatePanelTriggersSubscriptions = [];
1047
- return {
1048
- // TODO: We're using this as a route segment
1049
- // We should not be.
1050
- id: id,
1051
- routeName: 'viewer',
1052
- displayName: i18next/* default */.A.t('Modes:Basic Viewer'),
1053
- /**
1054
- * Lifecycle hooks
1055
- */
1056
- onModeEnter: function ({
1057
- servicesManager,
1058
- extensionManager,
1059
- commandsManager
1060
- }) {
1061
- const {
1062
- measurementService,
1063
- toolbarService,
1064
- toolGroupService,
1065
- customizationService
1066
- } = servicesManager.services;
1067
- measurementService.clearMeasurements();
1068
-
1069
- // Init Default and SR ToolGroups
1070
- src_initToolGroups(extensionManager, toolGroupService, commandsManager);
1071
- toolbarService.register(src_toolbarButtons);
1072
- toolbarService.updateSection(toolbarService.sections.primary, ['MeasurementTools', 'Zoom', 'Pan', 'TrackballRotate', 'WindowLevel', 'Capture', 'Layout', 'Crosshairs', 'MoreTools']);
1073
- toolbarService.updateSection(toolbarService.sections.viewportActionMenu.topLeft, ['orientationMenu', 'dataOverlayMenu']);
1074
- toolbarService.updateSection(toolbarService.sections.viewportActionMenu.bottomMiddle, ['AdvancedRenderingControls']);
1075
- toolbarService.updateSection('AdvancedRenderingControls', ['windowLevelMenuEmbedded', 'voiManualControlMenu', 'Colorbar', 'opacityMenu', 'thresholdMenu']);
1076
- toolbarService.updateSection(toolbarService.sections.viewportActionMenu.topRight, ['modalityLoadBadge', 'trackingStatus', 'navigationComponent']);
1077
- toolbarService.updateSection(toolbarService.sections.viewportActionMenu.bottomLeft, ['windowLevelMenu']);
1078
- toolbarService.updateSection('MeasurementTools', ['Length', 'Bidirectional', 'ArrowAnnotate', 'EllipticalROI', 'RectangleROI', 'CircleROI', 'PlanarFreehandROI', 'SplineROI', 'LivewireContour']);
1079
- toolbarService.updateSection('MoreTools', ['Reset', 'rotate-right', 'flipHorizontal', 'ImageSliceSync', 'ReferenceLines', 'ImageOverlayViewer', 'StackScroll', 'invert', 'Probe', 'Cine', 'Angle', 'CobbAngle', 'Magnify', 'CalibrationLine', 'TagBrowser', 'AdvancedMagnify', 'UltrasoundDirectionalTool', 'WindowLevelRegion', 'SegmentLabelTool']);
1080
- customizationService.setCustomizations({
1081
- 'panelSegmentation.disableEditing': {
1082
- $set: true
1083
- }
1084
- });
1085
-
1086
- // // ActivatePanel event trigger for when a segmentation or measurement is added.
1087
- // // Do not force activation so as to respect the state the user may have left the UI in.
1088
- // _activatePanelTriggersSubscriptions = [
1089
- // ...panelService.addActivatePanelTriggers(
1090
- // cornerstone.segmentation,
1091
- // [
1092
- // {
1093
- // sourcePubSubService: segmentationService,
1094
- // sourceEvents: [segmentationService.EVENTS.SEGMENTATION_ADDED],
1095
- // },
1096
- // ],
1097
- // true
1098
- // ),
1099
- // ...panelService.addActivatePanelTriggers(
1100
- // tracked.measurements,
1101
- // [
1102
- // {
1103
- // sourcePubSubService: measurementService,
1104
- // sourceEvents: [
1105
- // measurementService.EVENTS.MEASUREMENT_ADDED,
1106
- // measurementService.EVENTS.RAW_MEASUREMENT_ADDED,
1107
- // ],
1108
- // },
1109
- // ],
1110
- // true
1111
- // ),
1112
- // true,
1113
- // ];
1114
- },
1115
- onModeExit: ({
1116
- servicesManager
1117
- }) => {
1118
- const {
1119
- toolGroupService,
1120
- syncGroupService,
1121
- segmentationService,
1122
- cornerstoneViewportService,
1123
- uiDialogService,
1124
- uiModalService
1125
- } = servicesManager.services;
1126
- _activatePanelTriggersSubscriptions.forEach(sub => sub.unsubscribe());
1127
- _activatePanelTriggersSubscriptions = [];
1128
- uiDialogService.hideAll();
1129
- uiModalService.hide();
1130
- toolGroupService.destroy();
1131
- syncGroupService.destroy();
1132
- segmentationService.destroy();
1133
- cornerstoneViewportService.destroy();
1134
- },
1135
- validationTags: {
1136
- study: [],
1137
- series: []
1138
- },
1139
- isValidMode: function ({
1140
- modalities
1141
- }) {
1142
- const modalities_list = modalities.split('\\');
1074
+ const sopClassHandlers = [dicomvideo.sopClassHandler, dicomSeg.sopClassHandler, dicomPmap.sopClassHandler, ohif.sopClassHandler, ohif.wsiSopClassHandler, dicompdf.sopClassHandler, dicomsr.sopClassHandler3D, dicomsr.sopClassHandler, dicomRT.sopClassHandler];
1143
1075
 
1144
- // Exclude non-image modalities
1145
- return {
1146
- valid: !!modalities_list.filter(modality => NON_IMAGE_MODALITIES.indexOf(modality) === -1).length,
1147
- description: 'The mode does not support studies that ONLY include the following modalities: SM, ECG, SEG, RTSTRUCT'
1148
- };
1149
- },
1150
- routes: [{
1151
- path: 'longitudinal',
1152
- /*init: ({ servicesManager, extensionManager }) => {
1153
- //defaultViewerRouteInit
1154
- },*/
1155
- layoutTemplate: () => {
1076
+ /**
1077
+ * Indicate this is a valid mode if:
1078
+ * - it contains at least one of the modeModalities
1079
+ * - it contains all of the array value in modeModalities
1080
+ * Otherwise, if modeModalities is not defined:
1081
+ * - it contains at least one modality other than the nonModeMOdalities.
1082
+ */
1083
+ function isValidMode({
1084
+ modalities
1085
+ }) {
1086
+ const modalities_list = modalities.split('\\');
1087
+ if (this.modeModalities?.length) {
1088
+ for (const modeModality of this.modeModalities) {
1089
+ if (Array.isArray(modeModality) && modeModality.every(m => modalities.indexOf(m) !== -1)) {
1156
1090
  return {
1157
- id: ohif.layout,
1158
- props: {
1159
- leftPanels: [tracked.thumbnailList],
1160
- leftPanelResizable: true,
1161
- rightPanels: [cornerstone.segmentation, tracked.measurements],
1162
- rightPanelClosed: true,
1163
- rightPanelResizable: true,
1164
- viewports: [{
1165
- namespace: tracked.viewport,
1166
- displaySetsToDisplay: [ohif.sopClassHandler, dicomvideo.sopClassHandler, ohif.wsiSopClassHandler]
1167
- }, {
1168
- namespace: dicomsr.viewport,
1169
- displaySetsToDisplay: [dicomsr.sopClassHandler, dicomsr.sopClassHandler3D]
1170
- }, {
1171
- namespace: dicompdf.viewport,
1172
- displaySetsToDisplay: [dicompdf.sopClassHandler]
1173
- }, {
1174
- namespace: dicomSeg.viewport,
1175
- displaySetsToDisplay: [dicomSeg.sopClassHandler]
1176
- }, {
1177
- namespace: dicomPmap.viewport,
1178
- displaySetsToDisplay: [dicomPmap.sopClassHandler]
1179
- }, {
1180
- namespace: dicomRT.viewport,
1181
- displaySetsToDisplay: [dicomRT.sopClassHandler]
1182
- }]
1183
- }
1091
+ valid: true,
1092
+ description: `Matches ${modeModality.join(', ')}`
1093
+ };
1094
+ } else if (modalities.indexOf(modeModality)) {
1095
+ return {
1096
+ valid: true,
1097
+ description: `Matches ${modeModality}`
1184
1098
  };
1185
1099
  }
1186
- }],
1187
- extensions: extensionDependencies,
1188
- // Default protocol gets self-registered by default in the init
1189
- hangingProtocol: 'default',
1190
- // Order is important in sop class handlers when two handlers both use
1191
- // the same sop class under different situations. In that case, the more
1192
- // general handler needs to come last. For this case, the dicomvideo must
1193
- // come first to remove video transfer syntax before ohif uses images
1194
- sopClassHandlers: [dicomvideo.sopClassHandler, dicomSeg.sopClassHandler, dicomPmap.sopClassHandler, ohif.sopClassHandler, ohif.wsiSopClassHandler, dicompdf.sopClassHandler, dicomsr.sopClassHandler3D, dicomsr.sopClassHandler, dicomRT.sopClassHandler],
1195
- ...modeConfiguration
1100
+ }
1101
+ return {
1102
+ valid: false,
1103
+ description: `None of the mode modalities match: ${JSON.stringify(this.modeModalities)}`
1104
+ };
1105
+ }
1106
+ return {
1107
+ valid: !!modalities_list.find(modality => this.nonModeModalities.indexOf(modality) === -1),
1108
+ description: `The mode does not support studies that ONLY include the following modalities: ${this.nonModeModalities.join(', ')}`
1196
1109
  };
1197
1110
  }
1111
+ function onModeEnter({
1112
+ servicesManager,
1113
+ extensionManager,
1114
+ commandsManager,
1115
+ panelService,
1116
+ segmentationService
1117
+ }) {
1118
+ const {
1119
+ measurementService,
1120
+ toolbarService,
1121
+ toolGroupService,
1122
+ customizationService
1123
+ } = servicesManager.services;
1124
+ measurementService.clearMeasurements();
1125
+
1126
+ // Init Default and SR ToolGroups
1127
+ src_initToolGroups(extensionManager, toolGroupService, commandsManager);
1128
+ toolbarService.register(this.toolbarButtons);
1129
+ for (const [key, section] of Object.entries(this.toolbarSections)) {
1130
+ toolbarService.updateSection(key, section);
1131
+ }
1132
+ if (!this.enableSegmentationEdit) {
1133
+ customizationService.setCustomizations({
1134
+ 'panelSegmentation.disableEditing': {
1135
+ $set: true
1136
+ }
1137
+ });
1138
+ }
1139
+
1140
+ // // ActivatePanel event trigger for when a segmentation or measurement is added.
1141
+ // // Do not force activation so as to respect the state the user may have left the UI in.
1142
+ if (this.activatePanelTrigger) {
1143
+ this._activatePanelTriggersSubscriptions = [...panelService.addActivatePanelTriggers(cornerstone.segmentation, [{
1144
+ sourcePubSubService: segmentationService,
1145
+ sourceEvents: [segmentationService.EVENTS.SEGMENTATION_ADDED]
1146
+ }], true), ...panelService.addActivatePanelTriggers(cornerstone.measurements, [{
1147
+ sourcePubSubService: measurementService,
1148
+ sourceEvents: [measurementService.EVENTS.MEASUREMENT_ADDED, measurementService.EVENTS.RAW_MEASUREMENT_ADDED]
1149
+ }], true), true];
1150
+ }
1151
+ }
1152
+ function onModeExit({
1153
+ servicesManager
1154
+ }) {
1155
+ const {
1156
+ toolGroupService,
1157
+ syncGroupService,
1158
+ segmentationService,
1159
+ cornerstoneViewportService,
1160
+ uiDialogService,
1161
+ uiModalService
1162
+ } = servicesManager.services;
1163
+ this._activatePanelTriggersSubscriptions.forEach(sub => sub.unsubscribe());
1164
+ this._activatePanelTriggersSubscriptions.length = 0;
1165
+ uiDialogService.hideAll();
1166
+ uiModalService.hide();
1167
+ toolGroupService.destroy();
1168
+ syncGroupService.destroy();
1169
+ segmentationService.destroy();
1170
+ cornerstoneViewportService.destroy();
1171
+ }
1172
+ const toolbarSections = {
1173
+ [TOOLBAR_SECTIONS.primary]: ['MeasurementTools', 'Zoom', 'Pan', 'TrackballRotate', 'WindowLevel', 'Capture', 'Layout', 'Crosshairs', 'MoreTools'],
1174
+ [TOOLBAR_SECTIONS.viewportActionMenu.topLeft]: ['orientationMenu', 'dataOverlayMenu'],
1175
+ [TOOLBAR_SECTIONS.viewportActionMenu.bottomMiddle]: ['AdvancedRenderingControls'],
1176
+ AdvancedRenderingControls: ['windowLevelMenuEmbedded', 'voiManualControlMenu', 'Colorbar', 'opacityMenu', 'thresholdMenu'],
1177
+ [TOOLBAR_SECTIONS.viewportActionMenu.topRight]: ['modalityLoadBadge', 'trackingStatus', 'navigationComponent'],
1178
+ [TOOLBAR_SECTIONS.viewportActionMenu.bottomLeft]: ['windowLevelMenu'],
1179
+ MeasurementTools: ['Length', 'Bidirectional', 'ArrowAnnotate', 'EllipticalROI', 'RectangleROI', 'CircleROI', 'PlanarFreehandROI', 'SplineROI', 'LivewireContour'],
1180
+ MoreTools: ['Reset', 'rotate-right', 'flipHorizontal', 'ImageSliceSync', 'ReferenceLines', 'ImageOverlayViewer', 'StackScroll', 'invert', 'Probe', 'Cine', 'Angle', 'CobbAngle', 'Magnify', 'CalibrationLine', 'TagBrowser', 'AdvancedMagnify', 'UltrasoundDirectionalTool', 'WindowLevelRegion', 'SegmentLabelTool']
1181
+ };
1182
+ const basicLayout = {
1183
+ id: ohif.layout,
1184
+ props: {
1185
+ leftPanels: [ohif.thumbnailList],
1186
+ leftPanelResizable: true,
1187
+ rightPanels: [cornerstone.segmentation, cornerstone.measurements],
1188
+ rightPanelClosed: true,
1189
+ rightPanelResizable: true,
1190
+ viewports: [{
1191
+ namespace: cornerstone.viewport,
1192
+ displaySetsToDisplay: [ohif.sopClassHandler, dicomvideo.sopClassHandler, ohif.wsiSopClassHandler]
1193
+ }, {
1194
+ namespace: dicomsr.viewport,
1195
+ displaySetsToDisplay: [dicomsr.sopClassHandler, dicomsr.sopClassHandler3D]
1196
+ }, {
1197
+ namespace: dicompdf.viewport,
1198
+ displaySetsToDisplay: [dicompdf.sopClassHandler]
1199
+ }, {
1200
+ namespace: dicomSeg.viewport,
1201
+ displaySetsToDisplay: [dicomSeg.sopClassHandler]
1202
+ }, {
1203
+ namespace: dicomPmap.viewport,
1204
+ displaySetsToDisplay: [dicomPmap.sopClassHandler]
1205
+ }, {
1206
+ namespace: dicomRT.viewport,
1207
+ displaySetsToDisplay: [dicomRT.sopClassHandler]
1208
+ }]
1209
+ }
1210
+ };
1211
+ function layoutTemplate() {
1212
+ return structuredCloneWithFunctions(this.layoutInstance);
1213
+ }
1214
+ const basicRoute = {
1215
+ path: 'basic',
1216
+ layoutTemplate,
1217
+ layoutInstance: basicLayout
1218
+ };
1219
+ const modeInstance = {
1220
+ // TODO: We're using this as a route segment
1221
+ // We should not be.
1222
+ id: id,
1223
+ routeName: 'basic',
1224
+ // Don't hide this by default - see the registration later to hide the basic
1225
+ // instance by default.
1226
+ hide: false,
1227
+ displayName: 'Non-Longitudinal Basic',
1228
+ _activatePanelTriggersSubscriptions: [],
1229
+ toolbarSections,
1230
+ /**
1231
+ * Lifecycle hooks
1232
+ */
1233
+ onModeEnter,
1234
+ onModeExit,
1235
+ validationTags: {
1236
+ study: [],
1237
+ series: []
1238
+ },
1239
+ isValidMode,
1240
+ routes: [basicRoute],
1241
+ extensions: extensionDependencies,
1242
+ // Default protocol gets self-registered by default in the init
1243
+ hangingProtocol: 'default',
1244
+ // Order is important in sop class handlers when two handlers both use
1245
+ // the same sop class under different situations. In that case, the more
1246
+ // general handler needs to come last. For this case, the dicomvideo must
1247
+ // come first to remove video transfer syntax before ohif uses images
1248
+ sopClassHandlers,
1249
+ toolbarButtons: src_toolbarButtons,
1250
+ enableSegmentationEdit: false,
1251
+ nonModeModalities: NON_IMAGE_MODALITIES
1252
+ };
1253
+
1254
+ /**
1255
+ * Creates a mode on this object, using immutability-helper to apply changes
1256
+ * from modeConfiguration into the modeInstance.
1257
+ */
1258
+ function modeFactory({
1259
+ modeConfiguration
1260
+ }) {
1261
+ let modeInstance = this.modeInstance;
1262
+ if (modeConfiguration) {
1263
+ modeInstance = immutability_helper_default()(modeInstance, modeConfiguration);
1264
+ }
1265
+ return modeInstance;
1266
+ }
1198
1267
  const mode = {
1199
1268
  id: id,
1200
1269
  modeFactory,
1270
+ modeInstance: {
1271
+ ...modeInstance,
1272
+ hide: true
1273
+ },
1201
1274
  extensionDependencies
1202
1275
  };
1203
- /* harmony default export */ const longitudinal_src = (mode);
1276
+ /* harmony default export */ const basic_src = (mode);
1204
1277
 
1205
1278
 
1206
1279
  /***/ })
@@ -357,7 +357,7 @@ function useMeasurements({
357
357
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
358
358
  /* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62051);
359
359
  /* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__);
360
- /* harmony import */ var _ohif_core_src_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80735);
360
+ /* harmony import */ var _ohif_core_src_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12968);
361
361
  /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76569);
362
362
 
363
363
 
@@ -1482,7 +1482,7 @@ function getCustomizationData(customizationService) {
1482
1482
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
1483
1483
  /* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62051);
1484
1484
  /* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__);
1485
- /* harmony import */ var _ohif_core_src_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80735);
1485
+ /* harmony import */ var _ohif_core_src_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12968);
1486
1486
  /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76569);
1487
1487
 
1488
1488
 
@@ -1911,8 +1911,8 @@ function onCompletedCalibrationLine(servicesManager, csToolsEvent) {
1911
1911
  });
1912
1912
  });
1913
1913
  }
1914
- // EXTERNAL MODULE: ../../core/src/utils/index.ts + 29 modules
1915
- var utils = __webpack_require__(80735);
1914
+ // EXTERNAL MODULE: ../../core/src/utils/index.ts + 30 modules
1915
+ var utils = __webpack_require__(12968);
1916
1916
  ;// ../../../extensions/cornerstone/src/tools/OverlayPlaneModuleProvider.ts
1917
1917
 
1918
1918
  const _cachedOverlayMetadata = new Map();
@@ -998,8 +998,8 @@ const handleROIThresholding = async ({
998
998
  segmentationService.addOrUpdateSegmentation(segmentation);
999
999
  });
1000
1000
  };
1001
- // EXTERNAL MODULE: ../../core/src/utils/index.ts + 29 modules
1002
- var utils = __webpack_require__(80735);
1001
+ // EXTERNAL MODULE: ../../core/src/utils/index.ts + 30 modules
1002
+ var utils = __webpack_require__(12968);
1003
1003
  ;// ../../../extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdExport.tsx
1004
1004
 
1005
1005