@ohif/app 3.7.0-beta.1 → 3.7.0-beta.100

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.06cb87cf1c42b9f20bd2.js → 12.bundle.34050abb042540a90a3a.js} +6 -6
  2. package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.253395f320b72180da63.js} +6 -6
  3. package/dist/{351.bundle.2d4bc19d8b493879dbbe.js → 181.bundle.169383e9b1a0358b44e8.js} +227 -205
  4. package/dist/{351.css → 181.css} +1 -1
  5. package/dist/{744.bundle.392a124e4ee20ad6a657.js → 19.bundle.eef637102334f1832ba9.js} +246 -385
  6. package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.96bbb4547a346fe3921f.js} +1420 -750
  7. package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
  8. package/dist/221.bundle.0b9f7401294213262852.js +1723 -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.2305e2f8244de8ccbaee.js → 236.bundle.7768b3e29b1fd618b9ec.js} +89 -105
  12. package/dist/{55.bundle.5f5e5ef9087b0beee35c.js → 250.bundle.8084960e3318cda37317.js} +52 -36
  13. package/dist/{973.bundle.a51bb5b329263c9e75e2.js → 281.bundle.39cb630582cf8114fd5e.js} +18 -14
  14. package/dist/{82.bundle.da0c036b2e572719dbc5.js → 342.bundle.6edc7ac022b4218ec99f.js} +1776 -482
  15. package/dist/{404.bundle.902c664e3e581335a5d2.js → 359.bundle.a8f6cf2f90fe05fc346d.js} +46 -131
  16. package/dist/{192.bundle.4fee0d418ae32bb7ab30.js → 370.bundle.4e1276530ba7757347f5.js} +113 -99
  17. package/dist/{790.bundle.aa7a8bebec3483d90f3f.js → 410.bundle.5a330214c0c31cbf2551.js} +11 -9
  18. package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.af0a207c29b109f84159.js} +49 -17
  19. package/dist/{569.bundle.0ed8d8178ffd43fe1c34.js → 451.bundle.9fd36f52ff69594f0669.js} +98 -107
  20. package/dist/{581.bundle.360d26f97b37da8faec3.js → 471.bundle.b3d77b83b1593c09a504.js} +78 -98
  21. package/dist/{199.bundle.290ef76d4ab8358e29bb.js → 506.bundle.ac385e382f79bbf4f306.js} +11 -14
  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.f75fd669ddfe4ecf9c1b.js +532 -0
  26. package/dist/{984.bundle.4e002ef9b3468bddb68b.js → 663.bundle.3863ac49f85320c8ca96.js} +68 -38
  27. package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.dccef1f36e4bc79bcc48.js} +6 -6
  28. package/dist/{50.bundle.03f455d441f2138ce49e.js → 687.bundle.ebd1260565c31ab9ad08.js} +218 -9
  29. package/dist/{331.bundle.bd0c13931a21d53086c9.js → 743.bundle.4bfe6e562ffb2c22708f.js} +26281 -21326
  30. package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.7528cba56a1407357144.js} +95 -64
  31. package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
  32. package/dist/{283.bundle.7cf0fabc69d49a8a2c5d.js → 782.bundle.8c17030f76b75035564c.js} +123 -80
  33. package/dist/{642.bundle.89f15ef57fbad2a1019b.js → 814.bundle.cc0ed4fc75cb16e34f02.js} +6 -6
  34. package/dist/{707.bundle.832f50366089fd23e93b.js → 82.bundle.7a89cd8b81eb7e1e5c66.js} +1187 -808
  35. package/dist/{799.bundle.ca18bdf4abe4d9abea26.js → 822.bundle.0545d6dbb49515aa04ee.js} +81 -34
  36. package/dist/831.bundle.83658f62fcc769043605.js +16700 -0
  37. package/dist/{953.bundle.9e3a7225f07336bfcb41.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.71558794566041f37a92.js} +7110 -997
  41. package/dist/{208.bundle.29fe1842c33000edc75d.js → 99.bundle.c6876aaaa3ff2f1b08a1.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.3ad961046deb5f47678a.js → app.bundle.dc0e89948c4f4568fe20.js} +73720 -68191
  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 +20 -22
  61. package/dist/616.bundle.b76c70aeeed8b142593c.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 + 449 modules
24
- var src = __webpack_require__(43803);
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
  }))
@@ -345,6 +351,7 @@ const defaultOptions = {
345
351
  };
346
352
 
347
353
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptBeginTracking.js
354
+
348
355
  const promptBeginTracking_RESPONSE = {
349
356
  NO_NEVER: -1,
350
357
  CANCEL: 0,
@@ -361,36 +368,36 @@ function promptBeginTracking(_ref, ctx, evt) {
361
368
  uiViewportDialogService
362
369
  } = servicesManager.services;
363
370
  const {
364
- viewportIndex,
371
+ viewportId,
365
372
  StudyInstanceUID,
366
373
  SeriesInstanceUID
367
374
  } = evt;
368
375
  return new Promise(async function (resolve, reject) {
369
- let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportIndex);
376
+ let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
370
377
  resolve({
371
378
  userResponse: promptResult,
372
379
  StudyInstanceUID,
373
380
  SeriesInstanceUID,
374
- viewportIndex
381
+ viewportId
375
382
  });
376
383
  });
377
384
  }
