@ohif/app 3.7.0-beta.2 → 3.7.0-beta.21

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 (33) hide show
  1. package/dist/{192.bundle.16d0f44e62ff52432731.js → 192.bundle.c08c5ab814e2b37f7de8.js} +4 -4
  2. package/dist/{199.bundle.7bb7f07334adb5994b07.js → 199.bundle.fff9b2c82296ac60e336.js} +2 -7
  3. package/dist/{208.bundle.fc090e7d0989c68bd18e.js → 208.bundle.44dbeaafde7c957eb5ec.js} +4 -4
  4. package/dist/{270.bundle.4564621556b0f963a004.js → 270.bundle.cddac4adcfdf8d1082a3.js} +13 -7
  5. package/dist/{283.bundle.c467b98efe62399505f9.js → 283.bundle.e0463be176208a49ae07.js} +14 -21
  6. package/dist/{331.bundle.bd0c13931a21d53086c9.js → 331.bundle.af86275686a78739ec4c.js} +27 -13
  7. package/dist/{351.bundle.2d4bc19d8b493879dbbe.js → 351.bundle.bbd6e3b383ac731edc94.js} +5 -5
  8. package/dist/{404.bundle.4b84daa465888ef7fc56.js → 404.bundle.6ab9072b6ca4fdc8e5ad.js} +6 -5
  9. package/dist/{55.bundle.5f5e5ef9087b0beee35c.js → 55.bundle.e9bf24eb17d84049c640.js} +4 -4
  10. package/dist/{569.bundle.0ed8d8178ffd43fe1c34.js → 569.bundle.f71780087b8c9a75d44e.js} +23 -12
  11. package/dist/{581.bundle.360d26f97b37da8faec3.js → 581.bundle.0b1b8273eb694c11366d.js} +7 -6
  12. package/dist/{616.bundle.377b54c860b461f9f68e.js → 616.bundle.5b72d71408acf40a8372.js} +6 -6
  13. package/dist/{642.bundle.a9b710e5bf6294f74e9f.js → 642.bundle.81fd0ee19e55de71af16.js} +2 -2
  14. package/dist/{707.bundle.57d5f86eceb59d415c4e.js → 707.bundle.112a221af4d036185312.js} +54 -60
  15. package/dist/{744.bundle.bfb752eba913c0a86d0a.js → 744.bundle.480d918dc1d9eb8293da.js} +58 -52
  16. package/dist/{790.bundle.e28eaccb6818de78ae48.js → 790.bundle.981ed07d900d4a0a4b53.js} +4 -4
  17. package/dist/{799.bundle.ca18bdf4abe4d9abea26.js → 799.bundle.6fbb7a97bccfb55dc79f.js} +5 -5
  18. package/dist/{82.bundle.2b4c115ba19903aa6bba.js → 82.bundle.dbd076c633a0568628be.js} +45 -40
  19. package/dist/{917.bundle.ab1b2df827119f94a898.js → 917.bundle.3f61a417e9a607b190da.js} +2 -2
  20. package/dist/{953.bundle.9e3a7225f07336bfcb41.js → 953.bundle.bad442420f62f5ab0c4b.js} +2 -2
  21. package/dist/{973.bundle.50644c5c4630221c00ac.js → 973.bundle.b833bec4e621fe4283c4.js} +2 -2
  22. package/dist/{976.bundle.2ee705b3311b8db2de5f.js → 976.bundle.0ec9edf8d307c412df16.js} +6 -6
  23. package/dist/{984.bundle.894dafd69ff965b87709.js → 984.bundle.1a1fe6f2b122b329a61d.js} +4 -4
  24. package/dist/app-config.js +1 -2
  25. package/dist/{app.bundle.a8d0e8aa74cb37c1479a.js → app.bundle.7793ce08e52aee1382ca.js} +779 -245
  26. package/dist/app.bundle.css +1 -1
  27. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  28. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  29. package/dist/google.js +1 -1
  30. package/dist/index.html +1 -1
  31. package/dist/sw.js +1 -1
  32. package/package.json +19 -19
  33. /package/dist/{50.bundle.aef33d7bd8482846aa40.js → 50.bundle.f3f85e8e2fb4532bb16b.js} +0 -0
