@ohif/app 3.8.0-beta.37 → 3.8.0-beta.38

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 (22) hide show
  1. package/dist/{359.bundle.e2368d3803386a523fdb.js → 359.bundle.2ec3543dc0f70b857347.js} +1 -1
  2. package/dist/{661.bundle.28ef6d8cd035876bd8e2.js → 661.bundle.949c984fe2f9f753b65c.js} +117 -43
  3. package/dist/{738.bundle.ccf62a32b25fdb42cc74.js → 738.bundle.9d258c3b701474029d9a.js} +20 -7
  4. package/dist/{app.bundle.9d88d2da0b6190c77cc2.js → app.bundle.a299c2b2bc8e26f3c114.js} +4 -4
  5. package/dist/index.html +1 -1
  6. package/dist/sw.js +1 -1
  7. package/package.json +18 -18
  8. /package/dist/{12.bundle.2292b15e4b7b5d86fb84.js → 12.bundle.8a996780d0884b4334b4.js} +0 -0
  9. /package/dist/{170.bundle.39279a2336dc1daf7ae8.js → 170.bundle.05c8abe42777ead03b50.js} +0 -0
  10. /package/dist/{185.bundle.9ef3f123beed05ecd804.js → 185.bundle.4692c8812d264295705d.js} +0 -0
  11. /package/dist/{19.bundle.dd04549651e5cf57faed.js → 19.bundle.1c63b50b0be55c61aa79.js} +0 -0
  12. /package/dist/{199.bundle.0a3a63176033a4de78bc.js → 199.bundle.68e580bf83885aa03d89.js} +0 -0
  13. /package/dist/{281.bundle.be4a3502af6da1981a28.js → 281.bundle.3e434534b5c804fa7e03.js} +0 -0
  14. /package/dist/{410.bundle.d3746ff102c01e870023.js → 410.bundle.9610a46c0d056d47a979.js} +0 -0
  15. /package/dist/{456.bundle.9faecbda28164b9d242b.js → 456.bundle.04c13b51bcc475a2e612.js} +0 -0
  16. /package/dist/{466.bundle.1f21dd37d195915ed82e.js → 466.bundle.d3ecd660ba28480d0a48.js} +0 -0
  17. /package/dist/{483.bundle.1ce43855923cbb2760ec.js → 483.bundle.022ac6f8d0fe20e5f748.js} +0 -0
  18. /package/dist/{506.bundle.2dc71df132ed0676a555.js → 506.bundle.2cbb19a3f09210440f04.js} +0 -0
  19. /package/dist/{613.bundle.879cb01a1c9130dfcb36.js → 613.bundle.02286a9826bf2f5c8f69.js} +0 -0
  20. /package/dist/{687.bundle.5fc1658132ba988e9ec1.js → 687.bundle.ee93df40b6161afc2363.js} +0 -0
  21. /package/dist/{814.bundle.8012c51e5c3cf651453e.js → 814.bundle.11b6c8cda5f2aa865455.js} +0 -0
  22. /package/dist/{965.bundle.a189da0561277f4d46db.js → 965.bundle.ec77c2aa2ecb949f4c48.js} +0 -0
@@ -111,7 +111,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
111
111
  active: [{
112
112
  toolName: toolNames.VolumeRotateMouseWheel,
113
113
  configuration: {
114
- rotateIncrementDegrees: 0.1
114
+ rotateIncrementDegrees: 5
115
115
  }
116
116
  }, {
117
117
  toolName: toolNames.MipJumpToClick,
@@ -39,6 +39,31 @@ function _createClass(Constructor, protoProps, staticProps) {
39
39
  });
40
40
  return Constructor;
41
41
  }