378
- function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
385
+ function _askTrackMeasurements(uiViewportDialogService, viewportId) {
379
386
  return new Promise(function (resolve, reject) {
380
387
  const message = 'Track measurements for this series?';
381
388
  const actions = [{
382
389
  id: 'prompt-begin-tracking-cancel',
383
- type: 'cancel',
390
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
384
391
  text: 'No',
385
392
  value: promptBeginTracking_RESPONSE.CANCEL
386
393
  }, {
387
394
  id: 'prompt-begin-tracking-no-do-not-ask-again',
388
- type: 'secondary',
395
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
389
396
  text: 'No, do not ask again',
390
397
  value: promptBeginTracking_RESPONSE.NO_NEVER
391
398
  }, {
392
399
  id: 'prompt-begin-tracking-yes',
393
- type: 'primary',
400
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
394
401
  text: 'Yes',
395
402
  value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
396
403
  }];
@@ -399,7 +406,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
399
406
  resolve(result);
400
407
  };
401
408
  uiViewportDialogService.show({
402
- viewportIndex,
409
+ viewportId,
403
410
  id: 'measurement-tracking-prompt-begin-tracking',
404
411
  type: 'info',
405
412
  message,
@@ -414,6 +421,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
414
421
  }
415
422
  /* harmony default export */ const TrackedMeasurementsContext_promptBeginTracking = (promptBeginTracking);
416
423
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewSeries.js
424
+
417
425
  const promptTrackNewSeries_RESPONSE = {
418
426
  NO_NEVER: -1,
419
427
  CANCEL: 0,
@@ -431,37 +439,37 @@ function promptTrackNewSeries(_ref, ctx, evt) {
431
439
  UIViewportDialogService
432
440
  } = servicesManager.services;
433
441
  const {
434
- viewportIndex,
442
+ viewportId,
435
443
  StudyInstanceUID,
436
444
  SeriesInstanceUID
437
445
  } = evt;
438
446
  return new Promise(async function (resolve, reject) {
439
- let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportIndex);
447
+ let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
440
448
  if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
441
- 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;
442
450
  }
443
451
  resolve({
444
452
  userResponse: promptResult,
445
453
  StudyInstanceUID,
446
454
  SeriesInstanceUID,
447
- viewportIndex,
455
+ viewportId,
448
456
  isBackupSave: false
449
457
  });
450
458
  });
451
459
  }
452
- function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
460
+ function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
453
461
  return new Promise(function (resolve, reject) {
454
462
  const message = 'Do you want to add this measurement to the existing report?';
455
463
  const actions = [{
456
- type: 'cancel',
464
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
457
465
  text: 'Cancel',
458
466
  value: promptTrackNewSeries_RESPONSE.CANCEL
459
467
  }, {
460
- type: 'secondary',
468
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
461
469
  text: 'Create new report',
462
470
  value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
463
471
  }, {
464
- type: 'primary',
472
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
465
473
  text: 'Add to existing report',
466
474
  value: promptTrackNewSeries_RESPONSE.ADD_SERIES
467
475
  }];
@@ -470,7 +478,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
470
478
  resolve(result);
471
479
  };
472
480
  uiViewportDialogService.show({
473
- viewportIndex,
481
+ viewportId,
474
482
  type: 'info',
475
483
  message,
476
484
  actions,
@@ -482,7 +490,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
482
490
  });
483
491
  });
484
492
  }
