@ohif/app 3.14.0-beta.4 → 3.14.0-beta.6

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 (26) hide show
  1. package/dist/{7248.bundle.6919a718dc2d7916.js → 7248.bundle.cb725f90fdcaaa98.js} +17 -1
  2. package/dist/{89.bundle.67f2919789bc2d62.js → 89.bundle.2585645860c98cc2.js} +52 -46
  3. package/dist/{app.bundle.cae100772c9eae23.js → app.bundle.c9cee93304900a58.js} +82 -4
  4. package/dist/index.html +1 -1
  5. package/dist/sw.js +1 -1
  6. package/package.json +5 -5
  7. /package/dist/{100.bundle.c2f36ed149bbc980.js → 100.bundle.f11be0a921cb4e85.js} +0 -0
  8. /package/dist/{1180.bundle.df81706e465740df.js → 1180.bundle.2d9ea30c57f234bb.js} +0 -0
  9. /package/dist/{1483.bundle.235a698c74fd24b3.js → 1483.bundle.067ff45a0bd998bf.js} +0 -0
  10. /package/dist/{1602.bundle.bb0d5eaa9bbbe942.js → 1602.bundle.e5d51e96cad709c8.js} +0 -0
  11. /package/dist/{2779.bundle.fa0ff7dfd445cff3.js → 2779.bundle.17128e8949bc4a2d.js} +0 -0
  12. /package/dist/{3500.bundle.50765d4835f8f3e3.js → 3500.bundle.86c37007114ef2a2.js} +0 -0
  13. /package/dist/{3760.bundle.eba736b0ed687ca5.js → 3760.bundle.16f9f50d52771ffc.js} +0 -0
  14. /package/dist/{4556.bundle.afe15cf044ec5226.js → 4556.bundle.2de24b5ad059eebb.js} +0 -0
  15. /package/dist/{4683.bundle.26d4b1274fea6880.js → 4683.bundle.e3a8f3c2d3236e66.js} +0 -0
  16. /package/dist/{5696.bundle.edcfbfc789283b9f.js → 5696.bundle.4393e87706f9d481.js} +0 -0
  17. /package/dist/{6749.bundle.6f0b8d2e08d5bba7.js → 6749.bundle.4410d977a2920c78.js} +0 -0
  18. /package/dist/{7499.bundle.9249385348abc8cb.js → 7499.bundle.555efeb709e90aa9.js} +0 -0
  19. /package/dist/{781.bundle.a948dcc12d7032f4.js → 781.bundle.efddbf6ed49a1d19.js} +0 -0
  20. /package/dist/{8423.bundle.9a44242bea5f03d0.js → 8423.bundle.d1d3cf2232b82988.js} +0 -0
  21. /package/dist/{8492.bundle.db05fa037156f477.js → 8492.bundle.39785564ef29e43d.js} +0 -0
  22. /package/dist/{8832.bundle.08c78ed50060ed15.js → 8832.bundle.12ea9c13b00a1504.js} +0 -0
  23. /package/dist/{9116.bundle.4f118da37e8ea6a9.js → 9116.bundle.23095a73825f3e48.js} +0 -0
  24. /package/dist/{9290.bundle.1f7a97778e12e1c2.js → 9290.bundle.77bef0d11caf6b43.js} +0 -0
  25. /package/dist/{9415.bundle.939a5f6b8750e591.js → 9415.bundle.eb42a435d1111e97.js} +0 -0
  26. /package/dist/{9437.bundle.f0d11daeb4442731.js → 9437.bundle.26d6aeb36856d782.js} +0 -0
@@ -542,7 +542,22 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager)
542
542
  } = instance;
543
543
  validateSameStudyUID(instance.StudyInstanceUID, instances);
544
544
  const is3DSR = SOPClassUID === sopClassDictionary.Comprehensive3DSR;
545
- const isImagingMeasurementReport = ConceptNameCodeSequence?.CodeValue === enums/* .CodeNameCodeSequenceValues.ImagingMeasurementReport */.n7.ImagingMeasurementReport;
545
+ const conceptIsImagingMeasurementReport = ConceptNameCodeSequence?.CodeValue === enums/* .CodeNameCodeSequenceValues.ImagingMeasurementReport */.n7.ImagingMeasurementReport;
546
+
547
+ // A report flagged as an Imaging Measurement Report but stored without its
548
+ // report body (no ContentSequence / (0040,A730)) cannot be parsed or rendered
549
+ // as one. Treat it as a plain SR so neither the loader nor the SR viewport
550
+ // takes the measurement path (which calls `.find` on the missing content and
551
+ // assumes at least one measurement exists), both of which would crash.
552
+ const hasReportContent = !!instance.ContentSequence;
553
+ const isImagingMeasurementReport = conceptIsImagingMeasurementReport && hasReportContent;
554
+
555
+ // Surface the empty report through the standard display set message list, so
556
+ // it is reported in the display set tray like any other display set problem.
557
+ const messages = new src/* .DisplaySetMessageList */.WZ();
558
+ if (!hasReportContent) {
559
+ messages.addMessage(src/* .DisplaySetMessage.CODES.MISSING_REPORT_CONTENT */.Ob.CODES.MISSING_REPORT_CONTENT);
560
+ }
546
561
  const displaySet = {
547
562
  Modality: 'SR',
548
563
  displaySetInstanceUID: src/* .utils.guid */.Wp.guid(),
@@ -561,6 +576,7 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager)
561
576
  isDerivedDisplaySet: true,
562
577
  isLoaded: false,
563
578
  isImagingMeasurementReport,
579
+ messages,
564
580
  sopClassUids,
565
581
  instance,
566
582
  predecessorImageId,
@@ -34095,7 +34095,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34095
34095
  const {
34096
34096
  userAuthenticationService
34097
34097
  } = servicesManager.services;
34098
- let dicomWebConfigCopy, qidoConfig, wadoConfig, qidoDicomWebClient, wadoDicomWebClient, getAuthorizationHeader, generateWadoHeader;
34098
+ let dicomWebConfigCopy, clientConfig, dicomWebClient, getAuthorizationHeader, generateWadoHeader;
34099
34099
  // Default to enabling bulk data retrieves, with no other customization as
34100
34100
  // this is part of hte base standard.
34101
34101
  dicomWebConfig.bulkDataURI ||= {
@@ -34126,7 +34126,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34126
34126
  // handle the scenarios where bulkDataURI is relative path
34127
34127
  fixBulkDataURI(value, instance, dicomWebConfig);
34128
34128
  // Provide a method to fetch bulkdata
34129
- value.retrieveBulkData = retrieveBulkData.bind(qidoDicomWebClient, value);
34129
+ value.retrieveBulkData = retrieveBulkData.bind(dicomWebClient, value);
34130
34130
  }
34131
34131
  }
34132
34132
  return naturalized;
@@ -34192,33 +34192,37 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34192
34192
  };
34193
34193
  }
34194
34194
  };
