@ohif/app 3.13.0-beta.0 → 3.13.0-beta.10
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/{1933.bundle.682f142e3217d4c7fbf7.js → 1933.bundle.b3c13990c2990085213b.js} +4 -3
- package/dist/{3081.bundle.41838985e0472851eadb.js → 3081.bundle.4e5f2f76dc80e817b870.js} +27 -6
- package/dist/{5802.bundle.3bf5e6b3ab330a594a47.js → 5802.bundle.552c1f4320fadbfc9b00.js} +65 -8
- package/dist/{6376.bundle.272e755bdcbb5615a44e.js → 6376.bundle.9cb74d7bc08476e2f1a7.js} +1 -1
- package/dist/{7190.bundle.d731ae6cf6e933a2c408.js → 7190.bundle.e8f0193e0e06472f795c.js} +491 -357
- package/dist/{9195.bundle.1d1484158b2f05246396.js → 9195.bundle.613833eca6f4de0163c4.js} +2 -6
- package/dist/{app.bundle.f9ef4f9dbc1c3e69a1ae.js → app.bundle.391d20d3233afbea3a62.js} +40 -6
- package/dist/index.html +1 -1
- package/dist/{interpolation.bundle.1938b79f9d6db363528a.js → interpolation.bundle.c70cb95d164dc494e6dc.js} +1 -1
- package/dist/sw.js +1 -1
- package/package.json +20 -20
- /package/dist/{1403.bundle.1c9ce804d1e88033e276.js → 1403.bundle.a27e93da0df0ac5e00ec.js} +0 -0
- /package/dist/{1459.bundle.e8802999a4d7f7edf628.js → 1459.bundle.008d9ec6f9be156cc7eb.js} +0 -0
- /package/dist/{1730.bundle.66a5e554ab20dab97b11.js → 1730.bundle.5517f6425625cdbe4295.js} +0 -0
- /package/dist/{2018.bundle.c06693143228cc034cb9.js → 2018.bundle.f803d6eed149702dbf96.js} +0 -0
- /package/dist/{213.bundle.c2d4d7370c26b0823880.js → 213.bundle.4da62ab9aad5bc5dfc8f.js} +0 -0
- /package/dist/{2424.bundle.c1e287e752f352b76543.js → 2424.bundle.3d8bbbb0d5b460421132.js} +0 -0
- /package/dist/{3461.bundle.a8fcefd1c6e389d905fc.js → 3461.bundle.d4b3be1127c5409178b1.js} +0 -0
- /package/dist/{4775.bundle.70bc407db26afaa4331a.js → 4775.bundle.0657b2fc04ff02e864ee.js} +0 -0
- /package/dist/{4819.bundle.47e7aa44747ddab3a39a.js → 4819.bundle.ed50b19e3201f03cd379.js} +0 -0
- /package/dist/{5028.bundle.274945a9ae69c6b6ad51.js → 5028.bundle.f0f27922d615c64fcec6.js} +0 -0
- /package/dist/{5457.bundle.f7de73bcfe1012a73b9f.js → 5457.bundle.f9939704daa9da5ffb8f.js} +0 -0
- /package/dist/{5485.bundle.4e0ec03c61ec5cadd9bb.js → 5485.bundle.349cbcd05639e5a99635.js} +0 -0
- /package/dist/{6027.bundle.2b12862684b0cb3af4b4.js → 6027.bundle.018be92e12bfc4aebc26.js} +0 -0
- /package/dist/{6163.bundle.ca93a4e6501880901f94.js → 6163.bundle.59d2aa5fcc846c9dc440.js} +0 -0
- /package/dist/{7639.bundle.32152cacb059089ed7d7.js → 7639.bundle.34966b47cb5e30e77f6a.js} +0 -0
- /package/dist/{8305.bundle.2ede68ba3c075928c9f4.js → 8305.bundle.b2e7cc8553f350b692eb.js} +0 -0
- /package/dist/{85.bundle.05591d5a14d74a502dfe.js → 85.bundle.cbadd8f432e9e83241af.js} +0 -0
- /package/dist/{8558.bundle.3e84c4ba2c7ec6fce52c.js → 8558.bundle.f0ca04e313d762510357.js} +0 -0
- /package/dist/{8583.bundle.2908eee785e7e4595d14.js → 8583.bundle.4930e7e2ee13e65c0a99.js} +0 -0
- /package/dist/{9927.bundle.e798a347dfe1f241578f.js → 9927.bundle.8dce9dab0a013bfa5c0b.js} +0 -0
|
@@ -2692,12 +2692,13 @@ const extension = {
|
|
|
2692
2692
|
handleHeight: true,
|
|
2693
2693
|
handleWidth: true
|
|
2694
2694
|
});
|
|
2695
|
+
const setViewportActive = (0,react.useCallback)(viewportId => {
|
|
2696
|
+
viewportGridService.setActiveViewportId(viewportId);
|
|
2697
|
+
}, [viewportGridService]);
|
|
2695
2698
|
return /*#__PURE__*/react.createElement(MicroscopyViewport, _extends({
|
|
2696
2699
|
key: displaySetsKey,
|
|
2697
2700
|
activeViewportId: activeViewportId,
|
|
2698
|
-
setViewportActive:
|
|
2699
|
-
viewportGridService.setActiveViewportId(viewportId);
|
|
2700
|
-
},
|
|
2701
|
+
setViewportActive: setViewportActive,
|
|
2701
2702
|
viewportData: viewportOptions,
|
|
2702
2703
|
resizeRef: resizeRef
|
|
2703
2704
|
}, props));
|
|
@@ -6089,6 +6089,10 @@ const connectMeasurementServiceToTools = ({
|
|
|
6089
6089
|
|
|
6090
6090
|
|
|
6091
6091
|
function _getVolumeFromViewport(viewport) {
|
|
6092
|
+
// Handle non-volume viewports that don't have getAllVolumeIds
|
|
6093
|
+
if (!viewport?.getAllVolumeIds) {
|
|
6094
|
+
return null;
|
|
6095
|
+
}
|
|
6092
6096
|
const volumeIds = viewport.getAllVolumeIds();
|
|
6093
6097
|
const volumes = volumeIds.map(id => esm.cache.getVolume(id));
|
|
6094
6098
|
const dynamicVolume = volumes.find(volume => volume.isDynamicVolume());
|
|
@@ -25438,6 +25442,9 @@ const setUpAnnotationEventHandlers = () => {
|
|
|
25438
25442
|
};
|
|
25439
25443
|
return [annotationInterpolationProcessCompletedUnsubscribe];
|
|
25440
25444
|
};
|
|
25445
|
+
// EXTERNAL MODULE: ../../../node_modules/immutability-helper/index.js
|
|
25446
|
+
var immutability_helper = __webpack_require__(1752);
|
|
25447
|
+
var immutability_helper_default = /*#__PURE__*/__webpack_require__.n(immutability_helper);
|
|
25441
25448
|
;// ../../../extensions/cornerstone/src/components/MeasurementsMenu.tsx
|
|
25442
25449
|
|
|
25443
25450
|
|
|
@@ -25802,6 +25809,7 @@ function src_extends() { return src_extends = Object.assign ? Object.assign.bind
|
|
|
25802
25809
|
|
|
25803
25810
|
|
|
25804
25811
|
|
|
25812
|
+
|
|
25805
25813
|
|
|
25806
25814
|
|
|
25807
25815
|
const {
|
|
@@ -25815,7 +25823,7 @@ const OHIFCornerstoneViewport = props => {
|
|
|
25815
25823
|
fallback: /*#__PURE__*/react.createElement("div", null, "Loading...")
|
|
25816
25824
|
}, /*#__PURE__*/react.createElement(Component, props));
|
|
25817
25825
|
};
|
|
25818
|
-
const
|
|
25826
|
+
const DEFAULT_STACK_RETRIEVE_OPTIONS = {
|
|
25819
25827
|
retrieveOptions: {
|
|
25820
25828
|
single: {
|
|
25821
25829
|
streaming: true,
|
|
@@ -25823,6 +25831,11 @@ const stackRetrieveOptions = {
|
|
|
25823
25831
|
}
|
|
25824
25832
|
}
|
|
25825
25833
|
};
|
|
25834
|
+
|
|
25835
|
+
/** Normalize to immutability-helper spec: plain object → $merge, otherwise use as-is. */
|
|
25836
|
+
const toUpdateSpec = obj => obj != null && typeof obj === 'object' && Object.keys(obj).some(k => k.startsWith('$')) ? obj : {
|
|
25837
|
+
$merge: obj ?? {}
|
|
25838
|
+
};
|
|
25826
25839
|
const unsubscriptions = [];
|
|
25827
25840
|
/**
|
|
25828
25841
|
*
|
|
@@ -25834,7 +25847,8 @@ const cornerstoneExtension = {
|
|
|
25834
25847
|
id: id,
|
|
25835
25848
|
onModeEnter: ({
|
|
25836
25849
|
servicesManager,
|
|
25837
|
-
commandsManager
|
|
25850
|
+
commandsManager,
|
|
25851
|
+
extensionManager
|
|
25838
25852
|
}) => {
|
|
25839
25853
|
const {
|
|
25840
25854
|
cornerstoneViewportService,
|
|
@@ -25861,10 +25875,17 @@ const cornerstoneExtension = {
|
|
|
25861
25875
|
// This interleaves images and replicates them for low-resolution depth volume
|
|
25862
25876
|
// reconstruction, which progressively improves
|
|
25863
25877
|
imageRetrieveMetadataProvider.add('volume', esm.ProgressiveRetrieveImages.interleavedRetrieveStages);
|
|
25864
|
-
|
|
25865
|
-
|
|
25866
|
-
|
|
25867
|
-
|
|
25878
|
+
|
|
25879
|
+
/**
|
|
25880
|
+
* Stack retrieve options: read from active data source configuration.
|
|
25881
|
+
* Pass an immutability-helper spec (e.g. { $merge: {...} } or { $set: {...} }) in
|
|
25882
|
+
* stackRetrieveOptions to customize. Plain object is treated as $merge for backward compat.
|
|
25883
|
+
* Set streaming: false for uncompressed DICOM that requires full file before decode.
|
|
25884
|
+
*/
|
|
25885
|
+
const sourceConfig = extensionManager?.getActiveDataSource?.()?.[0]?.getConfig?.() ?? {};
|
|
25886
|
+
const config = sourceConfig.stackRetrieveOptions ?? {};
|
|
25887
|
+
const stackOptions = immutability_helper_default()(DEFAULT_STACK_RETRIEVE_OPTIONS, toUpdateSpec(config));
|
|
25888
|
+
imageRetrieveMetadataProvider.add('stack', stackOptions);
|
|
25868
25889
|
},
|
|
25869
25890
|
getPanelModule: src_getPanelModule,
|
|
25870
25891
|
onModeExit: ({
|
|
@@ -241,14 +241,20 @@ var dcmjs_es = __webpack_require__(5842);
|
|
|
241
241
|
|
|
242
242
|
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
|
|
245
|
+
// This component is wrapped with React.memo and uses a custom areEqual comparison
|
|
246
|
+
// function to prevent unnecessary re-renders when props are semantically identical
|
|
247
|
+
// (e.g. `displaySets` reference changes, but the content is the same).
|
|
248
|
+
// Note: If this component starts depending on additional props,
|
|
249
|
+
// update `areEqual` accordingly.
|
|
250
|
+
const DicomMicroscopyViewport = /*#__PURE__*/react.memo(({
|
|
245
251
|
activeViewportId,
|
|
246
252
|
setViewportActive,
|
|
247
253
|
displaySets,
|
|
248
254
|
viewportId,
|
|
249
255
|
dataSource,
|
|
250
256
|
resizeRef
|
|
251
|
-
}) {
|
|
257
|
+
}) => {
|
|
252
258
|
const {
|
|
253
259
|
servicesManager,
|
|
254
260
|
extensionManager
|
|
@@ -395,20 +401,23 @@ function DicomMicroscopyViewport({
|
|
|
395
401
|
console.log('Loading viewer metadata', smDisplaySet);
|
|
396
402
|
await loadViewer(smDisplaySet.others);
|
|
397
403
|
if (displaySet.isOverlayDisplaySet && !displaySet.isLoaded && !displaySet.isLoading) {
|
|
398
|
-
displaySet.
|
|
404
|
+
const referencedDisplaySet = displaySet.getSourceDisplaySet();
|
|
405
|
+
displaySet.load(referencedDisplaySet);
|
|
399
406
|
}
|
|
400
407
|
}, [dataSource, extensionManager, microscopyService, servicesManager, viewportId]);
|
|
401
408
|
(0,react.useEffect)(() => {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
409
|
+
if (!viewer) {
|
|
410
|
+
const displaySet = displaySets[0];
|
|
411
|
+
installOpenLayersRenderer(container.current, displaySet).then(() => {
|
|
412
|
+
setIsLoaded(true);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
406
415
|
return () => {
|
|
407
416
|
if (viewer) {
|
|
408
417
|
microscopyService.removeViewer(viewer);
|
|
409
418
|
}
|
|
410
419
|
};
|
|
411
|
-
}, []);
|
|
420
|
+
}, [viewer]);
|
|
412
421
|
(0,react.useEffect)(() => {
|
|
413
422
|
const displaySet = displaySets[0];
|
|
414
423
|
microscopyService.clearAnnotations();
|
|
@@ -464,7 +473,55 @@ function DicomMicroscopyViewport({
|
|
|
464
473
|
}), isLoaded ? null : /*#__PURE__*/react.createElement(LoadingIndicatorProgress, {
|
|
465
474
|
className: 'h-full w-full bg-black'
|
|
466
475
|
}));
|
|
476
|
+
}, areEqual);
|
|
477
|
+
|
|
478
|
+
// Check if the props are the same
|
|
479
|
+
function areEqual(prevProps, nextProps) {
|
|
480
|
+
if (prevProps.setViewportActive !== nextProps.setViewportActive) {
|
|
481
|
+
return false;
|
|
482
|
+
}
|
|
483
|
+
if (prevProps.resizeRef !== nextProps.resizeRef) {
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
if (prevProps.viewportId !== nextProps.viewportId) {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
if (prevProps.activeViewportId !== nextProps.activeViewportId) {
|
|
490
|
+
return false;
|
|
491
|
+
}
|
|
492
|
+
if (prevProps.dataSource !== nextProps.dataSource) {
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
const prevDisplaySets = prevProps.displaySets;
|
|
496
|
+
const nextDisplaySets = nextProps.displaySets;
|
|
497
|
+
if (prevDisplaySets.length !== nextDisplaySets.length) {
|
|
498
|
+
return false;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// Check if the displaySets are the same
|
|
502
|
+
for (let i = 0; i < prevDisplaySets.length; i++) {
|
|
503
|
+
const prevDisplaySet = prevDisplaySets[i];
|
|
504
|
+
const foundDisplaySet = nextDisplaySets.find(nextDisplaySet => nextDisplaySet.displaySetInstanceUID === prevDisplaySet.displaySetInstanceUID);
|
|
505
|
+
if (!foundDisplaySet) {
|
|
506
|
+
return false;
|
|
507
|
+
}
|
|
508
|
+
// Check if the displaySet's images are the same
|
|
509
|
+
if (foundDisplaySet.images?.length !== prevDisplaySet.images?.length) {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
// Check if the displaySet's imageIds are the same
|
|
514
|
+
if (foundDisplaySet.images?.length) {
|
|
515
|
+
for (let j = 0; j < foundDisplaySet.images.length; j++) {
|
|
516
|
+
if (foundDisplaySet.images[j].imageId !== prevDisplaySet.images[j].imageId) {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
return true;
|
|
467
523
|
}
|
|
524
|
+
DicomMicroscopyViewport.displayName = 'DicomMicroscopyViewport';
|
|
468
525
|
/* harmony default export */ const src_DicomMicroscopyViewport = (DicomMicroscopyViewport);
|
|
469
526
|
|
|
470
527
|
/***/ })
|
|
@@ -683,7 +683,7 @@ expose(workerOperations);
|
|
|
683
683
|
/******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
|
|
684
684
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
685
685
|
/******/ // return url for filenames based on template
|
|
686
|
-
/******/ return "" + chunkId + ".bundle." + "
|
|
686
|
+
/******/ return "" + chunkId + ".bundle." + "e8f0193e0e06472f795c" + ".js";
|
|
687
687
|
/******/ };
|
|
688
688
|
/******/ })();
|
|
689
689
|
/******/
|