@ohif/app 3.7.0-beta.88 → 3.7.0-beta.89
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.
- package/dist/{342.bundle.bbd694ebb39e249c17fb.js → 342.bundle.ee39d39568324dade9e8.js} +4 -4
- package/dist/{348.bundle.4064fd63611ef2ad7da9.js → 370.bundle.0fd9e32c33d620c25c0f.js} +47 -46
- package/dist/{967.bundle.536ce534cd768626602b.js → 877.bundle.835fa27a8b3a2a9359d3.js} +144 -155
- package/dist/{128.bundle.54e4f60b7c2402baa852.js → 99.bundle.e5cdaa188d44d58dbd16.js} +46 -47
- package/dist/{app.bundle.8cec805607b1723ace9e.js → app.bundle.ebe908553f4d102750ff.js} +93 -46
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +17 -17
- /package/dist/{12.bundle.ee9edd90752119b5aa50.js → 12.bundle.00e9504be71ad6df95fe.js} +0 -0
- /package/dist/{19.bundle.31ffc81d2f96a605bf44.js → 19.bundle.ac29a85034c388d491e5.js} +0 -0
- /package/dist/{221.bundle.7315b2accee2e8ef1173.js → 221.bundle.4345e4b6760ad26609ab.js} +0 -0
- /package/dist/{236.bundle.259f024b8471405c4763.js → 236.bundle.ae586686f216bb35c71c.js} +0 -0
- /package/dist/{281.bundle.d73dc63fc7c2a7a5a02d.js → 281.bundle.8230dfc98567e1f931eb.js} +0 -0
- /package/dist/{359.bundle.111dec9dab4bea81631b.js → 359.bundle.070ca05beb969580f284.js} +0 -0
- /package/dist/{410.bundle.2494129ec5627c0f5692.js → 410.bundle.b6969e97e86fe583dbae.js} +0 -0
- /package/dist/{506.bundle.2b33565f930da54ff584.js → 506.bundle.1ec326a29a83b749c7bf.js} +0 -0
- /package/dist/{613.bundle.3763f97feb0f9c8da315.js → 613.bundle.adf71ee20cedc7e40f9c.js} +0 -0
- /package/dist/{663.bundle.9c60dae218ab6565bc9c.js → 663.bundle.0a8d83e79a119b1d9e0e.js} +0 -0
- /package/dist/{687.bundle.7087fed4c4fb7e0024bf.js → 687.bundle.dfe3e1758a5159e90e4c.js} +0 -0
- /package/dist/{782.bundle.3fd7eed9e607265f3fab.js → 782.bundle.a9956a661eafe2530e90.js} +0 -0
- /package/dist/{814.bundle.9268e58c124ae8617045.js → 814.bundle.2c85fbeb75306553fc7b.js} +0 -0
- /package/dist/{967.css → 877.css} +0 -0
|
@@ -2166,8 +2166,8 @@ function ViewerHeader(_ref) {
|
|
|
2166
2166
|
hotkeyDefinitions,
|
|
2167
2167
|
hotkeyDefaults
|
|
2168
2168
|
} = hotkeysManager;
|
|
2169
|
-
const versionNumber = "3.7.0-beta.
|
|
2170
|
-
const commitHash = "
|
|
2169
|
+
const versionNumber = "3.7.0-beta.89";
|
|
2170
|
+
const commitHash = "e36a6043315e900eeb6ce183772c7f852f478e96";
|
|
2171
2171
|
const menuOptions = [{
|
|
2172
2172
|
title: t('Header:About'),
|
|
2173
2173
|
icon: 'info',
|
|
@@ -3806,7 +3806,7 @@ function getDisplaySetMessages(instances, isReconstructable) {
|
|
|
3806
3806
|
}
|
|
3807
3807
|
const firstInstance = instances[0];
|
|
3808
3808
|
// Due to current requirements, LOCALIZER series doesn't have any messages
|
|
3809
|
-
if (firstInstance
|
|
3809
|
+
if (firstInstance?.ImageType?.includes('LOCALIZER')) {
|
|
3810
3810
|
return messages;
|
|
3811
3811
|
}
|
|
3812
3812
|
const Modality = firstInstance.Modality;
|
|
@@ -5529,7 +5529,7 @@ const commandsModule = _ref => {
|
|
|
5529
5529
|
stageId
|
|
5530
5530
|
} = hpCommand.commandOptions;
|
|
5531
5531
|
const isActive = (!protocolId || protocolId === protocol.id) && (stageIndex === undefined || stageIndex === toggleStageIndex) && (!stageId || stageId === stage.id);
|
|
5532
|
-
toolbarService.
|
|
5532
|
+
toolbarService.setToggled(button.id, isActive);
|
|
5533
5533
|
};
|
|
5534
5534
|
Object.values(toolbarService.getButtons()).forEach(enableListener);
|
|
5535
5535
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[348],{
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[370],{
|
|
3
2
|
|
|
4
|
-
/***/
|
|
3
|
+
/***/ 71522:
|
|
5
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
5
|
|
|
6
|
+
"use strict";
|
|
7
7
|
// ESM COMPAT FLAG
|
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
|
9
9
|
|
|
@@ -18,36 +18,20 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
18
18
|
var src = __webpack_require__(67869);
|
|
19
19
|
// EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
|
|
20
20
|
var ui_src = __webpack_require__(71783);
|
|
21
|
-
|
|
21
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
|
|
22
|
+
var esm = __webpack_require__(3743);
|
|
23
|
+
;// CONCATENATED MODULE: ../../../modes/longitudinal/src/toolbarButtons.ts
|
|
22
24
|
// TODO: torn, can either bake this here; or have to create a whole new button type
|
|
23
25
|
// Only ways that you can pass in a custom React component for render :l
|
|
24
26
|
|
|
25
27
|
|
|
28
|
+
|
|
26
29
|
const {
|
|
27
30
|
windowLevelPresets
|
|
28
31
|
} = src.defaults;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* @param {*} id
|
|
33
|
-
* @param {*} icon
|
|
34
|
-
* @param {*} label
|
|
35
|
-
*/
|
|
36
|
-
function _createButton(type, id, icon, label, commands, tooltip, uiType, isActive) {
|
|
37
|
-
return {
|
|
38
|
-
id,
|
|
39
|
-
icon,
|
|
40
|
-
label,
|
|
41
|
-
type,
|
|
42
|
-
commands,
|
|
43
|
-
tooltip,
|
|
44
|
-
uiType,
|
|
45
|
-
isActive
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const _createActionButton = _createButton.bind(null, 'action');
|
|
49
|
-
const _createToggleButton = _createButton.bind(null, 'toggle');
|
|
50
|
-
const _createToolButton = _createButton.bind(null, 'tool');
|
|
32
|
+
const _createActionButton = src/* ToolbarService */.Ok._createButton.bind(null, 'action');
|
|
33
|
+
const _createToggleButton = src/* ToolbarService */.Ok._createButton.bind(null, 'toggle');
|
|
34
|
+
const _createToolButton = src/* ToolbarService */.Ok._createButton.bind(null, 'tool');
|
|
51
35
|
|
|
52
36
|
/**
|
|
53
37
|
*
|
|
@@ -89,6 +73,16 @@ function _createSetToolActiveCommands(toolName) {
|
|
|
89
73
|
}));
|
|
90
74
|
return temp;
|
|
91
75
|
}
|
|
76
|
+
const ReferenceLinesCommands = [{
|
|
77
|
+
commandName: 'setSourceViewportForReferenceLinesTool',
|
|
78
|
+
context: 'CORNERSTONE'
|
|
79
|
+
}, {
|
|
80
|
+
commandName: 'setToolActive',
|
|
81
|
+
commandOptions: {
|
|
82
|
+
toolName: 'ReferenceLines'
|
|
83
|
+
},
|
|
84
|
+
context: 'CORNERSTONE'
|
|
85
|
+
}];
|
|
92
86
|
const toolbarButtons = [
|
|
93
87
|
// Measurement
|
|
94
88
|
{
|
|
@@ -319,32 +313,32 @@ const toolbarButtons = [
|
|
|
319
313
|
commandOptions: {},
|
|
320
314
|
context: 'CORNERSTONE'
|
|
321
315
|
}], 'Flip Horizontal'), _createToggleButton('StackImageSync', 'link', 'Stack Image Sync', [{
|
|
322
|
-
commandName: 'toggleStackImageSync'
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
316
|
+
commandName: 'toggleStackImageSync'
|
|
317
|
+
}], 'Enable position synchronization on stack viewports', {
|
|
318
|
+
listeners: {
|
|
319
|
+
[esm.EVENTS.STACK_VIEWPORT_NEW_STACK]: {
|
|
320
|
+
commandName: 'toggleStackImageSync',
|
|
321
|
+
commandOptions: {
|
|
322
|
+
toggledState: true
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}), _createToggleButton('ReferenceLines', 'tool-referenceLines',
|
|
326
327
|
// change this with the new icon
|
|
327
|
-
'Reference Lines',
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
commandOptions: {},
|
|
334
|
-
context: 'CORNERSTONE'
|
|
335
|
-
}, {
|
|
336
|
-
commandName: 'setToolActive',
|
|
337
|
-
commandOptions: {
|
|
338
|
-
toolName: 'ReferenceLines'
|
|
339
|
-
},
|
|
340
|
-
context: 'CORNERSTONE'
|
|
341
|
-
}]), _createToggleButton('ImageOverlayViewer', 'toggle-dicom-overlay', 'Image Overlay', [{
|
|
328
|
+
'Reference Lines', ReferenceLinesCommands, 'Show Reference Lines', {
|
|
329
|
+
listeners: {
|
|
330
|
+
[esm.EVENTS.STACK_VIEWPORT_NEW_STACK]: ReferenceLinesCommands,
|
|
331
|
+
[esm.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED]: ReferenceLinesCommands
|
|
332
|
+
}
|
|
333
|
+
}), _createToggleButton('ImageOverlayViewer', 'toggle-dicom-overlay', 'Image Overlay', [{
|
|
342
334
|
commandName: 'setToolActive',
|
|
343
335
|
commandOptions: {
|
|
344
336
|
toolName: 'ImageOverlayViewer'
|
|
345
337
|
},
|
|
346
338
|
context: 'CORNERSTONE'
|
|
347
|
-
}], 'Image Overlay',
|
|
339
|
+
}], 'Image Overlay', {
|
|
340
|
+
isActive: true
|
|
341
|
+
}), _createToolButton('StackScroll', 'tool-stack-scroll', 'Stack Scroll', [{
|
|
348
342
|
commandName: 'setToolActive',
|
|
349
343
|
commandOptions: {
|
|
350
344
|
toolName: 'StackScroll'
|
|
@@ -902,6 +896,13 @@ const mode = {
|
|
|
902
896
|
/* harmony default export */ const longitudinal_src = (mode);
|
|
903
897
|
|
|
904
898
|
|
|
899
|
+
/***/ }),
|
|
900
|
+
|
|
901
|
+
/***/ 78753:
|
|
902
|
+
/***/ (() => {
|
|
903
|
+
|
|
904
|
+
/* (ignored) */
|
|
905
|
+
|
|
905
906
|
/***/ })
|
|
906
907
|
|
|
907
908
|
}]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[877],{
|
|
2
2
|
|
|
3
|
-
/***/
|
|
3
|
+
/***/ 94848:
|
|
4
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
@@ -485,6 +485,8 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
|
|
|
485
485
|
let pixelData = null;
|
|
486
486
|
if (overlay.pixelData.Value) {
|
|
487
487
|
pixelData = overlay.pixelData.Value;
|
|
488
|
+
} else if (overlay.pixelData instanceof Array) {
|
|
489
|
+
pixelData = overlay.pixelData[0];
|
|
488
490
|
} else if (overlay.pixelData.retrieveBulkData) {
|
|
489
491
|
pixelData = await overlay.pixelData.retrieveBulkData();
|
|
490
492
|
}
|
|
@@ -3468,6 +3470,7 @@ async function init(_ref) {
|
|
|
3468
3470
|
cornerstoneViewportService,
|
|
3469
3471
|
hangingProtocolService,
|
|
3470
3472
|
toolGroupService,
|
|
3473
|
+
toolbarService,
|
|
3471
3474
|
viewportGridService,
|
|
3472
3475
|
stateSyncService
|
|
3473
3476
|
} = servicesManager.services;
|
|
@@ -3558,11 +3561,51 @@ async function init(_ref) {
|
|
|
3558
3561
|
customizationService,
|
|
3559
3562
|
commandsManager
|
|
3560
3563
|
});
|
|
3561
|
-
|
|
3564
|
+
|
|
3565
|
+
/**
|
|
3566
|
+
* When a viewport gets a new display set, this call will go through all the
|
|
3567
|
+
* active tools in the toolbar, and call any commands registered in the
|
|
3568
|
+
* toolbar service with a callback to re-enable on displaying the viewport.
|
|
3569
|
+
*/
|
|
3570
|
+
const toolbarEventListener = evt => {
|
|
3562
3571
|
const {
|
|
3563
3572
|
element
|
|
3564
3573
|
} = evt.detail;
|
|
3565
|
-
|
|
3574
|
+
const activeTools = toolbarService.getActiveTools();
|
|
3575
|
+
activeTools.forEach(tool => {
|
|
3576
|
+
const toolData = toolbarService.getNestedButton(tool);
|
|
3577
|
+
const commands = toolData?.listeners?.[evt.type];
|
|
3578
|
+
commandsManager.run(commands, {
|
|
3579
|
+
element,
|
|
3580
|
+
evt
|
|
3581
|
+
});
|
|
3582
|
+
});
|
|
3583
|
+
};
|
|
3584
|
+
|
|
3585
|
+
/** Listens for active viewport events and fires the toolbar listeners */
|
|
3586
|
+
const activeViewportEventListener = evt => {
|
|
3587
|
+
const {
|
|
3588
|
+
viewportId
|
|
3589
|
+
} = evt;
|
|
3590
|
+
const toolGroup = toolGroupService.getToolGroupForViewport(viewportId);
|
|
3591
|
+
const activeTools = toolbarService.getActiveTools();
|
|
3592
|
+
activeTools.forEach(tool => {
|
|
3593
|
+
if (!toolGroup?._toolInstances?.[tool]) {
|
|
3594
|
+
return;
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3597
|
+
// check if tool is active on the new viewport
|
|
3598
|
+
const toolEnabled = toolGroup._toolInstances[tool].mode === dist_esm.Enums.ToolModes.Enabled;
|
|
3599
|
+
if (!toolEnabled) {
|
|
3600
|
+
return;
|
|
3601
|
+
}
|
|
3602
|
+
const button = toolbarService.getNestedButton(tool);
|
|
3603
|
+
const commands = button?.listeners?.[evt.type];
|
|
3604
|
+
commandsManager.run(commands, {
|
|
3605
|
+
viewportId,
|
|
3606
|
+
evt
|
|
3607
|
+
});
|
|
3608
|
+
});
|
|
3566
3609
|
};
|
|
3567
3610
|
const resetCrosshairs = evt => {
|
|
3568
3611
|
const {
|
|
@@ -3585,12 +3628,18 @@ async function init(_ref) {
|
|
|
3585
3628
|
toolGroup.setToolEnabled('Crosshairs');
|
|
3586
3629
|
}
|
|
3587
3630
|
};
|
|
3631
|
+
esm.eventTarget.addEventListener(esm.EVENTS.STACK_VIEWPORT_NEW_STACK, evt => {
|
|
3632
|
+
const {
|
|
3633
|
+
element
|
|
3634
|
+
} = evt.detail;
|
|
3635
|
+
dist_esm.utilities.stackContextPrefetch.enable(element);
|
|
3636
|
+
});
|
|
3588
3637
|
function elementEnabledHandler(evt) {
|
|
3589
3638
|
const {
|
|
3590
3639
|
element
|
|
3591
3640
|
} = evt.detail;
|
|
3592
3641
|
element.addEventListener(esm.EVENTS.CAMERA_RESET, resetCrosshairs);
|
|
3593
|
-
esm.eventTarget.addEventListener(esm.EVENTS.STACK_VIEWPORT_NEW_STACK,
|
|
3642
|
+
esm.eventTarget.addEventListener(esm.EVENTS.STACK_VIEWPORT_NEW_STACK, toolbarEventListener);
|
|
3594
3643
|
}
|
|
3595
3644
|
function elementDisabledHandler(evt) {
|
|
3596
3645
|
const {
|
|
@@ -3607,29 +3656,7 @@ async function init(_ref) {
|
|
|
3607
3656
|
|
|
3608
3657
|
esm.eventTarget.addEventListener(esm.EVENTS.ELEMENT_ENABLED, elementEnabledHandler.bind(null));
|
|
3609
3658
|
esm.eventTarget.addEventListener(esm.EVENTS.ELEMENT_DISABLED, elementDisabledHandler.bind(null));
|
|
3610
|
-
viewportGridService.subscribe(viewportGridService.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED,
|
|
3611
|
-
let {
|
|
3612
|
-
viewportId
|
|
3613
|
-
} = _ref2;
|
|
3614
|
-
const toolGroup = toolGroupService.getToolGroupForViewport(viewportId);
|
|
3615
|
-
if (!toolGroup || !toolGroup._toolInstances?.['ReferenceLines']) {
|
|
3616
|
-
return;
|
|
3617
|
-
}
|
|
3618
|
-
|
|
3619
|
-
// check if reference lines are active
|
|
3620
|
-
const referenceLinesEnabled = toolGroup._toolInstances['ReferenceLines'].mode === dist_esm.Enums.ToolModes.Enabled;
|
|
3621
|
-
if (!referenceLinesEnabled) {
|
|
3622
|
-
return;
|
|
3623
|
-
}
|
|
3624
|
-
toolGroup.setToolConfiguration(dist_esm.ReferenceLinesTool.toolName, {
|
|
3625
|
-
sourceViewportId: viewportId
|
|
3626
|
-
}, true // overwrite
|
|
3627
|
-
);
|
|
3628
|
-
|
|
3629
|
-
// make sure to set it to enabled again since we want to recalculate
|
|
3630
|
-
// the source-target lines
|
|
3631
|
-
toolGroup.setToolEnabled(dist_esm.ReferenceLinesTool.toolName);
|
|
3632
|
-
});
|
|
3659
|
+
viewportGridService.subscribe(viewportGridService.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED, activeViewportEventListener);
|
|
3633
3660
|
}
|
|
3634
3661
|
function CPUModal() {
|
|
3635
3662
|
return /*#__PURE__*/react.createElement("div", null, /*#__PURE__*/react.createElement("p", null, "Your computer does not have enough GPU power to support the default GPU rendering mode. OHIF has switched to CPU rendering mode. Please note that CPU rendering does not support all features such as Volume Rendering, Multiplanar Reconstruction, and Segmentation Overlays."));
|
|
@@ -4449,13 +4476,18 @@ const CornerstoneViewportDownloadForm = _ref => {
|
|
|
4449
4476
|
const imageId = viewport.getCurrentImageId();
|
|
4450
4477
|
const properties = viewport.getProperties();
|
|
4451
4478
|
downloadViewport.setStack([imageId]).then(() => {
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4479
|
+
try {
|
|
4480
|
+
downloadViewport.setProperties(properties);
|
|
4481
|
+
const newWidth = Math.min(width || image.width, MAX_TEXTURE_SIZE);
|
|
4482
|
+
const newHeight = Math.min(height || image.height, MAX_TEXTURE_SIZE);
|
|
4483
|
+
resolve({
|
|
4484
|
+
width: newWidth,
|
|
4485
|
+
height: newHeight
|
|
4486
|
+
});
|
|
4487
|
+
} catch (e) {
|
|
4488
|
+
// Happens on clicking the cancel button
|
|
4489
|
+
console.warn('Unable to set properties', e);
|
|
4490
|
+
}
|
|
4459
4491
|
});
|
|
4460
4492
|
} else if (downloadViewport instanceof esm.VolumeViewport) {
|
|
4461
4493
|
const actors = viewport.getActors();
|
|
@@ -4535,143 +4567,93 @@ CornerstoneViewportDownloadForm.propTypes = {
|
|
|
4535
4567
|
activeViewportId: (prop_types_default()).string.isRequired
|
|
4536
4568
|
};
|
|
4537
4569
|
/* harmony default export */ const utils_CornerstoneViewportDownloadForm = (CornerstoneViewportDownloadForm);
|
|
4538
|
-
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/stackSync/calculateViewportRegistrations.ts
|
|
4539
|
-
|
|
4540
|
-
function calculateViewportRegistrations(viewports) {
|
|
4541
|
-
const viewportPairs = _getViewportPairs(viewports);
|
|
4542
|
-
for (const [viewport, nextViewport] of viewportPairs) {
|
|
4543
|
-
// check if they are in the same Frame of Reference
|
|
4544
|
-
const renderingEngine1 = (0,esm.getRenderingEngine)(viewport.renderingEngineId);
|
|
4545
|
-
const renderingEngine2 = (0,esm.getRenderingEngine)(nextViewport.renderingEngineId);
|
|
4546
|
-
const csViewport1 = renderingEngine1.getViewport(viewport.viewportId);
|
|
4547
|
-
const csViewport2 = renderingEngine2.getViewport(nextViewport.viewportId);
|
|
4548
|
-
esm.utilities.calculateViewportsSpatialRegistration(csViewport1, csViewport2);
|
|
4549
|
-
}
|
|
4550
|
-
}
|
|
4551
|
-
const _getViewportPairs = viewports => {
|
|
4552
|
-
const viewportPairs = [];
|
|
4553
|
-
for (let i = 0; i < viewports.length; i++) {
|
|
4554
|
-
for (let j = i + 1; j < viewports.length; j++) {
|
|
4555
|
-
viewportPairs.push([viewports[i], viewports[j]]);
|
|
4556
|
-
}
|
|
4557
|
-
}
|
|
4558
|
-
return viewportPairs;
|
|
4559
|
-
};
|
|
4560
4570
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/stackSync/toggleStackImageSync.ts
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
// [ {
|
|
4564
|
-
// synchronizerId: string,
|
|
4565
|
-
// viewports: [ { viewportId: string, renderingEngineId: string, index: number } , ...]
|
|
4566
|
-
// ]}
|
|
4567
|
-
let STACK_IMAGE_SYNC_GROUPS_INFO = [];
|
|
4571
|
+
const STACK_SYNC_NAME = 'stackImageSync';
|
|
4568
4572
|
function toggleStackImageSync(_ref) {
|
|
4569
4573
|
let {
|
|
4570
4574
|
toggledState,
|
|
4571
4575
|
servicesManager,
|
|
4572
|
-
|
|
4576
|
+
viewports: providedViewports
|
|
4573
4577
|
} = _ref;
|
|
4578
|
+
if (!toggledState) {
|
|
4579
|
+
return disableSync(STACK_SYNC_NAME, servicesManager);
|
|
4580
|
+
}
|
|
4574
4581
|
const {
|
|
4575
4582
|
syncGroupService,
|
|
4576
4583
|
viewportGridService,
|
|
4577
4584
|
displaySetService,
|
|
4578
4585
|
cornerstoneViewportService
|
|
4579
4586
|
} = servicesManager.services;
|
|
4580
|
-
|
|
4581
|
-
STACK_IMAGE_SYNC_GROUPS_INFO.forEach(syncGroupInfo => {
|
|
4582
|
-
const {
|
|
4583
|
-
viewports,
|
|
4584
|
-
synchronizerId
|
|
4585
|
-
} = syncGroupInfo;
|
|
4586
|
-
viewports.forEach(_ref2 => {
|
|
4587
|
-
let {
|
|
4588
|
-
viewportId,
|
|
4589
|
-
renderingEngineId
|
|
4590
|
-
} = _ref2;
|
|
4591
|
-
syncGroupService.removeViewportFromSyncGroup(viewportId, renderingEngineId, synchronizerId);
|
|
4592
|
-
});
|
|
4593
|
-
});
|
|
4594
|
-
return;
|
|
4595
|
-
}
|
|
4596
|
-
STACK_IMAGE_SYNC_GROUPS_INFO = [];
|
|
4587
|
+
const viewports = providedViewports || getReconstructableStackViewports(viewportGridService, displaySetService);
|
|
4597
4588
|
|
|
4598
|
-
// create synchronization
|
|
4589
|
+
// create synchronization group and add the viewports to it.
|
|
4590
|
+
viewports.forEach(gridViewport => {
|
|
4591
|
+
const {
|
|
4592
|
+
viewportId
|
|
4593
|
+
} = gridViewport.viewportOptions;
|
|
4594
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
4595
|
+
if (!viewport) {
|
|
4596
|
+
return;
|
|
4597
|
+
}
|
|
4598
|
+
syncGroupService.addViewportToSyncGroup(viewportId, viewport.getRenderingEngine().id, {
|
|
4599
|
+
type: 'stackimage',
|
|
4600
|
+
id: STACK_SYNC_NAME,
|
|
4601
|
+
source: true,
|
|
4602
|
+
target: true
|
|
4603
|
+
});
|
|
4604
|
+
});
|
|
4605
|
+
}
|
|
4606
|
+
function disableSync(syncName, servicesManager) {
|
|
4599
4607
|
const {
|
|
4608
|
+
syncGroupService,
|
|
4609
|
+
viewportGridService,
|
|
4610
|
+
displaySetService,
|
|
4611
|
+
cornerstoneViewportService
|
|
4612
|
+
} = servicesManager.services;
|
|
4613
|
+
const viewports = getReconstructableStackViewports(viewportGridService, displaySetService);
|
|
4614
|
+
viewports.forEach(gridViewport => {
|
|
4615
|
+
const {
|
|
4616
|
+
viewportId
|
|
4617
|
+
} = gridViewport.viewportOptions;
|
|
4618
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
4619
|
+
if (!viewport) {
|
|
4620
|
+
return;
|
|
4621
|
+
}
|
|
4622
|
+
syncGroupService.removeViewportFromSyncGroup(viewport.id, viewport.getRenderingEngine().id, syncName);
|
|
4623
|
+
});
|
|
4624
|
+
}
|
|
4625
|
+
;
|
|
4626
|
+
|
|
4627
|
+
/**
|
|
4628
|
+
* Gets the consistent spacing stack viewport types, which are the ones which
|
|
4629
|
+
* can be navigated using the stack image sync right now.
|
|
4630
|
+
*/
|
|
4631
|
+
function getReconstructableStackViewports(viewportGridService, displaySetService) {
|
|
4632
|
+
let {
|
|
4600
4633
|
viewports
|
|
4601
4634
|
} = viewportGridService.getState();
|
|
4602
|
-
|
|
4635
|
+
viewports = [...viewports.values()];
|
|
4603
4636
|
// filter empty viewports
|
|
4604
|
-
|
|
4637
|
+
viewports = viewports.filter(viewport => viewport.displaySetInstanceUIDs && viewport.displaySetInstanceUIDs.length);
|
|
4638
|
+
|
|
4605
4639
|
// filter reconstructable viewports
|
|
4606
|
-
.filter(viewport => {
|
|
4640
|
+
viewports = viewports.filter(viewport => {
|
|
4607
4641
|
const {
|
|
4608
4642
|
displaySetInstanceUIDs
|
|
4609
4643
|
} = viewport;
|
|
4610
4644
|
for (const displaySetInstanceUID of displaySetInstanceUIDs) {
|
|
4611
4645
|
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
4612
|
-
return !!displaySet?.isReconstructable;
|
|
4613
|
-
}
|
|
4614
|
-
});
|
|
4615
|
-
const viewportsByOrientation = viewportsArray.reduce((acc, viewport) => {
|
|
4616
|
-
const {
|
|
4617
|
-
viewportId,
|
|
4618
|
-
viewportType
|
|
4619
|
-
} = viewport.viewportOptions;
|
|
4620
|
-
if (viewportType !== 'stack') {
|
|
4621
|
-
console.warn('Viewport is not a stack, cannot sync images yet');
|
|
4622
|
-
return acc;
|
|
4623
|
-
}
|
|
4624
|
-
const {
|
|
4625
|
-
element
|
|
4626
|
-
} = cornerstoneViewportService.getViewportInfo(viewportId);
|
|
4627
|
-
const {
|
|
4628
|
-
viewport: csViewport,
|
|
4629
|
-
renderingEngineId
|
|
4630
|
-
} = getEnabledElement(element);
|
|
4631
|
-
const {
|
|
4632
|
-
viewPlaneNormal
|
|
4633
|
-
} = csViewport.getCamera();
|
|
4634
4646
|
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4647
|
+
// TODO - add a better test than isReconstructable
|
|
4648
|
+
if (displaySet && displaySet.isReconstructable) {
|
|
4649
|
+
return true;
|
|
4650
|
+
}
|
|
4651
|
+
return false;
|
|
4639
4652
|
}
|
|
4640
|
-
acc[orientation].push({
|
|
4641
|
-
viewportId,
|
|
4642
|
-
renderingEngineId
|
|
4643
|
-
});
|
|
4644
|
-
return acc;
|
|
4645
|
-
}, {});
|
|
4646
|
-
|
|
4647
|
-
// create synchronizer for each group
|
|
4648
|
-
Object.values(viewportsByOrientation).map(viewports => {
|
|
4649
|
-
let synchronizerId = viewports.map(_ref3 => {
|
|
4650
|
-
let {
|
|
4651
|
-
viewportId
|
|
4652
|
-
} = _ref3;
|
|
4653
|
-
return viewportId;
|
|
4654
|
-
}).join(',');
|
|
4655
|
-
synchronizerId = `imageSync_${synchronizerId}`;
|
|
4656
|
-
calculateViewportRegistrations(viewports);
|
|
4657
|
-
viewports.forEach(_ref4 => {
|
|
4658
|
-
let {
|
|
4659
|
-
viewportId,
|
|
4660
|
-
renderingEngineId
|
|
4661
|
-
} = _ref4;
|
|
4662
|
-
syncGroupService.addViewportToSyncGroup(viewportId, renderingEngineId, {
|
|
4663
|
-
type: 'stackimage',
|
|
4664
|
-
id: synchronizerId,
|
|
4665
|
-
source: true,
|
|
4666
|
-
target: true
|
|
4667
|
-
});
|
|
4668
|
-
});
|
|
4669
|
-
STACK_IMAGE_SYNC_GROUPS_INFO.push({
|
|
4670
|
-
synchronizerId,
|
|
4671
|
-
viewports
|
|
4672
|
-
});
|
|
4673
4653
|
});
|
|
4654
|
+
return viewports;
|
|
4674
4655
|
}
|
|
4656
|
+
;
|
|
4675
4657
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts
|
|
4676
4658
|
|
|
4677
4659
|
|
|
@@ -4980,6 +4962,11 @@ function commandsModule(_ref) {
|
|
|
4980
4962
|
toolbarServiceRecordInteraction: props => {
|
|
4981
4963
|
toolbarService.recordInteraction(props);
|
|
4982
4964
|
},
|
|
4965
|
+
// Enable or disable a toggleable command, without calling the activation
|
|
4966
|
+
// Used to setup already active tools from hanging protocols
|
|
4967
|
+
setToolbarToggled: props => {
|
|
4968
|
+
toolbarService.setToggled(props.toolId, props.isActive ?? true);
|
|
4969
|
+
},
|
|
4983
4970
|
setToolActive: _ref9 => {
|
|
4984
4971
|
let {
|
|
4985
4972
|
toolName,
|
|
@@ -5302,20 +5289,21 @@ function commandsModule(_ref) {
|
|
|
5302
5289
|
toggledState
|
|
5303
5290
|
} = _ref17;
|
|
5304
5291
|
toggleStackImageSync({
|
|
5305
|
-
getEnabledElement: esm.getEnabledElement,
|
|
5306
5292
|
servicesManager,
|
|
5307
5293
|
toggledState
|
|
5308
5294
|
});
|
|
5309
5295
|
},
|
|
5310
5296
|
setSourceViewportForReferenceLinesTool: _ref18 => {
|
|
5311
5297
|
let {
|
|
5312
|
-
toggledState
|
|
5298
|
+
toggledState,
|
|
5299
|
+
viewportId
|
|
5313
5300
|
} = _ref18;
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5301
|
+
if (!viewportId) {
|
|
5302
|
+
const {
|
|
5303
|
+
activeViewportId
|
|
5304
|
+
} = viewportGridService.getState();
|
|
5305
|
+
viewportId = activeViewportId;
|
|
5306
|
+
}
|
|
5319
5307
|
const toolGroup = toolGroupService.getToolGroupForViewport(viewportId);
|
|
5320
5308
|
toolGroup.setToolConfiguration(dist_esm.ReferenceLinesTool.toolName, {
|
|
5321
5309
|
sourceViewportId: viewportId
|
|
@@ -5471,9 +5459,10 @@ function commandsModule(_ref) {
|
|
|
5471
5459
|
commandFn: actions.setSourceViewportForReferenceLinesTool
|
|
5472
5460
|
},
|
|
5473
5461
|
storePresentation: {
|
|
5474
|
-
commandFn: actions.storePresentation
|
|
5475
|
-
|
|
5476
|
-
|
|
5462
|
+
commandFn: actions.storePresentation
|
|
5463
|
+
},
|
|
5464
|
+
setToolbarToggled: {
|
|
5465
|
+
commandFn: actions.setToolbarToggled
|
|
5477
5466
|
}
|
|
5478
5467
|
};
|
|
5479
5468
|
return {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[128],{
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[99],{
|
|
3
2
|
|
|
4
|
-
/***/
|
|
3
|
+
/***/ 7395:
|
|
5
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
5
|
|
|
6
|
+
"use strict";
|
|
7
7
|
// ESM COMPAT FLAG
|
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
|
9
9
|
|
|
@@ -16,46 +16,20 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
16
16
|
var src = __webpack_require__(67869);
|
|
17
17
|
// EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
|
|
18
18
|
var ui_src = __webpack_require__(71783);
|
|
19
|
-
|
|
19
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
|
|
20
|
+
var esm = __webpack_require__(3743);
|
|
21
|
+
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/toolbarButtons.ts
|
|
20
22
|
// TODO: torn, can either bake this here; or have to create a whole new button type
|
|
21
23
|
// Only ways that you can pass in a custom React component for render :l
|
|
22
24
|
|
|
23
25
|
|
|
26
|
+
|
|
24
27
|
const {
|
|
25
28
|
windowLevelPresets
|
|
26
29
|
} = src.defaults;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* @param {*} id
|
|
31
|
-
* @param {*} icon
|
|
32
|
-
* @param {*} label
|
|
33
|
-
*/
|
|
34
|
-
function _createButton(type, id, icon, label, commands, tooltip, uiType) {
|
|
35
|
-
return {
|
|
36
|
-
id,
|
|
37
|
-
icon,
|
|
38
|
-
label,
|
|
39
|
-
type,
|
|
40
|
-
commands,
|
|
41
|
-
tooltip,
|
|
42
|
-
uiType
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function _createCommands(commandName, toolName, toolGroupIds) {
|
|
46
|
-
return toolGroupIds.map(toolGroupId => ({
|
|
47
|
-
/* It's a command that is being run when the button is clicked. */
|
|
48
|
-
commandName,
|
|
49
|
-
commandOptions: {
|
|
50
|
-
toolName,
|
|
51
|
-
toolGroupId
|
|
52
|
-
},
|
|
53
|
-
context: 'CORNERSTONE'
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
const _createActionButton = _createButton.bind(null, 'action');
|
|
57
|
-
const _createToggleButton = _createButton.bind(null, 'toggle');
|
|
58
|
-
const _createToolButton = _createButton.bind(null, 'tool');
|
|
30
|
+
const _createActionButton = src/* ToolbarService */.Ok._createButton.bind(null, 'action');
|
|
31
|
+
const _createToggleButton = src/* ToolbarService */.Ok._createButton.bind(null, 'toggle');
|
|
32
|
+
const _createToolButton = src/* ToolbarService */.Ok._createButton.bind(null, 'tool');
|
|
59
33
|
|
|
60
34
|
/**
|
|
61
35
|
*
|
|
@@ -78,6 +52,16 @@ function _createWwwcPreset(preset, title, subtitle) {
|
|
|
78
52
|
}]
|
|
79
53
|
};
|
|
80
54
|
}
|
|
55
|
+
const ReferenceLinesCommands = [{
|
|
56
|
+
commandName: 'setSourceViewportForReferenceLinesTool',
|
|
57
|
+
context: 'CORNERSTONE'
|
|
58
|
+
}, {
|
|
59
|
+
commandName: 'setToolActive',
|
|
60
|
+
commandOptions: {
|
|
61
|
+
toolName: 'ReferenceLines'
|
|
62
|
+
},
|
|
63
|
+
context: 'CORNERSTONE'
|
|
64
|
+
}];
|
|
81
65
|
const toolbarButtons = [
|
|
82
66
|
// Measurement
|
|
83
67
|
{
|
|
@@ -391,16 +375,24 @@ const toolbarButtons = [
|
|
|
391
375
|
commandOptions: {},
|
|
392
376
|
context: 'CORNERSTONE'
|
|
393
377
|
}], 'Flip Horizontal'), _createToggleButton('StackImageSync', 'link', 'Stack Image Sync', [{
|
|
394
|
-
commandName: 'toggleStackImageSync'
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
378
|
+
commandName: 'toggleStackImageSync'
|
|
379
|
+
}], 'Enable position synchronization on stack viewports', {
|
|
380
|
+
listeners: {
|
|
381
|
+
[esm.EVENTS.STACK_VIEWPORT_NEW_STACK]: {
|
|
382
|
+
commandName: 'toggleStackImageSync',
|
|
383
|
+
commandOptions: {
|
|
384
|
+
toggledState: true
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}), _createToggleButton('ReferenceLines', 'tool-referenceLines',
|
|
398
389
|
// change this with the new icon
|
|
399
|
-
'Reference Lines',
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
390
|
+
'Reference Lines', ReferenceLinesCommands, 'Show Reference Lines', {
|
|
391
|
+
listeners: {
|
|
392
|
+
[esm.EVENTS.STACK_VIEWPORT_NEW_STACK]: ReferenceLinesCommands,
|
|
393
|
+
[esm.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED]: ReferenceLinesCommands
|
|
394
|
+
}
|
|
395
|
+
}), _createToolButton('StackScroll', 'tool-stack-scroll', 'Stack Scroll', [{
|
|
404
396
|
commandName: 'setToolActive',
|
|
405
397
|
commandOptions: {
|
|
406
398
|
toolName: 'StackScroll'
|
|
@@ -451,7 +443,7 @@ const package_namespaceObject = JSON.parse('{"u2":"@ohif/mode-test"}');
|
|
|
451
443
|
|
|
452
444
|
const id = package_namespaceObject.u2;
|
|
453
445
|
|
|
454
|
-
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/initToolGroups.
|
|
446
|
+
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/initToolGroups.ts
|
|
455
447
|
function initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) {
|
|
456
448
|
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
|
|
457
449
|
const {
|
|
@@ -654,7 +646,7 @@ function initToolGroups(extensionManager, toolGroupService, commandsManager) {
|
|
|
654
646
|
initMPRToolGroup(extensionManager, toolGroupService, commandsManager);
|
|
655
647
|
}
|
|
656
648
|
/* harmony default export */ const src_initToolGroups = (initToolGroups);
|
|
657
|
-
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/index.
|
|
649
|
+
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/index.ts
|
|
658
650
|
|
|
659
651
|
|
|
660
652
|
|
|
@@ -841,6 +833,13 @@ const mode = {
|
|
|
841
833
|
};
|
|
842
834
|
/* harmony default export */ const basic_test_mode_src = (mode);
|
|
843
835
|
|
|
836
|
+
/***/ }),
|
|
837
|
+
|
|
838
|
+
/***/ 78753:
|
|
839
|
+
/***/ (() => {
|
|
840
|
+
|
|
841
|
+
/* (ignored) */
|
|
842
|
+
|
|
844
843
|
/***/ })
|
|
845
844
|
|
|
846
845
|
}]);
|
|
@@ -968,8 +968,8 @@ function WorkList(_ref) {
|
|
|
968
968
|
};
|
|
969
969
|
});
|
|
970
970
|
const hasStudies = numOfStudies > 0;
|
|
971
|
-
const versionNumber = "3.7.0-beta.
|
|
972
|
-
const commitHash = "
|
|
971
|
+
const versionNumber = "3.7.0-beta.89";
|
|
972
|
+
const commitHash = "e36a6043315e900eeb6ce183772c7f852f478e96";
|
|
973
973
|
const menuOptions = [{
|
|
974
974
|
title: t('Header:About'),
|
|
975
975
|
icon: 'info',
|
|
@@ -1926,7 +1926,7 @@ async function loadModule(module) {
|
|
|
1926
1926
|
return imported.default;
|
|
1927
1927
|
}
|
|
1928
1928
|
if (module === "@ohif/extension-cornerstone") {
|
|
1929
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(743), __webpack_require__.e(775), __webpack_require__.e(957), __webpack_require__.e(604), __webpack_require__.e(774), __webpack_require__.e(
|
|
1929
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(743), __webpack_require__.e(775), __webpack_require__.e(957), __webpack_require__.e(604), __webpack_require__.e(774), __webpack_require__.e(877)]).then(__webpack_require__.bind(__webpack_require__, 94848));
|
|
1930
1930
|
return imported.default;
|
|
1931
1931
|
}
|
|
1932
1932
|
if (module === "@ohif/extension-measurement-tracking") {
|
|
@@ -1966,7 +1966,7 @@ async function loadModule(module) {
|
|
|
1966
1966
|
return imported.default;
|
|
1967
1967
|
}
|
|
1968
1968
|
if (module === "@ohif/mode-longitudinal") {
|
|
1969
|
-
const imported = await
|
|
1969
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(743), __webpack_require__.e(775), __webpack_require__.e(370)]).then(__webpack_require__.bind(__webpack_require__, 71522));
|
|
1970
1970
|
return imported.default;
|
|
1971
1971
|
}
|
|
1972
1972
|
if (module === "@ohif/mode-segmentation") {
|
|
@@ -1982,14 +1982,14 @@ async function loadModule(module) {
|
|
|
1982
1982
|
return imported.default;
|
|
1983
1983
|
}
|
|
1984
1984
|
if (module === "@ohif/mode-test") {
|
|
1985
|
-
const imported = await
|
|
1985
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(743), __webpack_require__.e(775), __webpack_require__.e(99)]).then(__webpack_require__.bind(__webpack_require__, 7395));
|
|
1986
1986
|
return imported.default;
|
|
1987
1987
|
}
|
|
1988
1988
|
if (module === "@ohif/mode-basic-dev-mode") {
|
|
1989
1989
|
const imported = await __webpack_require__.e(/* import() */ 410).then(__webpack_require__.bind(__webpack_require__, 15410));
|
|
1990
1990
|
return imported.default;
|
|
1991
1991
|
}
|
|
1992
|
-
return (await
|
|
1992
|
+
return (await import( /* webpackIgnore: true */module)).default;
|
|
1993
1993
|
}
|
|
1994
1994
|
|
|
1995
1995
|
// Import a list of items (modules or string names)
|
|
@@ -8659,7 +8659,7 @@ const detectionOptions = {
|
|
|
8659
8659
|
}
|
|
8660
8660
|
});
|
|
8661
8661
|
;// CONCATENATED MODULE: ../../i18n/package.json
|
|
8662
|
-
const package_namespaceObject = JSON.parse('{"i8":"3.7.0-beta.
|
|
8662
|
+
const package_namespaceObject = JSON.parse('{"i8":"3.7.0-beta.88"}');
|
|
8663
8663
|
;// CONCATENATED MODULE: ../../i18n/src/utils.js
|
|
8664
8664
|
const languagesMap = {
|
|
8665
8665
|
ar: 'Arabic',
|
|
@@ -32100,6 +32100,7 @@ function LayoutSelector(_ref) {
|
|
|
32100
32100
|
border: '1px solid white',
|
|
32101
32101
|
backgroundColor: isHovered(index) ? '#5acce6' : '#0b1a42'
|
|
32102
32102
|
},
|
|
32103
|
+
"data-cy": `Layout-${index % columns}-${Math.floor(index / columns)}`,
|
|
32103
32104
|
className: "cursor-pointer",
|
|
32104
32105
|
onClick: () => {
|
|
32105
32106
|
const x = index % columns;
|
|
@@ -53481,6 +53482,17 @@ const ToolbarService_EVENTS = {
|
|
|
53481
53482
|
TOOL_BAR_STATE_MODIFIED: 'event::toolBarService:toolBarStateModified'
|
|
53482
53483
|
};
|
|
53483
53484
|
class ToolbarService extends pubSubServiceInterface/* PubSubService */.h {
|
|
53485
|
+
static _createButton(type, id, icon, label, commands, tooltip, extraOptions) {
|
|
53486
|
+
return {
|
|
53487
|
+
id,
|
|
53488
|
+
icon,
|
|
53489
|
+
label,
|
|
53490
|
+
type,
|
|
53491
|
+
commands,
|
|
53492
|
+
tooltip,
|
|
53493
|
+
...extraOptions
|
|
53494
|
+
};
|
|
53495
|
+
}
|
|
53484
53496
|
constructor(commandsManager) {
|
|
53485
53497
|
super(ToolbarService_EVENTS);
|
|
53486
53498
|
this.buttons = {};
|
|
@@ -53644,12 +53656,18 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.h {
|
|
|
53644
53656
|
return this.buttons;
|
|
53645
53657
|
}
|
|
53646
53658
|
getActiveTools() {
|
|
53647
|
-
|
|
53659
|
+
const activeTools = [this.state.primaryToolId];
|
|
53660
|
+
Object.keys(this.state.toggles).forEach(key => {
|
|
53661
|
+
if (this.state.toggles[key]) {
|
|
53662
|
+
activeTools.push(key);
|
|
53663
|
+
}
|
|
53664
|
+
});
|
|
53665
|
+
return activeTools;
|
|
53648
53666
|
}
|
|
53649
53667
|
|
|
53650
|
-
/** Sets the toggle state of a button to the
|
|
53651
|
-
|
|
53652
|
-
if (
|
|
53668
|
+
/** Sets the toggle state of a button to the isToggled state */
|
|
53669
|
+
setToggled(id, isToggled) {
|
|
53670
|
+
if (isToggled) {
|
|
53653
53671
|
this.state.toggles[id] = true;
|
|
53654
53672
|
} else {
|
|
53655
53673
|
delete this.state.toggles[id];
|
|
@@ -53668,6 +53686,26 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.h {
|
|
|
53668
53686
|
getButton(id) {
|
|
53669
53687
|
return this.buttons[id];
|
|
53670
53688
|
}
|
|
53689
|
+
|
|
53690
|
+
/** Gets a nested button, found in the items/props for the children */
|
|
53691
|
+
getNestedButton(id) {
|
|
53692
|
+
if (this.buttons[id]) {
|
|
53693
|
+
return this.buttons[id];
|
|
53694
|
+
}
|
|
53695
|
+
for (const buttonId of Object.keys(this.buttons)) {
|
|
53696
|
+
const {
|
|
53697
|
+
primary,
|
|
53698
|
+
items
|
|
53699
|
+
} = this.buttons[buttonId].props || {};
|
|
53700
|
+
if (primary?.id === id) {
|
|
53701
|
+
return primary;
|
|
53702
|
+
}
|
|
53703
|
+
const found = items?.find(childButton => childButton.id === id);
|
|
53704
|
+
if (found) {
|
|
53705
|
+
return found;
|
|
53706
|
+
}
|
|
53707
|
+
}
|
|
53708
|
+
}
|
|
53671
53709
|
setButtons(buttons) {
|
|
53672
53710
|
this.buttons = buttons;
|
|
53673
53711
|
this._broadcastEvent(this.EVENTS.TOOL_BAR_MODIFIED, {
|
|
@@ -53725,20 +53763,19 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.h {
|
|
|
53725
53763
|
if (!this.buttons[button.id]) {
|
|
53726
53764
|
this.buttons[button.id] = button;
|
|
53727
53765
|
}
|
|
53728
|
-
this._setTogglesForButtonItems(button.props?.items);
|
|
53729
53766
|
});
|
|
53767
|
+
this._setTogglesForButtonItems(buttons);
|
|
53730
53768
|
this._broadcastEvent(this.EVENTS.TOOL_BAR_MODIFIED, {});
|
|
53731
53769
|
}
|
|
53732
|
-
_setTogglesForButtonItems(
|
|
53733
|
-
if (!
|
|
53770
|
+
_setTogglesForButtonItems(buttons) {
|
|
53771
|
+
if (!buttons) {
|
|
53734
53772
|
return;
|
|
53735
53773
|
}
|
|
53736
|
-
|
|
53774
|
+
buttons.forEach(buttonItem => {
|
|
53737
53775
|
if (buttonItem.type === 'toggle') {
|
|
53738
|
-
this.
|
|
53739
|
-
} else {
|
|
53740
|
-
this._setTogglesForButtonItems(buttonItem.props?.items);
|
|
53776
|
+
this.setToggled(buttonItem.id, buttonItem.isActive);
|
|
53741
53777
|
}
|
|
53778
|
+
this._setTogglesForButtonItems(buttonItem.props?.items);
|
|
53742
53779
|
});
|
|
53743
53780
|
}
|
|
53744
53781
|
|
|
@@ -58176,7 +58213,9 @@ class MetadataProvider {
|
|
|
58176
58213
|
}
|
|
58177
58214
|
_getCornerstoneDICOMImageLoaderTag(wadoImageLoaderTag, instance) {
|
|
58178
58215
|
let metadata = WADO_IMAGE_LOADER[wadoImageLoaderTag]?.(instance);
|
|
58179
|
-
if (metadata)
|
|
58216
|
+
if (metadata) {
|
|
58217
|
+
return metadata;
|
|
58218
|
+
}
|
|
58180
58219
|
switch (wadoImageLoaderTag) {
|
|
58181
58220
|
case WADO_IMAGE_LOADER_TAGS.GENERAL_SERIES_MODULE:
|
|
58182
58221
|
const {
|
|
@@ -58314,12 +58353,39 @@ class MetadataProvider {
|
|
|
58314
58353
|
const ROIMeanTag = `${groupStr}1302`;
|
|
58315
58354
|
const ROIStandardDeviationTag = `${groupStr}1303`;
|
|
58316
58355
|
const OverlayOrigin = instance[OverlayOriginTag];
|
|
58356
|
+
let rows = 0;
|
|
58357
|
+
if (instance[OverlayRowsTag] instanceof Array) {
|
|
58358
|
+
// The DICOM VR for overlay rows is US (unsigned short).
|
|
58359
|
+
const rowsInt16Array = new Uint16Array(instance[OverlayRowsTag][0]);
|
|
58360
|
+
rows = rowsInt16Array[0];
|
|
58361
|
+
} else {
|
|
58362
|
+
rows = instance[OverlayRowsTag];
|
|
58363
|
+
}
|
|
58364
|
+
let columns = 0;
|
|
58365
|
+
if (instance[OverlayColumnsTag] instanceof Array) {
|
|
58366
|
+
// The DICOM VR for overlay columns is US (unsigned short).
|
|
58367
|
+
const columnsInt16Array = new Uint16Array(instance[OverlayColumnsTag][0]);
|
|
58368
|
+
columns = columnsInt16Array[0];
|
|
58369
|
+
} else {
|
|
58370
|
+
columns = instance[OverlayColumnsTag];
|
|
58371
|
+
}
|
|
58372
|
+
let x = 0;
|
|
58373
|
+
let y = 0;
|
|
58374
|
+
if (OverlayOrigin.length === 1) {
|
|
58375
|
+
// The DICOM VR for overlay origin is SS (signed short) with a multiplicity of 2.
|
|
58376
|
+
const originInt16Array = new Int16Array(OverlayOrigin[0]);
|
|
58377
|
+
x = originInt16Array[0];
|
|
58378
|
+
y = originInt16Array[1];
|
|
58379
|
+
} else {
|
|
58380
|
+
x = OverlayOrigin[0];
|
|
58381
|
+
y = OverlayOrigin[1];
|
|
58382
|
+
}
|
|
58317
58383
|
const overlay = {
|
|
58318
|
-
rows:
|
|
58319
|
-
columns:
|
|
58384
|
+
rows: rows,
|
|
58385
|
+
columns: columns,
|
|
58320
58386
|
type: instance[OverlayType],
|
|
58321
|
-
x
|
|
58322
|
-
y
|
|
58387
|
+
x,
|
|
58388
|
+
y,
|
|
58323
58389
|
pixelData: OverlayData,
|
|
58324
58390
|
description: instance[OverlayDescriptionTag],
|
|
58325
58391
|
label: instance[OverlayLabelTag],
|
|
@@ -58453,7 +58519,7 @@ class MetadataProvider {
|
|
|
58453
58519
|
// remove &frame=number from imageId
|
|
58454
58520
|
imageURI = imageURI.split('&frame=')[0];
|
|
58455
58521
|
const uids = this.imageURIToUIDs.get(imageURI);
|
|
58456
|
-
|
|
58522
|
+
const frameNumber = this.getFrameInformationFromURL(imageId) || '1';
|
|
58457
58523
|
if (uids && frameNumber !== undefined) {
|
|
58458
58524
|
return {
|
|
58459
58525
|
...uids,
|
|
@@ -155460,25 +155526,6 @@ function createMemoryRouter(routes, opts) {
|
|
|
155460
155526
|
|
|
155461
155527
|
|
|
155462
155528
|
|
|
155463
|
-
/***/ }),
|
|
155464
|
-
|
|
155465
|
-
/***/ 76118:
|
|
155466
|
-
/***/ ((module) => {
|
|
155467
|
-
|
|
155468
|
-
function webpackEmptyAsyncContext(req) {
|
|
155469
|
-
// Here Promise.resolve().then() is used instead of new Promise() to prevent
|
|
155470
|
-
// uncaught exception popping up in devtools
|
|
155471
|
-
return Promise.resolve().then(() => {
|
|
155472
|
-
var e = new Error("Cannot find module '" + req + "'");
|
|
155473
|
-
e.code = 'MODULE_NOT_FOUND';
|
|
155474
|
-
throw e;
|
|
155475
|
-
});
|
|
155476
|
-
}
|
|
155477
|
-
webpackEmptyAsyncContext.keys = () => ([]);
|
|
155478
|
-
webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
|
|
155479
|
-
webpackEmptyAsyncContext.id = 76118;
|
|
155480
|
-
module.exports = webpackEmptyAsyncContext;
|
|
155481
|
-
|
|
155482
155529
|
/***/ }),
|
|
155483
155530
|
|
|
155484
155531
|
/***/ 32155:
|
|
@@ -159134,7 +159181,7 @@ var selectOrdinal = function selectOrdinal() {
|
|
|
159134
159181
|
/******/ // This function allow to reference async chunks
|
|
159135
159182
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
159136
159183
|
/******/ // return url for filenames based on template
|
|
159137
|
-
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"
|
|
159184
|
+
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"00e9504be71ad6df95fe","18":"2c146384eb9466d02ff8","19":"ac29a85034c388d491e5","23":"e008ad788170f2ed5569","99":"e5cdaa188d44d58dbd16","125":"253395f320b72180da63","181":"73fc96c6b3ab1fabedc8","202":"96bbb4547a346fe3921f","220":"f7e1c96c94245e70f2be","221":"4345e4b6760ad26609ab","236":"ae586686f216bb35c71c","250":"4bebed43526c7e06344f","281":"8230dfc98567e1f931eb","342":"ee39d39568324dade9e8","359":"070ca05beb969580f284","370":"0fd9e32c33d620c25c0f","410":"b6969e97e86fe583dbae","417":"af0a207c29b109f84159","451":"1c714bfb8b66d3a5adfb","471":"4aaec34d87b0c93687c1","506":"1ec326a29a83b749c7bf","530":"a03b6f942ace3e1baa1e","579":"8fc434a0c13d3f662d42","604":"a51f83e64004bca5f497","613":"adf71ee20cedc7e40f9c","663":"0a8d83e79a119b1d9e0e","686":"dccef1f36e4bc79bcc48","687":"dfe3e1758a5159e90e4c","743":"4bfe6e562ffb2c22708f","774":"7528cba56a1407357144","775":"2285e7e0e67878948c0d","782":"a9956a661eafe2530e90","814":"2c85fbeb75306553fc7b","822":"00de6455c18be0307b41","831":"83658f62fcc769043605","877":"835fa27a8b3a2a9359d3","886":"7324d84913daffb6a4c4","957":"8c09a01840ab8aa32734"}[chunkId] + ".js";
|
|
159138
159185
|
/******/ };
|
|
159139
159186
|
/******/ })();
|
|
159140
159187
|
/******/
|
|
@@ -159297,7 +159344,7 @@ var selectOrdinal = function selectOrdinal() {
|
|
|
159297
159344
|
/******/ };
|
|
159298
159345
|
/******/
|
|
159299
159346
|
/******/ __webpack_require__.f.miniCss = (chunkId, promises) => {
|
|
159300
|
-
/******/ var cssChunks = {"19":1,"181":1,"221":1,"250":1,"579":1,"
|
|
159347
|
+
/******/ var cssChunks = {"19":1,"181":1,"221":1,"250":1,"579":1,"877":1};
|
|
159301
159348
|
/******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
|
|
159302
159349
|
/******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
|
|
159303
159350
|
/******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {
|
|
@@ -159439,7 +159486,7 @@ var selectOrdinal = function selectOrdinal() {
|
|
|
159439
159486
|
/******/ "814": [
|
|
159440
159487
|
/******/ 125
|
|
159441
159488
|
/******/ ],
|
|
159442
|
-
/******/ "
|
|
159489
|
+
/******/ "877": [
|
|
159443
159490
|
/******/ 23,
|
|
159444
159491
|
/******/ 181
|
|
159445
159492
|
/******/ ]
|
package/dist/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="mobile-web-app-capable" content="yes"/><meta name="application-name" content="OHIF Viewer"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="@ohif/app"/><meta name="msapplication-TileColor" content="#fff"/><meta name="msapplication-TileImage" content="/assets/mstile-144x144.png"/><meta name="msapplication-config" content="/assets/browserconfig.xml"/><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script>window.PUBLIC_URL = '/';</script><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="mobile-web-app-capable" content="yes"/><meta name="application-name" content="OHIF Viewer"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="@ohif/app"/><meta name="msapplication-TileColor" content="#fff"/><meta name="msapplication-TileImage" content="/assets/mstile-144x144.png"/><meta name="msapplication-config" content="/assets/browserconfig.xml"/><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script>window.PUBLIC_URL = '/';</script><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.ebe908553f4d102750ff.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
package/dist/sw.js
CHANGED
|
@@ -51,7 +51,7 @@ self.addEventListener('message', event => {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
-
workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.
|
|
54
|
+
workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.00e9504be71ad6df95fe.js'},{'revision':null,'url':'/125.bundle.253395f320b72180da63.js'},{'revision':null,'url':'/181.bundle.73fc96c6b3ab1fabedc8.js'},{'revision':'8079c6447e119ba0680e8fab5875745d','url':'/181.css'},{'revision':null,'url':'/19.bundle.ac29a85034c388d491e5.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/202.bundle.96bbb4547a346fe3921f.js'},{'revision':null,'url':'/220.bundle.f7e1c96c94245e70f2be.js'},{'revision':null,'url':'/221.bundle.4345e4b6760ad26609ab.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/221.css'},{'revision':null,'url':'/23.bundle.e008ad788170f2ed5569.js'},{'revision':null,'url':'/236.bundle.ae586686f216bb35c71c.js'},{'revision':null,'url':'/250.bundle.4bebed43526c7e06344f.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.8230dfc98567e1f931eb.js'},{'revision':null,'url':'/342.bundle.ee39d39568324dade9e8.js'},{'revision':null,'url':'/359.bundle.070ca05beb969580f284.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/370.bundle.0fd9e32c33d620c25c0f.js'},{'revision':null,'url':'/410.bundle.b6969e97e86fe583dbae.js'},{'revision':null,'url':'/417.bundle.af0a207c29b109f84159.js'},{'revision':null,'url':'/451.bundle.1c714bfb8b66d3a5adfb.js'},{'revision':null,'url':'/471.bundle.4aaec34d87b0c93687c1.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.1ec326a29a83b749c7bf.js'},{'revision':null,'url':'/530.bundle.a03b6f942ace3e1baa1e.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/579.css'},{'revision':null,'url':'/604.bundle.a51f83e64004bca5f497.js'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':null,'url':'/613.bundle.adf71ee20cedc7e40f9c.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/663.bundle.0a8d83e79a119b1d9e0e.js'},{'revision':null,'url':'/686.bundle.dccef1f36e4bc79bcc48.js'},{'revision':null,'url':'/687.bundle.dfe3e1758a5159e90e4c.js'},{'revision':null,'url':'/743.bundle.4bfe6e562ffb2c22708f.js'},{'revision':'cf3e4d4fa8884275461c195421812256','url':'/75788f12450d4c5ed494.wasm'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/774.bundle.7528cba56a1407357144.js'},{'revision':null,'url':'/775.bundle.2285e7e0e67878948c0d.js'},{'revision':null,'url':'/782.bundle.a9956a661eafe2530e90.js'},{'revision':null,'url':'/814.bundle.2c85fbeb75306553fc7b.js'},{'revision':null,'url':'/822.bundle.00de6455c18be0307b41.js'},{'revision':null,'url':'/831.bundle.83658f62fcc769043605.js'},{'revision':null,'url':'/877.bundle.835fa27a8b3a2a9359d3.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/877.css'},{'revision':null,'url':'/886.bundle.7324d84913daffb6a4c4.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':null,'url':'/957.bundle.8c09a01840ab8aa32734.js'},{'revision':null,'url':'/99.bundle.e5cdaa188d44d58dbd16.js'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':'b087b338ae8c00e6585d8ed93cd9915e','url':'/app.bundle.css'},{'revision':null,'url':'/app.bundle.ebe908553f4d102750ff.js'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'5f5a189af3f93caac4d97cf63347d7df','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'346733bc702ee77bf7243351d99974f8','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':'da8ad7f5b807960f26b42a0d2f8e481a','url':'/index.html'},{'revision':'feee2d4ed9d00c64f0e4d6a46608fecf','url':'/index.worker.e62ecca63f1a2e124230.worker.js'},{'revision':'beaf37c564436e46bbcd825f0330cdbf','url':'/index.worker.e62ecca63f1a2e124230.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
|
|
55
55
|
|
|
56
56
|
// TODO: Cache API
|
|
57
57
|
// https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ohif/app",
|
|
3
|
-
"version": "3.7.0-beta.
|
|
3
|
+
"version": "3.7.0-beta.89",
|
|
4
4
|
"productVersion": "3.4.0",
|
|
5
5
|
"description": "OHIF Viewer",
|
|
6
6
|
"author": "OHIF Contributors",
|
|
@@ -51,22 +51,22 @@
|
|
|
51
51
|
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
|
52
52
|
"@cornerstonejs/codec-openjph": "^2.4.2",
|
|
53
53
|
"@cornerstonejs/dicom-image-loader": "^1.19.3",
|
|
54
|
-
"@ohif/core": "3.7.0-beta.
|
|
55
|
-
"@ohif/extension-cornerstone": "3.7.0-beta.
|
|
56
|
-
"@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.
|
|
57
|
-
"@ohif/extension-cornerstone-dicom-seg": "3.7.0-beta.
|
|
58
|
-
"@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.
|
|
59
|
-
"@ohif/extension-default": "3.7.0-beta.
|
|
60
|
-
"@ohif/extension-dicom-microscopy": "3.7.0-beta.
|
|
61
|
-
"@ohif/extension-dicom-pdf": "3.7.0-beta.
|
|
62
|
-
"@ohif/extension-dicom-video": "3.7.0-beta.
|
|
63
|
-
"@ohif/extension-test": "3.7.0-beta.
|
|
64
|
-
"@ohif/i18n": "3.7.0-beta.
|
|
65
|
-
"@ohif/mode-basic-dev-mode": "3.7.0-beta.
|
|
66
|
-
"@ohif/mode-longitudinal": "3.7.0-beta.
|
|
67
|
-
"@ohif/mode-microscopy": "3.7.0-beta.
|
|
68
|
-
"@ohif/mode-test": "3.7.0-beta.
|
|
69
|
-
"@ohif/ui": "3.7.0-beta.
|
|
54
|
+
"@ohif/core": "3.7.0-beta.89",
|
|
55
|
+
"@ohif/extension-cornerstone": "3.7.0-beta.89",
|
|
56
|
+
"@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.89",
|
|
57
|
+
"@ohif/extension-cornerstone-dicom-seg": "3.7.0-beta.89",
|
|
58
|
+
"@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.89",
|
|
59
|
+
"@ohif/extension-default": "3.7.0-beta.89",
|
|
60
|
+
"@ohif/extension-dicom-microscopy": "3.7.0-beta.89",
|
|
61
|
+
"@ohif/extension-dicom-pdf": "3.7.0-beta.89",
|
|
62
|
+
"@ohif/extension-dicom-video": "3.7.0-beta.89",
|
|
63
|
+
"@ohif/extension-test": "3.7.0-beta.89",
|
|
64
|
+
"@ohif/i18n": "3.7.0-beta.89",
|
|
65
|
+
"@ohif/mode-basic-dev-mode": "3.7.0-beta.89",
|
|
66
|
+
"@ohif/mode-longitudinal": "3.7.0-beta.89",
|
|
67
|
+
"@ohif/mode-microscopy": "3.7.0-beta.89",
|
|
68
|
+
"@ohif/mode-test": "3.7.0-beta.89",
|
|
69
|
+
"@ohif/ui": "3.7.0-beta.89",
|
|
70
70
|
"@types/react": "^17.0.38",
|
|
71
71
|
"classnames": "^2.3.2",
|
|
72
72
|
"core-js": "^3.16.1",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|