@ohif/app 3.8.0-beta.22 → 3.8.0-beta.23

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/{19.bundle.f2a23496a6ed93dac62d.js → 19.bundle.60717b06985980e0a237.js} +2 -2
  2. package/dist/{221.bundle.0ebccc22f886d1ed1c5a.js → 221.bundle.cf2ed62de0a9445c9239.js} +2 -2
  3. package/dist/{236.bundle.440bdc142f1470565e28.js → 236.bundle.19118b0e7881c6359804.js} +1 -1
  4. package/dist/{250.bundle.3f9fbb8ea16d267d6405.js → 250.bundle.6ca102e0e62885294c23.js} +2 -2
  5. package/dist/47.bundle.01d2751a9fd67b3d5390.js +9061 -0
  6. package/dist/{933.bundle.6184b84edf14c687b936.js → 661.bundle.65dd579322b265c6e321.js} +1749 -8963
  7. package/dist/{43.bundle.785b5eef341a551445d6.js → 738.bundle.e03f4127b014ff8ab5a5.js} +321 -10
  8. package/dist/{app.bundle.9b809a873945286927f8.js → app.bundle.e18399dc0b54a4851b2d.js} +23 -9
  9. package/dist/index.html +1 -1
  10. package/dist/sw.js +1 -1
  11. package/package.json +17 -17
  12. package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
  13. /package/dist/{12.bundle.e08c9a68c3ae74534732.js → 12.bundle.c3dc58d8dff2e83ce920.js} +0 -0
  14. /package/dist/{126.bundle.c854bff61991fc4a231c.js → 126.bundle.0ebe6d5227b3e9481532.js} +0 -0
  15. /package/dist/{281.bundle.81b3962b3e7150734f8a.js → 281.bundle.93c845676e4645263c8d.js} +0 -0
  16. /package/dist/{359.bundle.1283413fe124f598e84d.js → 359.bundle.94a407fdbfcb299f2dc2.js} +0 -0
  17. /package/dist/{410.bundle.829305f030d3675ad5ac.js → 410.bundle.116f4a42e6b76e0a2bcb.js} +0 -0
  18. /package/dist/{506.bundle.6eeb56e9caff8f30bb14.js → 506.bundle.20af254ec61a959452cc.js} +0 -0
  19. /package/dist/{563.bundle.85b99569bb9525fd0858.js → 563.bundle.4debceb80aee325eec86.js} +0 -0
  20. /package/dist/{575.bundle.aa80b87d36cb65acf2f8.js → 575.bundle.b400797624d717956cfb.js} +0 -0
  21. /package/dist/{613.bundle.5b4451fe75f6ae1b654e.js → 613.bundle.59befe43e90034b4d879.js} +0 -0
  22. /package/dist/{663.bundle.dd3722f4d5a35738b322.js → 663.bundle.eae1939c22b73ea4c29f.js} +0 -0
  23. /package/dist/{687.bundle.dc5b172f08c41d6dfb83.js → 687.bundle.60a8d6ae5f913c189168.js} +0 -0
  24. /package/dist/{788.bundle.fdd78af8c874111a96fd.js → 788.bundle.57fbc328e3554d9f4659.js} +0 -0
  25. /package/dist/{814.bundle.8d03783d90040e3a81cd.js → 814.bundle.4b853464ad249a249029.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[43],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[738],{
3
3
 
4
- /***/ 4043:
4
+ /***/ 78738:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -704,6 +704,7 @@ const StudyMetaDataPromises = new Map();
704
704
  * @returns {Promise} that will be resolved with the metadata or rejected with the error
705
705
  */
706
706
  function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction) {
707
+ let dicomWebConfig = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
707
708
  // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all
708
709
  // and further requests for that metadata will always fail. On failure, we probably need to remove the
709
710
  // corresponding promise from the "StudyMetaDataPromises" map...
@@ -714,10 +715,11 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
714
715
  if (!StudyInstanceUID) {
715
716
  throw new Error(`${moduleName}: Required 'StudyInstanceUID' parameter not provided.`);
716
717
  }
718
+ const promiseId = `${dicomWebConfig.name}:${StudyInstanceUID}`;
717
719
 
718
720
  // Already waiting on result? Return cached promise
719
- if (StudyMetaDataPromises.has(StudyInstanceUID)) {
720
- return StudyMetaDataPromises.get(StudyInstanceUID);
721
+ if (StudyMetaDataPromises.has(promiseId)) {
722
+ return StudyMetaDataPromises.get(promiseId);
721
723
  }
722
724
  let promise;
723
725
  if (filters && filters.SeriesInstanceUIDs) {
@@ -732,7 +734,7 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
732
734
  }
733
735
 
734
736
  // Store the promise in cache
735
- StudyMetaDataPromises.set(StudyInstanceUID, promise);
737
+ StudyMetaDataPromises.set(promiseId, promise);
736
738
  return promise;
737
739
  }
738
740
 
@@ -1161,7 +1163,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1161
1163
  instances: {
1162
1164
  search: (studyInstanceUid, queryParameters) => {
1163
1165
  qidoDicomWebClient.headers = getAuthrorizationHeader();
1164
- search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
1166
+ return search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
1165
1167
  }
1166
1168
  }
1167
1169
  },
@@ -1252,7 +1254,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1252
1254
  const enableStudyLazyLoad = false;
1253
1255
  wadoDicomWebClient.headers = generateWadoHeader();
1254
1256
  // data is all SOPInstanceUIDs
1255
- const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
1257
+ const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
1256
1258
 
1257
1259
  // first naturalize the data
1258
1260
  const naturalizedInstancesMetadata = data.map(naturalizeDataset);
@@ -1293,6 +1295,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1293
1295
  const seriesMetadata = Object.values(seriesSummaryMetadata);
1294
1296
  src.DicomMetadataStore.addSeriesMetadata(seriesMetadata, madeInClient);
1295
1297
  Object.keys(instancesPerSeries).forEach(seriesInstanceUID => src.DicomMetadataStore.addInstances(instancesPerSeries[seriesInstanceUID], madeInClient));
1298
+ return seriesSummaryMetadata;
1296
1299
  },
