@ohif/app 3.7.0-beta.44 → 3.7.0-beta.46
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/{150.bundle.7be19d85d4a4427162b9.js → 150.bundle.2fa62b4d658df1500a7a.js} +69 -2
- package/dist/{181.bundle.f4289d6b1c5d35831e37.js → 181.bundle.f5476625f4ca901a1b91.js} +9 -3
- package/dist/{236.bundle.b8ef36ef4c5e4e5c3d2b.js → 236.bundle.c0a68163699ecfe3169a.js} +25 -11
- package/dist/{250.bundle.ee4bcf159c4d610acc3e.js → 250.bundle.1c1cb3520a9285138cfa.js} +18 -6
- package/dist/{30.bundle.21b1175bc35138643825.js → 30.bundle.c0b2fa8984080ebcfbbc.js} +3 -1
- package/dist/{378.bundle.b7a073e9ed3fce6e27a5.js → 378.bundle.61261ee41e0ea0955440.js} +8 -6
- package/dist/{869.bundle.6375669c18e0907b248d.js → 451.bundle.a08889b823fb10803bd8.js} +8 -59
- package/dist/{810.bundle.b8f43b6b094a0720e994.js → 471.bundle.3238a0647d80970085f7.js} +6 -58
- package/dist/{506.bundle.65256204be221475de80.js → 506.bundle.b23fa19d91dd23ab44be.js} +69 -2
- package/dist/{663.bundle.5188b8ef1cd9a46373d9.js → 663.bundle.f5db124e3e922e61e76b.js} +27 -9
- package/dist/{678.bundle.5289463d7f419d56f8f1.js → 678.bundle.c07616be5e27371d875c.js} +63 -21
- package/dist/{821.bundle.fcfa6ec47f096018c0e9.js → 821.bundle.d175d0a8f3f0148a1993.js} +79 -29
- package/dist/{app.bundle.9c84ff949c1d4b8f555f.js → app.bundle.7e5633a7d73fc76a884d.js} +237 -91
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +18 -18
- /package/dist/{12.bundle.e8a38369f1a90100362f.js → 12.bundle.cff58bede0136dc8d013.js} +0 -0
- /package/dist/{128.bundle.c4be183e141214e291da.js → 128.bundle.620a2fdce44958dbb9fb.js} +0 -0
- /package/dist/{281.bundle.d394ad2bcce3cf7b325f.js → 281.bundle.be238c748373d907dffe.js} +0 -0
- /package/dist/{348.bundle.fdc18553ec7c1b4f6a80.js → 348.bundle.dcebcb7b75ff9fcc1d5b.js} +0 -0
- /package/dist/{359.bundle.f3867a42352f85e846bb.js → 359.bundle.3cdac00ab9649a10741b.js} +0 -0
- /package/dist/{410.bundle.8ae97aeddb3375a6d6c6.js → 410.bundle.fe0269b702be9c375abb.js} +0 -0
- /package/dist/{782.bundle.0b55dd2b0e7c80102eec.js → 782.bundle.f2a1076331c6a6816314.js} +0 -0
- /package/dist/{814.bundle.9f6f3b71096482162688.js → 814.bundle.69e55909aa8b5a776fe4.js} +0 -0
|
@@ -9,7 +9,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9
9
|
|
|
10
10
|
// EXPORTS
|
|
11
11
|
__webpack_require__.d(__webpack_exports__, {
|
|
12
|
-
"default": () => (/* binding */ cornerstone_dicom_seg_src)
|
|
12
|
+
"default": () => (/* binding */ cornerstone_dicom_seg_src),
|
|
13
|
+
hydrateSEGDisplaySet: () => (/* reexport */ _hydrateSEG/* default */.Z)
|
|
13
14
|
});
|
|
14
15
|
|
|
15
16
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/package.json
|
|
@@ -571,6 +572,8 @@ function getHangingProtocolModule() {
|
|
|
571
572
|
}
|
|
572
573
|
/* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
|
|
573
574
|
|
|
575
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts
|
|
576
|
+
var _hydrateSEG = __webpack_require__(28417);
|
|
574
577
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/index.tsx
|
|
575
578
|
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); }
|
|
576
579
|
|
|
@@ -578,8 +581,9 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
578
581
|
|
|
579
582
|
|
|
580
583
|
|
|
584
|
+
|
|
581
585
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
582
|
-
return __webpack_require__.e(/* import() */
|
|
586
|
+
return __webpack_require__.e(/* import() */ 451).then(__webpack_require__.bind(__webpack_require__, 4451));
|
|
583
587
|
});
|
|
584
588
|
const OHIFCornerstoneSEGViewport = props => {
|
|
585
589
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -651,6 +655,69 @@ const extension = {
|
|
|
651
655
|
};
|
|
652
656
|
/* harmony default export */ const cornerstone_dicom_seg_src = (extension);
|
|
653
657
|
|
|
658
|
+
|
|
659
|
+
/***/ }),
|
|
660
|
+
|
|
661
|
+
/***/ 28417:
|
|
662
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
663
|
+
|
|
664
|
+
"use strict";
|
|
665
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
666
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
667
|
+
/* harmony export */ });
|
|
668
|
+
async function _hydrateSEGDisplaySet(_ref) {
|
|
669
|
+
let {
|
|
670
|
+
segDisplaySet,
|
|
671
|
+
viewportIndex,
|
|
672
|
+
servicesManager
|
|
673
|
+
} = _ref;
|
|
674
|
+
const {
|
|
675
|
+
segmentationService,
|
|
676
|
+
hangingProtocolService,
|
|
677
|
+
viewportGridService
|
|
678
|
+
} = servicesManager.services;
|
|
679
|
+
const displaySetInstanceUID = segDisplaySet.referencedDisplaySetInstanceUID;
|
|
680
|
+
let segmentationId = null;
|
|
681
|
+
|
|
682
|
+
// We need the hydration to notify panels about the new segmentation added
|
|
683
|
+
const suppressEvents = false;
|
|
684
|
+
segmentationId = await segmentationService.createSegmentationForSEGDisplaySet(segDisplaySet, segmentationId, suppressEvents);
|
|
685
|
+
segmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
686
|
+
const {
|
|
687
|
+
viewports
|
|
688
|
+
} = viewportGridService.getState();
|
|
689
|
+
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
|
|
690
|
+
|
|
691
|
+
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
692
|
+
|
|
693
|
+
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
694
|
+
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
695
|
+
// (if already is not using it) since Cornerstone3D currently only supports
|
|
696
|
+
// volume viewport for segmentation
|
|
697
|
+
viewports.forEach((viewport, index) => {
|
|
698
|
+
if (index === viewportIndex) {
|
|
699
|
+
return;
|
|
700
|
+
}
|
|
701
|
+
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, segDisplaySet.displaySetInstanceUID);
|
|
702
|
+
if (shouldDisplaySeg) {
|
|
703
|
+
updatedViewports.push({
|
|
704
|
+
viewportIndex: index,
|
|
705
|
+
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
706
|
+
viewportOptions: {
|
|
707
|
+
initialImageOptions: {
|
|
708
|
+
preset: 'middle'
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
|
|
715
|
+
// Do the entire update at once
|
|
716
|
+
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
717
|
+
return true;
|
|
718
|
+
}
|
|
719
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_hydrateSEGDisplaySet);
|
|
720
|
+
|
|
654
721
|
/***/ }),
|
|
655
722
|
|
|
656
723
|
/***/ 78753:
|
|
@@ -1352,7 +1352,9 @@ function _subscribeToJumpToMeasurementEvents(measurementService, displaySetServi
|
|
|
1352
1352
|
measurement,
|
|
1353
1353
|
isConsumed
|
|
1354
1354
|
} = props;
|
|
1355
|
-
if (!measurement || isConsumed)
|
|
1355
|
+
if (!measurement || isConsumed) {
|
|
1356
|
+
return;
|
|
1357
|
+
}
|
|
1356
1358
|
if (cacheJumpToMeasurementEvent.cornerstoneViewport === undefined) {
|
|
1357
1359
|
// Decide on which viewport should handle this
|
|
1358
1360
|
cacheJumpToMeasurementEvent.cornerstoneViewport = cornerstoneViewportService.getViewportIndexToJump(jumpIndex, measurement.displaySetInstanceUID, {
|
|
@@ -1369,13 +1371,17 @@ function _subscribeToJumpToMeasurementEvents(measurementService, displaySetServi
|
|
|
1369
1371
|
|
|
1370
1372
|
// Check if there is a queued jumpToMeasurement event
|
|
1371
1373
|
function _checkForCachedJumpToMeasurementEvents(measurementService, displaySetService, elementRef, viewportIndex, displaySets, viewportGridService, cornerstoneViewportService) {
|
|
1372
|
-
if (!cacheJumpToMeasurementEvent)
|
|
1374
|
+
if (!cacheJumpToMeasurementEvent) {
|
|
1375
|
+
return;
|
|
1376
|
+
}
|
|
1373
1377
|
if (cacheJumpToMeasurementEvent.isConsumed) {
|
|
1374
1378
|
cacheJumpToMeasurementEvent = null;
|
|
1375
1379
|
return;
|
|
1376
1380
|
}
|
|
1377
1381
|
const displaysUIDs = displaySets.map(displaySet => displaySet.displaySetInstanceUID);
|
|
1378
|
-
if (!displaysUIDs?.length)
|
|
1382
|
+
if (!displaysUIDs?.length) {
|
|
1383
|
+
return;
|
|
1384
|
+
}
|
|
1379
1385
|
|
|
1380
1386
|
// Jump to measurement if the measurement exists
|
|
1381
1387
|
const {
|
|
@@ -61,7 +61,9 @@ function coordinateFormatScoord3d2Geometry(coordinates, pyramid) {
|
|
|
61
61
|
return coordinates;
|
|
62
62
|
}
|
|
63
63
|
function _getPixelSpacing(metadata) {
|
|
64
|
-
if (metadata.PixelSpacing)
|
|
64
|
+
if (metadata.PixelSpacing) {
|
|
65
|
+
return metadata.PixelSpacing;
|
|
66
|
+
}
|
|
65
67
|
const functionalGroup = metadata.SharedFunctionalGroupsSequence[0];
|
|
66
68
|
const pixelMeasures = functionalGroup.PixelMeasuresSequence[0];
|
|
67
69
|
return pixelMeasures.PixelSpacing;
|
|
@@ -811,7 +813,7 @@ class MicroscopyService extends core_src/* PubSubService */.hC {
|
|
|
811
813
|
clear() {
|
|
812
814
|
this.managedViewers.forEach(managedViewer => managedViewer.destroy());
|
|
813
815
|
this.managedViewers.clear();
|
|
814
|
-
for (
|
|
816
|
+
for (const key in this.annotations) {
|
|
815
817
|
delete this.annotations[key];
|
|
816
818
|
}
|
|
817
819
|
this.roiUids.clear();
|
|
@@ -879,7 +881,9 @@ class MicroscopyService extends core_src/* PubSubService */.hC {
|
|
|
879
881
|
managedViewer
|
|
880
882
|
} = data;
|
|
881
883
|
const roiAnnotation = this.getAnnotation(roiGraphic.uid);
|
|
882
|
-
if (!roiAnnotation)
|
|
884
|
+
if (!roiAnnotation) {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
883
887
|
roiAnnotation.setRoiGraphic(roiGraphic);
|
|
884
888
|
roiAnnotation.setViewState(managedViewer.getViewState());
|
|
885
889
|
}
|
|
@@ -933,7 +937,9 @@ class MicroscopyService extends core_src/* PubSubService */.hC {
|
|
|
933
937
|
} = data;
|
|
934
938
|
const selectedAnnotation = this.getAnnotation(roiGraphic.uid);
|
|
935
939
|
if (selectedAnnotation && selectedAnnotation !== this.getSelectedAnnotation()) {
|
|
936
|
-
if (this.selectedAnnotation)
|
|
940
|
+
if (this.selectedAnnotation) {
|
|
941
|
+
this.clearSelection();
|
|
942
|
+
}
|
|
937
943
|
this.selectedAnnotation = selectedAnnotation;
|
|
938
944
|
this._broadcastEvent(MicroscopyService_EVENTS.ANNOTATION_SELECTED, selectedAnnotation);
|
|
939
945
|
}
|
|
@@ -1188,7 +1194,9 @@ class MicroscopyService extends core_src/* PubSubService */.hC {
|
|
|
1188
1194
|
* @param {RoiAnnotation} roiAnnotation The instance to be selected
|
|
1189
1195
|
*/
|
|
1190
1196
|
selectAnnotation(roiAnnotation) {
|
|
1191
|
-
if (this.selectedAnnotation)
|
|
1197
|
+
if (this.selectedAnnotation) {
|
|
1198
|
+
this.clearSelection();
|
|
1199
|
+
}
|
|
1192
1200
|
this.selectedAnnotation = roiAnnotation;
|
|
1193
1201
|
this._broadcastEvent(MicroscopyService_EVENTS.ANNOTATION_SELECTED, roiAnnotation);
|
|
1194
1202
|
this.setROIStyle(roiAnnotation.uid, utils_styles.active);
|
|
@@ -1544,7 +1552,9 @@ function constructSR(metadata, _ref, annotations) {
|
|
|
1544
1552
|
console.debug('[SR] storing measurements...', measurements);
|
|
1545
1553
|
console.debug('[SR] storing evaluations...', evaluations);
|
|
1546
1554
|
console.debug('[SR] storing presentation state...', presentationState);
|
|
1547
|
-
if (presentationState)
|
|
1555
|
+
if (presentationState) {
|
|
1556
|
+
presentationState.marker = marker;
|
|
1557
|
+
}
|
|
1548
1558
|
|
|
1549
1559
|
/** Avoid incompatibility with dcmjs */
|
|
1550
1560
|
measurements = measurements.map(measurement => {
|
|
@@ -1654,10 +1664,10 @@ function constructSR(metadata, _ref, annotations) {
|
|
|
1654
1664
|
* @param filename
|
|
1655
1665
|
*/
|
|
1656
1666
|
function saveByteArray(buffer, filename) {
|
|
1657
|
-
|
|
1667
|
+
const blob = new Blob([buffer], {
|
|
1658
1668
|
type: 'application/dicom'
|
|
1659
1669
|
});
|
|
1660
|
-
|
|
1670
|
+
const link = document.createElement('a');
|
|
1661
1671
|
link.href = window.URL.createObjectURL(blob);
|
|
1662
1672
|
link.download = filename;
|
|
1663
1673
|
link.click();
|
|
@@ -2057,7 +2067,9 @@ function getCommandsModule(_ref) {
|
|
|
2057
2067
|
} = _ref2;
|
|
2058
2068
|
if (uid) {
|
|
2059
2069
|
const roiAnnotation = microscopyService.getAnnotation(uid);
|
|
2060
|
-
if (roiAnnotation)
|
|
2070
|
+
if (roiAnnotation) {
|
|
2071
|
+
microscopyService.removeAnnotation(roiAnnotation);
|
|
2072
|
+
}
|
|
2061
2073
|
}
|
|
2062
2074
|
},
|
|
2063
2075
|
setLabel: _ref3 => {
|
|
@@ -2096,7 +2108,7 @@ function getCommandsModule(_ref) {
|
|
|
2096
2108
|
}];
|
|
2097
2109
|
if (['line', 'box', 'circle', 'point', 'polygon', 'freehandpolygon', 'freehandline'].indexOf(toolName) >= 0) {
|
|
2098
2110
|
// TODO: read from configuration
|
|
2099
|
-
|
|
2111
|
+
const options = {
|
|
2100
2112
|
geometryType: toolName,
|
|
2101
2113
|
vertexEnabled: true,
|
|
2102
2114
|
styleOptions: utils_styles["default"],
|
|
@@ -2147,7 +2159,9 @@ function getCommandsModule(_ref) {
|
|
|
2147
2159
|
const overlays = document.getElementsByClassName('microscopy-viewport-overlay');
|
|
2148
2160
|
let onoff = false; // true if this will toggle on
|
|
2149
2161
|
for (let i = 0; i < overlays.length; i++) {
|
|
2150
|
-
if (i === 0)
|
|
2162
|
+
if (i === 0) {
|
|
2163
|
+
onoff = overlays.item(0).classList.contains('hidden');
|
|
2164
|
+
}
|
|
2151
2165
|
overlays.item(i).classList.toggle('hidden');
|
|
2152
2166
|
}
|
|
2153
2167
|
|
|
@@ -36,11 +36,17 @@ const listComponentGenerator = props => {
|
|
|
36
36
|
list,
|
|
37
37
|
itemGenerator
|
|
38
38
|
} = props;
|
|
39
|
-
if (!list)
|
|
39
|
+
if (!list) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
40
42
|
return list.map(item => {
|
|
41
|
-
if (!item)
|
|
43
|
+
if (!item) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
42
46
|
const generator = item.generator || itemGenerator;
|
|
43
|
-
if (!generator)
|
|
47
|
+
if (!generator) {
|
|
48
|
+
throw new Error(`No generator for ${item}`);
|
|
49
|
+
}
|
|
44
50
|
return generator({
|
|
45
51
|
...props,
|
|
46
52
|
item
|
|
@@ -230,8 +236,12 @@ const itemGenerator = props => {
|
|
|
230
236
|
props.formatTime = formatDICOMTime;
|
|
231
237
|
props.formatPN = formatPN;
|
|
232
238
|
props.formatNumberPrecision = formatNumberPrecision;
|
|
233
|
-
if (condition && !condition(props))
|
|
234
|
-
|
|
239
|
+
if (condition && !condition(props)) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
if (!contents && !valueFunc) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
235
245
|
const value = valueFunc && valueFunc(props);
|
|
236
246
|
const contentsValue = contents && contents(props) || [{
|
|
237
247
|
className: 'mr-1',
|
|
@@ -430,7 +440,9 @@ class DicomMicroscopyViewport extends react.Component {
|
|
|
430
440
|
} = this.props.servicesManager.services;
|
|
431
441
|
this.microscopyService = microscopyService;
|
|
432
442
|
this.debouncedResize = lodash_debounce_default()(() => {
|
|
433
|
-
if (this.viewer)
|
|
443
|
+
if (this.viewer) {
|
|
444
|
+
this.viewer.resize();
|
|
445
|
+
}
|
|
434
446
|
}, 100);
|
|
435
447
|
}
|
|
436
448
|
/**
|
|
@@ -2211,7 +2211,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
|
|
|
2211
2211
|
if (findingSites) {
|
|
2212
2212
|
const siteText = [];
|
|
2213
2213
|
findingSites.forEach(site => {
|
|
2214
|
-
if (site?.text !== label)
|
|
2214
|
+
if (site?.text !== label) {
|
|
2215
|
+
siteText.push(site.text);
|
|
2216
|
+
}
|
|
2215
2217
|
});
|
|
2216
2218
|
displayText = [...siteText, ...displayText];
|
|
2217
2219
|
}
|
|
@@ -103,7 +103,9 @@ const codeMenuItem = {
|
|
|
103
103
|
const {
|
|
104
104
|
code: codeRef
|
|
105
105
|
} = this;
|
|
106
|
-
if (!codeRef)
|
|
106
|
+
if (!codeRef) {
|
|
107
|
+
throw new Error(`item ${this} has no code ref`);
|
|
108
|
+
}
|
|
107
109
|
const codingValues = customizationService.get('codingValues');
|
|
108
110
|
const code = codingValues[codeRef];
|
|
109
111
|
return {
|
|
@@ -239,7 +241,7 @@ function getCustomizationModule() {
|
|
|
239
241
|
* From 'this', it uses:
|
|
240
242
|
* `sameAttribute` as the attribute name to look for
|
|
241
243
|
* `sameDisplaySetId` as the display set id to look for
|
|
242
|
-
* From `options`, it looks for
|
|
244
|
+
* From `options`, it looks for
|
|
243
245
|
*/
|
|
244
246
|
/* harmony default export */ function sameAs(displaySet, options) {
|
|
245
247
|
const {
|
|
@@ -247,11 +249,11 @@ function getCustomizationModule() {
|
|
|
247
249
|
sameDisplaySetId
|
|
248
250
|
} = this;
|
|
249
251
|
if (!sameAttribute) {
|
|
250
|
-
console.log(
|
|
252
|
+
console.log('sameAttribute not defined in', this);
|
|
251
253
|
return `sameAttribute not defined in ${this.id}`;
|
|
252
254
|
}
|
|
253
255
|
if (!sameDisplaySetId) {
|
|
254
|
-
console.log(
|
|
256
|
+
console.log('sameDisplaySetId not defined in', this);
|
|
255
257
|
return `sameDisplaySetId not defined in ${this.id}`;
|
|
256
258
|
}
|
|
257
259
|
const {
|
|
@@ -260,7 +262,7 @@ function getCustomizationModule() {
|
|
|
260
262
|
} = options;
|
|
261
263
|
const match = displaySetMatchDetails.get(sameDisplaySetId);
|
|
262
264
|
if (!match) {
|
|
263
|
-
console.log(
|
|
265
|
+
console.log('No match for display set', sameDisplaySetId);
|
|
264
266
|
return false;
|
|
265
267
|
}
|
|
266
268
|
const {
|
|
@@ -268,7 +270,7 @@ function getCustomizationModule() {
|
|
|
268
270
|
} = match;
|
|
269
271
|
const altDisplaySet = displaySets.find(it => it.displaySetInstanceUID == displaySetInstanceUID);
|
|
270
272
|
if (!altDisplaySet) {
|
|
271
|
-
console.log(
|
|
273
|
+
console.log('No display set found with', displaySetInstanceUID, 'in', displaySets);
|
|
272
274
|
return false;
|
|
273
275
|
}
|
|
274
276
|
const testValue = altDisplaySet[sameAttribute];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[451],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 4451:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -31,59 +31,8 @@ function createSEGToolGroupAndAddTools(ToolGroupService, customizationService, t
|
|
|
31
31
|
return ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, {});
|
|
32
32
|
}
|
|
33
33
|
/* harmony default export */ const initSEGToolGroup = (createSEGToolGroupAndAddTools);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
let {
|
|
37
|
-
segDisplaySet,
|
|
38
|
-
viewportIndex,
|
|
39
|
-
servicesManager
|
|
40
|
-
} = _ref;
|
|
41
|
-
const {
|
|
42
|
-
segmentationService,
|
|
43
|
-
hangingProtocolService,
|
|
44
|
-
viewportGridService
|
|
45
|
-
} = servicesManager.services;
|
|
46
|
-
const displaySetInstanceUID = segDisplaySet.referencedDisplaySetInstanceUID;
|
|
47
|
-
let segmentationId = null;
|
|
48
|
-
|
|
49
|
-
// We need the hydration to notify panels about the new segmentation added
|
|
50
|
-
const suppressEvents = false;
|
|
51
|
-
segmentationId = await segmentationService.createSegmentationForSEGDisplaySet(segDisplaySet, segmentationId, suppressEvents);
|
|
52
|
-
segmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
53
|
-
const {
|
|
54
|
-
viewports
|
|
55
|
-
} = viewportGridService.getState();
|
|
56
|
-
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
|
|
57
|
-
|
|
58
|
-
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
59
|
-
|
|
60
|
-
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
61
|
-
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
62
|
-
// (if already is not using it) since Cornerstone3D currently only supports
|
|
63
|
-
// volume viewport for segmentation
|
|
64
|
-
viewports.forEach((viewport, index) => {
|
|
65
|
-
if (index === viewportIndex) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, segDisplaySet.displaySetInstanceUID);
|
|
69
|
-
if (shouldDisplaySeg) {
|
|
70
|
-
updatedViewports.push({
|
|
71
|
-
viewportIndex: index,
|
|
72
|
-
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
73
|
-
viewportOptions: {
|
|
74
|
-
initialImageOptions: {
|
|
75
|
-
preset: 'middle'
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// Do the entire update at once
|
|
83
|
-
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
/* harmony default export */ const _hydrateSEG = (_hydrateSEGDisplaySet);
|
|
34
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts
|
|
35
|
+
var _hydrateSEG = __webpack_require__(28417);
|
|
87
36
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/promptHydrateSEG.ts
|
|
88
37
|
|
|
89
38
|
|
|
@@ -108,7 +57,7 @@ function promptHydrateSEG(_ref) {
|
|
|
108
57
|
preHydrateCallbacks?.forEach(callback => {
|
|
109
58
|
callback();
|
|
110
59
|
});
|
|
111
|
-
const isHydrated = await _hydrateSEG({
|
|
60
|
+
const isHydrated = await (0,_hydrateSEG/* default */.Z)({
|
|
112
61
|
segDisplaySet,
|
|
113
62
|
viewportIndex,
|
|
114
63
|
servicesManager
|
|
@@ -160,8 +109,8 @@ function _getStatusComponent(_ref) {
|
|
|
160
109
|
let StatusIcon = null;
|
|
161
110
|
const {
|
|
162
111
|
t
|
|
163
|
-
} = (0,es/* useTranslation */.$G)(
|
|
164
|
-
const loadStr = t(
|
|
112
|
+
} = (0,es/* useTranslation */.$G)('Common');
|
|
113
|
+
const loadStr = t('LOAD');
|
|
165
114
|
switch (isHydrated) {
|
|
166
115
|
case true:
|
|
167
116
|
StatusIcon = () => /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
@@ -459,7 +408,7 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
459
408
|
// presentation state (w/l and invert) and then opens the SEG. If we don't store
|
|
460
409
|
// the presentation state, the viewport will be reset to the default presentation
|
|
461
410
|
storePresentationState();
|
|
462
|
-
const isHydrated = await _hydrateSEG({
|
|
411
|
+
const isHydrated = await (0,_hydrateSEG/* default */.Z)({
|
|
463
412
|
segDisplaySet,
|
|
464
413
|
viewportIndex,
|
|
465
414
|
servicesManager
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[471],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 56471:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -21,60 +21,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
|
21
21
|
var src = __webpack_require__(20599);
|
|
22
22
|
// EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
|
|
23
23
|
var ui_src = __webpack_require__(77284);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
let {
|
|
27
|
-
rtDisplaySet,
|
|
28
|
-
viewportIndex,
|
|
29
|
-
servicesManager
|
|
30
|
-
} = _ref;
|
|
31
|
-
const {
|
|
32
|
-
segmentationService,
|
|
33
|
-
hangingProtocolService,
|
|
34
|
-
viewportGridService
|
|
35
|
-
} = servicesManager.services;
|
|
36
|
-
const displaySetInstanceUID = rtDisplaySet.referencedDisplaySetInstanceUID;
|
|
37
|
-
let segmentationId = null;
|
|
38
|
-
|
|
39
|
-
// We need the hydration to notify panels about the new segmentation added
|
|
40
|
-
const suppressEvents = false;
|
|
41
|
-
segmentationId = await segmentationService.createSegmentationForRTDisplaySet(rtDisplaySet, segmentationId, suppressEvents);
|
|
42
|
-
segmentationService.hydrateSegmentation(rtDisplaySet.displaySetInstanceUID);
|
|
43
|
-
const {
|
|
44
|
-
viewports
|
|
45
|
-
} = viewportGridService.getState();
|
|
46
|
-
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
|
|
47
|
-
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
48
|
-
|
|
49
|
-
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
50
|
-
|
|
51
|
-
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
52
|
-
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
53
|
-
// (if already is not using it) since Cornerstone3D currently only supports
|
|
54
|
-
// volume viewport for segmentation
|
|
55
|
-
viewports.forEach((viewport, index) => {
|
|
56
|
-
if (index === viewportIndex) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, rtDisplaySet.displaySetInstanceUID);
|
|
60
|
-
if (shouldDisplaySeg) {
|
|
61
|
-
updatedViewports.push({
|
|
62
|
-
viewportIndex: index,
|
|
63
|
-
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
64
|
-
viewportOptions: {
|
|
65
|
-
initialImageOptions: {
|
|
66
|
-
preset: 'middle'
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// Do the entire update at once
|
|
74
|
-
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
/* harmony default export */ const _hydrateRT = (_hydrateRTDisplaySet);
|
|
24
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/_hydrateRT.ts
|
|
25
|
+
var _hydrateRT = __webpack_require__(50995);
|
|
78
26
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/promptHydrateRT.ts
|
|
79
27
|
|
|
80
28
|
|
|
@@ -100,7 +48,7 @@ function promptHydrateRT(_ref) {
|
|
|
100
48
|
preHydrateCallbacks?.forEach(callback => {
|
|
101
49
|
callback();
|
|
102
50
|
});
|
|
103
|
-
const isHydrated = await _hydrateRT({
|
|
51
|
+
const isHydrated = await (0,_hydrateRT/* default */.Z)({
|
|
104
52
|
rtDisplaySet,
|
|
105
53
|
viewportIndex,
|
|
106
54
|
toolGroupId,
|
|
@@ -454,7 +402,7 @@ function OHIFCornerstoneRTViewport(props) {
|
|
|
454
402
|
// presentation state (w/l and invert) and then opens the RT. If we don't store
|
|
455
403
|
// the presentation state, the viewport will be reset to the default presentation
|
|
456
404
|
storePresentationState();
|
|
457
|
-
const isHydrated = await _hydrateRT({
|
|
405
|
+
const isHydrated = await (0,_hydrateRT/* default */.Z)({
|
|
458
406
|
rtDisplaySet,
|
|
459
407
|
viewportIndex,
|
|
460
408
|
servicesManager
|
|
@@ -9,7 +9,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9
9
|
|
|
10
10
|
// EXPORTS
|
|
11
11
|
__webpack_require__.d(__webpack_exports__, {
|
|
12
|
-
"default": () => (/* binding */ cornerstone_dicom_rt_src)
|
|
12
|
+
"default": () => (/* binding */ cornerstone_dicom_rt_src),
|
|
13
|
+
hydrateRTDisplaySet: () => (/* reexport */ _hydrateRT/* default */.Z)
|
|
13
14
|
});
|
|
14
15
|
|
|
15
16
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/package.json
|
|
@@ -415,13 +416,16 @@ function getSopClassHandlerModule(_ref2) {
|
|
|
415
416
|
}];
|
|
416
417
|
}
|
|
417
418
|
/* harmony default export */ const src_getSopClassHandlerModule = (getSopClassHandlerModule);
|
|
419
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/_hydrateRT.ts
|
|
420
|
+
var _hydrateRT = __webpack_require__(50995);
|
|
418
421
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/index.tsx
|
|
419
422
|
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); }
|
|
420
423
|
|
|
421
424
|
|
|
422
425
|
|
|
426
|
+
|
|
423
427
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
424
|
-
return __webpack_require__.e(/* import() */
|
|
428
|
+
return __webpack_require__.e(/* import() */ 471).then(__webpack_require__.bind(__webpack_require__, 56471));
|
|
425
429
|
});
|
|
426
430
|
const OHIFCornerstoneRTViewport = props => {
|
|
427
431
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -472,6 +476,69 @@ const extension = {
|
|
|
472
476
|
};
|
|
473
477
|
/* harmony default export */ const cornerstone_dicom_rt_src = (extension);
|
|
474
478
|
|
|
479
|
+
|
|
480
|
+
/***/ }),
|
|
481
|
+
|
|
482
|
+
/***/ 50995:
|
|
483
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
484
|
+
|
|
485
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
486
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
487
|
+
/* harmony export */ });
|
|
488
|
+
async function _hydrateRTDisplaySet(_ref) {
|
|
489
|
+
let {
|
|
490
|
+
rtDisplaySet,
|
|
491
|
+
viewportIndex,
|
|
492
|
+
servicesManager
|
|
493
|
+
} = _ref;
|
|
494
|
+
const {
|
|
495
|
+
segmentationService,
|
|
496
|
+
hangingProtocolService,
|
|
497
|
+
viewportGridService
|
|
498
|
+
} = servicesManager.services;
|
|
499
|
+
const displaySetInstanceUID = rtDisplaySet.referencedDisplaySetInstanceUID;
|
|
500
|
+
let segmentationId = null;
|
|
501
|
+
|
|
502
|
+
// We need the hydration to notify panels about the new segmentation added
|
|
503
|
+
const suppressEvents = false;
|
|
504
|
+
segmentationId = await segmentationService.createSegmentationForRTDisplaySet(rtDisplaySet, segmentationId, suppressEvents);
|
|
505
|
+
segmentationService.hydrateSegmentation(rtDisplaySet.displaySetInstanceUID);
|
|
506
|
+
const {
|
|
507
|
+
viewports
|
|
508
|
+
} = viewportGridService.getState();
|
|
509
|
+
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
|
|
510
|
+
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
511
|
+
|
|
512
|
+
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
513
|
+
|
|
514
|
+
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
515
|
+
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
516
|
+
// (if already is not using it) since Cornerstone3D currently only supports
|
|
517
|
+
// volume viewport for segmentation
|
|
518
|
+
viewports.forEach((viewport, index) => {
|
|
519
|
+
if (index === viewportIndex) {
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, rtDisplaySet.displaySetInstanceUID);
|
|
523
|
+
if (shouldDisplaySeg) {
|
|
524
|
+
updatedViewports.push({
|
|
525
|
+
viewportIndex: index,
|
|
526
|
+
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
527
|
+
viewportOptions: {
|
|
528
|
+
initialImageOptions: {
|
|
529
|
+
preset: 'middle'
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
|
|
536
|
+
// Do the entire update at once
|
|
537
|
+
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
538
|
+
return true;
|
|
539
|
+
}
|
|
540
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_hydrateRTDisplaySet);
|
|
541
|
+
|
|
475
542
|
/***/ })
|
|
476
543
|
|
|
477
544
|
}]);
|