@ohif/app 3.13.0-beta.1 → 3.13.0-beta.11
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/{147.bundle.37d627289453cb6c3937.js → 147.bundle.dca316a851f246b3add7.js} +2 -2
- package/dist/{1730.bundle.2171f9af9b7acd748fff.js → 1730.bundle.cc4074375671b0cb54ef.js} +2 -2
- package/dist/{1933.bundle.a7678889451d60a82a07.js → 1933.bundle.da11601456ce662609ea.js} +5 -4
- package/dist/{2701.bundle.12bd01a80a9f8ea4cd94.js → 2701.bundle.ec41d99d12e54f550e17.js} +1 -1
- package/dist/{3081.bundle.50b69741bf1434d300f2.js → 3081.bundle.305b8f64956d0e65d783.js} +35 -14
- package/dist/{4775.bundle.47f0c78a2fee3f9bd9ee.js → 4775.bundle.fa6427b611bbc5e9bf76.js} +17 -18
- package/dist/{5802.bundle.3bf5e6b3ab330a594a47.js → 5802.bundle.783100f1bd99eab393c9.js} +69 -12
- package/dist/5802.css +1 -1
- package/dist/{7159.bundle.a5991a5d4f0dd8f1c95f.js → 7159.bundle.fb9df255868960f69765.js} +4 -2
- package/dist/{8305.bundle.a60669c0f354619dd27f.js → 8305.bundle.d89a671892e3a0f5ebac.js} +1 -1
- package/dist/{8583.bundle.01ae8da221fd90cea8d9.js → 8583.bundle.4770c4dcdc8f97c28214.js} +3 -4
- package/dist/{9195.bundle.83393d905543339ec1f1.js → 9195.bundle.0b29324a400fce3c1ca4.js} +25 -29
- package/dist/{app.bundle.3e2ed5e1778a140eeab8.js → app.bundle.297079b7125933606288.js} +141 -108
- package/dist/app.bundle.css +3 -3
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +20 -20
- /package/dist/{1403.bundle.62a98c96636630ed28f3.js → 1403.bundle.1b10dc2a05a87c10868b.js} +0 -0
- /package/dist/{1459.bundle.2803fc2614db570d961a.js → 1459.bundle.6fcfece644aacdf8f9b7.js} +0 -0
- /package/dist/{2018.bundle.8b599c27f54098e1c1df.js → 2018.bundle.c597c4f1cabdba321042.js} +0 -0
- /package/dist/{213.bundle.fc35f21b5d89e71114eb.js → 213.bundle.5a2ff7243f21d6eb4522.js} +0 -0
- /package/dist/{2424.bundle.f3068323d8e589055c5e.js → 2424.bundle.d2e20434b8641cac9750.js} +0 -0
- /package/dist/{3461.bundle.4b339b553887bfaeb5f5.js → 3461.bundle.7ef1fa7cb1dae5b1561f.js} +0 -0
- /package/dist/{4819.bundle.53a472c6337556868474.js → 4819.bundle.667d19de858f1740dc5e.js} +0 -0
- /package/dist/{5028.bundle.5f94e61c9497f2c744e4.js → 5028.bundle.27c2055a09dfff635a5f.js} +0 -0
- /package/dist/{5457.bundle.8b62119a694923ea2615.js → 5457.bundle.2dfc3fe79d06c66c4241.js} +0 -0
- /package/dist/{5485.bundle.a7f35b2f18dfaf544f61.js → 5485.bundle.6edff61247d59a5e5d77.js} +0 -0
- /package/dist/{6027.bundle.d4b22e25cdf15786ad1f.js → 6027.bundle.e075f2c30bb5394c9e3f.js} +0 -0
- /package/dist/{6163.bundle.6a0b53bcc790bd6138b4.js → 6163.bundle.49735d597cfa4a4b3b6a.js} +0 -0
- /package/dist/{7639.bundle.5504b3cbe814c7cf29bd.js → 7639.bundle.815af4b3e29bd39611a7.js} +0 -0
- /package/dist/{85.bundle.091ab9d579b1d54f85c5.js → 85.bundle.d7cf0b989341dad0973f.js} +0 -0
- /package/dist/{8558.bundle.054d23882813d9c95a09.js → 8558.bundle.01d4f686ea8b95e1b235.js} +0 -0
- /package/dist/{9927.bundle.e11bc961681793c5f105.js → 9927.bundle.425d635a6291bebce7de.js} +0 -0
|
@@ -767,7 +767,7 @@ function ViewportImageSliceLoadingIndicator({
|
|
|
767
767
|
}, /*#__PURE__*/react.createElement("div", {
|
|
768
768
|
className: "transparent flex h-full w-full items-center justify-center"
|
|
769
769
|
}, /*#__PURE__*/react.createElement("p", {
|
|
770
|
-
className: "text-
|
|
770
|
+
className: "text-highlight text-xl font-light"
|
|
771
771
|
}, /*#__PURE__*/react.createElement("h4", null, "Error Loading Image"), /*#__PURE__*/react.createElement("p", null, "An error has occurred."), /*#__PURE__*/react.createElement("p", null, error)))));
|
|
772
772
|
}
|
|
773
773
|
if (loading) {
|
|
@@ -780,7 +780,7 @@ function ViewportImageSliceLoadingIndicator({
|
|
|
780
780
|
}, /*#__PURE__*/react.createElement("div", {
|
|
781
781
|
className: "transparent flex h-full w-full items-center justify-center"
|
|
782
782
|
}, /*#__PURE__*/react.createElement("p", {
|
|
783
|
-
className: "text-
|
|
783
|
+
className: "text-highlight text-xl font-light"
|
|
784
784
|
}, "Loading...")))
|
|
785
785
|
);
|
|
786
786
|
}
|
|
@@ -1384,7 +1384,7 @@ function DynamicDataPanel({
|
|
|
1384
1384
|
tab
|
|
1385
1385
|
}) {
|
|
1386
1386
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
1387
|
-
className: "flex flex-col
|
|
1387
|
+
className: "text-foreground flex flex-col",
|
|
1388
1388
|
"data-cy": 'dynamic-volume-panel'
|
|
1389
1389
|
}, /*#__PURE__*/react.createElement(PanelGenerateImage, {
|
|
1390
1390
|
commandsManager: commandsManager,
|
|
@@ -1400,7 +1400,7 @@ function WorkflowPanel({
|
|
|
1400
1400
|
const ProgressDropdownWithService = servicesManager.services.customizationService.getCustomization('progressDropdownWithServiceComponent');
|
|
1401
1401
|
return /*#__PURE__*/React.createElement("div", {
|
|
1402
1402
|
"data-cy": 'workflow-panel',
|
|
1403
|
-
className: "bg-
|
|
1403
|
+
className: "bg-popover mb-1 px-3 py-4"
|
|
1404
1404
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1405
1405
|
className: "mb-1"
|
|
1406
1406
|
}, "Workflow"), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ProgressDropdownWithService, {
|
|
@@ -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));
|
|
@@ -2734,7 +2735,7 @@ const extension = {
|
|
|
2734
2735
|
});
|
|
2735
2736
|
return {
|
|
2736
2737
|
disabled: false,
|
|
2737
|
-
className: isPrimaryActive ? '!text-black bg-
|
|
2738
|
+
className: isPrimaryActive ? '!text-black bg-highlight' : '!text-foreground/80 hover:!bg-muted hover:!text-highlight',
|
|
2738
2739
|
// Todo: isActive right now is used for nested buttons where the primary
|
|
2739
2740
|
// button needs to be fully rounded (vs partial rounded) when active
|
|
2740
2741
|
// otherwise it does not have any other use
|
|
@@ -497,7 +497,7 @@ function OHIFCornerstoneSRTextViewport(props) {
|
|
|
497
497
|
const displaySet = displaySets[0];
|
|
498
498
|
const instance = displaySet.instances[0];
|
|
499
499
|
return /*#__PURE__*/react.createElement("div", {
|
|
500
|
-
className: "relative flex h-full w-full flex-col overflow-auto p-4
|
|
500
|
+
className: "text-foreground relative flex h-full w-full flex-col overflow-auto p-4"
|
|
501
501
|
}, /*#__PURE__*/react.createElement("div", null, /*#__PURE__*/react.createElement(OHIFCornerstoneSRContainer, {
|
|
502
502
|
container: instance
|
|
503
503
|
})));
|
|
@@ -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());
|
|
@@ -8620,7 +8624,7 @@ const DicomUploadProgressItem = /*#__PURE__*/(0,react.memo)(({
|
|
|
8620
8624
|
}, /*#__PURE__*/react.createElement("div", {
|
|
8621
8625
|
className: "flex w-6 shrink-0 items-center justify-center"
|
|
8622
8626
|
}, getStatusIcon()), /*#__PURE__*/react.createElement("div", {
|
|
8623
|
-
className: "overflow-hidden text-ellipsis whitespace-nowrap
|
|
8627
|
+
className: "text-foreground overflow-hidden text-ellipsis whitespace-nowrap"
|
|
8624
8628
|
}, dicomFileUploader.getFileName())), failedReason && /*#__PURE__*/react.createElement("div", {
|
|
8625
8629
|
className: "pl-10"
|
|
8626
8630
|
}, failedReason)), /*#__PURE__*/react.createElement("div", {
|
|
@@ -8862,7 +8866,7 @@ function DicomUploadProgress({
|
|
|
8862
8866
|
}, [numFilesCompleted]);
|
|
8863
8867
|
const getNumCompletedAndTimeRemainingComponent = () => {
|
|
8864
8868
|
return /*#__PURE__*/react.createElement("div", {
|
|
8865
|
-
className: "bg-muted flex h-14 items-center px-1 pb-4 text-lg
|
|
8869
|
+
className: "bg-muted text-foreground flex h-14 items-center px-1 pb-4 text-lg"
|
|
8866
8870
|
}, numFilesCompleted === dicomFileUploaderArr.length ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
|
|
8867
8871
|
className: NO_WRAP_ELLIPSIS_CLASS_NAMES
|
|
8868
8872
|
}, `${dicomFileUploaderArr.length} ${dicomFileUploaderArr.length > 1 ? 'files' : 'file'} completed.`), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
|
|
@@ -15919,7 +15923,7 @@ function ViewportOrientationMenu({
|
|
|
15919
15923
|
}) : null), /*#__PURE__*/react.createElement("div", {
|
|
15920
15924
|
className: "flex-1 text-left"
|
|
15921
15925
|
}, "Acquisition")), /*#__PURE__*/react.createElement("div", {
|
|
15922
|
-
className: "mx-1 my-2 border-t
|
|
15926
|
+
className: "border-input mx-1 my-2 border-t"
|
|
15923
15927
|
}), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
|
|
15924
15928
|
variant: "ghost",
|
|
15925
15929
|
className: "flex h-7 w-full flex-shrink-0 items-center justify-start self-stretch px-1 py-0",
|
|
@@ -17406,9 +17410,9 @@ function ModalityLoadBadge({
|
|
|
17406
17410
|
if (!statusInfo.isHydrated) {
|
|
17407
17411
|
return /*#__PURE__*/react.createElement("div", {
|
|
17408
17412
|
"data-cy": `ModalityLoadBadge-${viewportId}`,
|
|
17409
|
-
className: "flex h-6 cursor-default text-sm leading-6
|
|
17413
|
+
className: "text-foreground flex h-6 cursor-default text-sm leading-6"
|
|
17410
17414
|
}, /*#__PURE__*/react.createElement("div", {
|
|
17411
|
-
className: "bg-
|
|
17415
|
+
className: "bg-popover flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
|
|
17412
17416
|
}, /*#__PURE__*/react.createElement(StatusIcon, null), /*#__PURE__*/react.createElement("span", {
|
|
17413
17417
|
className: "ml-1"
|
|
17414
17418
|
}, statusInfo.type)), statusInfo.type !== 'SR' && /*#__PURE__*/react.createElement(ui_next_src/* ViewportActionButton */.N8H, {
|
|
@@ -24339,12 +24343,12 @@ function DefaultAccordion(props) {
|
|
|
24339
24343
|
if (!allChildren || !groups) {
|
|
24340
24344
|
return null;
|
|
24341
24345
|
}
|
|
24342
|
-
if (
|
|
24346
|
+
if (asChild) {
|
|
24343
24347
|
return /*#__PURE__*/react.cloneElement(props.children, props);
|
|
24344
24348
|
}
|
|
24345
24349
|
return /*#__PURE__*/react.createElement(ui_next_src/* Accordion */.nD3, {
|
|
24346
24350
|
type: grouping.type || 'multiple',
|
|
24347
|
-
className: "text-
|
|
24351
|
+
className: "text-foreground",
|
|
24348
24352
|
defaultValue: defaultValue
|
|
24349
24353
|
}, [...groups.entries()].map(([key, group]) => {
|
|
24350
24354
|
return /*#__PURE__*/react.createElement(ui_next_src/* AccordionItem */.AsP, {
|
|
@@ -24822,7 +24826,7 @@ function PanelMeasurement(props) {
|
|
|
24822
24826
|
return EmptyComponent ? /*#__PURE__*/react.createElement(EmptyComponent, {
|
|
24823
24827
|
items: displayMeasurements
|
|
24824
24828
|
}) : /*#__PURE__*/react.createElement("span", {
|
|
24825
|
-
className: "text-
|
|
24829
|
+
className: "text-foreground"
|
|
24826
24830
|
}, "No Measurements");
|
|
24827
24831
|
}
|
|
24828
24832
|
if (children) {
|
|
@@ -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: ({
|
|
@@ -511,7 +511,7 @@ function USAnnotationPanel() {
|
|
|
511
511
|
/**
|
|
512
512
|
* Render helpers so the JSX doesn’t become spaghetti. */
|
|
513
513
|
const renderWorkflowToggles = () => /*#__PURE__*/react.createElement(ui_next_src/* PanelSection */.aUM.Content, null, /*#__PURE__*/react.createElement("div", {
|
|
514
|
-
className: "space-y-3 p-2 text-sm
|
|
514
|
+
className: "text-foreground space-y-3 p-2 text-sm"
|
|
515
515
|
}, /*#__PURE__*/react.createElement("div", {
|
|
516
516
|
className: "flex items-center"
|
|
517
517
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Switch */.dOG, {
|
|
@@ -572,13 +572,12 @@ function USAnnotationPanel() {
|
|
|
572
572
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Switch */.dOG, {
|
|
573
573
|
id: "show-overlay-switch",
|
|
574
574
|
checked: showOverlay,
|
|
575
|
-
onCheckedChange: () => setShowOverlayCommand(!showOverlay)
|
|
576
|
-
className: "data-[state=checked]:bg-blue-500"
|
|
575
|
+
onCheckedChange: () => setShowOverlayCommand(!showOverlay)
|
|
577
576
|
}), /*#__PURE__*/react.createElement("label", {
|
|
578
577
|
htmlFor: "show-overlay-switch",
|
|
579
|
-
className: "cursor-pointer
|
|
578
|
+
className: "text-muted-foreground cursor-pointer"
|
|
580
579
|
}, t('Show Overlay'))), /*#__PURE__*/react.createElement("hr", {
|
|
581
|
-
className: "border-
|
|
580
|
+
className: "border-input/50 border-t"
|
|
582
581
|
})));
|
|
583
582
|
const renderAnnotatedFrames = () => /*#__PURE__*/react.createElement(ui_next_src/* ScrollArea */.FKN, {
|
|
584
583
|
className: "h-full"
|
|
@@ -601,40 +600,40 @@ function USAnnotationPanel() {
|
|
|
601
600
|
}, /*#__PURE__*/react.createElement("table", {
|
|
602
601
|
className: "w-full border-collapse text-sm"
|
|
603
602
|
}, /*#__PURE__*/react.createElement("thead", null, /*#__PURE__*/react.createElement("tr", {
|
|
604
|
-
className: "
|
|
603
|
+
className: "text-muted-foreground border-input/50 border-b"
|
|
605
604
|
}, /*#__PURE__*/react.createElement("th", null), /*#__PURE__*/react.createElement("th", {
|
|
606
|
-
className: "py-2 px-
|
|
605
|
+
className: "py-2 px-2 text-left font-normal"
|
|
607
606
|
}, t('Frame')), /*#__PURE__*/react.createElement("th", {
|
|
608
|
-
className: "py-2 px-
|
|
607
|
+
className: "py-2 px-2 text-center font-normal"
|
|
609
608
|
}, t('Pleura lines')), /*#__PURE__*/react.createElement("th", {
|
|
610
|
-
className: "py-2 px-
|
|
609
|
+
className: "py-2 px-2 text-center font-normal"
|
|
611
610
|
}, t('B-lines')), /*#__PURE__*/react.createElement("th", {
|
|
612
611
|
className: "w-10"
|
|
613
612
|
}))), /*#__PURE__*/react.createElement("tbody", null, annotatedFrames.map(item => /*#__PURE__*/react.createElement("tr", {
|
|
614
613
|
key: item.frame,
|
|
615
|
-
className: `border-
|
|
614
|
+
className: `border-input/50 border-b ${item.frame === 5 ? 'bg-cyan-800 bg-opacity-30' : ''}`,
|
|
616
615
|
onClick: () => handleRowClick(item),
|
|
617
616
|
style: {
|
|
618
617
|
cursor: 'pointer'
|
|
619
618
|
}
|
|
620
619
|
}, /*#__PURE__*/react.createElement("td", {
|
|
621
|
-
className: "py-
|
|
620
|
+
className: "py-2 px-2"
|
|
622
621
|
}, item.index), /*#__PURE__*/react.createElement("td", {
|
|
623
|
-
className: "py-
|
|
622
|
+
className: "py-2 px-2"
|
|
624
623
|
}, item.frame + 1), /*#__PURE__*/react.createElement("td", {
|
|
625
|
-
className: "py-
|
|
624
|
+
className: "py-2 px-2 text-center"
|
|
626
625
|
}, item.pleura), /*#__PURE__*/react.createElement("td", {
|
|
627
|
-
className: "py-
|
|
626
|
+
className: "py-2 px-2 text-center"
|
|
628
627
|
}, item.bLine), /*#__PURE__*/react.createElement("td", {
|
|
629
|
-
className: "py-
|
|
628
|
+
className: "py-2 px-2 text-right"
|
|
630
629
|
}, item.frame === 5 && /*#__PURE__*/react.createElement("div", {
|
|
631
630
|
className: "flex items-center justify-end"
|
|
632
631
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
|
|
633
632
|
variant: "ghost",
|
|
634
|
-
className: "p-0
|
|
633
|
+
className: "p-0"
|
|
635
634
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.EyeVisible, null)), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
|
|
636
635
|
variant: "ghost",
|
|
637
|
-
className: "ml-2 p-0
|
|
636
|
+
className: "ml-2 p-0"
|
|
638
637
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.More, null)))))))))));
|
|
639
638
|
const updateAnnotatedFrames = () => {
|
|
640
639
|
const activeViewportId = viewportGridService.getActiveViewportId();
|
|
@@ -699,7 +698,7 @@ function USAnnotationPanel() {
|
|
|
699
698
|
* ──────────────────────────────────────────────────────
|
|
700
699
|
* 🖼 Final Render */
|
|
701
700
|
return /*#__PURE__*/react.createElement("div", {
|
|
702
|
-
className: "h-full bg-black
|
|
701
|
+
className: "text-foreground h-full bg-black",
|
|
703
702
|
style: {
|
|
704
703
|
minWidth: 240,
|
|
705
704
|
maxWidth: 480,
|
|
@@ -153,10 +153,10 @@ const generateFromConfig = ({
|
|
|
153
153
|
bottomLeft = [],
|
|
154
154
|
bottomRight = []
|
|
155
155
|
} = overlayData ?? {};
|
|
156
|
-
const topLeftClass = 'top-viewport left-viewport text-
|
|
157
|
-
const topRightClass = 'top-viewport right-viewport-scrollbar text-
|
|
158
|
-
const bottomRightClass = 'bottom-viewport right-viewport-scrollbar text-
|
|
159
|
-
const bottomLeftClass = 'bottom-viewport left-viewport text-
|
|
156
|
+
const topLeftClass = 'top-viewport left-viewport text-highlight';
|
|
157
|
+
const topRightClass = 'top-viewport right-viewport-scrollbar text-highlight';
|
|
158
|
+
const bottomRightClass = 'bottom-viewport right-viewport-scrollbar text-highlight';
|
|
159
|
+
const bottomLeftClass = 'bottom-viewport left-viewport text-highlight';
|
|
160
160
|
const overlay = 'absolute pointer-events-none microscopy-viewport-overlay';
|
|
161
161
|
return /*#__PURE__*/react.createElement(react.Fragment, null, topLeft && topLeft.length > 0 && /*#__PURE__*/react.createElement("div", {
|
|
162
162
|
"data-cy": 'viewport-overlay-top-left',
|
|
@@ -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
|
/***/ })
|
package/dist/5802.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
.DicomMicroscopyViewer{--ol-partial-background-color:#7f7f7fb3;--ol-foreground-color:#000;--ol-subtle-foreground-color:#000;--ol-subtle-background-color:#4e4e4e80;-webkit-user-select:none;-moz-user-select:none; -ms-user-select:none; user-select:none}.DicomMicroscopyViewer .ol-box{background-color:var(--ol-partial-background-color);border:1.5px solid var(--ol-background-color);border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box}.DicomMicroscopyViewer .ol-mouse-position{position:absolute;right:8px;top:8px}.DicomMicroscopyViewer .ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.DicomMicroscopyViewer .ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;margin:1px;text-align:center;-webkit-transition:all .25s;transition:all .25s;will-change:contents,width}.DicomMicroscopyViewer .ol-scale-bar{bottom:8px;left:8px;position:absolute}.DicomMicroscopyViewer .ol-scale-bar-inner{display:-webkit-box;display:-ms-flexbox;display:flex}.DicomMicroscopyViewer .ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;height:15px;width:1px;z-index:10}.DicomMicroscopyViewer .ol-scale-step-text{bottom:-5px;font-size:10px;z-index:11}.DicomMicroscopyViewer .ol-scale-step-text,.DicomMicroscopyViewer .ol-scale-text{color:var(--ol-foreground-color);position:absolute;text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.DicomMicroscopyViewer .ol-scale-text{bottom:25px;font-size:12px;text-align:center}.DicomMicroscopyViewer .ol-scale-singlebar{border:1px solid var(--ol-foreground-color);-webkit-box-sizing:border-box;box-sizing:border-box;height:10px;position:relative;z-index:9}.DicomMicroscopyViewer .ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.DicomMicroscopyViewer .ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.DicomMicroscopyViewer .ol-unsupported{display:none}.DicomMicroscopyViewer .ol-unselectable,.DicomMicroscopyViewer .ol-viewport{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none; -ms-user-select:none; user-select:none}.DicomMicroscopyViewer .ol-viewport canvas{all:unset}.DicomMicroscopyViewer .ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text; -ms-user-select:text; user-select:text}.DicomMicroscopyViewer .ol-grabbing{cursor:-webkit-grabbing;cursor:grabbing}.DicomMicroscopyViewer .ol-grab{cursor:move;cursor:-webkit-grab;cursor:grab}.DicomMicroscopyViewer .ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.DicomMicroscopyViewer .ol-zoom{left:.5em;top:.5em}.DicomMicroscopyViewer .ol-rotate{right:.5em;top:.5em;-webkit-transition:opacity .25s linear,visibility 0s linear;transition:opacity .25s linear,visibility 0s linear}.DicomMicroscopyViewer .ol-rotate.ol-hidden{opacity:0;-webkit-transition:opacity .25s linear,visibility 0s linear .25s;transition:opacity .25s linear,visibility 0s linear .25s;visibility:hidden}.DicomMicroscopyViewer .ol-zoom-extent{left:.5em;top:4.643em}.DicomMicroscopyViewer .ol-full-screen{right:.5em;top:.5em}.DicomMicroscopyViewer .ol-control button{background-color:var(--ol-background-color);border:none;border-radius:2px;color:var(--ol-subtle-foreground-color);display:block;font-size:inherit;font-weight:700;height:1.375em;line-height:.4em;margin:1px;padding:0;text-align:center;text-decoration:none;width:1.375em}.DicomMicroscopyViewer .ol-control button::-moz-focus-inner{border:none;padding:0}.DicomMicroscopyViewer .ol-zoom-extent button{line-height:1.4em}.DicomMicroscopyViewer .ol-compass{display:block;font-weight:400;will-change:transform}.DicomMicroscopyViewer .ol-touch .ol-control button{font-size:1.5em}.DicomMicroscopyViewer .ol-touch .ol-zoom-extent{top:5.5em}.DicomMicroscopyViewer .ol-control button:focus,.DicomMicroscopyViewer .ol-control button:hover{color:var(--ol-foreground-color);outline:1px solid var(--ol-subtle-foreground-color);text-decoration:none}.DicomMicroscopyViewer .ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.DicomMicroscopyViewer .ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.DicomMicroscopyViewer .ol-attribution{-webkit-box-align:center;-ms-flex-align:center;align-items:center;bottom:.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-flow:row-reverse;flex-flow:row-reverse;max-width:calc(100% - 1.3em);right:.5em;text-align:right}.DicomMicroscopyViewer .ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.DicomMicroscopyViewer .ol-attribution ul{color:var(--ol-foreground-color);font-size:12px;margin:0;padding:1px .5em;text-shadow:0 0 2px var(--ol-background-color)}.DicomMicroscopyViewer .ol-attribution li{display:inline;list-style:none}.DicomMicroscopyViewer .ol-attribution li:not(:last-child):after{content:" "}.DicomMicroscopyViewer .ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.DicomMicroscopyViewer .ol-attribution button{-ms-flex-negative:0;flex-shrink:0}.DicomMicroscopyViewer .ol-attribution.ol-collapsed ul{display:none}.DicomMicroscopyViewer .ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible button{display:none}.DicomMicroscopyViewer .ol-zoomslider{height:200px;left:.5em;top:4.5em}.DicomMicroscopyViewer .ol-zoomslider button{height:10px;position:relative}.DicomMicroscopyViewer .ol-touch .ol-zoomslider{top:5.5em}.DicomMicroscopyViewer .ol-overviewmap{bottom:.5em;left:.5em}.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map,.DicomMicroscopyViewer .ol-overviewmap button{display:block}.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.DicomMicroscopyViewer .ol-overviewmap.ol-collapsed .ol-overviewmap-map,.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible button{display:none}.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.DicomMicroscopyViewer .ol-overviewmap-box{border:.5px dotted var(--ol-subtle-foreground-color)}.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-box:hover{cursor:move}@layout-header-background: #007ea3;@primary-color: #007ea3;@processing-color: #8cb8c6;@success-color: #3f9c35;@warning-color: #eeaf30;@error-color: #96172e;@font-size-base: 14px;.DicomMicroscopyViewer .ol-tooltip{font-size:16px!important}
|
|
2
|
-
.DicomMicroscopyViewer .OpenLayersOverlay{display:block!important;height:100%;pointer-events:none!important;width:100%}.DicomMicroscopyViewer .text-
|
|
2
|
+
.DicomMicroscopyViewer .OpenLayersOverlay{display:block!important;height:100%;pointer-events:none!important;width:100%}.DicomMicroscopyViewer .text-highlight{color:#ff0;font-size:14px;font-weight:400}.DicomMicroscopyViewer .text-highlight span{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.DicomMicroscopyViewer .absolute{position:absolute}.DicomMicroscopyViewer .flex{display:-webkit-box;display:-ms-flexbox;display:flex}.DicomMicroscopyViewer .flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.DicomMicroscopyViewer .flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.DicomMicroscopyViewer .pointer-events-none{pointer-events:none}.DicomMicroscopyViewer .left-viewport-scrollbar{left:.5rem}.DicomMicroscopyViewer .right-viewport-scrollbar{right:1.3rem}.DicomMicroscopyViewer .top-viewport{top:.5rem}.DicomMicroscopyViewer .bottom-viewport{bottom:.5rem}.DicomMicroscopyViewer .bottom-viewport.left-viewport{bottom:.5rem;left:calc(.5rem + 250px)}.DicomMicroscopyViewer .right-viewport-scrollbar .flex{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end}.DicomMicroscopyViewer .microscopy-viewport-overlay{background:#00000080;max-width:40%;padding:.5rem 1rem}.DicomMicroscopyViewer .microscopy-viewport-overlay .flex{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.DicomMicroscopyViewer .top-viewport .flex span:not(.font-light){-ms-flex-negative:0;flex-shrink:0}
|
|
@@ -61,11 +61,13 @@ function OHIFCornerstonePdfViewport({
|
|
|
61
61
|
load();
|
|
62
62
|
}, [renderedUrl]);
|
|
63
63
|
return /*#__PURE__*/react.createElement("div", {
|
|
64
|
-
className: "bg-primary-black h-full w-full
|
|
64
|
+
className: "bg-primary-black text-foreground h-full w-full",
|
|
65
65
|
onClick: makePdfScrollable,
|
|
66
66
|
ref: el => {
|
|
67
67
|
viewportElementRef.current = el;
|
|
68
|
-
if (el)
|
|
68
|
+
if (el) {
|
|
69
|
+
viewportRef.register(el);
|
|
70
|
+
}
|
|
69
71
|
},
|
|
70
72
|
"data-viewport-id": viewportId
|
|
71
73
|
}, /*#__PURE__*/react.createElement("object", {
|
|
@@ -850,7 +850,7 @@ function LogicalContourOperationOptions() {
|
|
|
850
850
|
name: icon
|
|
851
851
|
}));
|
|
852
852
|
}))), /*#__PURE__*/react.createElement("div", null, t(operation.label))), /*#__PURE__*/react.createElement("div", {
|
|
853
|
-
className: "bg-
|
|
853
|
+
className: "bg-muted flex h-[62px] w-[88px] items-center justify-center rounded-lg"
|
|
854
854
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ByName, {
|
|
855
855
|
name: operation.helperIcon
|
|
856
856
|
}))), /*#__PURE__*/react.createElement(SegmentSelector, {
|
|
@@ -900,7 +900,7 @@ function PanelPetSUV() {
|
|
|
900
900
|
}, /*#__PURE__*/react.createElement(ui_next_src/* PanelSection */.aUM, {
|
|
901
901
|
defaultOpen: true
|
|
902
902
|
}, /*#__PURE__*/react.createElement(ui_next_src/* PanelSection */.aUM.Header, null, t('Patient Information')), /*#__PURE__*/react.createElement(ui_next_src/* PanelSection */.aUM.Content, null, /*#__PURE__*/react.createElement("div", {
|
|
903
|
-
className: "bg-
|
|
903
|
+
className: "bg-muted flex flex-col gap-3 p-2"
|
|
904
904
|
}, /*#__PURE__*/react.createElement(InputRow, null, /*#__PURE__*/react.createElement(InputRow.Label, null, t('Patient Sex')), /*#__PURE__*/react.createElement(InputRow.Input, {
|
|
905
905
|
value: metadata.PatientSex || '',
|
|
906
906
|
onChange: e => {
|
|
@@ -1070,7 +1070,7 @@ function PanelRoiThresholdSegmentation() {
|
|
|
1070
1070
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1071
1071
|
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden"
|
|
1072
1072
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1073
|
-
className: "bg-
|
|
1073
|
+
className: "bg-popover flex items-baseline justify-between px-2 py-1"
|
|
1074
1074
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1075
1075
|
className: "py-1"
|
|
1076
1076
|
}, /*#__PURE__*/react.createElement("span", {
|
|
@@ -1083,7 +1083,6 @@ function PanelRoiThresholdSegmentation() {
|
|
|
1083
1083
|
dataCY: "exportTmtvCsvReport",
|
|
1084
1084
|
size: "sm",
|
|
1085
1085
|
variant: "ghost",
|
|
1086
|
-
className: "text-blue-500",
|
|
1087
1086
|
onClick: handleExportCSV
|
|
1088
1087
|
}, /*#__PURE__*/react.createElement("span", {
|
|
1089
1088
|
className: "pl-1"
|
|
@@ -1997,7 +1996,7 @@ function ROIThresholdConfiguration({
|
|
|
1997
1996
|
});
|
|
1998
1997
|
};
|
|
1999
1998
|
return /*#__PURE__*/react.createElement("div", {
|
|
2000
|
-
className: "bg-
|
|
1999
|
+
className: "bg-muted flex flex-col space-y-4 p-px"
|
|
2001
2000
|
}, /*#__PURE__*/react.createElement("div", {
|
|
2002
2001
|
className: "flex items-end space-x-3"
|
|
2003
2002
|
}, /*#__PURE__*/react.createElement("div", {
|