1297
1300
  _retrieveSeriesMetadataAsync: async function (StudyInstanceUID, filters, sortCriteria, sortFunction) {
1298
1301
  let madeInClient = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
@@ -1302,7 +1305,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1302
1305
  const {
1303
1306
  preLoadData: seriesSummaryMetadata,
1304
1307
  promises: seriesPromises
1305
- } = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
1308
+ } = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
1306
1309
 
1307
1310
  /**
1308
1311
  * naturalizes the dataset, and adds a retrieve bulkdata method
@@ -1401,6 +1404,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
1401
1404
  }));
1402
1405
  await Promise.all(seriesDeliveredPromises);
1403
1406
  setSuccessFlag();
1407
+ return seriesSummaryMetadata;
1404
1408
  },
1405
1409
  deleteStudyMetadataPromise: deleteStudyMetadataPromise,
1406
1410
  getImageIdsForDisplaySet(displaySet) {
@@ -2096,6 +2100,308 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
2096
2100
  return src/* IWebApiDataSource */.Is.create(implementation);
2097
2101
  }
2098
2102
 
2103
+ // EXTERNAL MODULE: ../../../node_modules/lodash/lodash.js
2104
+ var lodash = __webpack_require__(44379);
2105
+ ;// CONCATENATED MODULE: ../../../extensions/default/src/MergeDataSource/index.ts
2106
+
2107
+
2108
+ const mergeMap = {
2109
+ 'query.studies.search': {
2110
+ mergeKey: 'studyInstanceUid',
2111
+ tagFunc: x => x
2112
+ },
2113
+ 'query.series.search': {
2114
+ mergeKey: 'seriesInstanceUid',
2115
+ tagFunc: (series, sourceName) => {
2116
+ series.forEach(series => {
2117
+ series.RetrieveAETitle = sourceName;
2118
+ src.DicomMetadataStore.updateSeriesMetadata(series);
2119
+ });
2120
+ return series;
2121
+ }
2122
+ }
2123
+ };
2124
+
2125
+ /**
2126
+ * Calls all data sources asynchronously and merges the results.
2127
+ * @param {CallForAllDataSourcesAsyncOptions} options - The options for calling all data sources.
2128
+ * @param {string} options.path - The path to the function to be called on each data source.
2129
+ * @param {unknown[]} options.args - The arguments to be passed to the function.
2130
+ * @param {ExtensionManager} options.extensionManager - The extension manager.
2131
+ * @param {string[]} options.dataSourceNames - The names of the data sources to be called.
2132
+ * @returns {Promise<unknown[]>} - A promise that resolves to the merged data from all data sources.
2133
+ */
2134
+ const callForAllDataSourcesAsync = async _ref => {
2135
+ let {
2136
+ mergeMap,
2137
+ path,
2138
+ args,
2139
+ extensionManager,
2140
+ dataSourceNames
2141
+ } = _ref;
2142
+ const {
2143
+ mergeKey,
2144
+ tagFunc
2145
+ } = mergeMap[path] || {
2146
+ tagFunc: x => x
2147
+ };
2148
+ const dataSourceDefs = Object.values(extensionManager.dataSourceDefs);
2149
+ const promises = [];
2150
+ const mergedData = [];
2151
+ for (const dataSourceDef of dataSourceDefs) {
2152
+ const {
2153
+ configuration,
2154
+ sourceName
2155
+ } = dataSourceDef;
2156
+ if (!!configuration && dataSourceNames.includes(sourceName)) {
2157
+ const [dataSource] = extensionManager.getDataSources(sourceName);
2158
+ const func = (0,lodash.get)(dataSource, path);
2159
+ const promise = func.apply(dataSource, args);
2160
+ promises.push(promise.then(data => mergedData.push(tagFunc(data, sourceName))));
2161
+ }
2162
+ }
2163
+ await Promise.allSettled(promises);
2164
+ return (0,lodash.uniqBy)(mergedData.flat(), obj => obj[mergeKey]);
2165
+ };
2166
+
2167
+ /**
2168
+ * Calls all data sources that match the provided names and merges their data.
2169
+ * @param options - The options for calling all data sources.
2170
+ * @param options.path - The path to the function to be called on each data source.
2171
+ * @param options.args - The arguments to be passed to the function.
2172
+ * @param options.extensionManager - The extension manager instance.
2173
+ * @param options.dataSourceNames - The names of the data sources to be called.
2174
+ * @returns The merged data from all the matching data sources.
2175
+ */
2176
+ const callForAllDataSources = _ref2 => {
2177
+ let {
2178
+ path,
2179
+ args,
2180
+ extensionManager,
2181
+ dataSourceNames
2182
+ } = _ref2;
2183
+ const dataSourceDefs = Object.values(extensionManager.dataSourceDefs);
2184
+ const mergedData = [];
2185
+ for (const dataSourceDef of dataSourceDefs) {
2186
+ const {
2187
+ configuration,
2188
+ sourceName
2189
+ } = dataSourceDef;
2190
+ if (!!configuration && dataSourceNames.includes(sourceName)) {
2191
+ const [dataSource] = extensionManager.getDataSources(sourceName);
2192
+ const func = (0,lodash.get)(dataSource, path);
2193
+ const data = func.apply(dataSource, args);
2194
+ mergedData.push(data);
2195
+ }
2196
+ }
2197
+ return mergedData.flat();
2198
+ };
2199
+
2200
+ /**
2201
+ * Calls the default data source function specified by the given path with the provided arguments.
2202
+ * @param {CallForDefaultDataSourceOptions} options - The options for calling the default data source.
2203
+ * @param {string} options.path - The path to the function within the default data source.
2204
+ * @param {unknown[]} options.args - The arguments to pass to the function.
2205
+ * @param {string} options.defaultDataSourceName - The name of the default data source.
2206
+ * @param {ExtensionManager} options.extensionManager - The extension manager instance.
2207
+ * @returns {unknown} - The result of calling the default data source function.
2208
+ */
2209
+ const callForDefaultDataSource = _ref3 => {
2210
+ let {
2211
+ path,
2212
+ args,
2213
+ defaultDataSourceName,
2214
+ extensionManager
2215
+ } = _ref3;
2216
+ const [dataSource] = extensionManager.getDataSources(defaultDataSourceName);
2217
+ const func = (0,lodash.get)(dataSource, path);
2218
+ return func.apply(dataSource, args);
2219
+ };
2220
+
2221
+ /**
2222
+ * Calls the data source specified by the RetrieveAETitle of the given display set.
2223
+ * @typedef {Object} CallByRetrieveAETitleOptions
2224
+ * @property {string} path - The path of the method to call on the data source.
2225
+ * @property {unknown[]} args - The arguments to pass to the method.
2226
+ * @property {string} defaultDataSourceName - The name of the default data source.
2227
+ * @property {ExtensionManager} extensionManager - The extension manager.
2228
+ */
2229
+ const callByRetrieveAETitle = _ref4 => {
2230
+ let {
2231
+ path,
2232
+ args,
2233
+ defaultDataSourceName,
2234
+ extensionManager
2235
+ } = _ref4;
2236
+ const [displaySet] = args;
2237
+ const seriesMetadata = src.DicomMetadataStore.getSeries(displaySet.StudyInstanceUID, displaySet.SeriesInstanceUID);
2238
+ const [dataSource] = extensionManager.getDataSources(seriesMetadata.RetrieveAETitle || defaultDataSourceName);
2239
+ return dataSource[path](...args);
2240
+ };
2241
+ function createMergeDataSourceApi(mergeConfig, UserAuthenticationService, extensionManager) {
2242
+ const {
2243
+ seriesMerge
2244
+ } = mergeConfig;
2245
+ const {
2246
+ dataSourceNames,
2247
+ defaultDataSourceName
2248
+ } = seriesMerge;
2249
+ const implementation = {
2250
+ initialize: function () {
2251
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2252
+ args[_key] = arguments[_key];
2253
+ }
2254
+ return callForAllDataSources({
2255
+ path: 'initialize',
2256
+ args,
2257
+ extensionManager,
2258
+ dataSourceNames
2259
+ });
2260
+ },
2261
+ query: {
2262
+ studies: {
2263
+ search: function () {
2264
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2265
+ args[_key2] = arguments[_key2];
2266
+ }
2267
+ return callForAllDataSourcesAsync({
2268
+ mergeMap,
2269
+ path: 'query.studies.search',
2270
+ args,
2271
+ extensionManager,
2272
+ dataSourceNames
2273
+ });
2274
+ }
2275
+ },
2276
+ series: {
2277
+ search: function () {
2278
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2279
+ args[_key3] = arguments[_key3];
2280
+ }
2281
+ return callForAllDataSourcesAsync({
2282
+ mergeMap,
2283
+ path: 'query.series.search',
2284
+ args,
2285
+ extensionManager,
2286
+ dataSourceNames
2287
+ });
2288
+ }
2289
+ },
2290
+ instances: {
2291
+ search: function () {
2292
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2293
+ args[_key4] = arguments[_key4];
2294
+ }
2295
+ return callForAllDataSourcesAsync({
2296
+ mergeMap,
2297
+ path: 'query.instances.search',
2298
+ args,
2299
+ extensionManager,
2300
+ dataSourceNames
2301
+ });
2302
+ }
2303
+ }
2304
+ },
2305
+ retrieve: {
2306
+ bulkDataURI: function () {
2307
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2308
+ args[_key5] = arguments[_key5];
2309
+ }
2310
+ return callForAllDataSourcesAsync({
2311
+ mergeMap,
2312
+ path: 'retrieve.bulkDataURI',
2313
+ args,
2314
+ extensionManager,
2315
+ dataSourceNames
2316
+ });
2317
+ },
2318
+ directURL: function () {
2319
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
2320
+ args[_key6] = arguments[_key6];
2321
+ }
2322
+ return callForDefaultDataSource({
2323
+ path: 'retrieve.directURL',
2324
+ args,
2325
+ defaultDataSourceName,
2326
+ extensionManager
2327
+ });
2328
+ },
2329
+ series: {
2330
+ metadata: function () {
2331
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
2332
+ args[_key7] = arguments[_key7];
2333
+ }
2334
+ return callForAllDataSourcesAsync({
2335
+ mergeMap,
2336
+ path: 'retrieve.series.metadata',
2337
+ args,
2338
+ extensionManager,
2339
+ dataSourceNames
2340
+ });
2341
+ }
2342
+ }
2343
+ },
2344
+ store: {
2345
+ dicom: function () {
2346
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
2347
+ args[_key8] = arguments[_key8];
2348
+ }
2349
+ return callForDefaultDataSource({
2350
+ path: 'store.dicom',
2351
+ args,
2352
+ defaultDataSourceName,
2353
+ extensionManager
2354
+ });
2355
+ }
2356
+ },
2357
+ deleteStudyMetadataPromise: function () {
2358
+ for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
2359
+ args[_key9] = arguments[_key9];
2360
+ }
2361
+ return callForAllDataSources({
2362
+ path: 'deleteStudyMetadataPromise',
2363
+ args,
2364
+ extensionManager,
2365
+ dataSourceNames
2366
+ });
2367
+ },
2368
+ getImageIdsForDisplaySet: function () {
2369
+ for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
2370
+ args[_key10] = arguments[_key10];
2371
+ }
2372
+ return callByRetrieveAETitle({
2373
+ path: 'getImageIdsForDisplaySet',
2374
+ args,
2375
+ defaultDataSourceName,
2376
+ extensionManager
2377
+ });
2378
+ },
2379
+ getImageIdsForInstance: function () {
2380
+ for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
2381
+ args[_key11] = arguments[_key11];
2382
+ }
2383
+ return callByRetrieveAETitle({
2384
+ path: 'getImageIdsForDisplaySet',
2385
+ args,
2386
+ defaultDataSourceName,
2387
+ extensionManager
2388
+ });
2389
+ },
2390
+ getStudyInstanceUIDs: function () {
2391
+ for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
2392
+ args[_key12] = arguments[_key12];
2393
+ }
2394
+ return callForAllDataSources({
2395
+ path: 'getStudyInstanceUIDs',
2396
+ args,
2397
+ extensionManager,
2398
+ dataSourceNames
2399
+ });
2400
+ }
2401
+ };
2402
+ return src/* IWebApiDataSource */.Is.create(implementation);
2403
+ }
2404
+
2099
2405
  ;// CONCATENATED MODULE: ../../../extensions/default/src/getDataSourcesModule.js
