@ohif/app 3.13.0-beta.6 → 3.13.0-beta.61
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/{1459.bundle.075e535250e3d4779923.js → 1459.bundle.4ad39e2c21e35cb2be1c.js} +5 -6
- package/dist/{1608.bundle.0687c661f1c9edfb3b8a.js → 1608.bundle.26306ea38618db59eff7.js} +12 -12
- package/dist/{1927.bundle.3050588e95f43cf57cdd.js → 1927.bundle.be67b3aafe238ca9f191.js} +27 -38
- package/dist/{1933.bundle.317997210b6a51079753.js → 1933.bundle.82822511235016082da4.js} +32 -27
- package/dist/{2018.bundle.31d14d6f9fb764b51bda.js → 2018.bundle.6f06faf8d0a5c91f5e7c.js} +18 -19
- package/dist/{6409.bundle.b36048896cb11c8571fb.js → 2075.bundle.23265b8e7597c398db4f.js} +327 -256
- package/dist/{2108.bundle.e84aa8d858d8c4f2413e.js → 2108.bundle.aea8d3b39486dd5ab39e.js} +569 -558
- package/dist/{213.bundle.363f9a3eb6c0d33e3921.js → 213.bundle.d8a8ffeec432cd8363c0.js} +3 -5
- package/dist/{2424.bundle.aa7f4df6cba71b817c87.js → 2424.bundle.c602ad458e7902f7f555.js} +3 -5
- package/dist/{2516.bundle.1ea0988d309a757bb6da.js → 2516.bundle.f62228e9a800de8d4b31.js} +6 -6
- package/dist/{2701.bundle.12bd01a80a9f8ea4cd94.js → 2701.bundle.6873805ddfdccc7a8b1e.js} +10 -10
- package/dist/{9195.bundle.adf6a548b6f7ae279c09.js → 2851.bundle.123d7f6fa1186ac1308a.js} +384 -169
- package/dist/{1730.bundle.1d137db2556d538263fb.js → 3138.bundle.bc81953147e0c5f3b23f.js} +16 -310
- package/dist/{3461.bundle.7024d5e66d12b4069031.js → 3461.bundle.f65494e79c37a14bc206.js} +131 -107
- package/dist/{147.bundle.37d627289453cb6c3937.js → 3754.bundle.fd4b67c2a29c4bc4a840.js} +486 -49
- package/dist/{4202.bundle.5a0f8e4004c5d8a68548.js → 4202.bundle.4fcd0de412907efd5b53.js} +6 -6
- package/dist/{4019.bundle.83a604779f7da0101ced.js → 4287.bundle.b7840e7b94cbbc102236.js} +348 -237
- package/dist/{5462.bundle.21beddaca145b7465c72.js → 4406.bundle.573d234b4641d23cf8db.js} +1083 -1308
- package/dist/{1403.bundle.40baf30d503370ce52c9.js → 4507.bundle.75bf28fe32a927130dec.js} +10 -305
- package/dist/{6347.bundle.784c48912700f281de1d.js → 4579.bundle.0a6b2f49a7e136a79e37.js} +561 -649
- package/dist/{4819.bundle.0c37918802ef7805586f.js → 4819.bundle.23965159795eaeb1ca1b.js} +39 -39
- package/dist/{4775.bundle.5d6203a2991902544266.js → 5015.bundle.54d7fda0f8e819aaa578.js} +29 -333
- package/dist/{5028.bundle.2cd4d2253b47845e6634.js → 5028.bundle.b806370179a0f878527b.js} +11 -13
- package/dist/{5261.bundle.6e1a017f8f1027557f5b.js → 5261.bundle.2655560097e9250eac44.js} +412 -345
- package/dist/{5457.bundle.15d4adb3ca43c45b044d.js → 5457.bundle.d1e9be8eab20c1620624.js} +16 -23
- package/dist/{5485.bundle.b9764a7846d57ee5710d.js → 5485.bundle.7de6ed76c9bf762fd395.js} +20 -32
- package/dist/{5491.bundle.2e01dd7ad29e4cc01bc1.js → 5491.bundle.4866d2ecb20dd089e071.js} +54 -51
- package/dist/{5802.bundle.3bf5e6b3ab330a594a47.js → 5802.bundle.26f84db0ff8851532c36.js} +79 -20
- package/dist/5802.css +1 -1
- package/dist/{5830.bundle.b073c265c4fcea1afff3.js → 5830.bundle.791019deddd536980a11.js} +3 -3
- package/dist/{5858.bundle.ff6b340cf7457db76a1a.js → 5858.bundle.466e58128de344ab53f3.js} +90 -86
- package/dist/{6027.bundle.55f4bf16015381255f33.js → 6027.bundle.11c8ba4581dca8a82b91.js} +3 -5
- package/dist/{6354.bundle.c387737dc09c9cab4ff2.js → 6354.bundle.929febcf6d326e582e00.js} +151 -140
- package/dist/{6376.bundle.9cb74d7bc08476e2f1a7.js → 6376.bundle.738c873196491232acb6.js} +6 -6
- package/dist/{2842.bundle.860b9f10fcdd9656947a.js → 6386.bundle.5d82d1f41d1c37a0358d.js} +904 -2298
- package/dist/6939.bundle.41fbdef87597b5172ec6.js +3 -3
- package/dist/{7159.bundle.a5991a5d4f0dd8f1c95f.js → 7159.bundle.fb9df255868960f69765.js} +7 -5
- package/dist/{3081.bundle.f0df1c7d93ef4be29102.js → 7166.bundle.6334b7a549c8d1f58bfd.js} +825 -410
- package/dist/{7190.bundle.e8f0193e0e06472f795c.js → 7190.bundle.3738008038e70525764f.js} +1129 -821
- package/dist/{732.bundle.6978ac30a1e36abf06db.js → 732.bundle.ea6f9d8504e37e01a208.js} +5 -13
- package/dist/{7431.bundle.b01791d10e6cf9f503b0.js → 7431.bundle.5e14641f2c71e852abe7.js} +28 -28
- package/dist/{4410.bundle.c5224cd7d6238a7d4660.js → 7537.bundle.1726a7f7a4c378296085.js} +5216 -2238
- package/dist/{7639.bundle.9057c381d5f455997d60.js → 7639.bundle.d7571b9b1bdd3c712fa7.js} +3 -5
- package/dist/7758.bundle.c8d106364298e7d288f0.js +3 -3
- package/dist/{8094.bundle.5c44190a325ac23e3e5c.js → 8094.bundle.148a66619607e37cbf19.js} +3 -4
- package/dist/{8305.bundle.2a215d860aa3bb1984f6.js → 8305.bundle.7ff9f067007c6fc02eff.js} +71 -66
- package/dist/{6163.bundle.18484c031c76e3835a71.js → 8499.bundle.b0d3892bff3f3163f747.js} +7 -302
- package/dist/8499.css +2 -0
- package/dist/{85.bundle.173a5ab4b47890e2f013.js → 85.bundle.203f56fd4f235891345a.js} +3 -5
- package/dist/{8558.bundle.52d7001a86845c8a91b8.js → 8558.bundle.ae26725ef258ef186524.js} +15 -309
- package/dist/{8583.bundle.e899badfa6f91f22b2f3.js → 8583.bundle.f56d7ead5b46d8d6f294.js} +24 -27
- package/dist/{997.bundle.822b33e561263084e18c.js → 9039.bundle.7afa93b103c3b26d4855.js} +3965 -2984
- package/dist/{7412.bundle.fab1742191b7fe937330.js → 9205.bundle.315c3b56464a7590235a.js} +6071 -3305
- package/dist/{3584.bundle.8cc0750425513433e9cc.js → 9567.bundle.be350438bed4e656f278.js} +3422 -2880
- package/dist/{9845.bundle.255e7c7f7a88193b4e47.js → 9845.bundle.8c450e8d65a78a5afcd3.js} +10 -10
- package/dist/{9862.bundle.3a8958a82c572015d25d.js → 9862.bundle.a5f7925840868fa4ecdb.js} +8 -6
- package/dist/{9927.bundle.0e4c7a7682b7acad3060.js → 9927.bundle.ceb2c44737524314f168.js} +4 -6
- package/dist/app-config.js +12 -0
- package/dist/{app.bundle.62d84a3df6ec149a44a6.js → app.bundle.97f04c5d27e5017d698b.js} +100613 -97645
- package/dist/app.bundle.css +3 -3
- package/dist/{polySeg.bundle.a5aa9130b4191253c410.js → compute.bundle.a41ec0ba4f935200ab93.js} +8 -20
- package/dist/{histogram-worker.bundle.d4e40a8018d2698b072e.js → histogram-worker.bundle.a2a50c4674d99c619ca7.js} +11 -23
- package/dist/index.html +1 -1
- package/dist/{interpolation.bundle.c70cb95d164dc494e6dc.js → interpolation.bundle.2559b710030605fc2bc6.js} +14 -26
- package/dist/{compute.bundle.64280c7af19ff567465f.js → polySeg.bundle.be57af5b834dd833a418.js} +10 -22
- package/dist/sw.js +1 -1
- package/package.json +23 -22
- package/dist/3343.bundle.d7578ce8f75d158c0bab.js +0 -297
- /package/dist/{1730.css → 3138.css} +0 -0
- /package/dist/{147.css → 3754.css} +0 -0
- /package/dist/{3343.css → 4972.css} +0 -0
- /package/dist/{6163.css → 7829.css} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[3754],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
5
|
-
|
|
4
|
+
/***/ 33754
|
|
5
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -18,8 +18,8 @@ var react = __webpack_require__(86326);
|
|
|
18
18
|
var esm = __webpack_require__(15327);
|
|
19
19
|
// EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
|
|
20
20
|
var src = __webpack_require__(42356);
|
|
21
|
-
// EXTERNAL MODULE: ../../ui-next/src/index.ts +
|
|
22
|
-
var ui_next_src = __webpack_require__(
|
|
21
|
+
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3085 modules
|
|
22
|
+
var ui_next_src = __webpack_require__(564);
|
|
23
23
|
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/state.ts
|
|
24
24
|
var state = __webpack_require__(71353);
|
|
25
25
|
;// ../../../extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.css
|
|
@@ -132,6 +132,456 @@ CornerstoneImageScrollbar.propTypes = {
|
|
|
132
132
|
servicesManager: (prop_types_default()).object.isRequired
|
|
133
133
|
};
|
|
134
134
|
/* harmony default export */ const ViewportImageScrollbar = (CornerstoneImageScrollbar);
|
|
135
|
+
;// ../../../extensions/cornerstone/src/Viewport/Overlays/ViewportSliceProgressScrollbar/helpers.ts
|
|
136
|
+
|
|
137
|
+
function getImageIndexFromEvent(event) {
|
|
138
|
+
const {
|
|
139
|
+
imageIndex,
|
|
140
|
+
newImageIdIndex = imageIndex,
|
|
141
|
+
imageIdIndex
|
|
142
|
+
} = event.detail;
|
|
143
|
+
return newImageIdIndex ?? imageIdIndex;
|
|
144
|
+
}
|
|
145
|
+
function getViewportImageIds(viewportData) {
|
|
146
|
+
if (!viewportData?.data?.length) {
|
|
147
|
+
return [];
|
|
148
|
+
}
|
|
149
|
+
const firstData = viewportData.data[0];
|
|
150
|
+
const volumeImageIds = firstData.volume?.imageIds;
|
|
151
|
+
const datumImageIds = firstData.imageIds;
|
|
152
|
+
return volumeImageIds || datumImageIds || [];
|
|
153
|
+
}
|
|
154
|
+
function isProgressFullMode(viewportData, viewport) {
|
|
155
|
+
if (!viewportData || !viewport || viewport instanceof esm.VolumeViewport3D) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (viewportData.viewportType === esm.Enums.ViewportType.STACK) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
if (viewportData.viewportType === esm.Enums.ViewportType.ORTHOGRAPHIC) {
|
|
162
|
+
return !!viewport.isInAcquisitionPlane?.();
|
|
163
|
+
}
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
function getImageIdFromCacheEvent(event) {
|
|
167
|
+
const detail = event?.detail;
|
|
168
|
+
return detail?.imageId || detail?.image?.imageId || detail?.cachedImage?.imageId;
|
|
169
|
+
}
|
|
170
|
+
;// ../../../extensions/cornerstone/src/Viewport/Overlays/ViewportSliceProgressScrollbar/hooks.ts
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
function useProgressScrollbarMode({
|
|
176
|
+
viewportData,
|
|
177
|
+
viewportId,
|
|
178
|
+
element,
|
|
179
|
+
cornerstoneViewportService
|
|
180
|
+
}) {
|
|
181
|
+
const [isFullMode, setIsFullMode] = (0,react.useState)(false);
|
|
182
|
+
const lastViewPlaneNormalRef = (0,react.useRef)(null);
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Tracks whether this viewport should render full progress UI (stack or acquisition-plane
|
|
186
|
+
* orthographic volume) versus minimal UI. We compute once on setup and recompute on each
|
|
187
|
+
* CAMERA_MODIFIED event so stack->MPR transitions and acquisition-plane changes are reflected
|
|
188
|
+
* immediately.
|
|
189
|
+
*/
|
|
190
|
+
(0,react.useEffect)(() => {
|
|
191
|
+
if (!viewportData) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const updateMode = () => {
|
|
195
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
196
|
+
const viewportImageData = viewport?.getImageData?.();
|
|
197
|
+
const nextViewPlaneNormal = viewport?.getCamera?.()?.viewPlaneNormal;
|
|
198
|
+
// Do not update the lastViewPlaneNormalRef until we have a valid viewportImageData.
|
|
199
|
+
// Without viewportImageData, the viewport is not fully initialized and the isAcquisitionPlane
|
|
200
|
+
// check will not be accurate.
|
|
201
|
+
if (viewportImageData && nextViewPlaneNormal) {
|
|
202
|
+
lastViewPlaneNormalRef.current = [...nextViewPlaneNormal];
|
|
203
|
+
}
|
|
204
|
+
const nextMode = isProgressFullMode(viewportData, viewport);
|
|
205
|
+
setIsFullMode(prevMode => prevMode === nextMode ? prevMode : nextMode);
|
|
206
|
+
};
|
|
207
|
+
updateMode();
|
|
208
|
+
const onCameraModified = () => {
|
|
209
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
210
|
+
const nextViewPlaneNormal = viewport?.getCamera?.()?.viewPlaneNormal;
|
|
211
|
+
const previousViewPlaneNormal = lastViewPlaneNormalRef.current;
|
|
212
|
+
|
|
213
|
+
// Ignore camera updates that keep the same orientation (pan/zoom/scroll).
|
|
214
|
+
if (nextViewPlaneNormal && previousViewPlaneNormal) {
|
|
215
|
+
if (esm.utilities.isEqual(nextViewPlaneNormal, previousViewPlaneNormal)) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
updateMode();
|
|
220
|
+
};
|
|
221
|
+
element.addEventListener(esm.Enums.Events.CAMERA_MODIFIED, onCameraModified);
|
|
222
|
+
return () => {
|
|
223
|
+
element.removeEventListener(esm.Enums.Events.CAMERA_MODIFIED, onCameraModified);
|
|
224
|
+
};
|
|
225
|
+
}, [viewportData, viewportId, cornerstoneViewportService, element]);
|
|
226
|
+
return isFullMode;
|
|
227
|
+
}
|
|
228
|
+
function useViewportSliceSync({
|
|
229
|
+
viewportData,
|
|
230
|
+
viewportId,
|
|
231
|
+
element,
|
|
232
|
+
cornerstoneViewportService,
|
|
233
|
+
setImageSliceData
|
|
234
|
+
}) {
|
|
235
|
+
/**
|
|
236
|
+
* Keeps shared slice state in sync: first initialize from the live viewport snapshot, then
|
|
237
|
+
* subscribe to navigation/render events for incremental updates while users scroll.
|
|
238
|
+
*/
|
|
239
|
+
(0,react.useEffect)(() => {
|
|
240
|
+
if (!viewportData) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
244
|
+
if (viewport && !(viewport instanceof esm.VolumeViewport3D)) {
|
|
245
|
+
try {
|
|
246
|
+
const currentImageIndex = viewport.getCurrentImageIdIndex();
|
|
247
|
+
const currentNumberOfSlices = viewport.getNumberOfSlices();
|
|
248
|
+
setImageSliceData({
|
|
249
|
+
imageIndex: currentImageIndex,
|
|
250
|
+
numberOfSlices: currentNumberOfSlices
|
|
251
|
+
});
|
|
252
|
+
} catch (error) {
|
|
253
|
+
console.warn(error);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const {
|
|
257
|
+
viewportType
|
|
258
|
+
} = viewportData;
|
|
259
|
+
const eventId = viewportType === esm.Enums.ViewportType.STACK && esm.Enums.Events.STACK_NEW_IMAGE || viewportType === esm.Enums.ViewportType.ORTHOGRAPHIC && esm.Enums.Events.VOLUME_NEW_IMAGE || esm.Enums.Events.IMAGE_RENDERED;
|
|
260
|
+
const updateIndex = event => {
|
|
261
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
262
|
+
if (!viewport || viewport instanceof esm.VolumeViewport3D) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const nextImageIndex = getImageIndexFromEvent(event);
|
|
266
|
+
if (nextImageIndex == null) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const nextNumberOfSlices = viewport.getNumberOfSlices();
|
|
270
|
+
setImageSliceData({
|
|
271
|
+
imageIndex: nextImageIndex,
|
|
272
|
+
numberOfSlices: nextNumberOfSlices
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
element.addEventListener(eventId, updateIndex);
|
|
276
|
+
return () => {
|
|
277
|
+
element.removeEventListener(eventId, updateIndex);
|
|
278
|
+
};
|
|
279
|
+
}, [viewportData, element, viewportId, cornerstoneViewportService, setImageSliceData]);
|
|
280
|
+
}
|
|
281
|
+
function useLoadedSliceBytes({
|
|
282
|
+
isFullMode,
|
|
283
|
+
numberOfSlices,
|
|
284
|
+
viewportData,
|
|
285
|
+
imageIds,
|
|
286
|
+
imageIdToIndex,
|
|
287
|
+
loadedBatchIntervalMs
|
|
288
|
+
}) {
|
|
289
|
+
const loadedState = (0,ui_next_src/* useByteArray */.Pcq)(numberOfSlices || 0, loadedBatchIntervalMs);
|
|
290
|
+
const {
|
|
291
|
+
resetWith: resetLoaded,
|
|
292
|
+
setByte: setLoadedByte,
|
|
293
|
+
clearByte: clearLoadedByte
|
|
294
|
+
} = loadedState;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Keeps the loaded byte array in sync with Cornerstone cache: seed from cache whenever stack /
|
|
298
|
+
* mode / slice count changes, then subscribe so cache add/remove updates stay incremental.
|
|
299
|
+
* Seeding runs immediately before registering listeners in the same effect.
|
|
300
|
+
*/
|
|
301
|
+
(0,react.useEffect)(() => {
|
|
302
|
+
if (isFullMode && numberOfSlices) {
|
|
303
|
+
resetLoaded(bytes => {
|
|
304
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
305
|
+
const imageId = imageIds[i];
|
|
306
|
+
if (imageId && esm.cache.isLoaded(imageId)) {
|
|
307
|
+
bytes[i] = 1;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
if (!isFullMode || !viewportData) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const markLoaded = event => {
|
|
316
|
+
const imageId = getImageIdFromCacheEvent(event);
|
|
317
|
+
if (!imageId) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const index = imageIdToIndex.get(imageId);
|
|
321
|
+
if (index !== undefined) {
|
|
322
|
+
setLoadedByte(index);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
const markRemoved = event => {
|
|
326
|
+
const imageId = getImageIdFromCacheEvent(event);
|
|
327
|
+
if (!imageId) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const index = imageIdToIndex.get(imageId);
|
|
331
|
+
if (index !== undefined) {
|
|
332
|
+
clearLoadedByte(index);
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
esm.eventTarget.addEventListener(esm.Enums.Events.IMAGE_CACHE_IMAGE_ADDED, markLoaded);
|
|
336
|
+
esm.eventTarget.addEventListener(esm.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, markRemoved);
|
|
337
|
+
return () => {
|
|
338
|
+
esm.eventTarget.removeEventListener(esm.Enums.Events.IMAGE_CACHE_IMAGE_ADDED, markLoaded);
|
|
339
|
+
esm.eventTarget.removeEventListener(esm.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, markRemoved);
|
|
340
|
+
};
|
|
341
|
+
}, [imageIds, isFullMode, numberOfSlices, viewportData, imageIdToIndex, resetLoaded, setLoadedByte, clearLoadedByte]);
|
|
342
|
+
return loadedState;
|
|
343
|
+
}
|
|
344
|
+
function useViewedSliceBytes({
|
|
345
|
+
isFullMode,
|
|
346
|
+
numberOfSlices,
|
|
347
|
+
imageIndex,
|
|
348
|
+
imageIds,
|
|
349
|
+
imageIdToIndex,
|
|
350
|
+
viewedDwellMs,
|
|
351
|
+
viewedDataService
|
|
352
|
+
}) {
|
|
353
|
+
const viewedState = (0,ui_next_src/* useByteArray */.Pcq)(numberOfSlices || 0);
|
|
354
|
+
const {
|
|
355
|
+
resetWith: resetViewed,
|
|
356
|
+
setByte: setViewedByte
|
|
357
|
+
} = viewedState;
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Keeps the viewed byte array in sync with the global viewed-data store: seed from the store
|
|
361
|
+
* whenever stack / mode / slice count changes, then subscribe so `markDataViewed` updates stay
|
|
362
|
+
* incremental. Seeding runs immediately before registering the listener in the same effect.
|
|
363
|
+
*/
|
|
364
|
+
(0,react.useEffect)(() => {
|
|
365
|
+
if (isFullMode && numberOfSlices) {
|
|
366
|
+
resetViewed(bytes => {
|
|
367
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
368
|
+
const imageId = imageIds[i];
|
|
369
|
+
if (imageId && viewedDataService?.isDataViewed(imageId)) {
|
|
370
|
+
bytes[i] = 1;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
if (!viewedDataService) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const subscription = viewedDataService.subscribeViewedDataChanges(({
|
|
379
|
+
viewedDataId,
|
|
380
|
+
viewedDataCleared
|
|
381
|
+
}) => {
|
|
382
|
+
if (!isFullMode || !numberOfSlices) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
if (viewedDataCleared) {
|
|
386
|
+
resetViewed(bytes => {
|
|
387
|
+
bytes.fill(0);
|
|
388
|
+
});
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const index = imageIdToIndex.get(viewedDataId);
|
|
392
|
+
if (index !== undefined) {
|
|
393
|
+
setViewedByte(index);
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
return () => {
|
|
397
|
+
subscription.unsubscribe();
|
|
398
|
+
};
|
|
399
|
+
}, [imageIds, isFullMode, numberOfSlices, imageIdToIndex, resetViewed, setViewedByte, viewedDataService]);
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Marks slices as viewed in full mode. With `viewedDwellMs === 0`, marking is immediate on
|
|
403
|
+
* index change; otherwise a dwell timer is used and cleaned up on subsequent changes/unmount.
|
|
404
|
+
*/
|
|
405
|
+
(0,react.useEffect)(() => {
|
|
406
|
+
if (!isFullMode || !numberOfSlices) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const markViewed = targetIndex => {
|
|
410
|
+
setViewedByte(targetIndex);
|
|
411
|
+
const imageId = imageIds[targetIndex];
|
|
412
|
+
if (imageId) {
|
|
413
|
+
viewedDataService?.markDataViewed(imageId);
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
if (viewedDwellMs === 0) {
|
|
417
|
+
markViewed(imageIndex || 0);
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const timerId = window.setTimeout(() => {
|
|
421
|
+
markViewed(imageIndex || 0);
|
|
422
|
+
}, viewedDwellMs);
|
|
423
|
+
return () => {
|
|
424
|
+
window.clearTimeout(timerId);
|
|
425
|
+
};
|
|
426
|
+
}, [isFullMode, numberOfSlices, imageIndex, imageIds, setViewedByte, viewedDwellMs, viewedDataService]);
|
|
427
|
+
return viewedState;
|
|
428
|
+
}
|
|
429
|
+
;// ../../../extensions/cornerstone/src/Viewport/Overlays/ViewportSliceProgressScrollbar/ViewportSliceProgressScrollbar.tsx
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
function ViewportSliceProgressScrollbar({
|
|
437
|
+
viewportData,
|
|
438
|
+
viewportId,
|
|
439
|
+
element,
|
|
440
|
+
imageSliceData,
|
|
441
|
+
setImageSliceData,
|
|
442
|
+
servicesManager
|
|
443
|
+
}) {
|
|
444
|
+
const {
|
|
445
|
+
cineService,
|
|
446
|
+
cornerstoneViewportService,
|
|
447
|
+
customizationService,
|
|
448
|
+
viewedDataService
|
|
449
|
+
} = servicesManager.services;
|
|
450
|
+
const showLoadedEndpoints = customizationService.getCustomization('viewportScrollbar.showLoadedEndpoints') !== false;
|
|
451
|
+
const showLoadedFill = customizationService.getCustomization('viewportScrollbar.showLoadedFill') !== false;
|
|
452
|
+
const showViewedFill = customizationService.getCustomization('viewportScrollbar.showViewedFill') !== false;
|
|
453
|
+
const showLoadingPattern = customizationService.getCustomization('viewportScrollbar.showLoadingPattern') !== false;
|
|
454
|
+
const viewedDwellMsRaw = customizationService.getCustomization('viewportScrollbar.viewedDwellMs');
|
|
455
|
+
const loadedBatchIntervalMsRaw = customizationService.getCustomization('viewportScrollbar.loadedBatchIntervalMs');
|
|
456
|
+
const viewedDwellMs = typeof viewedDwellMsRaw === 'number' && viewedDwellMsRaw >= 0 ? viewedDwellMsRaw : 0;
|
|
457
|
+
const loadedBatchIntervalMs = typeof loadedBatchIntervalMsRaw === 'number' && loadedBatchIntervalMsRaw >= 0 ? loadedBatchIntervalMsRaw : 200;
|
|
458
|
+
const {
|
|
459
|
+
numberOfSlices,
|
|
460
|
+
imageIndex
|
|
461
|
+
} = imageSliceData;
|
|
462
|
+
const imageIds = (0,react.useMemo)(() => getViewportImageIds(viewportData), [viewportData]);
|
|
463
|
+
const imageIdToIndex = (0,react.useMemo)(() => {
|
|
464
|
+
const map = new Map();
|
|
465
|
+
for (let i = 0; i < imageIds.length; i++) {
|
|
466
|
+
const imageId = imageIds[i];
|
|
467
|
+
if (imageId) {
|
|
468
|
+
map.set(imageId, i);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return map;
|
|
472
|
+
}, [imageIds]);
|
|
473
|
+
const isFullMode = useProgressScrollbarMode({
|
|
474
|
+
viewportData,
|
|
475
|
+
viewportId,
|
|
476
|
+
element,
|
|
477
|
+
cornerstoneViewportService
|
|
478
|
+
});
|
|
479
|
+
useViewportSliceSync({
|
|
480
|
+
viewportData,
|
|
481
|
+
viewportId,
|
|
482
|
+
element,
|
|
483
|
+
cornerstoneViewportService,
|
|
484
|
+
setImageSliceData
|
|
485
|
+
});
|
|
486
|
+
const {
|
|
487
|
+
bytes: loadedBytes,
|
|
488
|
+
version: loadedVersion,
|
|
489
|
+
isFull: isFullyLoaded
|
|
490
|
+
} = useLoadedSliceBytes({
|
|
491
|
+
isFullMode,
|
|
492
|
+
numberOfSlices,
|
|
493
|
+
viewportData,
|
|
494
|
+
imageIds,
|
|
495
|
+
imageIdToIndex,
|
|
496
|
+
loadedBatchIntervalMs
|
|
497
|
+
});
|
|
498
|
+
const {
|
|
499
|
+
bytes: viewedBytes,
|
|
500
|
+
version: viewedVersion
|
|
501
|
+
} = useViewedSliceBytes({
|
|
502
|
+
isFullMode,
|
|
503
|
+
numberOfSlices,
|
|
504
|
+
imageIndex,
|
|
505
|
+
imageIds,
|
|
506
|
+
imageIdToIndex,
|
|
507
|
+
viewedDwellMs,
|
|
508
|
+
viewedDataService
|
|
509
|
+
});
|
|
510
|
+
const onScrollbarValueChange = targetImageIndex => {
|
|
511
|
+
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
512
|
+
if (!viewport || viewport instanceof esm.VolumeViewport3D) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const {
|
|
516
|
+
isCineEnabled
|
|
517
|
+
} = cineService.getState();
|
|
518
|
+
if (isCineEnabled) {
|
|
519
|
+
cineService.stopClip(element, {
|
|
520
|
+
viewportId
|
|
521
|
+
});
|
|
522
|
+
cineService.setCine({
|
|
523
|
+
id: viewportId,
|
|
524
|
+
frameRate: undefined,
|
|
525
|
+
isPlaying: false
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
esm.utilities.jumpToSlice(viewport.element, {
|
|
529
|
+
imageIndex: targetImageIndex,
|
|
530
|
+
debounceLoading: true
|
|
531
|
+
});
|
|
532
|
+
};
|
|
533
|
+
const isLoading = isFullMode && showLoadingPattern ? !isFullyLoaded : false;
|
|
534
|
+
if (!numberOfSlices || numberOfSlices <= 1) {
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
return /*#__PURE__*/react.createElement("div", {
|
|
538
|
+
style: {
|
|
539
|
+
position: 'absolute',
|
|
540
|
+
right: 0,
|
|
541
|
+
top: 0,
|
|
542
|
+
height: '100%',
|
|
543
|
+
padding: '8px 5px',
|
|
544
|
+
zIndex: 10
|
|
545
|
+
}
|
|
546
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
547
|
+
style: {
|
|
548
|
+
position: 'relative',
|
|
549
|
+
height: '100%',
|
|
550
|
+
width: '11px'
|
|
551
|
+
}
|
|
552
|
+
}, /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbar */.IN7, {
|
|
553
|
+
className: "absolute inset-0",
|
|
554
|
+
value: imageIndex || 0,
|
|
555
|
+
total: numberOfSlices,
|
|
556
|
+
onValueChange: onScrollbarValueChange,
|
|
557
|
+
isLoading: isLoading,
|
|
558
|
+
enableKeyboardNavigation: false,
|
|
559
|
+
"aria-label": "Image navigation scrollbar",
|
|
560
|
+
indicator: customizationService.getCustomization('viewportScrollbar.indicator')
|
|
561
|
+
}, /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbarTrack */.dLR, null, isFullMode && showLoadedFill && /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbarFill */.pSN, {
|
|
562
|
+
marked: loadedBytes,
|
|
563
|
+
version: loadedVersion,
|
|
564
|
+
className: "bg-neutral/25",
|
|
565
|
+
loadingClassName: "bg-neutral/50"
|
|
566
|
+
}), isFullMode && showViewedFill && /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbarFill */.pSN, {
|
|
567
|
+
marked: viewedBytes,
|
|
568
|
+
version: viewedVersion,
|
|
569
|
+
className: "bg-primary/35",
|
|
570
|
+
loadingClassName: "bg-primary/35"
|
|
571
|
+
})), /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbarIndicator */.RY_, null), isFullMode && showLoadedEndpoints && /*#__PURE__*/react.createElement(ui_next_src/* SmartScrollbarEndpoints */.ult, {
|
|
572
|
+
marked: loadedBytes,
|
|
573
|
+
version: loadedVersion
|
|
574
|
+
}))));
|
|
575
|
+
}
|
|
576
|
+
ViewportSliceProgressScrollbar.propTypes = {
|
|
577
|
+
viewportData: (prop_types_default()).object,
|
|
578
|
+
viewportId: (prop_types_default()).string.isRequired,
|
|
579
|
+
element: prop_types_default().instanceOf(Element),
|
|
580
|
+
imageSliceData: (prop_types_default()).object.isRequired,
|
|
581
|
+
setImageSliceData: (prop_types_default()).func.isRequired,
|
|
582
|
+
servicesManager: (prop_types_default()).object.isRequired
|
|
583
|
+
};
|
|
584
|
+
/* harmony default export */ const ViewportSliceProgressScrollbar_ViewportSliceProgressScrollbar = (ViewportSliceProgressScrollbar);
|
|
135
585
|
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
|
|
136
586
|
var gl_matrix_esm = __webpack_require__(3823);
|
|
137
587
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
|
|
@@ -140,6 +590,7 @@ var dist_esm = __webpack_require__(4667);
|
|
|
140
590
|
var moment = __webpack_require__(14867);
|
|
141
591
|
var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
|
|
142
592
|
;// ../../../extensions/cornerstone/src/Viewport/Overlays/utils.ts
|
|
593
|
+
/* unused harmony import specifier */ var metaData;
|
|
143
594
|
|
|
144
595
|
|
|
145
596
|
|
|
@@ -248,14 +699,11 @@ function CustomizableViewportOverlay({
|
|
|
248
699
|
toolGroupService,
|
|
249
700
|
displaySetService
|
|
250
701
|
} = servicesManager.services;
|
|
251
|
-
const [voi, setVOI] = (0,react.useState)({
|
|
252
|
-
windowCenter: null,
|
|
253
|
-
windowWidth: null
|
|
254
|
-
});
|
|
255
702
|
const [scale, setScale] = (0,react.useState)(1);
|
|
256
703
|
const [annotationState, setAnnotationState] = (0,react.useState)(0);
|
|
257
704
|
const {
|
|
258
|
-
isViewportBackgroundLight: isLight
|
|
705
|
+
isViewportBackgroundLight: isLight,
|
|
706
|
+
windowLevel: voi
|
|
259
707
|
} = (0,hooks/* useViewportRendering */.eH)(viewportId);
|
|
260
708
|
const {
|
|
261
709
|
imageIndex
|
|
@@ -288,36 +736,6 @@ function CustomizableViewportOverlay({
|
|
|
288
736
|
referenceInstance
|
|
289
737
|
};
|
|
290
738
|
}, [viewportData, viewportId, instanceNumber, cornerstoneViewportService]);
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Updating the VOI when the viewport changes its voi
|
|
294
|
-
*/
|
|
295
|
-
(0,react.useEffect)(() => {
|
|
296
|
-
const updateVOI = eventDetail => {
|
|
297
|
-
const {
|
|
298
|
-
range
|
|
299
|
-
} = eventDetail.detail;
|
|
300
|
-
if (!range) {
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
const {
|
|
304
|
-
lower,
|
|
305
|
-
upper
|
|
306
|
-
} = range;
|
|
307
|
-
const {
|
|
308
|
-
windowWidth,
|
|
309
|
-
windowCenter
|
|
310
|
-
} = esm.utilities.windowLevel.toWindowLevel(lower, upper);
|
|
311
|
-
setVOI({
|
|
312
|
-
windowCenter,
|
|
313
|
-
windowWidth
|
|
314
|
-
});
|
|
315
|
-
};
|
|
316
|
-
element.addEventListener(esm.Enums.Events.VOI_MODIFIED, updateVOI);
|
|
317
|
-
return () => {
|
|
318
|
-
element.removeEventListener(esm.Enums.Events.VOI_MODIFIED, updateVOI);
|
|
319
|
-
};
|
|
320
|
-
}, [viewportId, viewportData, voi, element]);
|
|
321
739
|
const annotationModified = (0,react.useCallback)(evt => {
|
|
322
740
|
if (evt.detail.annotation.metadata.toolName === dist_esm.UltrasoundPleuraBLineTool.toolName) {
|
|
323
741
|
// Update the annotation state to trigger a re-render
|
|
@@ -385,7 +803,7 @@ function CustomizableViewportOverlay({
|
|
|
385
803
|
return renderItem.contentF(overlayItemProps);
|
|
386
804
|
}
|
|
387
805
|
}
|
|
388
|
-
}, [element, viewportData, imageSliceData, viewportId, servicesManager, customizationService, displaySetProps, voi, scale, instanceNumber, annotationState]);
|
|
806
|
+
}, [element, viewportData, imageSliceData, viewportId, servicesManager, customizationService, displaySetProps, voi, scale, instanceNumber, annotationState, isLight]);
|
|
389
807
|
const getContent = (0,react.useCallback)((customization, keyPrefix) => {
|
|
390
808
|
const props = {
|
|
391
809
|
...displaySetProps,
|
|
@@ -528,7 +946,7 @@ function OverlayItem(props) {
|
|
|
528
946
|
}, label ? /*#__PURE__*/react.createElement("span", {
|
|
529
947
|
className: "mr-1 shrink-0"
|
|
530
948
|
}, label) : null, /*#__PURE__*/react.createElement("span", {
|
|
531
|
-
className: "ml-0
|
|
949
|
+
className: "ml-0 shrink-0"
|
|
532
950
|
}, value));
|
|
533
951
|
}
|
|
534
952
|
|
|
@@ -544,6 +962,9 @@ function VOIOverlayItem({
|
|
|
544
962
|
windowWidth,
|
|
545
963
|
windowCenter
|
|
546
964
|
} = voi;
|
|
965
|
+
const {
|
|
966
|
+
title
|
|
967
|
+
} = customization;
|
|
547
968
|
if (typeof windowCenter !== 'number' || typeof windowWidth !== 'number') {
|
|
548
969
|
return null;
|
|
549
970
|
}
|
|
@@ -551,7 +972,8 @@ function VOIOverlayItem({
|
|
|
551
972
|
className: "overlay-item flex flex-row",
|
|
552
973
|
style: {
|
|
553
974
|
color: customization?.color
|
|
554
|
-
}
|
|
975
|
+
},
|
|
976
|
+
title: title
|
|
555
977
|
}, /*#__PURE__*/react.createElement("span", {
|
|
556
978
|
className: "mr-0.5 shrink-0 opacity-[0.70]"
|
|
557
979
|
}, "W:"), /*#__PURE__*/react.createElement("span", {
|
|
@@ -592,11 +1014,15 @@ function InstanceNumberOverlayItem({
|
|
|
592
1014
|
imageIndex,
|
|
593
1015
|
numberOfSlices
|
|
594
1016
|
} = imageSliceData;
|
|
1017
|
+
const {
|
|
1018
|
+
title
|
|
1019
|
+
} = customization;
|
|
595
1020
|
return /*#__PURE__*/react.createElement("div", {
|
|
596
1021
|
className: "overlay-item flex flex-row",
|
|
597
1022
|
style: {
|
|
598
1023
|
color: customization && customization.color || undefined
|
|
599
|
-
}
|
|
1024
|
+
},
|
|
1025
|
+
title: title
|
|
600
1026
|
}, /*#__PURE__*/react.createElement("span", null, instanceNumber !== undefined && instanceNumber !== null ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
|
|
601
1027
|
className: "mr-0.5 shrink-0 opacity-[0.70]"
|
|
602
1028
|
}, "I:"), /*#__PURE__*/react.createElement("span", null, `${instanceNumber} (${imageIndex + 1}/${numberOfSlices})`)) : `${imageIndex + 1}/${numberOfSlices}`));
|
|
@@ -767,7 +1193,7 @@ function ViewportImageSliceLoadingIndicator({
|
|
|
767
1193
|
}, /*#__PURE__*/react.createElement("div", {
|
|
768
1194
|
className: "transparent flex h-full w-full items-center justify-center"
|
|
769
1195
|
}, /*#__PURE__*/react.createElement("p", {
|
|
770
|
-
className: "text-
|
|
1196
|
+
className: "text-highlight text-xl font-light"
|
|
771
1197
|
}, /*#__PURE__*/react.createElement("h4", null, "Error Loading Image"), /*#__PURE__*/react.createElement("p", null, "An error has occurred."), /*#__PURE__*/react.createElement("p", null, error)))));
|
|
772
1198
|
}
|
|
773
1199
|
if (loading) {
|
|
@@ -780,7 +1206,7 @@ function ViewportImageSliceLoadingIndicator({
|
|
|
780
1206
|
}, /*#__PURE__*/react.createElement("div", {
|
|
781
1207
|
className: "transparent flex h-full w-full items-center justify-center"
|
|
782
1208
|
}, /*#__PURE__*/react.createElement("p", {
|
|
783
|
-
className: "text-
|
|
1209
|
+
className: "text-highlight text-xl font-light"
|
|
784
1210
|
}, "Loading...")))
|
|
785
1211
|
);
|
|
786
1212
|
}
|
|
@@ -797,6 +1223,7 @@ ViewportImageSliceLoadingIndicator.propTypes = {
|
|
|
797
1223
|
|
|
798
1224
|
|
|
799
1225
|
|
|
1226
|
+
|
|
800
1227
|
function CornerstoneOverlays(props) {
|
|
801
1228
|
const {
|
|
802
1229
|
viewportId,
|
|
@@ -805,7 +1232,8 @@ function CornerstoneOverlays(props) {
|
|
|
805
1232
|
servicesManager
|
|
806
1233
|
} = props;
|
|
807
1234
|
const {
|
|
808
|
-
cornerstoneViewportService
|
|
1235
|
+
cornerstoneViewportService,
|
|
1236
|
+
customizationService
|
|
809
1237
|
} = servicesManager.services;
|
|
810
1238
|
const [imageSliceData, setImageSliceData] = (0,react.useState)({
|
|
811
1239
|
imageIndex: 0,
|
|
@@ -834,9 +1262,18 @@ function CornerstoneOverlays(props) {
|
|
|
834
1262
|
return null;
|
|
835
1263
|
}
|
|
836
1264
|
}
|
|
1265
|
+
const viewportScrollbarVariant = customizationService.getCustomization('viewportScrollbar.variant');
|
|
1266
|
+
const useProgressScrollbar = viewportScrollbarVariant !== 'legacy';
|
|
837
1267
|
return /*#__PURE__*/react.createElement("div", {
|
|
838
1268
|
className: "noselect"
|
|
839
|
-
}, /*#__PURE__*/react.createElement(
|
|
1269
|
+
}, useProgressScrollbar ? /*#__PURE__*/react.createElement(ViewportSliceProgressScrollbar_ViewportSliceProgressScrollbar, {
|
|
1270
|
+
viewportId: viewportId,
|
|
1271
|
+
viewportData: viewportData,
|
|
1272
|
+
element: element,
|
|
1273
|
+
imageSliceData: imageSliceData,
|
|
1274
|
+
setImageSliceData: setImageSliceData,
|
|
1275
|
+
servicesManager: servicesManager
|
|
1276
|
+
}) : /*#__PURE__*/react.createElement(ViewportImageScrollbar, {
|
|
840
1277
|
viewportId: viewportId,
|
|
841
1278
|
viewportData: viewportData,
|
|
842
1279
|
element: element,
|
|
@@ -1658,6 +2095,6 @@ function areEqual(prevProps, nextProps) {
|
|
|
1658
2095
|
}
|
|
1659
2096
|
/* harmony default export */ const Viewport_OHIFCornerstoneViewport = (OHIFCornerstoneViewport);
|
|
1660
2097
|
|
|
1661
|
-
/***/ }
|
|
2098
|
+
/***/ }
|
|
1662
2099
|
|
|
1663
2100
|
}]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[4202],{
|
|
3
3
|
|
|
4
|
-
/***/ 74202
|
|
5
|
-
|
|
4
|
+
/***/ 74202
|
|
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__, {
|
|
@@ -11,8 +11,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11
11
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97598);
|
|
12
12
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);
|
|
13
13
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86326);
|
|
14
|
-
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
15
|
-
/* harmony import */ var _ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
14
|
+
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(564);
|
|
15
|
+
/* harmony import */ var _ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(87166);
|
|
16
16
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
17
17
|
|
|
18
18
|
|
|
@@ -106,7 +106,7 @@ function OHIFCornerstonePMAPViewport(props) {
|
|
|
106
106
|
type: 'warning',
|
|
107
107
|
message: 'The values are multiplied by 100 in the viewport for better visibility'
|
|
108
108
|
});
|
|
109
|
-
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__.OHIFCornerstoneViewport, _extends({}, props, {
|
|
109
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__/* .OHIFCornerstoneViewport */ .R9, _extends({}, props, {
|
|
110
110
|
// Referenced + PMAP displaySets must be passed as parameter in this order
|
|
111
111
|
displaySets: [referencedDisplaySet, pmapDisplaySet],
|
|
112
112
|
viewportOptions: {
|
|
@@ -191,6 +191,6 @@ function _getReferencedDisplaySetMetadata(referencedDisplaySet, pmapDisplaySet)
|
|
|
191
191
|
}
|
|
192
192
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OHIFCornerstonePMAPViewport);
|
|
193
193
|
|
|
194
|
-
/***/ }
|
|
194
|
+
/***/ }
|
|
195
195
|
|
|
196
196
|
}]);
|