@@ -38,8 +38,8 @@ var react = __webpack_require__(32735);
38
38
  var esm = __webpack_require__(77331);
39
39
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 321 modules
40
40
  var dist_esm = __webpack_require__(57270);
41
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
42
- var src = __webpack_require__(48501);
41
+ // EXTERNAL MODULE: ../../core/src/index.ts + 102 modules
42
+ var src = __webpack_require__(62771);
43
43
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 13 modules
44
44
  var streaming_image_volume_loader_dist_esm = __webpack_require__(28909);
45
45
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js
@@ -76,7 +76,7 @@ function initWebWorkers(appConfig) {
76
76
  initialized = true;
77
77
  }
78
78
  }
79
- function initWADOImageLoader(userAuthenticationService, appConfig) {
79
+ function initWADOImageLoader(userAuthenticationService, appConfig, extensionManager) {
80
80
  (cornerstoneDICOMImageLoader_min_default()).external.cornerstone = esm;
81
81
  (cornerstoneDICOMImageLoader_min_default()).external.dicomParser = (dicomParser_min_default());
82
82
  registerVolumeLoader('cornerstoneStreamingImageVolume', streaming_image_volume_loader_dist_esm/* cornerstoneStreamingImageVolumeLoader */.IU);
@@ -90,18 +90,13 @@ function initWADOImageLoader(userAuthenticationService, appConfig) {
90
90
  convertFloatPixelDataToInt: false
91
91
  },
92
92
  beforeSend: function (xhr) {
93
+ //TODO should be removed in the future and request emitted by DicomWebDataSource
94
+ const sourceConfig = extensionManager.getActiveDataSource()?.[0].getConfig() ?? {};
93
95
  const headers = userAuthenticationService.getAuthorizationHeader();
94
-
95
- // Request:
96
- // JPEG-LS Lossless (1.2.840.10008.1.2.4.80) if available, otherwise accept
97
- // whatever transfer-syntax the origin server provides.
98
- // For now we use image/jls and image/x-jls because some servers still use the old type
99
- // http://dicom.nema.org/medical/dicom/current/output/html/part18.html
96
+ const acceptHeader = src.utils.generateAcceptHeader(sourceConfig.acceptHeader, sourceConfig.requestTransferSyntaxUID, sourceConfig.omitQuotationForMultipartRequest);
100
97
  const xhrRequestHeaders = {
101
- Accept: appConfig.omitQuotationForMultipartRequest ? 'multipart/related; type=application/octet-stream' : 'multipart/related; type="application/octet-stream"'
102
- // 'multipart/related; type="image/x-jls", multipart/related; type="image/jls"; transfer-syntax="1.2.840.10008.1.2.4.80", multipart/related; type="image/x-jls", multipart/related; type="application/octet-stream"; transfer-syntax=*',
98
+ Accept: acceptHeader
103
99
  };
104
-
105
100
  if (headers) {
106
101
  Object.assign(xhrRequestHeaders, headers);
107
102
  }
@@ -122,8 +117,8 @@ function destroy() {
122
117
  }
123
118
  webWorkers.length = 0;
124
119
  }
125
- // EXTERNAL MODULE: ../../ui/src/index.js + 449 modules
126
- var ui_src = __webpack_require__(43803);
120
+ // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
121
+ var ui_src = __webpack_require__(28619);
127
122
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/callInputDialog.tsx
128
123
 
129
124
 
@@ -187,11 +182,11 @@ function callInputDialog(uiDialogService, data, callback) {
187
182
  actions: [{
188
183
  id: 'cancel',
189
184
  text: 'Cancel',
190
- type: 'primary'
185
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary
191
186
  }, {
192
187
  id: 'save',
193
188
  text: 'Save',
194
- type: 'secondary'
189
+ type: ui_src/* ButtonEnums.type */.LZ.U.primary
195
190
  }],
196
191
  onSubmit: onSubmitHandler,
197
192
  body: _ref2 => {
@@ -3254,7 +3249,7 @@ async function init(_ref) {
3254
3249
  thumbnail: appConfig?.maxNumRequests?.thumbnail || 75,
3255
3250
  prefetch: appConfig?.maxNumRequests?.prefetch || 10
3256
3251
  };
3257
- initWADOImageLoader(userAuthenticationService, appConfig);
3252
+ initWADOImageLoader(userAuthenticationService, appConfig, extensionManager);
3258
3253
 
3259
3254
  /* Measurement Service */
3260
3255
  this.measurementServiceSource = connectToolsToMeasurementService(servicesManager);
@@ -3560,7 +3555,6 @@ const DicomUploadProgressItem = /*#__PURE__*/(0,react.memo)(_ref => {
3560
3555
  const [percentComplete, setPercentComplete] = (0,react.useState)(dicomFileUploader.getPercentComplete());
3561
3556
  const [failedReason, setFailedReason] = (0,react.useState)('');
3562
3557
  const [status, setStatus] = (0,react.useState)(dicomFileUploader.getStatus());
3563
- console.info(`${dicomFileUploader.getFileId()}`);
3564
3558
  const isComplete = (0,react.useCallback)(() => {
3565
3559
  return status === UploadStatus.Failed || status === UploadStatus.Cancelled || status === UploadStatus.Success;
3566
3560
  }, [status]);
@@ -3850,8 +3844,6 @@ function DicomUploadProgress(_ref) {
3850
3844
  }, numFilesCompleted === dicomFileUploaderArr.length ? /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("span", {
3851
3845
  className: NO_WRAP_ELLIPSIS_CLASS_NAMES
3852
3846
  }, `${dicomFileUploaderArr.length} ${dicomFileUploaderArr.length > 1 ? 'files' : 'file'} completed.`), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
3853
- variant: "contained",
3854
- color: "primary",
3855
3847
  disabled: false,
3856
3848
  className: "ml-auto",
3857
3849
  onClick: onComplete
@@ -3959,8 +3951,6 @@ function DicomUpload(_ref) {
3959
3951
  getInputProps
3960
3952
  } = _ref3;
3961
3953
  return /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
3962
- variant: "contained",
3963
- color: "primary",
3964
3954
  disabled: false,
3965
3955
  onClick: () => {}
3966
3956
  }, 'Add files', /*#__PURE__*/react.createElement("input", getInputProps())));
@@ -3973,9 +3963,7 @@ function DicomUpload(_ref) {
3973
3963
  getInputProps
3974
3964
  } = _ref4;
3975
3965
  return /*#__PURE__*/react.createElement("div", getRootProps(), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
3976
- variant: "contained",
3977
- color: "primaryDark",
3978
- border: "primaryActive",
3966
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary,
3979
3967
  disabled: false,
3980
3968
  onClick: () => {}
3981
3969
  }, 'Add folder', /*#__PURE__*/react.createElement("input", _extends({}, getInputProps(), {
@@ -6942,41 +6930,47 @@ class SegmentationService extends src/* PubSubService */.hC {
6942
6930
  segmentIndex,
6943
6931
  geometryId
6944
6932
  } = rtStructData;
6945
- const geometry = await esm.geometryLoader.createAndCacheGeometry(geometryId, {
6946
- geometryData: {
6947
- data,
6948
- id,
6949
- color,
6950
- frameOfReferenceUID: structureSet.frameOfReferenceUID,
6951
- segmentIndex
6952
- },
6953
- type: esm.Enums.GeometryType.CONTOUR
6954
- });
6955
- const contourSet = geometry.data;
6956
- const centroid = contourSet.getCentroid();
6957
- segmentsCachedStats[segmentIndex] = {
6958
- center: {
6959
- world: centroid
6960
- },
6961
- modifiedTime: rtDisplaySet.SeriesDate // we use the SeriesDate as the modifiedTime since this is the first time we are creating the segmentation
6962
- };
6963
6933
 
6964
- segmentation.segments[segmentIndex] = {
6965
- label: id,
6966
- segmentIndex,
6967
- color,
6968
- ...SEGMENT_CONSTANT
6969
- };
6970
- const numInitialized = Object.keys(segmentsCachedStats).length;
6934
+ // catch error instead of failing to allow loading to continue
6935
+ try {
6936
+ const geometry = await esm.geometryLoader.createAndCacheGeometry(geometryId, {
6937
+ geometryData: {
6938
+ data,
6939
+ id,
6940
+ color,
6941
+ frameOfReferenceUID: structureSet.frameOfReferenceUID,
6942
+ segmentIndex
6943
+ },
6944
+ type: esm.Enums.GeometryType.CONTOUR
6945
+ });
6946
+ const contourSet = geometry.data;
6947
+ const centroid = contourSet.getCentroid();
6948
+ segmentsCachedStats[segmentIndex] = {
6949
+ center: {
6950
+ world: centroid
6951
+ },
6952
+ modifiedTime: rtDisplaySet.SeriesDate // we use the SeriesDate as the modifiedTime since this is the first time we are creating the segmentation
6953
+ };
6971
6954
 
6972
- // Calculate percentage completed
6973
- const percentComplete = Math.round(numInitialized / allRTStructData.length * 100);
6974
- this._broadcastEvent(SegmentationService_EVENTS.SEGMENT_LOADING_COMPLETE, {
6975
- percentComplete,
6976
- // Note: this is not the geometryIds length since there might be
6977
- // some missing ROINumbers
6978
- numSegments: allRTStructData.length
6979
- });
6955
+ segmentation.segments[segmentIndex] = {
6956
+ label: id,
6957
+ segmentIndex,
6958
+ color,
6959
+ ...SEGMENT_CONSTANT
6960
+ };
6961
+ const numInitialized = Object.keys(segmentsCachedStats).length;
6962
+
6963
+ // Calculate percentage completed
6964
+ const percentComplete = Math.round(numInitialized / allRTStructData.length * 100);
6965
+ this._broadcastEvent(SegmentationService_EVENTS.SEGMENT_LOADING_COMPLETE, {
6966
+ percentComplete,
6967
+ // Note: this is not the geometryIds length since there might be
6968
+ // some missing ROINumbers
6969
+ numSegments: allRTStructData.length
6970
+ });
6971
+ } catch (e) {
6972
+ console.warn(e);
6973
+ }
6980
6974
  };
6981
6975
  const promiseArray = [];
6982
6976
  for (let i = 0; i < allRTStructData.length; i++) {
@@ -7825,7 +7819,7 @@ class ViewportInfo {
7825
7819
  // Since SEG and other derived displaySets are loaded in a different way, and not
7826
7820
  // via cornerstoneViewportService
7827
7821
  let viewportData = this.getViewportData();
7828
- if (viewportData.viewportType === esm.Enums.ViewportType.ORTHOGRAPHIC) {
7822
+ if (viewportData.viewportType === esm.Enums.ViewportType.ORTHOGRAPHIC || viewportData.viewportType === esm.Enums.ViewportType.VOLUME_3D) {
7829
7823
  viewportData = viewportData;
7830
7824
  return viewportData.data.some(_ref => {
7831
7825
  let {
@@ -8493,7 +8487,7 @@ class CornerstoneViewportService extends src/* PubSubService */.hC {
8493
8487
  const viewportId = viewportInfo.getViewportId();
8494
8488
  const viewport = this.getCornerstoneViewport(viewportId);
8495
8489
  const viewportCamera = viewport.getCamera();
8496
- if (viewport instanceof esm.VolumeViewport) {
8490
+ if (viewport instanceof esm.VolumeViewport || viewport instanceof esm.VolumeViewport3D) {
8497
8491
  this._setVolumeViewport(viewport, viewportData, viewportInfo).then(() => {
8498
8492
  if (keepCamera) {
8499
8493
  viewport.setCamera(viewportCamera);
@@ -20,8 +20,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
20
20
  var es = __webpack_require__(87519);
21
21
  // EXTERNAL MODULE: ../../../node_modules/@xstate/react/lib/index.js
22
22
  var lib = __webpack_require__(38531);
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 449 modules
24
- var src = __webpack_require__(43803);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
24
+ var src = __webpack_require__(28619);
25
25
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
26
26
 
27
27
  const RESPONSE = {
@@ -345,6 +345,7 @@ const defaultOptions = {
345
345
  };
346
346
 
347
347
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptBeginTracking.js
348
+
348
349
  const promptBeginTracking_RESPONSE = {
349
350
  NO_NEVER: -1,
350
351
  CANCEL: 0,
@@ -380,17 +381,17 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
380
381
  const message = 'Track measurements for this series?';
381
382
  const actions = [{
382
383
  id: 'prompt-begin-tracking-cancel',
383
- type: 'cancel',
384
+ type: src/* ButtonEnums.type */.LZ.U.secondary,
384
385
  text: 'No',
385
386
  value: promptBeginTracking_RESPONSE.CANCEL
386
387
  }, {
387
388
  id: 'prompt-begin-tracking-no-do-not-ask-again',
388
- type: 'secondary',
389
+ type: src/* ButtonEnums.type */.LZ.U.secondary,
389
390
  text: 'No, do not ask again',
390
391
  value: promptBeginTracking_RESPONSE.NO_NEVER
391
392
  }, {
392
393
  id: 'prompt-begin-tracking-yes',
393
- type: 'primary',
394
+ type: src/* ButtonEnums.type */.LZ.U.primary,
394
395
  text: 'Yes',
395
396
  value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
396
397
  }];
@@ -414,6 +415,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
414
415
  }
415
416
  /* harmony default export */ const TrackedMeasurementsContext_promptBeginTracking = (promptBeginTracking);
416
417
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewSeries.js
418
+
417
419
  const promptTrackNewSeries_RESPONSE = {
418
420
  NO_NEVER: -1,
419
421
  CANCEL: 0,
@@ -453,15 +455,15 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
453
455
  return new Promise(function (resolve, reject) {
454
456
  const message = 'Do you want to add this measurement to the existing report?';
455
457
  const actions = [{
456
- type: 'cancel',
458
+ type: src/* ButtonEnums.type */.LZ.U.secondary,
457
459
  text: 'Cancel',
458
460
  value: promptTrackNewSeries_RESPONSE.CANCEL
459
461
  }, {
460
- type: 'secondary',
462
+ type: src/* ButtonEnums.type */.LZ.U.primary,
461
463
  text: 'Create new report',
462
464
  value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
463
465
  }, {
464
- type: 'primary',
466
+ type: src/* ButtonEnums.type */.LZ.U.primary,
465
467
  text: 'Add to existing report',
466
468
  value: promptTrackNewSeries_RESPONSE.ADD_SERIES
467
469
  }];
@@ -619,8 +621,8 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
619
621
  });
620
622
  }
621
623
  /* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
622
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
623
- var core_src = __webpack_require__(48501);
624
+ // EXTERNAL MODULE: ../../core/src/index.ts + 102 modules
625
+ var core_src = __webpack_require__(62771);
624
626
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportAsync.tsx
625
627
 
626
628
 
@@ -723,17 +725,23 @@ function createReportDialogPrompt(uiDialogService) {
723
725
  action,
724
726
  value
725
727
  } = _ref;
726
- uiDialogService.dismiss({
727
- id: dialogId
728
- });
729
728
  switch (action.id) {
730
729
  case 'save':
731
- resolve({
732
- action: PROMPT_RESPONSES.CREATE_REPORT,
733
- value: value.label
734
- });
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
+ }
735
740
  break;
736
741
  case 'cancel':
742
+ uiDialogService.dismiss({
743
+ id: dialogId
744
+ });
737
745
  resolve({
738
746
  action: PROMPT_RESPONSES.CANCEL,
739
747
  value: undefined
@@ -757,11 +765,11 @@ function createReportDialogPrompt(uiDialogService) {
757
765
  actions: [{
758
766
  id: 'cancel',
759
767
  text: 'Cancel',
760
- type: 'primary'
768
+ type: src/* ButtonEnums.type */.LZ.U.secondary
761
769
  }, {
762
770
  id: 'save',
763
771
  text: 'Save',
764
- type: 'secondary'
772
+ type: src/* ButtonEnums.type */.LZ.U.primary
765
773
  }],
766
774
  // TODO: Should be on button press...
767
775
  onSubmit: _handleFormSubmit,
@@ -779,12 +787,12 @@ function createReportDialogPrompt(uiDialogService) {
779
787
  };
780
788
  const onKeyPressHandler = event => {
781
789
  if (event.key === 'Enter') {
782
- uiDialogService.dismiss({
783
- id: dialogId
784
- });
785
- resolve({
786
- action: PROMPT_RESPONSES.CREATE_REPORT,
787
- value: value.label
790
+ // Trigger form submit
791
+ _handleFormSubmit({
792
+ action: {
793
+ id: 'save'
794
+ },
795
+ value
788
796
  });
789
797
  }
790
798
  };
@@ -875,6 +883,7 @@ function promptSaveReport(_ref, ctx, evt) {
875
883
  var cornerstone_dicom_sr_src = __webpack_require__(65948);
876
884
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
877
885
 
886
+
878
887
  const promptHydrateStructuredReport_RESPONSE = {
879
888
  NO_NEVER: -1,
880
889
  CANCEL: 0,
@@ -926,11 +935,11 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
926
935
  return new Promise(function (resolve, reject) {
927
936
  const message = 'Do you want to continue tracking measurements for this study?';
928
937
  const actions = [{
929
- type: 'secondary',
938
+ type: src/* ButtonEnums.type */.LZ.U.secondary,
930
939
  text: 'No',
931
940
  value: promptHydrateStructuredReport_RESPONSE.CANCEL
932
941
  }, {
933
- type: 'primary',
942
+ type: src/* ButtonEnums.type */.LZ.U.primary,
934
943
  text: 'Yes',
935
944
  value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
936
945
  }];
@@ -1233,16 +1242,19 @@ var react = __webpack_require__(32735);
1233
1242
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
1234
1243
  var prop_types = __webpack_require__(60216);
1235
1244
  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);
1245
+ // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1246
+ var es = __webpack_require__(21572);
1247
+ // EXTERNAL MODULE: ../../core/src/index.ts + 102 modules
1248
+ var src = __webpack_require__(62771);
1249
+ // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
1250
+ var ui_src = __webpack_require__(28619);
1240
1251
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
1241
1252
 
1242
1253
 
1243
1254
 
1244
1255
 
1245
1256
 
1257
+
1246
1258
  const {
1247
1259
  formatDate
1248
1260
  } = src.utils;
@@ -1266,6 +1278,9 @@ function PanelStudyBrowserTracking(_ref) {
1266
1278
  hangingProtocolService,
1267
1279
  uiNotificationService
1268
1280
  } = servicesManager.services;
1281
+ const {
1282
+ t
1283
+ } = (0,es/* useTranslation */.$G)('Common');
1269
1284
 
1270
1285
  // Normally you nest the components so the tree isn't so deep, and the data
1271
1286
  // doesn't have to have such an intense shape. This works well enough for now.
@@ -1358,7 +1373,7 @@ function PanelStudyBrowserTracking(_ref) {
1358
1373
  const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
1359
1374
  return {
1360
1375
  studyInstanceUid: qidoStudy.StudyInstanceUID,
1361
- date: formatDate(qidoStudy.StudyDate),
1376
+ date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
1362
1377
  description: qidoStudy.StudyDescription,
1363
1378
  modalities: qidoStudy.ModalitiesInStudy,
1364
1379
  numInstances: qidoStudy.NumInstances
@@ -1618,11 +1633,11 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
1618
1633
  actions: [{
1619
1634
  id: 'cancel',
1620
1635
  text: 'Cancel',
1621
- type: 'secondary'
1636
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary
1622
1637
  }, {
1623
1638
  id: 'yes',
1624
1639
  text: 'Yes',
1625
- type: 'primary',
1640
+ type: ui_src/* ButtonEnums.type */.LZ.U.primary,
1626
1641
  classes: ['reject-yes-button']
1627
1642
  }],
1628
1643
  onClose: () => uiDialogService.dismiss({
@@ -1879,8 +1894,6 @@ WrappedPanelStudyBrowserTracking.propTypes = {
1879
1894
  /* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
1880
1895
  // EXTERNAL MODULE: ./hooks/index.js + 3 modules
1881
1896
  var hooks = __webpack_require__(39852);
1882
- // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
1883
- var es = __webpack_require__(21572);
1884
1897
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
1885
1898
 
1886
1899
 
@@ -1896,20 +1909,15 @@ function ActionButtons(_ref) {
1896
1909
  t
1897
1910
  } = (0,es/* useTranslation */.$G)('MeasurementTable');
1898
1911
  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
1912
  onClick: onExportClick,
1905
- disabled: disabled
1913
+ disabled: disabled,
1914
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary,
1915
+ size: ui_src/* ButtonEnums.size */.LZ.d.small
1906
1916
  }, 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",
1917
+ className: "ml-2",
1912
1918
  onClick: onCreateReportClick,
1919
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary,
1920
+ size: ui_src/* ButtonEnums.size */.LZ.d.small,
1913
1921
  disabled: disabled
1914
1922
  }, t('Create Report')));
1915
1923
  }
@@ -2133,16 +2141,14 @@ function PanelMeasurementTableTracking(_ref) {
2133
2141
  onKeyPress: onKeyPressHandler
2134
2142
  });
2135
2143
  },
2136
- actions: [
2137
- // temp: swap button types until colors are updated
2138
- {
2144
+ actions: [{
2139
2145
  id: 'cancel',
2140
2146
  text: 'Cancel',
2141
- type: 'primary'
2147
+ type: ui_src/* ButtonEnums.type */.LZ.U.secondary
2142
2148
  }, {
2143
2149
  id: 'save',
2144
2150
  text: 'Save',
2145
- type: 'secondary'
2151
+ type: ui_src/* ButtonEnums.type */.LZ.U.primary
2146
2152
  }],
2147
2153
  onSubmit: onSubmitHandler
2148
2154
  }
@@ -12,10 +12,10 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  "default": () => (/* binding */ basic_dev_mode_src)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: ../../ui/src/index.js + 449 modules
16
- var src = __webpack_require__(43803);
17
- // EXTERNAL MODULE: ../../core/src/index.ts + 101 modules
18
- var core_src = __webpack_require__(48501);
15
+ // EXTERNAL MODULE: ../../ui/src/index.js + 452 modules
16
+ var src = __webpack_require__(28619);
17
+ // EXTERNAL MODULE: ../../core/src/index.ts + 102 modules
18
+ var core_src = __webpack_require__(62771);
19
19
  ;// CONCATENATED MODULE: ../../../modes/basic-dev-mode/src/toolbarButtons.js
20
20
  // TODO: torn, can either bake this here; or have to create a whole new button type
21
21
  // Only ways that you can pass in a custom React component for render :l
@@ -11,8 +11,8 @@ __webpack_require__.r(__webpack_exports__);
11
11
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32735);
12
12
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60216);
13
13
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
14
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48501);
15
- /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43803);
14
+ /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62771);
15
+ /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28619);
16
16
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21572);
17
17
  /* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57270);
18
18
  /* harmony import */ var _getContextModule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(43418);
@@ -40,7 +40,7 @@ function TrackedCornerstoneViewport(props) {
40
40
  } = props;
41
41
  const {
42
42
  t
43
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__/* .useTranslation */ .$G)('TrackedViewport');
43
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__/* .useTranslation */ .$G)('Common');
44
44
  const {
45
45
  measurementService,
46
46
  cornerstoneViewportService
@@ -69,6 +69,7 @@ function TrackedCornerstoneViewport(props) {
69
69
  PatientAge,
70
70
  SliceThickness,
71
71
  SpacingBetweenSlices,
72
+ StudyDate,
72
73
  ManufacturerModelName
73
74
  } = displaySet.images[0];
74
75
  const updateIsTracked = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
@@ -159,8 +160,7 @@ function TrackedCornerstoneViewport(props) {
159
160
  getStatusComponent: () => _getStatusComponent(isTracked),
160
161
  studyData: {
161
162
  label: viewportLabel,
162
- studyDate: formatDate(SeriesDate),
163
- // TODO: This is series date. Is that ok?
163
+ studyDate: formatDate(SeriesDate) || formatDate(StudyDate) || t('NoStudyDate'),
164
164
  currentSeries: SeriesNumber,
165
165
  // TODO - switch entire currentSeries to be UID based or actual position based
166
166
  seriesDescription: SeriesDescription,