2100
2406
  // TODO: Pull in IWebClientApi from @ohif/core
2101
2407
  // TODO: Use constructor to create an instance of IWebClientApi
@@ -2106,6 +2412,7 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
2106
2412
 
2107
2413
 
2108
2414
 
2415
+
2109
2416
  /**
2110
2417
  *
2111
2418
  */
@@ -2126,6 +2433,10 @@ function getDataSourcesModule() {
2126
2433
  name: 'dicomlocal',
2127
2434
  type: 'localApi',
2128
2435
  createDataSource: createDicomLocalApi
2436
+ }, {
2437
+ name: 'merge',
2438
+ type: 'mergeApi',
2439
+ createDataSource: createMergeDataSourceApi
2129
2440
  }];
2130
2441
  }
2131
2442
  /* harmony default export */ const src_getDataSourcesModule = (getDataSourcesModule);
@@ -2255,8 +2566,8 @@ function ViewerHeader(_ref) {
2255
2566
  hotkeyDefinitions,
2256
2567
  hotkeyDefaults
2257
2568
  } = hotkeysManager;
2258
- const versionNumber = "3.8.0-beta.22";
2259
- const commitHash = "404b0a5d535182d1ae44e33f7232db500a7b2c16";
2569
+ const versionNumber = "3.8.0-beta.23";
2570
+ const commitHash = "c4ff2c2f09546ce8b72eab9c5e7beed611e3cab0";
2260
2571
  const menuOptions = [{
2261
2572
  title: t('Header:About'),
2262
2573
  icon: 'info',
@@ -989,8 +989,8 @@ function WorkList(_ref) {
989
989
  };
990
990
  });
