@ohif/app 3.8.0-beta.44 → 3.8.0-beta.46

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 (25) hide show
  1. package/dist/{170.bundle.1f3fe239b9c1b1190487.js → 170.bundle.d67d45cc1b7b9f84456c.js} +4 -4
  2. package/dist/{181.bundle.a2d7b26d73467d2ce8cd.js → 181.bundle.59bc83ea0a5cf5d335e7.js} +2 -2
  3. package/dist/{456.bundle.e13d33d52ad90d855d17.js → 456.bundle.91e448feea24adbb07da.js} +2 -2
  4. package/dist/{466.bundle.3c02041e1d1a06ff405a.js → 466.bundle.5d139ee45607d5b0859e.js} +2 -2
  5. package/dist/{483.bundle.b6c38c658dc197444754.js → 483.bundle.c369395e0d9b40db0f4e.js} +2 -2
  6. package/dist/{738.bundle.1a1774ad29dfc01d0530.js → 738.bundle.a78c54de79dfe11c2c19.js} +150 -52
  7. package/dist/{822.bundle.2092dbfefbc1b5834965.js → 822.bundle.b3c3a7d5a0768cd9c990.js} +1 -1
  8. package/dist/{app.bundle.b6e1d2cc7991db27ba26.js → app.bundle.a2eb7b0f8aa069c0f5ec.js} +1020 -645
  9. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  10. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  11. package/dist/index.html +1 -1
  12. package/dist/sw.js +1 -1
  13. package/package.json +18 -18
  14. /package/dist/{12.bundle.cbacb11accf37b5a6187.js → 12.bundle.4f2f57e16dfb97883770.js} +0 -0
  15. /package/dist/{185.bundle.3151ec868486c4c40786.js → 185.bundle.eeb978b1add78c16a993.js} +0 -0
  16. /package/dist/{19.bundle.b33a54238c06a3258439.js → 19.bundle.37c48e8f3f294a891dc5.js} +0 -0
  17. /package/dist/{199.bundle.690ba04b31a2b528ecb8.js → 199.bundle.490e1ff8cd32c7556376.js} +0 -0
  18. /package/dist/{281.bundle.4cadd1671a1d3b9e432f.js → 281.bundle.77320f48f58c43bc3e01.js} +0 -0
  19. /package/dist/{359.bundle.a7f9beff267b1572ad68.js → 359.bundle.98176387f99923832c7f.js} +0 -0
  20. /package/dist/{410.bundle.1faa9041e3ad1ac5a240.js → 410.bundle.216a064ea37d34586bd5.js} +0 -0
  21. /package/dist/{506.bundle.f30608ed0015b2532f30.js → 506.bundle.1b9504decd19a45ef83d.js} +0 -0
  22. /package/dist/{613.bundle.178e9357fb789d2eff45.js → 613.bundle.5a92cc8fb3737c642a4e.js} +0 -0
  23. /package/dist/{687.bundle.03e9a9a29d0c7a522e75.js → 687.bundle.5f08bc5b089d66e72942.js} +0 -0
  24. /package/dist/{814.bundle.8fe093967cf13c27aa68.js → 814.bundle.a960b49c8f3162a4b0be.js} +0 -0
  25. /package/dist/{965.bundle.b74ca2b03c3107277d19.js → 965.bundle.3239c2fb38ee31de751b.js} +0 -0
@@ -29,8 +29,8 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
29
29
  var src = __webpack_require__(71771);
30
30
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
31
31
  var esm = __webpack_require__(45451);
32
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
33
- var dist_esm = __webpack_require__(81399);
32
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
33
+ var dist_esm = __webpack_require__(76634);
34
34
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 375 modules
35
35
  var core_dist_esm = __webpack_require__(56846);
36
36
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/tools/modules/dicomSRModule.js
@@ -1631,8 +1631,8 @@ function getLabelFromDCMJSImportedToolData(toolData) {
1631
1631
  }
1632
1632
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
1633
1633
  var adapters_es = __webpack_require__(91202);
