@ohif/app 3.9.1 → 3.9.3

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.
Files changed (51) hide show
  1. package/dist/{1185.bundle.023fe7179faaa50019d3.js → 1185.bundle.9f4c770baf52abcf3c6d.js} +120 -53
  2. package/dist/{1266.bundle.e9abd5c45b5236544151.js → 1266.bundle.0097d9c4ba974905a833.js} +8 -3
  3. package/dist/{1374.bundle.019bbc010eeb66109e8b.js → 1374.bundle.2e1fa65e28731d98969a.js} +2 -2
  4. package/dist/{1436.bundle.773756cd51b69e887bac.js → 1436.bundle.be39664239aa2bbca527.js} +234 -274
  5. package/dist/{1927.bundle.49539e3ab5b0aad1399c.js → 1927.bundle.2b2fa0b539d6ac5b0dc3.js} +1 -1
  6. package/dist/{213.bundle.e663335fb0884edde6d8.js → 213.bundle.c0c23f7fd4b66d78d0fe.js} +2 -2
  7. package/dist/{5807.bundle.dac5ce36534a71c77723.js → 2343.bundle.f096450c21417279d4cc.js} +270 -1
  8. package/dist/{2424.bundle.b7da298db43541d3a7c0.js → 2424.bundle.d73e8d67dc2aace299d2.js} +2 -2
  9. package/dist/{2701.bundle.8c1ff2e0faaa7d2f4716.js → 2701.bundle.c8271fa4986a45fea350.js} +17 -24
  10. package/dist/{2825.bundle.b04c941a87fd580deb6d.js → 2825.bundle.0612b1b8ab3e8ee01b93.js} +1 -1
  11. package/dist/{3198.bundle.c82b7424070ffd02faf1.js → 3198.bundle.7a18515cfe4113417251.js} +10 -6
  12. package/dist/{3200.bundle.a12825fb5aec200d33e2.js → 3200.bundle.e46dca03aa824998973a.js} +18 -10
  13. package/dist/3326.bundle.d01046d6c2c31654c125.js +265 -0
  14. package/dist/{149.bundle.ce5596fc563276036744.js → 3900.bundle.0e4e29374e221b260ed1.js} +35 -59
  15. package/dist/{8295.bundle.4ecb27f9e58526f12bcb.js → 3902.bundle.8ae7b2e27f760af997dd.js} +20 -1
  16. package/dist/3902.css +2 -0
  17. package/dist/{4202.bundle.5c8120ed4841da0af211.js → 4202.bundle.497702023d73202f4f39.js} +2 -1
  18. package/dist/{3121.bundle.d3e7092e305cf6cecdb5.js → 4438.bundle.a945f803d0eeb11d081f.js} +24 -4
  19. package/dist/{4571.bundle.3b1691730b3c57bf4d35.js → 4571.bundle.a37be49663df2f4a2c8a.js} +99 -89
  20. package/dist/4759.bundle.1e982897292fc19ecd7c.js +265 -0
  21. package/dist/{4834.bundle.aad44c2628cdefb7a4dd.js → 4834.bundle.92ba088cc62a6b791000.js} +2 -2
  22. package/dist/{5139.bundle.367a6827071448e2923d.js → 5139.bundle.70d3be7dd1896f245d7b.js} +3 -3
  23. package/dist/{5247.bundle.6dc2a50f21821b2ffdf5.js → 5247.bundle.4e8669e41fd28813e643.js} +5 -5
  24. package/dist/{5252.bundle.5ec502c53a9cc877ed8d.js → 5252.bundle.f2675336275573a288d5.js} +13 -1
  25. package/dist/{1520.bundle.97dbd9bfa83148e5334d.js → 5630.bundle.44d0ca81d77b7ae5193b.js} +63 -58
  26. package/dist/{5687.bundle.5731ec23dd9eb43a083e.js → 5687.bundle.50b800a714486557b243.js} +5 -5
  27. package/dist/{5717.bundle.848e13f256818475f57f.js → 5717.bundle.9218cb67ad1994cd1a99.js} +305 -64
  28. package/dist/{3970.bundle.31942cc0c12a008e7ba0.js → 5758.bundle.cd1599b81bdb1f735f9d.js} +270 -1
  29. package/dist/{717.bundle.0f32b7b57347b5141248.js → 7013.bundle.979d3a29f6142e8c1290.js} +264 -4
  30. package/dist/7013.css +4 -0
  31. package/dist/{7197.bundle.c28453cdb392072d8bf8.js → 7197.bundle.30f8969751309ab5235c.js} +6 -6
  32. package/dist/{7955.bundle.6a255705b1ef5906f4a8.js → 7955.bundle.9264a10437f0a67e6057.js} +3 -3
  33. package/dist/{8008.bundle.5bf7b274246be10e2f05.js → 8008.bundle.6772a210a995b568f8d0.js} +2 -2
  34. package/dist/{8228.bundle.55ac03d7165248f47d4e.js → 8228.bundle.2c1e61eec1f9f4b3b613.js} +8 -26
  35. package/dist/{8259.bundle.623c29b26b170a8a085b.js → 8259.bundle.9cf9ef151893ede068bb.js} +2 -2
  36. package/dist/{8523.bundle.648334132159465cdc41.js → 8523.bundle.c0ec85de98ba380ebeb4.js} +55 -13
  37. package/dist/{8558.bundle.01d05fd73da5db8e60f9.js → 8558.bundle.9c22f000a404f1006a41.js} +10 -5
  38. package/dist/{9551.bundle.6c260a9869e14dcc3543.js → 9551.bundle.3507bb1d4353df13bf3a.js} +3 -3
  39. package/dist/{9611.bundle.767595c93877e5166c03.js → 9611.bundle.9f1aa9041196d77f2b7e.js} +2 -2
  40. package/dist/{app.bundle.d02143bec2df7fec9964.js → app.bundle.9af5a6d7ff3a778d05b7.js} +278 -150
  41. package/dist/app.bundle.css +2 -2
  42. package/dist/index.html +1 -1
  43. package/dist/{polySeg.bundle.b79ae514989e86301c71.js → polySeg.bundle.6e85073e3abf2e6e6078.js} +1 -1
  44. package/dist/serve.json +1 -10
  45. package/dist/{suv-peak-worker.bundle.31c3b3b957204af93b7e.js → suv-peak-worker.bundle.e2e8e46de3e958a1a3db.js} +3 -3
  46. package/dist/sw.js +1 -1
  47. package/package.json +19 -19
  48. /package/dist/{1801.css → 3326.css} +0 -0
  49. /package/dist/{717.css → 4438.css} +0 -0
  50. /package/dist/{2591.css → 4759.css} +0 -0
  51. /package/dist/{9862.bundle.7146682e56aa66130ae6.js → 9862.bundle.aa2f8e0010f1be1bc87d.js} +0 -0