485
- function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
493
+ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
486
494
  return new Promise(function (resolve, reject) {
487
495
  const message = 'You have existing tracked measurements. What would you like to do with your existing tracked measurements?';
488
496
  const actions = [{
@@ -503,7 +511,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
503
511
  resolve(result);
504
512
  };
505
513
  UIViewportDialogService.show({
506
- viewportIndex,
514
+ viewportId,
507
515
  type: 'warning',
508
516
  message,
509
517
  actions,
@@ -534,25 +542,25 @@ function promptTrackNewStudy(_ref, ctx, evt) {
534
542
  UIViewportDialogService
535
543
  } = servicesManager.services;
536
544
  const {
537
- viewportIndex,
545
+ viewportId,
538
546
  StudyInstanceUID,
539
547
  SeriesInstanceUID
540
548
  } = evt;
541
549
  return new Promise(async function (resolve, reject) {
542
- let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex);
550
+ let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
543
551
  if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
544
- 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;
545
553
  }
546
554
  resolve({
547
555
  userResponse: promptResult,
548
556
  StudyInstanceUID,
549
557
  SeriesInstanceUID,
550
- viewportIndex,
558
+ viewportId,
551
559
  isBackupSave: false
552
560
  });
553
561
  });
554
562
  }
555
- function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex) {
563
+ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
556
564
  return new Promise(function (resolve, reject) {
557
565
  const message = 'Track measurements for this series?';
558
566
  const actions = [{
@@ -573,7 +581,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
573
581
  resolve(result);
574
582
  };
575
583
  UIViewportDialogService.show({
576
- viewportIndex,
584
+ viewportId,
577
585
  type: 'info',
578
586
  message,
579
587
  actions,
@@ -585,7 +593,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
585
593
  });
586
594
  });
587
595
  }
588
- function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
596
+ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
589
597
  return new Promise(function (resolve, reject) {
590
598
  const message = 'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
591
599
  const actions = [{
@@ -606,7 +614,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
606
614
  resolve(result);
607
615
  };
608
616
  UIViewportDialogService.show({
609
- viewportIndex,
617
+ viewportId,
610
618
  type: 'warning',
611
619
  message,
612
620
  actions,
@@ -619,70 +627,17 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
619
627
  });
620
628
  }
621
629
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
622
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
623
- var core_src = __webpack_require__(48501);
624
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportAsync.tsx
625
-
626
-
627
-
628
- /**
629
- *
630
- * @param {*} servicesManager
631
- * @param {*} dataSource
632
- * @param {*} measurements
633
- * @param {*} options
634
- * @returns {string[]} displaySetInstanceUIDs
635
- */
636
- async function createReportAsync(servicesManager, commandsManager, dataSource, measurements, options) {
637
- const {
638
- displaySetService,
639
- uiNotificationService,
640
- uiDialogService
641
- } = servicesManager.services;
642
- const loadingDialogId = uiDialogService.create({
643
- showOverlay: true,
644
- isDraggable: false,
645
- centralize: true,
646
- // TODO: Create a loading indicator component + zeplin design?
647
- content: Loading
648
- });
649
- try {
650
- const naturalizedReport = await commandsManager.runCommand('storeMeasurements', {
651
- measurementData: measurements,
652
- dataSource,
653
- additionalFindingTypes: ['ArrowAnnotate'],
654
- options
655
- }, 'CORNERSTONE_STRUCTURED_REPORT');
656
-
657
- // The "Mode" route listens for DicomMetadataStore changes
658
- // When a new instance is added, it listens and
659
- // automatically calls makeDisplaySets
660
- core_src.DicomMetadataStore.addInstances([naturalizedReport], true);
661
- const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet();
662
- uiNotificationService.show({
663
- title: 'Create Report',
664
- message: 'Measurements saved successfully',
665
- type: 'success'
666
- });
667
- return [displaySetInstanceUID];
668
- } catch (error) {
669
- uiNotificationService.show({
670
- title: 'Create Report',
671
- message: error.message || 'Failed to store measurements',
672
- type: 'error'
673
- });
674
- } finally {
675
- uiDialogService.dismiss({
676
- id: loadingDialogId
677
- });
678
- }
679
- }
680
- function Loading() {
681
- return /*#__PURE__*/react.createElement("div", {
682
- className: "text-primary-active"
683
- }, "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;
684
640
  }
685
- /* harmony default export */ const _shared_createReportAsync = (createReportAsync);
686
641
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/PROMPT_RESPONSES.js
687
642
  const PROMPT_RESPONSES_RESPONSE = {
688
643
  NO_NEVER: -1,
@@ -693,132 +648,10 @@ const PROMPT_RESPONSES_RESPONSE = {
693
648
  NO_NOT_FOR_SERIES: 4
694
649
  };
695
650
  /* harmony default export */ const PROMPT_RESPONSES = (PROMPT_RESPONSES_RESPONSE);
696
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx
697
- /* eslint-disable react/display-name */
698
-
699
-
700
-
701
- function createReportDialogPrompt(uiDialogService) {
702
- return new Promise(function (resolve, reject) {
703
- let dialogId = undefined;
704
- const _handleClose = () => {
705
- // Dismiss dialog
706
- uiDialogService.dismiss({
707
- id: dialogId
708
- });
709
- // Notify of cancel action
710
- resolve({
711
- action: PROMPT_RESPONSES.CANCEL,
712
- value: undefined
713
- });
714
- };
715
-
716
- /**
717
- *
718
- * @param {string} param0.action - value of action performed
719
- * @param {string} param0.value - value from input field
720
- */
721
- const _handleFormSubmit = _ref => {
722
- let {
723
- action,
724
- value
725
- } = _ref;
726
- uiDialogService.dismiss({
727
- id: dialogId
728
- });
729
- switch (action.id) {
730
- case 'save':
731
- resolve({
732
- action: PROMPT_RESPONSES.CREATE_REPORT,
733
- value: value.label
734
- });
735
- break;
736
- case 'cancel':
737
- resolve({
738
- action: PROMPT_RESPONSES.CANCEL,
739
- value: undefined
740
- });
741
- break;
742
- }
743
- };
744
- dialogId = uiDialogService.create({
745
- centralize: true,
746
- isDraggable: false,
747
- content: src/* Dialog */.Vq,
748
- useLastPosition: false,
749
- showOverlay: true,
750
- contentProps: {
751
- title: 'Create Report',
752
- value: {
753
- label: ''
754
- },
755
- noCloseButton: true,
756
- onClose: _handleClose,
757
- actions: [{
758
- id: 'cancel',
759
- text: 'Cancel',
760
- type: 'primary'
761
- }, {
762
- id: 'save',
763
- text: 'Save',
764
- type: 'secondary'
765
- }],
766
- // TODO: Should be on button press...
767
- onSubmit: _handleFormSubmit,
768
- body: _ref2 => {
769
- let {
770
- value,
771
- setValue
772
- } = _ref2;
773
- const onChangeHandler = event => {
774
- event.persist();
775
- setValue(value => ({
776
- ...value,
777
- label: event.target.value
778
- }));
779
- };
780
- const onKeyPressHandler = event => {
781
- if (event.key === 'Enter') {
782
- uiDialogService.dismiss({
783
- id: dialogId
784
- });
785
- resolve({
786
- action: PROMPT_RESPONSES.CREATE_REPORT,
787
- value: value.label
788
- });
789
- }
790
- };
791
- return /*#__PURE__*/react.createElement("div", {
792
- className: ""
793
- }, /*#__PURE__*/react.createElement(src/* Input */.II, {
794
- label: "Enter the report name",
795
- labelClassName: "text-white grow leading-[1.2] text-[14px]",
796
- autoFocus: true,
797
- className: "bg-black border-primary-main grow",
798
- type: "text",
799
- value: value.label,
800
- onChange: onChangeHandler,
801
- onKeyPress: onKeyPressHandler
802
- }));
803
- }
804
- }
805
- });
806
- });
807
- }
808
- ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
809
- const MIN_SR_SERIES_NUMBER = 4700;
810
- function getNextSRSeriesNumber(displaySetService) {
811
- const activeDisplaySets = displaySetService.getActiveDisplaySets();
812
- const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
813
- const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
814
- const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
815
- return maxSeriesNumber + 1;
816
- }
817
651
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js
818
652
 
819
653
 
820
654
 
821
-
822
655
  function promptSaveReport(_ref, ctx, evt) {
823
656
  let {
824
657
  servicesManager,
@@ -830,7 +663,7 @@ function promptSaveReport(_ref, ctx, evt) {
830
663
  measurementService,
831
664
  displaySetService
832
665
  } = servicesManager.services;
833
- const viewportIndex = evt.viewportIndex === undefined ? evt.data.viewportIndex : evt.viewportIndex;
666
+ const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
834
667
  const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
835
668
  const StudyInstanceUID = evt?.data?.StudyInstanceUID;
836
669
  const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
@@ -841,7 +674,9 @@ function promptSaveReport(_ref, ctx, evt) {
841
674
  let displaySetInstanceUIDs;
842
675
  return new Promise(async function (resolve, reject) {
843
676
  // TODO: Fallback if (uiDialogService) {
844
- const promptResult = await createReportDialogPrompt(uiDialogService);
677
+ const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
678
+ extensionManager
679
+ });
845
680
  if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
846
681
  const dataSources = extensionManager.getDataSources();
847
682
  const dataSource = dataSources[0];
@@ -853,9 +688,20 @@ function promptSaveReport(_ref, ctx, evt) {
853
688
  : promptResult.value; // provided value
854
689
 
855
690
  const SeriesNumber = getNextSRSeriesNumber(displaySetService);
856
- displaySetInstanceUIDs = await _shared_createReportAsync(servicesManager, commandsManager, dataSource, trackedMeasurements, {
857
- SeriesDescription,
858
- 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
859
705
  });
860
706
  } else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
861
707
  // Do nothing
@@ -865,16 +711,17 @@ function promptSaveReport(_ref, ctx, evt) {
865
711
  createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
866
712
  StudyInstanceUID,
867
713
  SeriesInstanceUID,
868
- viewportIndex,
714
+ viewportId,
869
715
  isBackupSave
870
716
  });
871
717
  });
872
718
  }
873
719
  /* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
874
720
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
875
- var cornerstone_dicom_sr_src = __webpack_require__(65948);
721
+ var cornerstone_dicom_sr_src = __webpack_require__(42170);
876
722
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
877
723
 
724
+
878
725
  const promptHydrateStructuredReport_RESPONSE = {
879
726
  NO_NEVER: -1,
880
727
  CANCEL: 0,
@@ -887,19 +734,20 @@ const promptHydrateStructuredReport_RESPONSE = {
887
734
  function promptHydrateStructuredReport(_ref, ctx, evt) {
888
735
  let {
889
736
  servicesManager,
890
- extensionManager
737
+ extensionManager,
738
+ appConfig
891
739
  } = _ref;
892
740
  const {
893
741
  uiViewportDialogService,
894
742
  displaySetService
895
743
  } = servicesManager.services;
896
744
  const {
897
- viewportIndex,
745
+ viewportId,
898
746
  displaySetInstanceUID
899
747
  } = evt;
900
748
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
901
749
  return new Promise(async function (resolve, reject) {
902
- const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex);
750
+ const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
903
751
 
904
752
  // Need to do action here... So we can set state...
905
753
  let StudyInstanceUID, SeriesInstanceUIDs;
@@ -907,7 +755,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
907
755
  console.warn('!! HYDRATING STRUCTURED REPORT');
908
756
  const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
909
757
  servicesManager,
910
- extensionManager
758
+ extensionManager,
759
+ appConfig
911
760
  }, displaySetInstanceUID);
912
761
  StudyInstanceUID = hydrationResult.StudyInstanceUID;
913
762
  SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
@@ -916,21 +765,21 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
916
765
  userResponse: promptResult,
917
766
  displaySetInstanceUID: evt.displaySetInstanceUID,
918
767
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
919
- viewportIndex,
768
+ viewportId,
920
769
  StudyInstanceUID,
921
770
  SeriesInstanceUIDs
922
771
  });
923
772
  });
924
773
  }
925
- function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex) {
774
+ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
926
775
  return new Promise(function (resolve, reject) {
927
776
  const message = 'Do you want to continue tracking measurements for this study?';
928
777
  const actions = [{
929
- type: 'secondary',
778
+ type: src/* ButtonEnums.type */.LZ.dt.secondary,
930
779
  text: 'No',
931
780
  value: promptHydrateStructuredReport_RESPONSE.CANCEL
932
781
  }, {
933
- type: 'primary',
782
+ type: src/* ButtonEnums.type */.LZ.dt.primary,
934
783
  text: 'Yes',
935
784
  value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
936
785
  }];
@@ -939,7 +788,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
939
788
  resolve(result);
940
789
  };
941
790
  uiViewportDialogService.show({
942
- viewportIndex,
791
+ viewportId,
943
792
  type: 'info',
944
793
  message,
945
794
  actions,
@@ -963,7 +812,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
963
812
  displaySetService
964
813
  } = servicesManager.services;
965
814
  const {
966
- viewportIndex,
815
+ viewportId,
967
816
  displaySetInstanceUID
968
817
  } = evt;
969
818
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
@@ -977,13 +826,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
977
826
  resolve({
978
827
  displaySetInstanceUID: evt.displaySetInstanceUID,
979
828
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
980
- viewportIndex,
829
+ viewportId,
981
830
  StudyInstanceUID,
982
831
  SeriesInstanceUIDs
983
832
  });
984
833
  });
985
834
  }