991
991
  const hasStudies = numOfStudies > 0;
992
- const versionNumber = "3.8.0-beta.22";
993
- const commitHash = "404b0a5d535182d1ae44e33f7232db500a7b2c16";
992
+ const versionNumber = "3.8.0-beta.23";
993
+ const commitHash = "c4ff2c2f09546ce8b72eab9c5e7beed611e3cab0";
994
994
  const menuOptions = [{
995
995
  title: t('Header:About'),
996
996
  icon: 'info',
@@ -1943,15 +1943,15 @@ modes.push("@ohif/mode-microscopy");
1943
1943
  async function loadModule(module) {
1944
1944
  if (typeof module !== 'string') return module;
1945
1945
  if (module === "@ohif/extension-default") {
1946
- const imported = await Promise.all(/* import() */[__webpack_require__.e(604), __webpack_require__.e(417), __webpack_require__.e(43), __webpack_require__.e(579)]).then(__webpack_require__.bind(__webpack_require__, 4043));
1946
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(661), __webpack_require__.e(417), __webpack_require__.e(738), __webpack_require__.e(579)]).then(__webpack_require__.bind(__webpack_require__, 78738));
1947
1947
  return imported.default;
1948
1948
  }
1949
1949
  if (module === "@ohif/extension-cornerstone") {
1950
- const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(604), __webpack_require__.e(933), __webpack_require__.e(575)]).then(__webpack_require__.bind(__webpack_require__, 41420));
1950
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(47), __webpack_require__.e(575)]).then(__webpack_require__.bind(__webpack_require__, 41420));
1951
1951
  return imported.default;
