@ohif/app 3.7.0-beta.7 → 3.7.0-beta.71

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 (60) hide show
  1. package/dist/{270.bundle.4564621556b0f963a004.js → 116.bundle.422d1a76d8daccfed61d.js} +1037 -823
  2. package/dist/{917.bundle.37f76105d2e1a70d94cf.js → 12.bundle.078c14f666c71663ae8e.js} +6 -6
  3. package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.aeaad798561853bf6939.js} +6 -6
  4. package/dist/{208.bundle.21c449bf9b00123e1db3.js → 128.bundle.fdb6d1d5391b79de4936.js} +6 -6
  5. package/dist/{616.bundle.be469f44809e9b2485b2.js → 150.bundle.c99cc2e1df7cd4085265.js} +163 -106
  6. package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.73dd6f63fe0ddc52b7eb.js} +225 -203
  7. package/dist/{351.css → 181.css} +1 -1
  8. package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.591726b6144882ba0ee0.js} +1459 -811
  9. package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
  10. package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
  11. package/dist/{976.bundle.c1df3878a015cdf0e51f.js → 236.bundle.226efc38e453a4aeb7dd.js} +72 -83
  12. package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.8bc4553ee5c56bf7cf32.js} +51 -35
  13. package/dist/{973.bundle.f4b8ccf7ad2ff9f6041c.js → 281.bundle.e9554f25a9eeac2f43e6.js} +18 -14
  14. package/dist/{744.bundle.d07b9ad7b31de0ba4956.js → 30.bundle.c8dfb82c70ae9ff67f14.js} +185 -174
  15. package/dist/{192.bundle.1efc10937535a37a17f0.js → 348.bundle.e5082a6425f719eb6658.js} +43 -19
  16. package/dist/{404.bundle.d980e423e9670737ef12.js → 359.bundle.8da7f102410ca9c0c999.js} +13 -19
  17. package/dist/{790.bundle.ed28f0930111217b742a.js → 410.bundle.5d03eeef5b705198bf5e.js} +10 -7
  18. package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.6cadc61b8a455776de31.js} +49 -17
  19. package/dist/{569.bundle.21f8ad57c06a210448b5.js → 451.bundle.e59fcdb1f1d3fbe71cd4.js} +83 -101
  20. package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.b598d406ddfc2666851b.js} +65 -93
  21. package/dist/{199.bundle.7cec631fcf4b8475abda.js → 506.bundle.869288177e788d808aaa.js} +86 -10
  22. package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
  23. package/dist/{984.bundle.b33e9e702a96c5ae9fb7.js → 663.bundle.6a389399e5196510e0de.js} +67 -37
  24. package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 677.bundle.ec5f2b4707db33bd4d8e.js} +731 -447
  25. package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.b3dbf84eefbef768843f.js} +6 -6
  26. package/dist/{50.bundle.9b5c9aaaf1188ab0794a.js → 687.bundle.67d721785216e064fc52.js} +218 -9
  27. package/dist/{331.bundle.bd0c13931a21d53086c9.js → 754.bundle.a5c9246c77659eab2739.js} +12413 -7539
  28. package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.8ba82ee206266eb2da5e.js} +90 -63
  29. package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
  30. package/dist/{283.bundle.8ffad59b5844a24b2a62.js → 782.bundle.6d57b35a056506c94352.js} +112 -62
  31. package/dist/{642.bundle.88a563313292ae2cdd2e.js → 814.bundle.ad8ebe6cffa96a5cfc1f.js} +6 -6
  32. package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.5cdd9439a62e5c7e902f.js} +81 -34
  33. package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.9e526affbd17b0ed96a6.js} +34 -29
  34. package/dist/{82.bundle.b824c7d8ff72de0fc149.js → 90.bundle.d7a1e818bbbd3bce5419.js} +1397 -366
  35. package/dist/945.min.worker.js +1 -1
  36. package/dist/945.min.worker.js.map +1 -1
  37. package/dist/{707.bundle.0b18a871c9eb8df9e992.js → 967.bundle.8b4adf9b5a7392b51d0c.js} +584 -435
  38. package/dist/app-config.js +7 -7
  39. package/dist/{app.bundle.f0885cb776ab9ae8974b.js → app.bundle.1905c07065c4b93afa5a.js} +69865 -67829
  40. package/dist/app.bundle.css +9 -9
  41. package/dist/assets/yandex-browser-manifest.json +1 -1
  42. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  43. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  44. package/dist/{dicom-microscopy-viewer.bundle.aa60bdf008c32c39cfd7.js → dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js} +5 -4
  45. package/dist/es6-shim.min.js +3569 -2
  46. package/dist/google.js +8 -7
  47. package/dist/index.html +1 -1
  48. package/dist/{index.worker.1c69152d710fa7b84bce.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
  49. package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
  50. package/dist/init-service-worker.js +3 -5
  51. package/dist/oidc-client.min.js +10857 -39
  52. package/dist/polyfill.min.js +184 -1
  53. package/dist/silent-refresh.html +18 -9
  54. package/dist/sw.js +1 -1
  55. package/package.json +19 -20
  56. package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
  57. package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
  58. /package/dist/{55.css → 250.css} +0 -0
  59. /package/dist/{806.css → 579.css} +0 -0
  60. /package/dist/{707.css → 967.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[581],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[471],{
3
3
 
4
- /***/ 72581:
4
+ /***/ 56471:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -13,68 +13,16 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  });
14
14
 
15
15
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
16
- var react = __webpack_require__(32735);
16
+ var react = __webpack_require__(43001);
17
17
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
18
- var prop_types = __webpack_require__(60216);
18
+ var prop_types = __webpack_require__(3827);
19
19
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
20
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
21
- var src = __webpack_require__(48501);
22
- // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
23
- var ui_src = __webpack_require__(28619);
24
- ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/_hydrateRT.ts
25
- async function _hydrateRTDisplaySet(_ref) {
26
- let {
27
- rtDisplaySet,
28
- viewportIndex,
29
- servicesManager
30
- } = _ref;
31
- const {
32
- segmentationService,
33
- hangingProtocolService,
34
- viewportGridService
35
- } = servicesManager.services;
36
- const displaySetInstanceUID = rtDisplaySet.referencedDisplaySetInstanceUID;
37
- let segmentationId = null;
38
-
39
- // We need the hydration to notify panels about the new segmentation added
40
- const suppressEvents = false;
41
- segmentationId = await segmentationService.createSegmentationForRTDisplaySet(rtDisplaySet, segmentationId, suppressEvents);
42
- segmentationService.hydrateSegmentation(rtDisplaySet.displaySetInstanceUID);
43
- const {
44
- viewports
45
- } = viewportGridService.getState();
46
- const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
47
- viewportGridService.setDisplaySetsForViewports(updatedViewports);
48
-
49
- // Todo: fix this after we have a better way for stack viewport segmentations
50
-
51
- // check every viewport in the viewports to see if the displaySetInstanceUID
52
- // is being displayed, if so we need to update the viewport to use volume viewport
53
- // (if already is not using it) since Cornerstone3D currently only supports
54
- // volume viewport for segmentation
55
- viewports.forEach((viewport, index) => {
56
- if (index === viewportIndex) {
57
- return;
58
- }
59
- const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, rtDisplaySet.displaySetInstanceUID);
60
- if (shouldDisplaySeg) {
61
- updatedViewports.push({
62
- viewportIndex: index,
63
- displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
64
- viewportOptions: {
65
- initialImageOptions: {
66
- preset: 'middle'
67
- }
68
- }
69
- });
70
- }
71
- });
72
-
73
- // Do the entire update at once
74
- viewportGridService.setDisplaySetsForViewports(updatedViewports);
75
- return true;
76
- }
77
- /* harmony default export */ const _hydrateRT = (_hydrateRTDisplaySet);
20
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
21
+ var src = __webpack_require__(78695);
22
+ // EXTERNAL MODULE: ../../ui/src/index.js + 458 modules
23
+ var ui_src = __webpack_require__(88344);
24
+ // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/_hydrateRT.ts
25
+ var _hydrateRT = __webpack_require__(50995);
78
26
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/promptHydrateRT.ts
79
27
 