986
835
  /* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
836
+ // EXTERNAL MODULE: ./state/index.js + 1 modules
837
+ var state = __webpack_require__(62657);
987
838
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
988
839
 
989
840
 
@@ -997,6 +848,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
997
848
 
998
849
 
999
850
 
851
+
1000
852
  const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
1001
853
  TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
1002
854
  const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
@@ -1017,9 +869,10 @@ _ref2 // Component props
1017
869
  let {
1018
870
  children
1019
871
  } = _ref2;
872
+ const [appConfig] = (0,state/* useAppConfig */.M)();
1020
873
  const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
1021
874
  const {
1022
- activeViewportIndex,
875
+ activeViewportId,
1023
876
  viewports
1024
877
  } = viewportGrid;
1025
878
  const {
@@ -1031,11 +884,12 @@ _ref2 // Component props
1031
884
  jumpToFirstMeasurementInActiveViewport: (ctx, evt) => {
1032
885
  const {
1033
886
  trackedStudy,
1034
- trackedSeries
887
+ trackedSeries,
888
+ activeViewportId
1035
889
  } = ctx;
1036
890
  const measurements = measurementService.getMeasurements();
1037
891
  const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
1038
- console.log('jumping to measurement reset viewport', viewportGrid.activeViewportIndex, trackedMeasurements[0]);
892
+ console.log('jumping to measurement reset viewport', activeViewportId, trackedMeasurements[0]);
1039
893
  const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
1040
894
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
1041
895
  const referencedImages = referencedDisplaySet.images;
@@ -1055,7 +909,7 @@ _ref2 // Component props
1055
909
  }
1056
910
  }