1952
1952
  }
1953
1953
  if (module === "@ohif/extension-measurement-tracking") {
1954
- const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(604), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(43), __webpack_require__.e(663), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
1954
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(738), __webpack_require__.e(663), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
1955
1955
  return imported.default;
1956
1956
  }
1957
1957
  if (module === "@ohif/extension-cornerstone-dicom-sr") {
@@ -1959,7 +1959,7 @@ async function loadModule(module) {
1959
1959
  return imported.default;
1960
1960
  }
1961
1961
  if (module === "@ohif/extension-cornerstone-dicom-seg") {
1962
- const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(604), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(43), __webpack_require__.e(221)]).then(__webpack_require__.bind(__webpack_require__, 9943));
1962
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(738), __webpack_require__.e(221)]).then(__webpack_require__.bind(__webpack_require__, 9943));
1963
1963
  return imported.default;
1964
1964
  }
1965
1965
  if (module === "@ohif/extension-dicom-microscopy") {
@@ -6476,7 +6476,7 @@ const detectionOptions = {
6476
6476
  }
6477
6477
  });
6478
6478
  ;// CONCATENATED MODULE: ../../i18n/package.json
6479
- const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.21"}');
6479
+ const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.22"}');
6480
6480
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6481
6481
  const languagesMap = {
6482
6482
  ar: 'Arabic',
@@ -55497,7 +55497,7 @@ class ExtensionManager extends pubSubServiceInterface/* PubSubService */.h {
55497
55497
  const {
55498
55498
  userAuthenticationService
55499
55499
  } = this._servicesManager.services;
55500
- const dataSourceInstance = module.createDataSource(dataSourceDef.configuration, userAuthenticationService);
55500
+ const dataSourceInstance = module.createDataSource(dataSourceDef.configuration, userAuthenticationService, this);
55501
55501
  this.dataSourceMap[dataSourceDef.sourceName] = [dataSourceInstance];
55502
55502
  }
55503
55503
  _initDataSourcesModule(extensionModule, extensionId) {
@@ -57753,6 +57753,20 @@ const BaseImplementation = {
57753
57753
  madeInClient
57754
57754
  });
57755
57755
  },