1634
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
1635
- var dist_esm = __webpack_require__(81399);
1634
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
1635
+ var dist_esm = __webpack_require__(76634);
1636
1636
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js
1637
1637
 
1638
1638
 
@@ -19,8 +19,8 @@ var index_esm = __webpack_require__(7023);
19
19
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
20
20
  var prop_types = __webpack_require__(3827);
21
21
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
22
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
23
- var esm = __webpack_require__(81399);
22
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
23
+ var esm = __webpack_require__(76634);
24
24
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 375 modules
25
25
  var dist_esm = __webpack_require__(56846);
26
26
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
@@ -37,8 +37,8 @@ __webpack_require__.r(types_namespaceObject);
37
37
  var react = __webpack_require__(43001);
38
38
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 375 modules
39
39
  var esm = __webpack_require__(56846);
40
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
41
- var dist_esm = __webpack_require__(81399);
40
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
41
+ var dist_esm = __webpack_require__(76634);
42
42
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
43
43
  var src = __webpack_require__(71771);
44
44
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/streaming-image-volume-loader/dist/esm/index.js + 13 modules
@@ -26,8 +26,8 @@ var react = __webpack_require__(43001);
26
26
  var src = __webpack_require__(71771);
27
27
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 375 modules
28
28
  var esm = __webpack_require__(56846);
29
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
30
- var dist_esm = __webpack_require__(81399);
29
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
30
+ var dist_esm = __webpack_require__(76634);
31
31
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
32
32
  var adapters_es = __webpack_require__(91202);
33
33
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
@@ -1527,8 +1527,8 @@ function getPanelModule({
1527
1527
  }];
1528
1528
  }
1529
1529
  /* harmony default export */ const src_getPanelModule = (getPanelModule);
1530
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
1531
- var esm = __webpack_require__(81399);
1530
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
1531
+ var esm = __webpack_require__(76634);
1532
1532
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 375 modules
1533
1533
  var dist_esm = __webpack_require__(56846);
1534
1534
  ;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/constants/supportedTools.js