42
+ function _toConsumableArray(arr) {
43
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
44
+ }
45
+ function _arrayWithoutHoles(arr) {
46
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
47
+ }
48
+ function _iterableToArray(iter) {
49
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
50
+ }
51
+ function _unsupportedIterableToArray(o, minLen) {
52
+ if (!o) return;
53
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
54
+ var n = Object.prototype.toString.call(o).slice(8, -1);
55
+ if (n === "Object" && o.constructor) n = o.constructor.name;
56
+ if (n === "Map" || n === "Set") return Array.from(o);
57
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
58
+ }
59
+ function _arrayLikeToArray(arr, len) {
60
+ if (len == null || len > arr.length) len = arr.length;
61
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
62
+ return arr2;
63
+ }
64
+ function _nonIterableSpread() {
65
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
66
+ }
42
67
  function _toPrimitive(input, hint) {
43
68
  if (typeof input !== "object" || input === null) return input;
44
69
  var prim = input[Symbol.toPrimitive];
@@ -311,6 +336,12 @@ var MEDIATYPES = {
311
336
  PNG: 'image/png'
312
337
  };
313
338
 
339
+ /**
340
+ * debugLog is a function that can be called with console.log arguments, and will
341
+ * be conditionally displayed, only when debug logging is enabled.
342
+ */
343
+ var debugLog = function debugLog() {};
344
+
314
345
  /**
315
346
  * @typedef { import("../types/types").InstanceMetadata } InstanceMetadata
316
347
  */
@@ -340,6 +371,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
340
371
  * @param {Object=} options.headers - HTTP headers
341
372
  * @param {Array.<RequestHook>=} options.requestHooks - Request hooks.
342
373
  * @param {Object=} options.verbose - print to console request warnings and errors, default true
374
+ * @param {Object=} options.debug - print to the console debug level information/status updates.
343
375
  * @param {boolean|String} options.singlepart - retrieve singlepart for the named types.
344
376
  * The available types are: bulkdata, video, image. true means all.
345
377
  */
@@ -357,25 +389,25 @@ var DICOMwebClient = /*#__PURE__*/function () {
357
389
  this.password = options.password;
358
390
  }
359
391
  if ('qidoURLPrefix' in options) {
360
- console.log("use URL prefix for QIDO-RS: ".concat(options.qidoURLPrefix));
392
+ debugLog("use URL prefix for QIDO-RS: ".concat(options.qidoURLPrefix));
361
393
  this.qidoURL = "".concat(this.baseURL, "/").concat(options.qidoURLPrefix);
362
394
  } else {
363
395
  this.qidoURL = this.baseURL;
364
396
  }
365
397
  if ('wadoURLPrefix' in options) {
366
- console.log("use URL prefix for WADO-RS: ".concat(options.wadoURLPrefix));
398
+ debugLog("use URL prefix for WADO-RS: ".concat(options.wadoURLPrefix));
367
399
  this.wadoURL = "".concat(this.baseURL, "/").concat(options.wadoURLPrefix);
368
400
  } else {
369
401
  this.wadoURL = this.baseURL;
370
402
  }
371
403
  if ('stowURLPrefix' in options) {
372
- console.log("use URL prefix for STOW-RS: ".concat(options.stowURLPrefix));
404
+ debugLog("use URL prefix for STOW-RS: ".concat(options.stowURLPrefix));
373
405
  this.stowURL = "".concat(this.baseURL, "/").concat(options.stowURLPrefix);
374
406
  } else {
375
407
  this.stowURL = this.baseURL;
376
408
  }
377
409
  if (options.singlepart) {
378
- console.log('use singlepart', options.singlepart);
410
+ debugLog('use singlepart', options.singlepart);
379
411
  this.singlepart = options.singlepart === true ? 'bulkdata,video,image' : options.singlepart;
380
412
  } else {
381
413
  this.singlepart = '';
@@ -394,14 +426,40 @@ var DICOMwebClient = /*#__PURE__*/function () {
394
426
 
395
427
  // Verbose - print to console request warnings and errors, default true
396
428
  this.verbose = options.verbose !== false;
429
+ this.setDebug(options.debug);
397
430
  }
398
431
 
399
432
  /**
400
- * Sets verbose flag.
401
- *
402
- * @param {Boolean} verbose
433
+ * Allows setting the debug log information.
434
+ * Note this is different from verbose in that verbose is whether to include warning/error information, defaulting to true
435
+ *
436
+ * @param {boolean} debugLevel
437
+ * @param {function} debugLogFunction to call with the debug output arguments.
403
438
  */
404
439
  _createClass(DICOMwebClient, [{
440
+ key: "setDebug",
441
+ value: function setDebug() {
442
+ var debugLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
443
+ var debugLogFunction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
444
+ this.debugLevel = !!debugLevel;
445
+ debugLog = debugLogFunction || debugLevel ? console.log : function () {};
446
+ }
447
+ /**
448
+ * Gets debug flag
449
+ *
450
+ * @returns true if debug logging is enabled
451
+ */
452
+ }, {
453
+ key: "getDebug",
454
+ value: function getDebug() {
455
+ return this.debugLevel;
456
+ }
457
+ /**
458
+ * Sets verbose flag.
459
+ *
460
+ * @param {Boolean} verbose
461
+ */
462
+ }, {
405
463
  key: "setVerbose",
406
464
  value: function setVerbose(verbose) {
407
465
  this.verbose = verbose;
@@ -457,12 +515,12 @@ var DICOMwebClient = /*#__PURE__*/function () {
457
515
 
458
516
  // Event triggered when upload starts
459
517
  request.onloadstart = function onloadstart() {
460
- // console.log('upload started: ', url)
518
+ debugLog('upload started: ', url);
461
519
  };
462
520
 
463
521
  // Event triggered when upload ends
464
522
  request.onloadend = function onloadend() {
465
- // console.log('upload finished')
523
+ debugLog('upload finished');
466
524
  };
467
525
 
468
526
  // Handle response message
@@ -848,7 +906,8 @@ var DICOMwebClient = /*#__PURE__*/function () {
848
906
  }
849
907
  /**
850
908
  * Performs an HTTP GET request that accepts a multipart message
851
- * with a application/octet-stream media type.
909
+ * with a application/octet-stream, OR any of the equivalencies for that (eg
910
+ * application/pdf etc)
852
911
  *
853
912
  * @param {String} url - Unique resource locator
854
913
  * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the
@@ -865,7 +924,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
865
924
  var headers = {};
866
925
  var defaultMediaType = 'application/octet-stream';
867
926
  var supportedMediaTypes = {
868
- '1.2.840.10008.1.2.1': [defaultMediaType]
927
+ '1.2.840.10008.1.2.1': _toConsumableArray(Object.values(MEDIATYPES))
869
928
  };
870
929
  var acceptableMediaTypes = mediaTypes;
871
930
  if (!mediaTypes) {
@@ -937,7 +996,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
937
996
  */
938
997
  value: function searchForStudies() {
939
998
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
940
- console.log('search for studies');
999
+ debugLog('search for studies');
941
1000
  var withCredentials = false;
942
1001
  var url = "".concat(this.qidoURL, "/studies");
943
1002
  if ('queryParams' in options) {
@@ -964,7 +1023,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
964
1023
  if (!('studyInstanceUID' in options)) {
965
1024
  throw new Error('Study Instance UID is required for retrieval of study metadata');
966
1025
  }
967
- console.log("retrieve metadata of study ".concat(options.studyInstanceUID));
1026
+ debugLog("retrieve metadata of study ".concat(options.studyInstanceUID));
968
1027
  var url = "".concat(this.wadoURL, "/studies/").concat(options.studyInstanceUID, "/metadata");
969
1028
  var withCredentials = false;
970
1029
  if ('withCredentials' in options) {
@@ -988,7 +1047,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
988
1047
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
989
1048
  var url = this.qidoURL;
990
1049
  if ('studyInstanceUID' in options) {
991
- console.log("search series of study ".concat(options.studyInstanceUID));
1050
+ debugLog("search series of study ".concat(options.studyInstanceUID));
992
1051
  url += "/studies/".concat(options.studyInstanceUID);
993
1052
  }
994
1053
  url += '/series';
@@ -1021,7 +1080,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1021
1080
  if (!('seriesInstanceUID' in options)) {
1022
1081
  throw new Error('Series Instance UID is required for retrieval of series metadata');
1023
1082
  }
1024
- console.log("retrieve metadata of series ".concat(options.seriesInstanceUID));
1083
+ debugLog("retrieve metadata of series ".concat(options.seriesInstanceUID));
1025
1084
  var url = "".concat(this.wadoURL, "/studies/").concat(options.studyInstanceUID, "/series/").concat(options.seriesInstanceUID, "/metadata");
1026
1085
  var withCredentials = false;
1027
1086
  if ('withCredentials' in options) {
@@ -1049,13 +1108,13 @@ var DICOMwebClient = /*#__PURE__*/function () {
1049
1108
  if ('studyInstanceUID' in options) {
1050
1109
  url += "/studies/".concat(options.studyInstanceUID);
1051
1110
  if ('seriesInstanceUID' in options) {
1052
- console.log("search for instances of series ".concat(options.seriesInstanceUID));
1111
+ debugLog("search for instances of series ".concat(options.seriesInstanceUID));
1053
1112
  url += "/series/".concat(options.seriesInstanceUID);
1054
1113
  } else {
1055
- console.log("search for instances of study ".concat(options.studyInstanceUID));
1114
+ debugLog("search for instances of study ".concat(options.studyInstanceUID));
1056
1115
  }
1057
1116
  } else {
1058
- console.log('search for instances');
1117
+ debugLog('search for instances');
1059
1118
  }
1060
1119
  url += '/instances';
1061
1120
  if ('queryParams' in options) {
@@ -1121,7 +1180,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1121
1180
  if (!('sopInstanceUID' in options)) {
1122
1181
  throw new Error('SOP Instance UID is required for retrieval of instance metadata');
1123
1182
  }
1124
- console.log("retrieve metadata of instance ".concat(options.sopInstanceUID));
1183
+ debugLog("retrieve metadata of instance ".concat(options.sopInstanceUID));
1125
1184
  var url = "".concat(this.wadoURL, "/studies/").concat(options.studyInstanceUID, "/series/").concat(options.seriesInstanceUID, "/instances/").concat(options.sopInstanceUID, "/metadata");
1126
1185
  var withCredentials = false;
1127
1186
  if ('withCredentials' in options) {
@@ -1155,7 +1214,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1155
1214
  if (!('frameNumbers' in options)) {
1156
1215
  throw new Error('frame numbers are required for retrieval of instance frames');
1157
1216
  }
1158
- console.log("retrieve frames ".concat(options.frameNumbers.toString(), " of instance ").concat(options.sopInstanceUID));
1217
+ debugLog("retrieve frames ".concat(options.frameNumbers.toString(), " of instance ").concat(options.sopInstanceUID));
1159
1218
  var url = "".concat(this.wadoURL, "/studies/").concat(options.studyInstanceUID, "/series/").concat(options.seriesInstanceUID, "/instances/").concat(options.sopInstanceUID, "/frames/").concat(options.frameNumbers.toString());
1160
1219
  var mediaTypes = options.mediaTypes;
1161
1220
  var withCredentials = false;
@@ -1190,7 +1249,9 @@ var DICOMwebClient = /*#__PURE__*/function () {
1190
1249
  '1.2.840.10008.1.2.4.90': ['image/jp2'],
1191
1250
  '1.2.840.10008.1.2.4.91': ['image/jp2'],
1192
1251
  '1.2.840.10008.1.2.4.92': ['image/jpx'],
1193
- '1.2.840.10008.1.2.4.93': ['image/jpx']
1252
+ '1.2.840.10008.1.2.4.93': ['image/jpx'],
1253
+ '1.2.840.10008.1.2.4.201': ['image/jhc'],
1254
+ '1.2.840.10008.1.2.4.202': ['image/jhc']
1194
1255
  };
1195
1256
  var headers = {
1196
1257
  Accept: DICOMwebClient._buildMultipartAcceptHeaderFieldValue(mediaTypes, supportedMediaTypes)
@@ -1350,7 +1411,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1350
1411
  if (!('frameNumbers' in options)) {
1351
1412
  throw new Error('frame numbers are required for retrieval of rendered instance frames');
1352
1413
  }
1353
- console.debug("retrieve rendered frames ".concat(options.frameNumbers.toString(), " of instance ").concat(options.sopInstanceUID));
1414
+ debugLog("retrieve rendered frames ".concat(options.frameNumbers.toString(), " of instance ").concat(options.sopInstanceUID));
1354
1415
  var url = "".concat(this.wadoURL, "/studies/").concat(options.studyInstanceUID, "/series/").concat(options.seriesInstanceUID, "/instances/").concat(options.sopInstanceUID, "/frames/").concat(options.frameNumbers.toString(), "/rendered");
1355
1416
  var mediaTypes = options.mediaTypes,
1356
1417
  queryParams = options.queryParams;
@@ -1567,17 +1628,19 @@ var DICOMwebClient = /*#__PURE__*/function () {
1567
1628
  if (this.singlepart.indexOf('bulkdata') !== -1) {
1568
1629
  return this._httpGet(url, options.headers, 'arraybuffer', null, withCredentials);
1569
1630
  }
1570
- if (!mediaTypes) {
1571
- return this._httpGetMultipartApplicationOctetStream(url, mediaTypes, byteRange, false, false, withCredentials);
1572
- }
1573
- var commonMediaType = DICOMwebClient._getCommonMediaType(mediaTypes);
1574
- if (commonMediaType === MEDIATYPES.OCTET_STREAM) {
1575
- return this._httpGetMultipartApplicationOctetStream(url, mediaTypes, byteRange, false, progressCallback, withCredentials);
1576
- }
1577
- if (commonMediaType.startsWith('image')) {
1578
- return this._httpGetMultipartImage(url, mediaTypes, byteRange, false, false, progressCallback, withCredentials);
1631
+ if (mediaTypes) {
1632
+ try {
1633
+ var commonMediaType = DICOMwebClient._getCommonMediaType(mediaTypes);
1634
+ if (commonMediaType === 'image/') {
1635
+ return this._httpGetMultipartImage(url, mediaTypes, byteRange, false, false, progressCallback, withCredentials);
1636
+ }
1637
+ } catch (e) {
1638
+ // No-op - this happens sometimes if trying to fetch the specific desired type but want to fallback to octet-stream
1639
+ }
1579
1640
  }
1580
- throw new Error("Media type ".concat(commonMediaType, " is not supported for retrieval of bulk data."));
1641
+
1642
+ // Just use the media types provided
1643
+ return this._httpGetMultipartApplicationOctetStream(url, mediaTypes, byteRange, false, progressCallback, withCredentials);
1581
1644
  }
1582
1645
  /**
1583
1646
  * Stores DICOM Instances.
@@ -1671,16 +1734,20 @@ var DICOMwebClient = /*#__PURE__*/function () {
1671
1734
  return fieldValueParts.join(', ');
1672
1735
  }
1673
1736
  /**
1674
- * Builds an accept header field value for HTTP GET multipart request
1675
- messages.
1676
- *
1677
- * @param {Object[]} mediaTypes - Acceptable media types
1678
- * @param {Object[]} supportedMediaTypes - Supported media types
1679
- * @private
1680
- */
1737
+ * Builds an accept header field value for HTTP GET multipart request
1738
+ * messages. Will throw an exception if no media types are found which are acceptable,
1739
+ * but will only log a verbose level message when types are specified which are
1740
+ * not acceptable. This allows requesting several types with having to know
1741
+ * whether they are all acceptable or not.
1742
+ *
1743
+ * @param {Object[]} mediaTypes - Acceptable media types
1744
+ * @param {Object[]} supportedMediaTypes - Supported media types
1745
+ * @private
1746
+ */
1681
1747
  }, {
1682
1748
  key: "_buildMultipartAcceptHeaderFieldValue",
1683
1749
  value: function _buildMultipartAcceptHeaderFieldValue(mediaTypes, supportedMediaTypes) {
1750
+ var _this2 = this;
1684
1751
  if (!Array.isArray(mediaTypes)) {
1685
1752
  throw new Error('Acceptable media types must be provided as an Array');
1686
1753
  }
@@ -1698,7 +1765,8 @@ var DICOMwebClient = /*#__PURE__*/function () {
1698
1765
  // to one or more Media Types
1699
1766
  if (!Object.values(supportedMediaTypes).flat(1).includes(mediaType)) {
1700
1767
  if (!mediaType.endsWith('/*') || !mediaType.endsWith('/')) {
1701
- throw new Error("Media type ".concat(mediaType, " is not supported for requested resource"));
1768
+ debugLog("Media type ".concat(mediaType, " is not supported for requested resource"));
1769
+ return;
1702
1770
  }
1703
1771
  }
1704
1772
  if (transferSyntaxUID) {
@@ -1722,10 +1790,16 @@ var DICOMwebClient = /*#__PURE__*/function () {
1722
1790
  fieldValue += "; transfer-syntax=".concat(transferSyntaxUID);
1723
1791
  }
1724
1792
  } else if (Array.isArray(supportedMediaTypes) && !supportedMediaTypes.includes(mediaType)) {
1725
- throw new Error("Media type ".concat(mediaType, " is not supported for requested resource"));
1793
+ if (_this2.verbose) {
1794
+ console.warn("Media type ".concat(mediaType, " is not supported for requested resource"));
1795
+ }
1796
+ return;
1726
1797
  }
1727
1798
  fieldValueParts.push(fieldValue);
1728
1799
  });
1800
+ if (!fieldValueParts.length) {
1801
+ throw new Error("No acceptable media types found among ".concat(JSON.stringify(mediaTypes)));
1802
+ }
1729
1803
  return fieldValueParts.join(', ');
1730
1804
  }
1731
1805
  /**
@@ -1770,7 +1844,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1770
1844
  return Array.from(types);
1771
1845
  }
1772
1846
  /**
1773
- * Gets common type of acceptable media types and asserts that only
1847
+ * Gets common base type of acceptable media types and asserts that only
1774
1848
  one type is specified. For example, ``("image/jpeg", "image/jp2")``
1775
1849
  will pass, but ``("image/jpeg", "video/mpeg2")`` will raise an
1776
1850
  exception.
@@ -1778,7 +1852,7 @@ var DICOMwebClient = /*#__PURE__*/function () {
1778
1852
  * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the
1779
1853
  corresponding transfer syntaxes
1780
1854
  * @private
1781
- * @returns {String[]} Common media type
1855
+ * @returns {String[]} Common media type, eg `image/` for the above example.
1782
1856
  */
1783
1857
  }, {
1784
1858
  key: "_getCommonMediaType",
@@ -954,7 +954,11 @@ const getDirectURL = (config, params) => {
954
954
  }
955
955
  if (!singlepart || singlepart !== true && singlepart.indexOf(fetchPart) === -1) {
956
956
  if (value.retrieveBulkData) {
957
- return value.retrieveBulkData().then(arr => {
957
+ // Try the specified retrieve type.
958
+ const options = {
959
+ mediaType: defaultType
960
+ };
961
+ return value.retrieveBulkData(options).then(arr => {
958
962
  value.DirectRetrieveURL = URL.createObjectURL(new Blob([arr], {
959
963
  type: defaultType
960
964
  }));
@@ -1318,10 +1322,13 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1318
1322
  // in which case it isn't necessary to re-read this.
1319
1323
  if (value && value.BulkDataURI && !value.Value) {
1320
1324
  // Provide a method to fetch bulkdata
1321
- value.retrieveBulkData = () => {
1325
+ value.retrieveBulkData = (options = {}) => {
1322
1326
  // handle the scenarios where bulkDataURI is relative path
1323
1327
  fixBulkDataURI(value, naturalized, dicomWebConfig);
1324
- const options = {
1328
+ const {
1329
+ mediaType
1330
+ } = options;
1331
+ const useOptions = {
1325
1332
  // The bulkdata fetches work with either multipart or
1326
1333
  // singlepart, so set multipart to false to let the server
1327
1334
  // decide which type to respond with.
@@ -1331,10 +1338,16 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
1331
1338
  // is relative - that isn't disallowed by DICOMweb, but
1332
1339
  // isn't well specified in the standard, but is needed in
1333
1340
  // any implementation that stores static copies of the metadata
1334
- StudyInstanceUID: naturalized.StudyInstanceUID
1341
+ StudyInstanceUID: naturalized.StudyInstanceUID,
1342
+ mediaTypes: mediaType ? [{
1343
+ mediaType
1344
+ }, {
1345
+ mediaType: 'application/octet-stream'
1346
+ }] : undefined,
1347
+ ...options
1335
1348
  };
1336
1349
  // Todo: this needs to be from wado dicom web client
1337
- return qidoDicomWebClient.retrieveBulkData(options).then(val => {
1350
+ return qidoDicomWebClient.retrieveBulkData(useOptions).then(val => {
1338
1351
  // There are DICOM PDF cases where the first ArrayBuffer in the array is
1339
1352
  // the bulk data and DICOM video cases where the second ArrayBuffer is
1340
1353
  // the bulk data. Here we play it safe and do a find.
@@ -2462,8 +2475,8 @@ function ViewerHeader({
2462
2475
  hotkeyDefinitions,
2463
2476
  hotkeyDefaults
2464
2477
  } = hotkeysManager;
2465
- const versionNumber = "3.8.0-beta.37";
2466
- const commitHash = "e8858f3eb55552f695af4a55980f9ae2e9af7291";
2478
+ const versionNumber = "3.8.0-beta.38";
2479
+ const commitHash = "98650302c7575f0aea386e32cfc4112c378035e6";
2467
2480
  const menuOptions = [{
2468
2481
  title: t('Header:About'),
2469
2482
  icon: 'info',
@@ -987,8 +987,8 @@ function WorkList({
987
987
  };
988
988
  });
989
989
  const hasStudies = numOfStudies > 0;
990
- const versionNumber = "3.8.0-beta.37";
991
- const commitHash = "e8858f3eb55552f695af4a55980f9ae2e9af7291";
990
+ const versionNumber = "3.8.0-beta.38";
991
+ const commitHash = "98650302c7575f0aea386e32cfc4112c378035e6";
992
992
  const menuOptions = [{
993
993
  title: t('Header:About'),
994
994
  icon: 'info',
@@ -6429,7 +6429,7 @@ const detectionOptions = {
6429
6429
  }
6430
6430
  });
6431
6431
  ;// CONCATENATED MODULE: ../../i18n/package.json
6432
- const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.36"}');
6432
+ const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.37"}');
6433
6433
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6434
6434
  const languagesMap = {
6435
6435
  ar: 'Arabic',
@@ -240632,7 +240632,7 @@ var selectOrdinal = function selectOrdinal() {
240632
240632
  /******/ // This function allow to reference async chunks
240633
240633
  /******/ __webpack_require__.u = (chunkId) => {
240634
240634
  /******/ // return url for filenames based on template
240635
- /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"2292b15e4b7b5d86fb84","18":"a7d5060eead13771e784","19":"dd04549651e5cf57faed","23":"9d989522a6e4fdcb9c72","95":"830304446bffa705883c","125":"df666cb677e5a8982157","170":"39279a2336dc1daf7ae8","181":"d2fe517852935b82368b","185":"9ef3f123beed05ecd804","199":"0a3a63176033a4de78bc","202":"0ca2f2479d2578f539b0","223":"d4ac6ef2cfe47a9c4afc","250":"ba94ff371388e395cd05","281":"be4a3502af6da1981a28","359":"e2368d3803386a523fdb","410":"d3746ff102c01e870023","417":"5c66801d23d0e98c00e6","451":"68a551a7d1746cf904cb","456":"9faecbda28164b9d242b","466":"1f21dd37d195915ed82e","471":"5809b10f75c8fc2f7167","483":"1ce43855923cbb2760ec","485":"5b6c33cc43d8f3470642","506":"2dc71df132ed0676a555","514":"e89082f91e5a7ef3e039","530":"f904325ef4195d69ac0e","579":"8c45043bf461a6808b54","613":"879cb01a1c9130dfcb36","661":"28ef6d8cd035876bd8e2","686":"62c827fe4f0d054c164e","687":"5fc1658132ba988e9ec1","738":"ccf62a32b25fdb42cc74","814":"8012c51e5c3cf651453e","822":"f5ae3f366ce742fb060a","886":"4496fc7fb83b8c897d20","965":"a189da0561277f4d46db"}[chunkId] + ".js";
240635
+ /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"8a996780d0884b4334b4","18":"a7d5060eead13771e784","19":"1c63b50b0be55c61aa79","23":"9d989522a6e4fdcb9c72","95":"830304446bffa705883c","125":"df666cb677e5a8982157","170":"05c8abe42777ead03b50","181":"d2fe517852935b82368b","185":"4692c8812d264295705d","199":"68e580bf83885aa03d89","202":"0ca2f2479d2578f539b0","223":"d4ac6ef2cfe47a9c4afc","250":"ba94ff371388e395cd05","281":"3e434534b5c804fa7e03","359":"2ec3543dc0f70b857347","410":"9610a46c0d056d47a979","417":"5c66801d23d0e98c00e6","451":"68a551a7d1746cf904cb","456":"04c13b51bcc475a2e612","466":"d3ecd660ba28480d0a48","471":"5809b10f75c8fc2f7167","483":"022ac6f8d0fe20e5f748","485":"5b6c33cc43d8f3470642","506":"2cbb19a3f09210440f04","514":"e89082f91e5a7ef3e039","530":"f904325ef4195d69ac0e","579":"8c45043bf461a6808b54","613":"02286a9826bf2f5c8f69","661":"949c984fe2f9f753b65c","686":"62c827fe4f0d054c164e","687":"ee93df40b6161afc2363","738":"9d258c3b701474029d9a","814":"11b6c8cda5f2aa865455","822":"f5ae3f366ce742fb060a","886":"4496fc7fb83b8c897d20","965":"ec77c2aa2ecb949f4c48"}[chunkId] + ".js";
240636
240636
  /******/ };
240637
240637
  /******/ })();
240638
240638
  /******/
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.9d88d2da0b6190c77cc2.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.a299c2b2bc8e26f3c114.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.2292b15e4b7b5d86fb84.js'},{'revision':null,'url':'/125.bundle.df666cb677e5a8982157.js'},{'revision':null,'url':'/170.bundle.39279a2336dc1daf7ae8.js'},{'revision':null,'url':'/181.bundle.d2fe517852935b82368b.js'},{'revision':'a04a2f233dc569826f5f6e21b65bc87b','url':'/181.css'},{'revision':null,'url':'/185.bundle.9ef3f123beed05ecd804.js'},{'revision':null,'url':'/19.bundle.dd04549651e5cf57faed.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/199.bundle.0a3a63176033a4de78bc.js'},{'revision':null,'url':'/202.bundle.0ca2f2479d2578f539b0.js'},{'revision':'d32549aa3716d55d525e59e31e2f6591','url':'/20fc4c659b85ccd2a9c0.wasm'},{'revision':null,'url':'/223.bundle.d4ac6ef2cfe47a9c4afc.js'},{'revision':null,'url':'/23.bundle.9d989522a6e4fdcb9c72.js'},{'revision':null,'url':'/250.bundle.ba94ff371388e395cd05.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.be4a3502af6da1981a28.js'},{'revision':null,'url':'/359.bundle.e2368d3803386a523fdb.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/410.bundle.d3746ff102c01e870023.js'},{'revision':null,'url':'/417.bundle.5c66801d23d0e98c00e6.js'},{'revision':null,'url':'/451.bundle.68a551a7d1746cf904cb.js'},{'revision':null,'url':'/456.bundle.9faecbda28164b9d242b.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/456.css'},{'revision':null,'url':'/466.bundle.1f21dd37d195915ed82e.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/466.css'},{'revision':null,'url':'/471.bundle.5809b10f75c8fc2f7167.js'},{'revision':null,'url':'/483.bundle.1ce43855923cbb2760ec.js'},{'revision':null,'url':'/485.bundle.5b6c33cc43d8f3470642.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.2dc71df132ed0676a555.js'},{'revision':null,'url':'/514.bundle.e89082f91e5a7ef3e039.js'},{'revision':null,'url':'/530.bundle.f904325ef4195d69ac0e.js'},{'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.879cb01a1c9130dfcb36.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/661.bundle.28ef6d8cd035876bd8e2.js'},{'revision':null,'url':'/686.bundle.62c827fe4f0d054c164e.js'},{'revision':null,'url':'/687.bundle.5fc1658132ba988e9ec1.js'},{'revision':null,'url':'/738.bundle.ccf62a32b25fdb42cc74.js'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/814.bundle.8012c51e5c3cf651453e.js'},{'revision':null,'url':'/822.bundle.f5ae3f366ce742fb060a.js'},{'revision':null,'url':'/886.bundle.4496fc7fb83b8c897d20.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':null,'url':'/95.bundle.830304446bffa705883c.js'},{'revision':null,'url':'/965.bundle.a189da0561277f4d46db.js'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.9d88d2da0b6190c77cc2.js'},{'revision':'56a285c8999c3867c6553e714d27dbb5','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':'26545f2fe5a0df854c8f9b8dc7386f31','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'884bd58a767459994b9c3c0c1deabb3c','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.a7d5060eead13771e784.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':'4a4eb235c8f3b998729c2747cf76c38c','url':'/index.html'},{'revision':'df70845c6ce2109b2bc2c1bf14bd65a0','url':'/index.worker.64c896c4316fcd506666.worker.js'},{'revision':'143490b997e10b23c1debfa35afeb9e4','url':'/index.worker.64c896c4316fcd506666.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':'af9346d3e597071ba9ee8cd32f8cc0ea','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
54
+ workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.8a996780d0884b4334b4.js'},{'revision':null,'url':'/125.bundle.df666cb677e5a8982157.js'},{'revision':null,'url':'/170.bundle.05c8abe42777ead03b50.js'},{'revision':null,'url':'/181.bundle.d2fe517852935b82368b.js'},{'revision':'a04a2f233dc569826f5f6e21b65bc87b','url':'/181.css'},{'revision':null,'url':'/185.bundle.4692c8812d264295705d.js'},{'revision':null,'url':'/19.bundle.1c63b50b0be55c61aa79.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/199.bundle.68e580bf83885aa03d89.js'},{'revision':null,'url':'/202.bundle.0ca2f2479d2578f539b0.js'},{'revision':'d32549aa3716d55d525e59e31e2f6591','url':'/20fc4c659b85ccd2a9c0.wasm'},{'revision':null,'url':'/223.bundle.d4ac6ef2cfe47a9c4afc.js'},{'revision':null,'url':'/23.bundle.9d989522a6e4fdcb9c72.js'},{'revision':null,'url':'/250.bundle.ba94ff371388e395cd05.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.3e434534b5c804fa7e03.js'},{'revision':null,'url':'/359.bundle.2ec3543dc0f70b857347.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/410.bundle.9610a46c0d056d47a979.js'},{'revision':null,'url':'/417.bundle.5c66801d23d0e98c00e6.js'},{'revision':null,'url':'/451.bundle.68a551a7d1746cf904cb.js'},{'revision':null,'url':'/456.bundle.04c13b51bcc475a2e612.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/456.css'},{'revision':null,'url':'/466.bundle.d3ecd660ba28480d0a48.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/466.css'},{'revision':null,'url':'/471.bundle.5809b10f75c8fc2f7167.js'},{'revision':null,'url':'/483.bundle.022ac6f8d0fe20e5f748.js'},{'revision':null,'url':'/485.bundle.5b6c33cc43d8f3470642.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.2cbb19a3f09210440f04.js'},{'revision':null,'url':'/514.bundle.e89082f91e5a7ef3e039.js'},{'revision':null,'url':'/530.bundle.f904325ef4195d69ac0e.js'},{'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.02286a9826bf2f5c8f69.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/661.bundle.949c984fe2f9f753b65c.js'},{'revision':null,'url':'/686.bundle.62c827fe4f0d054c164e.js'},{'revision':null,'url':'/687.bundle.ee93df40b6161afc2363.js'},{'revision':null,'url':'/738.bundle.9d258c3b701474029d9a.js'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/814.bundle.11b6c8cda5f2aa865455.js'},{'revision':null,'url':'/822.bundle.f5ae3f366ce742fb060a.js'},{'revision':null,'url':'/886.bundle.4496fc7fb83b8c897d20.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':null,'url':'/95.bundle.830304446bffa705883c.js'},{'revision':null,'url':'/965.bundle.ec77c2aa2ecb949f4c48.js'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':null,'url':'/app.bundle.a299c2b2bc8e26f3c114.js'},{'revision':'56a285c8999c3867c6553e714d27dbb5','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':'26545f2fe5a0df854c8f9b8dc7386f31','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'884bd58a767459994b9c3c0c1deabb3c','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.a7d5060eead13771e784.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':'2b13b471a0dab70e80f3d1aa8c41dbac','url':'/index.html'},{'revision':'df70845c6ce2109b2bc2c1bf14bd65a0','url':'/index.worker.64c896c4316fcd506666.worker.js'},{'revision':'143490b997e10b23c1debfa35afeb9e4','url':'/index.worker.64c896c4316fcd506666.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':'af9346d3e597071ba9ee8cd32f8cc0ea','url':'/serve.json'},{'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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/app",
3
- "version": "3.8.0-beta.37",
3
+ "version": "3.8.0-beta.38",
4
4
  "productVersion": "3.4.0",
5
5
  "description": "OHIF Viewer",
6
6
  "author": "OHIF Contributors",
@@ -52,22 +52,22 @@
52
52
  "@cornerstonejs/codec-openjpeg": "^1.2.2",
53
53
  "@cornerstonejs/codec-openjph": "^2.4.5",
54
54
  "@cornerstonejs/dicom-image-loader": "^1.40.3",
55
- "@ohif/core": "3.8.0-beta.37",
56
- "@ohif/extension-cornerstone": "3.8.0-beta.37",
57
- "@ohif/extension-cornerstone-dicom-rt": "3.8.0-beta.37",
58
- "@ohif/extension-cornerstone-dicom-seg": "3.8.0-beta.37",
59
- "@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.37",
60
- "@ohif/extension-default": "3.8.0-beta.37",
61
- "@ohif/extension-dicom-microscopy": "3.8.0-beta.37",
62
- "@ohif/extension-dicom-pdf": "3.8.0-beta.37",
63
- "@ohif/extension-dicom-video": "3.8.0-beta.37",
64
- "@ohif/extension-test": "3.8.0-beta.37",
65
- "@ohif/i18n": "3.8.0-beta.37",
66
- "@ohif/mode-basic-dev-mode": "3.8.0-beta.37",
67
- "@ohif/mode-longitudinal": "3.8.0-beta.37",
68
- "@ohif/mode-microscopy": "3.8.0-beta.37",
69
- "@ohif/mode-test": "3.8.0-beta.37",
70
- "@ohif/ui": "3.8.0-beta.37",
55
+ "@ohif/core": "3.8.0-beta.38",
56
+ "@ohif/extension-cornerstone": "3.8.0-beta.38",
57
+ "@ohif/extension-cornerstone-dicom-rt": "3.8.0-beta.38",
58
+ "@ohif/extension-cornerstone-dicom-seg": "3.8.0-beta.38",
59
+ "@ohif/extension-cornerstone-dicom-sr": "3.8.0-beta.38",
60
+ "@ohif/extension-default": "3.8.0-beta.38",
61
+ "@ohif/extension-dicom-microscopy": "3.8.0-beta.38",
62
+ "@ohif/extension-dicom-pdf": "3.8.0-beta.38",
63
+ "@ohif/extension-dicom-video": "3.8.0-beta.38",
64
+ "@ohif/extension-test": "3.8.0-beta.38",
65
+ "@ohif/i18n": "3.8.0-beta.38",
66
+ "@ohif/mode-basic-dev-mode": "3.8.0-beta.38",
67
+ "@ohif/mode-longitudinal": "3.8.0-beta.38",
68
+ "@ohif/mode-microscopy": "3.8.0-beta.38",
69
+ "@ohif/mode-test": "3.8.0-beta.38",
70
+ "@ohif/ui": "3.8.0-beta.38",
71
71
  "@types/react": "^17.0.38",
72
72
  "classnames": "^2.3.2",
73
73
  "core-js": "^3.16.1",
@@ -95,7 +95,7 @@
95
95
  "devDependencies": {
96
96
  "@babel/plugin-proposal-private-methods": "^7.18.6",
97
97
  "@percy/cypress": "^3.1.1",
98
- "cypress": "^13.2.0",
98
+ "cypress": "13.6.2",
99
99
  "cypress-file-upload": "^3.5.3",
100
100
  "glob": "^8.0.3",
101
101
  "identity-obj-proxy": "3.0.x",