57756
+ updateSeriesMetadata(seriesMetadata) {
57757
+ const {
57758
+ StudyInstanceUID,
57759
+ SeriesInstanceUID
57760
+ } = seriesMetadata;
57761
+ const series = _getSeries(StudyInstanceUID, SeriesInstanceUID);
57762
+ if (!series) {
57763
+ return;
57764
+ }
57765
+ const study = _getStudy(StudyInstanceUID);
57766
+ if (study) {
57767
+ study.setSeriesMetadata(SeriesInstanceUID, seriesMetadata);
57768
+ }
57769
+ },
57756
57770
  addSeriesMetadata(seriesSummaryMetadata) {
57757
57771
  let madeInClient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
57758
57772
  if (!seriesSummaryMetadata || !seriesSummaryMetadata.length || !seriesSummaryMetadata[0]) {
@@ -159941,7 +159955,7 @@ var selectOrdinal = function selectOrdinal() {
159941
159955
  /******/ // This function allow to reference async chunks
159942
159956
  /******/ __webpack_require__.u = (chunkId) => {
159943
159957
  /******/ // return url for filenames based on template
159944
- /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"e08c9a68c3ae74534732","18":"2c146384eb9466d02ff8","19":"f2a23496a6ed93dac62d","23":"e008ad788170f2ed5569","43":"785b5eef341a551445d6","82":"122d1b58bc3e22439dd9","125":"253395f320b72180da63","126":"c854bff61991fc4a231c","181":"bce8ecb8af857b2513df","202":"ec714227032b22d4fa24","220":"f7e1c96c94245e70f2be","221":"0ebccc22f886d1ed1c5a","231":"8aad229e39e23731d6c1","236":"440bdc142f1470565e28","250":"3f9fbb8ea16d267d6405","281":"81b3962b3e7150734f8a","359":"1283413fe124f598e84d","410":"829305f030d3675ad5ac","417":"af0a207c29b109f84159","451":"57c21db5d003c75e9d61","471":"49c8d281adbae4a2c4df","485":"8667a696ac2eaf99e4fa","506":"6eeb56e9caff8f30bb14","530":"a03b6f942ace3e1baa1e","563":"85b99569bb9525fd0858","575":"aa80b87d36cb65acf2f8","579":"8fc434a0c13d3f662d42","604":"a51f83e64004bca5f497","613":"5b4451fe75f6ae1b654e","663":"dd3722f4d5a35738b322","686":"dccef1f36e4bc79bcc48","687":"dc5b172f08c41d6dfb83","775":"2285e7e0e67878948c0d","788":"fdd78af8c874111a96fd","814":"8d03783d90040e3a81cd","822":"4f0424bd1dc0308bb489","886":"c8dd3ecc42a4253de278","933":"6184b84edf14c687b936"}[chunkId] + ".js";
159958
+ /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"c3dc58d8dff2e83ce920","18":"2c146384eb9466d02ff8","19":"60717b06985980e0a237","23":"e008ad788170f2ed5569","47":"01d2751a9fd67b3d5390","82":"122d1b58bc3e22439dd9","125":"253395f320b72180da63","126":"0ebe6d5227b3e9481532","181":"bce8ecb8af857b2513df","202":"ec714227032b22d4fa24","220":"f7e1c96c94245e70f2be","221":"cf2ed62de0a9445c9239","231":"8aad229e39e23731d6c1","236":"19118b0e7881c6359804","250":"6ca102e0e62885294c23","281":"93c845676e4645263c8d","359":"94a407fdbfcb299f2dc2","410":"116f4a42e6b76e0a2bcb","417":"af0a207c29b109f84159","451":"57c21db5d003c75e9d61","471":"49c8d281adbae4a2c4df","485":"8667a696ac2eaf99e4fa","506":"20af254ec61a959452cc","530":"a03b6f942ace3e1baa1e","563":"4debceb80aee325eec86","575":"b400797624d717956cfb","579":"8fc434a0c13d3f662d42","613":"59befe43e90034b4d879","661":"65dd579322b265c6e321","663":"eae1939c22b73ea4c29f","686":"dccef1f36e4bc79bcc48","687":"60a8d6ae5f913c189168","738":"e03f4127b014ff8ab5a5","775":"2285e7e0e67878948c0d","788":"57fbc328e3554d9f4659","814":"4b853464ad249a249029","822":"4f0424bd1dc0308bb489","886":"c8dd3ecc42a4253de278"}[chunkId] + ".js";
159945
159959
  /******/ };
159946
159960
  /******/ })();
