@ohif/app 3.8.0-beta.6 → 3.8.0-beta.61

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 (61) hide show
  1. package/dist/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
  2. package/dist/{471.bundle.b3d77b83b1593c09a504.js → 121.bundle.ed23e7752a11005322e6.js} +47 -51
  3. package/dist/{19.bundle.f6ac71d29001b0db0ec0.js → 155.bundle.3879b7d76680473fa69f.js} +198 -207
  4. package/dist/{687.bundle.f87fb1a36ef1ca951690.js → 164.bundle.80b2977d58cd927397c2.js} +22 -38
  5. package/dist/17dd54813d5acc10bf8f.wasm +0 -0
  6. package/dist/{506.bundle.06f5c5620d0088ec0102.js → 188.bundle.eca333a03f6b311bf2e6.js} +23 -28
  7. package/dist/191.bundle.4850ab82949bb6f0eb73.js +30339 -0
  8. package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
  9. package/dist/{126.bundle.cefdf26c03a5ab8d60c8.js → 250.bundle.a02414ebc6fed29530e7.js} +63 -69
  10. package/dist/{236.bundle.3148dc4715c254801727.js → 270.bundle.94f5c172fb943bda1d03.js} +156 -178
  11. package/dist/290.bundle.8b4d7dfbc7cfe418a0f1.js +8883 -0
  12. package/dist/{451.bundle.9fd36f52ff69594f0669.js → 295.bundle.462f3328c716cbe6c613.js} +45 -59
  13. package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.81d63bb0b66d63df6d86.js} +7 -8
  14. package/dist/{613.bundle.a0eee4dc2d2764c2f7cd.js → 317.bundle.d51f1681f4bdc829be5b.js} +83 -57
  15. package/dist/{788.bundle.af903bf0598f0ad618e3.js → 339.bundle.5691c7bc4504f1e4c3b2.js} +190 -239
  16. package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.a039c24e9f661f3b884d.js} +544 -860
  17. package/dist/{221.bundle.3f5f700b4c1ee8b1ce94.js → 50.bundle.d3eccf1a90cad61405c0.js} +199 -189
  18. package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 504.bundle.aa165082e2acc5ccf080.js} +14338 -27291
  19. package/dist/{886.bundle.d5116d9b8ea4964b68a0.js → 530.bundle.ce13c30b93a28cc85098.js} +40 -44
  20. package/dist/{250.bundle.8084960e3318cda37317.js → 544.bundle.3cf20da53f349abd8d67.js} +39 -44
  21. package/dist/{663.bundle.e3539f14edf9214e07eb.js → 559.bundle.146b02440e81f9fffea3.js} +149 -141
  22. package/dist/{410.bundle.5e16274b1082de6e127e.js → 594.bundle.76e05b71ad06361c9de9.js} +31 -35
  23. package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
  24. package/dist/{82.bundle.ae82f6434056c8d79fec.js → 68.bundle.ccbfa216e6d60ce3824f.js} +313 -324
  25. package/dist/{342.bundle.e485b92bd6d91bb7cc04.js → 704.bundle.042323b2cd8a9535050c.js} +1128 -737
  26. package/dist/{359.bundle.dedb5b782335939bdc52.js → 724.bundle.e821b6321fec63b9375a.js} +34 -37
  27. package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.2bdb443d1b5620d74e6e.js} +512 -879
  28. package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
  29. package/dist/{822.bundle.891f2e57b1b7bc2f4cb4.js → 862.bundle.e3fe2aae7903cc2ae8df.js} +27 -29
  30. package/dist/{181.bundle.2ddc6f90740895a3949c.js → 889.bundle.6850a0b8c412e3befab5.js} +135 -107
  31. package/dist/{181.css → 889.css} +1 -1
  32. package/dist/{281.bundle.e4c37762343dc03e4fa0.js → 905.bundle.806f0e8307eb1c9d1f6e.js} +29 -31
  33. package/dist/{814.bundle.98e400df965d000d78e6.js → 907.bundle.84dba9f6e90672071d82.js} +16 -18
  34. package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
  35. package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.84ee0b844023d924a22b.js} +7 -8
  36. package/dist/{12.bundle.75c761bd89ad782675c8.js → 961.bundle.80a864ec4e08ed7bb3b7.js} +16 -18
  37. package/dist/{776.bundle.08eb381dc3d06708eb0f.js → 963.bundle.f9511286d05982090a14.js} +1629 -845
  38. package/dist/987.bundle.e7c041a6dfb4ddb41813.js +122926 -0
  39. package/dist/{app.bundle.eeb94536f34535b1153f.js → app.bundle.2399e4eb1c8930ab9c5e.js} +142184 -60944
  40. package/dist/app.bundle.css +11 -11
  41. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  42. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  43. package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
  44. package/dist/index.html +1 -1
  45. package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
  46. package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
  47. package/dist/polySeg.bundle.99be036bab9b7f011b0c.js +252 -0
  48. package/dist/serve.json +12 -0
  49. package/dist/sw.js +1 -1
  50. package/package.json +25 -22
  51. package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
  52. package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
  53. package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
  54. package/dist/75788f12450d4c5ed494.wasm +0 -0
  55. package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
  56. package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
  57. /package/dist/{19.css → 155.css} +0 -0
  58. /package/dist/{579.css → 481.css} +0 -0
  59. /package/dist/{221.css → 50.css} +0 -0
  60. /package/dist/{250.css → 544.css} +0 -0
  61. /package/dist/{776.css → 963.css} +0 -0