@@ -393,10 +393,11 @@ class RetrieveMetadataLoader {
393
393
  * @param {Object} client The dicomweb-client.
394
394
  * @param {Array} studyInstanceUID Study instance ui to be retrieved
395
395
  * @param {Object} [filters] - Object containing filters to be applied on retrieve metadata process
396
- * @param {string} [filter.seriesInstanceUID] - series instance uid to filter results against
397
- * @param {Function} [sortSeries] - Custom sort function for series
396
+ * @param {string} [filters.seriesInstanceUID] - series instance uid to filter results against
397
+ * @param {Object} [sortCriteria] - Custom sort criteria used for series
398
+ * @param {Function} [sortFunction] - Custom sort function for series
398
399
  */
399
- constructor(client, studyInstanceUID, filters = {}, sortCriteria, sortFunction) {
400
+ constructor(client, studyInstanceUID, filters = {}, sortCriteria = undefined, sortFunction = undefined) {
400
401
  this.client = client;
401
402
  this.studyInstanceUID = studyInstanceUID;
402
403
  this.filters = filters;
@@ -417,13 +418,9 @@ class RetrieveMetadataLoader {
417
418
  async runLoaders(loaders) {
418
419
  let result;
419
420
  for (const loader of loaders) {
420
- try {
421
- result = await loader();
422
- if (result && result.length) {
423
- break; // closes iterator in case data is retrieved successfully
424
- }
425
- } catch (e) {
426
- throw e;
421
+ result = await loader();
422
+ if (result && result.length) {
423
+ break; // closes iterator in case data is retrieved successfully
427
424
  }
428
425
  }
429
426
  if (loaders.next().done && !result) {
@@ -506,6 +503,57 @@ class RetrieveMetadataLoaderSync extends RetrieveMetadataLoader {
506
503
 
507
504
 
508
505
 
506
+ // Series Date, Series Time, Series Description and Series Number to be included
507
+ // in the series metadata query result
508
+ const includeField = ['00080021', '00080031', '0008103E', '00200011'].join(',');
509
+ class DeferredPromise {
510
+ constructor() {
511
+ this.metadata = undefined;
512
+ this.processFunction = undefined;
513
+ this.internalPromise = undefined;
514
+ this.thenFunction = undefined;
515
+ this.rejectFunction = undefined;
516
+ }
517
+ setMetadata(metadata) {
518
+ this.metadata = metadata;
519
+ }
520
+ setProcessFunction(func) {
521
+ this.processFunction = func;
522
+ }
523
+ getPromise() {
524
+ return this.start();
525
+ }
526
+ start() {
527
+ if (this.internalPromise) {
528
+ return this.internalPromise;
529
+ }
530
+ this.internalPromise = this.processFunction();
531
+ // in case then and reject functions called before start
532
+ if (this.thenFunction) {
533
+ this.then(this.thenFunction);
534
+ this.thenFunction = undefined;
535
+ }
536
+ if (this.rejectFunction) {
537
+ this.reject(this.rejectFunction);
538
+ this.rejectFunction = undefined;
539
+ }
540
+ return this.internalPromise;
541
+ }
542
+ then(func) {
543
+ if (this.internalPromise) {
544
+ return this.internalPromise.then(func);
545
+ } else {
546
+ this.thenFunction = func;
547
+ }
548
+ }
549
+ reject(func) {
550
+ if (this.internalPromise) {
551
+ return this.internalPromise.reject(func);
552
+ } else {
553
+ this.rejectFunction = func;
554
+ }
555
+ }
556
+ }
509
557
  /**
510
558
  * Creates an immutable series loader object which loads each series sequentially using the iterator interface.
511
559
  *
@@ -520,12 +568,20 @@ function makeSeriesAsyncLoader(client, studyInstanceUID, seriesInstanceUIDList)
520
568
  hasNext() {
521
569
  return seriesInstanceUIDList.length > 0;
522
570
  },
523
- async next() {
524
- const seriesInstanceUID = seriesInstanceUIDList.shift();
525
- return client.retrieveSeriesMetadata({
526
- studyInstanceUID,
527
- seriesInstanceUID
571
+ next() {
572
+ const {
573
+ seriesInstanceUID,
574
+ metadata
575
+ } = seriesInstanceUIDList.shift();
576
+ const promise = new DeferredPromise();
577
+ promise.setMetadata(metadata);
578
+ promise.setProcessFunction(() => {
579
+ return client.retrieveSeriesMetadata({
580
+ studyInstanceUID,
581
+ seriesInstanceUID
582
+ });
528
583
  });
584
+ return promise;
529
585
  }
530
586
  });
531
587
  }
@@ -549,19 +605,22 @@ class RetrieveMetadataLoaderAsync extends RetrieveMetadataLoader {
549
605
  } = {},
550
606
  client
551
607
  } = this;
608
+
609
+ // asking to include Series Date, Series Time, Series Description
610
+ // and Series Number in the series metadata returned to better sort series
611
+ // in preLoad function
612
+ let options = {
613
+ studyInstanceUID,
614
+ queryParams: {
615
+ includefield: includeField
616
+ }
617
+ };
552
618
  if (seriesInstanceUID) {
553
- const options = {
554
- studyInstanceUID,
555
- queryParams: {
556
- SeriesInstanceUID: seriesInstanceUID
557
- }
558
- };
619
+ options.queryParams.SeriesInstanceUID = seriesInstanceUID;
559
620
  preLoaders.push(client.searchForSeries.bind(client, options));
560
621
  }
561
622
  // Fallback preloader
562
- preLoaders.push(client.searchForSeries.bind(client, {
563
- studyInstanceUID
564
- }));
623
+ preLoaders.push(client.searchForSeries.bind(client, options));
565
624
  yield* preLoaders;
566
625
  }
567
626
  async preLoad() {
@@ -573,18 +632,24 @@ class RetrieveMetadataLoaderAsync extends RetrieveMetadataLoader {
573
632
  naturalizeDataset
574
633
  } = dcmjs_es["default"].data.DicomMetaDictionary;
575
634
  const naturalized = result.map(naturalizeDataset);
576
- return (0,sortStudy/* sortStudySeries */.IO)(naturalized, sortCriteria || sortStudy/* sortingCriteria */.S1.seriesSortCriteria.seriesInfoSortingCriteria, sortFunction);
635
+ return (0,sortStudy/* sortStudySeries */.IO)(naturalized, sortCriteria, sortFunction);
577
636
  }
578
637
  async load(preLoadData) {
579
638
  const {
580
639
  client,
581
640
  studyInstanceUID
582
641
  } = this;
583
- const seriesInstanceUIDs = preLoadData.map(s => s.SeriesInstanceUID);
642
+ const seriesInstanceUIDs = preLoadData.map(seriesMetadata => {
643
+ return {
644
+ seriesInstanceUID: seriesMetadata.SeriesInstanceUID,
645
+ metadata: seriesMetadata
646
+ };
647
+ });
584
648
  const seriesAsyncLoader = makeSeriesAsyncLoader(client, studyInstanceUID, seriesInstanceUIDs);
585
649
  const promises = [];
586
650
  while (seriesAsyncLoader.hasNext()) {
587
- promises.push(seriesAsyncLoader.next());
651
+ const promise = seriesAsyncLoader.next();
652
+ promises.push(promise);
588
653
  }
589
654
  return {
590
655
  preLoadData,
@@ -748,6 +813,7 @@ function deleteStudyMetadataPromise(StudyInstanceUID) {
748
813
  * performing searches doesn't work. This version fixes the query issue
749
814
  * by manually implementing a query option.
750
815
  */
816
+
751
817
  class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
752
818
  constructor(qidoConfig) {
753
819
  super(qidoConfig);
@@ -1060,17 +1126,35 @@ const EXPLICIT_VR_LITTLE_ENDIAN = '1.2.840.10008.1.2.1';
1060
1126
  const metadataProvider = src.classes.MetadataProvider;
1061
1127
 
1062
1128
  /**
1129
+ * Creates a DICOM Web API based on the provided configuration.
1063
1130
  *
1064
- * @param {string} name - Data source name
1065
- * @param {string} wadoUriRoot - Legacy? (potentially unused/replaced)
1066
- * @param {string} qidoRoot - Base URL to use for QIDO requests
1067
- * @param {string} wadoRoot - Base URL to use for WADO requests
1068
- * @param {boolean} qidoSupportsIncludeField - Whether QIDO supports the "Include" option to request additional fields in response
1069
- * @param {string} imageRengering - wadors | ? (unsure of where/how this is used)
1070
- * @param {string} thumbnailRendering - wadors | ? (unsure of where/how this is used)
1071
- * @param {bool} supportsReject - Whether the server supports reject calls (i.e. DCM4CHEE)
1072
- * @param {bool} lazyLoadStudy - "enableStudyLazyLoad"; Request series meta async instead of blocking
1073
- * @param {string|bool} singlepart - indicates of the retrieves can fetch singlepart. Options are bulkdata, video, image or boolean true
1131
+ * @param {object} dicomWebConfig - Configuration for the DICOM Web API
1132
+ * @param {string} dicomWebConfig.name - Data source name
1133
+ * @param {string} dicomWebConfig.wadoUriRoot - Legacy? (potentially unused/replaced)
1134
+ * @param {string} dicomWebConfig.qidoRoot - Base URL to use for QIDO requests
1135
+ * @param {string} dicomWebConfig.wadoRoot - Base URL to use for WADO requests
1136
+ * @param {string} dicomWebConfig.wadoUri - Base URL to use for WADO URI requests
1137
+ * @param {boolean} dicomWebConfig.qidoSupportsIncludeField - Whether QIDO supports the "Include" option to request additional fields in response
1138
+ * @param {string} dicomWebConfig.imageRendering - wadors | ? (unsure of where/how this is used)
1139
+ * @param {string} dicomWebConfig.thumbnailRendering - wadors | ? (unsure of where/how this is used)
1140
+ * @param {boolean} dicomWebConfig.supportsReject - Whether the server supports reject calls (i.e. DCM4CHEE)
1141
+ * @param {boolean} dicomWebConfig.lazyLoadStudy - "enableStudyLazyLoad"; Request series meta async instead of blocking
1142
+ * @param {string|boolean} dicomWebConfig.singlepart - indicates if the retrieves can fetch singlepart. Options are bulkdata, video, image, or boolean true
1143
+ * @param {string} dicomWebConfig.requestTransferSyntaxUID - Transfer syntax to request from the server
1144
+ * @param {object} dicomWebConfig.acceptHeader - Accept header to use for requests
1145
+ * @param {boolean} dicomWebConfig.omitQuotationForMultipartRequest - Whether to omit quotation marks for multipart requests
1146
+ * @param {boolean} dicomWebConfig.supportsFuzzyMatching - Whether the server supports fuzzy matching
1147
+ * @param {boolean} dicomWebConfig.supportsWildcard - Whether the server supports wildcard matching
1148
+ * @param {boolean} dicomWebConfig.supportsNativeDICOMModel - Whether the server supports the native DICOM model
1149
+ * @param {boolean} dicomWebConfig.enableStudyLazyLoad - Whether to enable study lazy loading
1150
+ * @param {boolean} dicomWebConfig.enableRequestTag - Whether to enable request tag
1151
+ * @param {boolean} dicomWebConfig.enableStudyLazyLoad - Whether to enable study lazy loading
1152
+ * @param {boolean} dicomWebConfig.bulkDataURI - Whether to enable bulkDataURI
1153
+ * @param {function} dicomWebConfig.onConfiguration - Function that is called after the configuration is initialized
1154
+ * @param {boolean} dicomWebConfig.staticWado - Whether to use the static WADO client
1155
+ * @param {object} userAuthenticationService - User authentication service
1156
+ * @param {object} userAuthenticationService.getAuthorizationHeader - Function that returns the authorization header
1157
+ * @returns {object} - DICOM Web API object
1074
1158
  */
1075
1159
  function createDicomWebApi(dicomWebConfig, servicesManager) {
1076
1160
  const {
@@ -1200,13 +1284,14 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1200
1284
  filters,
1201
1285
  sortCriteria,
1202
1286
  sortFunction,
1203
- madeInClient = false
1287
+ madeInClient = false,
1288
+ returnPromises = false
1204
1289
  } = {}) => {
1205
1290
  if (!StudyInstanceUID) {
1206
1291
  throw new Error('Unable to query for SeriesMetadata without StudyInstanceUID');
1207
1292
  }
1208
1293
  if (dicomWebConfig.enableStudyLazyLoad) {
1209
- return implementation._retrieveSeriesMetadataAsync(StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient);
1294
+ return implementation._retrieveSeriesMetadataAsync(StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient, returnPromises);
1210
1295
  }
1211
1296
  return implementation._retrieveSeriesMetadataSync(StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient);
1212
1297
  }
@@ -1293,7 +1378,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1293
1378
  Object.keys(instancesPerSeries).forEach(seriesInstanceUID => src.DicomMetadataStore.addInstances(instancesPerSeries[seriesInstanceUID], madeInClient));
1294
1379
  return seriesSummaryMetadata;
1295
1380
  },
1296
- _retrieveSeriesMetadataAsync: async (StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient = false) => {
1381
+ _retrieveSeriesMetadataAsync: async (StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient = false, returnPromises = false) => {
1297
1382
  const enableStudyLazyLoad = true;
1298
1383
  wadoDicomWebClient.headers = generateWadoHeader();
1299
1384
  // Get Series
@@ -1366,7 +1451,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1366
1451
  const naturalizedInstances = instances.map(addRetrieveBulkData);
1367
1452
 
1368
1453
  // Adding instanceMetadata to OHIF MetadataProvider
1369
- naturalizedInstances.forEach((instance, index) => {
1454
+ naturalizedInstances.forEach(instance => {
1370
1455
  instance.wadoRoot = dicomWebConfig.wadoRoot;
1371
1456
  instance.wadoUri = dicomWebConfig.wadoUri;
1372
1457
  const imageId = implementation.getImageIdsForInstance({
@@ -1390,7 +1475,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1390
1475
  src.DicomMetadataStore.addInstances(naturalizedInstances, madeInClient);
1391
1476
  }
1392
1477
  function setSuccessFlag() {
1393
- const study = src.DicomMetadataStore.getStudy(StudyInstanceUID, madeInClient);
1478
+ const study = src.DicomMetadataStore.getStudy(StudyInstanceUID);
1394
1479
  if (!study) {
1395
1480
  return;
1396
1481
  }
@@ -1403,11 +1488,21 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1403
1488
  aSeries.StudyInstanceUID = StudyInstanceUID;
1404
1489
  });
1405
1490
  src.DicomMetadataStore.addSeriesMetadata(seriesSummaryMetadata, madeInClient);
1406
- const seriesDeliveredPromises = seriesPromises.map(promise => promise.then(instances => {
1407
- storeInstances(instances);
1408
- }));
1409
- await Promise.all(seriesDeliveredPromises);
1410
- setSuccessFlag();
1491
+ const seriesDeliveredPromises = seriesPromises.map(promise => {
1492
+ if (!returnPromises) {
1493
+ promise?.start();
1494
+ }
1495
+ return promise.then(instances => {
1496
+ storeInstances(instances);
1497
+ });
1498
+ });
1499
+ if (returnPromises) {
1500
+ Promise.all(seriesDeliveredPromises).then(() => setSuccessFlag());
1501
+ return seriesPromises;
1502
+ } else {
1503
+ await Promise.all(seriesDeliveredPromises);
1504
+ setSuccessFlag();
1505
+ }
1411
1506
  return seriesSummaryMetadata;
1412
1507
  },
1413
1508
  deleteStudyMetadataPromise: deleteStudyMetadataPromise,
@@ -1438,7 +1533,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1438
1533
  },
1439
1534
  getImageIdsForInstance({
1440
1535
  instance,
1441
- frame
1536
+ frame = undefined
1442
1537
  }) {
1443
1538
  const imageIds = getImageId({
1444
1539
  instance,
@@ -2475,8 +2570,8 @@ function ViewerHeader({
2475
2570
  hotkeyDefinitions,
2476
2571
  hotkeyDefaults
2477
2572
  } = hotkeysManager;
2478
- const versionNumber = "3.8.0-beta.44";
2479
- const commitHash = "1456a493d66c90c787b022256c9f2846afb115fc";
2573
+ const versionNumber = "3.8.0-beta.46";
2574
+ const commitHash = "d00a86b022742ea089d246d06cfd691f43b64412";
2480
2575
  const menuOptions = [{
2481
2576
  title: t('Header:About'),
2482
2577
  icon: 'info',
@@ -4823,8 +4918,8 @@ function adaptItem(item, subProps) {
4823
4918
  }
4824
4919
  // EXTERNAL MODULE: ../../ui/src/components/ContextMenu/ContextMenu.tsx
4825
4920
  var ContextMenu = __webpack_require__(5638);
4826
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 448 modules
4827
- var dist_esm = __webpack_require__(81399);
4921
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 454 modules
4922
+ var dist_esm = __webpack_require__(76634);
4828
4923
  ;// CONCATENATED MODULE: ../../../extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx
4829
4924
  var _class;
4830
4925
 
@@ -6748,6 +6843,9 @@ const defaultProtocol = {
6748
6843
  editableBy: {},
6749
6844
  protocolMatchingRules: [],
6750
6845
  toolGroupIds: ['default'],
6846
+ hpInitiationCriteria: {
6847
+ minSeriesLoaded: 1
6848
+ },
6751
6849
  // -1 would be used to indicate active only, whereas other values are
6752
6850
  // the number of required priors referenced - so 0 means active with
6753
6851
  // 0 or more priors.
@@ -14,7 +14,7 @@ __webpack_require__.r(__webpack_exports__);
14
14
  /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71771);
15
15
  /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89556);
16
16
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69190);
17
- /* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81399);
17
+ /* harmony import */ var _cornerstonejs_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76634);
18
18
  /* harmony import */ var _getContextModule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41832);
19
19
  /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(56846);
20
20
  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); }