@ohif/app 3.7.0-beta.11 → 3.7.0-beta.110

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 (66) hide show
  1. package/dist/{917.bundle.b9983325adf849bff6fd.js → 12.bundle.5ea15cb6633d8028e47d.js} +6 -6
  2. package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.253395f320b72180da63.js} +6 -6
  3. package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.ceb057236403bcb630ac.js} +226 -204
  4. package/dist/{351.css → 181.css} +1 -1
  5. package/dist/{744.bundle.4c4b884f90eb70482821.js → 19.bundle.03f809886c36c388d05c.js} +240 -381
  6. package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.d3490836f71e001dd30f.js} +2089 -692
  7. package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
  8. package/dist/221.bundle.dc6dac346d724d6baeae.js +1779 -0
  9. package/dist/221.css +2 -0
  10. package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
  11. package/dist/{976.bundle.9cc2382162214ea0af2b.js → 236.bundle.7b906cd27864d65f32c0.js} +89 -105
  12. package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.8084960e3318cda37317.js} +52 -36
  13. package/dist/{973.bundle.4584df05b320b94cace5.js → 281.bundle.c9854cc25c839e49c2c8.js} +18 -14
  14. package/dist/{82.bundle.9a0e7f08d4bce18d302f.js → 342.bundle.7d6c1e6bda1c67d729a7.js} +1802 -489
  15. package/dist/{404.bundle.3d65ff813eead20462d3.js → 359.bundle.72d017719489ff11057b.js} +47 -134
  16. package/dist/{192.bundle.950e5380ea63c6d635d5.js → 370.bundle.e55d75ff1bdccee16cde.js} +117 -103
  17. package/dist/{790.bundle.7327fec7833ceea2784b.js → 410.bundle.5b41c68cb0f210a83f13.js} +11 -9
  18. package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.af0a207c29b109f84159.js} +49 -17
  19. package/dist/{569.bundle.c8e771a8d28e237b32be.js → 451.bundle.9fd36f52ff69594f0669.js} +86 -106
  20. package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.b3d77b83b1593c09a504.js} +78 -99
  21. package/dist/{199.bundle.f50ffd85a4334de2f5c1.js → 506.bundle.468dc6db2a9bfa96bb44.js} +11 -9
  22. package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 530.bundle.a03b6f942ace3e1baa1e.js} +726 -447
  23. package/dist/579.css +1 -0
  24. package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
  25. package/dist/613.bundle.74d59dec1983ef3efcdc.js +532 -0
  26. package/dist/{984.bundle.119557c018e6371b4628.js → 663.bundle.a6196baf5853e7d3f7c7.js} +68 -38
  27. package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.dccef1f36e4bc79bcc48.js} +6 -6
  28. package/dist/{50.bundle.65ff60818862eda39d12.js → 687.bundle.e2c9c42ad3989a14d513.js} +218 -9
  29. package/dist/{331.bundle.bd0c13931a21d53086c9.js → 743.bundle.489f7df3a089d4d374e1.js} +26294 -21326
  30. package/dist/757.bundle.ec8301d8e70d2b990f65.js +17067 -0
  31. package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.4b2dc46a35012b898e1a.js} +95 -64
  32. package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
  33. package/dist/{283.bundle.1015e87c3a47b1f1379c.js → 788.bundle.f4493409508bdffa7af8.js} +120 -370
  34. package/dist/{642.bundle.8905e515ce593e57ceb1.js → 814.bundle.10a2cbf02b044387e68b.js} +6 -6
  35. package/dist/{707.bundle.f774f3e4a687ddd60a32.js → 82.bundle.9c6461625afd2e38b997.js} +1203 -804
  36. package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.891f2e57b1b7bc2f4cb4.js} +81 -34
  37. package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.4b3a7f2079d085fdbcb3.js} +34 -29
  38. package/dist/945.min.worker.js +1 -1
  39. package/dist/945.min.worker.js.map +1 -1
  40. package/dist/{270.bundle.4564621556b0f963a004.js → 957.bundle.9ea4506963ef8b2d84ba.js} +7095 -979
  41. package/dist/{208.bundle.7f610a302dc54c4924da.js → 99.bundle.334c4bd4e4e81aaf45ad.js} +86 -105
  42. package/dist/_redirects +1 -1
  43. package/dist/app-config.js +35 -17
  44. package/dist/app.bundle.css +13 -12
  45. package/dist/{app.bundle.3d598a4738bdc22950d3.js → app.bundle.fd6ac18b8874825722a0.js} +72771 -67313
  46. package/dist/assets/yandex-browser-manifest.json +1 -1
  47. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  48. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  49. package/dist/{dicom-microscopy-viewer.bundle.aa60bdf008c32c39cfd7.js → dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js} +5 -4
  50. package/dist/es6-shim.min.js +3569 -2
  51. package/dist/google.js +8 -7
  52. package/dist/index.html +2 -1
  53. package/dist/{index.worker.1c69152d710fa7b84bce.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
  54. package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
  55. package/dist/init-service-worker.js +3 -5
  56. package/dist/oidc-client.min.js +10857 -39
  57. package/dist/polyfill.min.js +184 -1
  58. package/dist/silent-refresh.html +18 -9
  59. package/dist/sw.js +1 -1
  60. package/package.json +21 -22
  61. package/dist/616.bundle.de530ae226dfa5573f6e.js +0 -685
  62. package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
  63. package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
  64. /package/dist/{806.css → 19.css} +0 -0
  65. /package/dist/{55.css → 250.css} +0 -0
  66. /package/dist/{707.css → 82.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[744],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[19,579],{
3
3
 
4
- /***/ 43418:
4
+ /***/ 41832:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
 
@@ -12,16 +12,16 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  });
13
13
 
14
14
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
15
- var react = __webpack_require__(32735);
15
+ var react = __webpack_require__(43001);
16
16
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
17
- var prop_types = __webpack_require__(60216);
17
+ var prop_types = __webpack_require__(3827);
18
18
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
19
19
  // EXTERNAL MODULE: ../../../node_modules/xstate/es/index.js + 22 modules
20
- var es = __webpack_require__(87519);
21
- // EXTERNAL MODULE: ../../../node_modules/@xstate/react/lib/index.js
22
- var lib = __webpack_require__(38531);
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
24
- var src = __webpack_require__(28619);
20
+ var es = __webpack_require__(261);
21
+ // EXTERNAL MODULE: ../../../node_modules/@xstate/react/es/index.js + 8 modules
22
+ var react_es = __webpack_require__(44530);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
24
+ var src = __webpack_require__(71783);
25
25
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
26
26
 
27
27
  const RESPONSE = {
@@ -37,6 +37,7 @@ const machineConfiguration = {
37
37
  id: 'measurementTracking',
38
38
  initial: 'idle',
39
39
  context: {
40
+ activeViewportId: null,
40
41
  trackedStudy: '',
41
42
  trackedSeries: [],
42
43
  ignoredSeries: [],
@@ -66,7 +67,12 @@ const machineConfiguration = {
66
67
  cond: 'hasNotIgnoredSRSeriesForHydration'
67
68
  },
68
69
  RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport',
69
- HYDRATE_SR: 'hydrateStructuredReport'
70
+ HYDRATE_SR: 'hydrateStructuredReport',
71
+ UPDATE_ACTIVE_VIEWPORT_ID: {
72
+ actions: (0,es/* assign */.f0)({
73
+ activeViewportId: (_, event) => event.activeViewportId
74
+ })
75
+ }
70
76
  }
71
77
  },
72
78
  promptBeginTracking: {
@@ -247,7 +253,7 @@ const defaultOptions = {
247
253
  showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
248
254
  console.warn('showStructuredReportDisplaySetInActiveViewport: not implemented');
249
255
  },
250
- clearContext: (0,es.assign)({
256
+ clearContext: (0,es/* assign */.f0)({
251
257
  trackedStudy: '',
252
258
  trackedSeries: [],
253
259
  ignoredSeries: [],
@@ -256,7 +262,7 @@ const defaultOptions = {
256
262
  prevIgnoredSeries: []
257
263
  }),
258
264
  // Promise resolves w/ `evt.data.*`
259
- setTrackedStudyAndSeries: (0,es.assign)((ctx, evt) => ({
265
+ setTrackedStudyAndSeries: (0,es/* assign */.f0)((ctx, evt) => ({
260
266
  prevTrackedStudy: ctx.trackedStudy,
261
267
  prevTrackedSeries: ctx.trackedSeries.slice(),
262
268
  prevIgnoredSeries: ctx.ignoredSeries.slice(),
@@ -265,7 +271,7 @@ const defaultOptions = {
265
271
  trackedSeries: [evt.data.SeriesInstanceUID],
266
272
  ignoredSeries: []
267
273
  })),
268
- setTrackedStudyAndMultipleSeries: (0,es.assign)((ctx, evt) => {
274
+ setTrackedStudyAndMultipleSeries: (0,es/* assign */.f0)((ctx, evt) => {
269
275
  const studyInstanceUID = evt.StudyInstanceUID || evt.data.StudyInstanceUID;
270
276
  const seriesInstanceUIDs = evt.SeriesInstanceUIDs || evt.data.SeriesInstanceUIDs;
271
277
  return {
@@ -278,24 +284,24 @@ const defaultOptions = {
278
284
  ignoredSeries: []
279
285
  };
280
286
  }),
281
- setIsDirtyToClean: (0,es.assign)((ctx, evt) => ({
287
+ setIsDirtyToClean: (0,es/* assign */.f0)((ctx, evt) => ({
282
288
  isDirty: false
283
289
  })),
284
- setIsDirty: (0,es.assign)((ctx, evt) => ({
290
+ setIsDirty: (0,es/* assign */.f0)((ctx, evt) => ({
285
291
  isDirty: true
286
292
  })),
287
- ignoreSeries: (0,es.assign)((ctx, evt) => ({
293
+ ignoreSeries: (0,es/* assign */.f0)((ctx, evt) => ({
288
294
  prevIgnoredSeries: [...ctx.ignoredSeries],
289
295
  ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID]
290
296
  })),
291
- ignoreHydrationForSRSeries: (0,es.assign)((ctx, evt) => ({
297
+ ignoreHydrationForSRSeries: (0,es/* assign */.f0)((ctx, evt) => ({
292
298
  ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID]
293
299
  })),
294
- addTrackedSeries: (0,es.assign)((ctx, evt) => ({
300
+ addTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
295
301
  prevTrackedSeries: [...ctx.trackedSeries],
296
302
  trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID]
297
303
  })),
298
- removeTrackedSeries: (0,es.assign)((ctx, evt) => ({
304
+ removeTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
299
305
  prevTrackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID),
300
306
  trackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID)
301
307
  }))
@@ -362,36 +368,36 @@ function promptBeginTracking(_ref, ctx, evt) {
362
368
  uiViewportDialogService
363
369
  } = servicesManager.services;
364
370
  const {
365
- viewportIndex,
371
+ viewportId,
366
372
  StudyInstanceUID,
367
373
  SeriesInstanceUID
368
374
  } = evt;
369
375
  return new Promise(async function (resolve, reject) {
370
- let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportIndex);
376
+ let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
371
377
  resolve({
372
378
  userResponse: promptResult,
373
379
  StudyInstanceUID,
374
380
  SeriesInstanceUID,
375
- viewportIndex
381
+ viewportId
376
382
  });
377
383
  });
378
384
  }
379
- function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
385
+ function _askTrackMeasurements(uiViewportDialogService, viewportId) {
380
386
  return new Promise(function (resolve, reject) {
381
387
  const message = 'Track measurements for this series?';
382
388
  const actions = [{
383
389
  id: 'prompt-begin-tracking-cancel',
384
- type: src/* ButtonEnums.type */.LZ.U.secondary,
390
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
385
391
  text: 'No',
386
392
  value: promptBeginTracking_RESPONSE.CANCEL
387
393
  }, {
388
394
  id: 'prompt-begin-tracking-no-do-not-ask-again',
389
- type: src/* ButtonEnums.type */.LZ.U.secondary,
395
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
390
396
  text: 'No, do not ask again',
391
397
  value: promptBeginTracking_RESPONSE.NO_NEVER
392
398
  }, {
393
399
  id: 'prompt-begin-tracking-yes',
394
- type: src/* ButtonEnums.type */.LZ.U.primary,
400
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
395
401
  text: 'Yes',
396
402
  value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
397
403
  }];
@@ -400,7 +406,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
400
406
  resolve(result);
401
407
  };
402
408
  uiViewportDialogService.show({
403
- viewportIndex,
409
+ viewportId,
404
410
  id: 'measurement-tracking-prompt-begin-tracking',
405
411
  type: 'info',
406
412
  message,
@@ -433,37 +439,37 @@ function promptTrackNewSeries(_ref, ctx, evt) {
433
439
  UIViewportDialogService
434
440
  } = servicesManager.services;
435
441
  const {
436
- viewportIndex,
442
+ viewportId,
437
443
  StudyInstanceUID,
438
444
  SeriesInstanceUID
439
445
  } = evt;
440
446
  return new Promise(async function (resolve, reject) {
441
- let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportIndex);
447
+ let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
442
448
  if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
443
- promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
449
+ promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
444
450
  }
445
451
  resolve({
446
452
  userResponse: promptResult,
447
453
  StudyInstanceUID,
448
454
  SeriesInstanceUID,
449
- viewportIndex,
455
+ viewportId,
450
456
  isBackupSave: false
451
457
  });
452
458
  });
453
459
  }
454
- function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
460
+ function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
455
461
  return new Promise(function (resolve, reject) {
456
462
  const message = 'Do you want to add this measurement to the existing report?';
457
463
  const actions = [{
458
- type: src/* ButtonEnums.type */.LZ.U.secondary,
464
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
459
465
  text: 'Cancel',
460
466
  value: promptTrackNewSeries_RESPONSE.CANCEL
461
467
  }, {
462
- type: src/* ButtonEnums.type */.LZ.U.primary,
468
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
463
469
  text: 'Create new report',
464
470
  value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
465
471
  }, {
466
- type: src/* ButtonEnums.type */.LZ.U.primary,
472
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
467
473
  text: 'Add to existing report',
468
474
  value: promptTrackNewSeries_RESPONSE.ADD_SERIES
469
475
  }];
@@ -472,7 +478,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
472
478
  resolve(result);
473
479
  };
474
480
  uiViewportDialogService.show({
475
- viewportIndex,
481
+ viewportId,
476
482
  type: 'info',
477
483
  message,
478
484
  actions,
@@ -484,7 +490,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
484
490
  });
485
491
  });
486
492
  }
487
- function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
493
+ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
488
494
  return new Promise(function (resolve, reject) {
489
495
  const message = 'You have existing tracked measurements. What would you like to do with your existing tracked measurements?';
490
496
  const actions = [{
@@ -505,7 +511,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
505
511
  resolve(result);
506
512
  };
507
513
  UIViewportDialogService.show({
508
- viewportIndex,
514
+ viewportId,
509
515
  type: 'warning',
510
516
  message,
511
517
  actions,
@@ -536,25 +542,25 @@ function promptTrackNewStudy(_ref, ctx, evt) {
536
542
  UIViewportDialogService
537
543
  } = servicesManager.services;
538
544
  const {
539
- viewportIndex,
545
+ viewportId,
540
546
  StudyInstanceUID,
541
547
  SeriesInstanceUID
542
548
  } = evt;
543
549
  return new Promise(async function (resolve, reject) {
544
- let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex);
550
+ let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
545
551
  if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
546
- promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
552
+ promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
547
553
  }
548
554
  resolve({
549
555
  userResponse: promptResult,
550
556
  StudyInstanceUID,
551
557
  SeriesInstanceUID,
552
- viewportIndex,
558
+ viewportId,
553
559
  isBackupSave: false
554
560
  });
555
561
  });
556
562
  }
557
- function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex) {
563
+ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
558
564
  return new Promise(function (resolve, reject) {
559
565
  const message = 'Track measurements for this series?';
560
566
  const actions = [{
@@ -575,7 +581,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
575
581
  resolve(result);
576
582
  };
577
583
  UIViewportDialogService.show({
578
- viewportIndex,
584
+ viewportId,
579
585
  type: 'info',
580
586
  message,
581
587
  actions,
@@ -587,7 +593,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
587
593
  });
588
594
  });
589
595
  }
590
- function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
596
+ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
591
597
  return new Promise(function (resolve, reject) {
592
598
  const message = 'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
593
599
  const actions = [{
@@ -608,7 +614,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
608
614
  resolve(result);
609
615
  };
610
616
  UIViewportDialogService.show({
611
- viewportIndex,
617
+ viewportId,
612
618
  type: 'warning',
613
619
  message,
614
620
  actions,
@@ -621,70 +627,17 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
621
627
  });
622
628
  }
623
629
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
624
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
625
- var core_src = __webpack_require__(48501);
626
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportAsync.tsx
627
-
628
-
629
-
630
- /**
631
- *
632
- * @param {*} servicesManager
633
- * @param {*} dataSource
634
- * @param {*} measurements
635
- * @param {*} options
636
- * @returns {string[]} displaySetInstanceUIDs
637
- */
638
- async function createReportAsync(servicesManager, commandsManager, dataSource, measurements, options) {
639
- const {
640
- displaySetService,
641
- uiNotificationService,
642
- uiDialogService
643
- } = servicesManager.services;
644
- const loadingDialogId = uiDialogService.create({
645
- showOverlay: true,
646
- isDraggable: false,
647
- centralize: true,
648
- // TODO: Create a loading indicator component + zeplin design?
649
- content: Loading
650
- });
651
- try {
652
- const naturalizedReport = await commandsManager.runCommand('storeMeasurements', {
653
- measurementData: measurements,
654
- dataSource,
655
- additionalFindingTypes: ['ArrowAnnotate'],
656
- options
657
- }, 'CORNERSTONE_STRUCTURED_REPORT');
658
-
659
- // The "Mode" route listens for DicomMetadataStore changes
660
- // When a new instance is added, it listens and
661
- // automatically calls makeDisplaySets
662
- core_src.DicomMetadataStore.addInstances([naturalizedReport], true);
663
- const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet();
664
- uiNotificationService.show({
665
- title: 'Create Report',
666
- message: 'Measurements saved successfully',
667
- type: 'success'
668
- });
669
- return [displaySetInstanceUID];
670
- } catch (error) {
671
- uiNotificationService.show({
672
- title: 'Create Report',
673
- message: error.message || 'Failed to store measurements',
674
- type: 'error'
675
- });
676
- } finally {
677
- uiDialogService.dismiss({
678
- id: loadingDialogId
679
- });
680
- }
681
- }
682
- function Loading() {
683
- return /*#__PURE__*/react.createElement("div", {
684
- className: "text-primary-active"
685
- }, "Loading...");
630
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 76 modules
631
+ var default_src = __webpack_require__(56342);
632
+ ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
633
+ const MIN_SR_SERIES_NUMBER = 4700;
634
+ function getNextSRSeriesNumber(displaySetService) {
635
+ const activeDisplaySets = displaySetService.getActiveDisplaySets();
636
+ const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
637
+ const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
638
+ const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
639
+ return maxSeriesNumber + 1;
686
640
  }
687
- /* harmony default export */ const _shared_createReportAsync = (createReportAsync);
688
641
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/PROMPT_RESPONSES.js
689
642
  const PROMPT_RESPONSES_RESPONSE = {
690
643
  NO_NEVER: -1,
@@ -695,138 +648,10 @@ const PROMPT_RESPONSES_RESPONSE = {
695
648
  NO_NOT_FOR_SERIES: 4
696
649
  };
697
650
  /* harmony default export */ const PROMPT_RESPONSES = (PROMPT_RESPONSES_RESPONSE);
698
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx
699
- /* eslint-disable react/display-name */
700
-
701
-
702
-
703
- function createReportDialogPrompt(uiDialogService) {
704
- return new Promise(function (resolve, reject) {
705
- let dialogId = undefined;
706
- const _handleClose = () => {
707
- // Dismiss dialog
708
- uiDialogService.dismiss({
709
- id: dialogId
710
- });
711
- // Notify of cancel action
712
- resolve({
713
- action: PROMPT_RESPONSES.CANCEL,
714
- value: undefined
715
- });
716
- };
717
-
718
- /**
719
- *
720
- * @param {string} param0.action - value of action performed
721
- * @param {string} param0.value - value from input field
722
- */
723
- const _handleFormSubmit = _ref => {
724
- let {
725
- action,
726
- value
727
- } = _ref;
728
- switch (action.id) {
729
- case 'save':
730
- // Only save if description is not blank otherwise ignore
731
- if (value.label && value.label.trim() !== '') {
732
- resolve({
733
- action: PROMPT_RESPONSES.CREATE_REPORT,
734
- value: value.label.trim()
735
- });
736
- uiDialogService.dismiss({
737
- id: dialogId
738
- });
739
- }
740
- break;
741
- case 'cancel':
742
- uiDialogService.dismiss({
743
- id: dialogId
744
- });
745
- resolve({
746
- action: PROMPT_RESPONSES.CANCEL,
747
- value: undefined
748
- });
749
- break;
750
- }
751
- };
752
- dialogId = uiDialogService.create({
753
- centralize: true,
754
- isDraggable: false,
755
- content: src/* Dialog */.Vq,
756
- useLastPosition: false,
757
- showOverlay: true,
758
- contentProps: {
759
- title: 'Create Report',
760
- value: {
761
- label: ''
762
- },
763
- noCloseButton: true,
764
- onClose: _handleClose,
765
- actions: [{
766
- id: 'cancel',
767
- text: 'Cancel',
768
- type: src/* ButtonEnums.type */.LZ.U.secondary
769
- }, {
770
- id: 'save',
771
- text: 'Save',
772
- type: src/* ButtonEnums.type */.LZ.U.primary
773
- }],
774
- // TODO: Should be on button press...
775
- onSubmit: _handleFormSubmit,
776
- body: _ref2 => {
777
- let {
778
- value,
779
- setValue
780
- } = _ref2;
781
- const onChangeHandler = event => {
782
- event.persist();
783
- setValue(value => ({
784
- ...value,
785
- label: event.target.value
786
- }));
787
- };
788
- const onKeyPressHandler = event => {
789
- if (event.key === 'Enter') {
790
- // Trigger form submit
791
- _handleFormSubmit({
792
- action: {
793
- id: 'save'
794
- },
795
- value
796
- });
797
- }
798
- };
799
- return /*#__PURE__*/react.createElement("div", {
800
- className: ""
801
- }, /*#__PURE__*/react.createElement(src/* Input */.II, {
802
- label: "Enter the report name",
803
- labelClassName: "text-white grow leading-[1.2] text-[14px]",
804
- autoFocus: true,
805
- className: "bg-black border-primary-main grow",
806
- type: "text",
807
- value: value.label,
808
- onChange: onChangeHandler,
809
- onKeyPress: onKeyPressHandler
810
- }));
811
- }
812
- }
813
- });
814
- });
815
- }
816
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
817
- const MIN_SR_SERIES_NUMBER = 4700;
818
- function getNextSRSeriesNumber(displaySetService) {
819
- const activeDisplaySets = displaySetService.getActiveDisplaySets();
820
- const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
821
- const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
822
- const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
823
- return maxSeriesNumber + 1;
824
- }
825
651
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js
826
652
 
827
653
 
828
654
 
829
-
830
655
  function promptSaveReport(_ref, ctx, evt) {
831
656
  let {
832
657
  servicesManager,
@@ -838,7 +663,7 @@ function promptSaveReport(_ref, ctx, evt) {
838
663
  measurementService,
839
664
  displaySetService
840
665
  } = servicesManager.services;
841
- const viewportIndex = evt.viewportIndex === undefined ? evt.data.viewportIndex : evt.viewportIndex;
666
+ const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
842
667
  const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
843
668
  const StudyInstanceUID = evt?.data?.StudyInstanceUID;
844
669
  const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
@@ -849,7 +674,9 @@ function promptSaveReport(_ref, ctx, evt) {
849
674
  let displaySetInstanceUIDs;
850
675
  return new Promise(async function (resolve, reject) {
851
676
  // TODO: Fallback if (uiDialogService) {
852
- const promptResult = await createReportDialogPrompt(uiDialogService);
677
+ const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
678
+ extensionManager
679
+ });
853
680
  if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
854
681
  const dataSources = extensionManager.getDataSources();
855
682
  const dataSource = dataSources[0];
@@ -861,9 +688,20 @@ function promptSaveReport(_ref, ctx, evt) {
861
688
  : promptResult.value; // provided value
862
689
 
863
690
  const SeriesNumber = getNextSRSeriesNumber(displaySetService);
864
- displaySetInstanceUIDs = await _shared_createReportAsync(servicesManager, commandsManager, dataSource, trackedMeasurements, {
865
- SeriesDescription,
866
- SeriesNumber
691
+ const getReport = async () => {
692
+ return commandsManager.runCommand('storeMeasurements', {
693
+ measurementData: trackedMeasurements,
694
+ dataSource,
695
+ additionalFindingTypes: ['ArrowAnnotate'],
696
+ options: {
697
+ SeriesDescription,
698
+ SeriesNumber
699
+ }
700
+ }, 'CORNERSTONE_STRUCTURED_REPORT');
701
+ };
702
+ displaySetInstanceUIDs = await (0,default_src.createReportAsync)({
703
+ servicesManager,
704
+ getReport
867
705
  });
868
706
  } else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
869
707
  // Do nothing
@@ -873,14 +711,14 @@ function promptSaveReport(_ref, ctx, evt) {
873
711
  createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
874
712
  StudyInstanceUID,
875
713
  SeriesInstanceUID,
876
- viewportIndex,
714
+ viewportId,
877
715
  isBackupSave
878
716
  });
879
717
  });
880
718
  }
881
719
  /* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
882
720
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
883
- var cornerstone_dicom_sr_src = __webpack_require__(65948);
721
+ var cornerstone_dicom_sr_src = __webpack_require__(42170);
884
722
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
885
723
 
886
724
 
@@ -896,19 +734,20 @@ const promptHydrateStructuredReport_RESPONSE = {
896
734
  function promptHydrateStructuredReport(_ref, ctx, evt) {
897
735
  let {
898
736
  servicesManager,
899
- extensionManager
737
+ extensionManager,
738
+ appConfig
900
739
  } = _ref;
901
740
  const {
902
741
  uiViewportDialogService,
903
742
  displaySetService
904
743
  } = servicesManager.services;
905
744
  const {
906
- viewportIndex,
745
+ viewportId,
907
746
  displaySetInstanceUID
908
747
  } = evt;
909
748
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
910
749
  return new Promise(async function (resolve, reject) {
911
- const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex);
750
+ const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
912
751
 
913
752
  // Need to do action here... So we can set state...
914
753
  let StudyInstanceUID, SeriesInstanceUIDs;
@@ -916,7 +755,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
916
755
  console.warn('!! HYDRATING STRUCTURED REPORT');
917
756
  const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
918
757
  servicesManager,
919
- extensionManager
758
+ extensionManager,
759
+ appConfig
920
760
  }, displaySetInstanceUID);
921
761
  StudyInstanceUID = hydrationResult.StudyInstanceUID;
922
762
  SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
@@ -925,21 +765,21 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
925
765
  userResponse: promptResult,
926
766
  displaySetInstanceUID: evt.displaySetInstanceUID,
927
767
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
928
- viewportIndex,
768
+ viewportId,
929
769
  StudyInstanceUID,
930
770
  SeriesInstanceUIDs
931
771
  });
932
772
  });
933
773
  }
934
- function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex) {
774
+ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
935
775
  return new Promise(function (resolve, reject) {
936
776
  const message = 'Do you want to continue tracking measurements for this study?';
937
777
  const actions = [{
938
- type: src/* ButtonEnums.type */.LZ.U.secondary,
778
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
939
779
  text: 'No',
940
780
  value: promptHydrateStructuredReport_RESPONSE.CANCEL
941
781
  }, {
942
- type: src/* ButtonEnums.type */.LZ.U.primary,
782
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
943
783
  text: 'Yes',
944
784
  value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
945
785
  }];
@@ -948,7 +788,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
948
788
  resolve(result);
949
789
  };
950
790
  uiViewportDialogService.show({
951
- viewportIndex,
791
+ viewportId,
952
792
  type: 'info',
953
793
  message,
954
794
  actions,
@@ -972,7 +812,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
972
812
  displaySetService
973
813
  } = servicesManager.services;
974
814
  const {
975
- viewportIndex,
815
+ viewportId,
976
816
  displaySetInstanceUID
977
817
  } = evt;
978
818
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
@@ -986,13 +826,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
986
826
  resolve({
987
827
  displaySetInstanceUID: evt.displaySetInstanceUID,
988
828
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
989
- viewportIndex,
829
+ viewportId,
990
830
  StudyInstanceUID,
991
831
  SeriesInstanceUIDs
992
832
  });
993
833
  });
994
834
  }
995
835
  /* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
836
+ // EXTERNAL MODULE: ./state/index.js + 1 modules
837
+ var state = __webpack_require__(62657);
996
838
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
997
839
 
998
840
 
@@ -1006,6 +848,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
1006
848
 
1007
849
 
1008
850
 
851
+
1009
852
  const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
1010
853
  TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
1011
854
  const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
@@ -1026,9 +869,10 @@ _ref2 // Component props
1026
869
  let {
1027
870
  children
1028
871
  } = _ref2;
872
+ const [appConfig] = (0,state/* useAppConfig */.M)();
1029
873
  const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
1030
874
  const {
1031
- activeViewportIndex,
875
+ activeViewportId,
1032
876
  viewports
1033
877
  } = viewportGrid;
1034
878
  const {
@@ -1040,11 +884,12 @@ _ref2 // Component props
1040
884
  jumpToFirstMeasurementInActiveViewport: (ctx, evt) => {
1041
885
  const {
1042
886
  trackedStudy,
1043
- trackedSeries
887
+ trackedSeries,
888
+ activeViewportId
1044
889
  } = ctx;
1045
890
  const measurements = measurementService.getMeasurements();
1046
891
  const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
1047
- console.log('jumping to measurement reset viewport', viewportGrid.activeViewportIndex, trackedMeasurements[0]);
892
+ console.log('jumping to measurement reset viewport', activeViewportId, trackedMeasurements[0]);
1048
893
  const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
1049
894
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
1050
895
  const referencedImages = referencedDisplaySet.images;
@@ -1064,7 +909,7 @@ _ref2 // Component props
1064
909
  }
1065
910
  }
1066
911
  viewportGridService.setDisplaySetsForViewport({
1067
- viewportIndex: viewportGrid.activeViewportIndex,
912
+ viewportId: activeViewportId,
1068
913
  displaySetInstanceUIDs: [referencedDisplaySetUID],
1069
914
  viewportOptions: {
1070
915
  initialImageOptions: {
@@ -1075,9 +920,9 @@ _ref2 // Component props
1075
920
  },
1076
921
  showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
1077
922
  if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
1078
- const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0].displaySetInstanceUID;
923
+ const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0];
1079
924
  viewportGridService.setDisplaySetsForViewport({
1080
- viewportIndex: evt.data.viewportIndex,
925
+ viewportId: evt.data.viewportId,
1081
926
  displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
1082
927
  });
1083
928
  }
@@ -1101,28 +946,34 @@ _ref2 // Component props
1101
946
  machineOptions.services = Object.assign({}, machineOptions.services, {
1102
947
  promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
1103
948
  servicesManager,
1104
- extensionManager
949
+ extensionManager,
950
+ appConfig
1105
951
  }),
1106
952
  promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
1107
953
  servicesManager,
1108
- extensionManager
954
+ extensionManager,
955
+ appConfig
1109
956
  }),
1110
957
  promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
1111
958
  servicesManager,
1112
- extensionManager
959
+ extensionManager,
960
+ appConfig
1113
961
  }),
1114
962
  promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
1115
963
  servicesManager,
1116
964
  commandsManager,
1117
- extensionManager
965
+ extensionManager,
966
+ appConfig
1118
967
  }),
1119
968
  promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
1120
969
  servicesManager,
1121
- extensionManager
970
+ extensionManager,
971
+ appConfig
1122
972
  }),
1123
973
  hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
1124
974
  servicesManager,
1125
- extensionManager
975
+ extensionManager,
976
+ appConfig
1126
977
  })
1127
978
  });
1128
979
 
@@ -1135,13 +986,19 @@ _ref2 // Component props
1135
986
  // - Fix viewport border resize
1136
987
  // - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
1137
988
 
1138
- const measurementTrackingMachine = (0,es.Machine)(machineConfiguration, machineOptions);
1139
- const [trackedMeasurements, sendTrackedMeasurementsEvent, trackedMeasurementsService] = (0,lib.useMachine)(measurementTrackingMachine);
989
+ const measurementTrackingMachine = (0,es/* Machine */.J)(machineConfiguration, machineOptions);
990
+ const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,react_es/* useMachine */.eO)(measurementTrackingMachine);
991
+ (0,react.useEffect)(() => {
992
+ // Update the state machine with the active viewport ID
993
+ sendTrackedMeasurementsEvent('UPDATE_ACTIVE_VIEWPORT_ID', {
994
+ activeViewportId
995
+ });
996
+ }, [activeViewportId, sendTrackedMeasurementsEvent]);
1140
997
 
1141
998
  // ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
1142
999
  (0,react.useEffect)(() => {
1143
- if (viewports.length > 0) {
1144
- const activeViewport = viewports[activeViewportIndex];
1000
+ if (viewports.size > 0) {
1001
+ const activeViewport = viewports.get(activeViewportId);
1145
1002
  if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
1146
1003
  return;
1147
1004
  }
@@ -1180,11 +1037,11 @@ _ref2 // Component props
1180
1037
  sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
1181
1038
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
1182
1039
  SeriesInstanceUID: displaySet.SeriesInstanceUID,
1183
- viewportIndex: activeViewportIndex
1040
+ viewportId: activeViewportId
1184
1041
  });
1185
1042
  }
1186
1043
  }
1187
- }, [activeViewportIndex, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1044
+ }, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1188
1045
  return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
1189
1046
  value: [trackedMeasurements, sendTrackedMeasurementsEvent]
1190
1047
  }, children);
@@ -1193,7 +1050,8 @@ TrackedMeasurementsContextProvider.propTypes = {
1193
1050
  children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
1194
1051
  servicesManager: (prop_types_default()).object.isRequired,
1195
1052
  commandsManager: (prop_types_default()).object.isRequired,
1196
- extensionManager: (prop_types_default()).object.isRequired
1053
+ extensionManager: (prop_types_default()).object.isRequired,
1054
+ appConfig: (prop_types_default()).object
1197
1055
  };
1198
1056
 
1199
1057
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
@@ -1224,7 +1082,7 @@ function getContextModule(_ref) {
1224
1082
 
1225
1083
  /***/ }),
