@ohif/app 3.8.0-beta.54 → 3.8.0-beta.55
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/{223.bundle.d4ac6ef2cfe47a9c4afc.js → 109.bundle.b4fee2a22b622839baf5.js} +50 -50
- package/dist/{471.bundle.eeb78105b59e688832a6.js → 121.bundle.5d0736acd6a7090ff2d0.js} +18 -18
- package/dist/{19.bundle.99b3819a5b7a6bd9394c.js → 155.bundle.e813e01526393fc0c81d.js} +93 -93
- package/dist/{687.bundle.a6ee04b2e5fd5e5445b6.js → 164.bundle.c5c6a095c04bf80c9dc6.js} +4 -4
- package/dist/{506.bundle.e243d2ef94ad3925c403.js → 188.bundle.df0f701a626b2bdd5607.js} +11 -11
- package/dist/{199.bundle.fdd939db52f25dc92071.js → 250.bundle.20d6ff7e3aa73db874d9.js} +42 -42
- package/dist/{965.bundle.67f3b1a05b5cbe521d62.js → 270.bundle.24bd8268981ff45bc5ed.js} +60 -60
- package/dist/{95.bundle.2236101be3cc36b322e8.js → 290.bundle.88e45f20df861f74b040.js} +12 -12
- package/dist/{451.bundle.311cd3be9916e08450e9.js → 295.bundle.5d7c931dcc154900b181.js} +21 -22
- package/dist/{125.bundle.df666cb677e5a8982157.js → 297.bundle.81d63bb0b66d63df6d86.js} +4 -4
- package/dist/{613.bundle.9c0ad8fbe2c130862f6c.js → 317.bundle.4bbbbeacc63a87fe0052.js} +9 -9
- package/dist/{483.bundle.75d178137b66ccdbc9b0.js → 339.bundle.6071d0db23a8fd7b4ce1.js} +65 -65
- package/dist/{202.bundle.495cba6bbee744cf8f72.js → 342.bundle.c260b2f9105f31c53e06.js} +93 -93
- package/dist/{466.bundle.93759a09e651f7b3c995.js → 50.bundle.a02f930758203e922b61.js} +47 -47
- package/dist/{886.bundle.94a4536167d0f8cae1ae.js → 530.bundle.59fb7594f8c8fc3bb3cc.js} +24 -24
- package/dist/{250.bundle.577da106dd763c7bf9d0.js → 544.bundle.757758f236737ef68537.js} +22 -22
- package/dist/{170.bundle.f343198e07760a7ead7d.js → 559.bundle.8c5f8069652858166212.js} +63 -63
- package/dist/{410.bundle.a348d8825d915c77d550.js → 594.bundle.5587e112957597bfa00e.js} +11 -11
- package/dist/{661.bundle.949c984fe2f9f753b65c.js → 644.bundle.1e77691d2eeb96a423b0.js} +4 -4
- package/dist/{185.bundle.ff56990135b9136734cf.js → 68.bundle.3f8ecb580774e553c5e2.js} +47 -47
- package/dist/{738.bundle.a68b638a4281ede90e1f.js → 704.bundle.5f768638951d88f5b04a.js} +221 -221
- package/dist/{359.bundle.ef640f0cee0493868d9d.js → 724.bundle.3d153d487a4df09d7fc1.js} +12 -12
- package/dist/{831.bundle.127a3064e8844d6d2c82.js → 726.bundle.ca49b063dace33d27ae3.js} +512 -512
- package/dist/{530.bundle.f904325ef4195d69ac0e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +28 -28
- package/dist/{822.bundle.8b745e28bc9eb9afbc61.js → 862.bundle.9495643df5c63de0ac57.js} +19 -19
- package/dist/{181.bundle.aff453c348111303ceac.js → 889.bundle.3fbb54e829d5c48d82fd.js} +33 -38
- package/dist/{281.bundle.fae344af5b015f837f25.js → 905.bundle.290943a93a696c835e94.js} +8 -8
- package/dist/{814.bundle.0ec180d5b229f4e6406f.js → 907.bundle.d161c4269937e5e77f2d.js} +9 -9
- package/dist/{417.bundle.5c66801d23d0e98c00e6.js → 931.bundle.d270a1fda9a2836c3cc5.js} +25 -25
- package/dist/{686.bundle.62c827fe4f0d054c164e.js → 939.bundle.84ee0b844023d924a22b.js} +4 -4
- package/dist/{12.bundle.f8e4685ed24432735e1b.js → 961.bundle.2ada19a2348f025c8eca.js} +8 -8
- package/dist/{290.bundle.83733eacedfae557e8cf.js → 963.bundle.a998a59f759bd3be3e47.js} +440 -218
- package/dist/{app.bundle.e97dc9a2b1087531aa22.js → app.bundle.708fb56d4d3a283387f4.js} +5482 -5141
- package/dist/{dicom-microscopy-viewer.bundle.a7d5060eead13771e784.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +21 -18
- package/dist/23.bundle.9d989522a6e4fdcb9c72.js +0 -900
- /package/dist/{19.css → 155.css} +0 -0
- /package/dist/{579.css → 481.css} +0 -0
- /package/dist/{466.css → 50.css} +0 -0
- /package/dist/{250.css → 544.css} +0 -0
- /package/dist/{181.css → 889.css} +0 -0
- /package/dist/{290.css → 963.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[963],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 34963:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -24,7 +24,7 @@ __webpack_require__.d(utils_namespaceObject, {
|
|
|
24
24
|
getDisplayUnit: () => (utils_getDisplayUnit),
|
|
25
25
|
getFirstAnnotationSelected: () => (getFirstAnnotationSelected),
|
|
26
26
|
getHandlesFromPoints: () => (getHandlesFromPoints),
|
|
27
|
-
getSOPInstanceAttributes: () => (getSOPInstanceAttributes/* default */.
|
|
27
|
+
getSOPInstanceAttributes: () => (getSOPInstanceAttributes/* default */.A),
|
|
28
28
|
isAnnotationSelected: () => (isAnnotationSelected),
|
|
29
29
|
setAnnotationSelected: () => (setAnnotationSelected)
|
|
30
30
|
});
|
|
@@ -34,20 +34,20 @@ var types_namespaceObject = {};
|
|
|
34
34
|
__webpack_require__.r(types_namespaceObject);
|
|
35
35
|
|
|
36
36
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
37
|
-
var react = __webpack_require__(
|
|
37
|
+
var react = __webpack_require__(41766);
|
|
38
38
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 376 modules
|
|
39
|
-
var esm = __webpack_require__(
|
|
39
|
+
var esm = __webpack_require__(28991);
|
|
40
40
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
|
|
41
|
-
var dist_esm = __webpack_require__(
|
|
41
|
+
var dist_esm = __webpack_require__(28649);
|
|
42
42
|
// EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
|
|
43
|
-
var src = __webpack_require__(
|
|
43
|
+
var src = __webpack_require__(30257);
|
|
44
44
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 13 modules
|
|
45
|
-
var streaming_image_volume_loader_dist_esm = __webpack_require__(
|
|
45
|
+
var streaming_image_volume_loader_dist_esm = __webpack_require__(23722);
|
|
46
46
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js
|
|
47
|
-
var cornerstoneDICOMImageLoader_min = __webpack_require__(
|
|
47
|
+
var cornerstoneDICOMImageLoader_min = __webpack_require__(54578);
|
|
48
48
|
var cornerstoneDICOMImageLoader_min_default = /*#__PURE__*/__webpack_require__.n(cornerstoneDICOMImageLoader_min);
|
|
49
49
|
// EXTERNAL MODULE: ../../../node_modules/dicom-parser/dist/dicomParser.min.js
|
|
50
|
-
var dicomParser_min = __webpack_require__(
|
|
50
|
+
var dicomParser_min = __webpack_require__(45561);
|
|
51
51
|
var dicomParser_min_default = /*#__PURE__*/__webpack_require__.n(dicomParser_min);
|
|
52
52
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/initWADOImageLoader.js
|
|
53
53
|
|
|
@@ -80,7 +80,7 @@ function initWebWorkers(appConfig) {
|
|
|
80
80
|
function initWADOImageLoader(userAuthenticationService, appConfig, extensionManager) {
|
|
81
81
|
(cornerstoneDICOMImageLoader_min_default()).external.cornerstone = esm;
|
|
82
82
|
(cornerstoneDICOMImageLoader_min_default()).external.dicomParser = (dicomParser_min_default());
|
|
83
|
-
registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.
|
|
83
|
+
registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.FC);
|
|
84
84
|
cornerstoneDICOMImageLoader_min_default().configure({
|
|
85
85
|
decodeConfig: {
|
|
86
86
|
// !! IMPORTANT !!
|
|
@@ -95,7 +95,7 @@ function initWADOImageLoader(userAuthenticationService, appConfig, extensionMana
|
|
|
95
95
|
//TODO should be removed in the future and request emitted by DicomWebDataSource
|
|
96
96
|
const sourceConfig = extensionManager.getActiveDataSource()?.[0].getConfig() ?? {};
|
|
97
97
|
const headers = userAuthenticationService.getAuthorizationHeader();
|
|
98
|
-
const acceptHeader = src
|
|
98
|
+
const acceptHeader = src/* utils */.Wp.generateAcceptHeader(sourceConfig.acceptHeader, sourceConfig.requestTransferSyntaxUID, sourceConfig.omitQuotationForMultipartRequest);
|
|
99
99
|
const xhrRequestHeaders = {
|
|
100
100
|
Accept: acceptHeader
|
|
101
101
|
};
|
|
@@ -105,7 +105,7 @@ function initWADOImageLoader(userAuthenticationService, appConfig, extensionMana
|
|
|
105
105
|
return xhrRequestHeaders;
|
|
106
106
|
},
|
|
107
107
|
errorInterceptor: error => {
|
|
108
|
-
src/* errorHandler */.
|
|
108
|
+
src/* errorHandler */.r_.getHTTPErrorHandler(error);
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
111
|
initWebWorkers(appConfig);
|
|
@@ -120,7 +120,7 @@ function destroy() {
|
|
|
120
120
|
webWorkers.length = 0;
|
|
121
121
|
}
|
|
122
122
|
// EXTERNAL MODULE: ../../ui/src/index.js + 487 modules
|
|
123
|
-
var ui_src = __webpack_require__(
|
|
123
|
+
var ui_src = __webpack_require__(55395);
|
|
124
124
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/callInputDialog.tsx
|
|
125
125
|
|
|
126
126
|
|
|
@@ -170,7 +170,7 @@ function callInputDialog(uiDialogService, data, callback, isArrowAnnotateInputDi
|
|
|
170
170
|
centralize: true,
|
|
171
171
|
isDraggable: false,
|
|
172
172
|
showOverlay: true,
|
|
173
|
-
content: ui_src/* Dialog */.
|
|
173
|
+
content: ui_src/* Dialog */.lG,
|
|
174
174
|
contentProps: {
|
|
175
175
|
title: dialogTitle,
|
|
176
176
|
value: {
|
|
@@ -183,18 +183,18 @@ function callInputDialog(uiDialogService, data, callback, isArrowAnnotateInputDi
|
|
|
183
183
|
actions: [{
|
|
184
184
|
id: 'cancel',
|
|
185
185
|
text: 'Cancel',
|
|
186
|
-
type: ui_src/* ButtonEnums.type */.
|
|
186
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.secondary
|
|
187
187
|
}, {
|
|
188
188
|
id: 'save',
|
|
189
189
|
text: 'Save',
|
|
190
|
-
type: ui_src/* ButtonEnums.type */.
|
|
190
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.primary
|
|
191
191
|
}],
|
|
192
192
|
onSubmit: onSubmitHandler,
|
|
193
193
|
body: ({
|
|
194
194
|
value,
|
|
195
195
|
setValue
|
|
196
196
|
}) => {
|
|
197
|
-
return /*#__PURE__*/react.createElement(ui_src/* Input */.
|
|
197
|
+
return /*#__PURE__*/react.createElement(ui_src/* Input */.pd, {
|
|
198
198
|
autoFocus: true,
|
|
199
199
|
className: "border-primary-main bg-black",
|
|
200
200
|
type: "text",
|
|
@@ -227,7 +227,7 @@ function callInputDialog(uiDialogService, data, callback, isArrowAnnotateInputDi
|
|
|
227
227
|
}
|
|
228
228
|
/* harmony default export */ const utils_callInputDialog = (callInputDialog);
|
|
229
229
|
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/state.ts
|
|
230
|
-
var state = __webpack_require__(
|
|
230
|
+
var state = __webpack_require__(71353);
|
|
231
231
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts
|
|
232
232
|
|
|
233
233
|
|
|
@@ -237,7 +237,7 @@ function getActiveViewportEnabledElement(viewportGridService) {
|
|
|
237
237
|
} = viewportGridService.getState();
|
|
238
238
|
const {
|
|
239
239
|
element
|
|
240
|
-
} = (0,state/* getEnabledElement */.
|
|
240
|
+
} = (0,state/* getEnabledElement */.kJ)(activeViewportId) || {};
|
|
241
241
|
const enabledElement = (0,esm.getEnabledElement)(element);
|
|
242
242
|
return enabledElement;
|
|
243
243
|
}
|
|
@@ -348,7 +348,7 @@ function onCompletedCalibrationLine(servicesManager, csToolsEvent) {
|
|
|
348
348
|
});
|
|
349
349
|
}
|
|
350
350
|
// EXTERNAL MODULE: ../../core/src/utils/index.js + 26 modules
|
|
351
|
-
var utils = __webpack_require__(
|
|
351
|
+
var utils = __webpack_require__(17541);
|
|
352
352
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/tools/OverlayPlaneModuleProvider.ts
|
|
353
353
|
|
|
354
354
|
const _cachedOverlayMetadata = new Map();
|
|
@@ -522,7 +522,7 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
|
|
|
522
522
|
} else if (overlay.pixelData.retrieveBulkData) {
|
|
523
523
|
pixelData = await overlay.pixelData.retrieveBulkData();
|
|
524
524
|
} else if (overlay.pixelData.InlineBinary) {
|
|
525
|
-
const blob = (0,utils/* b64toBlob */.
|
|
525
|
+
const blob = (0,utils/* b64toBlob */.Vk)(overlay.pixelData.InlineBinary);
|
|
526
526
|
const arrayBuffer = await blob.arrayBuffer();
|
|
527
527
|
pixelData = arrayBuffer;
|
|
528
528
|
}
|
|
@@ -535,7 +535,7 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
|
|
|
535
535
|
}, overlay.color || color, pixelData);
|
|
536
536
|
return {
|
|
537
537
|
...overlay,
|
|
538
|
-
_id: (0,utils/* guid */.
|
|
538
|
+
_id: (0,utils/* guid */.Os)(),
|
|
539
539
|
dataUrl,
|
|
540
540
|
// this will be a data url expression of the rendered image
|
|
541
541
|
color
|
|
@@ -690,7 +690,7 @@ const toolNames = {
|
|
|
690
690
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/constants/supportedTools.js
|
|
691
691
|
/* harmony default export */ const supportedTools = (['Length', 'EllipticalROI', 'CircleROI', 'Bidirectional', 'ArrowAnnotate', 'Angle', 'CobbAngle', 'Probe', 'RectangleROI', 'PlanarFreehandROI']);
|
|
692
692
|
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js
|
|
693
|
-
var getSOPInstanceAttributes = __webpack_require__(
|
|
693
|
+
var getSOPInstanceAttributes = __webpack_require__(1663);
|
|
694
694
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/Length.ts
|
|
695
695
|
|
|
696
696
|
|
|
@@ -730,7 +730,7 @@ const Length = {
|
|
|
730
730
|
SOPInstanceUID,
|
|
731
731
|
SeriesInstanceUID,
|
|
732
732
|
StudyInstanceUID
|
|
733
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
733
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
|
|
734
734
|
let displaySet;
|
|
735
735
|
if (SOPInstanceUID) {
|
|
736
736
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -789,7 +789,7 @@ function getMappedAnnotations(annotation, displaySetService) {
|
|
|
789
789
|
SOPInstanceUID,
|
|
790
790
|
SeriesInstanceUID,
|
|
791
791
|
frameNumber
|
|
792
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
792
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
793
793
|
const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
794
794
|
const {
|
|
795
795
|
SeriesNumber
|
|
@@ -872,7 +872,7 @@ function getDisplayText(mappedAnnotations, displaySet) {
|
|
|
872
872
|
if (length === null || length === undefined) {
|
|
873
873
|
return displayText;
|
|
874
874
|
}
|
|
875
|
-
const roundedLength = src
|
|
875
|
+
const roundedLength = src/* utils */.Wp.roundNumber(length, 2);
|
|
876
876
|
displayText.push(`${roundedLength} ${unit} (S: ${SeriesNumber}${instanceText}${frameText})`);
|
|
877
877
|
return displayText;
|
|
878
878
|
}
|
|
@@ -969,7 +969,7 @@ const Bidirectional = {
|
|
|
969
969
|
SOPInstanceUID,
|
|
970
970
|
SeriesInstanceUID,
|
|
971
971
|
StudyInstanceUID
|
|
972
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
972
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
|
|
973
973
|
let displaySet;
|
|
974
974
|
if (SOPInstanceUID) {
|
|
975
975
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1029,7 +1029,7 @@ function Bidirectional_getMappedAnnotations(annotation, displaySetService) {
|
|
|
1029
1029
|
SOPInstanceUID,
|
|
1030
1030
|
SeriesInstanceUID,
|
|
1031
1031
|
frameNumber
|
|
1032
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1032
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1033
1033
|
const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1034
1034
|
const {
|
|
1035
1035
|
SeriesNumber
|
|
@@ -1104,8 +1104,8 @@ function Bidirectional_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1104
1104
|
SOPInstanceUID,
|
|
1105
1105
|
frameNumber
|
|
1106
1106
|
} = mappedAnnotations[0];
|
|
1107
|
-
const roundedLength = src
|
|
1108
|
-
const roundedWidth = src
|
|
1107
|
+
const roundedLength = src/* utils */.Wp.roundNumber(length, 2);
|
|
1108
|
+
const roundedWidth = src/* utils */.Wp.roundNumber(width, 2);
|
|
1109
1109
|
const instance = displaySet.images.find(image => image.SOPInstanceUID === SOPInstanceUID);
|
|
1110
1110
|
let InstanceNumber;
|
|
1111
1111
|
if (instance) {
|
|
@@ -1152,7 +1152,7 @@ const EllipticalROI = {
|
|
|
1152
1152
|
SOPInstanceUID,
|
|
1153
1153
|
SeriesInstanceUID,
|
|
1154
1154
|
StudyInstanceUID
|
|
1155
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1155
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
|
|
1156
1156
|
let displaySet;
|
|
1157
1157
|
if (SOPInstanceUID) {
|
|
1158
1158
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1212,7 +1212,7 @@ function EllipticalROI_getMappedAnnotations(annotation, displaySetService) {
|
|
|
1212
1212
|
SOPInstanceUID,
|
|
1213
1213
|
SeriesInstanceUID,
|
|
1214
1214
|
frameNumber
|
|
1215
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1215
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1216
1216
|
const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1217
1217
|
const {
|
|
1218
1218
|
SeriesNumber
|
|
@@ -1306,7 +1306,7 @@ function EllipticalROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1306
1306
|
}
|
|
1307
1307
|
const instanceText = InstanceNumber ? ` I: ${InstanceNumber}` : '';
|
|
1308
1308
|
const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : '';
|
|
1309
|
-
const roundedArea = src
|
|
1309
|
+
const roundedArea = src/* utils */.Wp.roundNumber(area, 2);
|
|
1310
1310
|
displayText.push(`${roundedArea} ${utils_getDisplayUnit(areaUnit)}`);
|
|
1311
1311
|
|
|
1312
1312
|
// Todo: we need a better UI for displaying all these information
|
|
@@ -1318,7 +1318,7 @@ function EllipticalROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1318
1318
|
} = mappedAnnotation;
|
|
1319
1319
|
let maxStr = '';
|
|
1320
1320
|
if (max) {
|
|
1321
|
-
const roundedMax = src
|
|
1321
|
+
const roundedMax = src/* utils */.Wp.roundNumber(max, 2);
|
|
1322
1322
|
maxStr = `Max: ${roundedMax} <small>${utils_getDisplayUnit(unit)}</small> `;
|
|
1323
1323
|
}
|
|
1324
1324
|
const str = `${maxStr}(S:${SeriesNumber}${instanceText}${frameText})`;
|
|
@@ -1363,7 +1363,7 @@ const CircleROI = {
|
|
|
1363
1363
|
SOPInstanceUID,
|
|
1364
1364
|
SeriesInstanceUID,
|
|
1365
1365
|
StudyInstanceUID
|
|
1366
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1366
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
|
|
1367
1367
|
let displaySet;
|
|
1368
1368
|
if (SOPInstanceUID) {
|
|
1369
1369
|
displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1423,7 +1423,7 @@ function CircleROI_getMappedAnnotations(annotation, DisplaySetService) {
|
|
|
1423
1423
|
SOPInstanceUID,
|
|
1424
1424
|
SeriesInstanceUID,
|
|
1425
1425
|
frameNumber
|
|
1426
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1426
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1427
1427
|
const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1428
1428
|
const {
|
|
1429
1429
|
SeriesNumber
|
|
@@ -1519,7 +1519,7 @@ function CircleROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1519
1519
|
const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : '';
|
|
1520
1520
|
|
|
1521
1521
|
// Area sometimes becomes undefined if `preventHandleOutsideImage` is off.
|
|
1522
|
-
const roundedArea = src
|
|
1522
|
+
const roundedArea = src/* utils */.Wp.roundNumber(area || 0, 2);
|
|
1523
1523
|
displayText.push(`${roundedArea} ${utils_getDisplayUnit(areaUnit)}`);
|
|
1524
1524
|
|
|
1525
1525
|
// Todo: we need a better UI for displaying all these information
|
|
@@ -1531,7 +1531,7 @@ function CircleROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1531
1531
|
} = mappedAnnotation;
|
|
1532
1532
|
let maxStr = '';
|
|
1533
1533
|
if (max) {
|
|
1534
|
-
const roundedMax = src
|
|
1534
|
+
const roundedMax = src/* utils */.Wp.roundNumber(max, 2);
|
|
1535
1535
|
maxStr = `Max: ${roundedMax} <small>${utils_getDisplayUnit(unit)}</small> `;
|
|
1536
1536
|
}
|
|
1537
1537
|
const str = `${maxStr}(S:${SeriesNumber}${instanceText}${frameText})`;
|
|
@@ -1580,7 +1580,7 @@ const ArrowAnnotate_Length = {
|
|
|
1580
1580
|
SOPInstanceUID,
|
|
1581
1581
|
SeriesInstanceUID,
|
|
1582
1582
|
StudyInstanceUID
|
|
1583
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1583
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
|
|
1584
1584
|
let displaySet;
|
|
1585
1585
|
if (SOPInstanceUID) {
|
|
1586
1586
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1631,7 +1631,7 @@ function ArrowAnnotate_getMappedAnnotations(annotation, displaySetService) {
|
|
|
1631
1631
|
SOPInstanceUID,
|
|
1632
1632
|
SeriesInstanceUID,
|
|
1633
1633
|
frameNumber
|
|
1634
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1634
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1635
1635
|
const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1636
1636
|
const {
|
|
1637
1637
|
SeriesNumber
|
|
@@ -1708,7 +1708,7 @@ const CobbAngle = {
|
|
|
1708
1708
|
SOPInstanceUID,
|
|
1709
1709
|
SeriesInstanceUID,
|
|
1710
1710
|
StudyInstanceUID
|
|
1711
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1711
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
|
|
1712
1712
|
let displaySet;
|
|
1713
1713
|
if (SOPInstanceUID) {
|
|
1714
1714
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1767,7 +1767,7 @@ function CobbAngle_getMappedAnnotations(annotation, DisplaySetService) {
|
|
|
1767
1767
|
SOPInstanceUID,
|
|
1768
1768
|
SeriesInstanceUID,
|
|
1769
1769
|
frameNumber
|
|
1770
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1770
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1771
1771
|
const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1772
1772
|
const {
|
|
1773
1773
|
SeriesNumber
|
|
@@ -1848,7 +1848,7 @@ function CobbAngle_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
1848
1848
|
if (angle === undefined) {
|
|
1849
1849
|
return displayText;
|
|
1850
1850
|
}
|
|
1851
|
-
const roundedAngle = src
|
|
1851
|
+
const roundedAngle = src/* utils */.Wp.roundNumber(angle, 2);
|
|
1852
1852
|
displayText.push(`${roundedAngle} ${utils_getDisplayUnit(unit)} (S: ${SeriesNumber}${instanceText}${frameText})`);
|
|
1853
1853
|
return displayText;
|
|
1854
1854
|
}
|
|
@@ -1893,7 +1893,7 @@ const Angle = {
|
|
|
1893
1893
|
SOPInstanceUID,
|
|
1894
1894
|
SeriesInstanceUID,
|
|
1895
1895
|
StudyInstanceUID
|
|
1896
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1896
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
|
|
1897
1897
|
let displaySet;
|
|
1898
1898
|
if (SOPInstanceUID) {
|
|
1899
1899
|
displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -1952,7 +1952,7 @@ function Angle_getMappedAnnotations(annotation, DisplaySetService) {
|
|
|
1952
1952
|
SOPInstanceUID,
|
|
1953
1953
|
SeriesInstanceUID,
|
|
1954
1954
|
frameNumber
|
|
1955
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
1955
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
1956
1956
|
const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
1957
1957
|
const {
|
|
1958
1958
|
SeriesNumber
|
|
@@ -2033,7 +2033,7 @@ function Angle_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
2033
2033
|
if (angle === undefined) {
|
|
2034
2034
|
return displayText;
|
|
2035
2035
|
}
|
|
2036
|
-
const roundedAngle = src
|
|
2036
|
+
const roundedAngle = src/* utils */.Wp.roundNumber(angle, 2);
|
|
2037
2037
|
displayText.push(`${roundedAngle} ${utils_getDisplayUnit(unit)} (S: ${SeriesNumber}${instanceText}${frameText})`);
|
|
2038
2038
|
return displayText;
|
|
2039
2039
|
}
|
|
@@ -2076,7 +2076,7 @@ const PlanarFreehandROI = {
|
|
|
2076
2076
|
SOPInstanceUID,
|
|
2077
2077
|
SeriesInstanceUID,
|
|
2078
2078
|
StudyInstanceUID
|
|
2079
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
2079
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
|
|
2080
2080
|
let displaySet;
|
|
2081
2081
|
if (SOPInstanceUID) {
|
|
2082
2082
|
displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -2135,7 +2135,7 @@ function PlanarFreehandROI_getMappedAnnotations(annotationData, DisplaySetServic
|
|
|
2135
2135
|
const {
|
|
2136
2136
|
SOPInstanceUID: _SOPInstanceUID,
|
|
2137
2137
|
SeriesInstanceUID: _SeriesInstanceUID
|
|
2138
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
2138
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId) || {};
|
|
2139
2139
|
if (!_SOPInstanceUID || !_SeriesInstanceUID) {
|
|
2140
2140
|
return annotations;
|
|
2141
2141
|
}
|
|
@@ -2208,7 +2208,7 @@ const RectangleROI = {
|
|
|
2208
2208
|
SOPInstanceUID,
|
|
2209
2209
|
SeriesInstanceUID,
|
|
2210
2210
|
StudyInstanceUID
|
|
2211
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
2211
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
|
|
2212
2212
|
let displaySet;
|
|
2213
2213
|
if (SOPInstanceUID) {
|
|
2214
2214
|
displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
|
|
@@ -2268,7 +2268,7 @@ function RectangleROI_getMappedAnnotations(annotation, DisplaySetService) {
|
|
|
2268
2268
|
SOPInstanceUID,
|
|
2269
2269
|
SeriesInstanceUID,
|
|
2270
2270
|
frameNumber
|
|
2271
|
-
} = (0,getSOPInstanceAttributes/* default */.
|
|
2271
|
+
} = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
|
|
2272
2272
|
const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
|
|
2273
2273
|
const {
|
|
2274
2274
|
SeriesNumber
|
|
@@ -2364,7 +2364,7 @@ function RectangleROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
2364
2364
|
const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : '';
|
|
2365
2365
|
|
|
2366
2366
|
// Area sometimes becomes undefined if `preventHandleOutsideImage` is off.
|
|
2367
|
-
const roundedArea = src
|
|
2367
|
+
const roundedArea = src/* utils */.Wp.roundNumber(area || 0, 2);
|
|
2368
2368
|
displayText.push(`${roundedArea} ${utils_getDisplayUnit(areaUnit)}`);
|
|
2369
2369
|
|
|
2370
2370
|
// Todo: we need a better UI for displaying all these information
|
|
@@ -2376,7 +2376,7 @@ function RectangleROI_getDisplayText(mappedAnnotations, displaySet) {
|
|
|
2376
2376
|
} = mappedAnnotation;
|
|
2377
2377
|
let maxStr = '';
|
|
2378
2378
|
if (max) {
|
|
2379
|
-
const roundedMax = src
|
|
2379
|
+
const roundedMax = src/* utils */.Wp.roundNumber(max, 2);
|
|
2380
2380
|
maxStr = `Max: ${roundedMax} <small>${utils_getDisplayUnit(unit)}</small> `;
|
|
2381
2381
|
}
|
|
2382
2382
|
const str = `${maxStr}(S:${SeriesNumber}${instanceText}${frameText})`;
|
|
@@ -2416,7 +2416,7 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
|
|
|
2416
2416
|
BIDIRECTIONAL,
|
|
2417
2417
|
POINT,
|
|
2418
2418
|
ANGLE
|
|
2419
|
-
} = src
|
|
2419
|
+
} = src/* MeasurementService */.C5.VALUE_TYPES;
|
|
2420
2420
|
|
|
2421
2421
|
// TODO -> I get why this was attempted, but its not nearly flexible enough.
|
|
2422
2422
|
// A single measurement may have an ellipse + a bidirectional measurement, for instances.
|
|
@@ -2439,7 +2439,7 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
|
|
|
2439
2439
|
toAnnotation: measurementServiceMappings_Length.toAnnotation,
|
|
2440
2440
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_Length.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2441
2441
|
matchingCriteria: [{
|
|
2442
|
-
valueType: src
|
|
2442
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POLYLINE,
|
|
2443
2443
|
points: 2
|
|
2444
2444
|
}]
|
|
2445
2445
|
},
|
|
@@ -2450,10 +2450,10 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
|
|
|
2450
2450
|
// TODO -> We should eventually do something like shortAxis + longAxis,
|
|
2451
2451
|
// But its still a little unclear how these automatic interpretations will work.
|
|
2452
2452
|
{
|
|
2453
|
-
valueType: src
|
|
2453
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POLYLINE,
|
|
2454
2454
|
points: 2
|
|
2455
2455
|
}, {
|
|
2456
|
-
valueType: src
|
|
2456
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POLYLINE,
|
|
2457
2457
|
points: 2
|
|
2458
2458
|
}]
|
|
2459
2459
|
},
|
|
@@ -2461,35 +2461,35 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
|
|
|
2461
2461
|
toAnnotation: measurementServiceMappings_EllipticalROI.toAnnotation,
|
|
2462
2462
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_EllipticalROI.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2463
2463
|
matchingCriteria: [{
|
|
2464
|
-
valueType: src
|
|
2464
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.ELLIPSE
|
|
2465
2465
|
}]
|
|
2466
2466
|
},
|
|
2467
2467
|
CircleROI: {
|
|
2468
2468
|
toAnnotation: measurementServiceMappings_CircleROI.toAnnotation,
|
|
2469
2469
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_CircleROI.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2470
2470
|
matchingCriteria: [{
|
|
2471
|
-
valueType: src
|
|
2471
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.CIRCLE
|
|
2472
2472
|
}]
|
|
2473
2473
|
},
|
|
2474
2474
|
RectangleROI: {
|
|
2475
2475
|
toAnnotation: measurementServiceMappings_RectangleROI.toAnnotation,
|
|
2476
2476
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_RectangleROI.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2477
2477
|
matchingCriteria: [{
|
|
2478
|
-
valueType: src
|
|
2478
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POLYLINE
|
|
2479
2479
|
}]
|
|
2480
2480
|
},
|
|
2481
2481
|
PlanarFreehandROI: {
|
|
2482
2482
|
toAnnotation: measurementServiceMappings_PlanarFreehandROI.toAnnotation,
|
|
2483
2483
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_PlanarFreehandROI.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2484
2484
|
matchingCriteria: [{
|
|
2485
|
-
valueType: src
|
|
2485
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POLYLINE
|
|
2486
2486
|
}]
|
|
2487
2487
|
},
|
|
2488
2488
|
ArrowAnnotate: {
|
|
2489
2489
|
toAnnotation: ArrowAnnotate.toAnnotation,
|
|
2490
2490
|
toMeasurement: csToolsAnnotation => ArrowAnnotate.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2491
2491
|
matchingCriteria: [{
|
|
2492
|
-
valueType: src
|
|
2492
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.POINT,
|
|
2493
2493
|
points: 1
|
|
2494
2494
|
}]
|
|
2495
2495
|
},
|
|
@@ -2497,14 +2497,14 @@ const measurementServiceMappingsFactory = (measurementService, displaySetService
|
|
|
2497
2497
|
toAnnotation: measurementServiceMappings_CobbAngle.toAnnotation,
|
|
2498
2498
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_CobbAngle.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2499
2499
|
matchingCriteria: [{
|
|
2500
|
-
valueType: src
|
|
2500
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.ANGLE
|
|
2501
2501
|
}]
|
|
2502
2502
|
},
|
|
2503
2503
|
Angle: {
|
|
2504
2504
|
toAnnotation: measurementServiceMappings_Angle.toAnnotation,
|
|
2505
2505
|
toMeasurement: csToolsAnnotation => measurementServiceMappings_Angle.toMeasurement(csToolsAnnotation, displaySetService, cornerstoneViewportService, _getValueTypeFromToolType),
|
|
2506
2506
|
matchingCriteria: [{
|
|
2507
|
-
valueType: src
|
|
2507
|
+
valueType: src/* MeasurementService */.C5.VALUE_TYPES.ANGLE
|
|
2508
2508
|
}]
|
|
2509
2509
|
}
|
|
2510
2510
|
};
|
|
@@ -2763,12 +2763,12 @@ const connectMeasurementServiceToTools = (measurementService, cornerstoneViewpor
|
|
|
2763
2763
|
referenceStudyUID,
|
|
2764
2764
|
SOPInstanceUID
|
|
2765
2765
|
} = measurement;
|
|
2766
|
-
const instance = src
|
|
2766
|
+
const instance = src/* DicomMetadataStore */.H8.getInstance(referenceStudyUID, referenceSeriesUID, SOPInstanceUID);
|
|
2767
2767
|
let imageId;
|
|
2768
2768
|
let frameNumber = 1;
|
|
2769
2769
|
if (measurement?.metadata?.referencedImageId) {
|
|
2770
2770
|
imageId = measurement.metadata.referencedImageId;
|
|
2771
|
-
frameNumber = (0,getSOPInstanceAttributes/* default */.
|
|
2771
|
+
frameNumber = (0,getSOPInstanceAttributes/* default */.A)(measurement.metadata.referencedImageId).frameNumber;
|
|
2772
2772
|
} else {
|
|
2773
2773
|
imageId = dataSource.getImageIdsForInstance({
|
|
2774
2774
|
instance
|
|
@@ -2880,7 +2880,7 @@ function getInterleavedFrames(imageIds) {
|
|
|
2880
2880
|
return imageIdsToPrefetch;
|
|
2881
2881
|
}
|
|
2882
2882
|
// EXTERNAL MODULE: ../../../node_modules/lodash/lodash.js
|
|
2883
|
-
var lodash = __webpack_require__(
|
|
2883
|
+
var lodash = __webpack_require__(5517);
|
|
2884
2884
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/interleaveCenterLoader.ts
|
|
2885
2885
|
|
|
2886
2886
|
|
|
@@ -3413,7 +3413,7 @@ function initContextMenu({
|
|
|
3413
3413
|
return;
|
|
3414
3414
|
}
|
|
3415
3415
|
// TODO check update upstream
|
|
3416
|
-
(0,state/* setEnabledElement */.
|
|
3416
|
+
(0,state/* setEnabledElement */.ye)(viewportId, element);
|
|
3417
3417
|
element.addEventListener(cs3DToolsEvents.MOUSE_CLICK, cornerstoneViewportHandleClick);
|
|
3418
3418
|
}
|
|
3419
3419
|
function elementDisabledHandler(evt) {
|
|
@@ -3500,7 +3500,7 @@ function initDoubleClick({
|
|
|
3500
3500
|
|
|
3501
3501
|
const {
|
|
3502
3502
|
TimingEnum
|
|
3503
|
-
} = src
|
|
3503
|
+
} = src/* Types */.Or;
|
|
3504
3504
|
const IMAGE_TIMING_KEYS = [TimingEnum.DISPLAY_SETS_TO_ALL_IMAGES, TimingEnum.DISPLAY_SETS_TO_FIRST_IMAGE, TimingEnum.STUDY_TO_FIRST_IMAGE];
|
|
3505
3505
|
const imageTiming = {
|
|
3506
3506
|
viewportsWaiting: 0
|
|
@@ -3518,7 +3518,7 @@ const imageTiming = {
|
|
|
3518
3518
|
function initViewTiming({
|
|
3519
3519
|
element
|
|
3520
3520
|
}) {
|
|
3521
|
-
if (!IMAGE_TIMING_KEYS.find(key => src/* log */.
|
|
3521
|
+
if (!IMAGE_TIMING_KEYS.find(key => src/* log */.Rm.timingKeys[key])) {
|
|
3522
3522
|
return;
|
|
3523
3523
|
}
|
|
3524
3524
|
imageTiming.viewportsWaiting += 1;
|
|
@@ -3528,13 +3528,13 @@ function imageRenderedListener(evt) {
|
|
|
3528
3528
|
if (evt.detail.viewportStatus === 'preRender') {
|
|
3529
3529
|
return;
|
|
3530
3530
|
}
|
|
3531
|
-
src/* log */.
|
|
3532
|
-
src/* log */.
|
|
3533
|
-
src/* log */.
|
|
3531
|
+
src/* log */.Rm.timeEnd(TimingEnum.DISPLAY_SETS_TO_FIRST_IMAGE);
|
|
3532
|
+
src/* log */.Rm.timeEnd(TimingEnum.STUDY_TO_FIRST_IMAGE);
|
|
3533
|
+
src/* log */.Rm.timeEnd(TimingEnum.SCRIPT_TO_VIEW);
|
|
3534
3534
|
imageTiming.viewportsWaiting -= 1;
|
|
3535
3535
|
evt.detail.element.removeEventListener(esm.EVENTS.IMAGE_RENDERED, imageRenderedListener);
|
|
3536
3536
|
if (!imageTiming.viewportsWaiting) {
|
|
3537
|
-
src/* log */.
|
|
3537
|
+
src/* log */.Rm.timeEnd(TimingEnum.DISPLAY_SETS_TO_ALL_IMAGES);
|
|
3538
3538
|
}
|
|
3539
3539
|
}
|
|
3540
3540
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/init.tsx
|
|
@@ -3664,8 +3664,8 @@ async function init({
|
|
|
3664
3664
|
outlineOpacity: 1,
|
|
3665
3665
|
outlineOpacityInactive: 0.65
|
|
3666
3666
|
});
|
|
3667
|
-
const metadataProvider = src
|
|
3668
|
-
esm.volumeLoader.registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.
|
|
3667
|
+
const metadataProvider = src/* default.classes */.Ay.classes.MetadataProvider;
|
|
3668
|
+
esm.volumeLoader.registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.FC);
|
|
3669
3669
|
hangingProtocolService.registerImageLoadStrategy('interleaveCenter', interleaveCenterLoader);
|
|
3670
3670
|
hangingProtocolService.registerImageLoadStrategy('interleaveTopToBottom', interleaveTopToBottom);
|
|
3671
3671
|
hangingProtocolService.registerImageLoadStrategy('nth', interleaveNthLoader);
|
|
@@ -3704,6 +3704,16 @@ async function init({
|
|
|
3704
3704
|
cornerstoneViewportService.setVolumesForViewport(viewport, volumeInputArray, presentations);
|
|
3705
3705
|
}
|
|
3706
3706
|
});
|
|
3707
|
+
|
|
3708
|
+
// resize the cornerstone viewport service when the grid size changes
|
|
3709
|
+
// IMPORTANT: this should happen outside of the OHIFCornerstoneViewport
|
|
3710
|
+
// since it will trigger a rerender of each viewport and each resizing
|
|
3711
|
+
// the offscreen canvas which would result in a performance hit, this should
|
|
3712
|
+
// done only once per grid resize here. Doing it once here, allows us to reduce
|
|
3713
|
+
// the refreshRage(in ms) to 10 from 50. I tried with even 1 or 5 ms it worked fine
|
|
3714
|
+
viewportGridService.subscribe(viewportGridService.EVENTS.GRID_SIZE_CHANGED, () => {
|
|
3715
|
+
cornerstoneViewportService.resize(true);
|
|
3716
|
+
});
|
|
3707
3717
|
src_initContextMenu({
|
|
3708
3718
|
cornerstoneViewportService,
|
|
3709
3719
|
customizationService,
|
|
@@ -3767,7 +3777,7 @@ async function init({
|
|
|
3767
3777
|
const imageLoadFailedHandler = ({
|
|
3768
3778
|
detail
|
|
3769
3779
|
}) => {
|
|
3770
|
-
const handler = src/* errorHandler */.
|
|
3780
|
+
const handler = src/* errorHandler */.r_.getHTTPErrorHandler();
|
|
3771
3781
|
handler(detail.error);
|
|
3772
3782
|
};
|
|
3773
3783
|
const resetCrosshairs = evt => {
|
|
@@ -3849,12 +3859,12 @@ function _showCPURenderingModal(uiModalService, hangingProtocolService) {
|
|
|
3849
3859
|
});
|
|
3850
3860
|
}
|
|
3851
3861
|
// EXTERNAL MODULE: ../../../node_modules/react-dropzone/dist/es/index.js + 5 modules
|
|
3852
|
-
var es = __webpack_require__(
|
|
3862
|
+
var es = __webpack_require__(5013);
|
|
3853
3863
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
3854
|
-
var prop_types = __webpack_require__(
|
|
3864
|
+
var prop_types = __webpack_require__(11374);
|
|
3855
3865
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
3856
3866
|
// EXTERNAL MODULE: ../../../node_modules/classnames/index.js
|
|
3857
|
-
var classnames = __webpack_require__(
|
|
3867
|
+
var classnames = __webpack_require__(61466);
|
|
3858
3868
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
3859
3869
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/DicomFileUploader.ts
|
|
3860
3870
|
|
|
@@ -3878,7 +3888,7 @@ class UploadRejection {
|
|
|
3878
3888
|
this.status = status;
|
|
3879
3889
|
}
|
|
3880
3890
|
}
|
|
3881
|
-
class DicomFileUploader extends src/* PubSubService */.
|
|
3891
|
+
class DicomFileUploader extends src/* PubSubService */.Rc {
|
|
3882
3892
|
constructor(file, dataSource) {
|
|
3883
3893
|
super(EVENTS);
|
|
3884
3894
|
this._file = void 0;
|
|
@@ -4042,20 +4052,20 @@ const DicomUploadProgressItem = /*#__PURE__*/(0,react.memo)(({
|
|
|
4042
4052
|
const getStatusIcon = () => {
|
|
4043
4053
|
switch (dicomFileUploader.getStatus()) {
|
|
4044
4054
|
case UploadStatus.Success:
|
|
4045
|
-
return /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4055
|
+
return /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4046
4056
|
name: "status-tracked",
|
|
4047
4057
|
className: "text-primary-light"
|
|
4048
4058
|
});
|
|
4049
4059
|
case UploadStatus.InProgress:
|
|
4050
|
-
return /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4060
|
+
return /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4051
4061
|
name: "icon-transferring"
|
|
4052
4062
|
});
|
|
4053
4063
|
case UploadStatus.Failed:
|
|
4054
|
-
return /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4064
|
+
return /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4055
4065
|
name: "icon-alert-small"
|
|
4056
4066
|
});
|
|
4057
4067
|
case UploadStatus.Cancelled:
|
|
4058
|
-
return /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4068
|
+
return /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4059
4069
|
name: "icon-alert-outline"
|
|
4060
4070
|
});
|
|
4061
4071
|
default:
|
|
@@ -4080,7 +4090,7 @@ const DicomUploadProgressItem = /*#__PURE__*/(0,react.memo)(({
|
|
|
4080
4090
|
className: "w-10 text-right"
|
|
4081
4091
|
}, percentComplete, "%"), /*#__PURE__*/react.createElement("div", {
|
|
4082
4092
|
className: "ml-auto flex cursor-pointer"
|
|
4083
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4093
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4084
4094
|
className: "text-primary-active self-center",
|
|
4085
4095
|
name: "close",
|
|
4086
4096
|
onClick: cancelUpload
|
|
@@ -4310,7 +4320,7 @@ function DicomUploadProgress({
|
|
|
4310
4320
|
className: "bg-primary-dark flex h-14 items-center px-1 pb-4 text-lg"
|
|
4311
4321
|
}, numFilesCompleted === dicomFileUploaderArr.length ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
|
|
4312
4322
|
className: NO_WRAP_ELLIPSIS_CLASS_NAMES
|
|
4313
|
-
}, `${dicomFileUploaderArr.length} ${dicomFileUploaderArr.length > 1 ? 'files' : 'file'} completed.`), /*#__PURE__*/react.createElement(ui_src/* Button
|
|
4323
|
+
}, `${dicomFileUploaderArr.length} ${dicomFileUploaderArr.length > 1 ? 'files' : 'file'} completed.`), /*#__PURE__*/react.createElement(ui_src/* Button */.$n, {
|
|
4314
4324
|
disabled: false,
|
|
4315
4325
|
className: "ml-auto",
|
|
4316
4326
|
onClick: onComplete
|
|
@@ -4331,7 +4341,7 @@ function DicomUploadProgress({
|
|
|
4331
4341
|
className: "ml-auto flex w-6 justify-center"
|
|
4332
4342
|
}, numFails > 0 && /*#__PURE__*/react.createElement("div", {
|
|
4333
4343
|
onClick: () => setShowFailedOnly(currentShowFailedOnly => !currentShowFailedOnly)
|
|
4334
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
4344
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
|
|
4335
4345
|
className: "cursor-pointer",
|
|
4336
4346
|
name: "icon-status-alert"
|
|
4337
4347
|
})));
|
|
@@ -4346,7 +4356,7 @@ function DicomUploadProgress({
|
|
|
4346
4356
|
}, numFails > 0 ? `Completed with ${numFails} ${numFails > 1 ? 'errors' : 'error'}!` : 'Completed!'), getShowFailedOnlyIconComponent()) : /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
4347
4357
|
ref: progressBarContainerRef,
|
|
4348
4358
|
className: "flex-grow"
|
|
4349
|
-
}, /*#__PURE__*/react.createElement(ui_src/* ProgressLoadingBar */.
|
|
4359
|
+
}, /*#__PURE__*/react.createElement(ui_src/* ProgressLoadingBar */.dD, {
|
|
4350
4360
|
progress: showInfiniteProgressBar() ? undefined : Math.min(100, percentComplete)
|
|
4351
4361
|
})), /*#__PURE__*/react.createElement("div", {
|
|
4352
4362
|
className: "ml-1 flex w-24 items-center"
|
|
@@ -4395,7 +4405,7 @@ function DicomUpload({
|
|
|
4395
4405
|
setDicomFileUploaderArr(acceptedFiles.map(file => new DicomFileUploader(file, dataSource)));
|
|
4396
4406
|
}, []);
|
|
4397
4407
|
const getDropZoneComponent = () => {
|
|
4398
|
-
return /*#__PURE__*/react.createElement(es/* default */.
|
|
4408
|
+
return /*#__PURE__*/react.createElement(es/* default */.A, {
|
|
4399
4409
|
onDrop: acceptedFiles => {
|
|
4400
4410
|
onDrop(acceptedFiles);
|
|
4401
4411
|
},
|
|
@@ -4406,23 +4416,23 @@ function DicomUpload({
|
|
|
4406
4416
|
className: "dicom-upload-drop-area-border-dash m-5 flex h-full flex-col items-center justify-center"
|
|
4407
4417
|
}), /*#__PURE__*/react.createElement("div", {
|
|
4408
4418
|
className: "flex gap-3"
|
|
4409
|
-
}, /*#__PURE__*/react.createElement(es/* default */.
|
|
4419
|
+
}, /*#__PURE__*/react.createElement(es/* default */.A, {
|
|
4410
4420
|
onDrop: onDrop,
|
|
4411
4421
|
noDrag: true
|
|
4412
4422
|
}, ({
|
|
4413
4423
|
getRootProps,
|
|
4414
4424
|
getInputProps
|
|
4415
|
-
}) => /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button
|
|
4425
|
+
}) => /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button */.$n, {
|
|
4416
4426
|
disabled: false,
|
|
4417
4427
|
onClick: () => {}
|
|
4418
|
-
}, 'Add files', /*#__PURE__*/react.createElement("input", getInputProps())))), /*#__PURE__*/react.createElement(es/* default */.
|
|
4428
|
+
}, 'Add files', /*#__PURE__*/react.createElement("input", getInputProps())))), /*#__PURE__*/react.createElement(es/* default */.A, {
|
|
4419
4429
|
onDrop: onDrop,
|
|
4420
4430
|
noDrag: true
|
|
4421
4431
|
}, ({
|
|
4422
4432
|
getRootProps,
|
|
4423
4433
|
getInputProps
|
|
4424
|
-
}) => /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button
|
|
4425
|
-
type: ui_src/* ButtonEnums.type */.
|
|
4434
|
+
}) => /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button */.$n, {
|
|
4435
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
4426
4436
|
disabled: false,
|
|
4427
4437
|
onClick: () => {}
|
|
4428
4438
|
}, 'Add folder', /*#__PURE__*/react.createElement("input", _extends({}, getInputProps(), {
|
|
@@ -4494,9 +4504,9 @@ function getCustomizationModule() {
|
|
|
4494
4504
|
}
|
|
4495
4505
|
/* harmony default export */ const src_getCustomizationModule = (getCustomizationModule);
|
|
4496
4506
|
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
|
|
4497
|
-
var gl_matrix_esm = __webpack_require__(
|
|
4507
|
+
var gl_matrix_esm = __webpack_require__(83636);
|
|
4498
4508
|
// EXTERNAL MODULE: ../../../node_modules/html2canvas/dist/html2canvas.esm.js
|
|
4499
|
-
var html2canvas_esm = __webpack_require__(
|
|
4509
|
+
var html2canvas_esm = __webpack_require__(90445);
|
|
4500
4510
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx
|
|
4501
4511
|
|
|
4502
4512
|
|
|
@@ -4514,7 +4524,7 @@ const CornerstoneViewportDownloadForm = ({
|
|
|
4514
4524
|
activeViewportId: activeViewportIdProp,
|
|
4515
4525
|
cornerstoneViewportService
|
|
4516
4526
|
}) => {
|
|
4517
|
-
const enabledElement = (0,state/* getEnabledElement */.
|
|
4527
|
+
const enabledElement = (0,state/* getEnabledElement */.kJ)(activeViewportIdProp);
|
|
4518
4528
|
const activeViewportElement = enabledElement?.element;
|
|
4519
4529
|
const activeViewportEnabledElement = (0,esm.getEnabledElement)(activeViewportElement);
|
|
4520
4530
|
const {
|
|
@@ -4591,6 +4601,7 @@ const CornerstoneViewportDownloadForm = ({
|
|
|
4591
4601
|
renderingEngine.resize();
|
|
4592
4602
|
|
|
4593
4603
|
// Trigger the render on the viewport to update the on screen
|
|
4604
|
+
downloadViewport.resetCamera();
|
|
4594
4605
|
downloadViewport.render();
|
|
4595
4606
|
downloadViewportElement.addEventListener(esm.Enums.Events.IMAGE_RENDERED, function updateViewport(event) {
|
|
4596
4607
|
const enabledElement = (0,esm.getEnabledElement)(event.target);
|
|
@@ -4697,19 +4708,18 @@ const CornerstoneViewportDownloadForm = ({
|
|
|
4697
4708
|
const downloadBlob = (filename, fileType) => {
|
|
4698
4709
|
const file = `${filename}.${fileType}`;
|
|
4699
4710
|
const divForDownloadViewport = document.querySelector(`div[data-viewport-uid="${VIEWPORT_ID}"]`);
|
|
4700
|
-
(0,html2canvas_esm/* default */.
|
|
4711
|
+
(0,html2canvas_esm/* default */.A)(divForDownloadViewport).then(canvas => {
|
|
4701
4712
|
const link = document.createElement('a');
|
|
4702
4713
|
link.download = file;
|
|
4703
4714
|
link.href = canvas.toDataURL(fileType, 1.0);
|
|
4704
4715
|
link.click();
|
|
4705
4716
|
});
|
|
4706
4717
|
};
|
|
4707
|
-
return /*#__PURE__*/react.createElement(ui_src/* ViewportDownloadForm */.
|
|
4718
|
+
return /*#__PURE__*/react.createElement(ui_src/* ViewportDownloadForm */.VS, {
|
|
4708
4719
|
onClose: onClose,
|
|
4709
4720
|
minimumSize: MINIMUM_SIZE,
|
|
4710
4721
|
maximumSize: MAX_TEXTURE_SIZE,
|
|
4711
4722
|
defaultSize: DEFAULT_SIZE,
|
|
4712
|
-
canvasClass: 'cornerstone-canvas',
|
|
4713
4723
|
activeViewportElement: activeViewportElement,
|
|
4714
4724
|
enableViewport: enableViewport,
|
|
4715
4725
|
disableViewport: disableViewport,
|
|
@@ -5200,9 +5210,9 @@ function commandsModule({
|
|
|
5200
5210
|
if (viewport instanceof esm.BaseVolumeViewport) {
|
|
5201
5211
|
const camera = viewport.getCamera();
|
|
5202
5212
|
const rotAngle = rotation * Math.PI / 180;
|
|
5203
|
-
const rotMat = gl_matrix_esm/* mat4.identity */.
|
|
5204
|
-
gl_matrix_esm/* mat4.rotate */.
|
|
5205
|
-
const rotatedViewUp = gl_matrix_esm/* vec3.transformMat4 */.
|
|
5213
|
+
const rotMat = gl_matrix_esm/* mat4.identity */.pB.identity(new Float32Array(16));
|
|
5214
|
+
gl_matrix_esm/* mat4.rotate */.pB.rotate(rotMat, rotMat, rotAngle, camera.viewPlaneNormal);
|
|
5215
|
+
const rotatedViewUp = gl_matrix_esm/* vec3.transformMat4 */.eR.transformMat4(gl_matrix_esm/* vec3.create */.eR.create(), camera.viewUp, rotMat);
|
|
5206
5216
|
viewport.setCamera({
|
|
5207
5217
|
viewUp: rotatedViewUp
|
|
5208
5218
|
});
|
|
@@ -6439,7 +6449,7 @@ class ToolGroupService {
|
|
|
6439
6449
|
this.viewportGridService = viewportGridService;
|
|
6440
6450
|
this.listeners = {};
|
|
6441
6451
|
this.EVENTS = ToolGroupService_EVENTS;
|
|
6442
|
-
Object.assign(this, src/* pubSubServiceInterface */.
|
|
6452
|
+
Object.assign(this, src/* pubSubServiceInterface */.Ml);
|
|
6443
6453
|
}
|
|
6444
6454
|
onModeExit() {
|
|
6445
6455
|
this.destroy();
|
|
@@ -6711,7 +6721,7 @@ class SyncGroupService {
|
|
|
6711
6721
|
this.listeners = {};
|
|
6712
6722
|
this.EVENTS = SyncGroupService_EVENTS;
|
|
6713
6723
|
//
|
|
6714
|
-
Object.assign(this, src/* pubSubServiceInterface */.
|
|
6724
|
+
Object.assign(this, src/* pubSubServiceInterface */.Ml);
|
|
6715
6725
|
}
|
|
6716
6726
|
_createSynchronizer(type, id, options) {
|
|
6717
6727
|
const syncCreator = this.synchronizerCreators[type.toLowerCase()];
|
|
@@ -6811,7 +6821,7 @@ SyncGroupService.REGISTRATION = {
|
|
|
6811
6821
|
|
|
6812
6822
|
/* harmony default export */ const services_SyncGroupService = (SyncGroupService);
|
|
6813
6823
|
// EXTERNAL MODULE: ../../../node_modules/lodash.isequal/index.js
|
|
6814
|
-
var lodash_isequal = __webpack_require__(
|
|
6824
|
+
var lodash_isequal = __webpack_require__(71932);
|
|
6815
6825
|
var lodash_isequal_default = /*#__PURE__*/__webpack_require__.n(lodash_isequal);
|
|
6816
6826
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/transitions.ts
|
|
6817
6827
|
/**
|
|
@@ -6926,7 +6936,7 @@ const SEGMENT_CONSTANT = {
|
|
|
6926
6936
|
isLocked: false
|
|
6927
6937
|
};
|
|
6928
6938
|
const VOLUME_LOADER_SCHEME = 'cornerstoneStreamingImageVolume';
|
|
6929
|
-
class SegmentationService extends src/* PubSubService */.
|
|
6939
|
+
class SegmentationService extends src/* PubSubService */.Rc {
|
|
6930
6940
|
constructor({
|
|
6931
6941
|
servicesManager
|
|
6932
6942
|
}) {
|
|
@@ -8806,6 +8816,12 @@ class ViewportInfo {
|
|
|
8806
8816
|
getViewportOptions() {
|
|
8807
8817
|
return this.viewportOptions;
|
|
8808
8818
|
}
|
|
8819
|
+
getPresentationIds() {
|
|
8820
|
+
const {
|
|
8821
|
+
presentationIds
|
|
8822
|
+
} = this.viewportOptions;
|
|
8823
|
+
return presentationIds;
|
|
8824
|
+
}
|
|
8809
8825
|
setDisplaySetOptions(displaySetOptions) {
|
|
8810
8826
|
this.displaySetOptions = displaySetOptions;
|
|
8811
8827
|
}
|
|
@@ -8892,18 +8908,23 @@ const CornerstoneViewportService_EVENTS = {
|
|
|
8892
8908
|
* Handles cornerstone viewport logic including enabling, disabling, and
|
|
8893
8909
|
* updating the viewport.
|
|
8894
8910
|
*/
|
|
8895
|
-
class CornerstoneViewportService extends src/* PubSubService */.
|
|
8911
|
+
class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
8896
8912
|
constructor(servicesManager) {
|
|
8897
8913
|
super(CornerstoneViewportService_EVENTS);
|
|
8898
8914
|
this.renderingEngine = void 0;
|
|
8899
8915
|
this.viewportsById = new Map();
|
|
8900
8916
|
this.viewportGridResizeObserver = void 0;
|
|
8901
8917
|
this.viewportsDisplaySets = new Map();
|
|
8918
|
+
this.beforeResizePositionPresentations = new Map();
|
|
8902
8919
|
// Some configs
|
|
8903
8920
|
this.enableResizeDetector = void 0;
|
|
8904
8921
|
this.resizeRefreshRateMs = void 0;
|
|
8905
8922
|
this.resizeRefreshMode = void 0;
|
|
8906
8923
|
this.servicesManager = null;
|
|
8924
|
+
this.resizeQueue = [];
|
|
8925
|
+
this.viewportResizeTimer = null;
|
|
8926
|
+
this.gridResizeDelay = 50;
|
|
8927
|
+
this.gridResizeTimeOut = null;
|
|
8907
8928
|
this.renderingEngine = null;
|
|
8908
8929
|
this.viewportGridResizeObserver = null;
|
|
8909
8930
|
this.servicesManager = servicesManager;
|
|
@@ -8941,13 +8962,28 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
8941
8962
|
}
|
|
8942
8963
|
|
|
8943
8964
|
/**
|
|
8944
|
-
* It triggers the resize on the rendering engine
|
|
8965
|
+
* It triggers the resize on the rendering engine, and renders the viewports
|
|
8966
|
+
*
|
|
8967
|
+
* @param isGridResize - if the resize is triggered by a grid resize
|
|
8968
|
+
* this is used to avoid double resize of the viewports since if the
|
|
8969
|
+
* grid is resized, all viewports will be resized so there is no need
|
|
8970
|
+
* to resize them individually which will get triggered by their
|
|
8971
|
+
* individual resize observers
|
|
8945
8972
|
*/
|
|
8946
|
-
resize() {
|
|
8947
|
-
|
|
8948
|
-
|
|
8949
|
-
|
|
8950
|
-
|
|
8973
|
+
resize(isGridResize = false) {
|
|
8974
|
+
// if there is a grid resize happening, it means the viewport grid
|
|
8975
|
+
// has been manipulated (e.g., panels closed, added, etc.) and we need
|
|
8976
|
+
// to resize all viewports, so we will add a timeout here to make sure
|
|
8977
|
+
// we don't double resize the viewports when viewports in the grid are
|
|
8978
|
+
// resized individually
|
|
8979
|
+
if (isGridResize) {
|
|
8980
|
+
this.performResize();
|
|
8981
|
+
this.resetGridResizeTimeout();
|
|
8982
|
+
this.resizeQueue = [];
|
|
8983
|
+
clearTimeout(this.viewportResizeTimer);
|
|
8984
|
+
} else {
|
|
8985
|
+
this.enqueueViewportResizeRequest();
|
|
8986
|
+
}
|
|
8951
8987
|
}
|
|
8952
8988
|
|
|
8953
8989
|
/**
|
|
@@ -8983,101 +9019,222 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
8983
9019
|
this.viewportsById.delete(viewportId);
|
|
8984
9020
|
this.viewportsDisplaySets.delete(viewportId);
|
|
8985
9021
|
}
|
|
8986
|
-
|
|
8987
|
-
|
|
8988
|
-
|
|
8989
|
-
|
|
9022
|
+
|
|
9023
|
+
/**
|
|
9024
|
+
* Sets the presentations for a given viewport. Presentations is an object
|
|
9025
|
+
* that can define the lut or position for a viewport.
|
|
9026
|
+
*
|
|
9027
|
+
* @param viewportId - The ID of the viewport.
|
|
9028
|
+
* @param presentations - The presentations to apply to the viewport.
|
|
9029
|
+
*/
|
|
9030
|
+
setPresentations(viewportId, presentations) {
|
|
9031
|
+
const viewport = this.getCornerstoneViewport(viewportId);
|
|
9032
|
+
if (!viewport) {
|
|
9033
|
+
return;
|
|
8990
9034
|
}
|
|
8991
|
-
|
|
8992
|
-
|
|
8993
|
-
|
|
9035
|
+
if (!presentations) {
|
|
9036
|
+
return;
|
|
9037
|
+
}
|
|
9038
|
+
const {
|
|
9039
|
+
lutPresentation,
|
|
9040
|
+
positionPresentation
|
|
9041
|
+
} = presentations;
|
|
9042
|
+
if (lutPresentation) {
|
|
9043
|
+
const {
|
|
9044
|
+
presentation
|
|
9045
|
+
} = lutPresentation;
|
|
9046
|
+
if (viewport instanceof esm.BaseVolumeViewport) {
|
|
9047
|
+
Object.entries(presentation).forEach(([volumeId, properties]) => {
|
|
9048
|
+
viewport.setProperties(properties, volumeId);
|
|
9049
|
+
});
|
|
9050
|
+
} else {
|
|
9051
|
+
viewport.setProperties(presentation);
|
|
9052
|
+
}
|
|
9053
|
+
}
|
|
9054
|
+
if (positionPresentation) {
|
|
9055
|
+
const {
|
|
9056
|
+
viewPlaneNormal,
|
|
9057
|
+
viewUp,
|
|
9058
|
+
zoom,
|
|
9059
|
+
pan
|
|
9060
|
+
} = positionPresentation.presentation;
|
|
9061
|
+
viewport.setCamera({
|
|
9062
|
+
viewPlaneNormal,
|
|
9063
|
+
viewUp
|
|
9064
|
+
});
|
|
9065
|
+
if (zoom !== undefined) {
|
|
9066
|
+
viewport.setZoom(zoom);
|
|
9067
|
+
}
|
|
9068
|
+
if (pan !== undefined) {
|
|
9069
|
+
viewport.setPan(pan);
|
|
9070
|
+
}
|
|
8994
9071
|
}
|
|
8995
9072
|
}
|
|
8996
|
-
|
|
9073
|
+
|
|
9074
|
+
/**
|
|
9075
|
+
* Retrieves the position presentation information for a given viewport.
|
|
9076
|
+
* @param viewportId The ID of the viewport.
|
|
9077
|
+
* @returns The position presentation object containing various properties
|
|
9078
|
+
* such as ID, viewport type, initial image index, view plane normal, view up, zoom, and pan.
|
|
9079
|
+
*/
|
|
9080
|
+
getPositionPresentation(viewportId) {
|
|
8997
9081
|
const viewportInfo = this.viewportsById.get(viewportId);
|
|
8998
9082
|
if (!viewportInfo) {
|
|
8999
9083
|
return;
|
|
9000
9084
|
}
|
|
9085
|
+
const presentationIds = viewportInfo.getPresentationIds();
|
|
9086
|
+
if (!presentationIds) {
|
|
9087
|
+
return;
|
|
9088
|
+
}
|
|
9001
9089
|
const {
|
|
9002
|
-
|
|
9003
|
-
|
|
9004
|
-
} = viewportInfo.getViewportOptions();
|
|
9090
|
+
positionPresentationId
|
|
9091
|
+
} = presentationIds;
|
|
9005
9092
|
const csViewport = this.getCornerstoneViewport(viewportId);
|
|
9006
9093
|
if (!csViewport) {
|
|
9007
9094
|
return;
|
|
9008
9095
|
}
|
|
9009
|
-
const
|
|
9010
|
-
|
|
9011
|
-
|
|
9012
|
-
|
|
9013
|
-
}
|
|
9096
|
+
const {
|
|
9097
|
+
viewPlaneNormal,
|
|
9098
|
+
viewUp
|
|
9099
|
+
} = csViewport.getCamera();
|
|
9014
9100
|
const initialImageIndex = csViewport.getCurrentImageIdIndex();
|
|
9015
|
-
const
|
|
9101
|
+
const zoom = csViewport.getZoom();
|
|
9102
|
+
const pan = csViewport.getPan();
|
|
9016
9103
|
return {
|
|
9017
|
-
|
|
9018
|
-
viewportType:
|
|
9019
|
-
|
|
9020
|
-
|
|
9021
|
-
|
|
9104
|
+
id: positionPresentationId,
|
|
9105
|
+
viewportType: viewportInfo.getViewportType(),
|
|
9106
|
+
presentation: {
|
|
9107
|
+
initialImageIndex,
|
|
9108
|
+
viewUp,
|
|
9109
|
+
viewPlaneNormal,
|
|
9110
|
+
zoom,
|
|
9111
|
+
pan
|
|
9112
|
+
}
|
|
9022
9113
|
};
|
|
9023
9114
|
}
|
|
9115
|
+
|
|
9116
|
+
/**
|
|
9117
|
+
* Retrieves the LUT (Lookup Table) presentation for a given viewport.
|
|
9118
|
+
* @param viewportId The ID of the viewport.
|
|
9119
|
+
* @returns The LUT presentation object, or undefined if the viewport does not exist.
|
|
9120
|
+
*/
|
|
9121
|
+
getLutPresentation(viewportId) {
|
|
9122
|
+
const viewportInfo = this.viewportsById.get(viewportId);
|
|
9123
|
+
if (!viewportInfo) {
|
|
9124
|
+
return;
|
|
9125
|
+
}
|
|
9126
|
+
const presentationIds = viewportInfo.getPresentationIds();
|
|
9127
|
+
if (!presentationIds) {
|
|
9128
|
+
return;
|
|
9129
|
+
}
|
|
9130
|
+
const {
|
|
9131
|
+
lutPresentationId
|
|
9132
|
+
} = presentationIds;
|
|
9133
|
+
const csViewport = this.getCornerstoneViewport(viewportId);
|
|
9134
|
+
if (!csViewport) {
|
|
9135
|
+
return;
|
|
9136
|
+
}
|
|
9137
|
+
const cleanProperties = properties => {
|
|
9138
|
+
if (properties.isComputedVOI) {
|
|
9139
|
+
delete properties.voiRange;
|
|
9140
|
+
delete properties.VOILUTFunction;
|
|
9141
|
+
}
|
|
9142
|
+
return properties;
|
|
9143
|
+
};
|
|
9144
|
+
const presentation = csViewport instanceof esm.BaseVolumeViewport ? new Map() : cleanProperties(csViewport.getProperties());
|
|
9145
|
+
if (presentation instanceof Map) {
|
|
9146
|
+
csViewport.getActors().forEach(({
|
|
9147
|
+
uid: volumeId
|
|
9148
|
+
}) => {
|
|
9149
|
+
const properties = cleanProperties(csViewport.getProperties(volumeId));
|
|
9150
|
+
presentation.set(volumeId, properties);
|
|
9151
|
+
});
|
|
9152
|
+
}
|
|
9153
|
+
return {
|
|
9154
|
+
id: lutPresentationId,
|
|
9155
|
+
viewportType: viewportInfo.getViewportType(),
|
|
9156
|
+
presentation
|
|
9157
|
+
};
|
|
9158
|
+
}
|
|
9159
|
+
|
|
9160
|
+
/**
|
|
9161
|
+
* Retrieves the presentations for a given viewport.
|
|
9162
|
+
* @param viewportId - The ID of the viewport.
|
|
9163
|
+
* @returns The presentations for the viewport.
|
|
9164
|
+
*/
|
|
9165
|
+
getPresentations(viewportId) {
|
|
9166
|
+
const viewportInfo = this.viewportsById.get(viewportId);
|
|
9167
|
+
if (!viewportInfo) {
|
|
9168
|
+
return;
|
|
9169
|
+
}
|
|
9170
|
+
const positionPresentation = this.getPositionPresentation(viewportId);
|
|
9171
|
+
const lutPresentation = this.getLutPresentation(viewportId);
|
|
9172
|
+
return {
|
|
9173
|
+
positionPresentation,
|
|
9174
|
+
lutPresentation
|
|
9175
|
+
};
|
|
9176
|
+
}
|
|
9177
|
+
|
|
9178
|
+
/**
|
|
9179
|
+
* Stores the presentation state for a given viewport inside the
|
|
9180
|
+
* stateSyncService. This is used to persist the presentation state
|
|
9181
|
+
* across different scenarios e.g., when the viewport is changing the
|
|
9182
|
+
* display set, or when the viewport is moving to a different layout.
|
|
9183
|
+
*
|
|
9184
|
+
* @param viewportId The ID of the viewport.
|
|
9185
|
+
*/
|
|
9024
9186
|
storePresentation({
|
|
9025
9187
|
viewportId
|
|
9026
9188
|
}) {
|
|
9027
|
-
|
|
9028
|
-
stateSyncService,
|
|
9029
|
-
syncGroupService
|
|
9030
|
-
} = this.servicesManager.services;
|
|
9031
|
-
let presentation;
|
|
9189
|
+
let presentations = null;
|
|
9032
9190
|
try {
|
|
9033
|
-
|
|
9191
|
+
presentations = this.getPresentations(viewportId);
|
|
9192
|
+
if (!presentations?.positionPresentation && !presentations?.lutPresentation) {
|
|
9193
|
+
return;
|
|
9194
|
+
}
|
|
9034
9195
|
} catch (error) {
|
|
9035
9196
|
console.warn(error);
|
|
9036
|
-
}
|
|
9037
|
-
if (!presentation || !presentation.presentationIds) {
|
|
9038
9197
|
return;
|
|
9039
9198
|
}
|
|
9199
|
+
const {
|
|
9200
|
+
stateSyncService,
|
|
9201
|
+
syncGroupService
|
|
9202
|
+
} = this.servicesManager.services;
|
|
9040
9203
|
const synchronizers = syncGroupService.getSynchronizersForViewport(viewportId, this.renderingEngine.id);
|
|
9041
9204
|
const {
|
|
9042
|
-
lutPresentationStore,
|
|
9043
9205
|
positionPresentationStore,
|
|
9044
|
-
synchronizersStore
|
|
9206
|
+
synchronizersStore,
|
|
9207
|
+
lutPresentationStore
|
|
9045
9208
|
} = stateSyncService.getState();
|
|
9046
9209
|
const {
|
|
9047
|
-
|
|
9048
|
-
|
|
9210
|
+
lutPresentation,
|
|
9211
|
+
positionPresentation
|
|
9212
|
+
} = presentations;
|
|
9049
9213
|
const {
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9214
|
+
id: positionPresentationId
|
|
9215
|
+
} = positionPresentation;
|
|
9216
|
+
const {
|
|
9217
|
+
id: lutPresentationId
|
|
9218
|
+
} = lutPresentation;
|
|
9219
|
+
const updateStore = (store, id, value) => ({
|
|
9220
|
+
...store,
|
|
9221
|
+
[id]: value
|
|
9222
|
+
});
|
|
9223
|
+
const newState = {};
|
|
9054
9224
|
if (lutPresentationId) {
|
|
9055
|
-
|
|
9056
|
-
...lutPresentationStore,
|
|
9057
|
-
[lutPresentationId]: presentation
|
|
9058
|
-
};
|
|
9225
|
+
newState.lutPresentationStore = updateStore(lutPresentationStore, lutPresentationId, lutPresentation);
|
|
9059
9226
|
}
|
|
9060
9227
|
if (positionPresentationId) {
|
|
9061
|
-
|
|
9062
|
-
...positionPresentationStore,
|
|
9063
|
-
[positionPresentationId]: presentation
|
|
9064
|
-
};
|
|
9228
|
+
newState.positionPresentationStore = updateStore(positionPresentationStore, positionPresentationId, positionPresentation);
|
|
9065
9229
|
}
|
|
9066
9230
|
if (synchronizers?.length) {
|
|
9067
|
-
|
|
9068
|
-
|
|
9069
|
-
|
|
9070
|
-
|
|
9071
|
-
|
|
9072
|
-
return {
|
|
9073
|
-
id: synchronizer.id,
|
|
9074
|
-
sourceViewports: [...sourceViewports],
|
|
9075
|
-
targetViewports: [...targetViewports]
|
|
9076
|
-
};
|
|
9077
|
-
})
|
|
9078
|
-
};
|
|
9231
|
+
newState.synchronizersStore = updateStore(synchronizersStore, viewportId, synchronizers.map(synchronizer => ({
|
|
9232
|
+
id: synchronizer.id,
|
|
9233
|
+
sourceViewports: [...synchronizer.getSourceViewports()],
|
|
9234
|
+
targetViewports: [...synchronizer.getTargetViewports()]
|
|
9235
|
+
})));
|
|
9079
9236
|
}
|
|
9080
|
-
stateSyncService.store(
|
|
9237
|
+
stateSyncService.store(newState);
|
|
9081
9238
|
}
|
|
9082
9239
|
|
|
9083
9240
|
/**
|
|
@@ -9157,6 +9314,13 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9157
9314
|
});
|
|
9158
9315
|
});
|
|
9159
9316
|
}
|
|
9317
|
+
|
|
9318
|
+
/**
|
|
9319
|
+
* Retrieves the Cornerstone viewport with the specified ID.
|
|
9320
|
+
*
|
|
9321
|
+
* @param viewportId - The ID of the viewport.
|
|
9322
|
+
* @returns The Cornerstone viewport object if found, otherwise null.
|
|
9323
|
+
*/
|
|
9160
9324
|
getCornerstoneViewport(viewportId) {
|
|
9161
9325
|
const viewportInfo = this.getViewportInfo(viewportId);
|
|
9162
9326
|
if (!viewportInfo || !this.renderingEngine || this.renderingEngine.hasBeenDestroyed) {
|
|
@@ -9165,10 +9329,40 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9165
9329
|
const viewport = this.renderingEngine.getViewport(viewportId);
|
|
9166
9330
|
return viewport;
|
|
9167
9331
|
}
|
|
9332
|
+
|
|
9333
|
+
/**
|
|
9334
|
+
* Retrieves the viewport information for a given viewport ID. The viewport information
|
|
9335
|
+
* is the OHIF construct that holds different options and data for a given viewport and
|
|
9336
|
+
* is different from the cornerstone viewport.
|
|
9337
|
+
*
|
|
9338
|
+
* @param viewportId The ID of the viewport.
|
|
9339
|
+
* @returns The viewport information.
|
|
9340
|
+
*/
|
|
9168
9341
|
getViewportInfo(viewportId) {
|
|
9169
9342
|
return this.viewportsById.get(viewportId);
|
|
9170
9343
|
}
|
|
9171
|
-
|
|
9344
|
+
|
|
9345
|
+
/**
|
|
9346
|
+
* Looks through the viewports to see if the specified measurement can be
|
|
9347
|
+
* displayed in one of the viewports.
|
|
9348
|
+
*
|
|
9349
|
+
* @param measurement
|
|
9350
|
+
* The measurement that is desired to view.
|
|
9351
|
+
* @param activeViewportId - the index that was active at the time the jump
|
|
9352
|
+
* was initiated.
|
|
9353
|
+
* @return the viewportId that the measurement should be displayed in.
|
|
9354
|
+
*/
|
|
9355
|
+
getViewportIdToJump(activeViewportId, displaySetInstanceUID, cameraProps) {
|
|
9356
|
+
const viewportInfo = this.getViewportInfo(activeViewportId);
|
|
9357
|
+
const {
|
|
9358
|
+
referencedImageId
|
|
9359
|
+
} = cameraProps;
|
|
9360
|
+
if (viewportInfo?.contains(displaySetInstanceUID, referencedImageId)) {
|
|
9361
|
+
return activeViewportId;
|
|
9362
|
+
}
|
|
9363
|
+
return [...this.viewportsById.values()].find(viewportInfo => viewportInfo.contains(displaySetInstanceUID, referencedImageId))?.viewportId ?? null;
|
|
9364
|
+
}
|
|
9365
|
+
async _setStackViewport(viewport, viewportData, viewportInfo, presentations = {}) {
|
|
9172
9366
|
const displaySetOptions = viewportInfo.getDisplaySetOptions();
|
|
9173
9367
|
const {
|
|
9174
9368
|
imageIds,
|
|
@@ -9210,10 +9404,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9210
9404
|
viewport.setProperties({
|
|
9211
9405
|
...properties
|
|
9212
9406
|
});
|
|
9213
|
-
|
|
9214
|
-
if (camera) {
|
|
9215
|
-
viewport.setCamera(camera);
|
|
9216
|
-
}
|
|
9407
|
+
this.setPresentations(viewport.id, presentations);
|
|
9217
9408
|
});
|
|
9218
9409
|
}
|
|
9219
9410
|
_getInitialImageIndexForViewport(viewportInfo, imageIds) {
|
|
@@ -9265,7 +9456,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9265
9456
|
}
|
|
9266
9457
|
return 0;
|
|
9267
9458
|
}
|
|
9268
|
-
async _setVolumeViewport(viewport, viewportData, viewportInfo, presentations) {
|
|
9459
|
+
async _setVolumeViewport(viewport, viewportData, viewportInfo, presentations = {}) {
|
|
9269
9460
|
// TODO: We need to overhaul the way data sources work so requests can be made
|
|
9270
9461
|
// async. I think we should follow the image loader pattern which is async and
|
|
9271
9462
|
// has a cache behind it.
|
|
@@ -9376,7 +9567,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9376
9567
|
}) => {
|
|
9377
9568
|
viewport.setProperties(properties, volumeId);
|
|
9378
9569
|
});
|
|
9379
|
-
this.setPresentations(viewport, presentations);
|
|
9570
|
+
this.setPresentations(viewport.id, presentations);
|
|
9380
9571
|
|
|
9381
9572
|
// load any secondary displaySets
|
|
9382
9573
|
const displaySetInstanceUIDs = this.viewportsDisplaySets.get(viewport.id);
|
|
@@ -9499,11 +9690,11 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9499
9690
|
_setDisplaySets(viewport, viewportData, viewportInfo, presentations = {}) {
|
|
9500
9691
|
if (viewport instanceof esm.StackViewport) {
|
|
9501
9692
|
return this._setStackViewport(viewport, viewportData, viewportInfo, presentations);
|
|
9502
|
-
}
|
|
9693
|
+
}
|
|
9694
|
+
if ([esm.VolumeViewport, esm.VolumeViewport3D].some(type => viewport instanceof type)) {
|
|
9503
9695
|
return this._setVolumeViewport(viewport, viewportData, viewportInfo, presentations);
|
|
9504
|
-
} else {
|
|
9505
|
-
throw new Error('Unknown viewport type');
|
|
9506
9696
|
}
|
|
9697
|
+
throw new Error('Unknown viewport type');
|
|
9507
9698
|
}
|
|
9508
9699
|
|
|
9509
9700
|
/**
|
|
@@ -9566,26 +9757,57 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
|
|
|
9566
9757
|
return images[0].FrameOfReferenceUID;
|
|
9567
9758
|
}
|
|
9568
9759
|
}
|
|
9760
|
+
enqueueViewportResizeRequest() {
|
|
9761
|
+
this.resizeQueue.push(false); // false indicates viewport resize
|
|
9569
9762
|
|
|
9570
|
-
|
|
9571
|
-
|
|
9572
|
-
|
|
9573
|
-
|
|
9574
|
-
|
|
9575
|
-
|
|
9576
|
-
|
|
9577
|
-
|
|
9578
|
-
|
|
9579
|
-
*/
|
|
9580
|
-
getViewportIdToJump(activeViewportId, displaySetInstanceUID, cameraProps) {
|
|
9581
|
-
const viewportInfo = this.getViewportInfo(activeViewportId);
|
|
9582
|
-
const {
|
|
9583
|
-
referencedImageId
|
|
9584
|
-
} = cameraProps;
|
|
9585
|
-
if (viewportInfo?.contains(displaySetInstanceUID, referencedImageId)) {
|
|
9586
|
-
return activeViewportId;
|
|
9763
|
+
clearTimeout(this.viewportResizeTimer);
|
|
9764
|
+
this.viewportResizeTimer = setTimeout(() => {
|
|
9765
|
+
this.processViewportResizeQueue();
|
|
9766
|
+
}, this.gridResizeDelay);
|
|
9767
|
+
}
|
|
9768
|
+
processViewportResizeQueue() {
|
|
9769
|
+
const isGridResizeInQueue = this.resizeQueue.some(isGridResize => isGridResize);
|
|
9770
|
+
if (this.resizeQueue.length > 0 && !isGridResizeInQueue && !this.gridResizeTimeOut) {
|
|
9771
|
+
this.performResize();
|
|
9587
9772
|
}
|
|
9588
|
-
|
|
9773
|
+
|
|
9774
|
+
// Clear the queue after processing viewport resizes
|
|
9775
|
+
this.resizeQueue = [];
|
|
9776
|
+
}
|
|
9777
|
+
performResize() {
|
|
9778
|
+
const isImmediate = false;
|
|
9779
|
+
const viewports = this.getRenderingEngine().getViewports();
|
|
9780
|
+
|
|
9781
|
+
// Store the current position presentations for each viewport.
|
|
9782
|
+
viewports.forEach(({
|
|
9783
|
+
id
|
|
9784
|
+
}) => {
|
|
9785
|
+
const presentation = this.getPositionPresentation(id);
|
|
9786
|
+
this.beforeResizePositionPresentations.set(id, presentation);
|
|
9787
|
+
});
|
|
9788
|
+
|
|
9789
|
+
// Resize the rendering engine and render.
|
|
9790
|
+
const renderingEngine = this.renderingEngine;
|
|
9791
|
+
renderingEngine.resize(isImmediate);
|
|
9792
|
+
renderingEngine.render();
|
|
9793
|
+
|
|
9794
|
+
// Reset the camera for viewports that should reset their camera on resize,
|
|
9795
|
+
// which means only those viewports that have a zoom level of 1.
|
|
9796
|
+
this.beforeResizePositionPresentations.forEach((positionPresentation, viewportId) => {
|
|
9797
|
+
this.setPresentations(viewportId, {
|
|
9798
|
+
positionPresentation
|
|
9799
|
+
});
|
|
9800
|
+
});
|
|
9801
|
+
|
|
9802
|
+
// Resize and render the rendering engine again.
|
|
9803
|
+
renderingEngine.resize(isImmediate);
|
|
9804
|
+
renderingEngine.render();
|
|
9805
|
+
}
|
|
9806
|
+
resetGridResizeTimeout() {
|
|
9807
|
+
clearTimeout(this.gridResizeTimeOut);
|
|
9808
|
+
this.gridResizeTimeOut = setTimeout(() => {
|
|
9809
|
+
this.gridResizeTimeOut = null;
|
|
9810
|
+
}, this.gridResizeDelay);
|
|
9589
9811
|
}
|
|
9590
9812
|
}
|
|
9591
9813
|
CornerstoneViewportService_class = CornerstoneViewportService;
|
|
@@ -9603,7 +9825,7 @@ CornerstoneViewportService.REGISTRATION = {
|
|
|
9603
9825
|
|
|
9604
9826
|
|
|
9605
9827
|
// EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
|
|
9606
|
-
var dicomweb_client_es = __webpack_require__(
|
|
9828
|
+
var dicomweb_client_es = __webpack_require__(36922);
|
|
9607
9829
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/dicomLoaderService.js
|
|
9608
9830
|
|
|
9609
9831
|
|
|
@@ -9644,7 +9866,7 @@ const getNonImageInstance = dataset => {
|
|
|
9644
9866
|
const getImageInstanceId = imageInstance => {
|
|
9645
9867
|
return getImageId(imageInstance);
|
|
9646
9868
|
};
|
|
9647
|
-
const fetchIt = (url, headers = src
|
|
9869
|
+
const fetchIt = (url, headers = src/* DICOMWeb */.ll.getAuthorizationHeader()) => {
|
|
9648
9870
|
return fetch(url, headers).then(response => response.arrayBuffer());
|
|
9649
9871
|
};
|
|
9650
9872
|
const cornerstoneRetriever = imageId => {
|
|
@@ -9652,13 +9874,13 @@ const cornerstoneRetriever = imageId => {
|
|
|
9652
9874
|
return image && image.data && image.data.byteArray.buffer;
|
|
9653
9875
|
});
|
|
9654
9876
|
};
|
|
9655
|
-
const wadorsRetriever = (url, studyInstanceUID, seriesInstanceUID, sopInstanceUID, headers = src
|
|
9877
|
+
const wadorsRetriever = (url, studyInstanceUID, seriesInstanceUID, sopInstanceUID, headers = src/* DICOMWeb */.ll.getAuthorizationHeader(), errorInterceptor = src/* errorHandler */.r_.getHTTPErrorHandler()) => {
|
|
9656
9878
|
const config = {
|
|
9657
9879
|
url,
|
|
9658
9880
|
headers,
|
|
9659
9881
|
errorInterceptor
|
|
9660
9882
|
};
|
|
9661
|
-
const dicomWeb = new dicomweb_client_es
|
|
9883
|
+
const dicomWeb = new dicomweb_client_es/* api */.FH.DICOMwebClient(config);
|
|
9662
9884
|
return dicomWeb.retrieveInstance({
|
|
9663
9885
|
studyInstanceUID,
|
|
9664
9886
|
seriesInstanceUID,
|
|
@@ -9774,10 +9996,10 @@ class DicomLoaderService {
|
|
|
9774
9996
|
const dicomLoaderService = new DicomLoaderService();
|
|
9775
9997
|
/* harmony default export */ const utils_dicomLoaderService = (dicomLoaderService);
|
|
9776
9998
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/package.json
|
|
9777
|
-
const package_namespaceObject = JSON.parse('{"
|
|
9999
|
+
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-cornerstone"}');
|
|
9778
10000
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/id.js
|
|
9779
10001
|
|
|
9780
|
-
const id = package_namespaceObject.
|
|
10002
|
+
const id = package_namespaceObject.UU;
|
|
9781
10003
|
|
|
9782
10004
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/index.ts
|
|
9783
10005
|
|
|
@@ -9807,7 +10029,7 @@ function src_extends() { src_extends = Object.assign ? Object.assign.bind() : fu
|
|
|
9807
10029
|
|
|
9808
10030
|
|
|
9809
10031
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
9810
|
-
return
|
|
10032
|
+
return __webpack_require__.e(/* import() */ 889).then(__webpack_require__.bind(__webpack_require__, 1889));
|
|
9811
10033
|
});
|
|
9812
10034
|
const OHIFCornerstoneViewport = props => {
|
|
9813
10035
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -9830,7 +10052,7 @@ const cornerstoneExtension = {
|
|
|
9830
10052
|
esm.imageLoadPoolManager.clearRequestStack(type);
|
|
9831
10053
|
esm.imageRetrievalPoolManager.clearRequestStack(type);
|
|
9832
10054
|
});
|
|
9833
|
-
(0,state/* reset */.
|
|
10055
|
+
(0,state/* reset */.cL)();
|
|
9834
10056
|
},
|
|
9835
10057
|
/**
|
|
9836
10058
|
* Register the Cornerstone 3D services and set them up for use.
|
|
@@ -9885,7 +10107,7 @@ const cornerstoneExtension = {
|
|
|
9885
10107
|
cornerstoneTools: dist_esm
|
|
9886
10108
|
};
|
|
9887
10109
|
},
|
|
9888
|
-
getEnabledElement: state/* getEnabledElement */.
|
|
10110
|
+
getEnabledElement: state/* getEnabledElement */.kJ,
|
|
9889
10111
|
dicomLoaderService: utils_dicomLoaderService
|
|
9890
10112
|
}
|
|
9891
10113
|
}, {
|
|
@@ -9907,13 +10129,13 @@ const cornerstoneExtension = {
|
|
|
9907
10129
|
|
|
9908
10130
|
/***/ }),
|
|
9909
10131
|
|
|
9910
|
-
/***/
|
|
10132
|
+
/***/ 71353:
|
|
9911
10133
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9912
10134
|
|
|
9913
10135
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9914
|
-
/* harmony export */
|
|
9915
|
-
/* harmony export */
|
|
9916
|
-
/* harmony export */
|
|
10136
|
+
/* harmony export */ cL: () => (/* binding */ reset),
|
|
10137
|
+
/* harmony export */ kJ: () => (/* binding */ getEnabledElement),
|
|
10138
|
+
/* harmony export */ ye: () => (/* binding */ setEnabledElement)
|
|
9917
10139
|
/* harmony export */ });
|
|
9918
10140
|
const state = {
|
|
9919
10141
|
// The `defaultContext` of an extension's commandsModule
|
|
@@ -9949,13 +10171,13 @@ const reset = () => {
|
|
|
9949
10171
|
|
|
9950
10172
|
/***/ }),
|
|
9951
10173
|
|
|
9952
|
-
/***/
|
|
10174
|
+
/***/ 1663:
|
|
9953
10175
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9954
10176
|
|
|
9955
10177
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9956
|
-
/* harmony export */
|
|
10178
|
+
/* harmony export */ A: () => (/* binding */ getSOPInstanceAttributes)
|
|
9957
10179
|
/* harmony export */ });
|
|
9958
|
-
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
10180
|
+
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28991);
|
|
9959
10181
|
|
|
9960
10182
|
|
|
9961
10183
|
/**
|