@@ -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
- async function decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options, callbackFn) {
1251
- const start = new Date().getTime();
1252
- let decodePromise = null;
1253
- let opts;
1254
- switch (transferSyntax) {
1255
- case '1.2.840.10008.1.2':
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
- const invalidType = isColorImage(imageFrame.photometricInterpretation) &&
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);
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[4759],{
3
+
4
+ /***/ 75183:
5
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
+
7
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
9
+ /* harmony export */ });
10
+ var ChangeTypes;
11
+ (function (ChangeTypes) {
12
+ ChangeTypes["Interaction"] = "Interaction";
13
+ ChangeTypes["HandlesUpdated"] = "HandlesUpdated";
14
+ ChangeTypes["StatsUpdated"] = "StatsUpdated";
15
+ ChangeTypes["InitialSetup"] = "InitialSetup";
16
+ ChangeTypes["Completed"] = "Completed";
17
+ ChangeTypes["InterpolationUpdated"] = "InterpolationUpdated";
18
+ })(ChangeTypes || (ChangeTypes = {}));
19
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChangeTypes);
20
+
21
+
22
+ /***/ }),
23
+
24
+ /***/ 94021:
25
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26
+
27
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
29
+ /* harmony export */ });
30
+ var Events;
31
+ (function (Events) {
32
+ Events["TOOL_ACTIVATED"] = "CORNERSTONE_TOOLS_TOOL_ACTIVATED";
33
+ Events["TOOLGROUP_VIEWPORT_ADDED"] = "CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_ADDED";
34
+ Events["TOOLGROUP_VIEWPORT_REMOVED"] = "CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED";
35
+ Events["TOOL_MODE_CHANGED"] = "CORNERSTONE_TOOLS_TOOL_MODE_CHANGED";
36
+ Events["ANNOTATION_ADDED"] = "CORNERSTONE_TOOLS_ANNOTATION_ADDED";
37
+ Events["ANNOTATION_COMPLETED"] = "CORNERSTONE_TOOLS_ANNOTATION_COMPLETED";
38
+ Events["ANNOTATION_MODIFIED"] = "CORNERSTONE_TOOLS_ANNOTATION_MODIFIED";
39
+ Events["ANNOTATION_REMOVED"] = "CORNERSTONE_TOOLS_ANNOTATION_REMOVED";
40
+ Events["ANNOTATION_SELECTION_CHANGE"] = "CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE";
41
+ Events["ANNOTATION_LOCK_CHANGE"] = "CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE";
42
+ Events["ANNOTATION_VISIBILITY_CHANGE"] = "CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE";
43
+ Events["ANNOTATION_RENDERED"] = "CORNERSTONE_TOOLS_ANNOTATION_RENDERED";
44
+ Events["ANNOTATION_INTERPOLATION_PROCESS_COMPLETED"] = "CORNERSTONE_TOOLS_ANNOTATION_INTERPOLATION_PROCESS_COMPLETED";
45
+ Events["INTERPOLATED_ANNOTATIONS_REMOVED"] = "CORNERSTONE_TOOLS_INTERPOLATED_ANNOTATIONS_REMOVED";
46
+ Events["SEGMENTATION_MODIFIED"] = "CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED";
47
+ Events["SEGMENTATION_RENDERED"] = "CORNERSTONE_TOOLS_SEGMENTATION_RENDERED";
48
+ Events["SEGMENTATION_REPRESENTATION_ADDED"] = "CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_ADDED";
49
+ Events["SEGMENTATION_ADDED"] = "CORNERSTONE_TOOLS_SEGMENTATION_ADDED";
50
+ Events["SEGMENTATION_REPRESENTATION_MODIFIED"] = "CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED";
51
+ Events["SEGMENTATION_REMOVED"] = "CORNERSTONE_TOOLS_SEGMENTATION_REMOVED";
52
+ Events["SEGMENTATION_REPRESENTATION_REMOVED"] = "CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED";
53
+ Events["SEGMENTATION_DATA_MODIFIED"] = "CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED";
54
+ Events["KEY_DOWN"] = "CORNERSTONE_TOOLS_KEY_DOWN";
55
+ Events["KEY_UP"] = "CORNERSTONE_TOOLS_KEY_UP";
56
+ Events["MOUSE_DOWN"] = "CORNERSTONE_TOOLS_MOUSE_DOWN";
57
+ Events["MOUSE_UP"] = "CORNERSTONE_TOOLS_MOUSE_UP";
58
+ Events["MOUSE_DOWN_ACTIVATE"] = "CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE";
59
+ Events["MOUSE_DRAG"] = "CORNERSTONE_TOOLS_MOUSE_DRAG";
60
+ Events["MOUSE_MOVE"] = "CORNERSTONE_TOOLS_MOUSE_MOVE";
61
+ Events["MOUSE_CLICK"] = "CORNERSTONE_TOOLS_MOUSE_CLICK";
62
+ Events["MOUSE_DOUBLE_CLICK"] = "CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK";
63
+ Events["MOUSE_WHEEL"] = "CORNERSTONE_TOOLS_MOUSE_WHEEL";
64
+ Events["TOUCH_START"] = "CORNERSTONE_TOOLS_TOUCH_START";
65
+ Events["TOUCH_START_ACTIVATE"] = "CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE";
66
+ Events["TOUCH_PRESS"] = "CORNERSTONE_TOOLS_TOUCH_PRESS";
67
+ Events["TOUCH_DRAG"] = "CORNERSTONE_TOOLS_TOUCH_DRAG";
68
+ Events["TOUCH_END"] = "CORNERSTONE_TOOLS_TOUCH_END";
69
+ Events["TOUCH_TAP"] = "CORNERSTONE_TOOLS_TAP";
70
+ Events["TOUCH_SWIPE"] = "CORNERSTONE_TOOLS_SWIPE";
71
+ })(Events || (Events = {}));
72
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Events);
73
+
74
+
75
+ /***/ }),
76
+
77
+ /***/ 18682:
78
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
79
+
80
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
81
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
82
+ /* harmony export */ });
83
+ var SegmentationRepresentations;
84
+ (function (SegmentationRepresentations) {
85
+ SegmentationRepresentations["Labelmap"] = "Labelmap";
86
+ SegmentationRepresentations["Contour"] = "Contour";
87
+ SegmentationRepresentations["Surface"] = "Surface";
88
+ })(SegmentationRepresentations || (SegmentationRepresentations = {}));
89
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SegmentationRepresentations);
90
+
91
+
92
+ /***/ }),
93
+
94
+ /***/ 84093:
95
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
96
+
97
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
98
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
99
+ /* harmony export */ });
100
+ var StrategyCallbacks;
101
+ (function (StrategyCallbacks) {
102
+ StrategyCallbacks["OnInteractionStart"] = "onInteractionStart";
103
+ StrategyCallbacks["OnInteractionEnd"] = "onInteractionEnd";
104
+ StrategyCallbacks["Preview"] = "preview";
105
+ StrategyCallbacks["RejectPreview"] = "rejectPreview";
106
+ StrategyCallbacks["AcceptPreview"] = "acceptPreview";
107
+ StrategyCallbacks["Fill"] = "fill";
108
+ StrategyCallbacks["StrategyFunction"] = "strategyFunction";
109
+ StrategyCallbacks["CreateIsInThreshold"] = "createIsInThreshold";
110
+ StrategyCallbacks["Initialize"] = "initialize";
111
+ StrategyCallbacks["INTERNAL_setValue"] = "setValue";
112
+ StrategyCallbacks["ComputeInnerCircleRadius"] = "computeInnerCircleRadius";
113
+ })(StrategyCallbacks || (StrategyCallbacks = {}));
114
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (StrategyCallbacks);
115
+
116
+
117
+ /***/ }),
118
+
119
+ /***/ 66452:
120
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
121
+
122
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
123
+ /* harmony export */ i: () => (/* binding */ MouseBindings),
124
+ /* harmony export */ q: () => (/* binding */ KeyboardBindings)
125
+ /* harmony export */ });
126
+ var MouseBindings;
127
+ (function (MouseBindings) {
128
+ MouseBindings[MouseBindings["Primary"] = 1] = "Primary";
129
+ MouseBindings[MouseBindings["Secondary"] = 2] = "Secondary";
130
+ MouseBindings[MouseBindings["Primary_And_Secondary"] = 3] = "Primary_And_Secondary";
131
+ MouseBindings[MouseBindings["Auxiliary"] = 4] = "Auxiliary";
132
+ MouseBindings[MouseBindings["Primary_And_Auxiliary"] = 5] = "Primary_And_Auxiliary";
133
+ MouseBindings[MouseBindings["Secondary_And_Auxiliary"] = 6] = "Secondary_And_Auxiliary";
134
+ MouseBindings[MouseBindings["Primary_And_Secondary_And_Auxiliary"] = 7] = "Primary_And_Secondary_And_Auxiliary";
135
+ MouseBindings[MouseBindings["Fourth_Button"] = 8] = "Fourth_Button";
136
+ MouseBindings[MouseBindings["Fifth_Button"] = 16] = "Fifth_Button";
137
+ MouseBindings[MouseBindings["Wheel"] = 524288] = "Wheel";
138
+ MouseBindings[MouseBindings["Wheel_Primary"] = 524289] = "Wheel_Primary";
139
+ })(MouseBindings || (MouseBindings = {}));
140
+ var KeyboardBindings;
141
+ (function (KeyboardBindings) {
142
+ KeyboardBindings[KeyboardBindings["Shift"] = 16] = "Shift";
143
+ KeyboardBindings[KeyboardBindings["Ctrl"] = 17] = "Ctrl";
144
+ KeyboardBindings[KeyboardBindings["Alt"] = 18] = "Alt";
145
+ KeyboardBindings[KeyboardBindings["Meta"] = 91] = "Meta";
146
+ KeyboardBindings[KeyboardBindings["ShiftCtrl"] = 1617] = "ShiftCtrl";
147
+ KeyboardBindings[KeyboardBindings["ShiftAlt"] = 1618] = "ShiftAlt";
148
+ KeyboardBindings[KeyboardBindings["ShiftMeta"] = 1691] = "ShiftMeta";
149
+ KeyboardBindings[KeyboardBindings["CtrlAlt"] = 1718] = "CtrlAlt";
150
+ KeyboardBindings[KeyboardBindings["CtrlMeta"] = 1791] = "CtrlMeta";
151
+ KeyboardBindings[KeyboardBindings["AltMeta"] = 1891] = "AltMeta";
152
+ })(KeyboardBindings || (KeyboardBindings = {}));
153
+
154
+
155
+
156
+ /***/ }),
157
+
158
+ /***/ 49892:
159
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
160
+
161
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
162
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
163
+ /* harmony export */ });
164
+ var ToolModes;
165
+ (function (ToolModes) {
166
+ ToolModes["Active"] = "Active";
167
+ ToolModes["Passive"] = "Passive";
168
+ ToolModes["Enabled"] = "Enabled";
169
+ ToolModes["Disabled"] = "Disabled";
170
+ })(ToolModes || (ToolModes = {}));
171
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ToolModes);
172
+
173
+
174
+ /***/ }),
175
+
176
+ /***/ 10401:
177
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
178
+
179
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180
+ /* harmony export */ H: () => (/* binding */ Swipe)
181
+ /* harmony export */ });
182
+ var Swipe;
183
+ (function (Swipe) {
184
+ Swipe["UP"] = "UP";
185
+ Swipe["DOWN"] = "DOWN";
186
+ Swipe["LEFT"] = "LEFT";
187
+ Swipe["RIGHT"] = "RIGHT";
188
+ })(Swipe || (Swipe = {}));
189
+
190
+
191
+
192
+ /***/ }),
193
+
194
+ /***/ 99737:
195
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
196
+
197
+ // ESM COMPAT FLAG
198
+ __webpack_require__.r(__webpack_exports__);
199
+
200
+ // EXPORTS
201
+ __webpack_require__.d(__webpack_exports__, {
202
+ AnnotationStyleStates: () => (/* reexport */ enums_AnnotationStyleStates),
203
+ ChangeTypes: () => (/* reexport */ ChangeTypes/* default */.A),
204
+ Events: () => (/* reexport */ Events/* default */.A),
205
+ KeyboardBindings: () => (/* reexport */ ToolBindings/* KeyboardBindings */.q),
206
+ MouseBindings: () => (/* reexport */ ToolBindings/* MouseBindings */.i),
207
+ SegmentationRepresentations: () => (/* reexport */ SegmentationRepresentations/* default */.A),
208
+ StrategyCallbacks: () => (/* reexport */ StrategyCallbacks/* default */.A),
209
+ Swipe: () => (/* reexport */ Touch/* Swipe */.H),
210
+ ToolModes: () => (/* reexport */ ToolModes/* default */.A),
211
+ WorkerTypes: () => (/* reexport */ WorkerTypes)
212
+ });
213
+
214
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/ToolBindings.js
215
+ var ToolBindings = __webpack_require__(66452);
216
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/ToolModes.js
217
+ var ToolModes = __webpack_require__(49892);
218
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/AnnotationStyleStates.js
219
+ var AnnotationStyleStates;
220
+ (function (AnnotationStyleStates) {
221
+ AnnotationStyleStates["Default"] = "";
222
+ AnnotationStyleStates["Highlighted"] = "Highlighted";
223
+ AnnotationStyleStates["Selected"] = "Selected";
224
+ AnnotationStyleStates["Locked"] = "Locked";
225
+ AnnotationStyleStates["AutoGenerated"] = "AutoGenerated";
226
+ })(AnnotationStyleStates || (AnnotationStyleStates = {}));
227
+ /* harmony default export */ const enums_AnnotationStyleStates = (AnnotationStyleStates);
228
+
229
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/Events.js
230
+ var Events = __webpack_require__(94021);
231
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/SegmentationRepresentations.js
232
+ var SegmentationRepresentations = __webpack_require__(18682);
233
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/Touch.js
234
+ var Touch = __webpack_require__(10401);
235
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/StrategyCallbacks.js
236
+ var StrategyCallbacks = __webpack_require__(84093);
237
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/ChangeTypes.js
238
+ var ChangeTypes = __webpack_require__(75183);
239
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/WorkerTypes.js
240
+ var WorkerTypes_ChangeTypes;
241
+ (function (ChangeTypes) {
242
+ ChangeTypes["POLYSEG_CONTOUR_TO_LABELMAP"] = "Converting Contour to Labelmap";
243
+ ChangeTypes["POLYSEG_SURFACE_TO_LABELMAP"] = "Converting Surfaces to Labelmap";
244
+ ChangeTypes["POLYSEG_CONTOUR_TO_SURFACE"] = "Converting Contour to Surface";
245
+ ChangeTypes["POLYSEG_LABELMAP_TO_SURFACE"] = "Converting Labelmap to Surface";
246
+ ChangeTypes["SURFACE_CLIPPING"] = "Clipping Surfaces";
247
+ })(WorkerTypes_ChangeTypes || (WorkerTypes_ChangeTypes = {}));
248
+ /* harmony default export */ const WorkerTypes = (WorkerTypes_ChangeTypes);
249
+
250
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/enums/index.js
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+ /***/ })
264
+
265
+ }]);
@@ -13,8 +13,8 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  "default": () => (/* binding */ microscopy_src)
14
14
  });