1057
911
  viewportGridService.setDisplaySetsForViewport({
1058
- viewportIndex: viewportGrid.activeViewportIndex,
912
+ viewportId: activeViewportId,
1059
913
  displaySetInstanceUIDs: [referencedDisplaySetUID],
1060
914
  viewportOptions: {
1061
915
  initialImageOptions: {
@@ -1066,9 +920,9 @@ _ref2 // Component props
1066
920
  },
1067
921
  showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
1068
922
  if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
1069
- const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0].displaySetInstanceUID;
923
+ const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0];
1070
924
  viewportGridService.setDisplaySetsForViewport({
1071
- viewportIndex: evt.data.viewportIndex,
925
+ viewportId: evt.data.viewportId,
1072
926
  displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
1073
927
  });
1074
928
  }
@@ -1092,28 +946,34 @@ _ref2 // Component props
1092
946
  machineOptions.services = Object.assign({}, machineOptions.services, {
1093
947
  promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
1094
948
  servicesManager,
1095
- extensionManager
949
+ extensionManager,
950
+ appConfig
1096
951
  }),
1097
952
  promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
1098
953
  servicesManager,
1099
- extensionManager
954
+ extensionManager,
955
+ appConfig
1100
956
  }),
1101
957
  promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
1102
958
  servicesManager,
1103
- extensionManager
959
+ extensionManager,
960
+ appConfig
1104
961
  }),
1105
962
  promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
1106
963
  servicesManager,
1107
964
  commandsManager,
1108
- extensionManager
965
+ extensionManager,
966
+ appConfig
1109
967
  }),
1110
968
  promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
1111
969
  servicesManager,
1112
- extensionManager
970
+ extensionManager,
971
+ appConfig
1113
972
  }),
1114
973
  hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
1115
974
  servicesManager,
1116
- extensionManager
975
+ extensionManager,
976
+ appConfig
1117
977
  })
1118
978
  });
1119
979
 
@@ -1126,13 +986,19 @@ _ref2 // Component props
1126
986
  // - Fix viewport border resize
1127
987
  // - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
1128
988
 
1129
- const measurementTrackingMachine = (0,es.Machine)(machineConfiguration, machineOptions);
1130
- 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]);
1131
997
 
1132
998
  // ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
1133
999
  (0,react.useEffect)(() => {
1134
- if (viewports.length > 0) {
1135
- const activeViewport = viewports[activeViewportIndex];
1000
+ if (viewports.size > 0) {
1001
+ const activeViewport = viewports.get(activeViewportId);
1136
1002
  if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
1137
1003
  return;
1138
1004
  }
@@ -1171,11 +1037,11 @@ _ref2 // Component props
1171
1037
  sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
1172
1038
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
1173
1039
  SeriesInstanceUID: displaySet.SeriesInstanceUID,
1174
- viewportIndex: activeViewportIndex
1040
+ viewportId: activeViewportId
1175
1041
  });
1176
1042
  }
1177
1043
  }
1178
- }, [activeViewportIndex, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1044
+ }, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1179
1045
  return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
1180
1046
  value: [trackedMeasurements, sendTrackedMeasurementsEvent]
1181
1047
  }, children);
@@ -1184,7 +1050,8 @@ TrackedMeasurementsContextProvider.propTypes = {
1184
1050
  children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
1185
1051
  servicesManager: (prop_types_default()).object.isRequired,
1186
1052
  commandsManager: (prop_types_default()).object.isRequired,
1187
- extensionManager: (prop_types_default()).object.isRequired
1053
+ extensionManager: (prop_types_default()).object.isRequired,
1054
+ appConfig: (prop_types_default()).object
1188
1055
  };
1189
1056
 
1190
1057
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
@@ -1215,7 +1082,7 @@ function getContextModule(_ref) {
1215
1082
 
1216
1083
  /***/ }),
1217
1084
 
1218
- /***/ 43744:
1085
+ /***/ 28030:
1219
1086
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1220
1087
 
1221
1088
  // ESM COMPAT FLAG
@@ -1226,23 +1093,29 @@ __webpack_require__.d(__webpack_exports__, {
1226
1093
  "default": () => (/* binding */ measurement_tracking_src)
1227
1094
  });
1228
1095
 
1229
- // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 14 modules
1230
- var getContextModule = __webpack_require__(43418);
1096
+ // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 12 modules
1097
+ var getContextModule = __webpack_require__(41832);
1231
1098
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1232
- var react = __webpack_require__(32735);
1099
+ var react = __webpack_require__(43001);
1233
1100
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
1234
- var prop_types = __webpack_require__(60216);
1101
+ var prop_types = __webpack_require__(3827);
1235
1102
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1236
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
1237
- var src = __webpack_require__(48501);
1238
- // EXTERNAL MODULE: ../../ui/src/index.js + 449 modules
1239
- var ui_src = __webpack_require__(43803);
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);
1240
1111
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
1241
1112
 
