@ohif/app 3.8.0-beta.7 → 3.8.0-beta.70
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/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
- package/dist/{471.bundle.49c8d281adbae4a2c4df.js → 121.bundle.21827fec690c01ee9ab3.js} +85 -112
- package/dist/{19.bundle.e5579df6d7b74af50b1d.js → 155.bundle.0dabe8513b605b01ac3d.js} +334 -287
- package/dist/{687.bundle.9d0330ea5d61fe3117da.js → 164.bundle.0b1a2be351543c1433e8.js} +22 -38
- package/dist/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/{506.bundle.ab8226d3d81abe874544.js → 188.bundle.81e83b073b6fd4ae0058.js} +23 -28
- package/dist/191.bundle.7d89c921abefd1140d50.js +30360 -0
- package/dist/{221.bundle.c2dc03d8fa4235dc1285.js → 2.bundle.04dbbf67a52fe109749c.js} +351 -546
- package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
- package/dist/290.bundle.952de53057f98e2c5ef0.js +8883 -0
- package/dist/{451.bundle.57c21db5d003c75e9d61.js → 295.bundle.3a0d5062d65296c4bf5d.js} +102 -127
- package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.194d8985ab974839b5b6.js} +7 -8
- package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.6e49f63ea7cea4645c0a.js} +544 -860
- package/dist/41.bundle.6ec0794a483e9a30eb94.js +831 -0
- package/dist/425.bundle.ffcdde2143a5757926b9.js +2957 -0
- package/dist/425.css +2 -0
- package/dist/{126.bundle.42df2dafc9c0310da188.js → 448.bundle.9177b9d909654efbc8d5.js} +316 -427
- package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 504.bundle.993d7e2dec36257d4ce4.js} +14338 -27291
- package/dist/{886.bundle.c8dd3ecc42a4253de278.js → 530.bundle.566bfd08dccb4cf6d98b.js} +75 -105
- package/dist/{250.bundle.aea3335667054bdefe36.js → 544.bundle.1110b24e96863d719a95.js} +39 -56
- package/dist/{663.bundle.9f359963019cd8ccf8f9.js → 559.bundle.4f111410af43324629ca.js} +151 -147
- package/dist/{181.bundle.a62b9f0ec692299acb35.js → 574.bundle.83afbc7922736fc6846d.js} +1246 -289
- package/dist/{181.css → 574.css} +1 -1
- package/dist/{410.bundle.38c9d3820e152e89288e.js → 594.bundle.ffeebda1bb9a81182a80.js} +183 -221
- package/dist/{776.bundle.004382036bdbd8ee2b95.js → 595.bundle.1c1a50c4ff87763b786a.js} +3128 -1028
- package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
- package/dist/699.bundle.db05df7b8e2ad605e928.js +767 -0
- package/dist/{359.bundle.8abe0036a7bf6b5fd115.js → 724.bundle.eada9d6c23678a5a2947.js} +130 -254
- package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.c8de818cf1a3ff0cf7d2.js} +512 -879
- package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
- package/dist/{822.bundle.82cdc418f8f56da6060b.js → 862.bundle.959ef65b18c1d3b5e2b4.js} +77 -96
- package/dist/{236.bundle.c9e70d55e7b2574c1ecd.js → 889.bundle.67c6e5f988c9b1d289ef.js} +198 -197
- package/dist/{342.bundle.d9668551811e3a88aaa4.js → 90.bundle.f41c8c4fc78cdfd4de30.js} +1430 -1055
- package/dist/{281.bundle.16a2933086a57e60c96c.js → 905.bundle.eb821474b36b96b897f9.js} +155 -122
- package/dist/{814.bundle.a1aba9c1e3d336008351.js → 907.bundle.ca904d9747480a0e4bf1.js} +16 -30
- package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
- package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.9d93b2e47c52338747a2.js} +7 -8
- package/dist/{12.bundle.37a8b47d2ae587cb9226.js → 961.bundle.65967b1a4af002af1d1d.js} +16 -31
- package/dist/987.bundle.6bdfb3cd8762b8889632.js +122950 -0
- package/dist/app-config.js +1 -0
- package/dist/app.bundle.css +15 -13
- package/dist/{app.bundle.437d085e13599d1e1ced.js → app.bundle.e21e5afd46fb064cb5de.js} +147713 -61638
- package/dist/assets/images/CT-AAA.png +0 -0
- package/dist/assets/images/CT-AAA2.png +0 -0
- package/dist/assets/images/CT-Air.png +0 -0
- package/dist/assets/images/CT-Bone.png +0 -0
- package/dist/assets/images/CT-Bones.png +0 -0
- package/dist/assets/images/CT-Cardiac.png +0 -0
- package/dist/assets/images/CT-Cardiac2.png +0 -0
- package/dist/assets/images/CT-Cardiac3.png +0 -0
- package/dist/assets/images/CT-Chest-Contrast-Enhanced.png +0 -0
- package/dist/assets/images/CT-Chest-Vessels.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-2.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-3.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries.png +0 -0
- package/dist/assets/images/CT-Cropped-Volume-Bone.png +0 -0
- package/dist/assets/images/CT-Fat.png +0 -0
- package/dist/assets/images/CT-Liver-Vasculature.png +0 -0
- package/dist/assets/images/CT-Lung.png +0 -0
- package/dist/assets/images/CT-MIP.png +0 -0
- package/dist/assets/images/CT-Muscle.png +0 -0
- package/dist/assets/images/CT-Pulmonary-Arteries.png +0 -0
- package/dist/assets/images/CT-Soft-Tissue.png +0 -0
- package/dist/assets/images/DTI-FA-Brain.png +0 -0
- package/dist/assets/images/MR-Angio.png +0 -0
- package/dist/assets/images/MR-Default.png +0 -0
- package/dist/assets/images/MR-MIP.png +0 -0
- package/dist/assets/images/MR-T2-Brain.png +0 -0
- package/dist/assets/images/VolumeRendering.png +0 -0
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
- package/dist/index.html +1 -1
- package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
- package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
- package/dist/polySeg.bundle.e7b4c29fb9173e8567b8.js +252 -0
- package/dist/serve.json +12 -0
- package/dist/sw.js +1 -1
- package/package.json +25 -22
- package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
- package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
- package/dist/613.bundle.aed640a7900dbcb688f5.js +0 -532
- package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
- package/dist/75788f12450d4c5ed494.wasm +0 -0
- package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
- package/dist/788.bundle.dcd53828d1bb2ac64d04.js +0 -2682
- package/dist/82.bundle.5a94dd7645e5c5476f59.js +0 -1049
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
- /package/dist/{19.css → 155.css} +0 -0
- /package/dist/{221.css → 2.css} +0 -0
- /package/dist/{579.css → 481.css} +0 -0
- /package/dist/{250.css → 544.css} +0 -0
- /package/dist/{776.css → 595.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[295],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 58295:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -13,16 +13,14 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
16
|
-
var prop_types = __webpack_require__(
|
|
16
|
+
var prop_types = __webpack_require__(11374);
|
|
17
17
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
18
18
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
19
|
-
var react = __webpack_require__(
|
|
19
|
+
var react = __webpack_require__(41766);
|
|
20
20
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
21
|
-
var es = __webpack_require__(
|
|
22
|
-
// EXTERNAL MODULE: ../../
|
|
23
|
-
var src = __webpack_require__(
|
|
24
|
-
// EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
|
|
25
|
-
var ui_src = __webpack_require__(22582);
|
|
21
|
+
var es = __webpack_require__(80619);
|
|
22
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 542 modules
|
|
23
|
+
var src = __webpack_require__(48804);
|
|
26
24
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts
|
|
27
25
|
function createSEGToolGroupAndAddTools(ToolGroupService, customizationService, toolGroupId) {
|
|
28
26
|
const {
|
|
@@ -38,14 +36,13 @@ const RESPONSE = {
|
|
|
38
36
|
CANCEL: 0,
|
|
39
37
|
HYDRATE_SEG: 5
|
|
40
38
|
};
|
|
41
|
-
function promptHydrateSEG(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
} = _ref;
|
|
39
|
+
function promptHydrateSEG({
|
|
40
|
+
servicesManager,
|
|
41
|
+
segDisplaySet,
|
|
42
|
+
viewportId,
|
|
43
|
+
preHydrateCallbacks,
|
|
44
|
+
hydrateSEGDisplaySet
|
|
45
|
+
}) {
|
|
49
46
|
const {
|
|
50
47
|
uiViewportDialogService
|
|
51
48
|
} = servicesManager.services;
|
|
@@ -67,11 +64,11 @@ function _askHydrate(uiViewportDialogService, viewportId) {
|
|
|
67
64
|
return new Promise(function (resolve, reject) {
|
|
68
65
|
const message = 'Do you want to open this Segmentation?';
|
|
69
66
|
const actions = [{
|
|
70
|
-
type:
|
|
67
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
71
68
|
text: 'No',
|
|
72
69
|
value: RESPONSE.CANCEL
|
|
73
70
|
}, {
|
|
74
|
-
type:
|
|
71
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary,
|
|
75
72
|
text: 'Yes',
|
|
76
73
|
value: RESPONSE.HYDRATE_SEG
|
|
77
74
|
}];
|
|
@@ -97,44 +94,45 @@ function _askHydrate(uiViewportDialogService, viewportId) {
|
|
|
97
94
|
|
|
98
95
|
|
|
99
96
|
|
|
100
|
-
function _getStatusComponent(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
} = _ref;
|
|
97
|
+
function _getStatusComponent({
|
|
98
|
+
isHydrated,
|
|
99
|
+
onStatusClick
|
|
100
|
+
}) {
|
|
105
101
|
let ToolTipMessage = null;
|
|
106
102
|
let StatusIcon = null;
|
|
107
|
-
const {
|
|
108
|
-
t
|
|
109
|
-
} = (0,es/* useTranslation */.$G)('Common');
|
|
110
|
-
const loadStr = t('LOAD');
|
|
111
103
|
switch (isHydrated) {
|
|
112
104
|
case true:
|
|
113
|
-
StatusIcon = () => /*#__PURE__*/react.createElement(
|
|
105
|
+
StatusIcon = () => /*#__PURE__*/react.createElement(src/* Icon */.In, {
|
|
114
106
|
name: "status-alert"
|
|
115
107
|
});
|
|
116
108
|
ToolTipMessage = () => /*#__PURE__*/react.createElement("div", null, "This Segmentation is loaded in the segmentation panel");
|
|
117
109
|
break;
|
|
118
110
|
case false:
|
|
119
|
-
StatusIcon = () => /*#__PURE__*/react.createElement(
|
|
111
|
+
StatusIcon = () => /*#__PURE__*/react.createElement(src/* Icon */.In, {
|
|
120
112
|
className: "text-aqua-pale",
|
|
121
113
|
name: "status-untracked"
|
|
122
114
|
});
|
|
123
115
|
ToolTipMessage = () => /*#__PURE__*/react.createElement("div", null, "Click LOAD to load segmentation.");
|
|
124
116
|
}
|
|
125
|
-
const StatusArea = () =>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
117
|
+
const StatusArea = () => {
|
|
118
|
+
const {
|
|
119
|
+
t
|
|
120
|
+
} = (0,es/* useTranslation */.Bd)('Common');
|
|
121
|
+
const loadStr = t('LOAD');
|
|
122
|
+
return /*#__PURE__*/react.createElement("div", {
|
|
123
|
+
className: "flex h-6 cursor-default text-sm leading-6 text-white"
|
|
124
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
125
|
+
className: "bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
|
|
126
|
+
}, /*#__PURE__*/react.createElement(StatusIcon, null), /*#__PURE__*/react.createElement("span", {
|
|
127
|
+
className: "ml-1"
|
|
128
|
+
}, "SEG")), !isHydrated && /*#__PURE__*/react.createElement("div", {
|
|
129
|
+
className: "bg-primary-main hover:bg-primary-light ml-1 cursor-pointer rounded px-1.5 hover:text-black"
|
|
130
|
+
// Using onMouseUp here because onClick is not working when the viewport is not active and is styled with pointer-events:none
|
|
131
|
+
,
|
|
132
|
+
onMouseUp: onStatusClick
|
|
133
|
+
}, loadStr));
|
|
134
|
+
};
|
|
135
|
+
return /*#__PURE__*/react.createElement(react.Fragment, null, ToolTipMessage && /*#__PURE__*/react.createElement(src/* Tooltip */.m_, {
|
|
138
136
|
content: /*#__PURE__*/react.createElement(ToolTipMessage, null),
|
|
139
137
|
position: "bottom-left"
|
|
140
138
|
}, /*#__PURE__*/react.createElement(StatusArea, null)), !ToolTipMessage && /*#__PURE__*/react.createElement(StatusArea, null));
|
|
@@ -148,31 +146,27 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
148
146
|
|
|
149
147
|
|
|
150
148
|
|
|
151
|
-
|
|
152
|
-
const {
|
|
153
|
-
formatDate
|
|
154
|
-
} = src.utils;
|
|
155
149
|
const SEG_TOOLGROUP_BASE_NAME = 'SEGToolGroup';
|
|
156
150
|
function OHIFCornerstoneSEGViewport(props) {
|
|
157
151
|
const {
|
|
158
152
|
children,
|
|
159
153
|
displaySets,
|
|
160
154
|
viewportOptions,
|
|
161
|
-
viewportLabel,
|
|
162
155
|
servicesManager,
|
|
163
156
|
extensionManager,
|
|
164
157
|
commandsManager
|
|
165
158
|
} = props;
|
|
166
159
|
const {
|
|
167
160
|
t
|
|
168
|
-
} = (0,es/* useTranslation
|
|
161
|
+
} = (0,es/* useTranslation */.Bd)('SEGViewport');
|
|
169
162
|
const viewportId = viewportOptions.viewportId;
|
|
170
163
|
const {
|
|
171
164
|
displaySetService,
|
|
172
165
|
toolGroupService,
|
|
173
166
|
segmentationService,
|
|
174
167
|
uiNotificationService,
|
|
175
|
-
customizationService
|
|
168
|
+
customizationService,
|
|
169
|
+
viewportActionCornersService
|
|
176
170
|
} = servicesManager.services;
|
|
177
171
|
const toolGroupId = `${SEG_TOOLGROUP_BASE_NAME}-${viewportId}`;
|
|
178
172
|
|
|
@@ -181,7 +175,7 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
181
175
|
throw new Error('SEG viewport should only have a single display set');
|
|
182
176
|
}
|
|
183
177
|
const segDisplaySet = displaySets[0];
|
|
184
|
-
const [viewportGrid, viewportGridService] = (0,
|
|
178
|
+
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.ih)();
|
|
185
179
|
|
|
186
180
|
// States
|
|
187
181
|
const [selectedSegment, setSelectedSegment] = (0,react.useState)(1);
|
|
@@ -224,10 +218,9 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
224
218
|
setElement(null);
|
|
225
219
|
};
|
|
226
220
|
const storePresentationState = (0,react.useCallback)(() => {
|
|
227
|
-
viewportGrid?.viewports.forEach(
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
} = _ref;
|
|
221
|
+
viewportGrid?.viewports.forEach(({
|
|
222
|
+
viewportId
|
|
223
|
+
}) => {
|
|
231
224
|
commandsManager.runCommand('storePresentation', {
|
|
232
225
|
viewportId
|
|
233
226
|
});
|
|
@@ -252,11 +245,9 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
252
245
|
},
|
|
253
246
|
onElementEnabled: onElementEnabled,
|
|
254
247
|
onElementDisabled: onElementDisabled
|
|
255
|
-
// initialImageIndex={initialImageIndex}
|
|
256
248
|
}));
|
|
257
249
|
}, [viewportId, segDisplaySet, toolGroupId]);
|
|
258
250
|
const onSegmentChange = (0,react.useCallback)(direction => {
|
|
259
|
-
direction = direction === 'left' ? -1 : 1;
|
|
260
251
|
const segmentationId = segDisplaySet.displaySetInstanceUID;
|
|
261
252
|
const segmentation = segmentationService.getSegmentation(segmentationId);
|
|
262
253
|
const {
|
|
@@ -298,13 +289,6 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
298
289
|
if (evt.segDisplaySet.displaySetInstanceUID === segDisplaySet.displaySetInstanceUID) {
|
|
299
290
|
setSegIsLoading(false);
|
|
300
291
|
}
|
|
301
|
-
if (evt.overlappingSegments) {
|
|
302
|
-
uiNotificationService.show({
|
|
303
|
-
title: 'Overlapping Segments',
|
|
304
|
-
message: 'Overlapping segments detected which is not currently supported',
|
|
305
|
-
type: 'warning'
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
292
|
});
|
|
309
293
|
return () => {
|
|
310
294
|
unsubscribe();
|
|
@@ -313,11 +297,10 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
313
297
|
(0,react.useEffect)(() => {
|
|
314
298
|
const {
|
|
315
299
|
unsubscribe
|
|
316
|
-
} = segmentationService.subscribe(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE,
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
} = _ref2;
|
|
300
|
+
} = segmentationService.subscribe(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE, ({
|
|
301
|
+
percentComplete,
|
|
302
|
+
numSegments
|
|
303
|
+
}) => {
|
|
321
304
|
setProcessingProgress({
|
|
322
305
|
percentComplete,
|
|
323
306
|
totalSegments: numSegments
|
|
@@ -332,10 +315,9 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
332
315
|
Cleanup the SEG viewport when the viewport is destroyed
|
|
333
316
|
*/
|
|
334
317
|
(0,react.useEffect)(() => {
|
|
335
|
-
const onDisplaySetsRemovedSubscription = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_REMOVED,
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
} = _ref3;
|
|
318
|
+
const onDisplaySetsRemovedSubscription = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_REMOVED, ({
|
|
319
|
+
displaySetInstanceUIDs
|
|
320
|
+
}) => {
|
|
339
321
|
const activeViewport = viewports.get(activeViewportId);
|
|
340
322
|
if (displaySetInstanceUIDs.includes(activeViewport.displaySetInstanceUID)) {
|
|
341
323
|
viewportGridService.setDisplaySetsForViewport({
|
|
@@ -373,6 +355,51 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
373
355
|
referencedDisplaySetRef.current = null;
|
|
374
356
|
};
|
|
375
357
|
}, [segDisplaySet]);
|
|
358
|
+
const hydrateSEGDisplaySet = (0,react.useCallback)(({
|
|
359
|
+
segDisplaySet,
|
|
360
|
+
viewportId
|
|
361
|
+
}) => {
|
|
362
|
+
commandsManager.runCommand('loadSegmentationDisplaySetsForViewport', {
|
|
363
|
+
displaySets: [segDisplaySet],
|
|
364
|
+
viewportId
|
|
365
|
+
});
|
|
366
|
+
}, [commandsManager]);
|
|
367
|
+
const onStatusClick = (0,react.useCallback)(async () => {
|
|
368
|
+
// Before hydrating a SEG and make it added to all viewports in the grid
|
|
369
|
+
// that share the same frameOfReferenceUID, we need to store the viewport grid
|
|
370
|
+
// presentation state, so that we can restore it after hydrating the SEG. This is
|
|
371
|
+
// required if the user has changed the viewport (other viewport than SEG viewport)
|
|
372
|
+
// presentation state (w/l and invert) and then opens the SEG. If we don't store
|
|
373
|
+
// the presentation state, the viewport will be reset to the default presentation
|
|
374
|
+
storePresentationState();
|
|
375
|
+
const isHydrated = await hydrateSEGDisplaySet({
|
|
376
|
+
segDisplaySet,
|
|
377
|
+
viewportId
|
|
378
|
+
});
|
|
379
|
+
setIsHydrated(isHydrated);
|
|
380
|
+
}, [hydrateSEGDisplaySet, segDisplaySet, storePresentationState, viewportId]);
|
|
381
|
+
(0,react.useEffect)(() => {
|
|
382
|
+
viewportActionCornersService.setComponents([{
|
|
383
|
+
viewportId,
|
|
384
|
+
id: 'viewportStatusComponent',
|
|
385
|
+
component: _getStatusComponent({
|
|
386
|
+
isHydrated,
|
|
387
|
+
onStatusClick
|
|
388
|
+
}),
|
|
389
|
+
indexPriority: -100,
|
|
390
|
+
location: viewportActionCornersService.LOCATIONS.topLeft
|
|
391
|
+
}, {
|
|
392
|
+
viewportId,
|
|
393
|
+
id: 'viewportActionArrowsComponent',
|
|
394
|
+
component: /*#__PURE__*/react.createElement(src/* ViewportActionArrows */.$I, {
|
|
395
|
+
key: "actionArrows",
|
|
396
|
+
onArrowsClick: onSegmentChange,
|
|
397
|
+
className: viewportId === activeViewportId ? 'visible' : 'invisible group-hover:visible'
|
|
398
|
+
}),
|
|
399
|
+
indexPriority: 0,
|
|
400
|
+
location: viewportActionCornersService.LOCATIONS.topRight
|
|
401
|
+
}]);
|
|
402
|
+
}, [activeViewportId, isHydrated, onSegmentChange, onStatusClick, viewportActionCornersService, viewportId]);
|
|
376
403
|
|
|
377
404
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
378
405
|
let childrenWithProps = null;
|
|
@@ -398,61 +425,9 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
398
425
|
SeriesDescription,
|
|
399
426
|
SpacingBetweenSlices
|
|
400
427
|
} = referencedDisplaySetRef.current.metadata;
|
|
401
|
-
|
|
402
|
-
let {
|
|
403
|
-
segDisplaySet,
|
|
404
|
-
viewportId
|
|
405
|
-
} = _ref4;
|
|
406
|
-
commandsManager.runCommand('loadSegmentationDisplaySetsForViewport', {
|
|
407
|
-
displaySets: [segDisplaySet],
|
|
408
|
-
viewportId
|
|
409
|
-
});
|
|
410
|
-
};
|
|
411
|
-
const onStatusClick = async () => {
|
|
412
|
-
// Before hydrating a SEG and make it added to all viewports in the grid
|
|
413
|
-
// that share the same frameOfReferenceUID, we need to store the viewport grid
|
|
414
|
-
// presentation state, so that we can restore it after hydrating the SEG. This is
|
|
415
|
-
// required if the user has changed the viewport (other viewport than SEG viewport)
|
|
416
|
-
// presentation state (w/l and invert) and then opens the SEG. If we don't store
|
|
417
|
-
// the presentation state, the viewport will be reset to the default presentation
|
|
418
|
-
storePresentationState();
|
|
419
|
-
const isHydrated = await hydrateSEGDisplaySet({
|
|
420
|
-
segDisplaySet,
|
|
421
|
-
viewportId
|
|
422
|
-
});
|
|
423
|
-
setIsHydrated(isHydrated);
|
|
424
|
-
};
|
|
425
|
-
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* ViewportActionBar */.uY, {
|
|
426
|
-
onDoubleClick: evt => {
|
|
427
|
-
evt.stopPropagation();
|
|
428
|
-
evt.preventDefault();
|
|
429
|
-
},
|
|
430
|
-
onArrowsClick: onSegmentChange,
|
|
431
|
-
getStatusComponent: () => {
|
|
432
|
-
return _getStatusComponent({
|
|
433
|
-
isHydrated,
|
|
434
|
-
onStatusClick
|
|
435
|
-
});
|
|
436
|
-
},
|
|
437
|
-
studyData: {
|
|
438
|
-
label: viewportLabel,
|
|
439
|
-
useAltStyling: true,
|
|
440
|
-
studyDate: formatDate(StudyDate),
|
|
441
|
-
seriesDescription: `SEG Viewport ${SeriesDescription}`,
|
|
442
|
-
patientInformation: {
|
|
443
|
-
patientName: PatientName ? src["default"].utils.formatPN(PatientName.Alphabetic) : '',
|
|
444
|
-
patientSex: PatientSex || '',
|
|
445
|
-
patientAge: PatientAge || '',
|
|
446
|
-
MRN: PatientID || '',
|
|
447
|
-
thickness: SliceThickness ? src.utils.roundNumber(SliceThickness, 2) : '',
|
|
448
|
-
thicknessUnits: SliceThickness !== undefined ? 'mm' : '',
|
|
449
|
-
spacing: SpacingBetweenSlices !== undefined ? src.utils.roundNumber(SpacingBetweenSlices, 2) : '',
|
|
450
|
-
scanner: ManufacturerModelName || ''
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}), /*#__PURE__*/react.createElement("div", {
|
|
428
|
+
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
454
429
|
className: "relative flex h-full w-full flex-row overflow-hidden"
|
|
455
|
-
}, segIsLoading && /*#__PURE__*/react.createElement(
|
|
430
|
+
}, segIsLoading && /*#__PURE__*/react.createElement(src/* LoadingIndicatorTotalPercent */.pT, {
|
|
456
431
|
className: "h-full w-full",
|
|
457
432
|
totalNumbers: processingProgress.totalSegments,
|
|
458
433
|
percentComplete: processingProgress.percentComplete,
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[297],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 46297:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
__webpack_require__.r(__webpack_exports__);
|
|
8
8
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9
9
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
10
10
|
/* harmony export */ });
|
|
11
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
12
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
11
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41766);
|
|
12
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11374);
|
|
13
13
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
function OHIFCornerstonePdfViewport(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} = _ref;
|
|
16
|
+
function OHIFCornerstonePdfViewport({
|
|
17
|
+
displaySets
|
|
18
|
+
}) {
|
|
20
19
|
const [url, setUrl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
21
20
|
if (displaySets && displaySets.length > 1) {
|
|
22
21
|
throw new Error('OHIFCornerstonePdfViewport: only one display set is supported for dicom pdf right now');
|