@@ -1,9 +1,9 @@
1
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[221,579],{
1
+ "use strict";
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[50,481],{
2
3
 
3
- /***/ 9943:
4
+ /***/ 71093:
4
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5
6
 
6
- "use strict";
7
7
  // ESM COMPAT FLAG
8
8
  __webpack_require__.r(__webpack_exports__);
9
9
 
@@ -13,23 +13,25 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  });
14
14
 
15
15
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/package.json
16
- const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-cornerstone-dicom-seg"}');
16
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-seg"}');
17
17
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/id.js
18
18
 
19
- const id = package_namespaceObject.u2;
19
+ const id = package_namespaceObject.UU;
20
20
  const SOPClassHandlerName = 'dicom-seg';
21
21
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
22
22
 
23
23
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
- var react = __webpack_require__(43001);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
26
- var src = __webpack_require__(71771);
27
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
28
- var esm = __webpack_require__(3743);
24
+ var react = __webpack_require__(41766);
25
+ // EXTERNAL MODULE: ../../core/src/index.ts + 66 modules
26
+ var src = __webpack_require__(14283);
27
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 383 modules
28
+ var esm = __webpack_require__(50719);
29
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 16 modules
30
+ var dist_esm = __webpack_require__(20767);
29
31
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
30
- var adapters_es = __webpack_require__(91202);
32
+ var adapters_es = __webpack_require__(83342);
31
33
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
32
- var dcmjs_es = __webpack_require__(67540);
34
+ var dcmjs_es = __webpack_require__(31426);
33
35
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/dicomlabToRGB.ts
34
36
 
35
37
 
@@ -39,7 +41,7 @@ var dcmjs_es = __webpack_require__(67540);
39
41
  * @returns The RGB color as an array of three integers between 0 and 255.
40
42
  */
41
43
  function dicomlabToRGB(cielab) {
42
- const rgb = dcmjs_es["default"].data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
44
+ const rgb = dcmjs_es/* default.data */.Ay.data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
43
45
  return rgb;
44
46
  }
45
47
 
@@ -49,6 +51,7 @@ function dicomlabToRGB(cielab) {
49
51
 
50
52
 
51
53
 
54
+
52
55
  const sopClassUids = ['1.2.840.10008.5.1.4.1.1.66.4'];
53
56
  let loadPromises = {};
54
57
  function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) {
@@ -119,12 +122,9 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager)
119
122
  displaySet.referencedVolumeId = referencedVolumeId;
120
123
  return referencedDisplaySet;
121
124
  };
122
- displaySet.load = async _ref => {
123
- let {
124
- headers
125
- } = _ref;
126
- return await _load(displaySet, servicesManager, extensionManager, headers);
127
- };
125
+ displaySet.load = async ({
126
+ headers
127
+ }) => await _load(displaySet, servicesManager, extensionManager, headers);
128
128
  return [displaySet];
129
129
  }
130
130
  function _load(segDisplaySet, servicesManager, extensionManager, headers) {
@@ -161,16 +161,16 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) {
161
161
  });
162
162
  return loadPromises[SOPInstanceUID];
163
163
  }