1242
1113
 
1243
1114
 
1244
1115
 
1245
1116
 
1117
+
1118
+
1246
1119
  const {
1247
1120
  formatDate
1248
1121
  } = src.utils;
@@ -1260,12 +1133,15 @@ function PanelStudyBrowserTracking(_ref) {
1260
1133
  dataSource
1261
1134
  } = _ref;
1262
1135
  const {
1263
- measurementService,
1264
1136
  displaySetService,
1265
1137
  uiDialogService,
1266
1138
  hangingProtocolService,
1267
1139
  uiNotificationService
1268
1140
  } = servicesManager.services;
1141
+ const navigate = (0,dist/* useNavigate */.s0)();
1142
+ const {
1143
+ t
1144
+ } = (0,es/* useTranslation */.$G)('Common');
1269
1145
 
1270
1146
  // Normally you nest the components so the tree isn't so deep, and the data
1271
1147
  // doesn't have to have such an intense shape. This works well enough for now.
@@ -1274,10 +1150,8 @@ function PanelStudyBrowserTracking(_ref) {
1274
1150
  StudyInstanceUIDs
1275
1151
  } = (0,ui_src/* useImageViewer */.zG)();
1276
1152
  const [{
1277
- activeViewportIndex,
1278
- viewports,
1279
- numCols,
1280
- numRows
1153
+ activeViewportId,
1154
+ viewports
1281
1155
  }, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1282
1156
  const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
1283
1157
  const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
@@ -1288,9 +1162,9 @@ function PanelStudyBrowserTracking(_ref) {
1288
1162
  const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
1289
1163
  const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
1290
1164
  let updatedViewports = [];
1291
- const viewportIndex = activeViewportIndex;
1165
+ const viewportId = activeViewportId;
1292
1166
  try {
1293
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
1167
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
1294
1168
  } catch (error) {
1295
1169
  console.warn(error);
1296
1170
  uiNotificationService.show({
@@ -1302,37 +1176,7 @@ function PanelStudyBrowserTracking(_ref) {
1302
1176
  }
1303
1177
  viewportGridService.setDisplaySetsForViewports(updatedViewports);
1304
1178
  };
1305
- const activeViewportDisplaySetInstanceUIDs = viewports[activeViewportIndex]?.displaySetInstanceUIDs;
1306
- (0,react.useEffect)(() => {
1307
- const added = measurementService.EVENTS.MEASUREMENT_ADDED;
1308
- const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
1309
- const subscriptions = [];
1310
- [added, addedRaw].forEach(evt => {
1311
- subscriptions.push(measurementService.subscribe(evt, _ref2 => {
1312
- let {
1313
- source,
1314
- measurement
1315
- } = _ref2;
1316
- const {
1317
- referenceSeriesUID: SeriesInstanceUID,
1318
- referenceStudyUID: StudyInstanceUID
1319
- } = measurement;
1320
- sendTrackedMeasurementsEvent('SET_DIRTY', {
1321
- SeriesInstanceUID
1322
- });
1323
- sendTrackedMeasurementsEvent('TRACK_SERIES', {
1324
- viewportIndex: activeViewportIndex,
1325
- StudyInstanceUID,
1326
- SeriesInstanceUID
1327
- });
1328
- }).unsubscribe);
1329
- });
1330
- return () => {
1331
- subscriptions.forEach(unsub => {
1332
- unsub();
1333
- });
1334
- };
1335
- }, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
1179
+ const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
1336
1180
  const {
1337
1181
  trackedSeries
1338
1182
  } = trackedMeasurements.context;
@@ -1345,6 +1189,10 @@ function PanelStudyBrowserTracking(_ref) {
1345
1189
  const qidoForStudyUID = await dataSource.query.studies.search({
1346
1190
  studyInstanceUid: StudyInstanceUID
1347
1191
  });
1192
+ if (!qidoForStudyUID?.length) {
1193
+ navigate('/notfoundstudy', '_self');
1194
+ throw new Error('Invalid study URL');
1195
+ }
1348
1196
  let qidoStudiesForPatient = qidoForStudyUID;
1349
1197
 
1350
1198
  // try to fetch the prior studies based on the patientID if the
@@ -1358,7 +1206,7 @@ function PanelStudyBrowserTracking(_ref) {
1358
1206
  const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
1359
1207
  return {
1360
1208
  studyInstanceUid: qidoStudy.StudyInstanceUID,
1361
- date: formatDate(qidoStudy.StudyDate),
1209
+ date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
1362
1210
  description: qidoStudy.StudyDescription,
1363
1211
  modalities: qidoStudy.ModalitiesInStudy,
1364
1212
  numInstances: qidoStudy.NumInstances
@@ -1390,17 +1238,18 @@ function PanelStudyBrowserTracking(_ref) {
1390
1238
  const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
1391
1239
  const imageId = imageIds[Math.floor(imageIds.length / 2)];
1392
1240
 
1393
- // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1394
- if (imageId) {
1395
- // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1396
- newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
1397
- setThumbnailImageSrcMap(prevState => {
1398
- return {
1399
- ...prevState,
1400
- ...newImageSrcEntry
1401
- };
1402
- });
1241
+ // TODO: Is it okay that imageIds are not returned here for SR displaySets?
1242
+ if (!imageId || displaySet?.unsupported) {
1243
+ return;
1403
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
+ });
1404
1253
  });
1405
1254
  }, [displaySetService, dataSource, getImageSrc]);
1406
1255
 
@@ -1427,6 +1276,9 @@ function PanelStudyBrowserTracking(_ref) {
1427
1276
  const displaySetInstanceUID = dSet.displaySetInstanceUID;
1428
1277
  const newImageSrcEntry = {};
1429
1278
  const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
1279
+ if (displaySet?.unsupported) {
1280
+ return;
1281
+ }
1430
1282
  if (options.madeInClient) {
1431
1283
  setJumpToDisplaySet(displaySetInstanceUID);
1432
1284
  }
@@ -1434,31 +1286,41 @@ function PanelStudyBrowserTracking(_ref) {
1434
1286
  const imageId = imageIds[Math.floor(imageIds.length / 2)];
1435
1287
 
1436
1288
  // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1437
- if (imageId) {
1438
- // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1439
- newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
1440
- setThumbnailImageSrcMap(prevState => {
1441
- return {
1442
- ...prevState,
1443
- ...newImageSrcEntry
1444
- };
1445
- });
1289
+ if (!imageId) {
1290
+ return;
1446
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
+ });
1447
1301
  });
1448
1302
  });
1449
-
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)(() => {
1450
1309
  // TODO: Will this always hold _all_ the displaySets we care about?
1451
1310
  // DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets`
1452
1311
  const SubscriptionDisplaySetsChanged = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => {
1453
1312
  const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
1454
1313
  setDisplaySets(mappedDisplaySets);
1455
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
+ });
1456
1319
  return () => {
1457
- SubscriptionDisplaySetsAdded.unsubscribe();
1458
1320
  SubscriptionDisplaySetsChanged.unsubscribe();
1321
+ SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
1459
1322
  };
1460
- // eslint-disable-next-line react-hooks/exhaustive-deps
1461
- }, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
1323
+ }, [thumbnailImageSrcMap, trackedSeries, viewports, dataSource, displaySetService]);
1462
1324
  const tabs = _createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets, hangingProtocolService);
