@ohif/app 3.12.0-beta.99 → 3.12.0
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/{1403.bundle.94a178e2572f1f0b2a2c.js → 1403.bundle.1c9ce804d1e88033e276.js} +4 -2
- package/dist/{147.bundle.205350dc3d21478277b1.js → 147.bundle.37d627289453cb6c3937.js} +6 -15
- package/dist/{1608.bundle.f855c4bdb7f00eb66fca.js → 1608.bundle.0687c661f1c9edfb3b8a.js} +4 -4
- package/dist/{1730.bundle.37c569ae3ed057b69840.js → 1730.bundle.66a5e554ab20dab97b11.js} +7 -5
- package/dist/{1927.bundle.019331c266d306772371.js → 1927.bundle.3050588e95f43cf57cdd.js} +1 -1
- package/dist/{1933.bundle.ab5e8036f6e1c854c965.js → 1933.bundle.682f142e3217d4c7fbf7.js} +7 -3
- package/dist/{2018.bundle.469f9ad42597b6b29ff1.js → 2018.bundle.c06693143228cc034cb9.js} +47 -47
- package/dist/{213.bundle.398730bb3ceb1af54413.js → 213.bundle.c2d4d7370c26b0823880.js} +2 -2
- package/dist/{2424.bundle.be90e7bcf0fd8db68b2f.js → 2424.bundle.c1e287e752f352b76543.js} +2 -2
- package/dist/{2701.bundle.aca0d4f24a6f2094c3c3.js → 2701.bundle.12bd01a80a9f8ea4cd94.js} +4 -4
- package/dist/{2842.bundle.7852a204d3510fca8b27.js → 2842.bundle.860b9f10fcdd9656947a.js} +330 -123
- package/dist/{1903.bundle.dc5248f7cb6ba1dc1072.js → 3081.bundle.41838985e0472851eadb.js} +644 -322
- package/dist/{3343.bundle.f8fe9316b0ff68d087f7.js → 3343.bundle.d7578ce8f75d158c0bab.js} +2 -0
- package/dist/{3461.bundle.50c752c623f39cf6c457.js → 3461.bundle.a8fcefd1c6e389d905fc.js} +21 -17
- package/dist/{3584.bundle.839a16d349815b3f7c97.js → 3584.bundle.8cc0750425513433e9cc.js} +15 -17
- package/dist/{4019.bundle.01f63d5dd5b96ded0c00.js → 4019.bundle.83a604779f7da0101ced.js} +196 -366
- package/dist/{4202.bundle.790706560c6edb303476.js → 4202.bundle.5a0f8e4004c5d8a68548.js} +2 -2
- package/dist/{5448.bundle.9a36e001169ea3bfeb6c.js → 4410.bundle.c5224cd7d6238a7d4660.js} +313 -57
- package/dist/{4775.bundle.d7f0645419f1df8e00b8.js → 4775.bundle.70bc407db26afaa4331a.js} +24 -16
- package/dist/{4819.bundle.ef1151f023b3784bc1be.js → 4819.bundle.47e7aa44747ddab3a39a.js} +8 -6
- package/dist/{5028.bundle.b3611b7c7422a5c2e723.js → 5028.bundle.274945a9ae69c6b6ad51.js} +6 -6
- package/dist/{5462.bundle.a81a691eeef782ab95b9.js → 5462.bundle.21beddaca145b7465c72.js} +2 -0
- package/dist/{5485.bundle.71041ca4bc9e6ab57d92.js → 5485.bundle.4e0ec03c61ec5cadd9bb.js} +3 -3
- package/dist/{5802.bundle.28ab859d9b48a5b2c31c.js → 5802.bundle.3bf5e6b3ab330a594a47.js} +6 -12
- package/dist/{6163.bundle.1f096bdbe3a341c1710d.js → 6163.bundle.ca93a4e6501880901f94.js} +4 -2
- package/dist/{3353.bundle.a0f1654c642395bbbbbc.js → 6347.bundle.784c48912700f281de1d.js} +323 -179
- package/dist/{5400.bundle.de97508611da1c00d58a.js → 6409.bundle.b36048896cb11c8571fb.js} +450 -79
- package/dist/{7412.bundle.aec4834a71fc27c4ce06.js → 7412.bundle.fab1742191b7fe937330.js} +251 -197
- package/dist/{7431.bundle.999b2b65d4973bc56218.js → 7431.bundle.b01791d10e6cf9f503b0.js} +10 -4
- package/dist/{7639.bundle.e004d734044049fe8fe9.js → 7639.bundle.32152cacb059089ed7d7.js} +24 -20
- package/dist/{8305.bundle.ba43ed23edea2bf394b3.js → 8305.bundle.2ede68ba3c075928c9f4.js} +47 -29
- package/dist/{8558.bundle.463ddb34a619cf47493e.js → 8558.bundle.3e84c4ba2c7ec6fce52c.js} +33 -3
- package/dist/{8583.bundle.59c239cf891c2e10bf10.js → 8583.bundle.2908eee785e7e4595d14.js} +28 -23
- package/dist/{9195.bundle.e2fd5c6b5830c0ee25a8.js → 9195.bundle.606ca286a0fed8a43f58.js} +146 -73
- package/dist/{9845.bundle.31aec3fe7a5cdc247f4e.js → 9845.bundle.255e7c7f7a88193b4e47.js} +16 -8
- package/dist/{9862.bundle.3ca0ad5f54db87ccf91e.js → 9862.bundle.3a8958a82c572015d25d.js} +2 -2
- package/dist/{9927.bundle.f421cd167be94a7109f6.js → 9927.bundle.e798a347dfe1f241578f.js} +16 -16
- package/dist/{5549.bundle.d5def6a3124a3a481b7c.js → 997.bundle.822b33e561263084e18c.js} +961 -290
- package/dist/{app.bundle.7df5bc1cd812bd602686.js → app.bundle.26b7eafdf05b5445414b.js} +5893 -2247
- package/dist/app.bundle.css +1 -1
- package/dist/{compute.bundle.fdee4a0f193ee2e1b6da.js → compute.bundle.64280c7af19ff567465f.js} +3 -3
- package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js +3254 -1792
- package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map +1 -1
- package/dist/index.html +1 -1
- package/dist/{polySeg.bundle.11f9746cd60c9811a412.js → polySeg.bundle.a5aa9130b4191253c410.js} +3 -3
- package/dist/sw.js +1 -1
- package/package.json +24 -24
- /package/dist/{1459.bundle.3785cdd0abf449adebf1.js → 1459.bundle.e8802999a4d7f7edf628.js} +0 -0
- /package/dist/{5457.bundle.9f2eb65ad85fcbb75e27.js → 5457.bundle.f7de73bcfe1012a73b9f.js} +0 -0
- /package/dist/{5858.bundle.d5f4bf849aaeebf5025c.js → 5858.bundle.ff6b340cf7457db76a1a.js} +0 -0
- /package/dist/{6027.bundle.160bd47ea03784276275.js → 6027.bundle.2b12862684b0cb3af4b4.js} +0 -0
- /package/dist/{85.bundle.a16e254910c60223df19.js → 85.bundle.05591d5a14d74a502dfe.js} +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/* harmony export */ A: () => (/* binding */ MoreDropdownMenu)
|
|
9
9
|
/* harmony export */ });
|
|
10
10
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
|
|
11
|
-
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
11
|
+
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12517);
|
|
12
12
|
/* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42356);
|
|
13
13
|
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); }
|
|
14
14
|
|
|
@@ -123,8 +123,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
123
123
|
|
|
124
124
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
125
125
|
var react = __webpack_require__(86326);
|
|
126
|
-
// EXTERNAL MODULE: ../../ui-next/src/index.ts +
|
|
127
|
-
var src = __webpack_require__(
|
|
126
|
+
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3075 modules
|
|
127
|
+
var src = __webpack_require__(12517);
|
|
128
128
|
// EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
|
|
129
129
|
var core_src = __webpack_require__(42356);
|
|
130
130
|
// EXTERNAL MODULE: ../../../node_modules/react-router-dom/dist/index.js
|
|
@@ -622,7 +622,7 @@ function _findTabAndStudyOfDisplaySet(displaySetInstanceUID, tabs, currentTabNam
|
|
|
622
622
|
/* harmony export */ T: () => (/* binding */ PanelStudyBrowserHeader)
|
|
623
623
|
/* harmony export */ });
|
|
624
624
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
|
|
625
|
-
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
625
|
+
/* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12517);
|
|
626
626
|
|
|
627
627
|
|
|
628
628
|
|
|
@@ -3701,8 +3701,8 @@ var react = __webpack_require__(86326);
|
|
|
3701
3701
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
3702
3702
|
var prop_types = __webpack_require__(97598);
|
|
3703
3703
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
3704
|
-
// EXTERNAL MODULE: ../../ui-next/src/index.ts +
|
|
3705
|
-
var ui_next_src = __webpack_require__(
|
|
3704
|
+
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3075 modules
|
|
3705
|
+
var ui_next_src = __webpack_require__(12517);
|
|
3706
3706
|
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
3707
3707
|
var state = __webpack_require__(45981);
|
|
3708
3708
|
// EXTERNAL MODULE: ../../../node_modules/react-router-dom/dist/index.js
|
|
@@ -4775,8 +4775,8 @@ function getPanelModule({
|
|
|
4775
4775
|
}];
|
|
4776
4776
|
}
|
|
4777
4777
|
/* harmony default export */ const src_getPanelModule = (getPanelModule);
|
|
4778
|
-
// EXTERNAL MODULE: ../../i18n/src/index.js +
|
|
4779
|
-
var i18n_src = __webpack_require__(
|
|
4778
|
+
// EXTERNAL MODULE: ../../i18n/src/index.js + 286 modules
|
|
4779
|
+
var i18n_src = __webpack_require__(89010);
|
|
4780
4780
|
;// ../../../extensions/default/package.json
|
|
4781
4781
|
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-default"}');
|
|
4782
4782
|
;// ../../../extensions/default/src/id.js
|
|
@@ -4939,6 +4939,9 @@ function areAllImageSpacingEqual(instances, messages) {
|
|
|
4939
4939
|
return;
|
|
4940
4940
|
}
|
|
4941
4941
|
const lastIpp = (0,utils_toNumber/* default */.A)(instances[instances.length - 1].ImagePositionPatient);
|
|
4942
|
+
if (!lastIpp) {
|
|
4943
|
+
return;
|
|
4944
|
+
}
|
|
4942
4945
|
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.jj)(firstImagePositionPatient, lastIpp) / (instances.length - 1);
|
|
4943
4946
|
let previousImagePositionPatient = firstImagePositionPatient;
|
|
4944
4947
|
const issuesFound = [];
|
|
@@ -5168,6 +5171,8 @@ const chartHandler = {
|
|
|
5168
5171
|
}
|
|
5169
5172
|
};
|
|
5170
5173
|
|
|
5174
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
|
|
5175
|
+
var dist_esm = __webpack_require__(15327);
|
|
5171
5176
|
;// ../../../extensions/default/src/getSopClassHandlerModule.js
|
|
5172
5177
|
|
|
5173
5178
|
|
|
@@ -5175,6 +5180,7 @@ const chartHandler = {
|
|
|
5175
5180
|
|
|
5176
5181
|
|
|
5177
5182
|
|
|
5183
|
+
|
|
5178
5184
|
const {
|
|
5179
5185
|
isImage,
|
|
5180
5186
|
sortStudyInstances,
|
|
@@ -5221,10 +5227,15 @@ function getDisplaySetInfo(instances) {
|
|
|
5221
5227
|
if (isDynamicVolume) {
|
|
5222
5228
|
const timePoint = timePoints[0];
|
|
5223
5229
|
const instancesMap = new Map();
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
|
|
5227
|
-
|
|
5230
|
+
let firstTimePointInstances;
|
|
5231
|
+
if (instances[0].NumberOfFrames > 1 && timePoints.length > 1) {
|
|
5232
|
+
// handle multiframe dynamic volume
|
|
5233
|
+
firstTimePointInstances = timePoints[0].map(imageId => dist_esm.metaData.get('instance', imageId));
|
|
5234
|
+
} else {
|
|
5235
|
+
// O(n) to convert it into a map and O(1) to find each instance
|
|
5236
|
+
instances.forEach(instance => instancesMap.set(instance.imageId, instance));
|
|
5237
|
+
firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId));
|
|
5238
|
+
}
|
|
5228
5239
|
displaySetInfo = getSopClassHandlerModule_isDisplaySetReconstructable(firstTimePointInstances, appConfig);
|
|
5229
5240
|
} else {
|
|
5230
5241
|
displaySetInfo = getSopClassHandlerModule_isDisplaySetReconstructable(instances, appConfig);
|
|
@@ -6077,7 +6088,7 @@ function adaptItem(item, subProps) {
|
|
|
6077
6088
|
return newItem;
|
|
6078
6089
|
}
|
|
6079
6090
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
|
|
6080
|
-
var
|
|
6091
|
+
var tools_dist_esm = __webpack_require__(4667);
|
|
6081
6092
|
;// ../../../extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx
|
|
6082
6093
|
var _ContextMenuController;
|
|
6083
6094
|
|
|
@@ -6131,7 +6142,7 @@ class ContextMenuController {
|
|
|
6131
6142
|
const {
|
|
6132
6143
|
locking,
|
|
6133
6144
|
visibility
|
|
6134
|
-
} =
|
|
6145
|
+
} = tools_dist_esm.annotation;
|
|
6135
6146
|
const targetAnnotationId = selectorProps?.nearbyToolData?.annotationUID;
|
|
6136
6147
|
if (targetAnnotationId) {
|
|
6137
6148
|
const isLocked = locking.isAnnotationLocked(targetAnnotationId);
|
|
@@ -6795,6 +6806,9 @@ function getSortedTags(metadata) {
|
|
|
6795
6806
|
function getRows(metadata, depth = 0) {
|
|
6796
6807
|
// Tag, Type, Value, Keyword
|
|
6797
6808
|
|
|
6809
|
+
if (!metadata) {
|
|
6810
|
+
return [];
|
|
6811
|
+
}
|
|
6798
6812
|
const keywords = Object.keys(metadata);
|
|
6799
6813
|
const rows = [];
|
|
6800
6814
|
for (let i = 0; i < keywords.length; i++) {
|
|
@@ -8777,6 +8791,7 @@ const hpMN8 = {
|
|
|
8777
8791
|
};
|
|
8778
8792
|
/* harmony default export */ const hpMNGrid = ((/* unused pure expression or super */ null && (hpMN)));
|
|
8779
8793
|
;// ../../../extensions/default/src/hangingprotocols/hpCompare.ts
|
|
8794
|
+
|
|
8780
8795
|
const defaultDisplaySetSelector = {
|
|
8781
8796
|
studyMatchingRules: [{
|
|
8782
8797
|
// The priorInstance is a study counter that indicates what position this study is in
|
|
@@ -8879,8 +8894,8 @@ const priorViewport1 = {
|
|
|
8879
8894
|
*/
|
|
8880
8895
|
const hpMNCompare = {
|
|
8881
8896
|
id: '@ohif/hpCompare',
|
|
8882
|
-
description: 'Compare two studies in various layouts',
|
|
8883
|
-
name: 'Compare Two Studies',
|
|
8897
|
+
description: i18next/* default */.A.t('Hps:Compare two studies in various layouts'),
|
|
8898
|
+
name: i18next/* default */.A.t('Hps:Compare Two Studies'),
|
|
8884
8899
|
numberOfPriorsReferenced: 1,
|
|
8885
8900
|
protocolMatchingRules: [{
|
|
8886
8901
|
id: 'Two Studies',
|
|
@@ -9123,6 +9138,7 @@ const LMLOPrior = {
|
|
|
9123
9138
|
|
|
9124
9139
|
;// ../../../extensions/default/src/hangingprotocols/hpMammo.ts
|
|
9125
9140
|
|
|
9141
|
+
|
|
9126
9142
|
const rightDisplayArea = {
|
|
9127
9143
|
storeAsInitialCamera: true,
|
|
9128
9144
|
imageArea: [0.8, 0.8],
|
|
@@ -9142,7 +9158,7 @@ const leftDisplayArea = {
|
|
|
9142
9158
|
const hpMammography = {
|
|
9143
9159
|
id: '@ohif/hpMammo',
|
|
9144
9160
|
hasUpdatedPriorsInformation: false,
|
|
9145
|
-
name: 'Mammography Breast Screening',
|
|
9161
|
+
name: i18next/* default */.A.t('Hps:Mammography Breast Screening'),
|
|
9146
9162
|
protocolMatchingRules: [{
|
|
9147
9163
|
id: 'Mammography',
|
|
9148
9164
|
weight: 150,
|
|
@@ -9880,7 +9896,6 @@ const {
|
|
|
9880
9896
|
|
|
9881
9897
|
|
|
9882
9898
|
|
|
9883
|
-
|
|
9884
9899
|
function ItemListComponent({
|
|
9885
9900
|
itemLabel,
|
|
9886
9901
|
itemList,
|
|
@@ -9902,36 +9917,42 @@ function ItemListComponent({
|
|
|
9902
9917
|
}, /*#__PURE__*/react.createElement("div", {
|
|
9903
9918
|
className: "flex items-center justify-between"
|
|
9904
9919
|
}, /*#__PURE__*/react.createElement("div", {
|
|
9905
|
-
className: "text-
|
|
9906
|
-
}, t(`Select ${itemLabel}`)), /*#__PURE__*/react.createElement(
|
|
9920
|
+
className: "text-highlight text-xl"
|
|
9921
|
+
}, t(`Select ${itemLabel}`)), /*#__PURE__*/react.createElement(ui_next_src/* InputFilter */.zbB, {
|
|
9907
9922
|
className: "max-w-[40%] grow",
|
|
9908
|
-
|
|
9909
|
-
|
|
9910
|
-
placeholder: t(`Search ${itemLabel} list`)
|
|
9911
|
-
|
|
9923
|
+
onChange: setFilterValue
|
|
9924
|
+
}, /*#__PURE__*/react.createElement(ui_next_src/* InputFilter */.zbB.SearchIcon, null), /*#__PURE__*/react.createElement(ui_next_src/* InputFilter */.zbB.Input, {
|
|
9925
|
+
placeholder: t(`Search ${itemLabel} list`),
|
|
9926
|
+
className: "pl-8 pr-9"
|
|
9927
|
+
}), /*#__PURE__*/react.createElement(ui_next_src/* InputFilter */.zbB.ClearButton, {
|
|
9928
|
+
className: "text-primary mr-0.5 p-0.5"
|
|
9929
|
+
}))), /*#__PURE__*/react.createElement("div", {
|
|
9912
9930
|
className: "relative flex min-h-[1px] grow flex-col bg-black text-[14px]"
|
|
9913
9931
|
}, itemList == null ? /*#__PURE__*/react.createElement(LoadingIndicatorProgress, {
|
|
9914
9932
|
className: 'h-full w-full'
|
|
9915
9933
|
}) : itemList.length === 0 ? /*#__PURE__*/react.createElement("div", {
|
|
9916
|
-
className: "text-
|
|
9934
|
+
className: "text-highlight flex h-full flex-col items-center justify-center px-6 py-4"
|
|
9917
9935
|
}, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ToolMagnify, {
|
|
9918
9936
|
className: "mb-4"
|
|
9919
9937
|
}), /*#__PURE__*/react.createElement("span", null, t(`No ${itemLabel} available`))) : /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
9920
|
-
className: "bg-
|
|
9938
|
+
className: "bg-popover text-foreground px-3 py-1.5"
|
|
9921
9939
|
}, t(itemLabel)), /*#__PURE__*/react.createElement("div", {
|
|
9922
9940
|
className: "ohif-scrollbar overflow-auto"
|
|
9923
9941
|
}, itemList.filter(item => !filterValue || item.name.toLowerCase().includes(filterValue.toLowerCase())).map(item => {
|
|
9924
|
-
const border = 'rounded border-transparent border-b-
|
|
9942
|
+
const border = 'rounded border-transparent border-b-input border-[1px]';
|
|
9925
9943
|
return /*#__PURE__*/react.createElement("div", {
|
|
9926
|
-
className: classnames_default()('hover:text-
|
|
9944
|
+
className: classnames_default()('hover:text-highlight hover:bg-muted group mx-2 flex items-center justify-between px-6 py-2', border),
|
|
9927
9945
|
key: item.id
|
|
9928
|
-
}, /*#__PURE__*/react.createElement("div",
|
|
9946
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
9947
|
+
className: "text-muted-foreground"
|
|
9948
|
+
}, item.name), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
|
|
9929
9949
|
onClick: () => onItemClicked(item),
|
|
9930
9950
|
className: "invisible group-hover:visible",
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
|
|
9934
|
-
|
|
9951
|
+
variant: "default",
|
|
9952
|
+
size: "sm"
|
|
9953
|
+
}, t('Select'), /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ChevronRight, {
|
|
9954
|
+
className: "ml-2 h-3 w-3"
|
|
9955
|
+
})));
|
|
9935
9956
|
})))));
|
|
9936
9957
|
}
|
|
9937
9958
|
/* harmony default export */ const Components_ItemListComponent = (ItemListComponent);
|
|
@@ -10076,11 +10097,7 @@ function DataSourceConfigurationComponent({
|
|
|
10076
10097
|
if (!activeDataSourceDef?.configuration?.configurationAPI) {
|
|
10077
10098
|
return;
|
|
10078
10099
|
}
|
|
10079
|
-
const
|
|
10080
|
-
factory: configurationAPIFactory
|
|
10081
|
-
} = customizationService.getCustomization(activeDataSourceDef.configuration.configurationAPI) ?? {
|
|
10082
|
-
factory: () => null
|
|
10083
|
-
};
|
|
10100
|
+
const configurationAPIFactory = customizationService.getCustomization(activeDataSourceDef.configuration.configurationAPI) ?? (() => null);
|
|
10084
10101
|
if (!configurationAPIFactory) {
|
|
10085
10102
|
return;
|
|
10086
10103
|
}
|
|
@@ -10106,6 +10123,7 @@ function DataSourceConfigurationComponent({
|
|
|
10106
10123
|
show({
|
|
10107
10124
|
content: Components_DataSourceConfigurationModalComponent,
|
|
10108
10125
|
title: t('Configure Data Source'),
|
|
10126
|
+
containerClassName: 'max-w-3xl',
|
|
10109
10127
|
contentProps: {
|
|
10110
10128
|
configurationAPI,
|
|
10111
10129
|
configuredItems,
|
|
@@ -10393,23 +10411,27 @@ var browser_detect_es5 = __webpack_require__(88123);
|
|
|
10393
10411
|
|
|
10394
10412
|
|
|
10395
10413
|
|
|
10414
|
+
|
|
10396
10415
|
function AboutModalDefault() {
|
|
10416
|
+
const {
|
|
10417
|
+
t
|
|
10418
|
+
} = (0,es/* useTranslation */.Bd)('AboutModal');
|
|
10397
10419
|
const {
|
|
10398
10420
|
os,
|
|
10399
10421
|
version,
|
|
10400
10422
|
name
|
|
10401
10423
|
} = (0,browser_detect_es5/* default */.A)();
|
|
10402
10424
|
const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
|
|
10403
|
-
const versionNumber = "3.12.0
|
|
10404
|
-
const commitHash = "
|
|
10425
|
+
const versionNumber = "3.12.0";
|
|
10426
|
+
const commitHash = "27b1afe040061c6afc15bf131e28cdff3a5f0ec7";
|
|
10405
10427
|
const [main, beta] = versionNumber.split('-');
|
|
10406
10428
|
return /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU, {
|
|
10407
10429
|
className: "w-[400px]"
|
|
10408
10430
|
}, /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.ProductName, null, "OHIF Viewer"), /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.ProductVersion, null, main), beta && /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.ProductBeta, null, beta), /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.Body, null, /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.DetailItem, {
|
|
10409
|
-
label:
|
|
10431
|
+
label: t('Commit Hash'),
|
|
10410
10432
|
value: commitHash
|
|
10411
10433
|
}), /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.DetailItem, {
|
|
10412
|
-
label:
|
|
10434
|
+
label: t('Current Browser & OS'),
|
|
10413
10435
|
value: `${browser}, ${os}`
|
|
10414
10436
|
}), /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU.SocialItem, {
|
|
10415
10437
|
icon: "SocialGithub",
|
|
@@ -10439,15 +10461,27 @@ function UserPreferencesModalDefault({
|
|
|
10439
10461
|
hotkeysManager
|
|
10440
10462
|
} = (0,src/* useSystem */.Jg)();
|
|
10441
10463
|
const {
|
|
10442
|
-
t
|
|
10464
|
+
t,
|
|
10465
|
+
i18n: i18nextInstance
|
|
10443
10466
|
} = (0,es/* useTranslation */.Bd)('UserPreferencesModal');
|
|
10444
10467
|
const {
|
|
10445
10468
|
hotkeyDefinitions = {},
|
|
10446
10469
|
hotkeyDefaults = {}
|
|
10447
10470
|
} = hotkeysManager;
|
|
10471
|
+
const fallbackHotkeyDefinitions = (0,react.useMemo)(() => hotkeysManager.getValidHotkeyDefinitions(src/* hotkeys */.ot.defaults.hotkeyBindings), [hotkeysManager]);
|
|
10472
|
+
(0,react.useEffect)(() => {
|
|
10473
|
+
if (!Object.keys(hotkeyDefaults).length) {
|
|
10474
|
+
hotkeysManager.setDefaultHotKeys(src/* hotkeys */.ot.defaults.hotkeyBindings);
|
|
10475
|
+
}
|
|
10476
|
+
if (!Object.keys(hotkeyDefinitions).length) {
|
|
10477
|
+
hotkeysManager.setHotkeys(fallbackHotkeyDefinitions);
|
|
10478
|
+
}
|
|
10479
|
+
}, [hotkeysManager, hotkeyDefaults, hotkeyDefinitions, fallbackHotkeyDefinitions]);
|
|
10480
|
+
const resolvedHotkeyDefaults = Object.keys(hotkeyDefaults).length ? hotkeyDefaults : fallbackHotkeyDefinitions;
|
|
10481
|
+
const initialHotkeyDefinitions = Object.keys(hotkeyDefinitions).length ? hotkeyDefinitions : resolvedHotkeyDefaults;
|
|
10448
10482
|
const currentLanguage = currentLanguageFn();
|
|
10449
10483
|
const [state, setState] = (0,react.useState)({
|
|
10450
|
-
hotkeyDefinitions:
|
|
10484
|
+
hotkeyDefinitions: initialHotkeyDefinitions,
|
|
10451
10485
|
languageValue: currentLanguage.value
|
|
10452
10486
|
});
|
|
10453
10487
|
const onLanguageChangeHandler = value => {
|
|
@@ -10472,10 +10506,45 @@ function UserPreferencesModalDefault({
|
|
|
10472
10506
|
setState(state => ({
|
|
10473
10507
|
...state,
|
|
10474
10508
|
languageValue: defaultLanguage.value,
|
|
10475
|
-
hotkeyDefinitions:
|
|
10509
|
+
hotkeyDefinitions: resolvedHotkeyDefaults
|
|
10476
10510
|
}));
|
|
10477
10511
|
hotkeysManager.restoreDefaultBindings();
|
|
10478
10512
|
};
|
|
10513
|
+
const displayNames = react.useMemo(() => {
|
|
10514
|
+
if (typeof Intl === 'undefined' || typeof Intl.DisplayNames !== 'function') {
|
|
10515
|
+
return null;
|
|
10516
|
+
}
|
|
10517
|
+
const locales = [state.languageValue, currentLanguage.value, i18nextInstance.language, 'en'];
|
|
10518
|
+
const uniqueLocales = Array.from(new Set(locales.filter(Boolean)));
|
|
10519
|
+
try {
|
|
10520
|
+
return new Intl.DisplayNames(uniqueLocales, {
|
|
10521
|
+
type: 'language',
|
|
10522
|
+
fallback: 'none'
|
|
10523
|
+
});
|
|
10524
|
+
} catch (error) {
|
|
10525
|
+
console.warn('Intl.DisplayNames not supported for locales', uniqueLocales, error);
|
|
10526
|
+
}
|
|
10527
|
+
return null;
|
|
10528
|
+
}, [state.languageValue, currentLanguage.value, i18nextInstance.language]);
|
|
10529
|
+
const getLanguageLabel = react.useCallback((languageValue, fallbackLabel) => {
|
|
10530
|
+
const translationKey = `LanguageName.${languageValue}`;
|
|
10531
|
+
if (i18nextInstance.exists(translationKey, {
|
|
10532
|
+
ns: 'UserPreferencesModal'
|
|
10533
|
+
})) {
|
|
10534
|
+
return t(translationKey);
|
|
10535
|
+
}
|
|
10536
|
+
if (displayNames) {
|
|
10537
|
+
try {
|
|
10538
|
+
const localized = displayNames.of(languageValue);
|
|
10539
|
+
if (localized && localized.toLowerCase() !== languageValue.toLowerCase()) {
|
|
10540
|
+
return localized.charAt(0).toUpperCase() + localized.slice(1);
|
|
10541
|
+
}
|
|
10542
|
+
} catch (error) {
|
|
10543
|
+
console.debug(`Unable to resolve display name for ${languageValue}`, error);
|
|
10544
|
+
}
|
|
10545
|
+
}
|
|
10546
|
+
return fallbackLabel;
|
|
10547
|
+
}, [displayNames, i18nextInstance, t]);
|
|
10479
10548
|
return /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy, null, /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.Body, null, /*#__PURE__*/react.createElement("div", {
|
|
10480
10549
|
className: "mb-3 flex items-center space-x-14"
|
|
10481
10550
|
}, /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.SubHeading, null, t('Language')), /*#__PURE__*/react.createElement(ui_next_src/* Select */.l6P, {
|
|
@@ -10489,7 +10558,7 @@ function UserPreferencesModalDefault({
|
|
|
10489
10558
|
})), /*#__PURE__*/react.createElement(ui_next_src/* SelectContent */.gCo, null, availableLanguages.map(lang => /*#__PURE__*/react.createElement(ui_next_src/* SelectItem */.ebT, {
|
|
10490
10559
|
key: lang.value,
|
|
10491
10560
|
value: lang.value
|
|
10492
|
-
}, lang.label))))), /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.SubHeading, null, t('Hotkeys')), /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.HotkeysGrid, null, Object.entries(state.hotkeyDefinitions).map(([id, definition]) => /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.Hotkey, {
|
|
10561
|
+
}, getLanguageLabel(lang.value, lang.label)))))), /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.SubHeading, null, t('Hotkeys')), /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.HotkeysGrid, null, Object.entries(state.hotkeyDefinitions).map(([id, definition]) => /*#__PURE__*/react.createElement(ui_next_src/* UserPreferencesModal */.xMy.Hotkey, {
|
|
10493
10562
|
key: id,
|
|
10494
10563
|
label: t(definition.label),
|
|
10495
10564
|
value: definition.keys,
|
|
@@ -10508,6 +10577,9 @@ function UserPreferencesModalDefault({
|
|
|
10508
10577
|
onClick: () => {
|
|
10509
10578
|
if (state.languageValue !== currentLanguage.value) {
|
|
10510
10579
|
i18n_src/* default */.A.changeLanguage(state.languageValue);
|
|
10580
|
+
// Force page reload after language change to ensure all translations are applied
|
|
10581
|
+
window.location.reload();
|
|
10582
|
+
return; // Exit early since we're reloading
|
|
10511
10583
|
}
|
|
10512
10584
|
hotkeysManager.setHotkeys(state.hotkeyDefinitions);
|
|
10513
10585
|
src/* hotkeys */.ot.stopRecord();
|
|
@@ -10649,6 +10721,7 @@ function ReportDialog({
|
|
|
10649
10721
|
'ohif.hotkeyBindings': src/* defaults */.NT.hotkeyBindings
|
|
10650
10722
|
});
|
|
10651
10723
|
;// ../../../extensions/default/src/customizations/onboardingCustomization.ts
|
|
10724
|
+
|
|
10652
10725
|
function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
10653
10726
|
return new Promise(resolve => {
|
|
10654
10727
|
let attempts = 0;
|
|
@@ -10668,8 +10741,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10668
10741
|
route: '/viewer',
|
|
10669
10742
|
steps: [{
|
|
10670
10743
|
id: 'scroll',
|
|
10671
|
-
title: 'Scrolling Through Images',
|
|
10672
|
-
text: 'You can scroll through the images using the mouse wheel or scrollbar.',
|
|
10744
|
+
title: i18n_src/* default */.A.t('Onboarding:Scrolling Through Images'),
|
|
10745
|
+
text: i18n_src/* default */.A.t('Onboarding:You can scroll through the images using the mouse wheel or scrollbar.'),
|
|
10673
10746
|
attachTo: {
|
|
10674
10747
|
element: '.viewport-element',
|
|
10675
10748
|
on: 'top'
|
|
@@ -10681,8 +10754,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10681
10754
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10682
10755
|
}, {
|
|
10683
10756
|
id: 'zoom',
|
|
10684
|
-
title: 'Zooming In and Out',
|
|
10685
|
-
text: 'You can zoom the images using the right click.',
|
|
10757
|
+
title: i18n_src/* default */.A.t('Onboarding:Zooming In and Out'),
|
|
10758
|
+
text: i18n_src/* default */.A.t('Onboarding:You can zoom the images using the right click.'),
|
|
10686
10759
|
attachTo: {
|
|
10687
10760
|
element: '.viewport-element',
|
|
10688
10761
|
on: 'left'
|
|
@@ -10694,8 +10767,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10694
10767
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10695
10768
|
}, {
|
|
10696
10769
|
id: 'pan',
|
|
10697
|
-
title: 'Panning the Image',
|
|
10698
|
-
text: 'You can pan the images using the middle click.',
|
|
10770
|
+
title: i18n_src/* default */.A.t('Onboarding:Panning the Image'),
|
|
10771
|
+
text: i18n_src/* default */.A.t('Onboarding:You can pan the images using the middle click.'),
|
|
10699
10772
|
attachTo: {
|
|
10700
10773
|
element: '.viewport-element',
|
|
10701
10774
|
on: 'top'
|
|
@@ -10707,8 +10780,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10707
10780
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10708
10781
|
}, {
|
|
10709
10782
|
id: 'windowing',
|
|
10710
|
-
title: 'Adjusting Window Level',
|
|
10711
|
-
text: 'You can modify the window level using the left click.',
|
|
10783
|
+
title: i18n_src/* default */.A.t('Onboarding:Adjusting Window Level'),
|
|
10784
|
+
text: i18n_src/* default */.A.t('Onboarding:You can modify the window level using the left click.'),
|
|
10712
10785
|
attachTo: {
|
|
10713
10786
|
element: '.viewport-element',
|
|
10714
10787
|
on: 'left'
|
|
@@ -10720,8 +10793,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10720
10793
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10721
10794
|
}, {
|
|
10722
10795
|
id: 'length',
|
|
10723
|
-
title: 'Using the Measurement Tools',
|
|
10724
|
-
text: 'You can measure the length of a region using the Length tool.',
|
|
10796
|
+
title: i18n_src/* default */.A.t('Onboarding:Using the Measurement Tools'),
|
|
10797
|
+
text: i18n_src/* default */.A.t('Onboarding:You can measure the length of a region using the Length tool.'),
|
|
10725
10798
|
attachTo: {
|
|
10726
10799
|
element: '[data-cy="MeasurementTools-split-button-primary"]',
|
|
10727
10800
|
on: 'bottom'
|
|
@@ -10730,11 +10803,11 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10730
10803
|
selector: '[data-cy="MeasurementTools-split-button-primary"]',
|
|
10731
10804
|
event: 'click'
|
|
10732
10805
|
},
|
|
10733
|
-
beforeShowPromise: () => waitForElement('[data-cy="MeasurementTools-split-button-primary]')
|
|
10806
|
+
beforeShowPromise: () => waitForElement('[data-cy="MeasurementTools-split-button-primary"]')
|
|
10734
10807
|
}, {
|
|
10735
10808
|
id: 'drawAnnotation',
|
|
10736
|
-
title: 'Drawing Length Annotations',
|
|
10737
|
-
text: 'Use the length tool on the viewport to measure the length of a region.',
|
|
10809
|
+
title: i18n_src/* default */.A.t('Onboarding:Drawing Length Annotations'),
|
|
10810
|
+
text: i18n_src/* default */.A.t('Onboarding:Use the length tool on the viewport to measure the length of a region.'),
|
|
10738
10811
|
attachTo: {
|
|
10739
10812
|
element: '.viewport-element',
|
|
10740
10813
|
on: 'right'
|
|
@@ -10746,8 +10819,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10746
10819
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10747
10820
|
}, {
|
|
10748
10821
|
id: 'trackMeasurement',
|
|
10749
|
-
title: 'Tracking Measurements in the Panel',
|
|
10750
|
-
text: 'Click yes to track the measurements in the measurement panel.',
|
|
10822
|
+
title: i18n_src/* default */.A.t('Onboarding:Tracking Measurements in the Panel'),
|
|
10823
|
+
text: i18n_src/* default */.A.t('Onboarding:Click yes to track the measurements in the measurement panel.'),
|
|
10751
10824
|
attachTo: {
|
|
10752
10825
|
element: '[data-cy="prompt-begin-tracking-yes-btn"]',
|
|
10753
10826
|
on: 'bottom'
|
|
@@ -10759,8 +10832,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10759
10832
|
beforeShowPromise: () => waitForElement('[data-cy="prompt-begin-tracking-yes-btn"]')
|
|
10760
10833
|
}, {
|
|
10761
10834
|
id: 'openMeasurementPanel',
|
|
10762
|
-
title: 'Opening the Measurements Panel',
|
|
10763
|
-
text: 'Click the measurements button to open the measurements panel.',
|
|
10835
|
+
title: i18n_src/* default */.A.t('Onboarding:Opening the Measurements Panel'),
|
|
10836
|
+
text: i18n_src/* default */.A.t('Onboarding:Click the measurements button to open the measurements panel.'),
|
|
10764
10837
|
attachTo: {
|
|
10765
10838
|
element: '#trackedMeasurements-btn',
|
|
10766
10839
|
on: 'left-start'
|
|
@@ -10772,8 +10845,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10772
10845
|
beforeShowPromise: () => waitForElement('#trackedMeasurements-btn')
|
|
10773
10846
|
}, {
|
|
10774
10847
|
id: 'scrollAwayFromMeasurement',
|
|
10775
|
-
title: 'Scrolling Away from a Measurement',
|
|
10776
|
-
text: 'Scroll the images using the mouse wheel away from the measurement.',
|
|
10848
|
+
title: i18n_src/* default */.A.t('Onboarding:Scrolling Away from a Measurement'),
|
|
10849
|
+
text: i18n_src/* default */.A.t('Onboarding:Scroll the images using the mouse wheel away from the measurement.'),
|
|
10777
10850
|
attachTo: {
|
|
10778
10851
|
element: '.viewport-element',
|
|
10779
10852
|
on: 'left'
|
|
@@ -10785,8 +10858,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10785
10858
|
beforeShowPromise: () => waitForElement('.viewport-element')
|
|
10786
10859
|
}, {
|
|
10787
10860
|
id: 'jumpToMeasurement',
|
|
10788
|
-
title: 'Jumping to Measurements in the Panel',
|
|
10789
|
-
text: 'Click the measurement in the measurement panel to jump to it.',
|
|
10861
|
+
title: i18n_src/* default */.A.t('Onboarding:Jumping to Measurements in the Panel'),
|
|
10862
|
+
text: i18n_src/* default */.A.t('Onboarding:Click the measurement in the measurement panel to jump to it.'),
|
|
10790
10863
|
attachTo: {
|
|
10791
10864
|
element: '[data-cy="data-row"]',
|
|
10792
10865
|
on: 'left-start'
|
|
@@ -10798,8 +10871,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10798
10871
|
beforeShowPromise: () => waitForElement('[data-cy="data-row"]')
|
|
10799
10872
|
}, {
|
|
10800
10873
|
id: 'changeLayout',
|
|
10801
|
-
title: 'Changing Layout',
|
|
10802
|
-
text: 'You can change the layout of the viewer using the layout button.',
|
|
10874
|
+
title: i18n_src/* default */.A.t('Onboarding:Changing Layout'),
|
|
10875
|
+
text: i18n_src/* default */.A.t('Onboarding:You can change the layout of the viewer using the layout button.'),
|
|
10803
10876
|
attachTo: {
|
|
10804
10877
|
element: '[data-cy="Layout"]',
|
|
10805
10878
|
on: 'bottom'
|
|
@@ -10811,8 +10884,8 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10811
10884
|
beforeShowPromise: () => waitForElement('[data-cy="Layout"]')
|
|
10812
10885
|
}, {
|
|
10813
10886
|
id: 'selectLayout',
|
|
10814
|
-
title: 'Selecting the MPR Layout',
|
|
10815
|
-
text: 'Select the MPR layout to view the images in MPR mode.',
|
|
10887
|
+
title: i18n_src/* default */.A.t('Onboarding:Selecting the MPR Layout'),
|
|
10888
|
+
text: i18n_src/* default */.A.t('Onboarding:Select the MPR layout to view the images in MPR mode.'),
|
|
10816
10889
|
attachTo: {
|
|
10817
10890
|
element: '[data-cy="MPR"]',
|
|
10818
10891
|
on: 'left-start'
|
|
@@ -10827,7 +10900,7 @@ function waitForElement(selector, maxAttempts = 20, interval = 25) {
|
|
|
10827
10900
|
useModalOverlay: true,
|
|
10828
10901
|
defaultStepOptions: {
|
|
10829
10902
|
buttons: [{
|
|
10830
|
-
text: 'Skip all',
|
|
10903
|
+
text: i18n_src/* default */.A.t('Onboarding:Skip all'),
|
|
10831
10904
|
action() {
|
|
10832
10905
|
this.complete();
|
|
10833
10906
|
},
|
|
@@ -11433,7 +11506,7 @@ async function callInputDialogAutoComplete({
|
|
|
11433
11506
|
const labellingDoneCallback = newValue => {
|
|
11434
11507
|
uiDialogService.hide('select-annotation');
|
|
11435
11508
|
if (measurement && typeof newValue === 'string') {
|
|
11436
|
-
const sourceAnnotation =
|
|
11509
|
+
const sourceAnnotation = tools_dist_esm.annotation.state.getAnnotation(measurement.uid);
|
|
11437
11510
|
(0,utilities.setAnnotationLabel)(sourceAnnotation, element, newValue);
|
|
11438
11511
|
}
|
|
11439
11512
|
resolve(newValue);
|
|
@@ -14,8 +14,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
14
14
|
|
|
15
15
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
16
16
|
var react = __webpack_require__(86326);
|
|
17
|
-
// EXTERNAL MODULE: ../../ui-next/src/index.ts +
|
|
18
|
-
var src = __webpack_require__(
|
|
17
|
+
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3075 modules
|
|
18
|
+
var src = __webpack_require__(12517);
|
|
19
19
|
;// ../../../extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts
|
|
20
20
|
function createSEGToolGroupAndAddTools({
|
|
21
21
|
commandsManager,
|
|
@@ -30,8 +30,8 @@ function createSEGToolGroupAndAddTools({
|
|
|
30
30
|
return toolGroupService.createToolGroupAndAddTools(toolGroupId, updatedTools);
|
|
31
31
|
}
|
|
32
32
|
/* harmony default export */ const initSEGToolGroup = (createSEGToolGroupAndAddTools);
|
|
33
|
-
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx +
|
|
34
|
-
var cornerstone_src = __webpack_require__(
|
|
33
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 193 modules
|
|
34
|
+
var cornerstone_src = __webpack_require__(63081);
|
|
35
35
|
;// ../../../extensions/cornerstone-dicom-seg/src/utils/promptHydrateSEG.ts
|
|
36
36
|
|
|
37
37
|
function promptHydrateSEG({
|
|
@@ -121,12 +121,20 @@ function OHIFCornerstoneSEGViewport(props) {
|
|
|
121
121
|
// In such cases, we attempt to handle this scenario gracefully by
|
|
122
122
|
// invoking a custom handler. Ideally, if a user tries to launch a series that isn't viewable,
|
|
123
123
|
// (eg.: we can prompt them with an explanation and provide a link to the full study).
|
|
124
|
+
|
|
125
|
+
// Additional guard: If no customization handler is registered for missing
|
|
126
|
+
// referenced display sets, skip SEG rendering to avoid a viewport crash.
|
|
124
127
|
if (!referencedDisplaySetInstanceUID) {
|
|
125
128
|
const missingReferenceDisplaySetHandler = customizationService.getCustomization('missingReferenceDisplaySetHandler');
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
if (typeof missingReferenceDisplaySetHandler === 'function') {
|
|
130
|
+
const {
|
|
131
|
+
handled
|
|
132
|
+
} = missingReferenceDisplaySetHandler();
|
|
133
|
+
if (handled) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
console.log("No customization 'missingReferenceDisplaySetHandler' registered. Skipping SEG rendering.");
|
|
130
138
|
return;
|
|
131
139
|
}
|
|
132
140
|
}
|
|
@@ -11,8 +11,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11
11
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
|
|
12
12
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97598);
|
|
13
13
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
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__(12517);
|
|
15
|
+
/* harmony import */ var _ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(63081);
|
|
16
16
|
/* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4667);
|
|
17
17
|
/* harmony import */ var _getContextModule__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55844);
|
|
18
18
|
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15327);
|