80
28
 
@@ -87,18 +35,22 @@ function promptHydrateRT(_ref) {
87
35
  let {
88
36
  servicesManager,
89
37
  rtDisplaySet,
90
- viewportIndex,
91
- toolGroupId = 'default'
38
+ viewportId,
39
+ toolGroupId = 'default',
40
+ preHydrateCallbacks
92
41
  } = _ref;
93
42
  const {
94
43
  uiViewportDialogService
95
44
  } = servicesManager.services;
96
45
  return new Promise(async function (resolve, reject) {
97
- const promptResult = await _askHydrate(uiViewportDialogService, viewportIndex);
46
+ const promptResult = await _askHydrate(uiViewportDialogService, viewportId);
98
47
  if (promptResult === RESPONSE.HYDRATE_SEG) {
99
- const isHydrated = await _hydrateRT({
48
+ preHydrateCallbacks?.forEach(callback => {
49
+ callback();
50
+ });
51
+ const isHydrated = await (0,_hydrateRT/* default */.Z)({
100
52
  rtDisplaySet,
101
- viewportIndex,
53
+ viewportId,
102
54
  toolGroupId,
103
55
  servicesManager
104
56
  });
@@ -106,7 +58,7 @@ function promptHydrateRT(_ref) {
106
58
  }
107
59
  });
108
60
  }
109
- function _askHydrate(uiViewportDialogService, viewportIndex) {
61
+ function _askHydrate(uiViewportDialogService, viewportId) {
110
62
  return new Promise(function (resolve, reject) {
111
63
  const message = 'Do you want to open this Segmentation?';
112
64
  const actions = [{
@@ -123,7 +75,7 @@ function _askHydrate(uiViewportDialogService, viewportIndex) {
123
75
  resolve(result);
124
76
  };
125
77
  uiViewportDialogService.show({
126
- viewportIndex,
78
+ viewportId,
127
79
  type: 'info',
128
80
  message,
129
81
  actions,
@@ -137,7 +89,7 @@ function _askHydrate(uiViewportDialogService, viewportIndex) {
137
89
  }
138
90
  /* harmony default export */ const utils_promptHydrateRT = (promptHydrateRT);
139
91
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
140
- var es = __webpack_require__(21572);
92
+ var es = __webpack_require__(69190);
141
93
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/viewports/_getStatusComponent.tsx
142
94
 
143
95
 
@@ -162,18 +114,19 @@ function _getStatusComponent(_ref) {
162
114
  break;
163
115
  case false:
164
116
  StatusIcon = () => /*#__PURE__*/react.createElement(ui_src/* Icon */.JO, {
117
+ className: "text-aqua-pale",
165
118
  name: "status-untracked"
166
119
  });
167
120
  ToolTipMessage = () => /*#__PURE__*/react.createElement("div", null, "Click LOAD to load RTSTRUCT.");
168
121
  }
169
122
  const StatusArea = () => /*#__PURE__*/react.createElement("div", {
170
- className: "flex h-6 leading-6 cursor-default text-sm text-white"
123
+ className: "flex h-6 cursor-default text-sm leading-6 text-white"
171
124
  }, /*#__PURE__*/react.createElement("div", {
172
- className: "min-w-[45px] flex items-center p-1 rounded-l-xl rounded-r bg-customgray-100"
125
+ className: "bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
173
126
  }, /*#__PURE__*/react.createElement(StatusIcon, null), /*#__PURE__*/react.createElement("span", {
174
127
  className: "ml-1"
175
128
  }, "RTSTRUCT")), !isHydrated && /*#__PURE__*/react.createElement("div", {
176
- className: "ml-1 px-1.5 rounded cursor-pointer hover:text-black bg-primary-main hover:bg-primary-light"
129
+ className: "bg-primary-main hover:bg-primary-light ml-1 cursor-pointer rounded px-1.5 hover:text-black"
177
130
  // Using onMouseUp here because onClick is not working when the viewport is not active and is styled with pointer-events:none
178
131
  ,
179
132
  onMouseUp: onStatusClick
@@ -210,10 +163,10 @@ function OHIFCornerstoneRTViewport(props) {
210
163
  children,
211
164
  displaySets,
212
165
  viewportOptions,
213
- viewportIndex,
214
166
  viewportLabel,
215
167
  servicesManager,
216
- extensionManager
168
+ extensionManager,
169
+ commandsManager
217
170
  } = props;
218
171
  const {
219
172
  displaySetService,
@@ -222,7 +175,8 @@ function OHIFCornerstoneRTViewport(props) {
222
175
  uiNotificationService,
223
176
  customizationService
224
177
  } = servicesManager.services;
225
- const toolGroupId = `${RT_TOOLGROUP_BASE_NAME}-${viewportIndex}`;
178
+ const viewportId = viewportOptions.viewportId;
179
+ const toolGroupId = `${RT_TOOLGROUP_BASE_NAME}-${viewportId}`;
226
180
 
227
181
  // RT viewport will always have a single display set
228
182
  if (displaySets.length > 1) {
@@ -252,7 +206,7 @@ function OHIFCornerstoneRTViewport(props) {
252
206
  const referencedDisplaySetRef = (0,react.useRef)(null);
253
207
  const {
254
208
  viewports,
255
- activeViewportIndex
209
+ activeViewportId
256
210
  } = viewportGrid;
257
211
  const referencedDisplaySet = rtDisplaySet.getReferenceDisplaySet();
258
212
  const referencedDisplaySetMetadata = _getReferencedDisplaySetMetadata(referencedDisplaySet);
@@ -272,6 +226,16 @@ function OHIFCornerstoneRTViewport(props) {
272
226
  const onElementDisabled = () => {
273
227
  setElement(null);
274
228
  };
229
+ const storePresentationState = (0,react.useCallback)(() => {
230
+ viewportGrid?.viewports.forEach(_ref => {
231
+ let {
232
+ viewportId
233
+ } = _ref;
234
+ commandsManager.runCommand('storePresentation', {
235
+ viewportId
236
+ });
237
+ });
238
+ }, [viewportGrid]);
275
239
  const getCornerstoneViewport = (0,react.useCallback)(() => {
276
240
  const {
277
241
  component: Component
@@ -292,7 +256,7 @@ function OHIFCornerstoneRTViewport(props) {
292
256
  onElementEnabled: onElementEnabled,
293
257
  onElementDisabled: onElementDisabled
294
258
  }));
295
- }, [viewportIndex, rtDisplaySet, toolGroupId]);
259
+ }, [viewportId, rtDisplaySet, toolGroupId]);
296
260
  const onSegmentChange = (0,react.useCallback)(direction => {
297
261
  direction = direction === 'left' ? -1 : 1;
298
262
  const segmentationId = rtDisplaySet.displaySetInstanceUID;
@@ -318,14 +282,15 @@ function OHIFCornerstoneRTViewport(props) {
318
282
  }
319
283
  utils_promptHydrateRT({
320
284
  servicesManager,
321
- viewportIndex,
322
- rtDisplaySet
285
+ viewportId,
286
+ rtDisplaySet,
287
+ preHydrateCallbacks: [storePresentationState]
323
288
  }).then(isHydrated => {
324
289
  if (isHydrated) {
325
290
  setIsHydrated(true);
326
291
  }
327
292
  });
328
- }, [servicesManager, viewportIndex, rtDisplaySet, rtIsLoading]);
293
+ }, [servicesManager, viewportId, rtDisplaySet, rtIsLoading]);
329
294
  (0,react.useEffect)(() => {
330
295
  const {
331
296
  unsubscribe
@@ -348,11 +313,11 @@ function OHIFCornerstoneRTViewport(props) {
348
313
  (0,react.useEffect)(() => {
349
314
  const {
350
315
  unsubscribe
351
- } = segmentationService.subscribe(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE, _ref => {
316
+ } = segmentationService.subscribe(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE, _ref2 => {
352
317
  let {
353
318
  percentComplete,
354
319
  numSegments
355
- } = _ref;
320
+ } = _ref2;
356
321
  setProcessingProgress({
357
322
  percentComplete,
358
323
  totalSegments: numSegments
@@ -367,14 +332,14 @@ function OHIFCornerstoneRTViewport(props) {
367
332
  Cleanup the SEG viewport when the viewport is destroyed
368
333
  */
369
334
  (0,react.useEffect)(() => {
370
- const onDisplaySetsRemovedSubscription = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_REMOVED, _ref2 => {
335
+ const onDisplaySetsRemovedSubscription = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_REMOVED, _ref3 => {
371
336
  let {
372
337
  displaySetInstanceUIDs
373
- } = _ref2;
374
- const activeViewport = viewports[activeViewportIndex];
338
+ } = _ref3;
339
+ const activeViewport = viewports.get(activeViewportId);
375
340
  if (displaySetInstanceUIDs.includes(activeViewport.displaySetInstanceUID)) {
376
341
  viewportGridService.setDisplaySetsForViewport({
377
- viewportIndex: activeViewportIndex,
342
+ viewportId: activeViewportId,
378
343
  displaySetInstanceUIDs: []
379
344
  });
380
345
  }
@@ -413,7 +378,7 @@ function OHIFCornerstoneRTViewport(props) {
413
378
  if (children && children.length) {
414
379
  childrenWithProps = children.map((child, index) => {
415
380
  return child && /*#__PURE__*/react.cloneElement(child, {
416
- viewportIndex,
381
+ viewportId,
417
382
  key: index
418
383
  });
419
384
  });
@@ -431,9 +396,16 @@ function OHIFCornerstoneRTViewport(props) {
431
396
  SeriesNumber
432
397
  } = referencedDisplaySetRef.current.metadata;
433
398
  const onStatusClick = async () => {
434
- const isHydrated = await _hydrateRT({
399
+ // Before hydrating a RT and make it added to all viewports in the grid
400
+ // that share the same frameOfReferenceUID, we need to store the viewport grid
401
+ // presentation state, so that we can restore it after hydrating the RT. This is
402
+ // required if the user has changed the viewport (other viewport than RT viewport)
403
+ // presentation state (w/l and invert) and then opens the RT. If we don't store
404
+ // the presentation state, the viewport will be reset to the default presentation
405
+ storePresentationState();
406
+ const isHydrated = await (0,_hydrateRT/* default */.Z)({
435
407
  rtDisplaySet,
436
- viewportIndex,
408
+ viewportId,
437
409
  servicesManager
438
410
  });
439
411
  setIsHydrated(isHydrated);
@@ -467,9 +439,9 @@ function OHIFCornerstoneRTViewport(props) {
467
439
  }
468
440
  }
469
441
  }), /*#__PURE__*/react.createElement("div", {
470
- className: "relative flex flex-row w-full h-full overflow-hidden"
442
+ className: "relative flex h-full w-full flex-row overflow-hidden"
471
443
  }, rtIsLoading && /*#__PURE__*/react.createElement(ui_src/* LoadingIndicatorTotalPercent */.bk, {
472
- className: "w-full h-full",
444
+ className: "h-full w-full",
473
445
  totalNumbers: processingProgress.totalSegments,
474
446
  percentComplete: processingProgress.percentComplete,
475
447
  loadingText: "Loading RTSTRUCT..."
@@ -477,7 +449,7 @@ function OHIFCornerstoneRTViewport(props) {
477
449
  }
478
450
  OHIFCornerstoneRTViewport.propTypes = {
479
451
  displaySets: prop_types_default().arrayOf((prop_types_default()).object),
480
- viewportIndex: (prop_types_default()).number.isRequired,
452
+ viewportId: (prop_types_default()).string.isRequired,
481
453
  dataSource: (prop_types_default()).object,
482
454
  children: (prop_types_default()).node,
483
455
  customProps: (prop_types_default()).object
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[199],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[506],{
3
3
 
4
- /***/ 31199:
4
+ /***/ 53506:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -9,7 +9,8 @@ __webpack_require__.r(__webpack_exports__);
9
9
 
10
10
  // EXPORTS
11
11
  __webpack_require__.d(__webpack_exports__, {
12
- "default": () => (/* binding */ cornerstone_dicom_rt_src)
12
+ "default": () => (/* binding */ cornerstone_dicom_rt_src),
13
+ hydrateRTDisplaySet: () => (/* reexport */ _hydrateRT/* default */.Z)
13
14
  });
14
15
 
15
16
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/package.json
@@ -21,11 +22,11 @@ const SOPClassHandlerName = 'dicom-rt';
21
22
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
22
23
 
23
24
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
24
- var react = __webpack_require__(32735);
25
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
26
- var src = __webpack_require__(48501);
25
+ var react = __webpack_require__(43001);
26
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
27
+ var src = __webpack_require__(78695);
27
28
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
28
- var dcmjs_es = __webpack_require__(22737);
29
+ var dcmjs_es = __webpack_require__(67540);
29
30
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/loadRTStruct.js
30
31
 
31
32
  const {
@@ -415,13 +416,16 @@ function getSopClassHandlerModule(_ref2) {
415
416
  }];
416
417
  }
417
418
  /* harmony default export */ const src_getSopClassHandlerModule = (getSopClassHandlerModule);
419
+ // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/_hydrateRT.ts
420
+ var _hydrateRT = __webpack_require__(50995);
418
421
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/index.tsx
419
422
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
420
423
 
421
424
 
422
425
 
426
+
423
427
  const Component = /*#__PURE__*/react.lazy(() => {
424
- return __webpack_require__.e(/* import() */ 581).then(__webpack_require__.bind(__webpack_require__, 72581));
428
+ return __webpack_require__.e(/* import() */ 471).then(__webpack_require__.bind(__webpack_require__, 56471));
425
429
  });
426
430
  const OHIFCornerstoneRTViewport = props => {
427
431
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -447,12 +451,14 @@ const extension = {
447
451
  getViewportModule(_ref) {
448
452
  let {
449
453
  servicesManager,
450
- extensionManager
454
+ extensionManager,
455
+ commandsManager
451
456
  } = _ref;
452
457
  const ExtendedOHIFCornerstoneRTViewport = props => {
453
458
  return /*#__PURE__*/react.createElement(OHIFCornerstoneRTViewport, _extends({
454
459
  servicesManager: servicesManager,
455
- extensionManager: extensionManager
460
+ extensionManager: extensionManager,
461
+ commandsManager: commandsManager
456
462
  }, props));
457
463
  };
458
464
  return [{
@@ -470,6 +476,76 @@ const extension = {
470
476
  };
471
477
  /* harmony default export */ const cornerstone_dicom_rt_src = (extension);
472
478
 
479
+
480
+ /***/ }),
481
+
482
+ /***/ 50995:
483
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
484
+
485
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
486
+ /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
487
+ /* harmony export */ });
488
+ async function _hydrateRTDisplaySet(_ref) {
489
+ let {
490
+ rtDisplaySet,
491
+ viewportId,
492
+ servicesManager
493
+ } = _ref;
494
+ const {
495
+ segmentationService,
496
+ hangingProtocolService,
497
+ viewportGridService
498
+ } = servicesManager.services;
499
+ const displaySetInstanceUID = rtDisplaySet.referencedDisplaySetInstanceUID;
500
+ let segmentationId = null;
501
+
502
+ // We need the hydration to notify panels about the new segmentation added
503
+ const suppressEvents = false;
504
+ segmentationId = await segmentationService.createSegmentationForRTDisplaySet(rtDisplaySet, segmentationId, suppressEvents);
505
+ segmentationService.hydrateSegmentation(rtDisplaySet.displaySetInstanceUID);
506
+ const {
507
+ viewports
508
+ } = viewportGridService.getState();
509
+ const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
510
+ viewportGridService.setDisplaySetsForViewports(updatedViewports);
511
+
512
+ // Todo: fix this after we have a better way for stack viewport segmentations
513
+
514
+ // check every viewport in the viewports to see if the displaySetInstanceUID
515
+ // is being displayed, if so we need to update the viewport to use volume viewport
516
+ // (if already is not using it) since Cornerstone3D currently only supports
517
+ // volume viewport for segmentation
518
+ viewports.forEach(viewport => {
519
+ if (viewport.viewportId === viewportId) {
520
+ return;
521
+ }
522
+ const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, rtDisplaySet.displaySetInstanceUID);
523
+ if (shouldDisplaySeg) {
524
+ updatedViewports.push({
525
+ viewportId: viewport.viewportId,
526
+ displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
527
+ viewportOptions: {
528
+ // Note: This is a hack to get the grid to re-render the OHIFCornerstoneViewport component
529
+ // Used for segmentation hydration right now, since the logic to decide whether
530
+ // a viewport needs to render a segmentation lives inside the CornerstoneViewportService
531
+ // so we need to re-render (force update via change of the needsRerendering) so that React
532
+ // does the diffing and decides we should render this again (although the id and element has not changed)
533
+ // so that the CornerstoneViewportService can decide whether to render the segmentation or not.
534
+ needsRerendering: true,
535
+ initialImageOptions: {
536
+ preset: 'middle'
537
+ }
538
+ }
539
+ });
540
+ }
541
+ });
542
+
543
+ // Do the entire update at once
544
+ viewportGridService.setDisplaySetsForViewports(updatedViewports);
545
+ return true;
546
+ }
547
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_hydrateRTDisplaySet);
548
+
473
549
  /***/ })
474
550
 
475
551
  }]);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[935],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[604],{
3
3
 
4
- /***/ 75935:
4
+ /***/ 97604:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -1841,7 +1841,6 @@ var utils = {
1841
1841
  };
1842
1842
 
1843
1843
 
1844
- //# sourceMappingURL=dicomweb-client.es.js.map
1845
1844
 
1846
1845
 
1847
1846
  /***/ })