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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/{270.bundle.4564621556b0f963a004.js → 116.bundle.422d1a76d8daccfed61d.js} +1037 -823
  2. package/dist/{917.bundle.37f76105d2e1a70d94cf.js → 12.bundle.078c14f666c71663ae8e.js} +6 -6
  3. package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.aeaad798561853bf6939.js} +6 -6
  4. package/dist/{208.bundle.21c449bf9b00123e1db3.js → 128.bundle.fdb6d1d5391b79de4936.js} +6 -6
  5. package/dist/{616.bundle.be469f44809e9b2485b2.js → 150.bundle.c99cc2e1df7cd4085265.js} +163 -106
  6. package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.73dd6f63fe0ddc52b7eb.js} +225 -203
  7. package/dist/{351.css → 181.css} +1 -1
  8. package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.591726b6144882ba0ee0.js} +1459 -811
  9. package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
  10. package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
  11. package/dist/{976.bundle.c1df3878a015cdf0e51f.js → 236.bundle.226efc38e453a4aeb7dd.js} +72 -83
  12. package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.8bc4553ee5c56bf7cf32.js} +51 -35
  13. package/dist/{973.bundle.f4b8ccf7ad2ff9f6041c.js → 281.bundle.e9554f25a9eeac2f43e6.js} +18 -14
  14. package/dist/{744.bundle.d07b9ad7b31de0ba4956.js → 30.bundle.c8dfb82c70ae9ff67f14.js} +185 -174
  15. package/dist/{192.bundle.1efc10937535a37a17f0.js → 348.bundle.e5082a6425f719eb6658.js} +43 -19
  16. package/dist/{404.bundle.d980e423e9670737ef12.js → 359.bundle.8da7f102410ca9c0c999.js} +13 -19
  17. package/dist/{790.bundle.ed28f0930111217b742a.js → 410.bundle.5d03eeef5b705198bf5e.js} +10 -7
  18. package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.6cadc61b8a455776de31.js} +49 -17
  19. package/dist/{569.bundle.21f8ad57c06a210448b5.js → 451.bundle.e59fcdb1f1d3fbe71cd4.js} +83 -101
  20. package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.b598d406ddfc2666851b.js} +65 -93
  21. package/dist/{199.bundle.7cec631fcf4b8475abda.js → 506.bundle.869288177e788d808aaa.js} +86 -10
  22. package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
  23. package/dist/{984.bundle.b33e9e702a96c5ae9fb7.js → 663.bundle.6a389399e5196510e0de.js} +67 -37
  24. package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 677.bundle.ec5f2b4707db33bd4d8e.js} +731 -447
  25. package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.b3dbf84eefbef768843f.js} +6 -6
  26. package/dist/{50.bundle.9b5c9aaaf1188ab0794a.js → 687.bundle.67d721785216e064fc52.js} +218 -9
  27. package/dist/{331.bundle.bd0c13931a21d53086c9.js → 754.bundle.a5c9246c77659eab2739.js} +12413 -7539
  28. package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.8ba82ee206266eb2da5e.js} +90 -63
  29. package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
  30. package/dist/{283.bundle.8ffad59b5844a24b2a62.js → 782.bundle.6d57b35a056506c94352.js} +112 -62
  31. package/dist/{642.bundle.88a563313292ae2cdd2e.js → 814.bundle.ad8ebe6cffa96a5cfc1f.js} +6 -6
  32. package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.5cdd9439a62e5c7e902f.js} +81 -34
  33. package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.9e526affbd17b0ed96a6.js} +34 -29
  34. package/dist/{82.bundle.b824c7d8ff72de0fc149.js → 90.bundle.d7a1e818bbbd3bce5419.js} +1397 -366
  35. package/dist/945.min.worker.js +1 -1
  36. package/dist/945.min.worker.js.map +1 -1
  37. package/dist/{707.bundle.0b18a871c9eb8df9e992.js → 967.bundle.8b4adf9b5a7392b51d0c.js} +584 -435
  38. package/dist/app-config.js +7 -7
  39. package/dist/{app.bundle.f0885cb776ab9ae8974b.js → app.bundle.1905c07065c4b93afa5a.js} +69865 -67829
  40. package/dist/app.bundle.css +9 -9
  41. package/dist/assets/yandex-browser-manifest.json +1 -1
  42. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  43. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  44. package/dist/{dicom-microscopy-viewer.bundle.aa60bdf008c32c39cfd7.js → dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js} +5 -4
  45. package/dist/es6-shim.min.js +3569 -2
  46. package/dist/google.js +8 -7
  47. package/dist/index.html +1 -1
  48. package/dist/{index.worker.1c69152d710fa7b84bce.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
  49. package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
  50. package/dist/init-service-worker.js +3 -5
  51. package/dist/oidc-client.min.js +10857 -39
  52. package/dist/polyfill.min.js +184 -1
  53. package/dist/silent-refresh.html +18 -9
  54. package/dist/sw.js +1 -1
  55. package/package.json +19 -20
  56. package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
  57. package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
  58. /package/dist/{55.css → 250.css} +0 -0
  59. /package/dist/{806.css → 579.css} +0 -0
  60. /package/dist/{707.css → 967.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[744],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[30],{
3
3
 
4
- /***/ 43418:
4
+ /***/ 1053:
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 + 9 modules
22
+ var react_es = __webpack_require__(59677);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 458 modules
24
+ var src = __webpack_require__(88344);
25
25
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
26
26
 
27
27
  const RESPONSE = {
@@ -247,7 +247,7 @@ const defaultOptions = {
247
247
  showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
248
248
  console.warn('showStructuredReportDisplaySetInActiveViewport: not implemented');
249
249
  },
250
- clearContext: (0,es.assign)({
250
+ clearContext: (0,es/* assign */.f0)({
251
251
  trackedStudy: '',
252
252
  trackedSeries: [],
253
253
  ignoredSeries: [],
@@ -256,7 +256,7 @@ const defaultOptions = {
256
256
  prevIgnoredSeries: []
257
257
  }),
258
258
  // Promise resolves w/ `evt.data.*`
259
- setTrackedStudyAndSeries: (0,es.assign)((ctx, evt) => ({
259
+ setTrackedStudyAndSeries: (0,es/* assign */.f0)((ctx, evt) => ({
260
260
  prevTrackedStudy: ctx.trackedStudy,
261
261
  prevTrackedSeries: ctx.trackedSeries.slice(),
262
262
  prevIgnoredSeries: ctx.ignoredSeries.slice(),
@@ -265,7 +265,7 @@ const defaultOptions = {
265
265
  trackedSeries: [evt.data.SeriesInstanceUID],
266
266
  ignoredSeries: []
267
267
  })),
268
- setTrackedStudyAndMultipleSeries: (0,es.assign)((ctx, evt) => {
268
+ setTrackedStudyAndMultipleSeries: (0,es/* assign */.f0)((ctx, evt) => {
269
269
  const studyInstanceUID = evt.StudyInstanceUID || evt.data.StudyInstanceUID;
270
270
  const seriesInstanceUIDs = evt.SeriesInstanceUIDs || evt.data.SeriesInstanceUIDs;
271
271
  return {
@@ -278,24 +278,24 @@ const defaultOptions = {
278
278
  ignoredSeries: []
279
279
  };
280
280
  }),
281
- setIsDirtyToClean: (0,es.assign)((ctx, evt) => ({
281
+ setIsDirtyToClean: (0,es/* assign */.f0)((ctx, evt) => ({
282
282
  isDirty: false
283
283
  })),
284
- setIsDirty: (0,es.assign)((ctx, evt) => ({
284
+ setIsDirty: (0,es/* assign */.f0)((ctx, evt) => ({
285
285
  isDirty: true
286
286
  })),
287
- ignoreSeries: (0,es.assign)((ctx, evt) => ({
287
+ ignoreSeries: (0,es/* assign */.f0)((ctx, evt) => ({
288
288
  prevIgnoredSeries: [...ctx.ignoredSeries],
289
289
  ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID]
290
290
  })),
291
- ignoreHydrationForSRSeries: (0,es.assign)((ctx, evt) => ({
291
+ ignoreHydrationForSRSeries: (0,es/* assign */.f0)((ctx, evt) => ({
292
292
  ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID]
293
293
  })),
294
- addTrackedSeries: (0,es.assign)((ctx, evt) => ({
294
+ addTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
295
295
  prevTrackedSeries: [...ctx.trackedSeries],
296
296
  trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID]
297
297
  })),
298
- removeTrackedSeries: (0,es.assign)((ctx, evt) => ({
298
+ removeTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
299
299
  prevTrackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID),
300
300
  trackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID)
301
301
  }))
@@ -362,21 +362,21 @@ function promptBeginTracking(_ref, ctx, evt) {
362
362
  uiViewportDialogService
363
363
  } = servicesManager.services;
364
364
  const {
365
- viewportIndex,
365
+ viewportId,
366
366
  StudyInstanceUID,
367
367
  SeriesInstanceUID
368
368
  } = evt;
369
369
  return new Promise(async function (resolve, reject) {
370
- let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportIndex);
370
+ let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
371
371
  resolve({
372
372
  userResponse: promptResult,
373
373
  StudyInstanceUID,
374
374
  SeriesInstanceUID,
375
- viewportIndex
375
+ viewportId
376
376
  });
377
377
  });
378
378
  }
379
- function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
379
+ function _askTrackMeasurements(uiViewportDialogService, viewportId) {
380
380
  return new Promise(function (resolve, reject) {
381
381
  const message = 'Track measurements for this series?';
382
382
  const actions = [{
@@ -400,7 +400,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
400
400
  resolve(result);
401
401
  };
402
402
  uiViewportDialogService.show({
403
- viewportIndex,
403
+ viewportId,
404
404
  id: 'measurement-tracking-prompt-begin-tracking',
405
405
  type: 'info',
406
406
  message,
@@ -433,25 +433,25 @@ function promptTrackNewSeries(_ref, ctx, evt) {
433
433
  UIViewportDialogService
434
434
  } = servicesManager.services;
435
435
  const {
436
- viewportIndex,
436
+ viewportId,
437
437
  StudyInstanceUID,
438
438
  SeriesInstanceUID
439
439
  } = evt;
440
440
  return new Promise(async function (resolve, reject) {
441
- let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportIndex);
441
+ let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
442
442
  if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
443
- promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
443
+ promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
444
444
  }
445
445
  resolve({
446
446
  userResponse: promptResult,
447
447
  StudyInstanceUID,
448
448
  SeriesInstanceUID,
449
- viewportIndex,
449
+ viewportId,
450
450
  isBackupSave: false
451
451
  });
452
452
  });
453
453
  }
454
- function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
454
+ function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
455
455
  return new Promise(function (resolve, reject) {
456
456
  const message = 'Do you want to add this measurement to the existing report?';
457
457
  const actions = [{
@@ -472,7 +472,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
472
472
  resolve(result);
473
473
  };
474
474
  uiViewportDialogService.show({
475
- viewportIndex,
475
+ viewportId,
476
476
  type: 'info',
477
477
  message,
478
478
  actions,
@@ -484,7 +484,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
484
484
  });
485
485
  });
486
486
  }
487
- function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
487
+ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
488
488
  return new Promise(function (resolve, reject) {
489
489
  const message = 'You have existing tracked measurements. What would you like to do with your existing tracked measurements?';
490
490
  const actions = [{
@@ -505,7 +505,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
505
505
  resolve(result);
506
506
  };
507
507
  UIViewportDialogService.show({
508
- viewportIndex,
508
+ viewportId,
509
509
  type: 'warning',
510
510
  message,
511
511
  actions,
@@ -536,25 +536,25 @@ function promptTrackNewStudy(_ref, ctx, evt) {
536
536
  UIViewportDialogService
537
537
  } = servicesManager.services;
538
538
  const {
539
- viewportIndex,
539
+ viewportId,
540
540
  StudyInstanceUID,
541
541
  SeriesInstanceUID
542
542
  } = evt;
543
543
  return new Promise(async function (resolve, reject) {
544
- let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex);
544
+ let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
545
545
  if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
546
- promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
546
+ promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
547
547
  }
548
548
  resolve({
549
549
  userResponse: promptResult,
550
550
  StudyInstanceUID,
551
551
  SeriesInstanceUID,
552
- viewportIndex,
552
+ viewportId,
553
553
  isBackupSave: false
554
554
  });
555
555
  });
556
556
  }
557
- function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportIndex) {
557
+ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
558
558
  return new Promise(function (resolve, reject) {
559
559
  const message = 'Track measurements for this series?';
560
560
  const actions = [{
@@ -575,7 +575,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
575
575
  resolve(result);
576
576
  };
577
577
  UIViewportDialogService.show({
578
- viewportIndex,
578
+ viewportId,
579
579
  type: 'info',
580
580
  message,
581
581
  actions,
@@ -587,7 +587,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
587
587
  });
588
588
  });
589
589
  }
590
- function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
590
+ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
591
591
  return new Promise(function (resolve, reject) {
592
592
  const message = 'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
593
593
  const actions = [{
@@ -608,7 +608,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
608
608
  resolve(result);
609
609
  };
610
610
  UIViewportDialogService.show({
611
- viewportIndex,
611
+ viewportId,
612
612
  type: 'warning',
613
613
  message,
614
614
  actions,
@@ -621,8 +621,8 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
621
621
  });
622
622
  }
623
623
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
624
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
625
- var core_src = __webpack_require__(48501);
624
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
625
+ var core_src = __webpack_require__(78695);
626
626
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportAsync.tsx
627
627
 
628
628
 
@@ -725,17 +725,23 @@ function createReportDialogPrompt(uiDialogService) {
725
725
  action,
726
726
  value
727
727
  } = _ref;
728
- uiDialogService.dismiss({
729
- id: dialogId
730
- });
731
728
  switch (action.id) {
732
729
  case 'save':
733
- resolve({
734
- action: PROMPT_RESPONSES.CREATE_REPORT,
735
- value: value.label
736
- });
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
+ }
737
740
  break;
738
741
  case 'cancel':
742
+ uiDialogService.dismiss({
743
+ id: dialogId
744
+ });
739
745
  resolve({
740
746
  action: PROMPT_RESPONSES.CANCEL,
741
747
  value: undefined
@@ -781,12 +787,12 @@ function createReportDialogPrompt(uiDialogService) {
781
787
  };
782
788
  const onKeyPressHandler = event => {
783
789
  if (event.key === 'Enter') {
784
- uiDialogService.dismiss({
785
- id: dialogId
786
- });
787
- resolve({
788
- action: PROMPT_RESPONSES.CREATE_REPORT,
789
- value: value.label
790
+ // Trigger form submit
791
+ _handleFormSubmit({
792
+ action: {
793
+ id: 'save'
794
+ },
795
+ value
790
796
  });
791
797
  }
792
798
  };
@@ -796,7 +802,7 @@ function createReportDialogPrompt(uiDialogService) {
796
802
  label: "Enter the report name",
797
803
  labelClassName: "text-white grow leading-[1.2] text-[14px]",
798
804
  autoFocus: true,
799
- className: "bg-black border-primary-main grow",
805
+ className: "border-primary-main grow bg-black",
800
806
  type: "text",
801
807
  value: value.label,
802
808
  onChange: onChangeHandler,
@@ -832,7 +838,7 @@ function promptSaveReport(_ref, ctx, evt) {
832
838
  measurementService,
833
839
  displaySetService
834
840
  } = servicesManager.services;
835
- const viewportIndex = evt.viewportIndex === undefined ? evt.data.viewportIndex : evt.viewportIndex;
841
+ const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
836
842
  const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
837
843
  const StudyInstanceUID = evt?.data?.StudyInstanceUID;
838
844
  const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
@@ -867,14 +873,14 @@ function promptSaveReport(_ref, ctx, evt) {
867
873
  createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
868
874
  StudyInstanceUID,
869
875
  SeriesInstanceUID,
870
- viewportIndex,
876
+ viewportId,
871
877
  isBackupSave
872
878
  });
873
879
  });
874
880
  }
875
881
  /* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
876
882
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
877
- var cornerstone_dicom_sr_src = __webpack_require__(65948);
883
+ var cornerstone_dicom_sr_src = __webpack_require__(42170);
878
884
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
879
885
 
880
886
 
@@ -890,19 +896,20 @@ const promptHydrateStructuredReport_RESPONSE = {
890
896
  function promptHydrateStructuredReport(_ref, ctx, evt) {
891
897
  let {
892
898
  servicesManager,
893
- extensionManager
899
+ extensionManager,
900
+ appConfig
894
901
  } = _ref;
895
902
  const {
896
903
  uiViewportDialogService,
897
904
  displaySetService
898
905
  } = servicesManager.services;
899
906
  const {
900
- viewportIndex,
907
+ viewportId,
901
908
  displaySetInstanceUID
902
909
  } = evt;
903
910
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
904
911
  return new Promise(async function (resolve, reject) {
905
- const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex);
912
+ const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
906
913
 
907
914
  // Need to do action here... So we can set state...
908
915
  let StudyInstanceUID, SeriesInstanceUIDs;
@@ -910,7 +917,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
910
917
  console.warn('!! HYDRATING STRUCTURED REPORT');
911
918
  const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
912
919
  servicesManager,
913
- extensionManager
920
+ extensionManager,
921
+ appConfig
914
922
  }, displaySetInstanceUID);
915
923
  StudyInstanceUID = hydrationResult.StudyInstanceUID;
916
924
  SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
@@ -919,13 +927,13 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
919
927
  userResponse: promptResult,
920
928
  displaySetInstanceUID: evt.displaySetInstanceUID,
921
929
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
922
- viewportIndex,
930
+ viewportId,
923
931
  StudyInstanceUID,
924
932
  SeriesInstanceUIDs
925
933
  });
926
934
  });
927
935
  }
928
- function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportIndex) {
936
+ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
929
937
  return new Promise(function (resolve, reject) {
930
938
  const message = 'Do you want to continue tracking measurements for this study?';
931
939
  const actions = [{
@@ -942,7 +950,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
942
950
  resolve(result);
943
951
  };
944
952
  uiViewportDialogService.show({
945
- viewportIndex,
953
+ viewportId,
946
954
  type: 'info',
947
955
  message,
948
956
  actions,
@@ -966,7 +974,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
966
974
  displaySetService
967
975
  } = servicesManager.services;
968
976
  const {
969
- viewportIndex,
977
+ viewportId,
970
978
  displaySetInstanceUID
971
979
  } = evt;
972
980
  const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
@@ -980,13 +988,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
980
988
  resolve({
981
989
  displaySetInstanceUID: evt.displaySetInstanceUID,
982
990
  srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
983
- viewportIndex,
991
+ viewportId,
984
992
  StudyInstanceUID,
985
993
  SeriesInstanceUIDs
986
994
  });
987
995
  });
988
996
  }
989
997
  /* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
998
+ // EXTERNAL MODULE: ./state/index.js + 1 modules
999
+ var state = __webpack_require__(62657);
990
1000
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
991
1001
 
992
1002
 
@@ -1000,6 +1010,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
1000
1010
 
1001
1011
 
1002
1012
 
1013
+
1003
1014
  const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
1004
1015
  TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
1005
1016
  const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
@@ -1020,9 +1031,10 @@ _ref2 // Component props
1020
1031
  let {
1021
1032
  children
1022
1033
  } = _ref2;
1034
+ const [appConfig] = (0,state/* useAppConfig */.M)();
1023
1035
  const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
1024
1036
  const {
1025
- activeViewportIndex,
1037
+ activeViewportId,
1026
1038
  viewports
1027
1039
  } = viewportGrid;
1028
1040
  const {
@@ -1038,7 +1050,7 @@ _ref2 // Component props
1038
1050
  } = ctx;
1039
1051
  const measurements = measurementService.getMeasurements();
1040
1052
  const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
1041
- console.log('jumping to measurement reset viewport', viewportGrid.activeViewportIndex, trackedMeasurements[0]);
1053
+ console.log('jumping to measurement reset viewport', viewportGrid.activeViewportId, trackedMeasurements[0]);
1042
1054
  const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
1043
1055
  const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
1044
1056
  const referencedImages = referencedDisplaySet.images;
@@ -1058,7 +1070,7 @@ _ref2 // Component props
1058
1070
  }
1059
1071
  }
1060
1072
  viewportGridService.setDisplaySetsForViewport({
1061
- viewportIndex: viewportGrid.activeViewportIndex,
1073
+ viewportId: viewportGrid.activeViewportId,
1062
1074
  displaySetInstanceUIDs: [referencedDisplaySetUID],
1063
1075
  viewportOptions: {
1064
1076
  initialImageOptions: {
@@ -1071,7 +1083,7 @@ _ref2 // Component props
1071
1083
  if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
1072
1084
  const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0].displaySetInstanceUID;
1073
1085
  viewportGridService.setDisplaySetsForViewport({
1074
- viewportIndex: evt.data.viewportIndex,
1086
+ viewportId: evt.data.viewportId,
1075
1087
  displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
1076
1088
  });
1077
1089
  }
@@ -1095,28 +1107,34 @@ _ref2 // Component props
1095
1107
  machineOptions.services = Object.assign({}, machineOptions.services, {
1096
1108
  promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
1097
1109
  servicesManager,
1098
- extensionManager
1110
+ extensionManager,
1111
+ appConfig
1099
1112
  }),
1100
1113
  promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
1101
1114
  servicesManager,
1102
- extensionManager
1115
+ extensionManager,
1116
+ appConfig
1103
1117
  }),
1104
1118
  promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
1105
1119
  servicesManager,
1106
- extensionManager
1120
+ extensionManager,
1121
+ appConfig
1107
1122
  }),
1108
1123
  promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
1109
1124
  servicesManager,
1110
1125
  commandsManager,
1111
- extensionManager
1126
+ extensionManager,
1127
+ appConfig
1112
1128
  }),
1113
1129
  promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
1114
1130
  servicesManager,
1115
- extensionManager
1131
+ extensionManager,
1132
+ appConfig
1116
1133
  }),
1117
1134
  hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
1118
1135
  servicesManager,
1119
- extensionManager
1136
+ extensionManager,
1137
+ appConfig
1120
1138
  })
1121
1139
  });
1122
1140
 
@@ -1129,13 +1147,13 @@ _ref2 // Component props
1129
1147
  // - Fix viewport border resize
1130
1148
  // - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
1131
1149
 
1132
- const measurementTrackingMachine = (0,es.Machine)(machineConfiguration, machineOptions);
1133
- const [trackedMeasurements, sendTrackedMeasurementsEvent, trackedMeasurementsService] = (0,lib.useMachine)(measurementTrackingMachine);
1150
+ const measurementTrackingMachine = (0,es/* Machine */.J)(machineConfiguration, machineOptions);
1151
+ const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,react_es/* useMachine */.eO)(measurementTrackingMachine);
1134
1152
 
1135
1153
  // ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
1136
1154
  (0,react.useEffect)(() => {
1137
- if (viewports.length > 0) {
1138
- const activeViewport = viewports[activeViewportIndex];
1155
+ if (viewports.size > 0) {
1156
+ const activeViewport = viewports.get(activeViewportId);
1139
1157
  if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
1140
1158
  return;
1141
1159
  }
@@ -1174,11 +1192,11 @@ _ref2 // Component props
1174
1192
  sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
1175
1193
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
1176
1194
  SeriesInstanceUID: displaySet.SeriesInstanceUID,
1177
- viewportIndex: activeViewportIndex
1195
+ viewportId: activeViewportId
1178
1196
  });
1179
1197
  }
1180
1198
  }
1181
- }, [activeViewportIndex, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1199
+ }, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
1182
1200
  return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
1183
1201
  value: [trackedMeasurements, sendTrackedMeasurementsEvent]
1184
1202
  }, children);
@@ -1187,7 +1205,8 @@ TrackedMeasurementsContextProvider.propTypes = {
1187
1205
  children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
1188
1206
  servicesManager: (prop_types_default()).object.isRequired,
1189
1207
  commandsManager: (prop_types_default()).object.isRequired,
1190
- extensionManager: (prop_types_default()).object.isRequired
1208
+ extensionManager: (prop_types_default()).object.isRequired,
1209
+ appConfig: (prop_types_default()).object
1191
1210
  };
1192
1211
 
1193
1212
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
@@ -1218,7 +1237,7 @@ function getContextModule(_ref) {
1218
1237
 
1219
1238
  /***/ }),
1220
1239
 
1221
- /***/ 43744:
1240
+ /***/ 28030:
1222
1241
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1223
1242
 
1224
1243
  // ESM COMPAT FLAG
@@ -1230,22 +1249,28 @@ __webpack_require__.d(__webpack_exports__, {
1230
1249
  });
1231
1250
 
1232
1251
  // EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 14 modules
1233
- var getContextModule = __webpack_require__(43418);
1252
+ var getContextModule = __webpack_require__(1053);
1234
1253
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
1235
- var react = __webpack_require__(32735);
1254
+ var react = __webpack_require__(43001);
1236
1255
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
1237
- var prop_types = __webpack_require__(60216);
1256
+ var prop_types = __webpack_require__(3827);
1238
1257
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1239
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
1240
- var src = __webpack_require__(48501);
1241
- // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
1242
- var ui_src = __webpack_require__(28619);
1258
+ // EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
1259
+ var dist = __webpack_require__(62474);
1260
+ // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1261
+ var es = __webpack_require__(69190);
1262
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
1263
+ var src = __webpack_require__(78695);
1264
+ // EXTERNAL MODULE: ../../ui/src/index.js + 458 modules
1265
+ var ui_src = __webpack_require__(88344);
1243
1266
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
1244
1267
 
1245
1268
 
1246
1269
 
1247
1270
 
1248
1271
 
1272
+
1273
+
1249
1274
  const {
1250
1275
  formatDate
1251
1276
  } = src.utils;
@@ -1263,12 +1288,15 @@ function PanelStudyBrowserTracking(_ref) {
1263
1288
  dataSource
1264
1289
  } = _ref;
1265
1290
  const {
1266
- measurementService,
1267
1291
  displaySetService,
1268
1292
  uiDialogService,
1269
1293
  hangingProtocolService,
1270
1294
  uiNotificationService
1271
1295
  } = servicesManager.services;
1296
+ const navigate = (0,dist/* useNavigate */.s0)();
1297
+ const {
1298
+ t
1299
+ } = (0,es/* useTranslation */.$G)('Common');
1272
1300
 
1273
1301
  // Normally you nest the components so the tree isn't so deep, and the data
1274
1302
  // doesn't have to have such an intense shape. This works well enough for now.
@@ -1277,10 +1305,8 @@ function PanelStudyBrowserTracking(_ref) {
1277
1305
  StudyInstanceUIDs
1278
1306
  } = (0,ui_src/* useImageViewer */.zG)();
1279
1307
  const [{
1280
- activeViewportIndex,
1281
- viewports,
1282
- numCols,
1283
- numRows
1308
+ activeViewportId,
1309
+ viewports
1284
1310
  }, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1285
1311
  const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
1286
1312
  const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
@@ -1291,9 +1317,9 @@ function PanelStudyBrowserTracking(_ref) {
1291
1317
  const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
1292
1318
  const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
1293
1319
  let updatedViewports = [];
1294
- const viewportIndex = activeViewportIndex;
1320
+ const viewportId = activeViewportId;
1295
1321
  try {
1296
- updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
1322
+ updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
1297
1323
  } catch (error) {
1298
1324
  console.warn(error);
1299
1325
  uiNotificationService.show({
@@ -1305,37 +1331,7 @@ function PanelStudyBrowserTracking(_ref) {
1305
1331
  }
1306
1332
  viewportGridService.setDisplaySetsForViewports(updatedViewports);
1307
1333
  };
1308
- const activeViewportDisplaySetInstanceUIDs = viewports[activeViewportIndex]?.displaySetInstanceUIDs;
1309
- (0,react.useEffect)(() => {
1310
- const added = measurementService.EVENTS.MEASUREMENT_ADDED;
1311
- const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
1312
- const subscriptions = [];
1313
- [added, addedRaw].forEach(evt => {
1314
- subscriptions.push(measurementService.subscribe(evt, _ref2 => {
1315
- let {
1316
- source,
1317
- measurement
1318
- } = _ref2;
1319
- const {
1320
- referenceSeriesUID: SeriesInstanceUID,
1321
- referenceStudyUID: StudyInstanceUID
1322
- } = measurement;
1323
- sendTrackedMeasurementsEvent('SET_DIRTY', {
1324
- SeriesInstanceUID
1325
- });
1326
- sendTrackedMeasurementsEvent('TRACK_SERIES', {
1327
- viewportIndex: activeViewportIndex,
1328
- StudyInstanceUID,
1329
- SeriesInstanceUID
1330
- });
1331
- }).unsubscribe);
1332
- });
1333
- return () => {
1334
- subscriptions.forEach(unsub => {
1335
- unsub();
1336
- });
1337
- };
1338
- }, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
1334
+ const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
1339
1335
  const {
1340
1336
  trackedSeries
1341
1337
  } = trackedMeasurements.context;
@@ -1348,6 +1344,10 @@ function PanelStudyBrowserTracking(_ref) {
1348
1344
  const qidoForStudyUID = await dataSource.query.studies.search({
1349
1345
  studyInstanceUid: StudyInstanceUID
1350
1346
  });
1347
+ if (!qidoForStudyUID?.length) {
1348
+ navigate('/notfoundstudy', '_self');
1349
+ throw new Error('Invalid study URL');
1350
+ }
1351
1351
  let qidoStudiesForPatient = qidoForStudyUID;
1352
1352
 
1353
1353
  // try to fetch the prior studies based on the patientID if the
@@ -1361,7 +1361,7 @@ function PanelStudyBrowserTracking(_ref) {
1361
1361
  const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
1362
1362
  return {
1363
1363
  studyInstanceUid: qidoStudy.StudyInstanceUID,
1364
- date: formatDate(qidoStudy.StudyDate),
1364
+ date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
1365
1365
  description: qidoStudy.StudyDescription,
1366
1366
  modalities: qidoStudy.ModalitiesInStudy,
1367
1367
  numInstances: qidoStudy.NumInstances
@@ -1394,7 +1394,7 @@ function PanelStudyBrowserTracking(_ref) {
1394
1394
  const imageId = imageIds[Math.floor(imageIds.length / 2)];
1395
1395
 
1396
1396
  // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1397
- if (imageId) {
1397
+ if (imageId && !displaySet?.unsupported) {
1398
1398
  // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1399
1399
  newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
1400
1400
  setThumbnailImageSrcMap(prevState => {
@@ -1430,22 +1430,24 @@ function PanelStudyBrowserTracking(_ref) {
1430
1430
  const displaySetInstanceUID = dSet.displaySetInstanceUID;
1431
1431
  const newImageSrcEntry = {};
1432
1432
  const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
1433
- if (options.madeInClient) {
1434
- setJumpToDisplaySet(displaySetInstanceUID);
1435
- }
1436
- const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
1437
- const imageId = imageIds[Math.floor(imageIds.length / 2)];
1438
-
1439
- // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1440
- if (imageId) {
1441
- // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1442
- newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
1443
- setThumbnailImageSrcMap(prevState => {
1444
- return {
1445
- ...prevState,
1446
- ...newImageSrcEntry
1447
- };
1448
- });
1433
+ if (!displaySet?.unsupported) {
1434
+ if (options.madeInClient) {
1435
+ setJumpToDisplaySet(displaySetInstanceUID);
1436
+ }
1437
+ const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
1438
+ const imageId = imageIds[Math.floor(imageIds.length / 2)];
1439
+
1440
+ // TODO: Is it okay that imageIds are not returned here for SR displaysets?
1441
+ if (imageId) {
1442
+ // When the image arrives, render it and store the result in the thumbnailImgSrcMap
1443
+ newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
1444
+ setThumbnailImageSrcMap(prevState => {
1445
+ return {
1446
+ ...prevState,
1447
+ ...newImageSrcEntry
1448
+ };
1449
+ });
1450
+ }
1449
1451
  }
1450
1452
  });
1451
1453
  });
@@ -1456,9 +1458,14 @@ function PanelStudyBrowserTracking(_ref) {
1456
1458
  const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
1457
1459
  setDisplaySets(mappedDisplaySets);
1458
1460
  });
1461
+ const SubscriptionDisplaySetMetaDataInvalidated = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, () => {
1462
+ const mappedDisplaySets = _mapDisplaySets(displaySetService.getActiveDisplaySets(), thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
1463
+ setDisplaySets(mappedDisplaySets);
1464
+ });
1459
1465
  return () => {
1460
1466
  SubscriptionDisplaySetsAdded.unsubscribe();
1461
1467
  SubscriptionDisplaySetsChanged.unsubscribe();
1468
+ SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
1462
1469
  };
1463
1470
  // eslint-disable-next-line react-hooks/exhaustive-deps
1464
1471
  }, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
@@ -1571,14 +1578,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1571
1578
  const thumbnailNoImageDisplaySets = [];
1572
1579
  displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
1573
1580
  const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
1574
- const componentType = _getComponentType(ds.Modality);
1581
+ const componentType = _getComponentType(ds);
1575
1582
  const numPanes = viewportGridService.getNumViewportPanes();
1576
- const viewportIdentificator = numPanes === 1 ? [] : viewports.reduce((acc, viewportData, index) => {
1577
- if (index < numPanes && viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
1578
- acc.push(viewportData.viewportLabel);
1579
- }
1580
- return acc;
1581
- }, []);
1583
+ const viewportIdentificator = [];
1584
+ if (numPanes !== 1) {
1585
+ viewports.forEach(viewportData => {
1586
+ if (viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
1587
+ viewportIdentificator.push(viewportData.viewportLabel);
1588
+ }
1589
+ });
1590
+ }
1582
1591
  const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
1583
1592
  const {
1584
1593
  displaySetInstanceUID
@@ -1591,6 +1600,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1591
1600
  seriesDate: formatDate(ds.SeriesDate),
1592
1601
  numInstances: ds.numImageFrames,
1593
1602
  countIcon: ds.countIcon,
1603
+ messages: ds.messages,
1594
1604
  StudyInstanceUID: ds.StudyInstanceUID,
1595
1605
  componentType,
1596
1606
  imageSrc,
@@ -1601,11 +1611,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1601
1611
  },
1602
1612
 
1603
1613
  isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
1614
+ isHydratedForDerivedDisplaySet: ds.isHydrated,
1604
1615
  viewportIdentificator
1605
1616
  };
1606
1617
  if (componentType === 'thumbnailNoImage') {
1607
1618
  if (dataSource.reject && dataSource.reject.series) {
1608
- thumbnailProps.canReject = true;
1619
+ thumbnailProps.canReject = !ds?.unsupported;
1609
1620
  thumbnailProps.onReject = () => {
1610
1621
  uiDialogService.create({
1611
1622
  id: 'ds-reject-sr',
@@ -1616,7 +1627,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1616
1627
  contentProps: {
1617
1628
  title: 'Delete Report',
1618
1629
  body: () => /*#__PURE__*/react.createElement("div", {
1619
- className: "p-4 text-white bg-primary-dark"
1630
+ className: "bg-primary-dark p-4 text-white"
1620
1631
  }, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to delete this report?"), /*#__PURE__*/react.createElement("p", null, "This action cannot be undone.")),
1621
1632
  actions: [{
1622
1633
  id: 'cancel',
@@ -1635,10 +1646,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1635
1646
  const yesButton = document.querySelector('.reject-yes-button');
1636
1647
  yesButton.focus();
1637
1648
  },
1638
- onSubmit: async _ref3 => {
1649
+ onSubmit: async _ref2 => {
1639
1650
  let {
1640
1651
  action
1641
- } = _ref3;
1652
+ } = _ref2;
1642
1653
  switch (action.id) {
1643
1654
  case 'yes':
1644
1655
  try {
@@ -1682,8 +1693,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1682
1693
  return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
1683
1694
  }
1684
1695
  const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
1685
- function _getComponentType(Modality) {
1686
- if (thumbnailNoImageModalities.includes(Modality)) {
1696
+ function _getComponentType(ds) {
1697
+ if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
1687
1698
  return 'thumbnailNoImage';
1688
1699
  }
1689
1700
  return 'thumbnailTracked';
@@ -1880,10 +1891,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
1880
1891
  servicesManager: (prop_types_default()).object.isRequired
1881
1892
  };
1882
1893
  /* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
1883
- // EXTERNAL MODULE: ./hooks/index.js + 3 modules
1884
- var hooks = __webpack_require__(39852);
1885
- // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1886
- var es = __webpack_require__(21572);
1894
+ // EXTERNAL MODULE: ./hooks/index.js + 1 modules
1895
+ var hooks = __webpack_require__(10800);
1887
1896
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
1888
1897
 
1889
1898
 
@@ -1923,7 +1932,7 @@ ActionButtons.defaultProps = {
1923
1932
  };
1924
1933
  /* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
1925
1934
  // EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
1926
- var lodash_debounce = __webpack_require__(40001);
1935
+ var lodash_debounce = __webpack_require__(8324);
1927
1936
  var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
1928
1937
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
1929
1938
 
@@ -1955,9 +1964,9 @@ function PanelMeasurementTableTracking(_ref) {
1955
1964
  servicesManager,
1956
1965
  extensionManager
1957
1966
  } = _ref;
1958
- const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
1967
+ const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
1959
1968
  const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
1960
- const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.Nr)(measurementChangeTimestamp, 200);
1969
+ const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
1961
1970
  const {
1962
1971
  measurementService,
1963
1972
  uiDialogService,
@@ -2051,7 +2060,7 @@ function PanelMeasurementTableTracking(_ref) {
2051
2060
  uid,
2052
2061
  isActive
2053
2062
  } = _ref2;
2054
- measurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid);
2063
+ measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
2055
2064
  onMeasurementItemClickHandler({
2056
2065
  uid,
2057
2066
  isActive
@@ -2124,7 +2133,7 @@ function PanelMeasurementTableTracking(_ref) {
2124
2133
  labelClassName: "text-white grow text-[14px] leading-[1.2]",
2125
2134
  autoFocus: true,
2126
2135
  id: "annotation",
2127
- className: "bg-black border-primary-main",
2136
+ className: "border-primary-main bg-black",
2128
2137
  type: "text",
2129
2138
  value: value.label,
2130
2139
  onChange: onChangeHandler,
@@ -2160,7 +2169,7 @@ function PanelMeasurementTableTracking(_ref) {
2160
2169
  const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
2161
2170
  const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
2162
2171
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
2163
- className: "overflow-x-hidden overflow-y-auto invisible-scrollbar",
2172
+ className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
2164
2173
  ref: measurementsPanelRef,
2165
2174
  "data-cy": 'trackedMeasurements-panel'
2166
2175
  }, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
@@ -2185,7 +2194,7 @@ function PanelMeasurementTableTracking(_ref) {
2185
2194
  onExportClick: exportReport,
2186
2195
  onCreateReportClick: () => {
2187
2196
  sendTrackedMeasurementsEvent('SAVE_REPORT', {
2188
- viewportIndex: viewportGrid.activeViewportIndex,
2197
+ viewportId: viewportGrid.activeViewportId,
2189
2198
  isBackupSave: true
2190
2199
  });
2191
2200
  },
@@ -2234,7 +2243,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
2234
2243
  if (findingSites) {
2235
2244
  const siteText = [];
2236
2245
  findingSites.forEach(site => {
2237
- if (site?.text !== label) siteText.push(site.text);
2246
+ if (site?.text !== label) {
2247
+ siteText.push(site.text);
2248
+ }
2238
2249
  });
2239
2250
  displayText = [...siteText, ...displayText];
2240
2251
  }
@@ -2298,7 +2309,7 @@ function getPanelModule(_ref) {
2298
2309
  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); }
2299
2310
 
2300
2311
  const Component = /*#__PURE__*/react.lazy(() => {
2301
- return __webpack_require__.e(/* import() */ 799).then(__webpack_require__.bind(__webpack_require__, 91799));
2312
+ return __webpack_require__.e(/* import() */ 822).then(__webpack_require__.bind(__webpack_require__, 86822));
2302
2313
  });
2303
2314
  const OHIFCornerstoneViewport = props => {
2304
2315
  return /*#__PURE__*/react.createElement(react.Suspense, {