@ohif/app 3.8.0-beta.66 → 3.8.0-beta.67

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 (63) hide show
  1. package/dist/{121.bundle.fda405f29003c308ce09.js → 121.bundle.d8b3c6b530d6151f251d.js} +52 -75
  2. package/dist/{155.bundle.e9fdaa40010cc784f389.js → 155.bundle.a2b8640977007e407d30.js} +7 -16
  3. package/dist/{188.bundle.67df9790c453b185fe1d.js → 188.bundle.b6a7e833fdf99cee3ee6.js} +2 -2
  4. package/dist/{295.bundle.57700cd41fd87e1521b4.js → 295.bundle.075944a082306d2e432f.js} +75 -86
  5. package/dist/{41.bundle.b7bf03502ac3e2ddca35.js → 41.bundle.1c504116ebea23b157f6.js} +8 -43
  6. package/dist/{448.bundle.0061f5280490e1a1aa88.js → 448.bundle.f284c88c8780233e06b1.js} +5 -5
  7. package/dist/494.bundle.ffd75704a069c0720596.js +2565 -0
  8. package/dist/{530.bundle.72d9812f117036615a38.js → 530.bundle.aaf1c61342805ff32648.js} +41 -67
  9. package/dist/{544.bundle.c3009e245ceb1554c70a.js → 544.bundle.33ed8e4a3eaf16b55af7.js} +4 -4
  10. package/dist/{559.bundle.bb2c52834fb372399002.js → 559.bundle.601f9e285f6b3b4d1ac5.js} +4 -4
  11. package/dist/{889.bundle.edf546d8738c22b94be5.js → 574.bundle.c79d3fa0066f39b76442.js} +1005 -49
  12. package/dist/{594.bundle.483843d38640164a9aca.js → 594.bundle.49d072fb31c8994ae85f.js} +4 -4
  13. package/dist/{701.bundle.285943aebfc0efe2b4f1.js → 595.bundle.7a41a0998ab07dfa0212.js} +944 -52
  14. package/dist/{638.bundle.4d7da6fe507df0000718.js → 638.bundle.4c2972aa5a19f816d94a.js} +4 -4
  15. package/dist/{699.bundle.62990e46c235ab4785db.js → 699.bundle.43997eacac9490c1751c.js} +7 -21
  16. package/dist/{724.bundle.83a4176860f750353c0b.js → 724.bundle.00e619f0960de50c8e19.js} +22 -57
  17. package/dist/{862.bundle.999931264956ced59b33.js → 862.bundle.1f1613561a4d6059a8aa.js} +64 -83
  18. package/dist/{270.bundle.d7d6957c20f95c675b32.js → 889.bundle.2daaac42e278b28b3d01.js} +5 -5
  19. package/dist/{90.bundle.49b20161b4f864100085.js → 90.bundle.ce42cccceaec1135a165.js} +11 -9
  20. package/dist/{905.bundle.88010c612e910657883d.js → 905.bundle.af59bd2bcb04c4978059.js} +2 -2
  21. package/dist/{907.bundle.1206d58ae62d26beaf30.js → 907.bundle.401a07f50863efc6c6c1.js} +2 -2
  22. package/dist/{961.bundle.b4d84dd80e4e1113de27.js → 961.bundle.fdf0e1c0c54cfb2a952a.js} +2 -2
  23. package/dist/{app.bundle.81c01fc2e11fa9b6ccb8.js → app.bundle.aadaff7af8cd415a1eae.js} +1805 -637
  24. package/dist/app.bundle.css +6 -4
  25. package/dist/assets/images/CT-AAA.png +0 -0
  26. package/dist/assets/images/CT-AAA2.png +0 -0
  27. package/dist/assets/images/CT-Air.png +0 -0
  28. package/dist/assets/images/CT-Bone.png +0 -0
  29. package/dist/assets/images/CT-Bones.png +0 -0
  30. package/dist/assets/images/CT-Cardiac.png +0 -0
  31. package/dist/assets/images/CT-Cardiac2.png +0 -0
  32. package/dist/assets/images/CT-Cardiac3.png +0 -0
  33. package/dist/assets/images/CT-Chest-Contrast-Enhanced.png +0 -0
  34. package/dist/assets/images/CT-Chest-Vessels.png +0 -0
  35. package/dist/assets/images/CT-Coronary-Arteries-2.png +0 -0
  36. package/dist/assets/images/CT-Coronary-Arteries-3.png +0 -0
  37. package/dist/assets/images/CT-Coronary-Arteries.png +0 -0
  38. package/dist/assets/images/CT-Cropped-Volume-Bone.png +0 -0
  39. package/dist/assets/images/CT-Fat.png +0 -0
  40. package/dist/assets/images/CT-Liver-Vasculature.png +0 -0
  41. package/dist/assets/images/CT-Lung.png +0 -0
  42. package/dist/assets/images/CT-MIP.png +0 -0
  43. package/dist/assets/images/CT-Muscle.png +0 -0
  44. package/dist/assets/images/CT-Pulmonary-Arteries.png +0 -0
  45. package/dist/assets/images/CT-Soft-Tissue.png +0 -0
  46. package/dist/assets/images/DTI-FA-Brain.png +0 -0
  47. package/dist/assets/images/MR-Angio.png +0 -0
  48. package/dist/assets/images/MR-Default.png +0 -0
  49. package/dist/assets/images/MR-MIP.png +0 -0
  50. package/dist/assets/images/MR-T2-Brain.png +0 -0
  51. package/dist/assets/images/VolumeRendering.png +0 -0
  52. package/dist/index.html +1 -1
  53. package/dist/{polySeg.bundle.a97fc68de7599f9a9fdc.js → polySeg.bundle.e7b4c29fb9173e8567b8.js} +1 -1
  54. package/dist/sw.js +1 -1
  55. package/package.json +17 -17
  56. package/dist/339.bundle.526cede81f0a9bb248e6.js +0 -2591
  57. /package/dist/{164.bundle.3f877a2272b773332317.js → 164.bundle.ce3d1cd75bd8e13791d7.js} +0 -0
  58. /package/dist/{191.bundle.509480b6972209d2567c.js → 191.bundle.7d89c921abefd1140d50.js} +0 -0
  59. /package/dist/{290.bundle.8b4d7dfbc7cfe418a0f1.js → 290.bundle.952de53057f98e2c5ef0.js} +0 -0
  60. /package/dist/{342.bundle.17ec05907f93624fd494.js → 342.bundle.6e49f63ea7cea4645c0a.js} +0 -0
  61. /package/dist/{504.bundle.6d203e80d4bd8a823059.js → 504.bundle.993d7e2dec36257d4ce4.js} +0 -0
  62. /package/dist/{889.css → 574.css} +0 -0
  63. /package/dist/{701.css → 595.css} +0 -0