1226
1084
 
1227
- /***/ 43744:
1085
+ /***/ 28030:
1228
1086
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1229
1087
 
1230
1088
  // ESM COMPAT FLAG
@@ -1235,23 +1093,29 @@ __webpack_require__.d(__webpack_exports__, {
1235
1093
  "default": () => (/* binding */ measurement_tracking_src)
1236
1094
  });
1237
1095
 
1238
- // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 14 modules
1239
- var getContextModule = __webpack_require__(43418);
1096
+ // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 12 modules
1097
+ var getContextModule = __webpack_require__(41832);
1240
1098
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1241
- var react = __webpack_require__(32735);
1099
+ var react = __webpack_require__(43001);
1242
1100
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
1243
- var prop_types = __webpack_require__(60216);
1101
+ var prop_types = __webpack_require__(3827);
1244
1102
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1245
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
1246
- var src = __webpack_require__(48501);
1247
- // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
1248
- var ui_src = __webpack_require__(28619);
1103
+ // EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
1104
+ var dist = __webpack_require__(62474);
1105
+ // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1106
+ var es = __webpack_require__(69190);
1107
+ // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
1108
+ var src = __webpack_require__(71771);
1109
+ // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
1110
+ var ui_src = __webpack_require__(71783);
1249
1111
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
1250
1112
 