164
- async function _loadSegments(_ref2) {
165
- let {
166
- extensionManager,
167
- servicesManager,
168
- segDisplaySet,
169
- headers
170
- } = _ref2;
164
+ async function _loadSegments({
165
+ extensionManager,
166
+ servicesManager,
167
+ segDisplaySet,
168
+ headers
169
+ }) {
171
170
  const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.common');
172
171
  const {
173
- segmentationService
172
+ segmentationService,
173
+ uiNotificationService
174
174
  } = servicesManager.services;
175
175
  const {
176
176
  dicomLoaderService
@@ -187,7 +187,7 @@ async function _loadSegments(_ref2) {
187
187
  // Todo: what should be defaults here
188
188
  const tolerance = 0.001;
189
189
  const skipOverlapping = true;
190
- esm.eventTarget.addEventListener(adapters_es/* Enums */.Y.Events.SEGMENTATION_LOAD_PROGRESS, evt => {
190
+ esm.eventTarget.addEventListener(adapters_es/* Enums */.fX.Events.SEGMENTATION_LOAD_PROGRESS, evt => {
191
191
  const {
192
192
  percentComplete
193
193
  } = evt.detail;
@@ -195,28 +195,50 @@ async function _loadSegments(_ref2) {
195
195
  percentComplete
196
196
  });
197
197
  });
198
- const results = await adapters_es.adaptersSEG.Cornerstone3D.Segmentation.generateToolState(imageIds, arrayBuffer, esm.metaData, {
198
+ const results = await adapters_es/* adaptersSEG */.ql.Cornerstone3D.Segmentation.generateToolState(imageIds, arrayBuffer, esm.metaData, {
199
199
  skipOverlapping,
200
200
  tolerance,
201
201
  eventTarget: esm.eventTarget,
202
202
  triggerEvent: esm.triggerEvent
203
203
  });
204
+ let usedRecommendedDisplayCIELabValue = true;
204
205
  results.segMetadata.data.forEach((data, i) => {
205
206
  if (i > 0) {
206
- data.rgba = dicomlabToRGB(data.RecommendedDisplayCIELabValue);
207
+ data.rgba = data.RecommendedDisplayCIELabValue;
208
+ if (data.rgba) {
209
+ data.rgba = dicomlabToRGB(data.rgba);
210
+ } else {
211
+ usedRecommendedDisplayCIELabValue = false;
212
+ data.rgba = dist_esm.CONSTANTS.COLOR_LUT[i % dist_esm.CONSTANTS.COLOR_LUT.length];
213
+ }
207
214
  }
208
215
  });
216
+ if (results.overlappingSegments) {
217
+ uiNotificationService.show({
218
+ title: 'Overlapping Segments',
219
+ message: 'Unsupported overlapping segments detected, segmentation rendering results may be incorrect.',
220
+ type: 'warning'
221
+ });
222
+ }
223
+ if (!usedRecommendedDisplayCIELabValue) {
224
+ // Display a notification about the non-utilization of RecommendedDisplayCIELabValue
225
+ uiNotificationService.show({
226
+ title: 'DICOM SEG import',
227
+ message: 'RecommendedDisplayCIELabValue not found for one or more segments. The default color was used instead.',
228
+ type: 'warning',
229
+ duration: 5000
230
+ });
231
+ }
209
232
  Object.assign(segDisplaySet, results);
210
233
  }
211
234
  function _segmentationExists(segDisplaySet, segmentationService) {
212
235
  // This should be abstracted with the CornerstoneCacheService
213
236
  return segmentationService.getSegmentation(segDisplaySet.displaySetInstanceUID);
214
237
  }
215
- function getSopClassHandlerModule(_ref3) {
216
- let {
217
- servicesManager,
218
- extensionManager
219
- } = _ref3;
238
+ function getSopClassHandlerModule({
239
+ servicesManager,
240
+ extensionManager
241
+ }) {
220
242
  const getDisplaySetsFromSeries = instances => {
221
243
  return _getDisplaySetsFromSeries(instances, servicesManager, extensionManager);
222
244
  };
@@ -292,24 +314,23 @@ function getHangingProtocolModule() {
292
314
  /* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
293
315
 
294
316
  // EXTERNAL MODULE: ./state/index.js + 1 modules
295
- var state = __webpack_require__(62657);
296
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 76 modules
297
- var default_src = __webpack_require__(56342);
317
+ var state = __webpack_require__(15575);
318
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 78 modules
319
+ var default_src = __webpack_require__(49704);
298
320
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
299
- var prop_types = __webpack_require__(3827);
321
+ var prop_types = __webpack_require__(11374);
300
322
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
301
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
302
- var ui_src = __webpack_require__(71783);
323
+ // EXTERNAL MODULE: ../../ui/src/index.js + 487 modules
324
+ var ui_src = __webpack_require__(55395);
303
325
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx
304
326
 
305
327
 
306
328
  function callInputDialog(uiDialogService, label, callback) {
307
329
  const dialogId = 'enter-segment-label';
308
- const onSubmitHandler = _ref => {
309
- let {
310
- action,
311
- value
312
- } = _ref;
330
+ const onSubmitHandler = ({
331
+ action,
332
+ value
333
+ }) => {
313
334
  switch (action.id) {
314
335
  case 'save':
315
336
  callback(value.label, action.id);
@@ -328,7 +349,7 @@ function callInputDialog(uiDialogService, label, callback) {
328
349
  centralize: true,
329
350
  isDraggable: false,
330
351
  showOverlay: true,
331
- content: ui_src/* Dialog */.Vq,
352
+ content: ui_src/* Dialog */.lG,
332
353
  contentProps: {
333
354
  title: 'Segment',
334
355
  value: {
@@ -341,19 +362,18 @@ function callInputDialog(uiDialogService, label, callback) {
341
362
  actions: [{
342
363
  id: 'cancel',
343
364
  text: 'Cancel',
344
- type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
365
+ type: ui_src/* ButtonEnums.type */.Ny.NW.secondary
345
366
  }, {
346
367
  id: 'save',
347
368
  text: 'Confirm',
348
- type: ui_src/* ButtonEnums.type */.LZ.dt.primary
369
+ type: ui_src/* ButtonEnums.type */.Ny.NW.primary
349
370
  }],
350
371
  onSubmit: onSubmitHandler,
351
- body: _ref2 => {
352
- let {
353
- value,
354
- setValue
355
- } = _ref2;
356
- return /*#__PURE__*/react.createElement(ui_src/* Input */.II, {
372
+ body: ({
373
+ value,
374
+ setValue
375
+ }) => {
376
+ return /*#__PURE__*/react.createElement(ui_src/* Input */.pd, {
357
377
  label: "Enter the segment label",
358
378
  labelClassName: "text-white text-[14px] leading-[1.2]",
359
379
  autoFocus: true,
@@ -385,7 +405,7 @@ function callInputDialog(uiDialogService, label, callback) {
385
405
  }
386
406
  /* harmony default export */ const panels_callInputDialog = (callInputDialog);
387
407
  // EXTERNAL MODULE: ../../../node_modules/react-color/es/index.js + 219 modules
388
- var es = __webpack_require__(22831);
408
+ var es = __webpack_require__(13726);
389
409
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/colorPickerDialog.css
390
410
  // extracted by mini-css-extract-plugin
391
411
 
@@ -396,11 +416,10 @@ var es = __webpack_require__(22831);
396
416
 
397
417
  function callColorPickerDialog(uiDialogService, rgbaColor, callback) {
398
418
  const dialogId = 'pick-color';
399
- const onSubmitHandler = _ref => {
400
- let {
401
- action,
402
- value
403
- } = _ref;
419
+ const onSubmitHandler = ({
420
+ action,
421
+ value
422
+ }) => {
404
423
  switch (action.id) {
405
424
  case 'save':
406
425
  callback(value.rgbaColor, action.id);
@@ -419,7 +438,7 @@ function callColorPickerDialog(uiDialogService, rgbaColor, callback) {
419
438
  centralize: true,
420
439
  isDraggable: false,
421
440
  showOverlay: true,
422
- content: ui_src/* Dialog */.Vq,
441
+ content: ui_src/* Dialog */.lG,
423
442
  contentProps: {
424
443
  title: 'Segment Color',
425
444
  value: {
@@ -439,17 +458,16 @@ function callColorPickerDialog(uiDialogService, rgbaColor, callback) {
439
458
  type: 'secondary'
440
459
  }],
441
460
  onSubmit: onSubmitHandler,
442
- body: _ref2 => {
443
- let {
444
- value,
445
- setValue
446
- } = _ref2;
461
+ body: ({
462
+ value,
463
+ setValue
464
+ }) => {
447
465
  const handleChange = color => {
448
466
  setValue({
449
467
  rgbaColor: color.rgb
450
468
  });
451
469
  };
452
- return /*#__PURE__*/react.createElement(es/* ChromePicker */.AI, {
470
+ return /*#__PURE__*/react.createElement(es/* ChromePicker */.xk, {
453
471
  color: value.rgbaColor,
454
472
  onChange: handleChange,
455
473
  presetColors: [],
@@ -462,7 +480,7 @@ function callColorPickerDialog(uiDialogService, rgbaColor, callback) {
462
480
  }
463
481
  /* harmony default export */ const colorPickerDialog = (callColorPickerDialog);
464
482
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
465
- var dist_es = __webpack_require__(69190);
483
+ var dist_es = __webpack_require__(80619);
466
484
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx
467
485
 
468
486
 
@@ -471,13 +489,12 @@ var dist_es = __webpack_require__(69190);
471
489
 
472
490
 
473
491
 
474
- function PanelSegmentation(_ref) {
475
- let {
476
- servicesManager,
477
- commandsManager,
478
- extensionManager,
479
- configuration
480
- } = _ref;
492
+ function PanelSegmentation({
493
+ servicesManager,
494
+ commandsManager,
495
+ extensionManager,
496
+ configuration
497
+ }) {
481
498
  const {
482
499
  segmentationService,
483
500
  viewportGridService,
@@ -485,7 +502,7 @@ function PanelSegmentation(_ref) {
485
502
  } = servicesManager.services;
486
503
  const {
487
504
  t
488
- } = (0,dist_es/* useTranslation */.$G)('PanelSegmentation');
505
+ } = (0,dist_es/* useTranslation */.Bd)('PanelSegmentation');
489
506
  const [selectedSegmentationId, setSelectedSegmentationId] = (0,react.useState)(null);
490
507
  const [segmentationConfiguration, setSegmentationConfiguration] = (0,react.useState)(segmentationService.getConfiguration());
491
508
  const [segmentations, setSegmentations] = (0,react.useState)(() => segmentationService.getSegmentations());
@@ -567,7 +584,6 @@ function PanelSegmentation(_ref) {
567
584
  );
568
585
  });
569
586
  };
570
-
571
587
  const onSegmentColorClick = (segmentationId, segmentIndex) => {
572
588
  const segmentation = segmentationService.getSegmentation(segmentationId);
573
589
  const segment = segmentation.segments[segmentIndex];
@@ -649,7 +665,7 @@ function PanelSegmentation(_ref) {
649
665
  };
650
666
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
651
667
  className: "ohif-scrollbar flex min-h-0 flex-auto select-none flex-col justify-between overflow-auto"
652
- }, /*#__PURE__*/react.createElement(ui_src/* SegmentationGroupTable */.cX, {
668
+ }, /*#__PURE__*/react.createElement(ui_src/* SegmentationGroupTable */.QQ, {
653
669
  title: t('Segmentations'),
654
670
  segmentations: segmentations,
655
671
  disableEditing: configuration.disableEditing,
@@ -698,8 +714,6 @@ PanelSegmentation.propTypes = {
698
714
  }).isRequired
699
715
  }).isRequired
700
716
  };
701
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
702
- var dist_esm = __webpack_require__(14957);
703
717
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/SegmentationToolbox.tsx
704
718
 
705
719
 
@@ -727,20 +741,17 @@ const initialState = {
727
741
  brushSize: 15,
728
742
  mode: 'CircularBrush' // Can be 'CircularBrush' or 'SphereBrush'
729
743
  },
730
-
731
744
  Eraser: {
732
745
  brushSize: 15,
733
746
  mode: 'CircularEraser' // Can be 'CircularEraser' or 'SphereEraser'
734
747
  },
735
-
736
748
  Shapes: {
737
749
  brushSize: 15,
738
750
  mode: 'CircleScissor' // E.g., 'CircleScissor', 'RectangleScissor', or 'SphereScissor'
739
751
  },
740
-
741
752
  ThresholdBrush: {
742
753
  brushSize: 15,
743
- thresholdRange: [-500, 500]
754
+ thresholdRange: null
744
755
  },
745
756
  activeTool: null
746
757
  };
@@ -767,17 +778,16 @@ function toolboxReducer(state, action) {
767
778
  return state;
768
779
  }
769
780
  }
770
- function SegmentationToolbox(_ref) {
771
- let {
772
- servicesManager,
773
- extensionManager
774
- } = _ref;
781
+ function SegmentationToolbox({
782
+ servicesManager,
783
+ extensionManager
784
+ }) {
775
785
  const {
776
786
  toolbarService,
777
787
  segmentationService,
778
788
  toolGroupService
779
789
  } = servicesManager.services;
780
- const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
790
+ const [viewportGrid] = (0,ui_src/* useViewportGrid */.ih)();
781
791
  const {
782
792
  viewports,
783
793
  activeViewportId
@@ -798,6 +808,7 @@ function SegmentationToolbox(_ref) {
798
808
  });
799
809
  }, [activeViewportId, viewports, toolGroupService, dispatch]);
800
810
  const setToolActive = (0,react.useCallback)(toolName => {
811
+ initializeThresholdValue(toolName);
801
812
  toolbarService.recordInteraction({
802
813
  interactionType: 'tool',
803
814
  commands: [{
@@ -869,6 +880,25 @@ function SegmentationToolbox(_ref) {
869
880
  segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize, toolName);
870
881
  });
871
882
  }, [toolGroupService]);
883
+ function initializeThresholdValue(toolName) {
884
+ if (state.ThresholdBrush.thresholdRange === null) {
885
+ // set the default threshold range from the tool configuration
886
+ const toolGroupIds = toolGroupService.getToolGroupIds();
887
+ const toolGroupId = toolGroupIds[0];
888
+ const toolGroup = toolGroupService.getToolGroup(toolGroupId);
889
+ const toolConfig = toolGroup.getToolConfiguration(toolName);
890
+ const defaultThresholdRange = toolConfig?.strategySpecificConfiguration?.THRESHOLD?.threshold;
891
+ dispatch({
892
+ type: ACTIONS.SET_TOOL_CONFIG,
893
+ payload: {
894
+ tool: 'ThresholdBrush',
895
+ config: {
896
+ thresholdRange: defaultThresholdRange
897
+ }
898
+ }
899
+ });
900
+ }
901
+ }
872
902
  const onBrushSizeChange = (0,react.useCallback)((valueAsStringOrNumber, toolCategory) => {
873
903
  const value = Number(valueAsStringOrNumber);
874
904
  _getToolNamesFromCategory(toolCategory).forEach(toolName => {
@@ -885,7 +915,7 @@ function SegmentationToolbox(_ref) {
885
915
  });
886
916
  }, [toolGroupService, dispatch]);
887
917
  const handleRangeChange = (0,react.useCallback)(newRange => {
888
- if (newRange[0] === state.ThresholdBrush.thresholdRange[0] && newRange[1] === state.ThresholdBrush.thresholdRange[1]) {
918
+ if (newRange[0] === state.ThresholdBrush.thresholdRange?.[0] && newRange[1] === state.ThresholdBrush.thresholdRange?.[1]) {
889
919
  return;
890
920
  }
891
921
  const toolNames = _getToolNamesFromCategory('ThresholdBrush');
@@ -894,7 +924,7 @@ function SegmentationToolbox(_ref) {
894
924
  const toolGroup = toolGroupService.getToolGroup(toolGroupId);
895
925
  toolGroup.setToolConfiguration(toolName, {
896
926
  strategySpecificConfiguration: {
897
- THRESHOLD_INSIDE_CIRCLE: {
927
+ THRESHOLD: {
898
928
  threshold: newRange
899
929
  }
900
930
  }
@@ -911,7 +941,7 @@ function SegmentationToolbox(_ref) {
911
941
  }
912
942
  });
913
943
  }, [toolGroupService, dispatch, state.ThresholdBrush.thresholdRange]);
914
- return /*#__PURE__*/react.createElement(ui_src/* AdvancedToolbox */.bY, {
944
+ return /*#__PURE__*/react.createElement(ui_src/* AdvancedToolbox */.om, {
915
945
  title: "Segmentation Tools",
916
946
  items: [{
917
947
  name: 'Brush',
@@ -1030,10 +1060,11 @@ function SegmentationToolbox(_ref) {
1030
1060
  className: "bg-secondary-light h-[1px]"
1031
1061
  }), /*#__PURE__*/react.createElement("div", {
1032
1062
  className: "mt-1 text-[13px] text-white"
1033
- }, "Threshold"), /*#__PURE__*/react.createElement(ui_src/* InputDoubleRange */.R0, {
1063
+ }, "Threshold"), /*#__PURE__*/react.createElement(ui_src/* InputDoubleRange */.Z5, {
1034
1064
  values: state.ThresholdBrush.thresholdRange,
1035
1065
  onChange: handleRangeChange,
1036
- minValue: -1000,
1066
+ minValue: -1000 // Todo: these should be configurable
1067
+ ,
1037
1068
  maxValue: 1000,
1038
1069
  step: 1,
1039
1070
  showLabel: true,
@@ -1068,18 +1099,17 @@ function _getToolNamesFromCategory(category) {
1068
1099
 
1069
1100
 
1070
1101
 
1071
- const getPanelModule = _ref => {
1072
- let {
1073
- commandsManager,
1074
- servicesManager,
1075
- extensionManager,
1076
- configuration
1077
- } = _ref;
1102
+ const getPanelModule = ({
1103
+ commandsManager,
1104
+ servicesManager,
1105
+ extensionManager,
1106
+ configuration
1107
+ }) => {
1078
1108
  const {
1079
1109
  customizationService
1080
1110
  } = servicesManager.services;
1081
1111
  const wrappedPanelSegmentation = configuration => {
1082
- const [appConfig] = (0,state/* useAppConfig */.M)();
1112
+ const [appConfig] = (0,state/* useAppConfig */.r)();
1083
1113
  const disableEditingForMode = customizationService.get('segmentation.disableEditing');
1084
1114
  return /*#__PURE__*/react.createElement(PanelSegmentation, {
1085
1115
  commandsManager: commandsManager,
@@ -1092,7 +1122,7 @@ const getPanelModule = _ref => {
1092
1122
  });
1093
1123
  };
1094
1124
  const wrappedPanelSegmentationWithTools = configuration => {
1095
- const [appConfig] = (0,state/* useAppConfig */.M)();
1125
+ const [appConfig] = (0,state/* useAppConfig */.r)();
1096
1126
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(panels_SegmentationToolbox, {
1097
1127
  commandsManager: commandsManager,
1098
1128
  servicesManager: servicesManager,
@@ -1124,12 +1154,12 @@ const getPanelModule = _ref => {
1124
1154
  }];
1125
1155
  };
1126
1156
  /* harmony default export */ const src_getPanelModule = (getPanelModule);
1127
- // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares.js + 2 modules
1128
- var ImageMarchingSquares = __webpack_require__(49399);
1157
+ // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares.js
1158
+ var ImageMarchingSquares = __webpack_require__(52754);
1129
1159
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/DataArray.js
1130
- var DataArray = __webpack_require__(54131);
1160
+ var DataArray = __webpack_require__(45128);
1131
1161
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/ImageData.js + 2 modules
1132
- var ImageData = __webpack_require__(96372);
1162
+ var ImageData = __webpack_require__(94448);
1133
1163
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/hydrationUtils.ts
1134
1164
 
1135
1165
 
@@ -1147,13 +1177,12 @@ var ImageData = __webpack_require__(96372);
1147
1177
  *
1148
1178
  * @returns Returns true upon successful update of viewports for segmentation rendering.
1149
1179
  */
1150
- async function updateViewportsForSegmentationRendering(_ref) {
1151
- let {
1152
- viewportId,
1153
- loadFn,
1154
- servicesManager,
1155
- referencedDisplaySetInstanceUID
1156
- } = _ref;
1180
+ async function updateViewportsForSegmentationRendering({
1181
+ viewportId,
1182
+ loadFn,
1183
+ servicesManager,
1184
+ referencedDisplaySetInstanceUID
1185
+ }) {
1157
1186
  const {
1158
1187
  cornerstoneViewportService,
1159
1188
  segmentationService,
@@ -1221,11 +1250,10 @@ async function updateViewportsForSegmentationRendering(_ref) {
1221
1250
  viewportGridService.setDisplaySetsForViewports(updatedViewports);
1222
1251
  return true;
1223
1252
  }
1224
- const getTargetViewport = _ref2 => {
1225
- let {
1226
- viewportId,
1227
- viewportGridService
1228
- } = _ref2;
1253
+ const getTargetViewport = ({
1254
+ viewportId,
1255
+ viewportGridService
1256
+ }) => {
1229
1257
  const {
1230
1258
  viewports,
1231
1259
  activeViewportId
@@ -1247,12 +1275,11 @@ const getTargetViewport = _ref2 => {
1247
1275
  *
1248
1276
  * @returns {Array} Returns an array of viewports that require updates for segmentation rendering.
1249
1277
  */
1250
- function getUpdatedViewportsForSegmentation(_ref3) {
1251
- let {
1252
- viewportId,
1253
- servicesManager,
1254
- referencedDisplaySetInstanceUID
1255
- } = _ref3;
1278
+ function getUpdatedViewportsForSegmentation({
1279
+ viewportId,
1280
+ servicesManager,
1281
+ referencedDisplaySetInstanceUID
1282
+ }) {
1256
1283
  const {
1257
1284
  hangingProtocolService,
1258
1285
  displaySetService,
@@ -1304,7 +1331,7 @@ function getUpdatedViewportsForSegmentation(_ref3) {
1304
1331
 
1305
1332
  const {
1306
1333
  datasetToBlob
1307
- } = dcmjs_es["default"].data;
1334
+ } = dcmjs_es/* default.data */.Ay.data;
1308
1335
  const {
1309
1336
  Cornerstone3D: {
1310
1337
  Segmentation: {
@@ -1312,22 +1339,21 @@ const {
1312
1339
  generateSegmentation
1313
1340
  }
1314
1341
  }
1315
- } = adapters_es.adaptersSEG;
1342
+ } = adapters_es/* adaptersSEG */.ql;
1316
1343
  const {
1317
1344
  Cornerstone3D: {
1318
1345
  RTSS: {
1319
1346
  generateRTSSFromSegmentations
1320
1347
  }
1321
1348
  }
1322
- } = adapters_es.adaptersRT;
1349
+ } = adapters_es/* adaptersRT */.f_;
1323
1350
  const {
1324
1351
  downloadDICOMData
1325
- } = adapters_es.helpers;
1326
- const commandsModule = _ref => {
1327
- let {
1328
- servicesManager,
1329
- extensionManager
1330
- } = _ref;
1352
+ } = adapters_es/* helpers */._$;
1353
+ const commandsModule = ({
1354
+ servicesManager,
1355
+ extensionManager
1356
+ }) => {
1331
1357
  const {
1332
1358
  uiNotificationService,
1333
1359
  segmentationService,
@@ -1360,10 +1386,9 @@ const commandsModule = _ref => {
1360
1386
  * @param params.viewportId - the target viewport ID.
1361
1387
  *
1362
1388
  */
1363
- createEmptySegmentationForViewport: async _ref2 => {
1364
- let {
1365
- viewportId
1366
- } = _ref2;
1389
+ createEmptySegmentationForViewport: async ({
1390
+ viewportId
1391
+ }) => {
1367
1392
  const viewport = getTargetViewport({
1368
1393
  viewportId,
1369
1394
  viewportGridService
@@ -1412,11 +1437,10 @@ const commandsModule = _ref => {
1412
1437
  * @param params.viewportId - the target viewport ID.
1413
1438
  *
1414
1439
  */
1415
- loadSegmentationsForViewport: async _ref3 => {
1416
- let {
1417
- segmentations,
1418
- viewportId
1419
- } = _ref3;
1440
+ loadSegmentationsForViewport: async ({
1441
+ segmentations,
1442
+ viewportId
1443
+ }) => {
1420
1444
  updateViewportsForSegmentationRendering({
1421
1445
  viewportId,
1422
1446
  servicesManager,
@@ -1479,11 +1503,10 @@ const commandsModule = _ref => {
1479
1503
  * @param params.displaySets - Array of display sets to be loaded for segmentation.
1480
1504
  *
1481
1505
  */
1482
- loadSegmentationDisplaySetsForViewport: async _ref4 => {
1483
- let {
1484
- viewportId,
1485
- displaySets
1486
- } = _ref4;
1506
+ loadSegmentationDisplaySetsForViewport: async ({
1507
+ viewportId,
1508
+ displaySets
1509
+ }) => {
1487
1510
  // Todo: handle adding more than one segmentation
1488
1511
  const displaySet = displaySets[0];
1489
1512
  updateViewportsForSegmentationRendering({
@@ -1513,11 +1536,10 @@ const commandsModule = _ref => {
1513
1536
  *
1514
1537
  * @returns Returns the generated segmentation data.
1515
1538
  */
1516
- generateSegmentation: _ref5 => {
1517
- let {
1518
- segmentationId,
1519
- options = {}
1520
- } = _ref5;
1539
+ generateSegmentation: ({
1540
+ segmentationId,
1541
+ options = {}
1542
+ }) => {
1521
1543
  const segmentation = dist_esm.segmentation.state.getSegmentation(segmentationId);
1522
1544
  const {
1523
1545
  referencedVolumeId
@@ -1537,7 +1559,7 @@ const commandsModule = _ref => {
1537
1559
  label,
1538
1560
  color
1539
1561
  } = segment;
1540
- const RecommendedDisplayCIELabValue = dcmjs_es["default"].data.Colors.rgb2DICOMLAB(color.slice(0, 3).map(value => value / 255)).map(value => Math.round(value));
1562
+ const RecommendedDisplayCIELabValue = dcmjs_es/* default.data */.Ay.data.Colors.rgb2DICOMLAB(color.slice(0, 3).map(value => value / 255)).map(value => Math.round(value));
1541
1563
  const segmentMetadata = {
1542
1564
  SegmentNumber: segmentIndex.toString(),
1543
1565
  SegmentLabel: label,
@@ -1570,10 +1592,9 @@ const commandsModule = _ref => {
1570
1592
  * @param params.segmentationId - ID of the segmentation to be downloaded.
1571
1593
  *
1572
1594
  */
1573
- downloadSegmentation: _ref6 => {
1574
- let {
1575
- segmentationId
1576
- } = _ref6;
1595
+ downloadSegmentation: ({
1596
+ segmentationId
1597
+ }) => {
1577
1598
  const segmentationInOHIF = segmentationService.getSegmentation(segmentationId);
1578
1599
  const generatedSegmentation = actions.generateSegmentation({
1579
1600
  segmentationId
@@ -1592,11 +1613,10 @@ const commandsModule = _ref => {
1592
1613
  * @returns {Object|void} Returns the naturalized report if successfully stored,
1593
1614
  * otherwise throws an error.
1594
1615
  */
1595
- storeSegmentation: async _ref7 => {
1596
- let {
1597
- segmentationId,
1598
- dataSource
1599
- } = _ref7;
1616
+ storeSegmentation: async ({
1617
+ segmentationId,
1618
+ dataSource
1619
+ }) => {
1600
1620
  const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
1601
1621
  extensionManager
1602
1622
  });
@@ -1641,15 +1661,14 @@ const commandsModule = _ref => {
1641
1661
  * converts dataset to downloadable blob.
1642
1662
  *
1643
1663
  */
1644
- downloadRTSS: _ref8 => {
1645
- let {
1646
- segmentationId
1647
- } = _ref8;
1664
+ downloadRTSS: ({
1665
+ segmentationId
1666
+ }) => {
1648
1667
  const segmentations = segmentationService.getSegmentation(segmentationId);
1649
1668
  const vtkUtils = {
1650
- vtkImageMarchingSquares: ImageMarchingSquares/* default */.ZP,
1651
- vtkDataArray: DataArray/* default */.ZP,
1652
- vtkImageData: ImageData/* default */.ZP
1669
+ vtkImageMarchingSquares: ImageMarchingSquares/* default */.Ay,
1670
+ vtkDataArray: DataArray/* default */.Ay,
1671
+ vtkImageData: ImageData/* default */.Ay
1653
1672
  };
1654
1673
  const RTSS = generateRTSSFromSegmentations(segmentations, src.classes.MetadataProvider, src.DicomMetadataStore, esm.cache, dist_esm.Enums, vtkUtils);
1655
1674
  try {
@@ -1697,10 +1716,9 @@ const commandsModule = _ref => {
1697
1716
  /* harmony default export */ const src_commandsModule = (commandsModule);
1698
1717
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/init.ts
1699
1718
 
1700
- function init(_ref) {
1701
- let {
1702
- configuration = {}
1703
- } = _ref;
1719
+ function init({
1720
+ configuration = {}
1721
+ }) {
1704
1722
  (0,dist_esm.addTool)(dist_esm.BrushTool);
1705
1723
  }
1706
1724
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/index.tsx
@@ -1713,7 +1731,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
1713
1731
 
1714
1732
 
1715
1733
  const Component = /*#__PURE__*/react.lazy(() => {
1716
- return __webpack_require__.e(/* import() */ 451).then(__webpack_require__.bind(__webpack_require__, 4451));
1734
+ return __webpack_require__.e(/* import() */ 295).then(__webpack_require__.bind(__webpack_require__, 58295));
1717
1735
  });
1718
1736
  const OHIFCornerstoneSEGViewport = props => {
1719
1737
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -1739,11 +1757,10 @@ const extension = {
1739
1757
  */
1740
1758
  getPanelModule: src_getPanelModule,
1741
1759
  getCommandsModule: src_commandsModule,
1742
- getViewportModule(_ref) {
1743
- let {
1744
- servicesManager,
1745
- extensionManager
1746
- } = _ref;
1760
+ getViewportModule({
1761
+ servicesManager,
1762
+ extensionManager
1763
+ }) {
1747
1764
  const ExtendedOHIFCornerstoneSEGViewport = props => {
1748
1765
  return /*#__PURE__*/react.createElement(OHIFCornerstoneSEGViewport, _extends({
1749
1766
  servicesManager: servicesManager,
@@ -1767,13 +1784,6 @@ const extension = {
1767
1784
  };
1768
1785
  /* harmony default export */ const cornerstone_dicom_seg_src = (extension);
1769
1786
 
1770
- /***/ }),
1771
-
1772
- /***/ 78753:
1773
- /***/ (() => {
1774
-
1775
- /* (ignored) */
1776
-
1777
1787
  /***/ })
1778
1788
 
1779
1789
  }]);