@@ -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 + 67 modules
26
- var src = __webpack_require__(78198);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
26
+ var src = __webpack_require__(85073);
27
27
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 383 modules
28
28
  var esm = __webpack_require__(50719);
29
29
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 16 modules
@@ -315,8 +315,8 @@ function getHangingProtocolModule() {
315
315
 
316
316
  // EXTERNAL MODULE: ./state/index.js + 1 modules
317
317
  var state = __webpack_require__(15575);
318
- // EXTERNAL MODULE: ../../ui/src/index.js + 497 modules
319
- var ui_src = __webpack_require__(58046);
318
+ // EXTERNAL MODULE: ../../ui/src/index.js + 519 modules
319
+ var ui_src = __webpack_require__(3962);
320
320
  // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 78 modules
321
321
  var default_src = __webpack_require__(54090);
322
322
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
@@ -12,19 +12,16 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  "default": () => (/* binding */ segmentation_src)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
16
- var src = __webpack_require__(78198);
15
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
16
+ var src = __webpack_require__(85073);
17
17
  ;// CONCATENATED MODULE: ../../../modes/segmentation/package.json
18
18
  const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-segmentation"}');
19
19
  ;// CONCATENATED MODULE: ../../../modes/segmentation/src/id.js
20
20
 
21
21
  const id = package_namespaceObject.UU;
22
22
 
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 497 modules
24
- var ui_src = __webpack_require__(58046);
25
23
  ;// CONCATENATED MODULE: ../../../modes/segmentation/src/toolbarButtons.ts
26
24
 
27
-
28
25
  const {
29
26
  windowLevelPresets
30
27
  } = src.defaults;
@@ -66,23 +63,12 @@ const toolbarButtons = [{
66
63
  }
67
64
  }, {
68
65
  id: 'WindowLevel',
69
- uiType: 'ohif.splitButton',
66
+ uiType: 'ohif.radioGroup',
70
67
  props: {
71
- groupId: 'WindowLevel',
72
- primary: createButton({
73
- id: 'WindowLevel',
74
- icon: 'tool-window-level',
75
- label: 'Window Level',
76
- tooltip: 'Window Level',
77
- commands: setToolActiveToolbar,
78
- evaluate: 'evaluate.cornerstoneTool'
79
- }),
80
- secondary: {
81
- icon: 'chevron-down',
82
- tooltip: 'W/L Presets'
83
- },
84
- renderer: ui_src/* WindowLevelMenuItem */.d4,
85
- items: [_createWwwcPreset(1, 'Soft tissue', '400 / 40'), _createWwwcPreset(2, 'Lung', '1500 / -600'), _createWwwcPreset(3, 'Liver', '150 / 90'), _createWwwcPreset(4, 'Bone', '2500 / 480'), _createWwwcPreset(5, 'Brain', '80 / 40')]
68
+ icon: 'tool-window-level',
69
+ label: 'Window Level',
70
+ commands: setToolActiveToolbar,
71
+ evaluate: 'evaluate.cornerstoneTool'
86
72
  }
87
73
  }, {
88
74
  id: 'Pan',
@@ -12,12 +12,10 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  "default": () => (/* binding */ tmtv_src)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
16
- var src = __webpack_require__(78198);
17
- // EXTERNAL MODULE: ../../ui/src/index.js + 497 modules
18
- var ui_src = __webpack_require__(58046);
15
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
16
+ var src = __webpack_require__(85073);
19
17
  ;// CONCATENATED MODULE: ../../../modes/tmtv/src/initToolGroups.js
20
- const toolGroupIds = {
18
+ const initToolGroups_toolGroupIds = {
21
19
  CT: 'ctToolGroup',
22
20
  PT: 'ptToolGroup',
23
21
  Fusion: 'fusionToolGroup',
@@ -97,8 +95,8 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
97
95
  }
98
96
  }]
99
97
  };