1251
1113
 
1252
1114
 
1253
1115
 
1254
1116
 
1117
+
1118
+
1255
1119
  const {
1256
1120
  formatDate
1257
1121
  } = src.utils;
@@ -1269,12 +1133,15 @@ function PanelStudyBrowserTracking(_ref) {
1269
1133
  dataSource
1270
1134
  } = _ref;
1271
1135
  const {
1272
- measurementService,
1273
1136
  displaySetService,
1274
1137
  uiDialogService,
1275
1138
  hangingProtocolService,
1276
1139
  uiNotificationService
1277
1140
  } = servicesManager.services;
1141
+ const navigate = (0,dist/* useNavigate */.s0)();
1142
+ const {
1143
+ t
1144
+ } = (0,es/* useTranslation */.$G)('Common');
1278
1145
 
1279
1146
  // Normally you nest the components so the tree isn't so deep, and the data
1280
1147
  // doesn't have to have such an intense shape. This works well enough for now.
@@ -1283,10 +1150,8 @@ function PanelStudyBrowserTracking(_ref) {
1283
1150
  StudyInstanceUIDs
1284
1151
  } = (0,ui_src/* useImageViewer */.zG)();
1285
1152
  const [{
1286
- activeViewportIndex,
1287
- viewports,
1288
- numCols,
1289
- numRows
1153
+ activeViewportId,
1154
+ viewports
1290
1155
  }, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1291
1156
  const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
1292
1157
  const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
@@ -1297,9 +1162,9 @@ function PanelStudyBrowserTracking(_ref) {
1297
1162
  const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
1298
1163
  const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
1299
1164
  let updatedViewports = [];
1300
- const viewportIndex = activeViewportIndex;
1165
+ const viewportId = activeViewportId;
1301
1166
  try {
1302
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
1167
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
1303
1168
  } catch (error) {
1304
1169
  console.warn(error);
1305
1170
  uiNotificationService.show({
@@ -1311,37 +1176,7 @@ function PanelStudyBrowserTracking(_ref) {
1311
1176
  }
1312
1177
  viewportGridService.setDisplaySetsForViewports(updatedViewports);
1313
1178
  };
1314
- const activeViewportDisplaySetInstanceUIDs = viewports[activeViewportIndex]?.displaySetInstanceUIDs;
1315
- (0,react.useEffect)(() => {
1316
- const added = measurementService.EVENTS.MEASUREMENT_ADDED;
1317
- const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
1318
- const subscriptions = [];
1319
- [added, addedRaw].forEach(evt => {
1320
- subscriptions.push(measurementService.subscribe(evt, _ref2 => {
1321
- let {
1322
- source,
1323
- measurement
1324
- } = _ref2;
1325
- const {
1326
- referenceSeriesUID: SeriesInstanceUID,
1327
- referenceStudyUID: StudyInstanceUID
1328
- } = measurement;
1329
- sendTrackedMeasurementsEvent('SET_DIRTY', {
1330
- SeriesInstanceUID
1331
- });
1332
- sendTrackedMeasurementsEvent('TRACK_SERIES', {
1333
- viewportIndex: activeViewportIndex,
1334
- StudyInstanceUID,
1335
- SeriesInstanceUID
1336
- });
1337
- }).unsubscribe);
1338
- });
1339
- return () => {
1340
- subscriptions.forEach(unsub => {
1341
- unsub();
1342
- });
1343
- };
1344
- }, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
1179
+ const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
1345
1180
  const {
1346
1181
  trackedSeries
1347
1182
  } = trackedMeasurements.context;
@@ -1354,6 +1189,10 @@ function PanelStudyBrowserTracking(_ref) {
1354
1189
  const qidoForStudyUID = await dataSource.query.studies.search({
1355
1190
  studyInstanceUid: StudyInstanceUID
1356
1191
  });
1192
+ if (!qidoForStudyUID?.length) {
1193
+ navigate('/notfoundstudy', '_self');
1194
+ throw new Error('Invalid study URL');
1195
+ }
1357
1196
  let qidoStudiesForPatient = qidoForStudyUID;
1358
1197
 
1359
1198
  // try to fetch the prior studies based on the patientID if the
@@ -1367,7 +1206,7 @@ function PanelStudyBrowserTracking(_ref) {
1367
1206
  const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
1368
1207
  return {
1369
1208
  studyInstanceUid: qidoStudy.StudyInstanceUID,
1370
- date: formatDate(qidoStudy.StudyDate),
1209
+ date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
1371
1210
  description: qidoStudy.StudyDescription,
1372
1211
  modalities: qidoStudy.ModalitiesInStudy,
1373
1212
  numInstances: qidoStudy.NumInstances
@@ -1399,17 +1238,18 @@ function PanelStudyBrowserTracking(_ref) {
1399
1238
  const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
1400
1239
  const imageId = imageIds[Math.floor(imageIds.length / 2)];
1401
1240
 
1402
- // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1403
- if (imageId) {
1404
- // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1405
- newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
1406
- setThumbnailImageSrcMap(prevState => {
1407
- return {
1408
- ...prevState,
1409
- ...newImageSrcEntry
1410
- };
1411
- });
1241
+ // TODO: Is it okay that imageIds are not returned here for SR displaySets?
1242
+ if (!imageId || displaySet?.unsupported) {
1243
+ return;
1412
1244
  }
1245
+ // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1246
+ newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
1247
+ setThumbnailImageSrcMap(prevState => {
1248
+ return {
1249
+ ...prevState,
1250
+ ...newImageSrcEntry
1251
+ };
1252
+ });
1413
1253
  });
1414
1254
  }, [displaySetService, dataSource, getImageSrc]);
1415
1255
 
@@ -1436,6 +1276,9 @@ function PanelStudyBrowserTracking(_ref) {
1436
1276
  const displaySetInstanceUID = dSet.displaySetInstanceUID;
1437
1277
  const newImageSrcEntry = {};
1438
1278
  const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
1279
+ if (displaySet?.unsupported) {
1280
+ return;
1281
+ }
1439
1282
  if (options.madeInClient) {
1440
1283
  setJumpToDisplaySet(displaySetInstanceUID);
1441
1284
  }
@@ -1443,31 +1286,41 @@ function PanelStudyBrowserTracking(_ref) {
1443
1286
  const imageId = imageIds[Math.floor(imageIds.length / 2)];
1444
1287
 
1445
1288
  // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1446
- if (imageId) {
1447
- // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1448
- newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
1449
- setThumbnailImageSrcMap(prevState => {
1450
- return {
1451
- ...prevState,
1452
- ...newImageSrcEntry
1453
- };
1454
- });
1289
+ if (!imageId) {
1290
+ return;
1455
1291
  }
1292
+
1293
+ // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1294
+ newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
1295
+ setThumbnailImageSrcMap(prevState => {
1296
+ return {
1297
+ ...prevState,
1298
+ ...newImageSrcEntry
1299
+ };
1300
+ });
1456
1301
  });
1457
1302
  });
1458
-
1303
+ return () => {
1304
+ SubscriptionDisplaySetsAdded.unsubscribe();
1305
+ };
1306
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1307
+ }, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
1308
+ (0,react.useEffect)(() => {
1459
1309
  // TODO: Will this always hold _all_ the displaySets we care about?
1460
1310
  // DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets`
1461
1311
  const SubscriptionDisplaySetsChanged = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => {
1462
1312
  const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
1463
1313
  setDisplaySets(mappedDisplaySets);
1464
1314
  });
1315
+ const SubscriptionDisplaySetMetaDataInvalidated = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, () => {
1316
+ const mappedDisplaySets = _mapDisplaySets(displaySetService.getActiveDisplaySets(), thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
1317
+ setDisplaySets(mappedDisplaySets);
1318
+ });
1465
1319
  return () => {
1466
- SubscriptionDisplaySetsAdded.unsubscribe();
1467
1320
  SubscriptionDisplaySetsChanged.unsubscribe();
1321
+ SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
1468
1322
  };
1469
- // eslint-disable-next-line react-hooks/exhaustive-deps
1470
- }, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
1323
+ }, [thumbnailImageSrcMap, trackedSeries, viewports, dataSource, displaySetService]);
1471
1324
  const tabs = _createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets, hangingProtocolService);
1472
1325
 
1473
1326
  // TODO: Should not fire this on "close"
@@ -1577,14 +1430,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1577
1430
  const thumbnailNoImageDisplaySets = [];
1578
1431
  displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
1579
1432
  const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
1580
- const componentType = _getComponentType(ds.Modality);
1433
+ const componentType = _getComponentType(ds);
1581
1434
  const numPanes = viewportGridService.getNumViewportPanes();
1582
- const viewportIdentificator = numPanes === 1 ? [] : viewports.reduce((acc, viewportData, index) => {
1583
- if (index < numPanes && viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
1584
- acc.push(viewportData.viewportLabel);
1585
- }
1586
- return acc;
1587
- }, []);
1435
+ const viewportIdentificator = [];
1436
+ if (numPanes !== 1) {
1437
+ viewports.forEach(viewportData => {
1438
+ if (viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
1439
+ viewportIdentificator.push(viewportData.viewportLabel);
1440
+ }
1441
+ });
1442
+ }
1588
1443
  const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
1589
1444
  const {
1590
1445
  displaySetInstanceUID
@@ -1597,6 +1452,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1597
1452
  seriesDate: formatDate(ds.SeriesDate),
1598
1453
  numInstances: ds.numImageFrames,
1599
1454
  countIcon: ds.countIcon,
1455
+ messages: ds.messages,
1600
1456
  StudyInstanceUID: ds.StudyInstanceUID,
1601
1457
  componentType,
1602
1458
  imageSrc,
@@ -1607,11 +1463,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1607
1463
  },
1608
1464
 
1609
1465
  isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
1466
+ isHydratedForDerivedDisplaySet: ds.isHydrated,
1610
1467
  viewportIdentificator
1611
1468
  };
