@ohif/app 3.8.0-beta.2 → 3.8.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 (36) hide show
  1. package/dist/{99.bundle.162517ee32cfe72a492e.js → 126.bundle.ecc43640cdea0799d233.js} +199 -137
  2. package/dist/{181.bundle.2ddc6f90740895a3949c.js → 181.bundle.bce8ecb8af857b2513df.js} +6 -6
  3. package/dist/{19.bundle.b3e9246d53aa79ae7960.js → 19.bundle.83bb9e609a5341b2c539.js} +7 -7
  4. package/dist/{221.bundle.26e8c46147d22ac7db87.js → 221.bundle.85989130912bdd3e4786.js} +10 -10
  5. package/dist/{743.bundle.489f7df3a089d4d374e1.js → 231.bundle.8aad229e39e23731d6c1.js} +18205 -17189
  6. package/dist/{236.bundle.2a2baeb75c8d28cc00bb.js → 236.bundle.07aab629b6fae960fd8b.js} +3 -3
  7. package/dist/{250.bundle.8084960e3318cda37317.js → 250.bundle.3f9fbb8ea16d267d6405.js} +6 -6
  8. package/dist/{359.bundle.161e1d8b66e9040c25ed.js → 359.bundle.51a3b9589ec6df17ceb3.js} +2 -2
  9. package/dist/{410.bundle.18de66c1ed27406c254f.js → 410.bundle.02218cd4a0d6112a31c1.js} +2 -2
  10. package/dist/{342.bundle.c11bb4c95bfb7fb0cfda.js → 43.bundle.b4a1abbd1256e58007eb.js} +131 -53
  11. package/dist/{451.bundle.9fd36f52ff69594f0669.js → 451.bundle.57c21db5d003c75e9d61.js} +2 -2
  12. package/dist/{471.bundle.b3d77b83b1593c09a504.js → 471.bundle.49c8d281adbae4a2c4df.js} +2 -2
  13. package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 485.bundle.8667a696ac2eaf99e4fa.js} +9 -98
  14. package/dist/{370.bundle.e6179cf74d133ce903f9.js → 563.bundle.cd25976497ad15a91e75.js} +320 -179
  15. package/dist/{82.bundle.48e08e39193f3f74377d.js → 575.bundle.8933c681f870a88af641.js} +166 -59
  16. package/dist/{613.bundle.9b005bbf039de90b69ee.js → 613.bundle.3239437a99b4a8cb954c.js} +7 -3
  17. package/dist/{663.bundle.e23c4e894c0792804c6f.js → 663.bundle.12656b0d6714c8f86736.js} +13 -11
  18. package/dist/{788.bundle.c3eec6c3ceea01af04b0.js → 788.bundle.0f9ae3c58f0f147f1fb9.js} +6 -6
  19. package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 82.bundle.122d1b58bc3e22439dd9.js} +12007 -3800
  20. package/dist/{822.bundle.891f2e57b1b7bc2f4cb4.js → 822.bundle.4f0424bd1dc0308bb489.js} +3 -3
  21. package/dist/{886.bundle.4b3a7f2079d085fdbcb3.js → 886.bundle.c8dd3ecc42a4253de278.js} +2 -2
  22. package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 933.bundle.6184b84edf14c687b936.js} +29 -10
  23. package/dist/{app.bundle.e6a19e792f9e31bb385a.js → app.bundle.82dcae1eee3b35631dd0.js} +11801 -11307
  24. package/dist/app.bundle.css +1 -1
  25. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  26. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  27. package/dist/index.html +1 -1
  28. package/dist/sw.js +1 -1
  29. package/package.json +19 -19
  30. /package/dist/{12.bundle.7d9eec7fe48bf64d27fc.js → 12.bundle.1b0367478839ed9be1a7.js} +0 -0
  31. /package/dist/{202.bundle.d3490836f71e001dd30f.js → 202.bundle.ec714227032b22d4fa24.js} +0 -0
  32. /package/dist/{281.bundle.7accd3c1ccfd8625d3b6.js → 281.bundle.94ff32614db4a86841b5.js} +0 -0
  33. /package/dist/{506.bundle.d47786b157f68022ef80.js → 506.bundle.738a7d987830d0e9a157.js} +0 -0
  34. /package/dist/{82.css → 575.css} +0 -0
  35. /package/dist/{687.bundle.7dadbdd458571591c220.js → 687.bundle.626b5a936b1111eaa753.js} +0 -0
  36. /package/dist/{814.bundle.52c2b553bac85767a145.js → 814.bundle.aa347b0ce9d2ab9a055d.js} +0 -0