100
- toolGroupService.createToolGroupAndAddTools(toolGroupIds.CT, tools);
101
- toolGroupService.createToolGroupAndAddTools(toolGroupIds.PT, {
98
+ toolGroupService.createToolGroupAndAddTools(initToolGroups_toolGroupIds.CT, tools);
99
+ toolGroupService.createToolGroupAndAddTools(initToolGroups_toolGroupIds.PT, {
102
100
  active: tools.active,
103
101
  passive: [...tools.passive, {
104
102
  toolName: 'RectangleROIStartEndThreshold'
@@ -106,8 +104,8 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
106
104
  enabled: tools.enabled,
107
105
  disabled: tools.disabled
108
106
  });
109
- toolGroupService.createToolGroupAndAddTools(toolGroupIds.Fusion, tools);
110
- toolGroupService.createToolGroupAndAddTools(toolGroupIds.default, tools);
107
+ toolGroupService.createToolGroupAndAddTools(initToolGroups_toolGroupIds.Fusion, tools);
108
+ toolGroupService.createToolGroupAndAddTools(initToolGroups_toolGroupIds.default, tools);
111
109
  const mipTools = {
112
110
  active: [{
113
111
  toolName: toolNames.VolumeRotateMouseWheel,
@@ -117,7 +115,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
117
115
  }, {
118
116
  toolName: toolNames.MipJumpToClick,
119
117
  configuration: {
120
- toolGroupId: toolGroupIds.PT
118
+ toolGroupId: initToolGroups_toolGroupIds.PT
121
119
  },
122
120
  bindings: [{
123
121
  mouseButton: Enums.MouseBindings.Primary
@@ -127,7 +125,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
127
125
  toolName: toolNames.SegmentationDisplay
128
126
  }]
129
127
  };
130
- toolGroupService.createToolGroupAndAddTools(toolGroupIds.MIP, mipTools);
128
+ toolGroupService.createToolGroupAndAddTools(initToolGroups_toolGroupIds.MIP, mipTools);
131
129
  }
132
130
  function initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
133
131
  _initToolGroups(toolNames, Enums, toolGroupService, commandsManager);
@@ -136,7 +134,6 @@ function initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
136
134
  ;// CONCATENATED MODULE: ../../../modes/tmtv/src/toolbarButtons.js
137
135
 
138
136
 
139
-
140
137
  const {
141
138
  windowLevelPresets
142
139
  } = src.defaults;
@@ -171,7 +168,7 @@ function _createWwwcPreset(preset, title, subtitle) {
171
168
  const setToolActiveToolbar = {
172
169
  commandName: 'setToolActiveToolbar',
173
170
  commandOptions: {
174
- toolGroupIds: [toolGroupIds.CT, toolGroupIds.PT, toolGroupIds.Fusion]
171
+ toolGroupIds: [initToolGroups_toolGroupIds.CT, initToolGroups_toolGroupIds.PT, initToolGroups_toolGroupIds.Fusion]
175
172
  }
176
173
  };
177
174
  const toolbarButtons = [{
@@ -227,23 +224,12 @@ const toolbarButtons = [{
227
224
  // Window Level + Presets
228
225
  {
229
226
  id: 'WindowLevel',
230
- uiType: 'ohif.splitButton',
227
+ uiType: 'ohif.radioGroup',
231
228
  props: {
232
- groupId: 'WindowLevel',
233
- primary: src.ToolbarService.createButton({
234
- id: 'WindowLevel',
235
- icon: 'tool-window-level',
236
- label: 'Window Level',
237
- tooltip: 'Window Level',
238
- commands: setToolActiveToolbar,
239
- evaluate: 'evaluate.cornerstoneTool'
240
- }),
241
- secondary: {
242
- icon: 'chevron-down',
243
- tooltip: 'W/L Presets'
244
- },
245
- renderer: ui_src/* WindowLevelMenuItem */.d4,
246
- items: [_createWwwcPreset(1, 'Soft tissue', '400 / 40'), _createWwwcPreset(2, 'Lung', '1500 / -600'), _createWwwcPreset(3, 'Liver', '150 / 90'), _createWwwcPreset(4, 'Bone', '2500 / 480'), _createWwwcPreset(5, 'Brain', '80 / 40')]
229
+ icon: 'tool-window-level',
230
+ label: 'Window Level',
231
+ commands: setToolActiveToolbar,
232
+ evaluate: 'evaluate.cornerstoneTool'
247
233
  }
248
234
  },
249
235
  // Crosshairs Button
@@ -278,27 +264,6 @@ const toolbarButtons = [{
278
264
  commands: setToolActiveToolbar,
279
265
  evaluate: 'evaluate.cornerstoneTool'
280
266
  }
281
- },
282
- // Fusion PT Colormap Button
283
- {
284
- id: 'fusionPTColormap',
285
- uiType: 'ohif.splitButton',
286
- props: {
287
- groupId: 'fusionPTColormap',
288
- primary: src.ToolbarService.createButton({
289
- id: 'fusionPTColormap',
290
- icon: 'tool-fusion-color',
291
- label: 'Fusion PT Colormap',
292
- tooltip: 'Fusion PT Colormap',
293
- commands: [],
294
- evaluate: 'evaluate.action'
295
- }),
296
- secondary: {
297
- icon: 'chevron-down',
298
- tooltip: 'PET Image Colormap'
299
- },
300
- items: [_createColormap('HSV', 'hsv'), _createColormap('Hot Iron', 'hot_iron'), _createColormap('S PET', 's_pet'), _createColormap('Red Hot', 'red_hot'), _createColormap('Perfusion', 'perfusion'), _createColormap('Rainbow', 'rainbow_2'), _createColormap('SUV', 'suv'), _createColormap('GE 256', 'ge_256'), _createColormap('GE', 'ge'), _createColormap('Siemens', 'siemens')]
301
- }
302
267
  }];
303
268
  /* harmony default export */ const src_toolbarButtons = (toolbarButtons);
304
269
  ;// CONCATENATED MODULE: ../../../modes/tmtv/package.json
@@ -318,12 +283,12 @@ function setCrosshairsConfiguration(matches, toolNames, toolGroupService, displa
318
283
  SeriesInstanceUID
319
284
  } = matchDetails;
320
285
  const displaySets = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
321
- const toolConfig = toolGroupService.getToolConfiguration(toolGroupIds.Fusion, toolNames.Crosshairs);
286
+ const toolConfig = toolGroupService.getToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.Crosshairs);
322
287
  const crosshairsConfig = {
323
288
  ...toolConfig,
324
289
  filterActorUIDsToSetSlabThickness: [displaySets[0].displaySetInstanceUID]
325
290
  };
326
- toolGroupService.setToolConfiguration(toolGroupIds.Fusion, toolNames.Crosshairs, crosshairsConfig);
291
+ toolGroupService.setToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.Crosshairs, crosshairsConfig);
327
292
  }
328
293
  ;// CONCATENATED MODULE: ../../../modes/tmtv/src/utils/setFusionActiveVolume.js
329
294
 
@@ -339,8 +304,8 @@ function setFusionActiveVolume(matches, toolNames, toolGroupService, displaySetS
339
304
  if (!displaySets || displaySets.length === 0) {
340
305
  return;
341
306
  }
342
- const wlToolConfig = toolGroupService.getToolConfiguration(toolGroupIds.Fusion, toolNames.WindowLevel);
343
- const ellipticalToolConfig = toolGroupService.getToolConfiguration(toolGroupIds.Fusion, toolNames.EllipticalROI);
307
+ const wlToolConfig = toolGroupService.getToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.WindowLevel);
308
+ const ellipticalToolConfig = toolGroupService.getToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.EllipticalROI);
344
309
 
345
310
  // Todo: this should not take into account the loader id
346
311
  const volumeId = `cornerstoneStreamingImageVolume:${displaySets[0].displaySetInstanceUID}`;
@@ -352,8 +317,8 @@ function setFusionActiveVolume(matches, toolNames, toolGroupService, displaySetS
352
317
  ...ellipticalToolConfig,
353
318
  volumeId
354
319
  };
355
- toolGroupService.setToolConfiguration(toolGroupIds.Fusion, toolNames.WindowLevel, windowLevelConfig);
356
- toolGroupService.setToolConfiguration(toolGroupIds.Fusion, toolNames.EllipticalROI, ellipticalROIConfig);
320
+ toolGroupService.setToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.WindowLevel, windowLevelConfig);
321
+ toolGroupService.setToolConfiguration(initToolGroups_toolGroupIds.Fusion, toolNames.EllipticalROI, ellipticalROIConfig);
357
322
  }
358
323
  // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
359
324
  var i18next = __webpack_require__(92344);
@@ -434,7 +399,7 @@ function modeFactory({
434
399
  });
435
400
  unsubscriptions.push(unsubscribe);
436
401
  toolbarService.addButtons(src_toolbarButtons);
437
- toolbarService.createButtonSection('primary', ['MeasurementTools', 'Zoom', 'WindowLevel', 'Crosshairs', 'Pan', 'SyncToggle', 'RectangleROIStartEndThreshold', 'fusionPTColormap']);
402
+ toolbarService.createButtonSection('primary', ['MeasurementTools', 'Zoom', 'WindowLevel', 'Crosshairs', 'Pan', 'SyncToggle', 'RectangleROIStartEndThreshold']);
438
403
 
439
404
  // For the hanging protocol we need to decide on the window level
440
405
  // based on whether the SUV is corrected or not, hence we can't hard
@@ -11,12 +11,11 @@ __webpack_require__.r(__webpack_exports__);
11
11
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41766);
12
12
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11374);
13
13
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
14
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(78198);
15
- /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58046);
16
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(80619);
17
- /* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20767);
18
- /* harmony import */ var _getContextModule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4573);
19
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(50719);
14
+ /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3962);
15
+ /* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20767);
16
+ /* harmony import */ var _getContextModule__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4573);
17
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50719);
18
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(80619);
20
19
  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); }
