@ohif/app 3.9.1 → 3.9.2
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/{1185.bundle.023fe7179faaa50019d3.js → 1185.bundle.d328aabb2b43e9ea1f96.js} +62 -14
- package/dist/{1266.bundle.e9abd5c45b5236544151.js → 1266.bundle.46de27eda2ef1fce1243.js} +5 -0
- package/dist/{1436.bundle.773756cd51b69e887bac.js → 1436.bundle.27ae9c87e9fc7f52cad3.js} +234 -63
- package/dist/{1927.bundle.49539e3ab5b0aad1399c.js → 1927.bundle.2b2fa0b539d6ac5b0dc3.js} +1 -1
- package/dist/{3200.bundle.a12825fb5aec200d33e2.js → 3200.bundle.ccb809fb554332d9a0f5.js} +15 -7
- package/dist/{149.bundle.ce5596fc563276036744.js → 3900.bundle.3937999d1ee1f391647a.js} +35 -1
- package/dist/{4571.bundle.3b1691730b3c57bf4d35.js → 4571.bundle.a37be49663df2f4a2c8a.js} +99 -89
- package/dist/{5247.bundle.6dc2a50f21821b2ffdf5.js → 5247.bundle.1a1d7c27de482e4a73f3.js} +2 -2
- package/dist/{5252.bundle.5ec502c53a9cc877ed8d.js → 5252.bundle.f2675336275573a288d5.js} +13 -1
- package/dist/{1520.bundle.97dbd9bfa83148e5334d.js → 5630.bundle.1bd2402f37597078c1a1.js} +70 -59
- package/dist/{5717.bundle.848e13f256818475f57f.js → 5717.bundle.32836c212103dbbe8e4a.js} +247 -64
- package/dist/{7197.bundle.c28453cdb392072d8bf8.js → 7197.bundle.42a975bb7ae4a8df2d00.js} +2 -2
- package/dist/{7955.bundle.6a255705b1ef5906f4a8.js → 7955.bundle.f6c5edb284bdf8b80f2a.js} +1 -1
- package/dist/{8228.bundle.55ac03d7165248f47d4e.js → 8228.bundle.0a7997d04c82dd8c11c5.js} +2 -2
- package/dist/{8523.bundle.648334132159465cdc41.js → 8523.bundle.c0ec85de98ba380ebeb4.js} +55 -13
- package/dist/{9551.bundle.6c260a9869e14dcc3543.js → 9551.bundle.63b2679dd7beee6396d8.js} +1 -1
- package/dist/{app.bundle.d02143bec2df7fec9964.js → app.bundle.632bc6188462e1c95a41.js} +143 -80
- package/dist/app.bundle.css +2 -2
- package/dist/index.html +1 -1
- package/dist/{polySeg.bundle.b79ae514989e86301c71.js → polySeg.bundle.6e85073e3abf2e6e6078.js} +1 -1
- package/dist/serve.json +1 -10
- package/dist/{suv-peak-worker.bundle.31c3b3b957204af93b7e.js → suv-peak-worker.bundle.1f483dc7131d7c26b517.js} +3 -3
- package/dist/sw.js +1 -1
- package/package.json +19 -19
- /package/dist/{1374.bundle.019bbc010eeb66109e8b.js → 1374.bundle.1ee8326c0748c7b1a7c0.js} +0 -0
- /package/dist/{213.bundle.e663335fb0884edde6d8.js → 213.bundle.8c04fecea2e3796e4d73.js} +0 -0
- /package/dist/{2424.bundle.b7da298db43541d3a7c0.js → 2424.bundle.38b19314ebd984c9d393.js} +0 -0
- /package/dist/{2825.bundle.b04c941a87fd580deb6d.js → 2825.bundle.0307cae794e8b057c674.js} +0 -0
- /package/dist/{3198.bundle.c82b7424070ffd02faf1.js → 3198.bundle.ab612063af0d67397377.js} +0 -0
- /package/dist/{4834.bundle.aad44c2628cdefb7a4dd.js → 4834.bundle.c25348524be5214e90d6.js} +0 -0
- /package/dist/{5139.bundle.367a6827071448e2923d.js → 5139.bundle.db30dc02cf41e91c8985.js} +0 -0
- /package/dist/{5687.bundle.5731ec23dd9eb43a083e.js → 5687.bundle.05de4787676bf79f9906.js} +0 -0
- /package/dist/{717.bundle.0f32b7b57347b5141248.js → 717.bundle.3a4b8835adf03e4554c7.js} +0 -0
- /package/dist/{8008.bundle.5bf7b274246be10e2f05.js → 8008.bundle.d4187a30e8f656a21316.js} +0 -0
- /package/dist/{8259.bundle.623c29b26b170a8a085b.js → 8259.bundle.990db2fa9ce0800319e9.js} +0 -0
- /package/dist/{8558.bundle.01d05fd73da5db8e60f9.js → 8558.bundle.63714e2329c22c9cb9da.js} +0 -0
- /package/dist/{9611.bundle.767595c93877e5166c03.js → 9611.bundle.78a4ffb439f65cfd0379.js} +0 -0
- /package/dist/{9862.bundle.7146682e56aa66130ae6.js → 9862.bundle.aa2f8e0010f1be1bc87d.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[3900],{
|
|
2
2
|
|
|
3
3
|
/***/ 97181:
|
|
4
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
@@ -2123,6 +2123,40 @@ function triggerSegmentationRepresentationRemoved(viewportId, segmentationId, ty
|
|
|
2123
2123
|
}
|
|
2124
2124
|
|
|
2125
2125
|
|
|
2126
|
+
/***/ }),
|
|
2127
|
+
|
|
2128
|
+
/***/ 50409:
|
|
2129
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2130
|
+
|
|
2131
|
+
"use strict";
|
|
2132
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2133
|
+
/* harmony export */ B: () => (/* binding */ getColorLUT)
|
|
2134
|
+
/* harmony export */ });
|
|
2135
|
+
/* harmony import */ var _SegmentationStateManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59475);
|
|
2136
|
+
|
|
2137
|
+
function getColorLUT(index) {
|
|
2138
|
+
const segmentationStateManager = _SegmentationStateManager__WEBPACK_IMPORTED_MODULE_0__/* .defaultSegmentationStateManager */ ._6;
|
|
2139
|
+
return segmentationStateManager.getColorLUT(index);
|
|
2140
|
+
}
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
/***/ }),
|
|
2144
|
+
|
|
2145
|
+
/***/ 70906:
|
|
2146
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2147
|
+
|
|
2148
|
+
"use strict";
|
|
2149
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2150
|
+
/* harmony export */ u: () => (/* binding */ getNextColorLUTIndex)
|
|
2151
|
+
/* harmony export */ });
|
|
2152
|
+
/* harmony import */ var _SegmentationStateManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59475);
|
|
2153
|
+
|
|
2154
|
+
function getNextColorLUTIndex() {
|
|
2155
|
+
const segmentationStateManager = _SegmentationStateManager__WEBPACK_IMPORTED_MODULE_0__/* .defaultSegmentationStateManager */ ._6;
|
|
2156
|
+
return segmentationStateManager.getNextColorLUTIndex();
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
|
|
2126
2160
|
/***/ }),
|
|
2127
2161
|
|
|
2128
2162
|
/***/ 33283:
|
|
@@ -1213,6 +1213,10 @@ function getPixelDataTypeFromMinMax(min, max) {
|
|
|
1213
1213
|
}
|
|
1214
1214
|
return pixelDataType || Float32Array;
|
|
1215
1215
|
}
|
|
1216
|
+
function validatePixelDataType(min, max, type) {
|
|
1217
|
+
const pixelDataType = getPixelDataTypeFromMinMax(min, max);
|
|
1218
|
+
return pixelDataType === type;
|
|
1219
|
+
}
|
|
1216
1220
|
|
|
1217
1221
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/shared/isColorImage.js
|
|
1218
1222
|
/* harmony default export */ function isColorImage(photoMetricInterpretation) {
|
|
@@ -1247,87 +1251,12 @@ const imageUtils = {
|
|
|
1247
1251
|
bilinear: bilinear,
|
|
1248
1252
|
replicate: replicate,
|
|
1249
1253
|
};
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
case '1.2.840.10008.1.2.1':
|
|
1257
|
-
decodePromise = decoders_decodeLittleEndian(imageFrame, pixelData);
|
|
1258
|
-
break;
|
|
1259
|
-
case '1.2.840.10008.1.2.2':
|
|
1260
|
-
decodePromise = decoders_decodeBigEndian(imageFrame, pixelData);
|
|
1261
|
-
break;
|
|
1262
|
-
case '1.2.840.10008.1.2.1.99':
|
|
1263
|
-
decodePromise = decoders_decodeLittleEndian(imageFrame, pixelData);
|
|
1264
|
-
break;
|
|
1265
|
-
case '1.2.840.10008.1.2.5':
|
|
1266
|
-
decodePromise = decoders_decodeRLE(imageFrame, pixelData);
|
|
1267
|
-
break;
|
|
1268
|
-
case '1.2.840.10008.1.2.4.50':
|
|
1269
|
-
opts = {
|
|
1270
|
-
...imageFrame,
|
|
1271
|
-
};
|
|
1272
|
-
decodePromise = decodeJPEGBaseline8Bit(pixelData, opts);
|
|
1273
|
-
break;
|
|
1274
|
-
case '1.2.840.10008.1.2.4.51':
|
|
1275
|
-
decodePromise = decodeJPEGBaseline12Bit_js(imageFrame, pixelData);
|
|
1276
|
-
break;
|
|
1277
|
-
case '1.2.840.10008.1.2.4.57':
|
|
1278
|
-
decodePromise = decoders_decodeJPEGLossless(imageFrame, pixelData);
|
|
1279
|
-
break;
|
|
1280
|
-
case '1.2.840.10008.1.2.4.70':
|
|
1281
|
-
decodePromise = decoders_decodeJPEGLossless(imageFrame, pixelData);
|
|
1282
|
-
break;
|
|
1283
|
-
case '1.2.840.10008.1.2.4.80':
|
|
1284
|
-
opts = {
|
|
1285
|
-
signed: imageFrame.pixelRepresentation === 1,
|
|
1286
|
-
bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
|
|
1287
|
-
...imageFrame,
|
|
1288
|
-
};
|
|
1289
|
-
decodePromise = decodeJPEGLS(pixelData, opts);
|
|
1290
|
-
break;
|
|
1291
|
-
case '1.2.840.10008.1.2.4.81':
|
|
1292
|
-
opts = {
|
|
1293
|
-
signed: imageFrame.pixelRepresentation === 1,
|
|
1294
|
-
bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
|
|
1295
|
-
...imageFrame,
|
|
1296
|
-
};
|
|
1297
|
-
decodePromise = decodeJPEGLS(pixelData, opts);
|
|
1298
|
-
break;
|
|
1299
|
-
case '1.2.840.10008.1.2.4.90':
|
|
1300
|
-
opts = {
|
|
1301
|
-
...imageFrame,
|
|
1302
|
-
};
|
|
1303
|
-
decodePromise = decodeJPEG2000(pixelData, opts);
|
|
1304
|
-
break;
|
|
1305
|
-
case '1.2.840.10008.1.2.4.91':
|
|
1306
|
-
opts = {
|
|
1307
|
-
...imageFrame,
|
|
1308
|
-
};
|
|
1309
|
-
decodePromise = decodeJPEG2000(pixelData, opts);
|
|
1310
|
-
break;
|
|
1311
|
-
case '3.2.840.10008.1.2.4.96':
|
|
1312
|
-
case '1.2.840.10008.1.2.4.201':
|
|
1313
|
-
case '1.2.840.10008.1.2.4.202':
|
|
1314
|
-
case '1.2.840.10008.1.2.4.203':
|
|
1315
|
-
opts = {
|
|
1316
|
-
...imageFrame,
|
|
1317
|
-
};
|
|
1318
|
-
decodePromise = decodeHTJ2K(pixelData, opts);
|
|
1319
|
-
break;
|
|
1320
|
-
default:
|
|
1321
|
-
throw new Error(`no decoder for transfer syntax ${transferSyntax}`);
|
|
1322
|
-
}
|
|
1323
|
-
if (!decodePromise) {
|
|
1324
|
-
throw new Error('decodePromise not defined');
|
|
1325
|
-
}
|
|
1326
|
-
const decodedFrame = await decodePromise;
|
|
1327
|
-
const postProcessed = postProcessDecodedPixels(decodedFrame, options, start, decodeConfig);
|
|
1328
|
-
callbackFn?.(postProcessed);
|
|
1329
|
-
return postProcessed;
|
|
1330
|
-
}
|
|
1254
|
+
const typedArrayConstructors = {
|
|
1255
|
+
Uint8Array,
|
|
1256
|
+
Uint16Array,
|
|
1257
|
+
Int16Array,
|
|
1258
|
+
Float32Array,
|
|
1259
|
+
};
|
|
1331
1260
|
function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
|
|
1332
1261
|
const shouldShift = imageFrame.pixelRepresentation !== undefined &&
|
|
1333
1262
|
imageFrame.pixelRepresentation === 1;
|
|
@@ -1342,22 +1271,22 @@ function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
|
|
|
1342
1271
|
let pixelDataArray = imageFrame.pixelData;
|
|
1343
1272
|
imageFrame.pixelDataLength = imageFrame.pixelData.length;
|
|
1344
1273
|
const { min: minBeforeScale, max: maxBeforeScale } = shared_getMinMax(imageFrame.pixelData);
|
|
1345
|
-
const typedArrayConstructors = {
|
|
1346
|
-
Uint8Array,
|
|
1347
|
-
Uint16Array,
|
|
1348
|
-
Int16Array,
|
|
1349
|
-
Float32Array,
|
|
1350
|
-
};
|
|
1351
|
-
const type = options.targetBuffer?.type;
|
|
1352
1274
|
const canRenderFloat = typeof options.allowFloatRendering !== 'undefined'
|
|
1353
1275
|
? options.allowFloatRendering
|
|
1354
1276
|
: true;
|
|
1355
|
-
|
|
1277
|
+
let invalidType = isColorImage(imageFrame.photometricInterpretation) &&
|
|
1356
1278
|
options.targetBuffer?.offset === undefined;
|
|
1357
1279
|
const willScale = options.preScale?.enabled;
|
|
1358
1280
|
const hasFloatRescale = willScale &&
|
|
1359
1281
|
Object.values(options.preScale.scalingParameters).some((v) => typeof v === 'number' && !Number.isInteger(v));
|
|
1360
1282
|
const disableScale = !options.preScale.enabled || (!canRenderFloat && hasFloatRescale);
|
|
1283
|
+
const type = options.targetBuffer?.type;
|
|
1284
|
+
if (type && options.preScale.enabled && !disableScale) {
|
|
1285
|
+
const { rescaleSlope, rescaleIntercept } = options.preScale.scalingParameters;
|
|
1286
|
+
const minAfterScale = rescaleSlope * minBeforeScale + rescaleIntercept;
|
|
1287
|
+
const maxAfterScale = rescaleSlope * maxBeforeScale + rescaleIntercept;
|
|
1288
|
+
invalidType = !validatePixelDataType(minAfterScale, maxAfterScale, type);
|
|
1289
|
+
}
|
|
1361
1290
|
if (type && !invalidType) {
|
|
1362
1291
|
pixelDataArray = _handleTargetBuffer(options, imageFrame, typedArrayConstructors, pixelDataArray);
|
|
1363
1292
|
}
|
|
@@ -1484,6 +1413,87 @@ function scaleImageFrame(imageFrame, targetBuffer, TypedArrayConstructor) {
|
|
|
1484
1413
|
imageFrame.pixelDataLength = imageFrame.pixelData.length;
|
|
1485
1414
|
return imageFrame;
|
|
1486
1415
|
}
|
|
1416
|
+
async function decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options, callbackFn) {
|
|
1417
|
+
const start = new Date().getTime();
|
|
1418
|
+
let decodePromise = null;
|
|
1419
|
+
let opts;
|
|
1420
|
+
switch (transferSyntax) {
|
|
1421
|
+
case '1.2.840.10008.1.2':
|
|
1422
|
+
case '1.2.840.10008.1.2.1':
|
|
1423
|
+
decodePromise = decoders_decodeLittleEndian(imageFrame, pixelData);
|
|
1424
|
+
break;
|
|
1425
|
+
case '1.2.840.10008.1.2.2':
|
|
1426
|
+
decodePromise = decoders_decodeBigEndian(imageFrame, pixelData);
|
|
1427
|
+
break;
|
|
1428
|
+
case '1.2.840.10008.1.2.1.99':
|
|
1429
|
+
decodePromise = decoders_decodeLittleEndian(imageFrame, pixelData);
|
|
1430
|
+
break;
|
|
1431
|
+
case '1.2.840.10008.1.2.5':
|
|
1432
|
+
decodePromise = decoders_decodeRLE(imageFrame, pixelData);
|
|
1433
|
+
break;
|
|
1434
|
+
case '1.2.840.10008.1.2.4.50':
|
|
1435
|
+
opts = {
|
|
1436
|
+
...imageFrame,
|
|
1437
|
+
};
|
|
1438
|
+
decodePromise = decodeJPEGBaseline8Bit(pixelData, opts);
|
|
1439
|
+
break;
|
|
1440
|
+
case '1.2.840.10008.1.2.4.51':
|
|
1441
|
+
decodePromise = decodeJPEGBaseline12Bit_js(imageFrame, pixelData);
|
|
1442
|
+
break;
|
|
1443
|
+
case '1.2.840.10008.1.2.4.57':
|
|
1444
|
+
decodePromise = decoders_decodeJPEGLossless(imageFrame, pixelData);
|
|
1445
|
+
break;
|
|
1446
|
+
case '1.2.840.10008.1.2.4.70':
|
|
1447
|
+
decodePromise = decoders_decodeJPEGLossless(imageFrame, pixelData);
|
|
1448
|
+
break;
|
|
1449
|
+
case '1.2.840.10008.1.2.4.80':
|
|
1450
|
+
opts = {
|
|
1451
|
+
signed: imageFrame.pixelRepresentation === 1,
|
|
1452
|
+
bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
|
|
1453
|
+
...imageFrame,
|
|
1454
|
+
};
|
|
1455
|
+
decodePromise = decodeJPEGLS(pixelData, opts);
|
|
1456
|
+
break;
|
|
1457
|
+
case '1.2.840.10008.1.2.4.81':
|
|
1458
|
+
opts = {
|
|
1459
|
+
signed: imageFrame.pixelRepresentation === 1,
|
|
1460
|
+
bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
|
|
1461
|
+
...imageFrame,
|
|
1462
|
+
};
|
|
1463
|
+
decodePromise = decodeJPEGLS(pixelData, opts);
|
|
1464
|
+
break;
|
|
1465
|
+
case '1.2.840.10008.1.2.4.90':
|
|
1466
|
+
opts = {
|
|
1467
|
+
...imageFrame,
|
|
1468
|
+
};
|
|
1469
|
+
decodePromise = decodeJPEG2000(pixelData, opts);
|
|
1470
|
+
break;
|
|
1471
|
+
case '1.2.840.10008.1.2.4.91':
|
|
1472
|
+
opts = {
|
|
1473
|
+
...imageFrame,
|
|
1474
|
+
};
|
|
1475
|
+
decodePromise = decodeJPEG2000(pixelData, opts);
|
|
1476
|
+
break;
|
|
1477
|
+
case '3.2.840.10008.1.2.4.96':
|
|
1478
|
+
case '1.2.840.10008.1.2.4.201':
|
|
1479
|
+
case '1.2.840.10008.1.2.4.202':
|
|
1480
|
+
case '1.2.840.10008.1.2.4.203':
|
|
1481
|
+
opts = {
|
|
1482
|
+
...imageFrame,
|
|
1483
|
+
};
|
|
1484
|
+
decodePromise = decodeHTJ2K(pixelData, opts);
|
|
1485
|
+
break;
|
|
1486
|
+
default:
|
|
1487
|
+
throw new Error(`no decoder for transfer syntax ${transferSyntax}`);
|
|
1488
|
+
}
|
|
1489
|
+
if (!decodePromise) {
|
|
1490
|
+
throw new Error('decodePromise not defined');
|
|
1491
|
+
}
|
|
1492
|
+
const decodedFrame = await decodePromise;
|
|
1493
|
+
const postProcessed = postProcessDecodedPixels(decodedFrame, options, start, decodeConfig);
|
|
1494
|
+
callbackFn?.(postProcessed);
|
|
1495
|
+
return postProcessed;
|
|
1496
|
+
}
|
|
1487
1497
|
const obj = {
|
|
1488
1498
|
decodeTask({ imageFrame, transferSyntax, decodeConfig, options, pixelData, callbackFn, }) {
|
|
1489
1499
|
return decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options, callbackFn);
|
|
@@ -1379,8 +1379,8 @@ MicroscopyService.REGISTRATION = servicesManager => {
|
|
|
1379
1379
|
|
|
1380
1380
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
1381
1381
|
var dcmjs_es = __webpack_require__(5842);
|
|
1382
|
-
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts +
|
|
1383
|
-
var default_src = __webpack_require__(
|
|
1382
|
+
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 115 modules
|
|
1383
|
+
var default_src = __webpack_require__(55630);
|
|
1384
1384
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/DEVICE_OBSERVER_UID.js
|
|
1385
1385
|
// We need to define a UID for this extension as a device, and it should be the same for all saves:
|
|
1386
1386
|
|
|
@@ -2709,6 +2709,15 @@ const imageRetrieveMetadataProvider = {
|
|
|
2709
2709
|
add: (key, payload) => {
|
|
2710
2710
|
retrieveConfigurationState.set(key, payload);
|
|
2711
2711
|
},
|
|
2712
|
+
clone: () => {
|
|
2713
|
+
return new Map(retrieveConfigurationState);
|
|
2714
|
+
},
|
|
2715
|
+
restore: (state) => {
|
|
2716
|
+
retrieveConfigurationState.clear();
|
|
2717
|
+
state.forEach((value, key) => {
|
|
2718
|
+
retrieveConfigurationState.set(key, value);
|
|
2719
|
+
});
|
|
2720
|
+
},
|
|
2712
2721
|
get: (type, ...queries) => {
|
|
2713
2722
|
if (type === IMAGE_RETRIEVE_CONFIGURATION) {
|
|
2714
2723
|
return queries
|
|
@@ -3633,7 +3642,10 @@ function calculateViewportsSpatialRegistration(viewport1, viewport2) {
|
|
|
3633
3642
|
|
|
3634
3643
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getViewportImageCornersInWorld.js
|
|
3635
3644
|
function getViewportImageCornersInWorld(viewport) {
|
|
3636
|
-
const { imageData, dimensions } = viewport.getImageData();
|
|
3645
|
+
const { imageData, dimensions } = viewport.getImageData() || {};
|
|
3646
|
+
if (!imageData || !dimensions) {
|
|
3647
|
+
return [];
|
|
3648
|
+
}
|
|
3637
3649
|
const { canvas } = viewport;
|
|
3638
3650
|
const ratio = window.devicePixelRatio;
|
|
3639
3651
|
const topLeftCanvas = [0, 0];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[5630],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 55630:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -29,7 +29,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
useHangingProtocolStageIndexStore: () => (/* reexport */ useHangingProtocolStageIndexStore),
|
|
30
30
|
usePatientInfo: () => (/* reexport */ hooks_usePatientInfo),
|
|
31
31
|
useToggleHangingProtocolStore: () => (/* reexport */ useToggleHangingProtocolStore),
|
|
32
|
-
useToggleOneUpViewportGridStore: () => (/* reexport */ useToggleOneUpViewportGridStore
|
|
32
|
+
useToggleOneUpViewportGridStore: () => (/* reexport */ useToggleOneUpViewportGridStore),
|
|
33
33
|
useUIStateStore: () => (/* reexport */ useUIStateStore),
|
|
34
34
|
useViewportGridStore: () => (/* reexport */ useViewportGridStore),
|
|
35
35
|
useViewportsByPositionStore: () => (/* reexport */ useViewportsByPositionStore),
|
|
@@ -1726,23 +1726,35 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
|
|
|
1726
1726
|
naturalizedInstances.forEach(instance => {
|
|
1727
1727
|
instance.wadoRoot = dicomWebConfig.wadoRoot;
|
|
1728
1728
|
instance.wadoUri = dicomWebConfig.wadoUri;
|
|
1729
|
-
const
|
|
1730
|
-
|
|
1731
|
-
|
|
1729
|
+
const {
|
|
1730
|
+
StudyInstanceUID,
|
|
1731
|
+
SeriesInstanceUID,
|
|
1732
|
+
SOPInstanceUID
|
|
1733
|
+
} = instance;
|
|
1734
|
+
const numberOfFrames = instance.NumberOfFrames || 1;
|
|
1735
|
+
// Process all frames consistently, whether single or multiframe
|
|
1736
|
+
for (let i = 0; i < numberOfFrames; i++) {
|
|
1737
|
+
const frameNumber = i + 1;
|
|
1738
|
+
const frameImageId = implementation.getImageIdsForInstance({
|
|
1739
|
+
instance,
|
|
1740
|
+
frame: frameNumber
|
|
1741
|
+
});
|
|
1742
|
+
// Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI.
|
|
1743
|
+
metadataProvider.addImageIdToUIDs(frameImageId, {
|
|
1744
|
+
StudyInstanceUID,
|
|
1745
|
+
SeriesInstanceUID,
|
|
1746
|
+
SOPInstanceUID,
|
|
1747
|
+
frameNumber: numberOfFrames > 1 ? frameNumber : undefined
|
|
1748
|
+
});
|
|
1749
|
+
}
|
|
1732
1750
|
|
|
1733
1751
|
// Adding imageId to each instance
|
|
1734
1752
|
// Todo: This is not the best way I can think of to let external
|
|
1735
1753
|
// metadata handlers know about the imageId that is stored in the store
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
// Adding UIDs to metadataProvider
|
|
1739
|
-
// Note: storing imageURI in metadataProvider since stack viewports
|
|
1740
|
-
// will use the same imageURI
|
|
1741
|
-
metadataProvider.addImageIdToUIDs(imageId, {
|
|
1742
|
-
StudyInstanceUID,
|
|
1743
|
-
SeriesInstanceUID: instance.SeriesInstanceUID,
|
|
1744
|
-
SOPInstanceUID: instance.SOPInstanceUID
|
|
1754
|
+
const imageId = implementation.getImageIdsForInstance({
|
|
1755
|
+
instance
|
|
1745
1756
|
});
|
|
1757
|
+
instance.imageId = imageId;
|
|
1746
1758
|
});
|
|
1747
1759
|
src/* DicomMetadataStore */.H8.addInstances(naturalizedInstances, madeInClient);
|
|
1748
1760
|
}
|
|
@@ -1964,7 +1976,7 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
1964
1976
|
query
|
|
1965
1977
|
} = query_string.parseUrl(instance.url);
|
|
1966
1978
|
|
|
1967
|
-
// Add imageId specific mapping to this data as the URL isn't
|
|
1979
|
+
// Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI.
|
|
1968
1980
|
DicomJSONDataSource_metadataProvider.addImageIdToUIDs(imageId, {
|
|
1969
1981
|
StudyInstanceUID,
|
|
1970
1982
|
SeriesInstanceUID,
|
|
@@ -2322,8 +2334,7 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
2322
2334
|
const {
|
|
2323
2335
|
SeriesInstanceUID
|
|
2324
2336
|
} = aSeries;
|
|
2325
|
-
|
|
2326
|
-
aSeries.instances.forEach((instance, index) => {
|
|
2337
|
+
aSeries.instances.forEach(instance => {
|
|
2327
2338
|
const {
|
|
2328
2339
|
url: imageId,
|
|
2329
2340
|
StudyInstanceUID,
|
|
@@ -2331,14 +2342,22 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
2331
2342
|
SOPInstanceUID
|
|
2332
2343
|
} = instance;
|
|
2333
2344
|
instance.imageId = imageId;
|
|
2334
|
-
|
|
2335
|
-
//
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2345
|
+
const numberOfFrames = instance.NumberOfFrames || 1;
|
|
2346
|
+
// Process all frames consistently, whether single or multiframe
|
|
2347
|
+
for (let i = 0; i < numberOfFrames; i++) {
|
|
2348
|
+
const frameNumber = i + 1;
|
|
2349
|
+
const frameImageId = implementation.getImageIdsForInstance({
|
|
2350
|
+
instance,
|
|
2351
|
+
frame: frameNumber
|
|
2352
|
+
});
|
|
2353
|
+
// Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI.
|
|
2354
|
+
DicomLocalDataSource_metadataProvider.addImageIdToUIDs(frameImageId, {
|
|
2355
|
+
StudyInstanceUID,
|
|
2356
|
+
SeriesInstanceUID,
|
|
2357
|
+
SOPInstanceUID,
|
|
2358
|
+
frameNumber: numberOfFrames > 1 ? frameNumber : undefined
|
|
2359
|
+
});
|
|
2360
|
+
}
|
|
2342
2361
|
});
|
|
2343
2362
|
src/* DicomMetadataStore */.H8._broadcastEvent(EVENTS.INSTANCES_ADDED, {
|
|
2344
2363
|
StudyInstanceUID,
|
|
@@ -2388,9 +2407,12 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
2388
2407
|
instance,
|
|
2389
2408
|
frame
|
|
2390
2409
|
}) {
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2410
|
+
// Important: Never use instance.imageId because it might be multiframe,
|
|
2411
|
+
// which would make it an invalid imageId.
|
|
2412
|
+
// if (instance.imageId) {
|
|
2413
|
+
// return instance.imageId;
|
|
2414
|
+
// }
|
|
2415
|
+
|
|
2394
2416
|
const {
|
|
2395
2417
|
StudyInstanceUID,
|
|
2396
2418
|
SeriesInstanceUID,
|
|
@@ -3056,8 +3078,8 @@ function ViewerHeader({
|
|
|
3056
3078
|
hotkeyDefinitions,
|
|
3057
3079
|
hotkeyDefaults
|
|
3058
3080
|
} = hotkeysManager;
|
|
3059
|
-
const versionNumber = "3.9.
|
|
3060
|
-
const commitHash = "
|
|
3081
|
+
const versionNumber = "3.9.2";
|
|
3082
|
+
const commitHash = "e5286d9fc2449da50b738e7e6208d489cce1633e";
|
|
3061
3083
|
const menuOptions = [{
|
|
3062
3084
|
title: t('Header:About'),
|
|
3063
3085
|
icon: 'info',
|
|
@@ -6495,8 +6517,21 @@ const createToggleHangingProtocolStore = set => ({
|
|
|
6495
6517
|
const useToggleHangingProtocolStore = (0,zustand_esm/* create */.vt)()(useToggleHangingProtocolStore_DEBUG_STORE ? (0,middleware/* devtools */.lt)(createToggleHangingProtocolStore, {
|
|
6496
6518
|
name: 'ToggleHangingProtocolStore'
|
|
6497
6519
|
}) : createToggleHangingProtocolStore);
|
|
6498
|
-
|
|
6499
|
-
|
|
6520
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/stores/useToggleOneUpViewportGridStore.ts
|
|
6521
|
+
|
|
6522
|
+
const useToggleOneUpViewportGridStore_PRESENTATION_TYPE_ID = 'toggleOneUpViewportGridId';
|
|
6523
|
+
// Stores the entire ViewportGridService getState when toggling to one up
|
|
6524
|
+
// (e.g. via a double click) so that it can be restored when toggling back.
|
|
6525
|
+
const useToggleOneUpViewportGridStore = (0,zustand_esm/* create */.vt)(set => ({
|
|
6526
|
+
toggleOneUpViewportGridStore: null,
|
|
6527
|
+
type: useToggleOneUpViewportGridStore_PRESENTATION_TYPE_ID,
|
|
6528
|
+
setToggleOneUpViewportGridStore: state => set({
|
|
6529
|
+
toggleOneUpViewportGridStore: state
|
|
6530
|
+
}),
|
|
6531
|
+
clearToggleOneUpViewportGridStore: () => set({
|
|
6532
|
+
toggleOneUpViewportGridStore: null
|
|
6533
|
+
})
|
|
6534
|
+
}));
|
|
6500
6535
|
;// CONCATENATED MODULE: ../../../extensions/default/src/commandsModule.ts
|
|
6501
6536
|
|
|
6502
6537
|
|
|
@@ -6798,7 +6833,7 @@ const commandsModule = ({
|
|
|
6798
6833
|
// The viewer is in one-up. Check if there is a state to restore/toggle back to.
|
|
6799
6834
|
const {
|
|
6800
6835
|
toggleOneUpViewportGridStore
|
|
6801
|
-
} = useToggleOneUpViewportGridStore
|
|
6836
|
+
} = useToggleOneUpViewportGridStore.getState();
|
|
6802
6837
|
if (!toggleOneUpViewportGridStore) {
|
|
6803
6838
|
return;
|
|
6804
6839
|
}
|
|
@@ -6854,7 +6889,7 @@ const commandsModule = ({
|
|
|
6854
6889
|
// Store the current viewport grid state so we can toggle it back later.
|
|
6855
6890
|
const {
|
|
6856
6891
|
setToggleOneUpViewportGridStore
|
|
6857
|
-
} = useToggleOneUpViewportGridStore
|
|
6892
|
+
} = useToggleOneUpViewportGridStore.getState();
|
|
6858
6893
|
setToggleOneUpViewportGridStore(viewportGridState);
|
|
6859
6894
|
|
|
6860
6895
|
// one being toggled to one up.
|
|
@@ -9620,30 +9655,6 @@ const defaultExtension = {
|
|
|
9620
9655
|
/* harmony default export */ const default_src = (defaultExtension);
|
|
9621
9656
|
|
|
9622
9657
|
|
|
9623
|
-
/***/ }),
|
|
9624
|
-
|
|
9625
|
-
/***/ 73325:
|
|
9626
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9627
|
-
|
|
9628
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9629
|
-
/* harmony export */ Y: () => (/* binding */ useToggleOneUpViewportGridStore)
|
|
9630
|
-
/* harmony export */ });
|
|
9631
|
-
/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(95759);
|
|
9632
|
-
|
|
9633
|
-
const PRESENTATION_TYPE_ID = 'toggleOneUpViewportGridId';
|
|
9634
|
-
// Stores the entire ViewportGridService getState when toggling to one up
|
|
9635
|
-
// (e.g. via a double click) so that it can be restored when toggling back.
|
|
9636
|
-
const useToggleOneUpViewportGridStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__/* .create */ .vt)(set => ({
|
|
9637
|
-
toggleOneUpViewportGridStore: null,
|
|
9638
|
-
type: PRESENTATION_TYPE_ID,
|
|
9639
|
-
setToggleOneUpViewportGridStore: state => set({
|
|
9640
|
-
toggleOneUpViewportGridStore: state
|
|
9641
|
-
}),
|
|
9642
|
-
clearToggleOneUpViewportGridStore: () => set({
|
|
9643
|
-
toggleOneUpViewportGridStore: null
|
|
9644
|
-
})
|
|
9645
|
-
}));
|
|
9646
|
-
|
|
9647
9658
|
/***/ })
|
|
9648
9659
|
|
|
9649
9660
|
}]);
|