34195
- qidoConfig = {
34196
- url: dicomWebConfig.qidoRoot,
34197
- staticWado: dicomWebConfig.staticWado,
34198
- singlepart: dicomWebConfig.singlepart,
34199
- headers: userAuthenticationService.getAuthorizationHeader(),
34200
- errorInterceptor: src/* .errorHandler.getHTTPErrorHandler */.r_.getHTTPErrorHandler(),
34201
- supportsFuzzyMatching: dicomWebConfig.supportsFuzzyMatching
34202
- };
34203
- wadoConfig = {
34204
- url: dicomWebConfig.wadoRoot,
34195
+
34196
+ // Each service falls back to the other configured roots so that no URL is
34197
+ // left undefined when a deployment configures only one of them.
34198
+ const qidoURL = dicomWebConfig.qidoRoot ?? dicomWebConfig.wadoRoot;
34199
+ const wadoURL = dicomWebConfig.wadoRoot ?? dicomWebConfig.qidoRoot;
34200
+ const stowURL = dicomWebConfig.stowRoot ?? wadoURL;
34201
+ clientConfig = {
34202
+ url: wadoURL,
34205
34203
  staticWado: dicomWebConfig.staticWado,
34206
34204
  singlepart: dicomWebConfig.singlepart,
34207
34205
  headers: userAuthenticationService.getAuthorizationHeader(),
34208
34206
  errorInterceptor: src/* .errorHandler.getHTTPErrorHandler */.r_.getHTTPErrorHandler(),
34209
34207
  supportsFuzzyMatching: dicomWebConfig.supportsFuzzyMatching
34210
34208
  };
34211
-
34212
- // TODO -> Two clients sucks, but its better than 1000.
34213
- // TODO -> We'll need to merge auth later.
34214
- qidoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(qidoConfig) : new dicomweb_client_es/* .api.DICOMwebClient */.FH.DICOMwebClient(qidoConfig);
34215
- wadoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(wadoConfig) : new dicomweb_client_es/* .api.DICOMwebClient */.FH.DICOMwebClient(wadoConfig);
34209
+ dicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(clientConfig) : new dicomweb_client_es/* .api.DICOMwebClient */.FH.DICOMwebClient(clientConfig);
34210
+
34211
+ // dicomweb-client reads `qidoURL`, `wadoURL` and `stowURL` fresh on every
34212
+ // request, so a single client can serve all three services. Its
34213
+ // constructor can only differentiate them via the `*URLPrefix` options,
34214
+ // which are concatenated onto the single `baseURL` - OHIF's roots are
34215
+ // independent absolute URLs that need not even share a host, so the
34216
+ // prefixes cannot express them and the fields are assigned directly.
34217
+ dicomWebClient.qidoURL = qidoURL;
34218
+ dicomWebClient.wadoURL = wadoURL;
34219
+ dicomWebClient.stowURL = stowURL;
34216
34220
  },
34217
34221
  query: {
34218
34222
  studies: {
34219
34223
  mapParams: mapParams.bind(),
34220
34224
  search: async function (origParams) {
34221
- qidoDicomWebClient.headers = getAuthorizationHeader();
34225
+ dicomWebClient.headers = getAuthorizationHeader();
34222
34226
  const {
34223
34227
  studyInstanceUid,
34224
34228
  seriesInstanceUid,
@@ -34227,7 +34231,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34227
34231
  supportsFuzzyMatching: dicomWebConfig.supportsFuzzyMatching,
34228
34232
  supportsWildcard: dicomWebConfig.supportsWildcard
34229
34233
  }) || {};
34230
- const results = await search(qidoDicomWebClient, undefined, undefined, mappedParams);
34234
+ const results = await search(dicomWebClient, undefined, undefined, mappedParams);
34231
34235
  return processResults(results);
34232
34236
  },
34233
34237
  processResults: processResults.bind()
@@ -34235,16 +34239,16 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34235
34239
  series: {
34236
34240
  // mapParams: mapParams.bind(),
34237
34241
  search: async function (studyInstanceUid) {
34238
- qidoDicomWebClient.headers = getAuthorizationHeader();
34239
- const results = await seriesInStudy(qidoDicomWebClient, studyInstanceUid);
34242
+ dicomWebClient.headers = getAuthorizationHeader();
34243
+ const results = await seriesInStudy(dicomWebClient, studyInstanceUid);
34240
34244
  return processSeriesResults(results);
34241
34245
  }
34242
34246
  // processResults: processResults.bind(),
34243
34247
  },
34244
34248
  instances: {
34245
34249
  search: (studyInstanceUid, queryParameters) => {
34246
- qidoDicomWebClient.headers = getAuthorizationHeader();
34247
- return search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
34250
+ dicomWebClient.headers = getAuthorizationHeader();
34251
+ return search.call(undefined, dicomWebClient, studyInstanceUid, null, queryParameters);
34248
34252
  }
34249
34253
  }
34250
34254
  },
@@ -34267,7 +34271,7 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34267
34271
  imageId,
34268
34272
  config: dicomWebConfig,
34269
34273
  getAuthorizationHeader,
34270
- qidoDicomWebClient,
34274
+ qidoDicomWebClient: dicomWebClient,
34271
34275
  retrieve: this
34272
34276
  });
34273
34277
  },
@@ -34289,10 +34293,10 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34289
34293
  * Provide direct access to the dicom web client for certain use cases
34290
34294
  * where the dicom web client is used by an external library such as the
34291
34295
  * microscopy viewer.
34292
- * Note this instance only needs to support the wado queries, and may not
34293
- * support any QIDO or STOW operations.
34296
+ * The returned instance is configured for all three services, so QIDO and
34297
+ * STOW operations are also routed to the correct root.
34294
34298
  */
34295
- getWadoDicomWebClient: () => wadoDicomWebClient,
34299
+ getWadoDicomWebClient: () => dicomWebClient,
34296
34300
  /**
34297
34301
  * Best-effort prefetch of a whole multiframe instance as a single Part 10
34298
34302
  * object, registered into the Cornerstone3D NATURALIZED frame registry so
@@ -34331,8 +34335,8 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34331
34335
  // instance as an ArrayBuffer, unwrapping multipart/related transparently
34332
34336
  // (and returning the raw object for single-part responses).
34333
34337
  const resolvePart10 = async () => {
34334
- wadoDicomWebClient.headers = getAuthorizationHeader();
34335
- const result = await wadoDicomWebClient.retrieveInstance({
34338
+ dicomWebClient.headers = getAuthorizationHeader();
34339
+ const result = await dicomWebClient.retrieveInstance({
34336
34340
  studyInstanceUID: StudyInstanceUID,
34337
34341
  seriesInstanceUID: SeriesInstanceUID,
34338
34342
  sopInstanceUID: SOPInstanceUID
@@ -34371,13 +34375,13 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34371
34375
  StudyInstanceUID,
34372
34376
  BulkDataURI
34373
34377
  }) => {
34374
- qidoDicomWebClient.headers = getAuthorizationHeader();
34378
+ dicomWebClient.headers = getAuthorizationHeader();
34375
34379
  const options = {
34376
34380
  multipart: false,
34377
34381
  BulkDataURI,
34378
34382
  StudyInstanceUID
34379
34383
  };
34380
- return qidoDicomWebClient.retrieveBulkData(options).then(val => {
34384
+ return dicomWebClient.retrieveBulkData(options).then(val => {
34381
34385
  const ret = val && val[0] || undefined;
34382
34386
  return ret;
34383
34387
  });
@@ -34403,13 +34407,13 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34403
34407
  },
34404
34408
  store: {
34405
34409
  dicom: async (dataset, request, dicomDict) => {
34406
- wadoDicomWebClient.headers = getAuthorizationHeader();
34410
+ dicomWebClient.headers = getAuthorizationHeader();
34407
34411
  if (dataset instanceof ArrayBuffer) {
34408
34412
  const options = {
34409
34413
  datasets: [dataset],
34410
34414
  request
34411
34415
  };
34412
- await wadoDicomWebClient.storeInstances(options);
34416
+ await dicomWebClient.storeInstances(options);
34413
34417
  } else {
34414
34418
  let effectiveDicomDict = dicomDict;
34415
34419
  if (!dicomDict) {
@@ -34431,15 +34435,15 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34431
34435
  datasets: [part10Buffer],
34432
34436
  request
34433
34437
  };
34434
- await wadoDicomWebClient.storeInstances(options);
34438
+ await dicomWebClient.storeInstances(options);
34435
34439
  }
34436
34440
  }
34437
34441
  },
34438
34442
  _retrieveSeriesMetadataSync: async (StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient) => {
34439
34443
  const enableStudyLazyLoad = false;
34440
- wadoDicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
34444
+ dicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
34441
34445
  // data is all SOPInstanceUIDs
34442
- const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
34446
+ const data = await retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
34443
34447
 
34444
34448
  // first naturalize the data, attaching bulkdata retrieve methods so that
34445
34449
  // bulkdata-valued tags can be resolved (matching the lazy-load path).
@@ -34447,9 +34451,10 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34447
34451
 
34448
34452
  // Resolve the registered bulkdata tags (e.g. the Philips SUV Scale
34449
34453
  // Factor) delivered as bulkdata into plain numbers BEFORE
34450
- // INSTANCES_ADDED fires. retrieveBulkData is bound to qidoDicomWebClient,
34451
- // so refresh its auth headers first (matching every other qido op here).
34452
- qidoDicomWebClient.headers = getAuthorizationHeader();
34454
+ // INSTANCES_ADDED fires. retrieveBulkData is bound to the shared
34455
+ // dicomWebClient, so refresh its auth headers first (matching every other
34456
+ // qido op here).
34457
+ dicomWebClient.headers = getAuthorizationHeader();
34453
34458
  await src/* .utils.resolveBulkDataTags */.Wp.resolveBulkDataTags(naturalizedInstancesMetadata);