21
20
 
22
21
 
@@ -25,30 +24,30 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
25
24
 
26
25
 
27
26
 
28
-
29
- const {
30
- formatDate
31
- } = _ohif_core__WEBPACK_IMPORTED_MODULE_2__.utils;
32
27
  function TrackedCornerstoneViewport(props) {
33
28
  const {
34
29
  displaySets,
35
30
  viewportId,
36
- viewportLabel,
37
31
  servicesManager,
38
32
  extensionManager
39
33
  } = props;
40
- const {
41
- t
42
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__/* .useTranslation */ .Bd)('Common');
43
34
  const {
44
35
  measurementService,
45
36
  cornerstoneViewportService,
46
- viewportGridService
37
+ viewportGridService,
38
+ viewportActionCornersService
47
39
  } = servicesManager.services;
48
40
 
49
41
  // Todo: handling more than one displaySet on the same viewport
50
42
  const displaySet = displaySets[0];
51
- const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,_getContextModule__WEBPACK_IMPORTED_MODULE_6__/* .useTrackedMeasurements */ .B)();
43
+ const {
44
+ t
45
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_6__/* .useTranslation */ .Bd)('Common');
46
+ const [viewportGrid] = (0,_ohif_ui__WEBPACK_IMPORTED_MODULE_2__/* .useViewportGrid */ .ih)();
47
+ const {
48
+ activeViewportId
49
+ } = viewportGrid;
50
+ const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,_getContextModule__WEBPACK_IMPORTED_MODULE_4__/* .useTrackedMeasurements */ .B)();
52
51
  const [isTracked, setIsTracked] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