1612
1469
  if (componentType === 'thumbnailNoImage') {
1613
1470
  if (dataSource.reject && dataSource.reject.series) {
1614
- thumbnailProps.canReject = true;
1471
+ thumbnailProps.canReject = !ds?.unsupported;
1615
1472
  thumbnailProps.onReject = () => {
1616
1473
  uiDialogService.create({
1617
1474
  id: 'ds-reject-sr',
@@ -1622,16 +1479,18 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1622
1479
  contentProps: {
1623
1480
  title: 'Delete Report',
1624
1481
  body: () => /*#__PURE__*/react.createElement("div", {
1625
- className: "p-4 text-white bg-primary-dark"
1626
- }, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to delete this report?"), /*#__PURE__*/react.createElement("p", null, "This action cannot be undone.")),
1482
+ className: "bg-primary-dark p-4 text-white"
1483
+ }, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to delete this report?"), /*#__PURE__*/react.createElement("p", {
1484
+ className: "mt-2"
1485
+ }, "This action cannot be undone.")),
1627
1486
  actions: [{
1628
1487
  id: 'cancel',
1629
1488
  text: 'Cancel',
1630
- type: ui_src/* ButtonEnums.type */.LZ.U.secondary
1489
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
1631
1490
  }, {
1632
1491
  id: 'yes',
1633
1492
  text: 'Yes',
1634
- type: ui_src/* ButtonEnums.type */.LZ.U.primary,
1493
+ type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
1635
1494
  classes: ['reject-yes-button']
1636
1495
  }],
1637
1496
  onClose: () => uiDialogService.dismiss({
@@ -1641,10 +1500,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1641
1500
  const yesButton = document.querySelector('.reject-yes-button');
1642
1501
  yesButton.focus();
1643
1502
  },
1644
- onSubmit: async _ref3 => {
1503
+ onSubmit: async _ref2 => {
1645
1504
  let {
1646
1505
  action
1647
- } = _ref3;
1506
+ } = _ref2;
1648
1507
  switch (action.id) {
1649
1508
  case 'yes':
1650
1509
  try {
@@ -1688,8 +1547,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1688
1547
  return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
1689
1548
  }
1690
1549
  const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
1691
- function _getComponentType(Modality) {
1692
- if (thumbnailNoImageModalities.includes(Modality)) {
1550
+ function _getComponentType(ds) {
1551
+ if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
1693
1552
  return 'thumbnailNoImage';
1694
1553
  }
1695
1554
  return 'thumbnailTracked';
@@ -1886,10 +1745,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
1886
1745
  servicesManager: (prop_types_default()).object.isRequired
1887
1746
  };
1888
1747
  /* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
1889
- // EXTERNAL MODULE: ./hooks/index.js + 3 modules
1890
- var hooks = __webpack_require__(39852);
1891
- // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1892
- var es = __webpack_require__(21572);
1748
+ // EXTERNAL MODULE: ./hooks/index.js + 1 modules
1749
+ var hooks = __webpack_require__(10800);
1893
1750
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
1894
1751
 
1895
1752
 
@@ -1907,13 +1764,13 @@ function ActionButtons(_ref) {
1907
1764
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
1908
1765
  onClick: onExportClick,
1909
1766
  disabled: disabled,
1910
- type: ui_src/* ButtonEnums.type */.LZ.U.secondary,
1911
- size: ui_src/* ButtonEnums.size */.LZ.d.small
1767
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
1768
+ size: ui_src/* ButtonEnums.size */.LZ.dp.small
1912
1769
  }, t('Export')), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
1913
1770
  className: "ml-2",
1914
1771
  onClick: onCreateReportClick,
1915
- type: ui_src/* ButtonEnums.type */.LZ.U.secondary,
1916
- size: ui_src/* ButtonEnums.size */.LZ.d.small,
1772
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
1773
+ size: ui_src/* ButtonEnums.size */.LZ.dp.small,
1917
1774
  disabled: disabled
1918
1775
  }, t('Create Report')));
1919
1776
  }
@@ -1929,7 +1786,7 @@ ActionButtons.defaultProps = {
1929
1786
  };
1930
1787
  /* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
1931
1788
  // EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
1932
- var lodash_debounce = __webpack_require__(40001);
1789
+ var lodash_debounce = __webpack_require__(8324);
1933
1790
  var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
1934
1791
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
1935
1792
 
@@ -1961,9 +1818,9 @@ function PanelMeasurementTableTracking(_ref) {
1961
1818
  servicesManager,
1962
1819
  extensionManager
1963
1820
  } = _ref;
1964
- const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1821
+ const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
1965
1822
  const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
1966
- const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.Nr)(measurementChangeTimestamp, 200);
1823
+ const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
1967
1824
  const {
1968
1825
  measurementService,
1969
1826
  uiDialogService,
@@ -2057,7 +1914,7 @@ function PanelMeasurementTableTracking(_ref) {
2057
1914
  uid,
2058
1915
  isActive
2059
1916
  } = _ref2;
2060
- measurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid);
1917
+ measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
2061
1918
  onMeasurementItemClickHandler({
2062
1919
  uid,
2063
1920
  isActive
@@ -2130,7 +1987,7 @@ function PanelMeasurementTableTracking(_ref) {
2130
1987
  labelClassName: "text-white grow text-[14px] leading-[1.2]",
2131
1988
  autoFocus: true,
2132
1989
  id: "annotation",
2133
- className: "bg-black border-primary-main",
1990
+ className: "border-primary-main bg-black",
2134
1991
  type: "text",
2135
1992
  value: value.label,
2136
1993
  onChange: onChangeHandler,
@@ -2140,11 +1997,11 @@ function PanelMeasurementTableTracking(_ref) {
2140
1997
  actions: [{
2141
1998
  id: 'cancel',
2142
1999
  text: 'Cancel',
2143
- type: ui_src/* ButtonEnums.type */.LZ.U.secondary
2000
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
2144
2001
  }, {
2145
2002
  id: 'save',
2146
2003
  text: 'Save',
2147
- type: ui_src/* ButtonEnums.type */.LZ.U.primary
2004
+ type: ui_src/* ButtonEnums.type */.LZ.dt.primary
2148
2005
  }],
