@ohif/app 3.9.0-beta.45 → 3.9.0-beta.47
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/031089e563a18ada8441.wasm +0 -0
- package/dist/{445.bundle.38c6d2af64e41cd7c614.js → 10.bundle.c626810bd199ab63f3a2.js} +3 -3
- package/dist/{501.bundle.2f703ca4598a3be0d748.js → 129.bundle.3102eccbd5c78524c3dd.js} +6036 -11592
- package/dist/{140.bundle.fcf29be726bb9dcea834.js → 153.bundle.d3732d0fdebb39e139b4.js} +7 -4
- package/dist/{139.bundle.09e5af0a9ae8a285af77.js → 169.bundle.eeb9614e7b06f896c70f.js} +65 -535
- package/dist/{139.css → 169.css} +0 -1
- package/dist/{164.bundle.2b23bfbcb23497d7c87a.js → 196.bundle.cf8c2311aafb5312bbf7.js} +15562 -8539
- package/dist/{342.bundle.fcb2038060a062129d34.js → 202.bundle.bb0e8196739bb896dc9e.js} +238 -276
- package/dist/{129.bundle.894f29369d609094208b.js → 210.bundle.d6d6cbd1b65e4f506ed1.js} +46 -46
- package/dist/{363.bundle.c7e38cf0c1fc7d19a701.js → 217.bundle.042317b439df47cd38b1.js} +2099 -195
- package/dist/{363.css → 217.css} +1 -0
- package/dist/{14.bundle.60eed1138c62b91572a7.js → 246.bundle.288317813cd5781e64f7.js} +11 -11
- package/dist/250.bundle.4743b359797751102600.js +663 -0
- package/dist/{944.bundle.baa0880e0bbde13fccc5.js → 281.bundle.5946cbee5150dec1532f.js} +241 -254
- package/dist/{727.bundle.7b7f3962207601643615.js → 286.bundle.985c5ebbb2158c7e59ab.js} +4 -4
- package/dist/29.bundle.976319462f33868497c2.js +12347 -0
- package/dist/{675.bundle.c9720f40fd7c7e9b7e54.js → 315.bundle.92d7aefc4dc9cfd951bd.js} +18 -18
- package/dist/{218.bundle.a1709956bc65c4f54874.js → 353.bundle.58b3ea80771ebaca956b.js} +8 -8
- package/dist/{799.bundle.33fc63add3b915d0c2b2.js → 360.bundle.81592d66456d25930928.js} +62 -62
- package/dist/{555.bundle.768f1594e1d40b707342.js → 372.bundle.5e3dc2539055ca5861e6.js} +50 -50
- package/dist/{211.bundle.194272cd32bedb302303.js → 376.bundle.45b94427174400b86d5d.js} +8 -8
- package/dist/{612.bundle.297a033523539e0b47f9.js → 412.bundle.836f106f6e2896dc42a5.js} +4 -4
- package/dist/{931.bundle.058f8de4606f27b31f4f.js → 417.bundle.abf8bcee0f246002acb9.js} +25 -25
- package/dist/{370.bundle.bd9884c274c26a54dfae.js → 428.bundle.744fc5865b2d747de88a.js} +829 -1511
- package/dist/{483.bundle.0f1848f6a2cf34829fef.js → 497.bundle.ee102d6243f984113f08.js} +141 -141
- package/dist/{323.bundle.955cc8f5eb5c01295118.js → 498.bundle.bb47c493dd02451f77ef.js} +17 -17
- package/dist/{552.bundle.0d11c419f675cb5a63b1.js → 502.bundle.857675fc2cbb2fbe3e47.js} +8 -9
- package/dist/{835.bundle.5d1951da8bbc6afdf3e0.js → 530.bundle.87f8b13ff55bf7b2a6d1.js} +28 -28
- package/dist/{121.bundle.57fe5a392b0910f33c2d.js → 552.bundle.95c0f28b051797242104.js} +733 -62
- package/dist/{265.bundle.61b0e1ce9d444704a976.js → 571.bundle.a80609c9815339516d77.js} +24 -24
- package/dist/{853.bundle.26b774ab3259f3e6087c.js → 591.bundle.1dca7dfd3e0490ea6dc1.js} +15 -14
- package/dist/604.bundle.83f50929b208c60e48da.js +1950 -0
- package/dist/610.min.worker.js +1 -1
- package/dist/610.min.worker.js.map +1 -1
- package/dist/{792.bundle.485ad2f98823a4b3feb1.js → 658.bundle.219ed199728759098008.js} +17 -17
- package/dist/{989.bundle.4be1e8f36734961852a8.js → 791.bundle.be08fa50f9a84244253b.js} +11 -11
- package/dist/{722.bundle.1242e0348afc63ca4f5e.js → 793.bundle.c92f52ddff0e3bf506e6.js} +13 -13
- package/dist/{914.bundle.e15be8089bf422ed7b51.js → 818.bundle.cda4e369fdee5459a544.js} +1239 -627
- package/dist/{726.bundle.90d63d40a19b058034ee.js → 831.bundle.9e1a3495947e5bb49756.js} +512 -512
- package/dist/{382.bundle.7cdad0f12b64f248dd28.js → 842.bundle.0664bcdeb7f153ab52bb.js} +11 -11
- package/dist/{806.bundle.1ec5fda0b16e053350d7.js → 888.bundle.2d02f805cedcf5d2ee7d.js} +14 -14
- package/dist/{702.bundle.963481fbf871984b646f.js → 909.bundle.1fbb8bb4c41d0bb2994d.js} +119 -381
- package/dist/{109.bundle.b4fee2a22b622839baf5.js → 931.bundle.f6fa2a436ace89ebf60f.js} +5036 -4642
- package/dist/{141.bundle.556b4c1e4cab770417ac.js → 937.bundle.cc709c922731f9496810.js} +86 -478
- package/dist/{444.bundle.75f58f53dab4d04db97d.js → 944.bundle.194f4f4e4e55ec466b78.js} +9 -10
- package/dist/945.min.worker.js +1 -1
- package/dist/945.min.worker.js.map +1 -1
- package/dist/{194.bundle.e6fb48f13f312eded76b.js → 962.bundle.225fcd92e6a5af66b6a2.js} +33 -37
- package/dist/{920.bundle.f75637a18563de8c8235.js → 978.bundle.4edc8c4615d7e3b4717a.js} +6 -6
- package/dist/{236.bundle.34db90a140e37d34fd71.js → 993.bundle.aa31ebda5a5f62c44de5.js} +2363 -2351
- package/dist/{717.bundle.3b84fbd289af82208a19.js → 994.bundle.269ce05b16fd6aa28006.js} +90 -164
- package/dist/app-config.js +58 -4
- package/dist/app.bundle.css +3 -3
- package/dist/{app.bundle.e2d3b6781252f9c7b2a3.js → app.bundle.ecc3736aff52e6abfd49.js} +52547 -36094
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/dicom-microscopy-viewer/5004fdc02f329ce53b69.wasm +0 -0
- package/dist/dicom-microscopy-viewer/c22b37c3488e1d6c3aa4.wasm +0 -0
- package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js +3 -0
- package/dist/{dicomMicroscopyViewer.min.js.LICENSE.txt → dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.LICENSE.txt} +11 -0
- package/dist/dicom-microscopy-viewer/index.worker.min.worker.js +2 -0
- package/dist/dicom-microscopy-viewer/index.worker.min.worker.js.map +1 -0
- package/dist/{histogram-worker.bundle.6b31e5ed4c4a7a6998f2.js → histogram-worker.bundle.e7e9fea2c3236b0e747a.js} +12 -16
- package/dist/index.html +1 -1
- package/dist/index.worker.5a5a581362c14598c3d9.worker.js +2 -0
- package/dist/index.worker.5a5a581362c14598c3d9.worker.js.map +1 -0
- package/dist/{polySeg.bundle.df492df5042827938ba4.js → polySeg.bundle.b25c61224998018d0f79.js} +24 -5
- package/dist/{suv-peak-worker.bundle.8f4b505fad3d371489fe.js → suv-peak-worker.bundle.eb11e71db02e52601ecf.js} +40 -21
- package/dist/sw.js +1 -1
- package/package.json +25 -33
- package/dist/117.bundle.1f7b56504d506e7259e3.js +0 -6552
- package/dist/172.bundle.e0ee762bee7496d6491e.js +0 -662
- package/dist/36785fbd89b0e17f6099.wasm +0 -0
- package/dist/62ab5d58a2bea7b5a1dc.wasm +0 -0
- package/dist/644.bundle.1e77691d2eeb96a423b0.js +0 -19159
- package/dist/75a0c2dfe07b824c7d21.wasm +0 -0
- package/dist/dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js +0 -13
- package/dist/dicomMicroscopyViewer.min.js +0 -3
- package/dist/index.worker.f4bda803c15bc6359d5f.worker.js +0 -2
- package/dist/index.worker.f4bda803c15bc6359d5f.worker.js.map +0 -1
- package/dist/index.worker.min.worker.js +0 -2
- package/dist/index.worker.min.worker.js.map +0 -1
- /package/dist/{129.css → 210.css} +0 -0
- /package/dist/{727.css → 286.css} +0 -0
- /package/dist/{172.css → 552.css} +0 -0
- /package/dist/{404.css → 757.css} +0 -0
- /package/dist/{717.css → 994.css} +0 -0
- /package/dist/{65916ef3def695744bda.wasm → dicom-microscopy-viewer/65916ef3def695744bda.wasm} +0 -0
- /package/dist/{b6b803111e2d06a825bd.wasm → dicom-microscopy-viewer/b6b803111e2d06a825bd.wasm} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[281],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 32281:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -31,11 +31,11 @@ __webpack_require__.d(utils_namespaceObject, {
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
// EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
|
|
34
|
-
var dicomweb_client_es = __webpack_require__(
|
|
34
|
+
var dicomweb_client_es = __webpack_require__(97604);
|
|
35
35
|
// EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
|
|
36
|
-
var src = __webpack_require__(
|
|
36
|
+
var src = __webpack_require__(63810);
|
|
37
37
|
// EXTERNAL MODULE: ../../core/src/utils/sortStudy.ts
|
|
38
|
-
var sortStudy = __webpack_require__(
|
|
38
|
+
var sortStudy = __webpack_require__(9415);
|
|
39
39
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/qido.js
|
|
40
40
|
/**
|
|
41
41
|
* QIDO - Query based on ID for DICOM Objects
|
|
@@ -126,7 +126,7 @@ function processSeriesResults(qidoSeries) {
|
|
|
126
126
|
description: getString(qidoSeries['0008103E'])
|
|
127
127
|
}));
|
|
128
128
|
}
|
|
129
|
-
(0,sortStudy/* sortStudySeries */.
|
|
129
|
+
(0,sortStudy/* sortStudySeries */.IO)(series);
|
|
130
130
|
return series;
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -379,7 +379,7 @@ function getImageId({
|
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
382
|
-
var dcmjs_es = __webpack_require__(
|
|
382
|
+
var dcmjs_es = __webpack_require__(67540);
|
|
383
383
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoader.js
|
|
384
384
|
/**
|
|
385
385
|
* Class to define inheritance of load retrieve strategy.
|
|
@@ -631,9 +631,9 @@ class RetrieveMetadataLoaderAsync extends RetrieveMetadataLoader {
|
|
|
631
631
|
const sortFunction = this.sortFunction;
|
|
632
632
|
const {
|
|
633
633
|
naturalizeDataset
|
|
634
|
-
} = dcmjs_es
|
|
634
|
+
} = dcmjs_es["default"].data.DicomMetaDictionary;
|
|
635
635
|
const naturalized = result.map(naturalizeDataset);
|
|
636
|
-
return (0,sortStudy/* sortStudySeries */.
|
|
636
|
+
return (0,sortStudy/* sortStudySeries */.IO)(naturalized, sortCriteria, sortFunction);
|
|
637
637
|
}
|
|
638
638
|
async load(preLoadData) {
|
|
639
639
|
const {
|
|
@@ -906,7 +906,7 @@ function uint8ArrayToString(data, offset, length) {
|
|
|
906
906
|
|
|
907
907
|
const {
|
|
908
908
|
DICOMwebClient
|
|
909
|
-
} = dicomweb_client_es
|
|
909
|
+
} = dicomweb_client_es.api;
|
|
910
910
|
const anyDicomwebClient = DICOMwebClient;
|
|
911
911
|
|
|
912
912
|
// Ugly over-ride, but the internals aren't otherwise accessible.
|
|
@@ -929,7 +929,7 @@ if (!anyDicomwebClient._orig_buildMultipartAcceptHeaderFieldValue) {
|
|
|
929
929
|
* by manually implementing a query option.
|
|
930
930
|
*/
|
|
931
931
|
|
|
932
|
-
class StaticWadoClient extends dicomweb_client_es
|
|
932
|
+
class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
933
933
|
constructor(config) {
|
|
934
934
|
super(config);
|
|
935
935
|
this.config = void 0;
|
|
@@ -1159,6 +1159,7 @@ const getBulkdataValue = (config, params) => {
|
|
|
1159
1159
|
} = params;
|
|
1160
1160
|
const value = instance[tag];
|
|
1161
1161
|
const {
|
|
1162
|
+
StudyInstanceUID,
|
|
1162
1163
|
SeriesInstanceUID,
|
|
1163
1164
|
SOPInstanceUID
|
|
1164
1165
|
} = instance;
|
|
@@ -1166,6 +1167,12 @@ const getBulkdataValue = (config, params) => {
|
|
|
1166
1167
|
const hasQuery = BulkDataURI.indexOf('?') !== -1;
|
|
1167
1168
|
const hasAccept = BulkDataURI.indexOf('accept=') !== -1;
|
|
1168
1169
|
const acceptUri = BulkDataURI + (hasAccept ? '' : (hasQuery ? '&' : '?') + `accept=${defaultType}`);
|
|
1170
|
+
if (acceptUri.startsWith('series/')) {
|
|
1171
|
+
const {
|
|
1172
|
+
wadoRoot
|
|
1173
|
+
} = config;
|
|
1174
|
+
return `${wadoRoot}/studies/${StudyInstanceUID}/${acceptUri}`;
|
|
1175
|
+
}
|
|
1169
1176
|
|
|
1170
1177
|
// The DICOMweb standard states that the default is multipart related, and then
|
|
1171
1178
|
// separately states that the accept parameter is the URL parameter equivalent of the accept header.
|
|
@@ -1201,12 +1208,17 @@ const createRenderedRetrieve = (config, params) => {
|
|
|
1201
1208
|
SeriesInstanceUID,
|
|
1202
1209
|
SOPInstanceUID
|
|
1203
1210
|
} = instance;
|
|
1211
|
+
const value = instance[tag];
|
|
1212
|
+
if (value?.BulkDataURI?.indexOf('?') !== -1) {
|
|
1213
|
+
// The value instance has parameters, so it should not revert to the rendered
|
|
1214
|
+
return;
|
|
1215
|
+
}
|
|
1204
1216
|
if (tag === 'PixelData' || tag === 'EncapsulatedDocument') {
|
|
1205
1217
|
return `${wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/instances/${SOPInstanceUID}/rendered`;
|
|
1206
1218
|
}
|
|
1207
1219
|
};
|
|
1208
1220
|
/* harmony default export */ const utils_createRenderedRetrieve = (createRenderedRetrieve);
|
|
1209
|
-
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/getDirectURL.
|
|
1221
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/getDirectURL.ts
|
|
1210
1222
|
|
|
1211
1223
|
|
|
1212
1224
|
|
|
@@ -1292,11 +1304,19 @@ function fixBulkDataURI(value, instance, dicomWebConfig) {
|
|
|
1292
1304
|
// in case of the relative path, make it absolute. The current DICOM standard says
|
|
1293
1305
|
// the bulkdataURI is relative to the series. However, there are situations where
|
|
1294
1306
|
// it can be relative to the study too
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1307
|
+
const {
|
|
1308
|
+
BulkDataURI
|
|
1309
|
+
} = value;
|
|
1310
|
+
if (!BulkDataURI.startsWith('http') && !value.BulkDataURI.startsWith('/')) {
|
|
1311
|
+
const {
|
|
1312
|
+
StudyInstanceUID,
|
|
1313
|
+
SeriesInstanceUID
|
|
1314
|
+
} = instance;
|
|
1315
|
+
const isInstanceStart = BulkDataURI.startsWith('instances/') || BulkDataURI.startsWith('../');
|
|
1316
|
+
if (BulkDataURI.startsWith('series/') || BulkDataURI.startsWith('bulkdata/') || dicomWebConfig.bulkDataURI?.relativeResolution === 'studies' && isInstanceStart) {
|
|
1317
|
+
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/${BulkDataURI}`;
|
|
1318
|
+
} else if (isInstanceStart || dicomWebConfig.bulkDataURI?.relativeResolution === 'series' || !dicomWebConfig.bulkDataURI?.relativeResolution) {
|
|
1319
|
+
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/${BulkDataURI}`;
|
|
1300
1320
|
}
|
|
1301
1321
|
return;
|
|
1302
1322
|
}
|
|
@@ -1307,11 +1327,11 @@ function fixBulkDataURI(value, instance, dicomWebConfig) {
|
|
|
1307
1327
|
// uri (e.g., bulkData: /bulk/1e, wado root: http://myserver.com/dicomweb, output: http://myserver.com/bulk/1e)
|
|
1308
1328
|
// and in case of relative wado root, we need to prepend the bulkdata uri to the wado root (e.g,. bulkData: /bulk/1e
|
|
1309
1329
|
// wado root: /dicomweb, output: /bulk/1e)
|
|
1310
|
-
if (
|
|
1330
|
+
if (BulkDataURI[0] === '/') {
|
|
1311
1331
|
if (dicomWebConfig.wadoRoot.startsWith('http')) {
|
|
1312
1332
|
// Absolute wado root
|
|
1313
1333
|
const url = new URL(dicomWebConfig.wadoRoot);
|
|
1314
|
-
value.BulkDataURI = `${url.origin}${
|
|
1334
|
+
value.BulkDataURI = `${url.origin}${BulkDataURI}`;
|
|
1315
1335
|
} else {
|
|
1316
1336
|
// Relative wado root, we don't need to do anything, bulkdata uri is already correct
|
|
1317
1337
|
}
|
|
@@ -1332,7 +1352,7 @@ function fixBulkDataURI(value, instance, dicomWebConfig) {
|
|
|
1332
1352
|
const {
|
|
1333
1353
|
DicomMetaDictionary,
|
|
1334
1354
|
DicomDict
|
|
1335
|
-
} = dcmjs_es
|
|
1355
|
+
} = dcmjs_es["default"].data;
|
|
1336
1356
|
const {
|
|
1337
1357
|
naturalizeDataset,
|
|
1338
1358
|
denaturalizeDataset
|
|
@@ -1413,20 +1433,20 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1413
1433
|
staticWado: dicomWebConfig.staticWado,
|
|
1414
1434
|
singlepart: dicomWebConfig.singlepart,
|
|
1415
1435
|
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1416
|
-
errorInterceptor: src/* errorHandler */.
|
|
1436
|
+
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1417
1437
|
};
|
|
1418
1438
|
wadoConfig = {
|
|
1419
1439
|
url: dicomWebConfig.wadoRoot,
|
|
1420
1440
|
staticWado: dicomWebConfig.staticWado,
|
|
1421
1441
|
singlepart: dicomWebConfig.singlepart,
|
|
1422
1442
|
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1423
|
-
errorInterceptor: src/* errorHandler */.
|
|
1443
|
+
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1424
1444
|
};
|
|
1425
1445
|
|
|
1426
1446
|
// TODO -> Two clients sucks, but its better than 1000.
|
|
1427
1447
|
// TODO -> We'll need to merge auth later.
|
|
1428
|
-
qidoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(qidoConfig) : new dicomweb_client_es
|
|
1429
|
-
wadoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(wadoConfig) : new dicomweb_client_es
|
|
1448
|
+
qidoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(qidoConfig) : new dicomweb_client_es.api.DICOMwebClient(qidoConfig);
|
|
1449
|
+
wadoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(wadoConfig) : new dicomweb_client_es.api.DICOMwebClient(wadoConfig);
|
|
1430
1450
|
},
|
|
1431
1451
|
query: {
|
|
1432
1452
|
studies: {
|
|
@@ -1623,10 +1643,10 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1623
1643
|
// The value.Value will be set with the bulkdata read value
|
|
1624
1644
|
// in which case it isn't necessary to re-read this.
|
|
1625
1645
|
if (value && value.BulkDataURI && !value.Value) {
|
|
1646
|
+
// handle the scenarios where bulkDataURI is relative path
|
|
1647
|
+
fixBulkDataURI(value, naturalized, dicomWebConfig);
|
|
1626
1648
|
// Provide a method to fetch bulkdata
|
|
1627
1649
|
value.retrieveBulkData = (options = {}) => {
|
|
1628
|
-
// handle the scenarios where bulkDataURI is relative path
|
|
1629
|
-
fixBulkDataURI(value, naturalized, dicomWebConfig);
|
|
1630
1650
|
const {
|
|
1631
1651
|
mediaType
|
|
1632
1652
|
} = options;
|
|
@@ -1648,7 +1668,6 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1648
1668
|
}] : undefined,
|
|
1649
1669
|
...options
|
|
1650
1670
|
};
|
|
1651
|
-
// Todo: this needs to be from wado dicom web client
|
|
1652
1671
|
return qidoDicomWebClient.retrieveBulkData(useOptions).then(val => {
|
|
1653
1672
|
// There are DICOM PDF cases where the first ArrayBuffer in the array is
|
|
1654
1673
|
// the bulk data and DICOM video cases where the second ArrayBuffer is
|
|
@@ -1778,7 +1797,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1778
1797
|
if (dicomWebConfig.supportsReject) {
|
|
1779
1798
|
implementation.reject = dcm4cheeReject(dicomWebConfig.wadoRoot);
|
|
1780
1799
|
}
|
|
1781
|
-
return src/* IWebApiDataSource */.
|
|
1800
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
1782
1801
|
}
|
|
1783
1802
|
|
|
1784
1803
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomJSONDataSource/index.js
|
|
@@ -1786,7 +1805,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1786
1805
|
|
|
1787
1806
|
|
|
1788
1807
|
|
|
1789
|
-
const DicomJSONDataSource_metadataProvider = src
|
|
1808
|
+
const DicomJSONDataSource_metadataProvider = src["default"].classes.MetadataProvider;
|
|
1790
1809
|
const mappings = {
|
|
1791
1810
|
studyInstanceUid: 'StudyInstanceUID',
|
|
1792
1811
|
patientId: 'PatientID'
|
|
@@ -1813,7 +1832,7 @@ function wrapSequences(obj) {
|
|
|
1813
1832
|
acc[key] = obj[key];
|
|
1814
1833
|
}
|
|
1815
1834
|
if (key.endsWith('Sequence')) {
|
|
1816
|
-
acc[key] = src
|
|
1835
|
+
acc[key] = src["default"].utils.addAccessors(acc[key]);
|
|
1817
1836
|
}
|
|
1818
1837
|
return acc;
|
|
1819
1838
|
}, Array.isArray(obj) ? [] : {});
|
|
@@ -2058,14 +2077,14 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
2058
2077
|
return _store.studyInstanceUIDMap.get(url);
|
|
2059
2078
|
}
|
|
2060
2079
|
};
|
|
2061
|
-
return src/* IWebApiDataSource */.
|
|
2080
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2062
2081
|
}
|
|
2063
2082
|
|
|
2064
2083
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomLocalDataSource/index.js
|
|
2065
2084
|
|
|
2066
2085
|
|
|
2067
2086
|
|
|
2068
|
-
const DicomLocalDataSource_metadataProvider = src
|
|
2087
|
+
const DicomLocalDataSource_metadataProvider = src["default"].classes.MetadataProvider;
|
|
2069
2088
|
const {
|
|
2070
2089
|
EVENTS
|
|
2071
2090
|
} = src.DicomMetadataStore;
|
|
@@ -2237,7 +2256,7 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
2237
2256
|
},
|
|
2238
2257
|
store: {
|
|
2239
2258
|
dicom: naturalizedReport => {
|
|
2240
|
-
const reportBlob = dcmjs_es
|
|
2259
|
+
const reportBlob = dcmjs_es["default"].data.datasetToBlob(naturalizedReport);
|
|
2241
2260
|
|
|
2242
2261
|
//Create a URL for the binary.
|
|
2243
2262
|
var objectUrl = URL.createObjectURL(reportBlob);
|
|
@@ -2312,7 +2331,7 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
2312
2331
|
return isStudyInCache ? StudyInstanceUIDsAsArray : [];
|
|
2313
2332
|
}
|
|
2314
2333
|
};
|
|
2315
|
-
return src/* IWebApiDataSource */.
|
|
2334
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2316
2335
|
}
|
|
2317
2336
|
|
|
2318
2337
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebProxyDataSource/index.ts
|
|
@@ -2391,11 +2410,11 @@ function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager) {
|
|
|
2391
2410
|
return studyInstanceUIDs;
|
|
2392
2411
|
}
|
|
2393
2412
|
};
|
|
2394
|
-
return src/* IWebApiDataSource */.
|
|
2413
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2395
2414
|
}
|
|
2396
2415
|
|
|
2397
2416
|
// EXTERNAL MODULE: ../../../node_modules/lodash/lodash.js
|
|
2398
|
-
var lodash = __webpack_require__(
|
|
2417
|
+
var lodash = __webpack_require__(44379);
|
|
2399
2418
|
;// CONCATENATED MODULE: ../../../extensions/default/src/MergeDataSource/index.ts
|
|
2400
2419
|
|
|
2401
2420
|
|
|
@@ -2662,7 +2681,7 @@ function createMergeDataSourceApi(mergeConfig, servicesManager, extensionManager
|
|
|
2662
2681
|
defaultDataSourceName
|
|
2663
2682
|
})
|
|
2664
2683
|
};
|
|
2665
|
-
return src/* IWebApiDataSource */.
|
|
2684
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2666
2685
|
}
|
|
2667
2686
|
|
|
2668
2687
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getDataSourcesModule.js
|
|
@@ -2704,24 +2723,24 @@ function getDataSourcesModule() {
|
|
|
2704
2723
|
}
|
|
2705
2724
|
/* harmony default export */ const src_getDataSourcesModule = (getDataSourcesModule);
|
|
2706
2725
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
2707
|
-
var react = __webpack_require__(
|
|
2726
|
+
var react = __webpack_require__(43001);
|
|
2708
2727
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
2709
|
-
var prop_types = __webpack_require__(
|
|
2728
|
+
var prop_types = __webpack_require__(3827);
|
|
2710
2729
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
2711
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
2712
|
-
var ui_src = __webpack_require__(
|
|
2730
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 784 modules
|
|
2731
|
+
var ui_src = __webpack_require__(38604);
|
|
2713
2732
|
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
2714
|
-
var state = __webpack_require__(
|
|
2733
|
+
var state = __webpack_require__(52490);
|
|
2715
2734
|
// EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
|
|
2716
|
-
var dist = __webpack_require__(
|
|
2735
|
+
var dist = __webpack_require__(62474);
|
|
2717
2736
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
2718
|
-
var es = __webpack_require__(
|
|
2737
|
+
var es = __webpack_require__(69190);
|
|
2719
2738
|
// EXTERNAL MODULE: ../node_modules/react-router/dist/index.js
|
|
2720
|
-
var react_router_dist = __webpack_require__(
|
|
2739
|
+
var react_router_dist = __webpack_require__(85066);
|
|
2721
2740
|
// EXTERNAL MODULE: ../../i18n/src/index.js + 150 modules
|
|
2722
|
-
var i18n_src = __webpack_require__(
|
|
2741
|
+
var i18n_src = __webpack_require__(91629);
|
|
2723
2742
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Toolbar/Toolbar.tsx
|
|
2724
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
2743
|
+
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); }
|
|
2725
2744
|
|
|
2726
2745
|
|
|
2727
2746
|
function Toolbar({
|
|
@@ -2731,7 +2750,7 @@ function Toolbar({
|
|
|
2731
2750
|
const {
|
|
2732
2751
|
toolbarButtons,
|
|
2733
2752
|
onInteraction
|
|
2734
|
-
} = (0,src/* useToolbar */.
|
|
2753
|
+
} = (0,src/* useToolbar */.Sm)({
|
|
2735
2754
|
servicesManager,
|
|
2736
2755
|
buttonSection
|
|
2737
2756
|
});
|
|
@@ -2771,15 +2790,15 @@ const {
|
|
|
2771
2790
|
availableLanguages,
|
|
2772
2791
|
defaultLanguage,
|
|
2773
2792
|
currentLanguage
|
|
2774
|
-
} = i18n_src
|
|
2793
|
+
} = i18n_src["default"];
|
|
2775
2794
|
function ViewerHeader({
|
|
2776
2795
|
hotkeysManager,
|
|
2777
2796
|
extensionManager,
|
|
2778
2797
|
servicesManager,
|
|
2779
2798
|
appConfig
|
|
2780
2799
|
}) {
|
|
2781
|
-
const navigate = (0,dist/* useNavigate */.
|
|
2782
|
-
const location = (0,react_router_dist/* useLocation */.
|
|
2800
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
2801
|
+
const location = (0,react_router_dist/* useLocation */.TH)();
|
|
2783
2802
|
const onClickReturnButton = () => {
|
|
2784
2803
|
const {
|
|
2785
2804
|
pathname
|
|
@@ -2803,22 +2822,22 @@ function ViewerHeader({
|
|
|
2803
2822
|
};
|
|
2804
2823
|
const {
|
|
2805
2824
|
t
|
|
2806
|
-
} = (0,es/* useTranslation
|
|
2825
|
+
} = (0,es/* useTranslation */.$G)();
|
|
2807
2826
|
const {
|
|
2808
2827
|
show,
|
|
2809
2828
|
hide
|
|
2810
|
-
} = (0,ui_src/* useModal */.
|
|
2829
|
+
} = (0,ui_src/* useModal */.dd)();
|
|
2811
2830
|
const {
|
|
2812
2831
|
hotkeyDefinitions,
|
|
2813
2832
|
hotkeyDefaults
|
|
2814
2833
|
} = hotkeysManager;
|
|
2815
|
-
const versionNumber = "3.9.0-beta.
|
|
2816
|
-
const commitHash = "
|
|
2834
|
+
const versionNumber = "3.9.0-beta.47";
|
|
2835
|
+
const commitHash = "71a1e561bf5e3b85a6ff1d91ba1af4d1811dede4";
|
|
2817
2836
|
const menuOptions = [{
|
|
2818
2837
|
title: t('Header:About'),
|
|
2819
2838
|
icon: 'info',
|
|
2820
2839
|
onClick: () => show({
|
|
2821
|
-
content: ui_src/* AboutModal */.
|
|
2840
|
+
content: ui_src/* AboutModal */.tk,
|
|
2822
2841
|
title: t('AboutModal:About OHIF Viewer'),
|
|
2823
2842
|
contentProps: {
|
|
2824
2843
|
versionNumber,
|
|
@@ -2831,7 +2850,7 @@ function ViewerHeader({
|
|
|
2831
2850
|
icon: 'settings',
|
|
2832
2851
|
onClick: () => show({
|
|
2833
2852
|
title: t('UserPreferencesModal:User preferences'),
|
|
2834
|
-
content: ui_src/* UserPreferences */.
|
|
2853
|
+
content: ui_src/* UserPreferences */.i1,
|
|
2835
2854
|
containerDimensions: 'w-[70%] max-w-[900px]',
|
|
2836
2855
|
contentProps: {
|
|
2837
2856
|
hotkeyDefaults: hotkeysManager.getValidHotkeyDefinitions(hotkeyDefaults),
|
|
@@ -2840,8 +2859,8 @@ function ViewerHeader({
|
|
|
2840
2859
|
availableLanguages,
|
|
2841
2860
|
defaultLanguage,
|
|
2842
2861
|
onCancel: () => {
|
|
2843
|
-
src/* hotkeys */.
|
|
2844
|
-
src/* hotkeys */.
|
|
2862
|
+
src/* hotkeys */.dD.stopRecord();
|
|
2863
|
+
src/* hotkeys */.dD.unpause();
|
|
2845
2864
|
hide();
|
|
2846
2865
|
},
|
|
2847
2866
|
onSubmit: ({
|
|
@@ -2849,13 +2868,13 @@ function ViewerHeader({
|
|
|
2849
2868
|
language
|
|
2850
2869
|
}) => {
|
|
2851
2870
|
if (language.value !== currentLanguage().value) {
|
|
2852
|
-
i18n_src
|
|
2871
|
+
i18n_src["default"].changeLanguage(language.value);
|
|
2853
2872
|
}
|
|
2854
2873
|
hotkeysManager.setHotkeys(hotkeyDefinitions);
|
|
2855
2874
|
hide();
|
|
2856
2875
|
},
|
|
2857
2876
|
onReset: () => hotkeysManager.restoreDefaultBindings(),
|
|
2858
|
-
hotkeysModule: src/* hotkeys */.
|
|
2877
|
+
hotkeysModule: src/* hotkeys */.dD
|
|
2859
2878
|
}
|
|
2860
2879
|
})
|
|
2861
2880
|
}];
|
|
@@ -2868,7 +2887,7 @@ function ViewerHeader({
|
|
|
2868
2887
|
}
|
|
2869
2888
|
});
|
|
2870
2889
|
}
|
|
2871
|
-
return /*#__PURE__*/react.createElement(ui_src/* Header */.
|
|
2890
|
+
return /*#__PURE__*/react.createElement(ui_src/* Header */.h4, {
|
|
2872
2891
|
menuOptions: menuOptions,
|
|
2873
2892
|
isReturnEnabled: !!appConfig.showStudyList,
|
|
2874
2893
|
onClickReturnButton: onClickReturnButton,
|
|
@@ -2880,7 +2899,7 @@ function ViewerHeader({
|
|
|
2880
2899
|
buttonSection: "secondary"
|
|
2881
2900
|
}),
|
|
2882
2901
|
appConfig: appConfig
|
|
2883
|
-
}, /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.
|
|
2902
|
+
}, /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.SV, {
|
|
2884
2903
|
context: "Primary Toolbar"
|
|
2885
2904
|
}, /*#__PURE__*/react.createElement("div", {
|
|
2886
2905
|
className: "relative flex justify-center gap-[4px]"
|
|
@@ -2890,7 +2909,7 @@ function ViewerHeader({
|
|
|
2890
2909
|
}
|
|
2891
2910
|
/* harmony default export */ const ViewerLayout_ViewerHeader = (ViewerHeader);
|
|
2892
2911
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Components/SidePanelWithServices.tsx
|
|
2893
|
-
function SidePanelWithServices_extends() { SidePanelWithServices_extends = Object.assign ? Object.assign.bind() : function (
|
|
2912
|
+
function SidePanelWithServices_extends() { return SidePanelWithServices_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; }, SidePanelWithServices_extends.apply(null, arguments); }
|
|
2894
2913
|
|
|
2895
2914
|
|
|
2896
2915
|
const SidePanelWithServices = ({
|
|
@@ -2947,7 +2966,7 @@ const SidePanelWithServices = ({
|
|
|
2947
2966
|
activatePanelSubscription.unsubscribe();
|
|
2948
2967
|
};
|
|
2949
2968
|
}, [tabs, hasBeenOpened, panelService]);
|
|
2950
|
-
return /*#__PURE__*/react.createElement(ui_src/* SidePanel */.
|
|
2969
|
+
return /*#__PURE__*/react.createElement(ui_src/* SidePanel */.hs, SidePanelWithServices_extends({}, props, {
|
|
2951
2970
|
side: side,
|
|
2952
2971
|
tabs: tabs,
|
|
2953
2972
|
activeTabIndex: activeTabIndex,
|
|
@@ -2977,7 +2996,7 @@ function ViewerLayout({
|
|
|
2977
2996
|
leftPanelClosed = false,
|
|
2978
2997
|
rightPanelClosed = false
|
|
2979
2998
|
}) {
|
|
2980
|
-
const [appConfig] = (0,state/* useAppConfig */.
|
|
2999
|
+
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
2981
3000
|
const {
|
|
2982
3001
|
panelService,
|
|
2983
3002
|
hangingProtocolService
|
|
@@ -3015,7 +3034,7 @@ function ViewerLayout({
|
|
|
3015
3034
|
(0,react.useEffect)(() => {
|
|
3016
3035
|
const {
|
|
3017
3036
|
unsubscribe
|
|
3018
|
-
} = hangingProtocolService.subscribe(src/* HangingProtocolService */.
|
|
3037
|
+
} = hangingProtocolService.subscribe(src/* HangingProtocolService */.hy.EVENTS.PROTOCOL_CHANGED,
|
|
3019
3038
|
// Todo: right now to set the loading indicator to false, we need to wait for the
|
|
3020
3039
|
// hangingProtocolService to finish applying the viewport matching to each viewport,
|
|
3021
3040
|
// however, this might not be the only approach to set the loading indicator to false. we need to explore this further.
|
|
@@ -3065,9 +3084,9 @@ function ViewerLayout({
|
|
|
3065
3084
|
style: {
|
|
3066
3085
|
height: 'calc(100vh - 52px'
|
|
3067
3086
|
}
|
|
3068
|
-
}, /*#__PURE__*/react.createElement(react.Fragment, null, showLoadingIndicator && /*#__PURE__*/react.createElement(ui_src/* LoadingIndicatorProgress */.
|
|
3087
|
+
}, /*#__PURE__*/react.createElement(react.Fragment, null, showLoadingIndicator && /*#__PURE__*/react.createElement(ui_src/* LoadingIndicatorProgress */.LE, {
|
|
3069
3088
|
className: "h-full w-full bg-black"
|
|
3070
|
-
}), hasLeftPanels ? /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.
|
|
3089
|
+
}), hasLeftPanels ? /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.SV, {
|
|
3071
3090
|
context: "Left Panel"
|
|
3072
3091
|
}, /*#__PURE__*/react.createElement(Components_SidePanelWithServices, {
|
|
3073
3092
|
side: "left",
|
|
@@ -3077,19 +3096,19 @@ function ViewerLayout({
|
|
|
3077
3096
|
className: "flex h-full flex-1 flex-col"
|
|
3078
3097
|
}, /*#__PURE__*/react.createElement("div", {
|
|
3079
3098
|
className: "relative flex h-full flex-1 items-center justify-center overflow-hidden bg-black"
|
|
3080
|
-
}, /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.
|
|
3099
|
+
}, /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.SV, {
|
|
3081
3100
|
context: "Grid"
|
|
3082
3101
|
}, /*#__PURE__*/react.createElement(ViewportGridComp, {
|
|
3083
3102
|
servicesManager: servicesManager,
|
|
3084
3103
|
viewportComponents: viewportComponents,
|
|
3085
3104
|
commandsManager: commandsManager
|
|
3086
|
-
})))), hasRightPanels ? /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.
|
|
3105
|
+
})))), hasRightPanels ? /*#__PURE__*/react.createElement(ui_src/* ErrorBoundary */.SV, {
|
|
3087
3106
|
context: "Right Panel"
|
|
3088
3107
|
}, /*#__PURE__*/react.createElement(Components_SidePanelWithServices, {
|
|
3089
3108
|
side: "right",
|
|
3090
3109
|
activeTabIndex: rightPanelClosedState ? null : 0,
|
|
3091
3110
|
servicesManager: servicesManager
|
|
3092
|
-
})) : null)), /*#__PURE__*/react.createElement(ui_src/* InvestigationalUseDialog */.
|
|
3111
|
+
})) : null)), /*#__PURE__*/react.createElement(ui_src/* InvestigationalUseDialog */.NE, {
|
|
3093
3112
|
dialogConfiguration: appConfig?.investigationalUseDialog
|
|
3094
3113
|
}));
|
|
3095
3114
|
}
|
|
@@ -3098,7 +3117,7 @@ ViewerLayout.propTypes = {
|
|
|
3098
3117
|
extensionManager: prop_types_default().shape({
|
|
3099
3118
|
getModuleEntry: (prop_types_default()).func.isRequired
|
|
3100
3119
|
}).isRequired,
|
|
3101
|
-
commandsManager: prop_types_default().instanceOf(src/* CommandsManager */.
|
|
3120
|
+
commandsManager: prop_types_default().instanceOf(src/* CommandsManager */.HQ),
|
|
3102
3121
|
servicesManager: (prop_types_default()).object.isRequired,
|
|
3103
3122
|
// From modes
|
|
3104
3123
|
leftPanels: (prop_types_default()).array,
|
|
@@ -3150,7 +3169,8 @@ ViewerLayout.propTypes = {
|
|
|
3150
3169
|
|
|
3151
3170
|
const {
|
|
3152
3171
|
sortStudyInstances,
|
|
3153
|
-
formatDate
|
|
3172
|
+
formatDate,
|
|
3173
|
+
createStudyBrowserTabs
|
|
3154
3174
|
} = src.utils;
|
|
3155
3175
|
|
|
3156
3176
|
/**
|
|
@@ -3169,19 +3189,19 @@ function PanelStudyBrowser({
|
|
|
3169
3189
|
displaySetService,
|
|
3170
3190
|
uiNotificationService
|
|
3171
3191
|
} = servicesManager.services;
|
|
3172
|
-
const navigate = (0,dist/* useNavigate */.
|
|
3192
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
3173
3193
|
|
|
3174
3194
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
3175
3195
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
3176
3196
|
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
|
3177
3197
|
const {
|
|
3178
3198
|
StudyInstanceUIDs
|
|
3179
|
-
} = (0,ui_src/* useImageViewer */.
|
|
3199
|
+
} = (0,ui_src/* useImageViewer */.zG)();
|
|
3180
3200
|
const [{
|
|
3181
3201
|
activeViewportId,
|
|
3182
3202
|
viewports,
|
|
3183
3203
|
isHangingProtocolLayout
|
|
3184
|
-
}, viewportGridService] = (0,ui_src/* useViewportGrid */.
|
|
3204
|
+
}, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
|
|
3185
3205
|
const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
|
|
3186
3206
|
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = (0,react.useState)([...StudyInstanceUIDs]);
|
|
3187
3207
|
const [studyDisplayList, setStudyDisplayList] = (0,react.useState)([]);
|
|
@@ -3332,7 +3352,7 @@ function PanelStudyBrowser({
|
|
|
3332
3352
|
SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
|
|
3333
3353
|
};
|
|
3334
3354
|
}, [StudyInstanceUIDs, thumbnailImageSrcMap, displaySetService]);
|
|
3335
|
-
const tabs =
|
|
3355
|
+
const tabs = createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets);
|
|
3336
3356
|
|
|
3337
3357
|
// TODO: Should not fire this on "close"
|
|
3338
3358
|
function _handleStudyClick(StudyInstanceUID) {
|
|
@@ -3347,7 +3367,7 @@ function PanelStudyBrowser({
|
|
|
3347
3367
|
}
|
|
3348
3368
|
}
|
|
3349
3369
|
const activeDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
|
|
3350
|
-
return /*#__PURE__*/react.createElement(ui_src/* StudyBrowser */.
|
|
3370
|
+
return /*#__PURE__*/react.createElement(ui_src/* StudyBrowser */.eX, {
|
|
3351
3371
|
tabs: tabs,
|
|
3352
3372
|
servicesManager: servicesManager,
|
|
3353
3373
|
activeTabName: activeTabName,
|
|
@@ -3430,51 +3450,6 @@ function _getComponentType(ds) {
|
|
|
3430
3450
|
}
|
|
3431
3451
|
return 'thumbnail';
|
|
3432
3452
|
}
|
|
3433
|
-
|
|
3434
|
-
/**
|
|
3435
|
-
*
|
|
3436
|
-
* @param {string[]} primaryStudyInstanceUIDs
|
|
3437
|
-
* @param {object[]} studyDisplayList
|
|
3438
|
-
* @param {string} studyDisplayList.studyInstanceUid
|
|
3439
|
-
* @param {string} studyDisplayList.date
|
|
3440
|
-
* @param {string} studyDisplayList.description
|
|
3441
|
-
* @param {string} studyDisplayList.modalities
|
|
3442
|
-
* @param {number} studyDisplayList.numInstances
|
|
3443
|
-
* @param {object[]} displaySets
|
|
3444
|
-
* @returns tabs - The prop object expected by the StudyBrowser component
|
|
3445
|
-
*/
|
|
3446
|
-
function _createStudyBrowserTabs(primaryStudyInstanceUIDs, studyDisplayList, displaySets) {
|
|
3447
|
-
const primaryStudies = [];
|
|
3448
|
-
const recentStudies = [];
|
|
3449
|
-
const allStudies = [];
|
|
3450
|
-
studyDisplayList.forEach(study => {
|
|
3451
|
-
const displaySetsForStudy = displaySets.filter(ds => ds.StudyInstanceUID === study.studyInstanceUid);
|
|
3452
|
-
const tabStudy = Object.assign({}, study, {
|
|
3453
|
-
displaySets: displaySetsForStudy
|
|
3454
|
-
});
|
|
3455
|
-
if (primaryStudyInstanceUIDs.includes(study.studyInstanceUid)) {
|
|
3456
|
-
primaryStudies.push(tabStudy);
|
|
3457
|
-
} else {
|
|
3458
|
-
// TODO: Filter allStudies to dates within one year of current date
|
|
3459
|
-
recentStudies.push(tabStudy);
|
|
3460
|
-
allStudies.push(tabStudy);
|
|
3461
|
-
}
|
|
3462
|
-
});
|
|
3463
|
-
const tabs = [{
|
|
3464
|
-
name: 'primary',
|
|
3465
|
-
label: 'Primary',
|
|
3466
|
-
studies: primaryStudies
|
|
3467
|
-
}, {
|
|
3468
|
-
name: 'recent',
|
|
3469
|
-
label: 'Recent',
|
|
3470
|
-
studies: recentStudies
|
|
3471
|
-
}, {
|
|
3472
|
-
name: 'all',
|
|
3473
|
-
label: 'All',
|
|
3474
|
-
studies: allStudies
|
|
3475
|
-
}];
|
|
3476
|
-
return tabs;
|
|
3477
|
-
}
|
|
3478
3453
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Panels/getImageSrcFromImageId.js
|
|
3479
3454
|
/**
|
|
3480
3455
|
* @param {*} cornerstone
|
|
@@ -3579,7 +3554,7 @@ WrappedPanelStudyBrowser.propTypes = {
|
|
|
3579
3554
|
};
|
|
3580
3555
|
/* harmony default export */ const Panels_WrappedPanelStudyBrowser = (WrappedPanelStudyBrowser);
|
|
3581
3556
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
3582
|
-
var lodash_debounce = __webpack_require__(
|
|
3557
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
3583
3558
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
3584
3559
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Panels/createReportDialogPrompt.tsx
|
|
3585
3560
|
|
|
@@ -3649,7 +3624,7 @@ function CreateReportDialogPrompt(uiDialogService, {
|
|
|
3649
3624
|
dialogId = uiDialogService.create({
|
|
3650
3625
|
centralize: true,
|
|
3651
3626
|
isDraggable: false,
|
|
3652
|
-
content: ui_src/* Dialog */.
|
|
3627
|
+
content: ui_src/* Dialog */.Vq,
|
|
3653
3628
|
useLastPosition: false,
|
|
3654
3629
|
showOverlay: true,
|
|
3655
3630
|
contentProps: {
|
|
@@ -3663,11 +3638,11 @@ function CreateReportDialogPrompt(uiDialogService, {
|
|
|
3663
3638
|
actions: [{
|
|
3664
3639
|
id: 'cancel',
|
|
3665
3640
|
text: 'Cancel',
|
|
3666
|
-
type: ui_src/* ButtonEnums.type */.
|
|
3641
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
3667
3642
|
}, {
|
|
3668
3643
|
id: 'save',
|
|
3669
3644
|
text: 'Save',
|
|
3670
|
-
type: ui_src/* ButtonEnums.type */.
|
|
3645
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
3671
3646
|
}],
|
|
3672
3647
|
// TODO: Should be on button press...
|
|
3673
3648
|
onSubmit: _handleFormSubmit,
|
|
@@ -3695,7 +3670,7 @@ function CreateReportDialogPrompt(uiDialogService, {
|
|
|
3695
3670
|
};
|
|
3696
3671
|
return /*#__PURE__*/react.createElement(react.Fragment, null, dataSourcesOpts.length > 1 && window.config?.allowMultiSelectExport && /*#__PURE__*/react.createElement("div", null, /*#__PURE__*/react.createElement("label", {
|
|
3697
3672
|
className: "text-[14px] leading-[1.2] text-white"
|
|
3698
|
-
}, "Data Source"), /*#__PURE__*/react.createElement(ui_src/* Select */.
|
|
3673
|
+
}, "Data Source"), /*#__PURE__*/react.createElement(ui_src/* Select */.Ph, {
|
|
3699
3674
|
closeMenuOnSelect: true,
|
|
3700
3675
|
className: "border-primary-main mt-2 bg-black",
|
|
3701
3676
|
options: dataSourcesOpts,
|
|
@@ -3710,7 +3685,7 @@ function CreateReportDialogPrompt(uiDialogService, {
|
|
|
3710
3685
|
isClearable: false
|
|
3711
3686
|
})), /*#__PURE__*/react.createElement("div", {
|
|
3712
3687
|
className: "mt-3"
|
|
3713
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Input */.
|
|
3688
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Input */.II, {
|
|
3714
3689
|
autoFocus: true,
|
|
3715
3690
|
label: "Enter the report name",
|
|
3716
3691
|
labelClassName: "text-white text-[14px] leading-[1.2]",
|
|
@@ -3860,8 +3835,8 @@ function PanelMeasurementTable({
|
|
|
3860
3835
|
}) {
|
|
3861
3836
|
const {
|
|
3862
3837
|
t
|
|
3863
|
-
} = (0,es/* useTranslation
|
|
3864
|
-
const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.
|
|
3838
|
+
} = (0,es/* useTranslation */.$G)('MeasurementTable');
|
|
3839
|
+
const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
|
|
3865
3840
|
const {
|
|
3866
3841
|
activeViewportId,
|
|
3867
3842
|
viewports
|
|
@@ -3987,7 +3962,7 @@ function PanelMeasurementTable({
|
|
|
3987
3962
|
centralize: true,
|
|
3988
3963
|
isDraggable: false,
|
|
3989
3964
|
showOverlay: true,
|
|
3990
|
-
content: ui_src/* Dialog */.
|
|
3965
|
+
content: ui_src/* Dialog */.Vq,
|
|
3991
3966
|
contentProps: {
|
|
3992
3967
|
title: 'Annotation',
|
|
3993
3968
|
noCloseButton: true,
|
|
@@ -4015,7 +3990,7 @@ function PanelMeasurementTable({
|
|
|
4015
3990
|
});
|
|
4016
3991
|
}
|
|
4017
3992
|
};
|
|
4018
|
-
return /*#__PURE__*/react.createElement(ui_src/* Input */.
|
|
3993
|
+
return /*#__PURE__*/react.createElement(ui_src/* Input */.II, {
|
|
4019
3994
|
label: "Enter your annotation",
|
|
4020
3995
|
labelClassName: "text-white text-[14px] leading-[1.2]",
|
|
4021
3996
|
autoFocus: true,
|
|
@@ -4030,11 +4005,11 @@ function PanelMeasurementTable({
|
|
|
4030
4005
|
actions: [{
|
|
4031
4006
|
id: 'cancel',
|
|
4032
4007
|
text: 'Cancel',
|
|
4033
|
-
type: ui_src/* ButtonEnums.type */.
|
|
4008
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
4034
4009
|
}, {
|
|
4035
4010
|
id: 'save',
|
|
4036
4011
|
text: 'Save',
|
|
4037
|
-
type: ui_src/* ButtonEnums.type */.
|
|
4012
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
4038
4013
|
}],
|
|
4039
4014
|
onSubmit: onSubmitHandler
|
|
4040
4015
|
}
|
|
@@ -4055,7 +4030,7 @@ function PanelMeasurementTable({
|
|
|
4055
4030
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
4056
4031
|
className: "ohif-scrollbar overflow-y-auto overflow-x-hidden",
|
|
4057
4032
|
"data-cy": 'measurements-panel'
|
|
4058
|
-
}, /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.
|
|
4033
|
+
}, /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.wt, {
|
|
4059
4034
|
title: t('Measurements'),
|
|
4060
4035
|
servicesManager: servicesManager,
|
|
4061
4036
|
data: displayMeasurements,
|
|
@@ -4063,7 +4038,7 @@ function PanelMeasurementTable({
|
|
|
4063
4038
|
onEdit: onMeasurementItemEditHandler
|
|
4064
4039
|
})), /*#__PURE__*/react.createElement("div", {
|
|
4065
4040
|
className: "flex justify-center p-4"
|
|
4066
|
-
}, /*#__PURE__*/react.createElement(ui_src/* ActionButtons */.
|
|
4041
|
+
}, /*#__PURE__*/react.createElement(ui_src/* ActionButtons */.EY, {
|
|
4067
4042
|
t: t,
|
|
4068
4043
|
actions: [{
|
|
4069
4044
|
label: 'Export',
|
|
@@ -4133,7 +4108,7 @@ function _mapMeasurementToDisplay(measurement, index, types) {
|
|
|
4133
4108
|
|
|
4134
4109
|
|
|
4135
4110
|
// EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
|
|
4136
|
-
var i18next = __webpack_require__(
|
|
4111
|
+
var i18next = __webpack_require__(73577);
|
|
4137
4112
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getPanelModule.tsx
|
|
4138
4113
|
|
|
4139
4114
|
|
|
@@ -4160,7 +4135,7 @@ function getPanelModule({
|
|
|
4160
4135
|
name: 'seriesList',
|
|
4161
4136
|
iconName: 'tab-studies',
|
|
4162
4137
|
iconLabel: 'Studies',
|
|
4163
|
-
label: i18next/* default */.
|
|
4138
|
+
label: i18next/* default */.Z.t('SidePanel:Studies'),
|
|
4164
4139
|
component: Panels_WrappedPanelStudyBrowser.bind(null, {
|
|
4165
4140
|
commandsManager,
|
|
4166
4141
|
extensionManager,
|
|
@@ -4170,28 +4145,28 @@ function getPanelModule({
|
|
|
4170
4145
|
name: 'measure',
|
|
4171
4146
|
iconName: 'tab-linear',
|
|
4172
4147
|
iconLabel: 'Measure',
|
|
4173
|
-
label: i18next/* default */.
|
|
4174
|
-
secondaryLabel: i18next/* default */.
|
|
4148
|
+
label: i18next/* default */.Z.t('SidePanel:Measurements'),
|
|
4149
|
+
secondaryLabel: i18next/* default */.Z.t('SidePanel:Measurements'),
|
|
4175
4150
|
component: wrappedMeasurementPanel
|
|
4176
4151
|
}];
|
|
4177
4152
|
}
|
|
4178
4153
|
/* harmony default export */ const src_getPanelModule = (getPanelModule);
|
|
4179
4154
|
// EXTERNAL MODULE: ../../core/src/utils/isImage.js
|
|
4180
|
-
var isImage = __webpack_require__(
|
|
4155
|
+
var isImage = __webpack_require__(74440);
|
|
4181
4156
|
// EXTERNAL MODULE: ../../core/src/utils/sopClassDictionary.js
|
|
4182
|
-
var sopClassDictionary = __webpack_require__(
|
|
4157
|
+
var sopClassDictionary = __webpack_require__(66050);
|
|
4183
4158
|
// EXTERNAL MODULE: ../../core/src/classes/ImageSet.ts
|
|
4184
|
-
var ImageSet = __webpack_require__(
|
|
4159
|
+
var ImageSet = __webpack_require__(15337);
|
|
4185
4160
|
// EXTERNAL MODULE: ../../core/src/utils/isDisplaySetReconstructable.js
|
|
4186
|
-
var isDisplaySetReconstructable = __webpack_require__(
|
|
4161
|
+
var isDisplaySetReconstructable = __webpack_require__(74824);
|
|
4187
4162
|
;// CONCATENATED MODULE: ../../../extensions/default/package.json
|
|
4188
|
-
const package_namespaceObject =
|
|
4163
|
+
const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-default"}');
|
|
4189
4164
|
;// CONCATENATED MODULE: ../../../extensions/default/src/id.js
|
|
4190
4165
|
|
|
4191
|
-
const id = package_namespaceObject.
|
|
4166
|
+
const id = package_namespaceObject.u2;
|
|
4192
4167
|
|
|
4193
4168
|
// EXTERNAL MODULE: ../../core/src/utils/sortInstancesByPosition.ts
|
|
4194
|
-
var sortInstancesByPosition = __webpack_require__(
|
|
4169
|
+
var sortInstancesByPosition = __webpack_require__(87134);
|
|
4195
4170
|
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/checkMultiframe.ts
|
|
4196
4171
|
|
|
4197
4172
|
|
|
@@ -4202,18 +4177,18 @@ var sortInstancesByPosition = __webpack_require__(7986);
|
|
|
4202
4177
|
* @param {*} warnings
|
|
4203
4178
|
*/
|
|
4204
4179
|
function checkMultiFrame(multiFrameInstance, messages) {
|
|
4205
|
-
if (!(0,isDisplaySetReconstructable/* hasPixelMeasurements */.
|
|
4206
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4180
|
+
if (!(0,isDisplaySetReconstructable/* hasPixelMeasurements */.hu)(multiFrameInstance)) {
|
|
4181
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_PIXEL_MEASUREMENTS);
|
|
4207
4182
|
}
|
|
4208
|
-
if (!(0,isDisplaySetReconstructable/* hasOrientation */.
|
|
4209
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4183
|
+
if (!(0,isDisplaySetReconstructable/* hasOrientation */.sb)(multiFrameInstance)) {
|
|
4184
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_ORIENTATION);
|
|
4210
4185
|
}
|
|
4211
|
-
if (!(0,isDisplaySetReconstructable/* hasPosition */.
|
|
4212
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4186
|
+
if (!(0,isDisplaySetReconstructable/* hasPosition */.kN)(multiFrameInstance)) {
|
|
4187
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_POSITION_INFORMATION);
|
|
4213
4188
|
}
|
|
4214
4189
|
}
|
|
4215
4190
|
// EXTERNAL MODULE: ../../core/src/utils/toNumber.js
|
|
4216
|
-
var toNumber = __webpack_require__(
|
|
4191
|
+
var toNumber = __webpack_require__(11218);
|
|
4217
4192
|
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImageDimensionsEqual.ts
|
|
4218
4193
|
|
|
4219
4194
|
|
|
@@ -4227,8 +4202,8 @@ function areAllImageDimensionsEqual(instances) {
|
|
|
4227
4202
|
return false;
|
|
4228
4203
|
}
|
|
4229
4204
|
const firstImage = instances[0];
|
|
4230
|
-
const firstImageRows = (0,toNumber/* default */.
|
|
4231
|
-
const firstImageColumns = (0,toNumber/* default */.
|
|
4205
|
+
const firstImageRows = (0,toNumber/* default */.Z)(firstImage.Rows);
|
|
4206
|
+
const firstImageColumns = (0,toNumber/* default */.Z)(firstImage.Columns);
|
|
4232
4207
|
for (let i = 1; i < instances.length; i++) {
|
|
4233
4208
|
const instance = instances[i];
|
|
4234
4209
|
const {
|
|
@@ -4254,7 +4229,7 @@ function areAllImageComponentsEqual(instances) {
|
|
|
4254
4229
|
return false;
|
|
4255
4230
|
}
|
|
4256
4231
|
const firstImage = instances[0];
|
|
4257
|
-
const firstImageSamplesPerPixel = (0,toNumber/* default */.
|
|
4232
|
+
const firstImageSamplesPerPixel = (0,toNumber/* default */.Z)(firstImage.SamplesPerPixel);
|
|
4258
4233
|
for (let i = 1; i < instances.length; i++) {
|
|
4259
4234
|
const instance = instances[i];
|
|
4260
4235
|
const {
|
|
@@ -4280,18 +4255,18 @@ function areAllImageOrientationsEqual(instances) {
|
|
|
4280
4255
|
return false;
|
|
4281
4256
|
}
|
|
4282
4257
|
const firstImage = instances[0];
|
|
4283
|
-
const firstImageOrientationPatient = (0,toNumber/* default */.
|
|
4258
|
+
const firstImageOrientationPatient = (0,toNumber/* default */.Z)(firstImage.ImageOrientationPatient);
|
|
4284
4259
|
for (let i = 1; i < instances.length; i++) {
|
|
4285
4260
|
const instance = instances[i];
|
|
4286
|
-
const imageOrientationPatient = (0,toNumber/* default */.
|
|
4287
|
-
if (!(0,isDisplaySetReconstructable/* _isSameOrientation */.
|
|
4261
|
+
const imageOrientationPatient = (0,toNumber/* default */.Z)(instance.ImageOrientationPatient);
|
|
4262
|
+
if (!(0,isDisplaySetReconstructable/* _isSameOrientation */.NB)(imageOrientationPatient, firstImageOrientationPatient)) {
|
|
4288
4263
|
return false;
|
|
4289
4264
|
}
|
|
4290
4265
|
}
|
|
4291
4266
|
return true;
|
|
4292
4267
|
}
|
|
4293
4268
|
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
|
|
4294
|
-
var esm = __webpack_require__(
|
|
4269
|
+
var esm = __webpack_require__(72076);
|
|
4295
4270
|
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/calculateScanAxisNormal.ts
|
|
4296
4271
|
|
|
4297
4272
|
|
|
@@ -4301,9 +4276,9 @@ var esm = __webpack_require__(44753);
|
|
|
4301
4276
|
* @returns
|
|
4302
4277
|
*/
|
|
4303
4278
|
function calculateScanAxisNormal(imageOrientation) {
|
|
4304
|
-
const rowCosineVec = esm/* vec3.fromValues */.
|
|
4305
|
-
const colCosineVec = esm/* vec3.fromValues */.
|
|
4306
|
-
return esm/* vec3.cross */.
|
|
4279
|
+
const rowCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientation[0], imageOrientation[1], imageOrientation[2]);
|
|
4280
|
+
const colCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientation[3], imageOrientation[4], imageOrientation[5]);
|
|
4281
|
+
return esm/* vec3.cross */.R3.cross(esm/* vec3.create */.R3.create(), rowCosineVec, colCosineVec);
|
|
4307
4282
|
}
|
|
4308
4283
|
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImagePositionsEqual.ts
|
|
4309
4284
|
|
|
@@ -4322,8 +4297,8 @@ function calculateScanAxisNormal(imageOrientation) {
|
|
|
4322
4297
|
function _checkSeriesPositionShift(previousPosition, actualPosition, scanAxisNormal, averageSpacingBetweenFrames) {
|
|
4323
4298
|
// predicted position should be the previous position added by the multiplication
|
|
4324
4299
|
// of the scanAxisNormal and the average spacing between frames
|
|
4325
|
-
const predictedPosition = esm/* vec3.scaleAndAdd */.
|
|
4326
|
-
return esm/* vec3.distance */.
|
|
4300
|
+
const predictedPosition = esm/* vec3.scaleAndAdd */.R3.scaleAndAdd(esm/* vec3.create */.R3.create(), previousPosition, scanAxisNormal, averageSpacingBetweenFrames);
|
|
4301
|
+
return esm/* vec3.distance */.R3.distance(actualPosition, predictedPosition) > averageSpacingBetweenFrames;
|
|
4327
4302
|
}
|
|
4328
4303
|
|
|
4329
4304
|
/**
|
|
@@ -4335,18 +4310,18 @@ function areAllImagePositionsEqual(instances) {
|
|
|
4335
4310
|
if (!instances?.length) {
|
|
4336
4311
|
return false;
|
|
4337
4312
|
}
|
|
4338
|
-
const firstImageOrientationPatient = (0,toNumber/* default */.
|
|
4313
|
+
const firstImageOrientationPatient = (0,toNumber/* default */.Z)(instances[0].ImageOrientationPatient);
|
|
4339
4314
|
if (!firstImageOrientationPatient) {
|
|
4340
4315
|
return false;
|
|
4341
4316
|
}
|
|
4342
4317
|
const scanAxisNormal = calculateScanAxisNormal(firstImageOrientationPatient);
|
|
4343
|
-
const firstImagePositionPatient = (0,toNumber/* default */.
|
|
4344
|
-
const lastIpp = (0,toNumber/* default */.
|
|
4345
|
-
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.
|
|
4318
|
+
const firstImagePositionPatient = (0,toNumber/* default */.Z)(instances[0].ImagePositionPatient);
|
|
4319
|
+
const lastIpp = (0,toNumber/* default */.Z)(instances[instances.length - 1].ImagePositionPatient);
|
|
4320
|
+
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(firstImagePositionPatient, lastIpp) / (instances.length - 1);
|
|
4346
4321
|
let previousImagePositionPatient = firstImagePositionPatient;
|
|
4347
4322
|
for (let i = 1; i < instances.length; i++) {
|
|
4348
4323
|
const instance = instances[i];
|
|
4349
|
-
const imagePositionPatient = (0,toNumber/* default */.
|
|
4324
|
+
const imagePositionPatient = (0,toNumber/* default */.Z)(instance.ImagePositionPatient);
|
|
4350
4325
|
if (_checkSeriesPositionShift(previousImagePositionPatient, imagePositionPatient, scanAxisNormal, averageSpacingBetweenFrames)) {
|
|
4351
4326
|
return false;
|
|
4352
4327
|
}
|
|
@@ -4367,29 +4342,29 @@ function areAllImageSpacingEqual(instances, messages) {
|
|
|
4367
4342
|
if (!instances?.length) {
|
|
4368
4343
|
return;
|
|
4369
4344
|
}
|
|
4370
|
-
const firstImagePositionPatient = (0,toNumber/* default */.
|
|
4345
|
+
const firstImagePositionPatient = (0,toNumber/* default */.Z)(instances[0].ImagePositionPatient);
|
|
4371
4346
|
if (!firstImagePositionPatient) {
|
|
4372
4347
|
return;
|
|
4373
4348
|
}
|
|
4374
|
-
const lastIpp = (0,toNumber/* default */.
|
|
4375
|
-
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.
|
|
4349
|
+
const lastIpp = (0,toNumber/* default */.Z)(instances[instances.length - 1].ImagePositionPatient);
|
|
4350
|
+
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(firstImagePositionPatient, lastIpp) / (instances.length - 1);
|
|
4376
4351
|
let previousImagePositionPatient = firstImagePositionPatient;
|
|
4377
4352
|
const issuesFound = [];
|
|
4378
4353
|
for (let i = 1; i < instances.length; i++) {
|
|
4379
4354
|
const instance = instances[i];
|
|
4380
|
-
const imagePositionPatient = (0,toNumber/* default */.
|
|
4381
|
-
const spacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.
|
|
4382
|
-
const spacingIssue = (0,isDisplaySetReconstructable/* _getSpacingIssue */.
|
|
4355
|
+
const imagePositionPatient = (0,toNumber/* default */.Z)(instance.ImagePositionPatient);
|
|
4356
|
+
const spacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(imagePositionPatient, previousImagePositionPatient);
|
|
4357
|
+
const spacingIssue = (0,isDisplaySetReconstructable/* _getSpacingIssue */.bg)(spacingBetweenFrames, averageSpacingBetweenFrames);
|
|
4383
4358
|
if (spacingIssue) {
|
|
4384
4359
|
const issue = spacingIssue.issue;
|
|
4385
4360
|
|
|
4386
4361
|
// avoid multiple warning of the same thing
|
|
4387
4362
|
if (!issuesFound.includes(issue)) {
|
|
4388
4363
|
issuesFound.push(issue);
|
|
4389
|
-
if (issue === isDisplaySetReconstructable/* reconstructionIssues */.
|
|
4390
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4391
|
-
} else if (issue === isDisplaySetReconstructable/* reconstructionIssues */.
|
|
4392
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4364
|
+
if (issue === isDisplaySetReconstructable/* reconstructionIssues */.e1.MISSING_FRAMES) {
|
|
4365
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MISSING_FRAMES);
|
|
4366
|
+
} else if (issue === isDisplaySetReconstructable/* reconstructionIssues */.e1.IRREGULAR_SPACING) {
|
|
4367
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.IRREGULAR_SPACING);
|
|
4393
4368
|
}
|
|
4394
4369
|
}
|
|
4395
4370
|
// we just want to find issues not how many
|
|
@@ -4416,16 +4391,16 @@ function areAllImageSpacingEqual(instances, messages) {
|
|
|
4416
4391
|
function checkSingleFrames(instances, messages) {
|
|
4417
4392
|
if (instances.length > 2) {
|
|
4418
4393
|
if (!areAllImageDimensionsEqual(instances)) {
|
|
4419
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4394
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_DIMENSIONS);
|
|
4420
4395
|
}
|
|
4421
4396
|
if (!areAllImageComponentsEqual(instances)) {
|
|
4422
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4397
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_COMPONENTS);
|
|
4423
4398
|
}
|
|
4424
4399
|
if (!areAllImageOrientationsEqual(instances)) {
|
|
4425
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4400
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_ORIENTATIONS);
|
|
4426
4401
|
}
|
|
4427
4402
|
if (!areAllImagePositionsEqual(instances)) {
|
|
4428
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4403
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_POSITION_INFORMATION);
|
|
4429
4404
|
}
|
|
4430
4405
|
areAllImageSpacingEqual(instances, messages);
|
|
4431
4406
|
}
|
|
@@ -4442,12 +4417,12 @@ function checkSingleFrames(instances, messages) {
|
|
|
4442
4417
|
* @param {Object[]} instances An array of `OHIFInstanceMetadata` objects.
|
|
4443
4418
|
*/
|
|
4444
4419
|
function getDisplaySetMessages(instances, isReconstructable, isDynamicVolume) {
|
|
4445
|
-
const messages = new src/* DisplaySetMessageList */.
|
|
4420
|
+
const messages = new src/* DisplaySetMessageList */.iK();
|
|
4446
4421
|
if (isDynamicVolume) {
|
|
4447
4422
|
return messages;
|
|
4448
4423
|
}
|
|
4449
4424
|
if (!instances.length) {
|
|
4450
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4425
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NO_VALID_INSTANCES);
|
|
4451
4426
|
return;
|
|
4452
4427
|
}
|
|
4453
4428
|
const firstInstance = instances[0];
|
|
@@ -4460,18 +4435,18 @@ function getDisplaySetMessages(instances, isReconstructable, isDynamicVolume) {
|
|
|
4460
4435
|
if (ImageType?.includes('LOCALIZER')) {
|
|
4461
4436
|
return messages;
|
|
4462
4437
|
}
|
|
4463
|
-
if (!isDisplaySetReconstructable/* constructableModalities */.
|
|
4438
|
+
if (!isDisplaySetReconstructable/* constructableModalities */.M6.includes(Modality)) {
|
|
4464
4439
|
return messages;
|
|
4465
4440
|
}
|
|
4466
4441
|
const isMultiframe = NumberOfFrames > 1;
|
|
4467
4442
|
// Can't reconstruct if all instances don't have the ImagePositionPatient.
|
|
4468
4443
|
if (!isMultiframe && !instances.every(instance => instance.ImagePositionPatient)) {
|
|
4469
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4444
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NO_POSITION_INFORMATION);
|
|
4470
4445
|
}
|
|
4471
|
-
const sortedInstances = (0,sortInstancesByPosition/* default */.
|
|
4446
|
+
const sortedInstances = (0,sortInstancesByPosition/* default */.Z)(instances);
|
|
4472
4447
|
isMultiframe ? checkMultiFrame(sortedInstances[0], messages) : checkSingleFrames(sortedInstances, messages);
|
|
4473
4448
|
if (!isReconstructable) {
|
|
4474
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4449
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NOT_RECONSTRUCTABLE);
|
|
4475
4450
|
}
|
|
4476
4451
|
return messages;
|
|
4477
4452
|
}
|
|
@@ -4482,9 +4457,9 @@ function getDisplaySetMessages(instances, isReconstructable, isDynamicVolume) {
|
|
|
4482
4457
|
* Default handler for a instance list with an unsupported sopClassUID
|
|
4483
4458
|
*/
|
|
4484
4459
|
function getDisplaySetsFromUnsupportedSeries(instances) {
|
|
4485
|
-
const imageSet = new ImageSet/* default */.
|
|
4486
|
-
const messages = new src/* DisplaySetMessageList */.
|
|
4487
|
-
messages.addMessage(src/* DisplaySetMessage */.
|
|
4460
|
+
const imageSet = new ImageSet/* default */.Z(instances);
|
|
4461
|
+
const messages = new src/* DisplaySetMessageList */.iK();
|
|
4462
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.UNSUPPORTED_DISPLAYSET);
|
|
4488
4463
|
const instance = instances[0];
|
|
4489
4464
|
imageSet.setAttributes({
|
|
4490
4465
|
displaySetInstanceUID: imageSet.uid,
|
|
@@ -4634,9 +4609,9 @@ function getDisplaySetInfo(instances) {
|
|
|
4634
4609
|
// O(n) to convert it into a map and O(1) to find each instance
|
|
4635
4610
|
instances.forEach(instance => instancesMap.set(instance.imageId, instance));
|
|
4636
4611
|
const firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId));
|
|
4637
|
-
displaySetInfo = (0,isDisplaySetReconstructable/* default */.
|
|
4612
|
+
displaySetInfo = (0,isDisplaySetReconstructable/* default */.ZP)(firstTimePointInstances, appConfig);
|
|
4638
4613
|
} else {
|
|
4639
|
-
displaySetInfo = (0,isDisplaySetReconstructable/* default */.
|
|
4614
|
+
displaySetInfo = (0,isDisplaySetReconstructable/* default */.ZP)(instances, appConfig);
|
|
4640
4615
|
}
|
|
4641
4616
|
return {
|
|
4642
4617
|
isDynamicVolume,
|
|
@@ -4646,7 +4621,7 @@ function getDisplaySetInfo(instances) {
|
|
|
4646
4621
|
}
|
|
4647
4622
|
const makeDisplaySet = instances => {
|
|
4648
4623
|
const instance = instances[0];
|
|
4649
|
-
const imageSet = new ImageSet/* default */.
|
|
4624
|
+
const imageSet = new ImageSet/* default */.Z(instances);
|
|
4650
4625
|
const {
|
|
4651
4626
|
isDynamicVolume,
|
|
4652
4627
|
value: isReconstructable,
|
|
@@ -4741,7 +4716,7 @@ function getDisplaySetsFromSeries(instances) {
|
|
|
4741
4716
|
const stackableInstances = [];
|
|
4742
4717
|
instances.forEach(instance => {
|
|
4743
4718
|
// All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)
|
|
4744
|
-
if (!(0,isImage/* isImage */.
|
|
4719
|
+
if (!(0,isImage/* isImage */.O)(instance.SOPClassUID) && !instance.Rows) {
|
|
4745
4720
|
return;
|
|
4746
4721
|
}
|
|
4747
4722
|
let displaySet;
|
|
@@ -4777,7 +4752,7 @@ function getDisplaySetsFromSeries(instances) {
|
|
|
4777
4752
|
}
|
|
4778
4753
|
return displaySets;
|
|
4779
4754
|
}
|
|
4780
|
-
const getSopClassHandlerModule_sopClassUids = [sopClassDictionary/* default */.
|
|
4755
|
+
const getSopClassHandlerModule_sopClassUids = [sopClassDictionary/* default */.Z.ComputedRadiographyImageStorage, sopClassDictionary/* default */.Z.DigitalXRayImageStorageForPresentation, sopClassDictionary/* default */.Z.DigitalXRayImageStorageForProcessing, sopClassDictionary/* default */.Z.DigitalMammographyXRayImageStorageForPresentation, sopClassDictionary/* default */.Z.DigitalMammographyXRayImageStorageForProcessing, sopClassDictionary/* default */.Z.DigitalIntraOralXRayImageStorageForPresentation, sopClassDictionary/* default */.Z.DigitalIntraOralXRayImageStorageForProcessing, sopClassDictionary/* default */.Z.CTImageStorage, sopClassDictionary/* default */.Z.EnhancedCTImageStorage, sopClassDictionary/* default */.Z.LegacyConvertedEnhancedCTImageStorage, sopClassDictionary/* default */.Z.UltrasoundMultiframeImageStorage, sopClassDictionary/* default */.Z.MRImageStorage, sopClassDictionary/* default */.Z.EnhancedMRImageStorage, sopClassDictionary/* default */.Z.EnhancedMRColorImageStorage, sopClassDictionary/* default */.Z.LegacyConvertedEnhancedMRImageStorage, sopClassDictionary/* default */.Z.UltrasoundImageStorage, sopClassDictionary/* default */.Z.UltrasoundImageStorageRET, sopClassDictionary/* default */.Z.SecondaryCaptureImageStorage, sopClassDictionary/* default */.Z.MultiframeSingleBitSecondaryCaptureImageStorage, sopClassDictionary/* default */.Z.MultiframeGrayscaleByteSecondaryCaptureImageStorage, sopClassDictionary/* default */.Z.MultiframeGrayscaleWordSecondaryCaptureImageStorage, sopClassDictionary/* default */.Z.MultiframeTrueColorSecondaryCaptureImageStorage, sopClassDictionary/* default */.Z.XRayAngiographicImageStorage, sopClassDictionary/* default */.Z.EnhancedXAImageStorage, sopClassDictionary/* default */.Z.XRayRadiofluoroscopicImageStorage, sopClassDictionary/* default */.Z.EnhancedXRFImageStorage, sopClassDictionary/* default */.Z.XRay3DAngiographicImageStorage, sopClassDictionary/* default */.Z.XRay3DCraniofacialImageStorage, sopClassDictionary/* default */.Z.BreastTomosynthesisImageStorage, sopClassDictionary/* default */.Z.BreastProjectionXRayImageStorageForPresentation, sopClassDictionary/* default */.Z.BreastProjectionXRayImageStorageForProcessing, sopClassDictionary/* default */.Z.IntravascularOpticalCoherenceTomographyImageStorageForPresentation, sopClassDictionary/* default */.Z.IntravascularOpticalCoherenceTomographyImageStorageForProcessing, sopClassDictionary/* default */.Z.NuclearMedicineImageStorage, sopClassDictionary/* default */.Z.VLEndoscopicImageStorage, sopClassDictionary/* default */.Z.VideoEndoscopicImageStorage, sopClassDictionary/* default */.Z.VLMicroscopicImageStorage, sopClassDictionary/* default */.Z.VideoMicroscopicImageStorage, sopClassDictionary/* default */.Z.VLSlideCoordinatesMicroscopicImageStorage, sopClassDictionary/* default */.Z.VLPhotographicImageStorage, sopClassDictionary/* default */.Z.VideoPhotographicImageStorage, sopClassDictionary/* default */.Z.OphthalmicPhotography8BitImageStorage, sopClassDictionary/* default */.Z.OphthalmicPhotography16BitImageStorage, sopClassDictionary/* default */.Z.OphthalmicTomographyImageStorage, sopClassDictionary/* default */.Z.VLWholeSlideMicroscopyImageStorage, sopClassDictionary/* default */.Z.PositronEmissionTomographyImageStorage, sopClassDictionary/* default */.Z.EnhancedPETImageStorage, sopClassDictionary/* default */.Z.LegacyConvertedEnhancedPETImageStorage, sopClassDictionary/* default */.Z.RTImageStorage, sopClassDictionary/* default */.Z.EnhancedUSVolumeStorage];
|
|
4781
4756
|
function getSopClassHandlerModule(appContextParam) {
|
|
4782
4757
|
appContext = appContextParam;
|
|
4783
4758
|
return [{
|
|
@@ -4803,7 +4778,7 @@ function ToolbarDivider() {
|
|
|
4803
4778
|
});
|
|
4804
4779
|
}
|
|
4805
4780
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx
|
|
4806
|
-
function ToolbarLayoutSelector_extends() { ToolbarLayoutSelector_extends = Object.assign ? Object.assign.bind() : function (
|
|
4781
|
+
function ToolbarLayoutSelector_extends() { return ToolbarLayoutSelector_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; }, ToolbarLayoutSelector_extends.apply(null, arguments); }
|
|
4807
4782
|
|
|
4808
4783
|
|
|
4809
4784
|
|
|
@@ -4947,8 +4922,8 @@ function LayoutSelector({
|
|
|
4947
4922
|
const onInteractionHandler = () => {
|
|
4948
4923
|
setIsOpen(!isOpen);
|
|
4949
4924
|
};
|
|
4950
|
-
const DropdownContent = isOpen ? ui_src/* LayoutSelector */.
|
|
4951
|
-
return /*#__PURE__*/react.createElement(ui_src/* ToolbarButton */.
|
|
4925
|
+
const DropdownContent = isOpen ? ui_src/* LayoutSelector */.OF : null;
|
|
4926
|
+
return /*#__PURE__*/react.createElement(ui_src/* ToolbarButton */.hA, {
|
|
4952
4927
|
id: "Layout",
|
|
4953
4928
|
label: "Layout",
|
|
4954
4929
|
icon: "tool-layout",
|
|
@@ -4965,7 +4940,7 @@ function LayoutSelector({
|
|
|
4965
4940
|
className: "text-aqua-pale text-xs"
|
|
4966
4941
|
}, "Common"), /*#__PURE__*/react.createElement("div", {
|
|
4967
4942
|
className: "flex gap-4"
|
|
4968
|
-
}, commonPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.
|
|
4943
|
+
}, commonPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.W6, {
|
|
4969
4944
|
key: index,
|
|
4970
4945
|
classNames: "hover:bg-primary-dark group p-1 cursor-pointer",
|
|
4971
4946
|
icon: preset.icon,
|
|
@@ -4977,7 +4952,7 @@ function LayoutSelector({
|
|
|
4977
4952
|
className: "text-aqua-pale text-xs"
|
|
4978
4953
|
}, "Advanced"), /*#__PURE__*/react.createElement("div", {
|
|
4979
4954
|
className: "flex flex-col gap-2.5"
|
|
4980
|
-
}, advancedPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.
|
|
4955
|
+
}, advancedPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.W6, {
|
|
4981
4956
|
key: index + commonPresets.length,
|
|
4982
4957
|
classNames: "hover:bg-primary-dark group flex gap-2 p-1 cursor-pointer",
|
|
4983
4958
|
icon: preset.icon,
|
|
@@ -5008,7 +4983,7 @@ LayoutSelector.propTypes = {
|
|
|
5008
4983
|
};
|
|
5009
4984
|
/* harmony default export */ const ToolbarLayoutSelector = (ToolbarLayoutSelectorWithServices);
|
|
5010
4985
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Toolbar/ToolbarSplitButtonWithServices.tsx
|
|
5011
|
-
function ToolbarSplitButtonWithServices_extends() { ToolbarSplitButtonWithServices_extends = Object.assign ? Object.assign.bind() : function (
|
|
4986
|
+
function ToolbarSplitButtonWithServices_extends() { return ToolbarSplitButtonWithServices_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; }, ToolbarSplitButtonWithServices_extends.apply(null, arguments); }
|
|
5012
4987
|
|
|
5013
4988
|
|
|
5014
4989
|
|
|
@@ -5037,9 +5012,9 @@ function ToolbarSplitButtonWithServices({
|
|
|
5037
5012
|
});
|
|
5038
5013
|
}
|
|
5039
5014
|
})), []);
|
|
5040
|
-
const PrimaryButtonComponent = toolbarService?.getButtonComponentForUIType(primary.uiType) ?? ui_src/* ToolbarButton */.
|
|
5015
|
+
const PrimaryButtonComponent = toolbarService?.getButtonComponentForUIType(primary.uiType) ?? ui_src/* ToolbarButton */.hA;
|
|
5041
5016
|
const listItemRenderer = renderer;
|
|
5042
|
-
return /*#__PURE__*/react.createElement(ui_src/* SplitButton */.
|
|
5017
|
+
return /*#__PURE__*/react.createElement(ui_src/* SplitButton */.aW, {
|
|
5043
5018
|
primary: primary,
|
|
5044
5019
|
secondary: secondary,
|
|
5045
5020
|
items: getSplitButtonItems(items),
|
|
@@ -5091,7 +5066,7 @@ function ToolbarButtonGroupWithServices({
|
|
|
5091
5066
|
onInteraction,
|
|
5092
5067
|
size
|
|
5093
5068
|
}) {
|
|
5094
|
-
const getSplitButtonItems = (0,react.useCallback)(items => items.map((item, index) => /*#__PURE__*/react.createElement(ui_src/* ToolbarButton */.
|
|
5069
|
+
const getSplitButtonItems = (0,react.useCallback)(items => items.map((item, index) => /*#__PURE__*/react.createElement(ui_src/* ToolbarButton */.hA, {
|
|
5095
5070
|
key: item.id,
|
|
5096
5071
|
icon: item.icon,
|
|
5097
5072
|
label: item.label,
|
|
@@ -5113,7 +5088,7 @@ function ToolbarButtonGroupWithServices({
|
|
|
5113
5088
|
,
|
|
5114
5089
|
toolTipClassName: ""
|
|
5115
5090
|
})), [onInteraction, groupId]);
|
|
5116
|
-
return /*#__PURE__*/react.createElement(ui_src/* ButtonGroup */.
|
|
5091
|
+
return /*#__PURE__*/react.createElement(ui_src/* ButtonGroup */.hE, null, getSplitButtonItems(items));
|
|
5117
5092
|
}
|
|
5118
5093
|
/* harmony default export */ const Toolbar_ToolbarButtonGroupWithServices = (ToolbarButtonGroupWithServices);
|
|
5119
5094
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Components/ProgressDropdownWithService.tsx
|
|
@@ -5191,7 +5166,7 @@ function ProgressDropdownWithService({
|
|
|
5191
5166
|
unsubActiveStepChanged();
|
|
5192
5167
|
};
|
|
5193
5168
|
}, [servicesManager, workflowStepsService]);
|
|
5194
|
-
return /*#__PURE__*/react.createElement(ui_src/* ProgressDropdown */.
|
|
5169
|
+
return /*#__PURE__*/react.createElement(ui_src/* ProgressDropdown */.LU, {
|
|
5195
5170
|
options: dropdownOptions,
|
|
5196
5171
|
value: activeStepId,
|
|
5197
5172
|
onChange: handleDropdownChange
|
|
@@ -5218,7 +5193,7 @@ function getToolbarModule({
|
|
|
5218
5193
|
} = servicesManager.services;
|
|
5219
5194
|
return [{
|
|
5220
5195
|
name: 'ohif.radioGroup',
|
|
5221
|
-
defaultComponent: ui_src/* ToolbarButton */.
|
|
5196
|
+
defaultComponent: ui_src/* ToolbarButton */.hA
|
|
5222
5197
|
}, {
|
|
5223
5198
|
name: 'ohif.divider',
|
|
5224
5199
|
defaultComponent: ToolbarDivider
|
|
@@ -5435,9 +5410,9 @@ function adaptItem(item, subProps) {
|
|
|
5435
5410
|
return newItem;
|
|
5436
5411
|
}
|
|
5437
5412
|
// EXTERNAL MODULE: ../../ui/src/components/ContextMenu/ContextMenu.tsx
|
|
5438
|
-
var ContextMenu = __webpack_require__(
|
|
5413
|
+
var ContextMenu = __webpack_require__(58705);
|
|
5439
5414
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
|
|
5440
|
-
var dist_esm = __webpack_require__(
|
|
5415
|
+
var dist_esm = __webpack_require__(93725);
|
|
5441
5416
|
;// CONCATENATED MODULE: ../../../extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx
|
|
5442
5417
|
var _ContextMenuController;
|
|
5443
5418
|
|
|
@@ -5508,7 +5483,7 @@ class ContextMenuController {
|
|
|
5508
5483
|
preventCutOf: true,
|
|
5509
5484
|
defaultPosition: ContextMenuController._getDefaultPosition(defaultPointsPosition, event?.detail, viewportElement),
|
|
5510
5485
|
event,
|
|
5511
|
-
content: ContextMenu/* default */.
|
|
5486
|
+
content: ContextMenu/* default */.Z,
|
|
5512
5487
|
// This naming is part of the uiDialogService convention
|
|
5513
5488
|
// Clicking outside simply closes the dialog box.
|
|
5514
5489
|
onClickOutside: () => this.services.uiDialogService.dismiss({
|
|
@@ -5656,12 +5631,12 @@ const defaultContextMenu = {
|
|
|
5656
5631
|
|
|
5657
5632
|
|
|
5658
5633
|
// EXTERNAL MODULE: ../../../node_modules/moment/moment.js
|
|
5659
|
-
var moment = __webpack_require__(
|
|
5634
|
+
var moment = __webpack_require__(71271);
|
|
5660
5635
|
var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
|
|
5661
5636
|
// EXTERNAL MODULE: ../../../node_modules/react-window/dist/index.esm.js
|
|
5662
|
-
var index_esm = __webpack_require__(
|
|
5637
|
+
var index_esm = __webpack_require__(94614);
|
|
5663
5638
|
// EXTERNAL MODULE: ../../../node_modules/classnames/index.js
|
|
5664
|
-
var classnames = __webpack_require__(
|
|
5639
|
+
var classnames = __webpack_require__(33901);
|
|
5665
5640
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
5666
5641
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomTagBrowser/DicomTagTable.tsx
|
|
5667
5642
|
|
|
@@ -5835,7 +5810,7 @@ function DicomTagTable({
|
|
|
5835
5810
|
style: {
|
|
5836
5811
|
height: '32rem'
|
|
5837
5812
|
}
|
|
5838
|
-
}, isHeaderRendered() && /*#__PURE__*/react.createElement(index_esm/* VariableSizeList */.
|
|
5813
|
+
}, isHeaderRendered() && /*#__PURE__*/react.createElement(index_esm/* VariableSizeList */.S_, {
|
|
5839
5814
|
ref: listRef,
|
|
5840
5815
|
height: 500,
|
|
5841
5816
|
itemCount: rows.length,
|
|
@@ -5862,7 +5837,7 @@ const {
|
|
|
5862
5837
|
} = src.classes;
|
|
5863
5838
|
const {
|
|
5864
5839
|
DicomMetaDictionary: DicomTagBrowser_DicomMetaDictionary
|
|
5865
|
-
} = dcmjs_es
|
|
5840
|
+
} = dcmjs_es["default"].data;
|
|
5866
5841
|
const {
|
|
5867
5842
|
nameMap
|
|
5868
5843
|
} = DicomTagBrowser_DicomMetaDictionary;
|
|
@@ -5952,12 +5927,12 @@ const DicomTagBrowser = ({
|
|
|
5952
5927
|
className: "mb-6 flex flex-row items-center pl-1"
|
|
5953
5928
|
}, /*#__PURE__*/react.createElement("div", {
|
|
5954
5929
|
className: "flex w-1/2 flex-row items-center"
|
|
5955
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Typography */.
|
|
5930
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Typography */.ZT, {
|
|
5956
5931
|
variant: "subtitle",
|
|
5957
5932
|
className: "mr-4"
|
|
5958
5933
|
}, "Series"), /*#__PURE__*/react.createElement("div", {
|
|
5959
5934
|
className: "mr-8 grow"
|
|
5960
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Select */.
|
|
5935
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Select */.Ph, {
|
|
5961
5936
|
id: "display-set-selector",
|
|
5962
5937
|
isClearable: false,
|
|
5963
5938
|
onChange: onSelectChange,
|
|
@@ -5966,12 +5941,12 @@ const DicomTagBrowser = ({
|
|
|
5966
5941
|
className: "text-white"
|
|
5967
5942
|
}))), /*#__PURE__*/react.createElement("div", {
|
|
5968
5943
|
className: "flex w-1/2 flex-row items-center"
|
|
5969
|
-
}, showInstanceList && /*#__PURE__*/react.createElement(ui_src/* Typography */.
|
|
5944
|
+
}, showInstanceList && /*#__PURE__*/react.createElement(ui_src/* Typography */.ZT, {
|
|
5970
5945
|
variant: "subtitle",
|
|
5971
5946
|
className: "mr-4"
|
|
5972
5947
|
}, "Instance Number"), showInstanceList && /*#__PURE__*/react.createElement("div", {
|
|
5973
5948
|
className: "grow"
|
|
5974
|
-
}, /*#__PURE__*/react.createElement(ui_src/* InputRange */.
|
|
5949
|
+
}, /*#__PURE__*/react.createElement(ui_src/* InputRange */.OX, {
|
|
5975
5950
|
value: instanceNumber,
|
|
5976
5951
|
key: selectedDisplaySetInstanceUID,
|
|
5977
5952
|
onChange: value => {
|
|
@@ -5987,7 +5962,7 @@ const DicomTagBrowser = ({
|
|
|
5987
5962
|
className: "h-1 w-full bg-black"
|
|
5988
5963
|
}), /*#__PURE__*/react.createElement("div", {
|
|
5989
5964
|
className: "my-3 flex w-1/2 flex-row"
|
|
5990
|
-
}, /*#__PURE__*/react.createElement(ui_src/* InputFilterText */.
|
|
5965
|
+
}, /*#__PURE__*/react.createElement(ui_src/* InputFilterText */.Xe, {
|
|
5991
5966
|
className: "mr-8 block w-full",
|
|
5992
5967
|
placeholder: "Search metadata...",
|
|
5993
5968
|
onDebounceChange: setFilterValue
|
|
@@ -6011,7 +5986,7 @@ function getFormattedRowsFromTags(tags, metadata) {
|
|
|
6011
5986
|
} else {
|
|
6012
5987
|
if (tagInfo.vr === 'xs') {
|
|
6013
5988
|
try {
|
|
6014
|
-
const tag = dcmjs_es
|
|
5989
|
+
const tag = dcmjs_es["default"].data.Tag.fromPString(tagInfo.tag).toCleanString();
|
|
6015
5990
|
const originalTagInfo = metadata[tag];
|
|
6016
5991
|
tagInfo.vr = originalTagInfo.vr;
|
|
6017
5992
|
} catch (error) {
|
|
@@ -6333,7 +6308,7 @@ const findViewportsByPosition = (state, {
|
|
|
6333
6308
|
};
|
|
6334
6309
|
/* harmony default export */ const src_findViewportsByPosition = (findViewportsByPosition);
|
|
6335
6310
|
// EXTERNAL MODULE: ./index.js + 35 modules
|
|
6336
|
-
var index = __webpack_require__(
|
|
6311
|
+
var index = __webpack_require__(6317);
|
|
6337
6312
|
;// CONCATENATED MODULE: ../../../extensions/default/src/commandsModule.ts
|
|
6338
6313
|
|
|
6339
6314
|
|
|
@@ -6732,7 +6707,7 @@ const commandsModule = ({
|
|
|
6732
6707
|
* for `replace` is false
|
|
6733
6708
|
*/
|
|
6734
6709
|
navigateHistory(historyArgs) {
|
|
6735
|
-
index/* history */.
|
|
6710
|
+
index/* history */.m.navigate(historyArgs.to, historyArgs.options);
|
|
6736
6711
|
},
|
|
6737
6712
|
openDICOMTagViewer() {
|
|
6738
6713
|
const {
|
|
@@ -6801,12 +6776,7 @@ const commandsModule = ({
|
|
|
6801
6776
|
excludeNonImageModalities
|
|
6802
6777
|
}) => {
|
|
6803
6778
|
const nonImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE'];
|
|
6804
|
-
|
|
6805
|
-
// Sort the display sets as per the hanging protocol service viewport/display set scoring system.
|
|
6806
|
-
// The thumbnail list uses the same sorting.
|
|
6807
|
-
const dsSortFn = hangingProtocolService.getDisplaySetSortFunction();
|
|
6808
6779
|
const currentDisplaySets = [...displaySetService.activeDisplaySets];
|
|
6809
|
-
currentDisplaySets.sort(dsSortFn);
|
|
6810
6780
|
const {
|
|
6811
6781
|
activeViewportId,
|
|
6812
6782
|
viewports,
|
|
@@ -7860,8 +7830,8 @@ function getHangingProtocolModule() {
|
|
|
7860
7830
|
|
|
7861
7831
|
|
|
7862
7832
|
function DataSourceSelector() {
|
|
7863
|
-
const [appConfig] = (0,state/* useAppConfig */.
|
|
7864
|
-
const navigate = (0,dist/* useNavigate */.
|
|
7833
|
+
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
7834
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
7865
7835
|
|
|
7866
7836
|
// This is frowned upon, but the raw config is needed here to provide
|
|
7867
7837
|
// the selector
|
|
@@ -7885,8 +7855,8 @@ function DataSourceSelector() {
|
|
|
7885
7855
|
key: ds.sourceName
|
|
7886
7856
|
}, /*#__PURE__*/react.createElement("h1", {
|
|
7887
7857
|
className: "text-white"
|
|
7888
|
-
}, ds.configuration?.friendlyName || ds.friendlyName), /*#__PURE__*/react.createElement(ui_src/* Button
|
|
7889
|
-
type: ui_src/* ButtonEnums.type */.
|
|
7858
|
+
}, ds.configuration?.friendlyName || ds.friendlyName), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
7859
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
|
|
7890
7860
|
className: classnames_default()('ml-2'),
|
|
7891
7861
|
onClick: () => {
|
|
7892
7862
|
navigate({
|
|
@@ -7909,7 +7879,7 @@ function ItemListComponent({
|
|
|
7909
7879
|
}) {
|
|
7910
7880
|
const {
|
|
7911
7881
|
t
|
|
7912
|
-
} = (0,es/* useTranslation
|
|
7882
|
+
} = (0,es/* useTranslation */.$G)('DataSourceConfiguration');
|
|
7913
7883
|
const [filterValue, setFilterValue] = (0,react.useState)('');
|
|
7914
7884
|
(0,react.useEffect)(() => {
|
|
7915
7885
|
setFilterValue('');
|
|
@@ -7920,18 +7890,18 @@ function ItemListComponent({
|
|
|
7920
7890
|
className: "flex items-center justify-between"
|
|
7921
7891
|
}, /*#__PURE__*/react.createElement("div", {
|
|
7922
7892
|
className: "text-primary-light text-[20px]"
|
|
7923
|
-
}, t(`Select ${itemLabel}`)), /*#__PURE__*/react.createElement(ui_src/* InputFilterText */.
|
|
7893
|
+
}, t(`Select ${itemLabel}`)), /*#__PURE__*/react.createElement(ui_src/* InputFilterText */.Xe, {
|
|
7924
7894
|
className: "max-w-[40%] grow",
|
|
7925
7895
|
value: filterValue,
|
|
7926
7896
|
onDebounceChange: setFilterValue,
|
|
7927
7897
|
placeholder: t(`Search ${itemLabel} list`)
|
|
7928
7898
|
})), /*#__PURE__*/react.createElement("div", {
|
|
7929
7899
|
className: "relative flex min-h-[1px] grow flex-col bg-black text-[14px]"
|
|
7930
|
-
}, itemList == null ? /*#__PURE__*/react.createElement(ui_src/* LoadingIndicatorProgress */.
|
|
7900
|
+
}, itemList == null ? /*#__PURE__*/react.createElement(ui_src/* LoadingIndicatorProgress */.LE, {
|
|
7931
7901
|
className: 'h-full w-full'
|
|
7932
7902
|
}) : itemList.length === 0 ? /*#__PURE__*/react.createElement("div", {
|
|
7933
7903
|
className: "text-primary-light flex h-full flex-col items-center justify-center px-6 py-4"
|
|
7934
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
7904
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
7935
7905
|
name: "magnifier",
|
|
7936
7906
|
className: "mb-4"
|
|
7937
7907
|
}), /*#__PURE__*/react.createElement("span", null, t(`No ${itemLabel} available`))) : /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
@@ -7943,10 +7913,10 @@ function ItemListComponent({
|
|
|
7943
7913
|
return /*#__PURE__*/react.createElement("div", {
|
|
7944
7914
|
className: classnames_default()('hover:text-primary-light hover:bg-primary-dark group mx-2 flex items-center justify-between px-6 py-2', border),
|
|
7945
7915
|
key: item.id
|
|
7946
|
-
}, /*#__PURE__*/react.createElement("div", null, item.name), /*#__PURE__*/react.createElement(ui_src/* Button
|
|
7916
|
+
}, /*#__PURE__*/react.createElement("div", null, item.name), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
7947
7917
|
onClick: () => onItemClicked(item),
|
|
7948
7918
|
className: "invisible group-hover:visible",
|
|
7949
|
-
endIcon: /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
7919
|
+
endIcon: /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
7950
7920
|
name: "arrow-left"
|
|
7951
7921
|
})
|
|
7952
7922
|
}, t('Select')));
|
|
@@ -7967,7 +7937,7 @@ function DataSourceConfigurationModalComponent({
|
|
|
7967
7937
|
}) {
|
|
7968
7938
|
const {
|
|
7969
7939
|
t
|
|
7970
|
-
} = (0,es/* useTranslation
|
|
7940
|
+
} = (0,es/* useTranslation */.$G)('DataSourceConfiguration');
|
|
7971
7941
|
const [itemList, setItemList] = (0,react.useState)();
|
|
7972
7942
|
const [selectedItems, setSelectedItems] = (0,react.useState)(configuredItems);
|
|
7973
7943
|
const [errorMessage, setErrorMessage] = (0,react.useState)();
|
|
@@ -8041,9 +8011,9 @@ function DataSourceConfigurationModalComponent({
|
|
|
8041
8011
|
} : undefined
|
|
8042
8012
|
}, /*#__PURE__*/react.createElement("div", {
|
|
8043
8013
|
className: "text- flex items-center gap-2"
|
|
8044
|
-
}, itemLabelIndex < selectedItems.length ? /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
8014
|
+
}, itemLabelIndex < selectedItems.length ? /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
8045
8015
|
name: "status-tracked"
|
|
8046
|
-
}) : /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
8016
|
+
}) : /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
8047
8017
|
name: "status-untracked"
|
|
8048
8018
|
}), /*#__PURE__*/react.createElement("div", {
|
|
8049
8019
|
className: classnames_default()(NO_WRAP_ELLIPSIS_CLASS_NAMES)
|
|
@@ -8077,11 +8047,11 @@ function DataSourceConfigurationComponent({
|
|
|
8077
8047
|
}) {
|
|
8078
8048
|
const {
|
|
8079
8049
|
t
|
|
8080
|
-
} = (0,es/* useTranslation
|
|
8050
|
+
} = (0,es/* useTranslation */.$G)('DataSourceConfiguration');
|
|
8081
8051
|
const {
|
|
8082
8052
|
show,
|
|
8083
8053
|
hide
|
|
8084
|
-
} = (0,ui_src/* useModal */.
|
|
8054
|
+
} = (0,ui_src/* useModal */.dd)();
|
|
8085
8055
|
const {
|
|
8086
8056
|
customizationService
|
|
8087
8057
|
} = servicesManager.services;
|
|
@@ -8140,7 +8110,7 @@ function DataSourceConfigurationComponent({
|
|
|
8140
8110
|
}, [configurationAPI, configuredItems, showConfigurationModal]);
|
|
8141
8111
|
return configuredItems ? /*#__PURE__*/react.createElement("div", {
|
|
8142
8112
|
className: "text-aqua-pale flex items-center overflow-hidden"
|
|
8143
|
-
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.
|
|
8113
|
+
}, /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
|
|
8144
8114
|
name: "settings",
|
|
8145
8115
|
className: "mr-2.5 h-3.5 w-3.5 shrink-0 cursor-pointer",
|
|
8146
8116
|
onClick: showConfigurationModal
|
|
@@ -8329,6 +8299,8 @@ class GoogleCloudDataSourceConfigurationAPI {
|
|
|
8329
8299
|
|
|
8330
8300
|
|
|
8331
8301
|
|
|
8302
|
+
const getCustomizationModule_formatDate = src.utils.formatDate;
|
|
8303
|
+
|
|
8332
8304
|
/**
|
|
8333
8305
|
*
|
|
8334
8306
|
* Note: this is an example of how the customization module can be used
|
|
@@ -8471,6 +8443,21 @@ function getCustomizationModule({
|
|
|
8471
8443
|
}, {
|
|
8472
8444
|
id: 'progressDropdownWithServiceComponent',
|
|
8473
8445
|
component: ProgressDropdownWithService
|
|
8446
|
+
}, {
|
|
8447
|
+
id: 'studyBrowser.sortFunctions',
|
|
8448
|
+
values: [{
|
|
8449
|
+
label: 'Series Number',
|
|
8450
|
+
sortFunction: (a, b) => {
|
|
8451
|
+
return a?.SeriesNumber - b?.SeriesNumber;
|
|
8452
|
+
}
|
|
8453
|
+
}, {
|
|
8454
|
+
label: 'Series Date',
|
|
8455
|
+
sortFunction: (a, b) => {
|
|
8456
|
+
const dateA = new Date(getCustomizationModule_formatDate(a?.SeriesDate));
|
|
8457
|
+
const dateB = new Date(getCustomizationModule_formatDate(b?.SeriesDate));
|
|
8458
|
+
return dateB.getTime() - dateA.getTime();
|
|
8459
|
+
}
|
|
8460
|
+
}]
|
|
8474
8461
|
}]
|
|
8475
8462
|
}];
|
|
8476
8463
|
}
|
|
@@ -8485,7 +8472,7 @@ const LineChartViewport = ({
|
|
|
8485
8472
|
axis: chartAxis,
|
|
8486
8473
|
series: chartSeries
|
|
8487
8474
|
} = displaySet.instance.chartData;
|
|
8488
|
-
return /*#__PURE__*/react.createElement(ui_src/* LineChart */.
|
|
8475
|
+
return /*#__PURE__*/react.createElement(ui_src/* LineChart */.wW, {
|
|
8489
8476
|
showLegend: true,
|
|
8490
8477
|
legendWidth: 150,
|
|
8491
8478
|
axis: {
|
|
@@ -8523,10 +8510,10 @@ const getViewportModule = ({
|
|
|
8523
8510
|
};
|
|
8524
8511
|
|
|
8525
8512
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/calculate-suv/dist/calculate-suv.esm.js
|
|
8526
|
-
var calculate_suv_esm = __webpack_require__(
|
|
8513
|
+
var calculate_suv_esm = __webpack_require__(15747);
|
|
8527
8514
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getPTImageIdInstanceMetadata.ts
|
|
8528
8515
|
|
|
8529
|
-
const getPTImageIdInstanceMetadata_metadataProvider = src
|
|
8516
|
+
const getPTImageIdInstanceMetadata_metadataProvider = src["default"].classes.MetadataProvider;
|
|
8530
8517
|
function getPTImageIdInstanceMetadata(imageId) {
|
|
8531
8518
|
const dicomMetaData = getPTImageIdInstanceMetadata_metadataProvider.get('instance', imageId);
|
|
8532
8519
|
if (!dicomMetaData) {
|
|
@@ -8782,7 +8769,7 @@ const handlePETImageMetadata = ({
|
|
|
8782
8769
|
if (!instanceMetadataArray.length) {
|
|
8783
8770
|
return;
|
|
8784
8771
|
}
|
|
8785
|
-
const suvScalingFactors = (0,calculate_suv_esm/* calculateSUVScalingFactors */.
|
|
8772
|
+
const suvScalingFactors = (0,calculate_suv_esm/* calculateSUVScalingFactors */.d)(instanceMetadataArray);
|
|
8786
8773
|
instanceMetadataArray.forEach((instanceMetadata, index) => {
|
|
8787
8774
|
init_metadataProvider.addCustomMetadata(imageIds[index], 'scalingModule', suvScalingFactors[index]);
|
|
8788
8775
|
});
|