53
52
  const [trackedMeasurementUID, setTrackedMeasurementUID] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
54
53
  const [viewportElem, setViewportElem] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
@@ -56,24 +55,11 @@ function TrackedCornerstoneViewport(props) {
56
55
  trackedSeries
57
56
  } = trackedMeasurements.context;
58
57
  const {
59
- SeriesDate,
60
- SeriesDescription,
61
- SeriesInstanceUID,
62
- SeriesNumber
58
+ SeriesInstanceUID
63
59
  } = displaySet;
64
- const {
65
- PatientID,
66
- PatientName,
67
- PatientSex,
68
- PatientAge,
69
- SliceThickness,
70
- SpacingBetweenSlices,
71
- StudyDate,
72
- ManufacturerModelName
73
- } = displaySet.images[0];
74
60
  const updateIsTracked = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
75
61
  const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
76
- if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_7__.BaseVolumeViewport) {
62
+ if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_5__.BaseVolumeViewport) {
77
63
  // A current image id will only exist for volume viewports that can have measurements tracked.
78
64
  // Typically these are those volume viewports for the series of acquisition.
79
65
  const currentImageId = viewport?.getCurrentImageId();
@@ -91,12 +77,12 @@ function TrackedCornerstoneViewport(props) {
91
77
  const onElementEnabled = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(evt => {
92
78
  if (evt.detail.element !== viewportElem) {
93
79
  // The VOLUME_VIEWPORT_NEW_VOLUME event allows updateIsTracked to reliably fetch the image id for a volume viewport.
94
- evt.detail.element?.addEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_7__.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME, updateIsTracked);
80
+ evt.detail.element?.addEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_5__.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME, updateIsTracked);
95
81
  setViewportElem(evt.detail.element);
96
82
  }
97
83
  }, [updateIsTracked, viewportElem]);