159947
159961
  /******/
package/dist/index.html CHANGED
@@ -1,2 +1,2 @@
1
1
  <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="mobile-web-app-capable" content="yes"/><meta name="application-name" content="OHIF Viewer"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="@ohif/app"/><meta name="msapplication-TileColor" content="#fff"/><meta name="msapplication-TileImage" content="/assets/mstile-144x144.png"/><meta name="msapplication-config" content="/assets/browserconfig.xml"/><script>console.time('scriptToView');
2
- window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.9b809a873945286927f8.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
2
+ window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.e18399dc0b54a4851b2d.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
package/dist/sw.js CHANGED
@@ -51,7 +51,7 @@ self.addEventListener('message', event => {
51
51
  }
52
52
  }
53
53
  });
54
- workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.e08c9a68c3ae74534732.js'},{'revision':null,'url':'/125.bundle.253395f320b72180da63.js'},{'revision':null,'url':'/126.bundle.c854bff61991fc4a231c.js'},{'revision':null,'url':'/181.bundle.bce8ecb8af857b2513df.js'},{'revision':'8079c6447e119ba0680e8fab5875745d','url':'/181.css'},{'revision':null,'url':'/19.bundle.f2a23496a6ed93dac62d.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/202.bundle.ec714227032b22d4fa24.js'},{'revision':null,'url':'/220.bundle.f7e1c96c94245e70f2be.js'},{'revision':null,'url':'/221.bundle.0ebccc22f886d1ed1c5a.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/221.css'},{'revision':null,'url':'/23.bundle.e008ad788170f2ed5569.js'},{'revision':null,'url':'/231.bundle.8aad229e39e23731d6c1.js'},{'revision':null,'url':'/236.bundle.440bdc142f1470565e28.js'},{'revision':null,'url':'/250.bundle.3f9fbb8ea16d267d6405.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.81b3962b3e7150734f8a.js'},{'revision':null,'url':'/359.bundle.1283413fe124f598e84d.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/410.bundle.829305f030d3675ad5ac.js'},{'revision':null,'url':'/417.bundle.af0a207c29b109f84159.js'},{'revision':null,'url':'/43.bundle.785b5eef341a551445d6.js'},{'revision':null,'url':'/451.bundle.57c21db5d003c75e9d61.js'},{'revision':null,'url':'/471.bundle.49c8d281adbae4a2c4df.js'},{'revision':null,'url':'/485.bundle.8667a696ac2eaf99e4fa.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.6eeb56e9caff8f30bb14.js'},{'revision':null,'url':'/530.bundle.a03b6f942ace3e1baa1e.js'},{'revision':null,'url':'/563.bundle.85b99569bb9525fd0858.js'},{'revision':null,'url':'/575.bundle.aa80b87d36cb65acf2f8.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/575.css'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/579.css'},{'revision':null,'url':'/604.bundle.a51f83e64004bca5f497.js'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':null,'url':'/613.bundle.5b4451fe75f6ae1b654e.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/663.bundle.dd3722f4d5a35738b322.js'},{'revision':null,'url':'/686.bundle.dccef1f36e4bc79bcc48.js'},{'revision':null,'url':'/687.bundle.dc5b172f08c41d6dfb83.js'},{'revision':'cf3e4d4fa8884275461c195421812256','url':'/75788f12450d4c5ed494.wasm'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/775.bundle.2285e7e0e67878948c0d.js'},{'revision':null,'url':'/788.bundle.fdd78af8c874111a96fd.js'},{'revision':null,'url':'/814.bundle.8d03783d90040e3a81cd.js'},{'revision':null,'url':'/82.bundle.122d1b58bc3e22439dd9.js'},{'revision':null,'url':'/822.bundle.4f0424bd1dc0308bb489.js'},{'revision':null,'url':'/886.bundle.c8dd3ecc42a4253de278.js'},{'revision':null,'url':'/933.bundle.6184b84edf14c687b936.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.9b809a873945286927f8.js'},{'revision':'4d46bdc9a3d136c920e959eb85b0f5f7','url':'/app.bundle.css'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'fc2da6ec5d17fa844b0a9d67a8b39b21','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'59eb3dc6754e4d494b27c774ba53255c','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':'2e2ebd54cbdac0af6fb8616f67393d9c','url':'/index.html'},{'revision':'feee2d4ed9d00c64f0e4d6a46608fecf','url':'/index.worker.e62ecca63f1a2e124230.worker.js'},{'revision':'beaf37c564436e46bbcd825f0330cdbf','url':'/index.worker.e62ecca63f1a2e124230.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
54
+ workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.c3dc58d8dff2e83ce920.js'},{'revision':null,'url':'/125.bundle.253395f320b72180da63.js'},{'revision':null,'url':'/126.bundle.0ebe6d5227b3e9481532.js'},{'revision':null,'url':'/181.bundle.bce8ecb8af857b2513df.js'},{'revision':'8079c6447e119ba0680e8fab5875745d','url':'/181.css'},{'revision':null,'url':'/19.bundle.60717b06985980e0a237.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/202.bundle.ec714227032b22d4fa24.js'},{'revision':null,'url':'/220.bundle.f7e1c96c94245e70f2be.js'},{'revision':null,'url':'/221.bundle.cf2ed62de0a9445c9239.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/221.css'},{'revision':null,'url':'/23.bundle.e008ad788170f2ed5569.js'},{'revision':null,'url':'/231.bundle.8aad229e39e23731d6c1.js'},{'revision':null,'url':'/236.bundle.19118b0e7881c6359804.js'},{'revision':null,'url':'/250.bundle.6ca102e0e62885294c23.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.93c845676e4645263c8d.js'},{'revision':null,'url':'/359.bundle.94a407fdbfcb299f2dc2.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/410.bundle.116f4a42e6b76e0a2bcb.js'},{'revision':null,'url':'/417.bundle.af0a207c29b109f84159.js'},{'revision':null,'url':'/451.bundle.57c21db5d003c75e9d61.js'},{'revision':null,'url':'/47.bundle.01d2751a9fd67b3d5390.js'},{'revision':null,'url':'/471.bundle.49c8d281adbae4a2c4df.js'},{'revision':null,'url':'/485.bundle.8667a696ac2eaf99e4fa.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.20af254ec61a959452cc.js'},{'revision':null,'url':'/530.bundle.a03b6f942ace3e1baa1e.js'},{'revision':null,'url':'/563.bundle.4debceb80aee325eec86.js'},{'revision':null,'url':'/575.bundle.b400797624d717956cfb.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/575.css'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/579.css'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':null,'url':'/613.bundle.59befe43e90034b4d879.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/661.bundle.65dd579322b265c6e321.js'},{'revision':null,'url':'/663.bundle.eae1939c22b73ea4c29f.js'},{'revision':null,'url':'/686.bundle.dccef1f36e4bc79bcc48.js'},{'revision':null,'url':'/687.bundle.60a8d6ae5f913c189168.js'},{'revision':null,'url':'/738.bundle.e03f4127b014ff8ab5a5.js'},{'revision':'cf3e4d4fa8884275461c195421812256','url':'/75788f12450d4c5ed494.wasm'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/775.bundle.2285e7e0e67878948c0d.js'},{'revision':null,'url':'/788.bundle.57fbc328e3554d9f4659.js'},{'revision':null,'url':'/814.bundle.4b853464ad249a249029.js'},{'revision':null,'url':'/82.bundle.122d1b58bc3e22439dd9.js'},{'revision':null,'url':'/822.bundle.4f0424bd1dc0308bb489.js'},{'revision':null,'url':'/886.bundle.c8dd3ecc42a4253de278.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':'4d46bdc9a3d136c920e959eb85b0f5f7','url':'/app.bundle.css'},{'revision':null,'url':'/app.bundle.e18399dc0b54a4851b2d.js'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'fc2da6ec5d17fa844b0a9d67a8b39b21','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'59eb3dc6754e4d494b27c774ba53255c','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':'d659bd5af3e03b9186d66484e0fc431e','url':'/index.html'},{'revision':'feee2d4ed9d00c64f0e4d6a46608fecf','url':'/index.worker.e62ecca63f1a2e124230.worker.js'},{'revision':'beaf37c564436e46bbcd825f0330cdbf','url':'/index.worker.e62ecca63f1a2e124230.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
55
55
 
56
56
  // TODO: Cache API
57
57
  // https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api