2149
2006
  onSubmit: onSubmitHandler
2150
2007
  }
@@ -2166,7 +2023,7 @@ function PanelMeasurementTableTracking(_ref) {
2166
2023
  const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
2167
2024
  const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
2168
2025
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
2169
- className: "overflow-x-hidden overflow-y-auto invisible-scrollbar",
2026
+ className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
2170
2027
  ref: measurementsPanelRef,
2171
2028
  "data-cy": 'trackedMeasurements-panel'
2172
2029
  }, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
@@ -2191,7 +2048,7 @@ function PanelMeasurementTableTracking(_ref) {
2191
2048
  onExportClick: exportReport,
2192
2049
  onCreateReportClick: () => {
2193
2050
  sendTrackedMeasurementsEvent('SAVE_REPORT', {
2194
- viewportIndex: viewportGrid.activeViewportIndex,
2051
+ viewportId: viewportGrid.activeViewportId,
2195
2052
  isBackupSave: true
2196
2053
  });
2197
2054
  },
@@ -2240,7 +2097,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
2240
2097
  if (findingSites) {
2241
2098
  const siteText = [];
2242
2099
  findingSites.forEach(site => {
2243
- if (site?.text !== label) siteText.push(site.text);
2100
+ if (site?.text !== label) {
2101
+ siteText.push(site.text);
2102
+ }
2244
2103
  });
2245
2104
  displayText = [...siteText, ...displayText];
2246
2105
  }
@@ -2279,7 +2138,7 @@ function getPanelModule(_ref) {
2279
2138
  } = _ref;
2280
2139
  return [{
2281
2140
  name: 'seriesList',
2282
- iconName: 'group-layers',
2141
+ iconName: 'tab-studies',
2283
2142
  iconLabel: 'Studies',
2284
2143
  label: 'Studies',
2285
2144
  component: panels_PanelStudyBrowserTracking.bind(null, {
@@ -2304,7 +2163,7 @@ function getPanelModule(_ref) {
2304
2163
  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); }
2305
2164
 
2306
2165
  const Component = /*#__PURE__*/react.lazy(() => {
2307
- return __webpack_require__.e(/* import() */ 799).then(__webpack_require__.bind(__webpack_require__, 91799));
2166
+ return __webpack_require__.e(/* import() */ 822).then(__webpack_require__.bind(__webpack_require__, 86822));
2308
2167
  });
2309
2168
  const OHIFCornerstoneViewport = props => {
2310
2169
  return /*#__PURE__*/react.createElement(react.Suspense, {