98
84
  const onElementDisabled = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
99
- viewportElem?.removeEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_7__.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME, updateIsTracked);
85
+ viewportElem?.removeEventListener(_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_5__.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME, updateIsTracked);
100
86
  }, [updateIsTracked, viewportElem]);
101
87
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(updateIsTracked, [updateIsTracked]);
102
88
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
@@ -114,7 +100,7 @@ function TrackedCornerstoneViewport(props) {
114
100
  }, [updateIsTracked, viewportId]);
115
101
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
116
102
  if (isTracked) {
117
- _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__.annotation.config.style.setViewportToolStyles(viewportId, {
103
+ _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_3__.annotation.config.style.setViewportToolStyles(viewportId, {
118
104
  global: {
119
105
  lineDash: ''
120
106
  }
@@ -122,14 +108,14 @@ function TrackedCornerstoneViewport(props) {
122
108
  cornerstoneViewportService.getRenderingEngine().renderViewport(viewportId);
123
109
  return;
124
110
  }
125
- _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__.annotation.config.style.setViewportToolStyles(viewportId, {
111
+ _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_3__.annotation.config.style.setViewportToolStyles(viewportId, {
126
112
  global: {
127
113
  lineDash: '4,4'
128
114
  }
129
115
  });
130
116
  cornerstoneViewportService.getRenderingEngine().renderViewport(viewportId);
131
117
  return () => {
132
- _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__.annotation.config.style.setViewportToolStyles(viewportId, {});
118
+ _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_3__.annotation.config.style.setViewportToolStyles(viewportId, {});
133
119
  };
134
120
  }, [isTracked]);
135
121
 
@@ -178,14 +164,31 @@ function TrackedCornerstoneViewport(props) {
178
164
  });
179
165
  };
180
166
  }, [measurementService, sendTrackedMeasurementsEvent, viewportId, viewportGridService]);
181
- function switchMeasurement(direction) {
167
+ const switchMeasurement = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(direction => {
182
168
  const newTrackedMeasurementUID = _getNextMeasurementUID(direction, servicesManager, trackedMeasurementUID, trackedMeasurements);
183
169
  if (!newTrackedMeasurementUID) {
184
170
  return;
185
171
  }
186
172
  setTrackedMeasurementUID(newTrackedMeasurementUID);
187
173
  measurementService.jumpToMeasurement(viewportId, newTrackedMeasurementUID);
188
- }
174
+ }, [measurementService, servicesManager, trackedMeasurementUID, trackedMeasurements, viewportId]);
175
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
176
+ const statusComponent = _getStatusComponent(isTracked, t);
177
+ const arrowsComponent = _getArrowsComponent(isTracked, switchMeasurement, viewportId === activeViewportId);
178
+ viewportActionCornersService.setComponents([{
179
+ viewportId,
180
+ id: 'viewportStatusComponent',
181
+ component: statusComponent,
182
+ indexPriority: -100,
183
+ location: viewportActionCornersService.LOCATIONS.topLeft
184
+ }, {
185
+ viewportId,
186
+ id: 'viewportActionArrowsComponent',
187
+ component: arrowsComponent,
188
+ indexPriority: 0,
189
+ location: viewportActionCornersService.LOCATIONS.topRight
190
+ }]);
191
+ }, [activeViewportId, isTracked, switchMeasurement, viewportActionCornersService, viewportId]);
189
192
  const getCornerstoneViewport = () => {
190
193
  const {
191
194
  component: Component
@@ -195,32 +198,7 @@ function TrackedCornerstoneViewport(props) {
195
198
  onElementDisabled: onElementDisabled
196
199
  }));
197
200
  };