1463
1325
 
1464
1326
  // TODO: Should not fire this on "close"
@@ -1568,14 +1430,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1568
1430
  const thumbnailNoImageDisplaySets = [];
1569
1431
  displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
1570
1432
  const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
1571
- const componentType = _getComponentType(ds.Modality);
1433
+ const componentType = _getComponentType(ds);
1572
1434
  const numPanes = viewportGridService.getNumViewportPanes();
1573
- const viewportIdentificator = numPanes === 1 ? [] : viewports.reduce((acc, viewportData, index) => {
1574
- if (index < numPanes && viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
1575
- acc.push(viewportData.viewportLabel);
1576
- }
1577
- return acc;
1578
- }, []);
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
+ }
1579
1443
  const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
1580
1444
  const {
1581
1445
  displaySetInstanceUID
@@ -1588,6 +1452,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1588
1452
  seriesDate: formatDate(ds.SeriesDate),
1589
1453
  numInstances: ds.numImageFrames,
1590
1454
  countIcon: ds.countIcon,
1455
+ messages: ds.messages,
1591
1456
  StudyInstanceUID: ds.StudyInstanceUID,
1592
1457
  componentType,
1593
1458
  imageSrc,
@@ -1598,11 +1463,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1598
1463
  },
1599
1464
 
1600
1465
  isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
1466
+ isHydratedForDerivedDisplaySet: ds.isHydrated,
1601
1467
  viewportIdentificator
1602
1468
  };
1603
1469
  if (componentType === 'thumbnailNoImage') {
1604
1470
  if (dataSource.reject && dataSource.reject.series) {
1605
- thumbnailProps.canReject = true;
1471
+ thumbnailProps.canReject = !ds?.unsupported;
1606
1472
  thumbnailProps.onReject = () => {
1607
1473
  uiDialogService.create({
1608
1474
  id: 'ds-reject-sr',
@@ -1613,16 +1479,18 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1613
1479
  contentProps: {
1614
1480
  title: 'Delete Report',
1615
1481
  body: () => /*#__PURE__*/react.createElement("div", {
1616
- className: "p-4 text-white bg-primary-dark"
1617
- }, /*#__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.")),
1618
1486
  actions: [{
1619
1487
  id: 'cancel',
1620
1488
  text: 'Cancel',
1621
- type: 'secondary'
1489
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
1622
1490
  }, {
1623
1491
  id: 'yes',
1624
1492
  text: 'Yes',
1625
- type: 'primary',
1493
+ type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
1626
1494
  classes: ['reject-yes-button']
1627
1495
  }],
1628
1496
  onClose: () => uiDialogService.dismiss({
@@ -1632,10 +1500,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1632
1500
  const yesButton = document.querySelector('.reject-yes-button');
1633
1501
  yesButton.focus();
1634
1502
  },
1635
- onSubmit: async _ref3 => {
1503
+ onSubmit: async _ref2 => {
1636
1504
  let {
1637
1505
  action
1638
- } = _ref3;
1506
+ } = _ref2;
1639
1507
  switch (action.id) {
1640
1508
  case 'yes':
1641
1509
  try {
@@ -1679,8 +1547,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1679
1547
  return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
1680
1548
  }
1681
1549
  const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
1682
- function _getComponentType(Modality) {
1683
- if (thumbnailNoImageModalities.includes(Modality)) {
1550
+ function _getComponentType(ds) {
1551
+ if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
1684
1552
  return 'thumbnailNoImage';
1685
1553
  }
1686
1554
  return 'thumbnailTracked';
@@ -1877,10 +1745,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
1877
1745
  servicesManager: (prop_types_default()).object.isRequired
1878
1746
  };
1879
1747
  /* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
1880
- // EXTERNAL MODULE: ./hooks/index.js + 3 modules
1881
- var hooks = __webpack_require__(39852);
1882
- // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1883
- var es = __webpack_require__(21572);
1748
+ // EXTERNAL MODULE: ./hooks/index.js + 1 modules
1749
+ var hooks = __webpack_require__(10800);
1884
1750
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
1885
1751
 
1886
1752
 
@@ -1896,20 +1762,15 @@ function ActionButtons(_ref) {
1896
1762
  t
1897
1763
  } = (0,es/* useTranslation */.$G)('MeasurementTable');
1898
1764
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
1899
- className: "text-base px-2 py-2",
1900
- size: "initial",
1901
- variant: disabled ? 'disabled' : 'outlined',
1902
- color: "black",
1903
- border: "primaryActive",
1904
1765
  onClick: onExportClick,
1905
- disabled: disabled
1766
+ disabled: disabled,
1767
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
1768
+ size: ui_src/* ButtonEnums.size */.LZ.dp.small
1906
1769
  }, t('Export')), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
1907
- className: "ml-2 px-2 text-base",
1908
- variant: disabled ? 'disabled' : 'outlined',
1909
- size: "initial",
1910
- color: "black",
1911
- border: "primaryActive",
1770
+ className: "ml-2",
1912
1771
  onClick: onCreateReportClick,
1772
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
1773
+ size: ui_src/* ButtonEnums.size */.LZ.dp.small,
1913
1774
  disabled: disabled
1914
1775
  }, t('Create Report')));
1915
1776
  }