34454
34459
  const seriesSummaryMetadata = {};
34455
34460
  const instancesPerSeries = {};
@@ -34492,12 +34497,12 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34492
34497
  },
34493
34498
  _retrieveSeriesMetadataAsync: async (StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient = false, returnPromises = false) => {
34494
34499
  const enableStudyLazyLoad = true;
34495
- wadoDicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
34500
+ dicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
34496
34501
  // Get Series
34497
34502
  const {
34498
34503
  preLoadData: seriesSummaryMetadata,
34499
34504
  promises: seriesPromises
34500
- } = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
34505
+ } = await retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
34501
34506
 
34502
34507
  // Async load series, store as retrieved
34503
34508
  async function storeInstances(instances) {
@@ -34507,9 +34512,10 @@ function createDicomWebApi(dicomWebConfig, servicesManager) {
34507
34512
  // Factor) that the server delivered as bulkdata into plain numbers
34508
34513
  // BEFORE INSTANCES_ADDED fires, so SUV scaling and every other
34509
34514
  // subscriber read a fully-resolved value rather than an unresolved
34510
- // { BulkDataURI }. retrieveBulkData is bound to qidoDicomWebClient, so
34511
- // refresh its auth headers first (matching every other qido op here).
34512
- qidoDicomWebClient.headers = getAuthorizationHeader();
34515
+ // { BulkDataURI }. retrieveBulkData is bound to the shared
34516
+ // dicomWebClient, so refresh its auth headers first (matching every
34517
+ // other qido op here).
34518
+ dicomWebClient.headers = getAuthorizationHeader();
34513
34519
  await src/* .utils.resolveBulkDataTags */.Wp.resolveBulkDataTags(naturalizedInstances);
34514
34520
 
34515
34521
  // Adding instanceMetadata to OHIF MetadataProvider
@@ -42797,8 +42803,8 @@ function AboutModalDefault() {
42797
42803
  name
42798
42804
  } = (0,browser_detect_es5/* ["default"] */.A)();
42799
42805
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
42800
- const versionNumber = "3.14.0-beta.4";
42801
- const commitHash = "936c495e30510fe3c04151d0961e671c439d2910";
42806
+ const versionNumber = "3.14.0-beta.6";
42807
+ const commitHash = "f6d84690bfbdef11fb1b8104f1a62539a0e946a1";
42802
42808
  const [main, beta] = versionNumber.split('-');
42803
42809
  return /*#__PURE__*/react.createElement(ui_next_src/* .AboutModal */.VTU, {
42804
42810
  className: "w-[400px]"
@@ -57748,7 +57748,8 @@ DisplaySetMessage.CODES = {
57748
57748
  INCONSISTENT_POSITION_INFORMATION: 12,
57749
57749
  UNSUPPORTED_DISPLAYSET: 13,
57750
57750
  UNSUPPORTED_SOP_CLASS_UID: 14,
57751
- MISSING_SOP_CLASS_UID: 15
57751
+ MISSING_SOP_CLASS_UID: 15,
57752
+ MISSING_REPORT_CONTENT: 16
57752
57753
  };
57753
57754
  class DisplaySetMessageList {
57754
57755
  constructor() {
@@ -72310,6 +72311,10 @@ __webpack_require__.d(__webpack_exports__, {
72310
72311
  // TODO: Is 10% a reasonable spacingTolerance for spacing?
72311
72312
  const spacingTolerance = 0.2;
72312
72313
  const iopTolerance = 0.01;
72314
+ // Real slice spacing is on the order of millimetres; a set of frames whose
72315
+ // positions all fall within this distance occupies a single location and has no
72316
+ // through-plane extent to reconstruct (e.g. a cine / multi-time series).
72317
+ const zeroExtentTolerance = 0.01;
72313
72318
 
72314
72319
  /**
72315
72320
  * Checks if a series is reconstructable to a 3D volume.
@@ -72398,6 +72403,17 @@ function processMultiframe(multiFrameInstance) {
72398
72403
  };
72399
72404
  }
72400
72405
 
72406
+ // A multi-frame cine / multi-time series is many frames acquired at a single
72407
+ // location (every frame shares one ImagePositionPatient), so it has no
72408
+ // through-plane extent: building a volume yields zero slice spacing that
72409
+ // renders black in every MPR plane. Treat it as non-reconstructable rather
72410
+ // than a degenerate volume.
72411
+ if (hasSingleSpatialLocation(getPerFramePositions(multiFrameInstance))) {
72412
+ return {
72413
+ value: false
72414
+ };
72415
+ }
72416
+
72401
72417
  // TODO - check spacing consistency
72402
72418
  return {
72403
72419
  value: true
@@ -72430,6 +72446,16 @@ function processSingleframe(instances) {
72430
72446
  };
72431
72447
  }
72432
72448
  }
72449
+
72450
+ // Many single-frame instances acquired at one location (a cine / multi-time
72451
+ // series) share one ImagePositionPatient and have no through-plane extent, so
72452
+ // they can't form a volume. Guard it explicitly instead of relying on the
72453
+ // degenerate zero-spacing path below.
72454
+ if (hasSingleSpatialLocation(instances.map(instance => (0,_toNumber__rspack_import_0/* ["default"] */.A)(instance.ImagePositionPatient)))) {
72455
+ return {
72456
+ value: false
72457
+ };
72458
+ }
72433
72459
  let missingFrames = 0;
72434
72460
  let averageSpacingBetweenFrames;
72435
72461
 
@@ -72507,6 +72533,58 @@ function _getSpacingIssue(spacing, averageSpacing) {
72507
72533
  function _getPerpendicularDistance(a, b) {
72508
72534
  return Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2) + Math.pow(a[2] - b[2], 2));
72509
72535
  }
72536
+ function isValidImagePosition(position) {
72537
+ return Array.isArray(position) && position.length === 3 && position.every(Number.isFinite);
72538
+ }
72539
+
72540
+ /**
72541
+ * True when two or more frame positions are known and all collapse to one
72542
+ * spatial location, so the series has no through-plane extent to reconstruct.
72543
+ * Returns false whenever this can't be determined confidently (fewer than two
72544
+ * valid positions), so a genuine volume is never wrongly blocked.
72545
+ *
72546
+ * @param {Array} positions The `ImagePositionPatient` of each frame.
72547
+ */
72548
+ function hasSingleSpatialLocation(positions) {
72549
+ const validPositions = positions.filter(isValidImagePosition);
72550
+ if (validPositions.length < 2) {
72551
+ return false;
72552
+ }
72553
+ const origin = validPositions[0];
72554
+ return validPositions.every(position => _getPerpendicularDistance(position, origin) < zeroExtentTolerance);
72555
+ }
72556
+
72557
+ /**
72558
+ * The `ImagePositionPatient` of every frame of a multi-frame instance.
72559
+ *
72560
+ * Prefers the per-frame functional groups, but only once they carry the two
72561
+ * valid positions `hasSingleSpatialLocation` needs to decide anything. Below
72562
+ * that, falls back to the *shared* functional group broadcast to the frame
72563
+ * count: a single-location cine has one constant position, which the more
72564
+ * common DICOM encoding stores in `SharedFunctionalGroupsSequence` rather than
72565
+ * repeating it per frame. Without this fallback a per-frame sequence that is
72566
+ * absent — or present but too sparse to judge — would hide the constant
72567
+ * position, so the single-location check would never fire and the degenerate
72568
+ * volume would be wrongly reported reconstructable. Empty when neither source
72569
+ * carries enough to inspect confidently.
72570
+ *
72571
+ * @param {Object} multiFrameInstance
72572
+ */
72573
+ function getPerFramePositions(multiFrameInstance) {
72574
+ const perFrameSequence = multiFrameInstance.PerFrameFunctionalGroupsSequence;
72575
+ if (Array.isArray(perFrameSequence)) {
72576
+ const perFramePositions = perFrameSequence.map(group => (0,_toNumber__rspack_import_0/* ["default"] */.A)(group?.PlanePositionSequence?.[0]?.ImagePositionPatient));
72577
+ if (perFramePositions.filter(isValidImagePosition).length >= 2) {
72578
+ return perFramePositions;
72579
+ }
72580
+ }
72581
+ const sharedPosition = (0,_toNumber__rspack_import_0/* ["default"] */.A)(multiFrameInstance.SharedFunctionalGroupsSequence?.[0]?.PlanePositionSequence?.[0]?.ImagePositionPatient);
72582
+ if (!isValidImagePosition(sharedPosition)) {
72583
+ return [];
72584
+ }
72585
+ const frameCount = Number(multiFrameInstance.NumberOfFrames) || perFrameSequence?.length || 0;
72586
+ return new Array(frameCount).fill(sharedPosition);
72587
+ }
72510
72588
  const constructableModalities = ['MR', 'CT', 'PT', 'NM'];
72511
72589
  const reconstructionIssues = {
72512
72590
  MISSING_FRAMES: 'missingframes',
@@ -74096,7 +74174,7 @@ const detectionOptions = {
74096
74174
  }
74097
74175
  });
74098
74176
  ;// CONCATENATED MODULE: ../../i18n/package.json
74099
- var package_namespaceObject = JSON.parse('{"rE":"3.14.0-beta.3"}')
74177
+ var package_namespaceObject = JSON.parse('{"rE":"3.14.0-beta.5"}')
74100
74178
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
74101
74179
  const languagesMap = {
74102
74180
  ar: 'Arabic',
@@ -74419,7 +74497,7 @@ var en_US_UserPreferencesModal_namespaceObject = JSON.parse('{"Cancel":"$t(Butto
74419
74497
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/ViewportDownloadForm.json
74420
74498
  var en_US_ViewportDownloadForm_namespaceObject = JSON.parse('{"emptyFilenameError":"The file name cannot be empty.","fileType":"File Type","filename":"File Name","formTitle":"Please specify the dimensions, filename, and desired type for the output image.","imageHeight":"Image height (px)","imagePreview":"Image Preview","imageWidth":"Image width (px)","keepAspectRatio":"Keep aspect ratio","loadingPreview":"Loading Image Preview...","minHeightError":"The minimum valid height is 100px.","minWidthError":"The minimum valid width is 100px.","showAnnotations":"Show Annotations"}')
74421
74499
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/Messages.json
74422
- var en_US_Messages_namespaceObject = JSON.parse('{"Display Set Messages":"Display Set Messages","1":"No valid instances found in series.","2":"Display set has missing position information.","3":"Display set is not a reconstructable 3D volume.","4":"Multi frame display sets do not have pixel measurement information.","5":"Multi frame display sets do not have orientation information.","6":"Multi frame display sets do not have position information.","7":"Display set has missing frames.","8":"Display set has irregular spacing.","9":"Display set has inconsistent dimensions between frames.","10":"Display set has frames with inconsistent number of components.","11":"Display set has frames with inconsistent orientations.","12":"Display set has inconsistent position information.","13":"Unsupported display set.","14":"SOP Class UID {{ sopClassUid }} is not supported.","15":"Display Set is missing a SOP Class UID. Please check the file."}')
74500
+ var en_US_Messages_namespaceObject = JSON.parse('{"Display Set Messages":"Display Set Messages","1":"No valid instances found in series.","2":"Display set has missing position information.","3":"Display set is not a reconstructable 3D volume.","4":"Multi frame display sets do not have pixel measurement information.","5":"Multi frame display sets do not have orientation information.","6":"Multi frame display sets do not have position information.","7":"Display set has missing frames.","8":"Display set has irregular spacing.","9":"Display set has inconsistent dimensions between frames.","10":"Display set has frames with inconsistent number of components.","11":"Display set has frames with inconsistent orientations.","12":"Display set has inconsistent position information.","13":"Unsupported display set.","14":"SOP Class UID {{ sopClassUid }} is not supported.","15":"Display Set is missing a SOP Class UID. Please check the file.","16":"Report has no content to display."}')
74423
74501
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/WindowLevelActionMenu.json
74424
74502
  var en_US_WindowLevelActionMenu_namespaceObject = JSON.parse('{"Back to Display Options":"Back to Display Options","Modality Presets":"Modality Presets","Modality Window Presets":"Modality Window Presets","Display Color bar":"Display Color bar","Color LUT":"Color LUT","Preview in viewport":"Preview in viewport","Grayscale":"Grayscale","Rendering Options":"Rendering Options","Rendering Presets":"Rendering Presets","Search all":"Search all","Quality":"Quality","Lighting":"Lighting","Shade":"Shade","Ambient":"Ambient","Diffuse":"Diffuse","Specular":"Specular","Shift":"Shift"}')
74425
74503
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/CaptureViewportModal.json
@@ -458278,7 +458356,7 @@ __webpack_require__.u = (chunkId) => {
458278
458356
  // return url for filenames not based on template
458279
458357
 
458280
458358
  // return url for filenames based on template
458281
- return "" + ({1644: "interpolation",6915: "histogram-worker",8547: "compute",8781: "polySeg",}[chunkId] || chunkId) + ".bundle." + {100: "c2f36ed149bbc980",1180: "df81706e465740df",1206: "786e5b556f903028",1229: "f721ec472f3d61bf",1483: "235a698c74fd24b3",1602: "bb0d5eaa9bbbe942",1644: "fa54018d8628f8c0",1673: "76779c7722e8c6c0",2623: "44c0c8ec6fa40d03",2779: "fa0ff7dfd445cff3",3500: "50765d4835f8f3e3",3760: "eba736b0ed687ca5",4556: "afe15cf044ec5226",4683: "26d4b1274fea6880",5189: "ae2e6c3b91f526f7",5302: "d6194babac4a763e",5406: "4dcfa7c697973300",5448: "ac180bf858959dd5",5696: "edcfbfc789283b9f",5731: "694bce33e168bf29",5910: "f969465957013c3e",6489: "95cb243641a61a2f",6495: "8e8306fedff44999",6749: "6f0b8d2e08d5bba7",6915: "ec5f0cf05ce3909c",6938: "34415aaeea5935b3",7248: "6919a718dc2d7916",7463: "40668aa8d083d077",7499: "9249385348abc8cb",781: "a948dcc12d7032f4",8097: "8ae6404ba94890a0",8423: "9a44242bea5f03d0",8478: "4520037e6185b95f",8492: "db05fa037156f477",8547: "0fc3a3ee85296cf2",8781: "2c5892e4c5a6bdd5",8832: "08c78ed50060ed15",89: "67f2919789bc2d62",899: "3ea5c8d021b1e60d",9068: "e1d5946c370fd4ee",9116: "4f118da37e8ea6a9",9290: "1f7a97778e12e1c2",9383: "40008913697b48b8",9415: "939a5f6b8750e591",9437: "f0d11daeb4442731",}[chunkId] + ".js"
458359
+ return "" + ({1644: "interpolation",6915: "histogram-worker",8547: "compute",8781: "polySeg",}[chunkId] || chunkId) + ".bundle." + {100: "f11be0a921cb4e85",1180: "2d9ea30c57f234bb",1206: "786e5b556f903028",1229: "f721ec472f3d61bf",1483: "067ff45a0bd998bf",1602: "e5d51e96cad709c8",1644: "fa54018d8628f8c0",1673: "76779c7722e8c6c0",2623: "44c0c8ec6fa40d03",2779: "17128e8949bc4a2d",3500: "86c37007114ef2a2",3760: "16f9f50d52771ffc",4556: "2de24b5ad059eebb",4683: "e3a8f3c2d3236e66",5189: "ae2e6c3b91f526f7",5302: "d6194babac4a763e",5406: "4dcfa7c697973300",5448: "ac180bf858959dd5",5696: "4393e87706f9d481",5731: "694bce33e168bf29",5910: "f969465957013c3e",6489: "95cb243641a61a2f",6495: "8e8306fedff44999",6749: "4410d977a2920c78",6915: "ec5f0cf05ce3909c",6938: "34415aaeea5935b3",7248: "cb725f90fdcaaa98",7463: "40668aa8d083d077",7499: "555efeb709e90aa9",781: "efddbf6ed49a1d19",8097: "8ae6404ba94890a0",8423: "d1d3cf2232b82988",8478: "4520037e6185b95f",8492: "39785564ef29e43d",8547: "0fc3a3ee85296cf2",8781: "2c5892e4c5a6bdd5",8832: "12ea9c13b00a1504",89: "2585645860c98cc2",899: "3ea5c8d021b1e60d",9068: "e1d5946c370fd4ee",9116: "23095a73825f3e48",9290: "77bef0d11caf6b43",9383: "40008913697b48b8",9415: "eb42a435d1111e97",9437: "26d6aeb36856d782",}[chunkId] + ".js"
458282
458360
  }
458283
458361
  })();
458284
458362
  // webpack/runtime/get mini-css chunk filename
package/dist/index.html CHANGED
@@ -1,3 +1,3 @@
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,maximum-scale=1.0,user-scalable=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"),window.PUBLIC_URL="/"</script><link rel="manifest" href="/manifest.json"><link rel="icon shortcut" 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><script>function browserImportFunction(n){return import(n)}window.PUBLIC_URL="/"</script><script defer src="/app.bundle.cae100772c9eae23.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript> You need to enable JavaScript to run this app. </noscript>
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,maximum-scale=1.0,user-scalable=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"),window.PUBLIC_URL="/"</script><link rel="manifest" href="/manifest.json"><link rel="icon shortcut" 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><script>function browserImportFunction(n){return import(n)}window.PUBLIC_URL="/"</script><script defer src="/app.bundle.c9cee93304900a58.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript> You need to enable JavaScript to run this app. </noscript>
2
2
  <div id="react-portal"></div>
3
3
  <div id="root"></div></body></html>
package/dist/sw.js CHANGED
@@ -62,7 +62,7 @@ self.addEventListener('message', event => {
62
62
  }
63
63
  });
64
64
 
65
- workbox.precaching.precacheAndRoute([{"url":"/781.css","revision":null},{"url":"/8423.bundle.9a44242bea5f03d0.js","revision":null},{"url":"/89.bundle.67f2919789bc2d62.js","revision":null},{"url":"/dicom-microscopy-viewer/dicomiccwasm.wasm","revision":null},{"url":"/assets/apple-touch-icon-57x57.png","revision":null},{"url":"/assets/apple-touch-icon-114x114.png","revision":null},{"url":"/assets/apple-touch-icon-120x120.png","revision":null},{"url":"/ort/ort.training.wasm.min.js","revision":null},{"url":"/dicom-microscopy-viewer/openjpegwasm_decode.wasm","revision":null},{"url":"/assets/images/VolumeRendering.png","revision":null},{"url":"/assets/images/CT-Bone.png","revision":null},{"url":"/assets/android-chrome-48x48.png","revision":null},{"url":"/2779.bundle.fa0ff7dfd445cff3.js","revision":null},{"url":"/3833.css","revision":null},{"url":"/1206.bundle.786e5b556f903028.js","revision":null},{"url":"/8492.css","revision":null},{"url":"/8097.bundle.8ae6404ba94890a0.js","revision":null},{"url":"/assets/images/CT-Chest-Vessels.png","revision":null},{"url":"/assets/images/CT-Coronary-Arteries-3.png","revision":null},{"url":"/9383.bundle.40008913697b48b8.js","revision":null},{"url":"/8423.css","revision":null},{"url":"/assets/android-chrome-192x192.png","revision":null},{"url":"/5910.css","revision":null},{"url":"/assets/apple-touch-icon-76x76.png","revision":null},{"url":"/assets/apple-touch-startup-image-1536x2008.png","revision":null},{"url":"/ort/ort.wasm.min.js","revision":null},{"url":"/ort/ort.webgl.min.js","revision":null},{"url":"/1602.css","revision":null},{"url":"/assets/images/DTI-FA-Brain.png","revision":null},{"url":"/assets/apple-touch-startup-image-1496x2048.png","revision":null},{"url":"/assets/mstile-310x310.png","revision":null},{"url":"/3500.bundle.50765d4835f8f3e3.js","revision":null},{"url":"/3760.bundle.eba736b0ed687ca5.js","revision":null},{"url":"/assets/android-chrome-96x96.png","revision":null},{"url":"/assets/manifest.webapp","revision":null},{"url":"/assets/apple-touch-icon-72x72.png","revision":null},{"url":"/customizations/segmentation/uncompressed.jsonc","revision":null},{"url":"/ort/ort.all.js","revision":null},{"url":"/ort/esm/ort.wasm.min.js","revision":null},{"url":"/ort/ort-wasm-simd-threaded.wasm","revision":null},{"url":"/assets/images/CT-AAA.png","revision":null},{"url":"/assets/yandex-browser-50x50.png","revision":null},{"url":"/assets/images/CT-AAA2.png","revision":null},{"url":"/assets/android-chrome-512x512.png","revision":null},{"url":"/6758.bundle.b174316beaf1a9a5.js","revision":null},{"url":"/ort/cjs/ort.webgpu.min.js","revision":null},{"url":"/assets/images/CT-Cardiac3.png","revision":null},{"url":"/assets/images/CT-Chest-Contrast-Enhanced.png","revision":null},{"url":"/_headers","revision":null},{"url":"/2623.css","revision":null},{"url":"/assets/apple-touch-icon-152x152.png","revision":null},{"url":"/assets/apple-touch-icon-167x167.png","revision":null},{"url":"/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm","revision":null},{"url":"/assets/apple-touch-startup-image-320x460.png","revision":null},{"url":"/manifest.json","revision":null},{"url":"/ort/ort-wasm-simd.jsep.wasm","revision":null},{"url":"/a34f9d1faa5f3315.woff2","revision":null},{"url":"/serve.json","revision":null},{"url":"/ort/cjs/ort.wasm-core.min.js","revision":null},{"url":"/assets/images/CT-Bones.png","revision":null},{"url":"/assets/apple-touch-icon-144x144.png","revision":null},{"url":"/assets/apple-touch-icon-180x180.png","revision":null},{"url":"/assets/apple-touch-icon-1024x1024.png","revision":null},{"url":"/assets/images/CT-Cropped-Volume-Bone.png","revision":null},{"url":"/5406.bundle.4dcfa7c697973300.js","revision":null},{"url":"/8492.bundle.db05fa037156f477.js","revision":null},{"url":"/ort/esm/ort.min.js","revision":null},{"url":"/dicom-microscopy-viewer/charlswasm_decode.wasm","revision":null},{"url":"/_redirects","revision":null},{"url":"/index.html","revision":null},{"url":"/assets/firefox_app_60x60.png","revision":null},{"url":"/assets/mstile-144x144.png","revision":null},{"url":"/9068.bundle.e1d5946c370fd4ee.js","revision":null},{"url":"/assets/apple-touch-startup-image-748x1024.png","revision":null},{"url":"/9437.bundle.f0d11daeb4442731.js","revision":null},{"url":"/3552.bundle.da459dba452ba7a2.js","revision":null},{"url":"/899.bundle.3ea5c8d021b1e60d.js","revision":null},{"url":"/4683.bundle.26d4b1274fea6880.js","revision":null},{"url":"/assets/apple-touch-startup-image-750x1294.png","revision":null},{"url":"/5731.bundle.694bce33e168bf29.js","revision":null},{"url":"/100.bundle.c2f36ed149bbc980.js","revision":null},{"url":"/assets/favicon.ico","revision":null},{"url":"/assets/apple-touch-icon-60x60.png","revision":null},{"url":"/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js","revision":null},{"url":"/ohif-logo.svg","revision":null},{"url":"/ort/ort.all.min.js","revision":null},{"url":"/7841.bundle.58ac0fd73e8a784f.js","revision":null},{"url":"/5302.bundle.d6194babac4a763e.js","revision":null},{"url":"/37fa160cc3a47cfd.wasm","revision":null},{"url":"/ort/ort-training-wasm-simd.wasm","revision":null},{"url":"/2493.bundle.c4af70e46357151f.js","revision":null},{"url":"/assets/images/CT-Air.png","revision":null},{"url":"/776f756dd939124e.wasm","revision":null},{"url":"/9116.bundle.4f118da37e8ea6a9.js","revision":null},{"url":"/7964.bundle.b72dd7b70fa710fb.js","revision":null},{"url":"/customizations/index.html","revision":null},{"url":"/polySeg.bundle.2c5892e4c5a6bdd5.js","revision":null},{"url":"/assets/apple-touch-startup-image-1242x2148.png","revision":null},{"url":"/ort/ort.node.min.js","revision":null},{"url":"/customizations/segmentation/segmentationAnnotationTools.jsonc","revision":null},{"url":"/assets/apple-touch-icon.png","revision":null},{"url":"/6938.bundle.34415aaeea5935b3.js","revision":null},{"url":"/es6-shim.min.js","revision":null},{"url":"/google.js","revision":null},{"url":"/ort/cjs/ort.min.js","revision":null},{"url":"/assets/images/CT-Cardiac2.png","revision":null},{"url":"/assets/images/MR-Angio.png","revision":null},{"url":"/app.bundle.css","revision":null},{"url":"/ort/esm/ort.training.wasm.min.js","revision":null},{"url":"/assets/android-chrome-36x36.png","revision":null},{"url":"/ort/esm/ort.all.min.js","revision":null},{"url":"/0ddf166f7a343eda.wasm","revision":null},{"url":"/assets/firefox_app_128x128.png","revision":null},{"url":"/assets/images/CT-Muscle.png","revision":null},{"url":"/customizations/tools/smoothRotate.jsonc","revision":null},{"url":"/assets/images/CT-Soft-Tissue.png","revision":null},{"url":"/histogram-worker.bundle.ec5f0cf05ce3909c.js","revision":null},{"url":"/assets/images/CT-Lung.png","revision":null},{"url":"/5130ccb17e3f3f5b.wasm","revision":null},{"url":"/assets/mstile-310x150.png","revision":null},{"url":"/9270.bundle.c84785d8c6dbcffd.js","revision":null},{"url":"/ort/cjs/ort.training.wasm.min.js","revision":null},{"url":"/5696.bundle.edcfbfc789283b9f.js","revision":null},{"url":"/ohif-logo-light.svg","revision":null},{"url":"/ort/cjs/ort.webgl.min.js","revision":null},{"url":"/136.bundle.b948da0438a0a660.js","revision":null},{"url":"/customizations/veterinary/veterinaryOverlay.jsonc","revision":null},{"url":"/compute.bundle.0fc3a3ee85296cf2.js","revision":null},{"url":"/assets/apple-touch-startup-image-1182x2208.png","revision":null},{"url":"/ort/ort-wasm-threaded.wasm","revision":null},{"url":"/9415.bundle.939a5f6b8750e591.js","revision":null},{"url":"/ort/esm/ort.webgpu.min.js","revision":null},{"url":"/2299.bundle.2375af8b16a1702e.js","revision":null},{"url":"/ort/cjs/package.json","revision":null},{"url":"/init-service-worker.js","revision":null},{"url":"/ort/cjs/ort.wasm.min.js","revision":null},{"url":"/assets/images/CT-Fat.png","revision":null},{"url":"/assets/images/MR-T2-Brain.png","revision":null},{"url":"/341.bundle.9b269d53a3b9875b.js","revision":null},{"url":"/5060.bundle.09456fba37e490bf.js","revision":null},{"url":"/ort/ort-wasm-simd.wasm","revision":null},{"url":"/assets/favicon-32x32.png","revision":null},{"url":"/customizations/segmentation/binary.jsonc","revision":null},{"url":"/1673.bundle.76779c7722e8c6c0.js","revision":null},{"url":"/assets/apple-touch-startup-image-640x920.png","revision":null},{"url":"/9415.css","revision":null},{"url":"/6749.bundle.6f0b8d2e08d5bba7.js","revision":null},{"url":"/assets/images/CT-Coronary-Arteries.png","revision":null},{"url":"/4712.bundle.5b97e12639f3c299.js","revision":null},{"url":"/ort/esm/ort.webgl.min.js","revision":null},{"url":"/app-config.js","revision":null},{"url":"/customizations/tools/ctPresets.jsonc","revision":null},{"url":"/assets/android-chrome-384x384.png","revision":null},{"url":"/assets/coast-228x228.png","revision":null},{"url":"/5189.bundle.ae2e6c3b91f526f7.js","revision":null},{"url":"/assets/mstile-70x70.png","revision":null},{"url":"/ort/cjs/ort.all.min.js","revision":null},{"url":"/781.bundle.a948dcc12d7032f4.js","revision":null},{"url":"/ort/esm/package.json","revision":null},{"url":"/4556.bundle.afe15cf044ec5226.js","revision":null},{"url":"/976.css","revision":null},{"url":"/1229.bundle.f721ec472f3d61bf.js","revision":null},{"url":"/dicom-microscopy-viewer/dataLoader.worker.min.js","revision":null},{"url":"/6214.css","revision":null},{"url":"/12.bundle.b4688cdbdd856b75.js","revision":null},{"url":"/app.bundle.cae100772c9eae23.js","revision":null},{"url":"/8832.bundle.08c78ed50060ed15.js","revision":null},{"url":"/8478.bundle.4520037e6185b95f.js","revision":null},{"url":"/1602.bundle.bb0d5eaa9bbbe942.js","revision":null},{"url":"/assets/favicon-16x16.png","revision":null},{"url":"/interpolation.bundle.fa54018d8628f8c0.js","revision":null},{"url":"/ort/ort.wasm-core.min.js","revision":null},{"url":"/assets/images/MR-MIP.png","revision":null},{"url":"/7248.bundle.6919a718dc2d7916.js","revision":null},{"url":"/assets/images/CT-Liver-Vasculature.png","revision":null},{"url":"/5910.bundle.f969465957013c3e.js","revision":null},{"url":"/assets/mstile-150x150.png","revision":null},{"url":"/customizations/veterinary/veterinary.jsonc","revision":null},{"url":"/assets/images/CT-Cardiac.png","revision":null},{"url":"/assets/firefox_app_512x512.png","revision":null},{"url":"/5189.css","revision":null},{"url":"/3332.bundle.ce66b6ddb60945a7.js","revision":null},{"url":"/assets/images/CT-Pulmonary-Arteries.png","revision":null},{"url":"/ort/ort.js","revision":null},{"url":"/customizations/segmentation/segmentationEditing.jsonc","revision":null},{"url":"/assets/images/CT-MIP.png","revision":null},{"url":"/ort/ort-wasm-simd-threaded.jsep.wasm","revision":null},{"url":"/7463.css","revision":null},{"url":"/34b1e6b1deb5828e.wasm","revision":null},{"url":"/assets/images/MR-Default.png","revision":null},{"url":"/assets/android-chrome-144x144.png","revision":null},{"url":"/assets/android-chrome-256x256.png","revision":null},{"url":"/assets/browserconfig.xml","revision":null},{"url":"/customizations/worklist/patientBirthDate.jsonc","revision":null},{"url":"/5448.bundle.ac180bf858959dd5.js","revision":null},{"url":"/7071.bundle.de8df9d95b2ba245.js","revision":null},{"url":"/customizations/tools/measurementLabels.jsonc","revision":null},{"url":"/polyfill.min.js","revision":null},{"url":"/assets/apple-touch-startup-image-640x1096.png","revision":null},{"url":"/1483.bundle.235a698c74fd24b3.js","revision":null},{"url":"/8832.css","revision":null},{"url":"/ort/ort.min.js","revision":null},{"url":"/assets/apple-touch-startup-image-768x1004.png","revision":null},{"url":"/assets/android-chrome-72x72.png","revision":null},{"url":"/ort/ort.webgpu.min.js","revision":null},{"url":"/assets/apple-touch-icon-precomposed.png","revision":null},{"url":"/8033.bundle.8161dea771856d11.js","revision":null},{"url":"/ort/esm/ort.wasm-core.min.js","revision":null},{"url":"/silent-refresh.html","revision":null},{"url":"/7499.bundle.9249385348abc8cb.js","revision":null},{"url":"/assets/yandex-browser-manifest.json","revision":null},{"url":"/6495.bundle.8e8306fedff44999.js","revision":null},{"url":"/6489.bundle.95cb243641a61a2f.js","revision":null},{"url":"/ort/ort-wasm.wasm","revision":null},{"url":"/1180.bundle.df81706e465740df.js","revision":null},{"url":"/3760.css","revision":null},{"url":"/oidc-client.min.js","revision":null},{"url":"/assets/images/CT-Coronary-Arteries-2.png","revision":null},{"url":"/7463.bundle.40668aa8d083d077.js","revision":null},{"url":"/9290.bundle.1f7a97778e12e1c2.js","revision":null},{"url":"/2623.bundle.44c0c8ec6fa40d03.js","revision":null}]);
65
+ workbox.precaching.precacheAndRoute([{"url":"/781.css","revision":null},{"url":"/assets/apple-touch-icon-57x57.png","revision":null},{"url":"/dicom-microscopy-viewer/dicomiccwasm.wasm","revision":null},{"url":"/ort/ort.training.wasm.min.js","revision":null},{"url":"/assets/apple-touch-icon-114x114.png","revision":null},{"url":"/assets/apple-touch-icon-120x120.png","revision":null},{"url":"/dicom-microscopy-viewer/openjpegwasm_decode.wasm","revision":null},{"url":"/100.bundle.f11be0a921cb4e85.js","revision":null},{"url":"/assets/images/VolumeRendering.png","revision":null},{"url":"/assets/images/CT-Bone.png","revision":null},{"url":"/assets/android-chrome-48x48.png","revision":null},{"url":"/3833.css","revision":null},{"url":"/1206.bundle.786e5b556f903028.js","revision":null},{"url":"/8492.css","revision":null},{"url":"/8097.bundle.8ae6404ba94890a0.js","revision":null},{"url":"/assets/images/CT-Chest-Vessels.png","revision":null},{"url":"/assets/images/CT-Coronary-Arteries-3.png","revision":null},{"url":"/9383.bundle.40008913697b48b8.js","revision":null},{"url":"/8423.css","revision":null},{"url":"/assets/android-chrome-192x192.png","revision":null},{"url":"/5910.css","revision":null},{"url":"/assets/apple-touch-icon-76x76.png","revision":null},{"url":"/assets/apple-touch-startup-image-1536x2008.png","revision":null},{"url":"/ort/ort.wasm.min.js","revision":null},{"url":"/8492.bundle.39785564ef29e43d.js","revision":null},{"url":"/1602.css","revision":null},{"url":"/assets/images/DTI-FA-Brain.png","revision":null},{"url":"/app.bundle.c9cee93304900a58.js","revision":null},{"url":"/assets/apple-touch-startup-image-1496x2048.png","revision":null},{"url":"/assets/mstile-310x310.png","revision":null},{"url":"/ort/ort.webgl.min.js","revision":null},{"url":"/assets/android-chrome-96x96.png","revision":null},{"url":"/assets/manifest.webapp","revision":null},{"url":"/assets/apple-touch-icon-72x72.png","revision":null},{"url":"/customizations/segmentation/uncompressed.jsonc","revision":null},{"url":"/ort/ort.all.js","revision":null},{"url":"/ort/esm/ort.wasm.min.js","revision":null},{"url":"/ort/ort-wasm-simd-threaded.wasm","revision":null},{"url":"/assets/images/CT-AAA.png","revision":null},{"url":"/assets/yandex-browser-50x50.png","revision":null},{"url":"/assets/images/CT-AAA2.png","revision":null},{"url":"/assets/android-chrome-512x512.png","revision":null},{"url":"/6758.bundle.b174316beaf1a9a5.js","revision":null},{"url":"/ort/cjs/ort.webgpu.min.js","revision":null},{"url":"/assets/images/CT-Cardiac3.png","revision":null},{"url":"/assets/images/CT-Chest-Contrast-Enhanced.png","revision":null},{"url":"/_headers","revision":null},{"url":"/2623.css","revision":null},{"url":"/assets/apple-touch-icon-152x152.png","revision":null},{"url":"/assets/apple-touch-icon-167x167.png","revision":null},{"url":"/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm","revision":null},{"url":"/assets/apple-touch-startup-image-320x460.png","revision":null},{"url":"/3760.bundle.16f9f50d52771ffc.js","revision":null},{"url":"/manifest.json","revision":null},{"url":"/ort/ort-wasm-simd.jsep.wasm","revision":null},{"url":"/9290.bundle.77bef0d11caf6b43.js","revision":null},{"url":"/a34f9d1faa5f3315.woff2","revision":null},{"url":"/3500.bundle.86c37007114ef2a2.js","revision":null},{"url":"/serve.json","revision":null},{"url":"/ort/cjs/ort.wasm-core.min.js","revision":null},{"url":"/89.bundle.2585645860c98cc2.js","revision":null},{"url":"/assets/images/CT-Bones.png","revision":null},{"url":"/assets/apple-touch-icon-144x144.png","revision":null},{"url":"/assets/apple-touch-icon-180x180.png","revision":null},{"url":"/assets/apple-touch-icon-1024x1024.png","revision":null},{"url":"/assets/images/CT-Cropped-Volume-Bone.png","revision":null},{"url":"/5406.bundle.4dcfa7c697973300.js","revision":null},{"url":"/1180.bundle.2d9ea30c57f234bb.js","revision":null},{"url":"/7248.bundle.cb725f90fdcaaa98.js","revision":null},{"url":"/ort/esm/ort.min.js","revision":null},{"url":"/dicom-microscopy-viewer/charlswasm_decode.wasm","revision":null},{"url":"/_redirects","revision":null},{"url":"/index.html","revision":null},{"url":"/1483.bundle.067ff45a0bd998bf.js","revision":null},{"url":"/8423.bundle.d1d3cf2232b82988.js","revision":null},{"url":"/assets/firefox_app_60x60.png","revision":null},{"url":"/assets/mstile-144x144.png","revision":null},{"url":"/9068.bundle.e1d5946c370fd4ee.js","revision":null},{"url":"/assets/apple-touch-startup-image-748x1024.png","revision":null},{"url":"/3552.bundle.da459dba452ba7a2.js","revision":null},{"url":"/899.bundle.3ea5c8d021b1e60d.js","revision":null},{"url":"/assets/apple-touch-startup-image-750x1294.png","revision":null},{"url":"/5731.bundle.694bce33e168bf29.js","revision":null},{"url":"/assets/favicon.ico","revision":null},{"url":"/assets/apple-touch-icon-60x60.png","revision":null},{"url":"/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js","revision":null},{"url":"/ohif-logo.svg","revision":null},{"url":"/ort/ort.all.min.js","revision":null},{"url":"/7841.bundle.58ac0fd73e8a784f.js","revision":null},{"url":"/5302.bundle.d6194babac4a763e.js","revision":null},{"url":"/37fa160cc3a47cfd.wasm","revision":null},{"url":"/ort/ort-training-wasm-simd.wasm","revision":null},{"url":"/2779.bundle.17128e8949bc4a2d.js","revision":null},{"url":"/2493.bundle.c4af70e46357151f.js","revision":null},{"url":"/assets/images/CT-Air.png","revision":null},{"url":"/776f756dd939124e.wasm","revision":null},{"url":"/7964.bundle.b72dd7b70fa710fb.js","revision":null},{"url":"/customizations/index.html","revision":null},{"url":"/polySeg.bundle.2c5892e4c5a6bdd5.js","revision":null},{"url":"/assets/apple-touch-startup-image-1242x2148.png","revision":null},{"url":"/ort/ort.node.min.js","revision":null},{"url":"/customizations/segmentation/segmentationAnnotationTools.jsonc","revision":null},{"url":"/assets/apple-touch-icon.png","revision":null},{"url":"/6938.bundle.34415aaeea5935b3.js","revision":null},{"url":"/es6-shim.min.js","revision":null},{"url":"/google.js","revision":null},{"url":"/ort/cjs/ort.min.js","revision":null},{"url":"/assets/images/CT-Cardiac2.png","revision":null},{"url":"/assets/images/MR-Angio.png","revision":null},{"url":"/app.bundle.css","revision":null},{"url":"/ort/esm/ort.training.wasm.min.js","revision":null},{"url":"/4556.bundle.2de24b5ad059eebb.js","revision":null},{"url":"/assets/android-chrome-36x36.png","revision":null},{"url":"/ort/esm/ort.all.min.js","revision":null},{"url":"/0ddf166f7a343eda.wasm","revision":null},{"url":"/assets/firefox_app_128x128.png","revision":null},{"url":"/assets/images/CT-Muscle.png","revision":null},{"url":"/customizations/tools/smoothRotate.jsonc","revision":null},{"url":"/assets/images/CT-Soft-Tissue.png","revision":null},{"url":"/histogram-worker.bundle.ec5f0cf05ce3909c.js","revision":null},{"url":"/assets/images/CT-Lung.png","revision":null},{"url":"/4683.bundle.e3a8f3c2d3236e66.js","revision":null},{"url":"/5130ccb17e3f3f5b.wasm","revision":null},{"url":"/9270.bundle.c84785d8c6dbcffd.js","revision":null},{"url":"/assets/mstile-310x150.png","revision":null},{"url":"/ort/cjs/ort.training.wasm.min.js","revision":null},{"url":"/8832.bundle.12ea9c13b00a1504.js","revision":null},{"url":"/ohif-logo-light.svg","revision":null},{"url":"/ort/cjs/ort.webgl.min.js","revision":null},{"url":"/136.bundle.b948da0438a0a660.js","revision":null},{"url":"/customizations/veterinary/veterinaryOverlay.jsonc","revision":null},{"url":"/compute.bundle.0fc3a3ee85296cf2.js","revision":null},{"url":"/assets/apple-touch-startup-image-1182x2208.png","revision":null},{"url":"/ort/ort-wasm-threaded.wasm","revision":null},{"url":"/ort/esm/ort.webgpu.min.js","revision":null},{"url":"/2299.bundle.2375af8b16a1702e.js","revision":null},{"url":"/ort/cjs/package.json","revision":null},{"url":"/init-service-worker.js","revision":null},{"url":"/ort/cjs/ort.wasm.min.js","revision":null},{"url":"/9116.bundle.23095a73825f3e48.js","revision":null},{"url":"/assets/images/CT-Fat.png","revision":null},{"url":"/assets/images/MR-T2-Brain.png","revision":null},{"url":"/341.bundle.9b269d53a3b9875b.js","revision":null},{"url":"/5060.bundle.09456fba37e490bf.js","revision":null},{"url":"/781.bundle.efddbf6ed49a1d19.js","revision":null},{"url":"/ort/ort-wasm-simd.wasm","revision":null},{"url":"/assets/favicon-32x32.png","revision":null},{"url":"/customizations/segmentation/binary.jsonc","revision":null},{"url":"/1673.bundle.76779c7722e8c6c0.js","revision":null},{"url":"/assets/apple-touch-startup-image-640x920.png","revision":null},{"url":"/9415.css","revision":null},{"url":"/assets/images/CT-Coronary-Arteries.png","revision":null},{"url":"/4712.bundle.5b97e12639f3c299.js","revision":null},{"url":"/ort/esm/ort.webgl.min.js","revision":null},{"url":"/6749.bundle.4410d977a2920c78.js","revision":null},{"url":"/app-config.js","revision":null},{"url":"/customizations/tools/ctPresets.jsonc","revision":null},{"url":"/assets/android-chrome-384x384.png","revision":null},{"url":"/9437.bundle.26d6aeb36856d782.js","revision":null},{"url":"/assets/coast-228x228.png","revision":null},{"url":"/5189.bundle.ae2e6c3b91f526f7.js","revision":null},{"url":"/assets/mstile-70x70.png","revision":null},{"url":"/ort/cjs/ort.all.min.js","revision":null},{"url":"/ort/esm/package.json","revision":null},{"url":"/976.css","revision":null},{"url":"/5696.bundle.4393e87706f9d481.js","revision":null},{"url":"/1229.bundle.f721ec472f3d61bf.js","revision":null},{"url":"/dicom-microscopy-viewer/dataLoader.worker.min.js","revision":null},{"url":"/6214.css","revision":null},{"url":"/12.bundle.b4688cdbdd856b75.js","revision":null},{"url":"/8478.bundle.4520037e6185b95f.js","revision":null},{"url":"/assets/favicon-16x16.png","revision":null},{"url":"/interpolation.bundle.fa54018d8628f8c0.js","revision":null},{"url":"/ort/ort.wasm-core.min.js","revision":null},{"url":"/assets/images/MR-MIP.png","revision":null},{"url":"/assets/images/CT-Liver-Vasculature.png","revision":null},{"url":"/5910.bundle.f969465957013c3e.js","revision":null},{"url":"/assets/mstile-150x150.png","revision":null},{"url":"/customizations/veterinary/veterinary.jsonc","revision":null},{"url":"/assets/images/CT-Cardiac.png","revision":null},{"url":"/assets/firefox_app_512x512.png","revision":null},{"url":"/5189.css","revision":null},{"url":"/3332.bundle.ce66b6ddb60945a7.js","revision":null},{"url":"/assets/images/CT-Pulmonary-Arteries.png","revision":null},{"url":"/ort/ort.js","revision":null},{"url":"/customizations/segmentation/segmentationEditing.jsonc","revision":null},{"url":"/assets/images/CT-MIP.png","revision":null},{"url":"/ort/ort-wasm-simd-threaded.jsep.wasm","revision":null},{"url":"/7463.css","revision":null},{"url":"/7499.bundle.555efeb709e90aa9.js","revision":null},{"url":"/assets/images/MR-Default.png","revision":null},{"url":"/34b1e6b1deb5828e.wasm","revision":null},{"url":"/assets/android-chrome-144x144.png","revision":null},{"url":"/assets/android-chrome-256x256.png","revision":null},{"url":"/assets/browserconfig.xml","revision":null},{"url":"/5448.bundle.ac180bf858959dd5.js","revision":null},{"url":"/customizations/worklist/patientBirthDate.jsonc","revision":null},{"url":"/7071.bundle.de8df9d95b2ba245.js","revision":null},{"url":"/customizations/tools/measurementLabels.jsonc","revision":null},{"url":"/polyfill.min.js","revision":null},{"url":"/assets/apple-touch-startup-image-640x1096.png","revision":null},{"url":"/8832.css","revision":null},{"url":"/ort/ort.min.js","revision":null},{"url":"/assets/apple-touch-startup-image-768x1004.png","revision":null},{"url":"/assets/android-chrome-72x72.png","revision":null},{"url":"/ort/ort.webgpu.min.js","revision":null},{"url":"/assets/apple-touch-icon-precomposed.png","revision":null},{"url":"/8033.bundle.8161dea771856d11.js","revision":null},{"url":"/ort/esm/ort.wasm-core.min.js","revision":null},{"url":"/silent-refresh.html","revision":null},{"url":"/9415.bundle.eb42a435d1111e97.js","revision":null},{"url":"/assets/yandex-browser-manifest.json","revision":null},{"url":"/6495.bundle.8e8306fedff44999.js","revision":null},{"url":"/6489.bundle.95cb243641a61a2f.js","revision":null},{"url":"/ort/ort-wasm.wasm","revision":null},{"url":"/3760.css","revision":null},{"url":"/1602.bundle.e5d51e96cad709c8.js","revision":null},{"url":"/oidc-client.min.js","revision":null},{"url":"/assets/images/CT-Coronary-Arteries-2.png","revision":null},{"url":"/7463.bundle.40668aa8d083d077.js","revision":null},{"url":"/2623.bundle.44c0c8ec6fa40d03.js","revision":null}]);
66
66
 
67
67
  // TODO: Cache API
68
68
  // 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.14.0-beta.4",
3
+ "version": "3.14.0-beta.6",
4
4
  "productVersion": "3.4.0",
5
5
  "description": "OHIF Viewer",
6
6
  "author": "OHIF Contributors",
@@ -57,10 +57,10 @@
57
57
  "shepherd.js": "15.2.2",
58
58
  "url-loader": "4.1.1",
59
59
  "zustand": "4.5.5",
60
- "@ohif/core": "3.14.0-beta.4",
61
- "@ohif/i18n": "3.14.0-beta.4",
62
- "@ohif/ui": "3.14.0-beta.4",
63
- "@ohif/ui-next": "3.14.0-beta.4"
60
+ "@ohif/core": "3.14.0-beta.6",
61
+ "@ohif/ui-next": "3.14.0-beta.6",
62
+ "@ohif/ui": "3.14.0-beta.6",
63
+ "@ohif/i18n": "3.14.0-beta.6"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@babel/plugin-transform-private-methods": "7.29.7",