198
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_3__/* .ViewportActionBar */ .cS, {
199
- onDoubleClick: evt => {
200
- evt.stopPropagation();
201
- evt.preventDefault();
202
- },
203
- useAltStyling: isTracked,
204
- onArrowsClick: direction => switchMeasurement(direction),
205
- getStatusComponent: () => _getStatusComponent(isTracked),
206
- studyData: {
207
- label: viewportLabel,
208
- studyDate: formatDate(SeriesDate) || formatDate(StudyDate) || t('NoStudyDate'),
209
- currentSeries: SeriesNumber,
210
- // TODO - switch entire currentSeries to be UID based or actual position based
211
- seriesDescription: SeriesDescription,
212
- patientInformation: {
213
- patientName: PatientName ? _ohif_core__WEBPACK_IMPORTED_MODULE_2__/* ["default"].utils */ .Ay.utils.formatPN(PatientName) : '',
214
- patientSex: PatientSex || '',
215
- patientAge: PatientAge || '',
216
- MRN: PatientID || '',
217
- thickness: SliceThickness ? `${parseFloat(SliceThickness).toFixed(2)}` : '',
218
- thicknessUnits: t('mm'),
219
- spacing: SpacingBetweenSlices !== undefined ? `${parseFloat(SpacingBetweenSlices).toFixed(2)}${t('mm')}` : '',
220
- scanner: ManufacturerModelName || ''
221
- }
222
- }
223
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
201
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
224
202
  className: "relative flex h-full w-full flex-row overflow-hidden"
225
203
  }, getCornerstoneViewport()));
226
204
  }
@@ -268,35 +246,38 @@ function _getNextMeasurementUID(direction, servicesManager, trackedMeasurementId
268
246
  // Not tracking a measurement, or previous measurement now deleted, revert to 0.
269
247
  measurementIndex = 0;
270
248
  } else {
271
- if (direction === 'left') {
272
- measurementIndex--;
273
- if (measurementIndex < 0) {
274
- measurementIndex = measurementCount - 1;
275
- }
276
- } else if (direction === 'right') {
277
- measurementIndex++;
278
- if (measurementIndex === measurementCount) {
279
- measurementIndex = 0;
280
- }
249
+ measurementIndex += direction;
250
+ if (measurementIndex < 0) {
251
+ measurementIndex = measurementCount - 1;
252
+ } else if (measurementIndex === measurementCount) {
253
+ measurementIndex = 0;
281
254
  }
282
255
  }
283
256
  const newTrackedMeasurementId = uids[measurementIndex];
284
257
  return newTrackedMeasurementId;
285
258
  }
286
- function _getStatusComponent(isTracked) {
287
- const {
288
- t
289
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__/* .useTranslation */ .Bd)('TrackedCornerstoneViewport');
290
- const trackedIcon = isTracked ? 'status-tracked' : 'status-untracked';
259
+ const _getArrowsComponent = (isTracked, switchMeasurement, isActiveViewport) => {
260
+ if (!isTracked) {
261
+ return null;
262
+ }
263
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_2__/* .ViewportActionArrows */ .$I, {
264
+ onArrowsClick: direction => switchMeasurement(direction),
265
+ className: isActiveViewport ? 'visible' : 'invisible group-hover:visible'
266
+ });
267
+ };
268
+ function _getStatusComponent(isTracked, t) {
269
+ if (!isTracked) {
270
+ return null;
271
+ }
291
272
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
292
273
  className: "relative"
293
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_3__/* .Tooltip */ .m_, {
274
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_2__/* .Tooltip */ .m_, {
294
275
  position: "bottom-left",
295
276
  content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
296
277
  className: "flex py-2"
297
278
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
298
279
  className: "flex pt-1"
299
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_3__/* .Icon */ .In, {
280
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_2__/* .Icon */ .In, {
300
281
  name: "info-link",
301
282
  className: "text-primary-main w-4"
302
283
  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
@@ -304,8 +285,8 @@ function _getStatusComponent(isTracked) {
304
285
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", {
305
286
  className: "text-common-light text-base"
306
287
  }, isTracked ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, t('Series is tracked and can be viewed in the measurement panel')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, t('Measurements for untracked series will not be shown in the measurements panel')))))
307
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_3__/* .Icon */ .In, {
308
- name: trackedIcon,
288
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_2__/* .Icon */ .In, {
289
+ name: 'viewport-status-tracked',
309
290
  className: "text-aqua-pale"
310
291
  })));