15
15
 
16
- // EXTERNAL MODULE: ../../core/src/index.ts + 71 modules
17
- var src = __webpack_require__(29463);
16
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
17
+ var src = __webpack_require__(80818);
18
18
  // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
19
19
  var i18next = __webpack_require__(40680);
20
20
  ;// CONCATENATED MODULE: ../../../modes/microscopy/package.json
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[5139,2591,4182,1801],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[5139,4182],{
3
3
 
4
4
  /***/ 82098:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -22,8 +22,8 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
22
22
 
23
23
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
24
  var react = __webpack_require__(86326);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 71 modules
26
- var src = __webpack_require__(29463);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
+ var src = __webpack_require__(80818);
27
27
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js
28
28
  var esm = __webpack_require__(81985);
29
29
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 61 modules
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[5247,2591],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[5247],{
3
3
 
4
4
  /***/ 22801:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -22,8 +22,8 @@ const id = package_namespaceObject.UU;
22
22
  var react = __webpack_require__(86326);
23
23
  // EXTERNAL MODULE: ../../ui/src/index.js + 690 modules
24
24
  var src = __webpack_require__(35647);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 71 modules
26
- var core_src = __webpack_require__(29463);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
26
+ var core_src = __webpack_require__(80818);
27
27
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
28
28
  var es = __webpack_require__(99993);
29
29
  // EXTERNAL MODULE: ../../../node_modules/mathjs/lib/esm/index.js + 1004 modules
@@ -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 + 114 modules
1383
- var default_src = __webpack_require__(71520);
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];