@@ -1925,7 +1786,7 @@ ActionButtons.defaultProps = {
1925
1786
  };
1926
1787
  /* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
1927
1788
  // EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
1928
- var lodash_debounce = __webpack_require__(40001);
1789
+ var lodash_debounce = __webpack_require__(8324);
1929
1790
  var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
1930
1791
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
1931
1792
 
@@ -1957,9 +1818,9 @@ function PanelMeasurementTableTracking(_ref) {
1957
1818
  servicesManager,
1958
1819
  extensionManager
1959
1820
  } = _ref;
1960
- const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1821
+ const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
1961
1822
  const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
1962
- const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.Nr)(measurementChangeTimestamp, 200);
1823
+ const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
1963
1824
  const {
1964
1825
  measurementService,
1965
1826
  uiDialogService,
@@ -2053,7 +1914,7 @@ function PanelMeasurementTableTracking(_ref) {
2053
1914
  uid,
2054
1915
  isActive
2055
1916
  } = _ref2;
2056
- measurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid);
1917
+ measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
2057
1918
  onMeasurementItemClickHandler({
2058
1919
  uid,
2059
1920
  isActive
@@ -2126,23 +1987,21 @@ function PanelMeasurementTableTracking(_ref) {
2126
1987
  labelClassName: "text-white grow text-[14px] leading-[1.2]",
2127
1988
  autoFocus: true,
2128
1989
  id: "annotation",
2129
- className: "bg-black border-primary-main",
1990
+ className: "border-primary-main bg-black",
2130
1991
  type: "text",
2131
1992
  value: value.label,
2132
1993
  onChange: onChangeHandler,
2133
1994
  onKeyPress: onKeyPressHandler
2134
1995
  });
2135
1996
  },
2136
- actions: [
2137
- // temp: swap button types until colors are updated
2138
- {
1997
+ actions: [{
2139
1998
  id: 'cancel',
2140
1999
  text: 'Cancel',
2141
- type: 'primary'
2000
+ type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
2142
2001
  }, {
2143
2002
  id: 'save',
2144
2003
  text: 'Save',
2145
- type: 'secondary'
2004
+ type: ui_src/* ButtonEnums.type */.LZ.dt.primary
2146
2005
  }],
2147
2006
  onSubmit: onSubmitHandler
2148
2007
  }
@@ -2164,7 +2023,7 @@ function PanelMeasurementTableTracking(_ref) {
2164
2023
  const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
2165
2024
  const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
2166
2025
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
2167
- className: "overflow-x-hidden overflow-y-auto invisible-scrollbar",
2026
+ className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
2168
2027
  ref: measurementsPanelRef,
2169
2028
  "data-cy": 'trackedMeasurements-panel'
2170
2029
  }, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
@@ -2189,7 +2048,7 @@ function PanelMeasurementTableTracking(_ref) {
2189
2048
  onExportClick: exportReport,
2190
2049
  onCreateReportClick: () => {
2191
2050
  sendTrackedMeasurementsEvent('SAVE_REPORT', {
2192
- viewportIndex: viewportGrid.activeViewportIndex,
2051
+ viewportId: viewportGrid.activeViewportId,
2193
2052
  isBackupSave: true
2194
2053
  });
2195
2054
  },
@@ -2238,7 +2097,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
2238
2097
  if (findingSites) {
2239
2098
  const siteText = [];
2240
2099
  findingSites.forEach(site => {
2241
- if (site?.text !== label) siteText.push(site.text);
2100
+ if (site?.text !== label) {
2101
+ siteText.push(site.text);
2102
+ }
2242
2103
  });
2243
2104
  displayText = [...siteText, ...displayText];
2244
2105
  }
@@ -2277,7 +2138,7 @@ function getPanelModule(_ref) {
2277
2138
  } = _ref;
2278
2139
  return [{
2279
2140
  name: 'seriesList',
2280
- iconName: 'group-layers',
2141
+ iconName: 'tab-studies',
2281
2142
  iconLabel: 'Studies',
2282
2143
  label: 'Studies',
2283
2144
  component: panels_PanelStudyBrowserTracking.bind(null, {
@@ -2302,7 +2163,7 @@ function getPanelModule(_ref) {
2302
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); }
2303
2164
 
2304
2165
  const Component = /*#__PURE__*/react.lazy(() => {
2305
- 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));
2306
2167
  });
2307
2168
  const OHIFCornerstoneViewport = props => {
2308
2169
  return /*#__PURE__*/react.createElement(react.Suspense, {