311
292
  }
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[270],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[889],{
3
3
 
4
4
  /***/ 62889:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -20,10 +20,10 @@ const id = package_namespaceObject.UU;
20
20
 
21
21
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
22
22
  var react = __webpack_require__(41766);
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 497 modules
24
- var src = __webpack_require__(58046);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
26
- var core_src = __webpack_require__(78198);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 519 modules
24
+ var src = __webpack_require__(3962);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
26
+ var core_src = __webpack_require__(85073);
27
27
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
28
28
  var es = __webpack_require__(80619);
29
29
  // EXTERNAL MODULE: ../../../node_modules/mathjs/lib/esm/index.js + 996 modules
@@ -31,8 +31,8 @@ __webpack_require__.d(utils_namespaceObject, {
31
31
 
32
32
  // EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
33
33
  var dicomweb_client_es = __webpack_require__(36922);
34
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
35
- var src = __webpack_require__(78198);
34
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
35
+ var src = __webpack_require__(85073);
36
36
  // EXTERNAL MODULE: ../../core/src/utils/sortStudy.ts
37
37
  var sortStudy = __webpack_require__(45476);
38
38
  ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/qido.js
@@ -2484,8 +2484,8 @@ var react = __webpack_require__(41766);
2484
2484
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
2485
2485
  var prop_types = __webpack_require__(11374);
2486
2486
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
2487
- // EXTERNAL MODULE: ../../ui/src/index.js + 497 modules
2488
- var ui_src = __webpack_require__(58046);
2487
+ // EXTERNAL MODULE: ../../ui/src/index.js + 519 modules
2488
+ var ui_src = __webpack_require__(3962);
2489
2489
  // EXTERNAL MODULE: ./state/index.js + 1 modules
2490
2490
  var state = __webpack_require__(15575);
2491
2491
  // EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
@@ -2494,8 +2494,8 @@ var dist = __webpack_require__(37396);
2494
2494
  var es = __webpack_require__(80619);
2495
2495
  // EXTERNAL MODULE: ../node_modules/react-router/dist/index.js
2496
2496
  var react_router_dist = __webpack_require__(10971);
2497
- // EXTERNAL MODULE: ../../i18n/src/index.js + 148 modules
2498
- var i18n_src = __webpack_require__(69536);
2497
+ // EXTERNAL MODULE: ../../i18n/src/index.js + 150 modules
2498
+ var i18n_src = __webpack_require__(912);
2499
2499
  // EXTERNAL MODULE: ../../../node_modules/classnames/index.js
2500
2500
  var classnames = __webpack_require__(61466);
2501
2501
  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
@@ -2604,8 +2604,8 @@ function ViewerHeader({
2604
2604
  hotkeyDefinitions,
2605
2605
  hotkeyDefaults
2606
2606
  } = hotkeysManager;
2607
- const versionNumber = "3.8.0-beta.66";
2608
- const commitHash = "158a1816703e0ad66cae08cb9bd1ffb93bbd8d43";
2607
+ const versionNumber = "3.8.0-beta.67";
2608
+ const commitHash = "b7f90e3951845396f99b69f0a74fc56b2ffeada1";
2609
2609
  const menuOptions = [{
2610
2610
  title: t('Header:About'),
2611
2611
  icon: 'info',
@@ -2662,7 +2662,9 @@ function ViewerHeader({
2662
2662
  menuOptions: menuOptions,
2663
2663
  isReturnEnabled: !!appConfig.showStudyList,
2664
2664
  onClickReturnButton: onClickReturnButton,
2665
- WhiteLabeling: appConfig.whiteLabeling
2665
+ WhiteLabeling: appConfig.whiteLabeling,
2666
+ showPatientInfo: appConfig.showPatientInfo,
2667
+ servicesManager: servicesManager
2666
2668
  }, /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.tH, {
2667
2669
  context: "Primary Toolbar"
2668
2670
  }, /*#__PURE__*/react.createElement("div", {
@@ -13,8 +13,8 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  "default": () => (/* binding */ microscopy_src)
14
14
  });
15
15
 
16
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
17
- var src = __webpack_require__(78198);
16
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
17
+ var src = __webpack_require__(85073);
18
18
  // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
19
19
  var i18next = __webpack_require__(92344);
20
20
  ;// CONCATENATED MODULE: ../../../modes/microscopy/package.json
@@ -21,8 +21,8 @@ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-
21
21
  const id = package_namespaceObject.UU;
22
22
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-pdf`;
23
23
 
24
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
25
- var src = __webpack_require__(78198);
24
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
25
+ var src = __webpack_require__(85073);
26
26
  ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/getSopClassHandlerModule.js
27
27
 
28
28
 
@@ -21,8 +21,8 @@ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-
21
21
  const id = package_namespaceObject.UU;
22
22
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-video`;
23
23
 
24
- // EXTERNAL MODULE: ../../core/src/index.ts + 67 modules
25
- var src = __webpack_require__(78198);
24
+ // EXTERNAL MODULE: ../../core/src/index.ts + 68 modules
25
+ var src = __webpack_require__(85073);
26
26
  ;// CONCATENATED MODULE: ../../../extensions/dicom-video/src/getSopClassHandlerModule.js
27
27
 
28
28