@@ -20,8 +20,8 @@ const id = package_namespaceObject.u2;
20
20
 
21
21
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
22
22
  var react = __webpack_require__(43001);
23
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
24
- var src = __webpack_require__(71783);
23
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
24
+ var src = __webpack_require__(22582);
25
25
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
26
26
  var core_src = __webpack_require__(71771);
27
27
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
@@ -2598,7 +2598,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
2598
2598
 
2599
2599
 
2600
2600
  const Component = /*#__PURE__*/react.lazy(() => {
2601
- return Promise.all(/* import() */[__webpack_require__.e(743), __webpack_require__.e(604), __webpack_require__.e(417), __webpack_require__.e(23), __webpack_require__.e(342), __webpack_require__.e(250)]).then(__webpack_require__.bind(__webpack_require__, 76516));
2601
+ return Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(604), __webpack_require__.e(417), __webpack_require__.e(23), __webpack_require__.e(43), __webpack_require__.e(250)]).then(__webpack_require__.bind(__webpack_require__, 76516));
2602
2602
  });
2603
2603
  const MicroscopyViewport = props => {
2604
2604
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -22,8 +22,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
22
22
  // EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
23
23
  var lodash_debounce = __webpack_require__(8324);
24
24
  var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
25
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
26
- var src = __webpack_require__(71783);
25
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
26
+ var src = __webpack_require__(22582);
27
27
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.css
28
28
  // extracted by mini-css-extract-plugin
29
29
 
@@ -59,8 +59,8 @@ const listComponentGenerator = props => {
59
59
 
60
60
  // EXTERNAL MODULE: ../../../node_modules/moment/moment.js
61
61
  var moment_moment = __webpack_require__(71271);
62
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
63
- var esm = __webpack_require__(3743);
62
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 344 modules
63
+ var esm = __webpack_require__(62231);
64
64
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/components/ViewportOverlay/utils.ts
65
65
 
66
66
 
@@ -343,8 +343,8 @@ function getDicomWebClient(_ref) {
343
343
  }
344
344
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
345
345
  var dcmjs_es = __webpack_require__(67540);
346
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 76 modules
347
- var default_src = __webpack_require__(56342);
346
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 77 modules
347
+ var default_src = __webpack_require__(4043);
348
348
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/cleanDenaturalizedDataset.ts
349
349
 
350
350
  function isPrimitive(v) {
@@ -14,8 +14,8 @@ __webpack_require__.d(__webpack_exports__, {
14
14
 
15
15
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
16
16
  var src = __webpack_require__(71771);
17
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
18
- var ui_src = __webpack_require__(71783);
17
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
18
+ var ui_src = __webpack_require__(22582);
19
19
  ;// CONCATENATED MODULE: ../../../modes/tmtv/src/initToolGroups.js
20
20
  const toolGroupIds = {
21
21
  CT: 'ctToolGroup',
@@ -12,8 +12,8 @@ __webpack_require__.d(__webpack_exports__, {
12
12
  "default": () => (/* binding */ basic_dev_mode_src)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
16
- var src = __webpack_require__(71783);
15
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
16
+ var src = __webpack_require__(22582);
17
17
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
18
18
  var core_src = __webpack_require__(71771);
19
19
  ;// CONCATENATED MODULE: ../../../modes/basic-dev-mode/src/toolbarButtons.js
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[342],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[43],{
3
3
 
4
- /***/ 56342:
4
+ /***/ 4043:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -512,10 +512,12 @@ class RetrieveMetadataLoaderSync extends RetrieveMetadataLoader {
512
512
 
513
513
 
514
514
  /**
515
- * Creates an immutable series loader object which loads each series sequentially using the iterator interface
515
+ * Creates an immutable series loader object which loads each series sequentially using the iterator interface.
516
+ *
516
517
  * @param {DICOMWebClient} dicomWebClient The DICOMWebClient instance to be used for series load
517
518
  * @param {string} studyInstanceUID The Study Instance UID from which series will be loaded
518
519
  * @param {Array} seriesInstanceUIDList A list of Series Instance UIDs
520
+ *
519
521
  * @returns {Object} Returns an object which supports loading of instances from each of given Series Instance UID
520
522
  */
521
523
  function makeSeriesAsyncLoader(client, studyInstanceUID, seriesInstanceUIDList) {
@@ -613,37 +615,92 @@ class RetrieveMetadataLoaderAsync extends RetrieveMetadataLoader {
613
615
  * Retrieve Study metadata from a DICOM server. If the server is configured to use lazy load, only the first series
614
616
  * will be loaded and the property "studyLoader" will be set to let consumer load remaining series as needed.
615
617
  *
616
- * @param {Object} dicomWebClient The dicomweb-client.
617
- * @param {string} studyInstanceUid The Study Instance UID of the study which needs to be loaded
618
- * @param {Object} [filters] - Object containing filters to be applied on retrieve metadata process
619
- * @param {string} [filter.seriesInstanceUID] - series instance uid to filter results against
620
- * @returns {Object} A study descriptor object
618
+ * @param {*} dicomWebClient The DICOMWebClient instance to be used for series load
619
+ * @param {*} StudyInstanceUID The UID of the Study to be retrieved
620
+ * @param {*} enableStudyLazyLoad Whether the study metadata should be loaded asynchronously
621
+ * @param {object} filters Object containing filters to be applied on retrieve metadata process
622
+ * @param {string} [filters.seriesInstanceUID] Series instance uid to filter results against
623
+ * @param {array} [filters.SeriesInstanceUIDs] Series instance uids to filter results against
624
+ * @param {function} [sortCriteria] Sort criteria function
625
+ * @param {function} [sortFunction] Sort function
626
+ *
627
+ * @returns {Promise} A promises that resolves the study descriptor object
621
628
  */
622
- async function RetrieveMetadata(dicomWebClient, studyInstanceUid, enableStudyLazyLoad) {
629
+ async function RetrieveMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad) {
623
630
  let filters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
624
631
  let sortCriteria = arguments.length > 4 ? arguments[4] : undefined;
625
632
  let sortFunction = arguments.length > 5 ? arguments[5] : undefined;
626
633
  const RetrieveMetadataLoader = enableStudyLazyLoad !== false ? RetrieveMetadataLoaderAsync : RetrieveMetadataLoaderSync;
627
- const retrieveMetadataLoader = new RetrieveMetadataLoader(dicomWebClient, studyInstanceUid, filters, sortCriteria, sortFunction);
634
+ const retrieveMetadataLoader = new RetrieveMetadataLoader(dicomWebClient, StudyInstanceUID, filters, sortCriteria, sortFunction);
628
635
  const data = await retrieveMetadataLoader.execLoad();
629
636
  return data;
630
637
  }
631
638
  /* harmony default export */ const retrieveMetadata = (RetrieveMetadata);
639
+ ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/utils/retrieveMetadataFiltered.js
640
+
641
+
642
+ /**
643
+ * Retrieve metadata filtered.
644
+ *
645
+ * @param {*} dicomWebClient The DICOMWebClient instance to be used for series load
646
+ * @param {*} StudyInstanceUID The UID of the Study to be retrieved
647
+ * @param {*} enableStudyLazyLoad Whether the study metadata should be loaded asynchronously
648
+ * @param {object} filters Object containing filters to be applied on retrieve metadata process
649
+ * @param {string} [filters.seriesInstanceUID] Series instance uid to filter results against
650
+ * @param {array} [filters.SeriesInstanceUIDs] Series instance uids to filter results against
651
+ * @param {function} [sortCriteria] Sort criteria function
652
+ * @param {function} [sortFunction] Sort function
653
+ *
654
+ * @returns
655
+ */
656
+ function retrieveMetadataFiltered(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction) {
657
+ const {
658
+ SeriesInstanceUIDs
659
+ } = filters;
660
+ return new Promise((resolve, reject) => {
661
+ const promises = SeriesInstanceUIDs.map(uid => {
662
+ const seriesSpecificFilters = Object.assign({}, filters, {
663
+ seriesInstanceUID: uid
664
+ });
665
+ return retrieveMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, seriesSpecificFilters, sortCriteria, sortFunction);
666
+ });
667
+ Promise.all(promises).then(results => {
668
+ const aggregatedResult = {
669
+ preLoadData: [],
670
+ promises: []
671
+ };
672
+ results.forEach(_ref => {
673
+ let {
674
+ preLoadData,
675
+ promises
676
+ } = _ref;
677
+ aggregatedResult.preLoadData = aggregatedResult.preLoadData.concat(preLoadData);
678
+ aggregatedResult.promises = aggregatedResult.promises.concat(promises);
679
+ });
680
+ resolve(aggregatedResult);
681
+ }, reject);
682
+ });
683
+ }
684
+ /* harmony default export */ const utils_retrieveMetadataFiltered = (retrieveMetadataFiltered);
632
685
  ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/retrieveStudyMetadata.js
633
686
 
687
+
634
688
  const moduleName = 'RetrieveStudyMetadata';
635
689
  // Cache for promises. Prevents unnecessary subsequent calls to the server
636
690
  const StudyMetaDataPromises = new Map();
637
691
 
638
692
  /**
639
- * Retrieves study metadata
693
+ * Retrieves study metadata.
640
694
  *
641
- * @param {Object} server Object with server configuration parameters
695
+ * @param {Object} dicomWebClient The DICOMWebClient instance to be used for series load
642
696
  * @param {string} StudyInstanceUID The UID of the Study to be retrieved
643
- * @param {boolean} enabledStudyLazyLoad Whether the study metadata should be loaded asynchronously.
644
- * @param {function} storeInstancesCallback A callback used to store the retrieved instance metadata.
645
- * @param {Object} [filters] - Object containing filters to be applied on retrieve metadata process
646
- * @param {string} [filter.seriesInstanceUID] - series instance uid to filter results against
697
+ * @param {boolean} enableStudyLazyLoad Whether the study metadata should be loaded asynchronously.
698
+ * @param {Object} [filters] Object containing filters to be applied on retrieve metadata process
699
+ * @param {string} [filters.seriesInstanceUID] Series instance uid to filter results against
700
+ * @param {array} [filters.SeriesInstanceUIDs] Series instance uids to filter results against
701
+ * @param {function} [sortCriteria] Sort criteria function
702
+ * @param {function} [sortFunction] Sort function
703
+ *
647
704
  * @returns {Promise} that will be resolved with the metadata or rejected with the error
648
705
  */
649
706
  function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction) {
@@ -662,13 +719,17 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
662
719
  if (StudyMetaDataPromises.has(StudyInstanceUID)) {
663
720
  return StudyMetaDataPromises.get(StudyInstanceUID);
664
721
  }
665
-
666
- // Create a promise to handle the data retrieval
667
- const promise = new Promise((resolve, reject) => {
668
- retrieveMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction).then(function (data) {
669
- resolve(data);
670
- }, reject);
671
- });
722
+ let promise;
723
+ if (filters && filters.SeriesInstanceUIDs) {
724
+ promise = utils_retrieveMetadataFiltered(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
725
+ } else {
726
+ // Create a promise to handle the data retrieval
727
+ promise = new Promise((resolve, reject) => {
728
+ retrieveMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction).then(function (data) {
729
+ resolve(data);
730
+ }, reject);
731
+ });
732
+ }
672
733
 
673
734
  // Store the promise in cache
674
735
  StudyMetaDataPromises.set(StudyInstanceUID, promise);
@@ -677,10 +738,9 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
677
738
 
678
739
  /**
679
740
  * Delete the cached study metadata retrieval promise to ensure that the browser will
680
- * re-retrieve the study metadata when it is next requested
741
+ * re-retrieve the study metadata when it is next requested.
681
742
  *
682
743
  * @param {String} StudyInstanceUID The UID of the Study to be removed from cache
683
- *
684
744
  */
685
745
  function deleteStudyMetadataPromise(StudyInstanceUID) {
686
746
  if (StudyMetaDataPromises.has(StudyInstanceUID)) {
@@ -1324,6 +1384,9 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1324
1384
  }
1325
1385
  function setSuccessFlag() {
1326
1386
  const study = src.DicomMetadataStore.getStudy(StudyInstanceUID, madeInClient);
1387
+ if (!study) {
1388
+ return;
1389
+ }
1327
1390
  study.isLoaded = true;
1328
1391
  }
1329
1392
 
@@ -1424,6 +1487,20 @@ let _store = {
1424
1487
  // }
1425
1488
  };
1426
1489
 
1490
+ function wrapSequences(obj) {
1491
+ return Object.keys(obj).reduce((acc, key) => {
1492
+ if (typeof obj[key] === 'object' && obj[key] !== null) {
1493
+ // Recursively wrap sequences for nested objects
1494
+ acc[key] = wrapSequences(obj[key]);
1495
+ } else {
1496
+ acc[key] = obj[key];
1497
+ }
1498
+ if (key.endsWith('Sequence')) {
1499
+ acc[key] = src["default"].utils.addAccessors(acc[key]);
1500
+ }
1501
+ return acc;
1502
+ }, Array.isArray(obj) ? [] : {});
1503
+ }
1427
1504
  const getMetaDataByURL = url => {
1428
1505
  return _store.urls.find(metaData => metaData.url === url);
1429
1506
  };
@@ -1585,8 +1662,13 @@ function createDicomJSONApi(dicomJsonConfig) {
1585
1662
  const numberOfSeries = series.length;
1586
1663
  series.forEach((series, index) => {
1587
1664
  const instances = series.instances.map(instance => {
1665
+ // for instance.metadata if the key ends with sequence then
1666
+ // we need to add a proxy to the first item in the sequence
1667
+ // so that we can access the value of the sequence
1668
+ // by using sequenceName.value
1669
+ const modifiedMetadata = wrapSequences(instance.metadata);
1588
1670
  const obj = {
1589
- ...instance.metadata,
1671
+ ...modifiedMetadata,
1590
1672
  url: instance.url,
1591
1673
  imageId: instance.url,
1592
1674
  ...series,
@@ -2052,8 +2134,8 @@ var react = __webpack_require__(43001);
2052
2134
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
2053
2135
  var prop_types = __webpack_require__(3827);
2054
2136
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
2055
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
2056
- var ui_src = __webpack_require__(71783);
2137
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
2138
+ var ui_src = __webpack_require__(22582);
2057
2139
  // EXTERNAL MODULE: ./state/index.js + 1 modules
2058
2140
  var state = __webpack_require__(62657);
2059
2141
  // EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
@@ -2062,8 +2144,8 @@ var dist = __webpack_require__(62474);
2062
2144
  var es = __webpack_require__(69190);
2063
2145
  // EXTERNAL MODULE: ../node_modules/react-router/dist/index.js
2064
2146
  var react_router_dist = __webpack_require__(85066);
2065
- // EXTERNAL MODULE: ../../i18n/src/index.js + 134 modules
2066
- var i18n_src = __webpack_require__(50376);
2147
+ // EXTERNAL MODULE: ../../i18n/src/index.js + 132 modules
2148
+ var i18n_src = __webpack_require__(45964);
2067
2149
  // EXTERNAL MODULE: ../../../node_modules/classnames/index.js
2068
2150
  var classnames = __webpack_require__(44921);
2069
2151
  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
@@ -2071,6 +2153,7 @@ var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
2071
2153
  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); }
2072
2154
 
2073
2155
 
2156
+
2074
2157
  function Toolbar(_ref) {
2075
2158
  let {
2076
2159
  servicesManager
@@ -2078,15 +2161,21 @@ function Toolbar(_ref) {
2078
2161
  const {
2079
2162
  toolbarService
2080
2163
  } = servicesManager.services;
2164
+ const [viewportGrid, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
2081
2165
  const [toolbarButtons, setToolbarButtons] = (0,react.useState)([]);
2082
2166
  (0,react.useEffect)(() => {
2167
+ const updateToolbar = () => {
2168
+ const toolGroupId = viewportGridService.getActiveViewportOptionByKey('toolGroupId') ?? 'default';
2169
+ setToolbarButtons(toolbarService.getButtonSection(toolGroupId));
2170
+ };
2083
2171
  const {
2084
2172
  unsubscribe
2085
- } = toolbarService.subscribe(toolbarService.EVENTS.TOOL_BAR_MODIFIED, () => setToolbarButtons(toolbarService.getButtonSection('primary')));
2173
+ } = toolbarService.subscribe(toolbarService.EVENTS.TOOL_BAR_MODIFIED, updateToolbar);
2174
+ updateToolbar();
2086
2175
  return () => {
2087
2176
  unsubscribe();
2088
2177
  };
2089
- }, [toolbarService]);
2178
+ }, [toolbarService, viewportGrid]);
2090
2179
  const onInteraction = (0,react.useCallback)(args => toolbarService.recordInteraction(args), [toolbarService]);
2091
2180
  return /*#__PURE__*/react.createElement(react.Fragment, null, toolbarButtons.map(toolDef => {
2092
2181
  const {
@@ -2166,14 +2255,14 @@ function ViewerHeader(_ref) {
2166
2255
  hotkeyDefinitions,
2167
2256
  hotkeyDefaults
2168
2257
  } = hotkeysManager;
2169
- const versionNumber = "3.8.0-beta.2";
2170
- const commitHash = "d9258eca70587cf4dc18be4e56c79b16bae73d6d";
2258
+ const versionNumber = "3.8.0-beta.21";
2259
+ const commitHash = "00e751933ac6d611a34773fa69594243f1b99082";
2171
2260
  const menuOptions = [{
2172
2261
  title: t('Header:About'),
2173
2262
  icon: 'info',
2174
2263
  onClick: () => show({
2175
2264
  content: ui_src/* AboutModal */.tk,
2176
- title: 'About OHIF Viewer',
2265
+ title: t('AboutModal:About OHIF Viewer'),
2177
2266
  contentProps: {
2178
2267
  versionNumber,
2179
2268
  commitHash
@@ -2183,7 +2272,7 @@ function ViewerHeader(_ref) {
2183
2272
  title: t('Header:Preferences'),
2184
2273
  icon: 'settings',
2185
2274
  onClick: () => show({
2186
- title: t('UserPreferencesModal:User Preferences'),
2275
+ title: t('UserPreferencesModal:User preferences'),
2187
2276
  content: ui_src/* UserPreferences */.i1,
2188
2277
  contentProps: {
2189
2278
  hotkeyDefaults: hotkeysManager.getValidHotkeyDefinitions(hotkeyDefaults),
@@ -2863,7 +2952,7 @@ function WrappedPanelStudyBrowser(_ref) {
2863
2952
  // already determined our datasource
2864
2953
  const dataSource = extensionManager.getDataSources()[0];
2865
2954
  const _getStudiesForPatientByMRN = Panels_getStudiesForPatientByMRN.bind(null, dataSource);
2866
- const _getImageSrcFromImageId = _createGetImageSrcFromImageIdFn(extensionManager);
2955
+ const _getImageSrcFromImageId = (0,react.useCallback)(_createGetImageSrcFromImageIdFn(extensionManager), []);
2867
2956
  const _requestDisplaySetCreationForStudy = Panels_requestDisplaySetCreationForStudy.bind(null, dataSource);
2868
2957
  return /*#__PURE__*/react.createElement(Panels_PanelStudyBrowser, {
2869
2958
  servicesManager: servicesManager,
@@ -4320,7 +4409,7 @@ ToolbarButtonWithServices.propTypes = {
4320
4409
  state: prop_types_default().shape({
4321
4410
  primaryToolId: (prop_types_default()).string,
4322
4411
  toggles: prop_types_default().objectOf((prop_types_default()).bool),
4323
- groups: prop_types_default().objectOf((prop_types_default()).object)
4412
+ groups: prop_types_default().objectOf((prop_types_default()).any)
4324
4413
  }).isRequired
4325
4414
  }).isRequired
4326
4415
  }).isRequired
@@ -5626,9 +5715,6 @@ const commandsModule = _ref => {
5626
5715
  delete displaySetSelectorMap[`${activeStudyUID || hpInfo.activeStudyUID}:activeDisplaySet:0`];
5627
5716
  stateSyncService.store(stateSyncReduce);
5628
5717
  // This is a default action applied
5629
- const {
5630
- protocol
5631
- } = hangingProtocolService.getActiveProtocol();
5632
5718
  actions.toggleHpTools();
5633
5719
 
5634
5720
  // try to use the same tool in the new hanging protocol stage
@@ -5649,17 +5735,6 @@ const commandsModule = _ref => {
5649
5735
  });
5650
5736
  }
5651
5737
  }
5652
-
5653
- // Send the notification about updating the state
5654
- if (protocolId !== hpInfo.protocolId) {
5655
- // The old protocol callbacks are used for turning off things
5656
- // like crosshairs when moving to the new HP
5657
- commandsManager.run(oldProtocol.callbacks?.onProtocolExit);
5658
- // The new protocol callback is used for things like
5659
- // activating modes etc.
5660
- }
5661
-
5662
- commandsManager.run(protocol.callbacks?.onProtocolEnter);
5663
5738
  return true;
5664
5739
  } catch (e) {
5665
5740
  console.error(e);
@@ -7328,8 +7403,11 @@ const handlePETImageMetadata = _ref2 => {
7328
7403
  const {
7329
7404
  instances
7330
7405
  } = src.DicomMetadataStore.getSeries(StudyInstanceUID, SeriesInstanceUID);
7406
+ if (!instances?.length) {
7407
+ return;
7408
+ }
7331
7409
  const modality = instances[0].Modality;
7332
- if (modality !== 'PT') {
7410
+ if (!modality || modality !== 'PT') {
7333
7411
  return;
7334
7412
  }
7335
7413
  const imageIds = instances.map(instance => instance.imageId);
@@ -21,8 +21,8 @@ var react = __webpack_require__(43001);
21
21
  var es = __webpack_require__(69190);
22
22
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
23
23
  var src = __webpack_require__(71771);
24
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
25
- var ui_src = __webpack_require__(71783);
24
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
25
+ var ui_src = __webpack_require__(22582);
26
26
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts
27
27
  function createSEGToolGroupAndAddTools(ToolGroupService, customizationService, toolGroupId) {
28
28
  const {
@@ -19,8 +19,8 @@ var prop_types = __webpack_require__(3827);
19
19
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
20
20
  // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
21
21
  var src = __webpack_require__(71771);
22
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
23
- var ui_src = __webpack_require__(71783);
22
+ // EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
23
+ var ui_src = __webpack_require__(22582);
24
24
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-rt/src/utils/promptHydrateRT.ts
25
25
 
26
26
  const RESPONSE = {
@@ -1,4 +1,4 @@
1
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[757],{
1
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[485],{
2
2
 
3
3
  /***/ 82803:
4
4
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -92,7 +92,7 @@ exports.Z = function (_ref) {
92
92
 
93
93
  /***/ }),
94
94
 
95
- /***/ 49399:
95
+ /***/ 96538:
96
96
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
97
97
 
98
98
  "use strict";
@@ -106,99 +106,10 @@ __webpack_require__.d(__webpack_exports__, {
106
106
 
107
107
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/macros.js + 6 modules
108
108
  var macros = __webpack_require__(41168);
109
- // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/PolyData.js + 9 modules
110
- var PolyData = __webpack_require__(1299);
111
- // EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js
112
- var classCallCheck = __webpack_require__(72688);
113
- // EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/createClass.js
114
- var createClass = __webpack_require__(75755);
115
- ;// CONCATENATED MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/EdgeLocator.js
116
-
117
-
118
-
119
- var EdgeLocator = /*#__PURE__*/function () {
120
- function EdgeLocator() {
121
- var oriented = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
122
-
123
- (0,classCallCheck/* default */.Z)(this, EdgeLocator);
124
-
125
- this.oriented = oriented;
126
- this.edgeMap = new Map();
127
- }
128
-
129
- (0,createClass/* default */.Z)(EdgeLocator, [{
130
- key: "initialize",
131
- value: function initialize() {
132
- this.edgeMap.clear();
133
- }
134
- }, {
135
- key: "computeEdgeKey",
136
- value: function computeEdgeKey(pointId0, pointId1) {
137
- return this.oriented || pointId0 < pointId1 ? // Cantor pairing function:
138
- 0.5 * (pointId0 * pointId1) * (pointId0 * pointId1 + 1) + pointId1 : 0.5 * (pointId1 * pointId0) * (pointId1 * pointId0 + 1) + pointId0;
139
- }
140
- }, {
141
- key: "insertUniqueEdge",
142
- value: function insertUniqueEdge(pointId0, pointId1, newEdgeValue) {
143
- // Generate a unique key
144
- var key = this.computeEdgeKey(pointId0, pointId1);
145
- var node = this.edgeMap.get(key);
146
-
147
- if (!node) {
148
- // Didn't find key, so add a new edge entry
149
- node = {
150
- key: key,
151
- edgeId: this.edgeMap.size,
152
- value: newEdgeValue
153
- };
154
- this.edgeMap.set(key, node);
155
- }
156
-
157
- return node;
158
- }
159
- }, {
160
- key: "insertEdge",
161
- value: function insertEdge(pointId0, pointId1, newEdgeValue) {
162
- // Generate a unique key
163
- var key = this.computeEdgeKey(pointId0, pointId1);
164
- var node = {
165
- key: key,
166
- edgeId: this.edgeMap.size,
167
- value: newEdgeValue
168
- };
169
- this.edgeMap.set(key, node);
170
- return node;
171
- }
172
- }, {
173
- key: "isInsertedEdge",
174
- value: function isInsertedEdge(pointId0, pointId1) {
175
- var key = this.computeEdgeKey(pointId0, pointId1);
176
- return this.edgeMap.get(key);
177
- }
178
- }], [{
179
- key: "getEdgePointIds",
180
- value: function getEdgePointIds(node) {
181
- var n = 0.5 * (-1 + Math.sqrt(8 * node.key + 1));
182
- var pointId0 = node.key - 0.5 * (n + 1) * n;
183
- var pointId1 = n - pointId0;
184
- return [pointId0, pointId1];
185
- }
186
- }]);
187
-
188
- return EdgeLocator;
189
- }();
190
-
191
- function newInstance() {
192
- var initialValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
193
- return new EdgeLocator(initialValues.oriented);
194
- }
195
-
196
- var vtkEdgeLocator = {
197
- newInstance: newInstance
198
- };
199
-
200
-
201
-
109
+ // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/PolyData.js + 6 modules
110
+ var PolyData = __webpack_require__(48663);
111
+ // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/EdgeLocator.js
112
+ var EdgeLocator = __webpack_require__(29699);
202
113
  ;// CONCATENATED MODULE: ../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares/caseTable.js
203
114
  // ----------------------------------------------------------------------------
204
115
  // Marching squares case functions (using lines to generate the 2D tessellation).
@@ -287,7 +198,7 @@ function vtkImageMarchingSquares(publicAPI, model) {
287
198
  var ids = [];
288
199
  var pixelScalars = [];
289
200
  var pixelPts = [];
290
- var edgeLocator = vtkEdgeLocator.newInstance(); // Retrieve scalars and pixel coordinates. i-j-k is origin of pixel.
201
+ var edgeLocator = EdgeLocator/* default */.Z.newInstance(); // Retrieve scalars and pixel coordinates. i-j-k is origin of pixel.
291
202
 
292
203
  publicAPI.getPixelScalars = function (i, j, k, slice, dims, origin, spacing, s) {
293
204
  // First get the indices for the pixel
@@ -447,10 +358,10 @@ function extend(publicAPI, model) {
447
358
  vtkImageMarchingSquares(publicAPI, model);
448
359
  } // ----------------------------------------------------------------------------
449
360
 
450
- var ImageMarchingSquares_newInstance = macros["default"].newInstance(extend, 'vtkImageMarchingSquares'); // ----------------------------------------------------------------------------
361
+ var newInstance = macros["default"].newInstance(extend, 'vtkImageMarchingSquares'); // ----------------------------------------------------------------------------
451
362
 
452
363
  var vtkImageMarchingSquares$1 = {
453
- newInstance: ImageMarchingSquares_newInstance,
364
+ newInstance: newInstance,
454
365
  extend: extend
455
366
  };
456
367