@ohif/app 3.12.0-beta.42 → 3.12.0-beta.44

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 (28) hide show
  1. package/dist/{1447.bundle.3ab897850d31f812f60b.js → 1447.bundle.dfac7fcb7d891b842990.js} +2 -2
  2. package/dist/{4113.bundle.82a39a036f61a32c0316.js → 4113.bundle.75ead0f05587d83dd132.js} +101 -49
  3. package/dist/{7656.bundle.fb8042ef087692c555e6.js → 7656.bundle.5a4fb45847d6a2361493.js} +4 -7
  4. package/dist/{app.bundle.3b50b89cad830a8e4bae.js → app.bundle.6ca617bac9212ec44525.js} +193 -27
  5. package/dist/app.bundle.css +1 -1
  6. package/dist/index.html +1 -1
  7. package/dist/sw.js +1 -1
  8. package/package.json +20 -20
  9. /package/dist/{1459.bundle.961c0d8f519f1488bf98.js → 1459.bundle.bcd9c6aee80316acbeec.js} +0 -0
  10. /package/dist/{1604.bundle.becb7f1a797d63dc2e1b.js → 1604.bundle.6374b685dd9265472107.js} +0 -0
  11. /package/dist/{1807.bundle.49a30c0a1f5c49eca17b.js → 1807.bundle.fa17c6019a2ef6f97c3d.js} +0 -0
  12. /package/dist/{1919.bundle.03e81e78edc6cb576e70.js → 1919.bundle.5c6517335a25b14d700d.js} +0 -0
  13. /package/dist/{213.bundle.d7c96fbf2d262dd1d854.js → 213.bundle.e65a963cbc1d5c1eca70.js} +0 -0
  14. /package/dist/{2243.bundle.db90156b09c33f1caf2e.js → 2243.bundle.351b90b0dfedb402a824.js} +0 -0
  15. /package/dist/{2424.bundle.3eb01cf073a96dd6b683.js → 2424.bundle.407de5da5d26c71f14fd.js} +0 -0
  16. /package/dist/{414.bundle.c9e4e3568323167f65a8.js → 414.bundle.2a54515e688a58810af6.js} +0 -0
  17. /package/dist/{5457.bundle.16bfe389ed9373145dfa.js → 5457.bundle.7396b0f19e8b84cc0f0c.js} +0 -0
  18. /package/dist/{5485.bundle.dd8fec305758568cd0c7.js → 5485.bundle.b1dee58c8d6aa3f7ba04.js} +0 -0
  19. /package/dist/{6027.bundle.d8a5cecdd8855618e6e3.js → 6027.bundle.896e74fec877d68505a1.js} +0 -0
  20. /package/dist/{6201.bundle.d7cc057ae245b4dec943.js → 6201.bundle.a3b84409f4dd4633bb32.js} +0 -0
  21. /package/dist/{6991.bundle.1c3166b3b48463d8b4f7.js → 6991.bundle.32e4de3097df11905d35.js} +0 -0
  22. /package/dist/{7197.bundle.30939e46a8ed4193655c.js → 7197.bundle.5b8c2206554500da1062.js} +0 -0
  23. /package/dist/{7639.bundle.509b4e89932a3e238889.js → 7639.bundle.c65454b472efdb4541c7.js} +0 -0
  24. /package/dist/{810.bundle.5f17189c5e5f15675a30.js → 810.bundle.4251bc41930758f1c7f9.js} +0 -0
  25. /package/dist/{85.bundle.d3bd77dfeccaf22bb161.js → 85.bundle.c842f9e0d90fcae9331a.js} +0 -0
  26. /package/dist/{8558.bundle.faec2906b9214cf8239c.js → 8558.bundle.d2ec63cb2ac102cabaa4.js} +0 -0
  27. /package/dist/{8815.bundle.a6f1c6193fae293da169.js → 8815.bundle.5962a74e27364e10c368.js} +0 -0
  28. /package/dist/{934.bundle.ff9719b99b6c0792e16f.js → 934.bundle.bcff1de4b0a462244dde.js} +0 -0
@@ -126016,6 +126016,9 @@ class StudyPrefetcherService extends pubSubServiceInterface/* PubSubService */.R
126016
126016
  return;
126017
126017
  }
126018
126018
  const activeViewport = viewports.get(activeViewportId);
126019
+ if (!activeViewport) {
126020
+ return;
126021
+ }
126019
126022
  const displaySetUpdated = this._setActiveDisplaySetsUIDs(activeViewport.displaySetInstanceUIDs);
126020
126023
  if (forceRestart || displaySetUpdated) {
126021
126024
  this._restartPrefetching();
@@ -129842,12 +129845,15 @@ var log = __webpack_require__(83887);
129842
129845
  var guid = __webpack_require__(27054);
129843
129846
  // EXTERNAL MODULE: ../../core/src/services/_shared/pubSubServiceInterface.ts
129844
129847
  var pubSubServiceInterface = __webpack_require__(37230);
129848
+ // EXTERNAL MODULE: ../../core/src/services/DicomMetadataStore/DicomMetadataStore.ts + 2 modules
129849
+ var DicomMetadataStore = __webpack_require__(60140);
129845
129850
  ;// ../../core/src/services/MeasurementService/MeasurementService.ts
129846
129851
  var _MeasurementService;
129847
129852
 
129848
129853
 
129849
129854
 
129850
129855
 
129856
+
129851
129857
  /**
129852
129858
  * Measurement source schema
129853
129859
  *
@@ -129929,7 +129935,6 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
129929
129935
  super(EVENTS);
129930
129936
  this.VALUE_TYPES = VALUE_TYPES;
129931
129937
  this.measurements = new Map();
129932
- this.unmappedMeasurements = new Map();
129933
129938
  this.isMeasurementDeletedIndividually = void 0;
129934
129939
  this.sources = {};
129935
129940
  this.mappings = {};
@@ -130270,6 +130275,7 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
130270
130275
  const sourceMapping = sourceMappings.find(mapping => mapping.annotationType === annotationType);
130271
130276
  if (!sourceMapping) {
130272
130277
  console.log('No source mapping', source.uid, annotationType, source);
130278
+ this.addUnmappedMeasurement(sourceAnnotationDetail, source);
130273
130279
  return;
130274
130280
  }
130275
130281
  const {
@@ -130283,15 +130289,7 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
130283
130289
  }
130284
130290
  measurement.source = source;
130285
130291
  } catch (error) {
130286
- // Todo: handle other
130287
- this.unmappedMeasurements.set(sourceAnnotationDetail.uid, {
130288
- ...sourceAnnotationDetail,
130289
- source: {
130290
- name: source.name,
130291
- version: source.version,
130292
- uid: source.uid
130293
- }
130294
- });
130292
+ this.addUnmappedMeasurement(sourceAnnotationDetail, source);
130295
130293
  console.log('Failed to map', error);
130296
130294
  throw new Error(`Failed to map '${sourceInfo}' measurement for annotationType ${annotationType}: ${error.message}`);
130297
130295
  }
@@ -130337,19 +130335,89 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
130337
130335
  return newMeasurement.uid;
130338
130336
  }
130339
130337
 
130338
+ /**
130339
+ * Recursively searches for any attribute at any level in the object
130340
+ * @param {any} obj The object to search
130341
+ * @param {string} attributeName The name of the attribute to find
130342
+ * @returns {any} The attribute value if found, undefined otherwise
130343
+ */
130344
+ findAttributeRecursively(obj, attributeName) {
130345
+ if (!obj || typeof obj !== 'object') {
130346
+ return undefined;
130347
+ }
130348
+ if (obj[attributeName]) {
130349
+ return obj[attributeName];
130350
+ }
130351
+ for (const key in obj) {
130352
+ if (obj.hasOwnProperty(key)) {
130353
+ const result = this.findAttributeRecursively(obj[key], attributeName);
130354
+ if (result) {
130355
+ return result;
130356
+ }
130357
+ }
130358
+ }
130359
+ return undefined;
130360
+ }
130361
+
130362
+ /**
130363
+ * Adds an unmapped measurement to the measurement service.
130364
+ *
130365
+ * @param {any} sourceAnnotationDetail The source annotation detail
130366
+ * @param {any} source The source
130367
+ */
130368
+ addUnmappedMeasurement(sourceAnnotationDetail, source) {
130369
+ if (sourceAnnotationDetail.annotation?.invalidated === true) {
130370
+ console.log('Measurement is invalidated, skipping...', sourceAnnotationDetail);
130371
+ return;
130372
+ }
130373
+ if (sourceAnnotationDetail.annotation?.isPreview === true) {
130374
+ console.log('Measurement is preview, skipping...', sourceAnnotationDetail);
130375
+ return;
130376
+ }
130377
+ const metadata = this.findAttributeRecursively(sourceAnnotationDetail, 'metadata');
130378
+ const label = this.findAttributeRecursively(sourceAnnotationDetail, 'label');
130379
+ const referencedImageId = this.findAttributeRecursively(sourceAnnotationDetail, 'referencedImageId');
130380
+ const displaySetInstanceUID = this.findAttributeRecursively(sourceAnnotationDetail, 'displaySetInstanceUID');
130381
+ const measurement = {
130382
+ ...sourceAnnotationDetail,
130383
+ isUnmapped: true,
130384
+ statusTooltip: 'This measurement is not compatible with this application',
130385
+ source: {
130386
+ name: source.name,
130387
+ version: source.version,
130388
+ uid: source.uid
130389
+ }
130390
+ };
130391
+ if (metadata) {
130392
+ measurement.metadata = metadata;
130393
+ }
130394
+ if (label) {
130395
+ measurement.label = label;
130396
+ }
130397
+ if (referencedImageId) {
130398
+ measurement.referencedImageId = referencedImageId;
130399
+ const instance = DicomMetadataStore/* DicomMetadataStore */.H.getInstanceByImageId(referencedImageId);
130400
+ measurement.referenceStudyUID = instance.StudyInstanceUID;
130401
+ measurement.referenceSeriesUID = instance.SeriesInstanceUID;
130402
+ }
130403
+ if (displaySetInstanceUID) {
130404
+ measurement.displaySetInstanceUID = displaySetInstanceUID;
130405
+ }
130406
+ this.measurements.set(sourceAnnotationDetail.uid, measurement);
130407
+ }
130408
+
130340
130409
  /**
130341
130410
  * Removes a measurement and broadcasts the removed event.
130342
130411
  *
130343
130412
  * @param {string} measurementUID The measurement uid
130344
130413
  */
130345
130414
  remove(measurementUID) {
130346
- const measurement = this.measurements.get(measurementUID) || this.unmappedMeasurements.get(measurementUID);
130415
+ const measurement = this.measurements.get(measurementUID);
130347
130416
  if (!measurementUID || !measurement) {
130348
130417
  console.debug(`No uid provided, or unable to find measurement by uid.`);
130349
130418
  return;
130350
130419
  }
130351
130420
  const source = measurement.source;
130352
- this.unmappedMeasurements.delete(measurementUID);
130353
130421
  this.measurements.delete(measurementUID);
130354
130422
  this.isMeasurementDeletedIndividually = true;
130355
130423
  this._broadcastEvent(this.EVENTS.MEASUREMENT_REMOVED, {
@@ -130364,12 +130432,11 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
130364
130432
  removeMany(measurementUIDs) {
130365
130433
  const measurements = [];
130366
130434
  for (const measurementUID of measurementUIDs) {
130367
- const measurement = this.measurements.get(measurementUID) || this.unmappedMeasurements.get(measurementUID);
130435
+ const measurement = this.measurements.get(measurementUID);
130368
130436
  if (!measurementUID || !measurement) {
130369
130437
  console.debug(`No uid provided, or unable to find measurement by uid.`);
130370
130438
  continue;
130371
130439
  }
130372
- this.unmappedMeasurements.delete(measurementUID);
130373
130440
  this.measurements.delete(measurementUID);
130374
130441
  measurements.push(measurement);
130375
130442
  }
@@ -130389,9 +130456,7 @@ class MeasurementService extends pubSubServiceInterface/* PubSubService */.R {
130389
130456
  clearMeasurements(filter) {
130390
130457
  // Make a copy of the measurements
130391
130458
  const toClear = this.getMeasurements(filter);
130392
- const unmappedClear = filter ? [...this.unmappedMeasurements.values()].filter(filter) : this.unmappedMeasurements;
130393
- const measurements = [...toClear, ...unmappedClear];
130394
- unmappedClear.forEach(measurement => this.unmappedMeasurements.delete(measurement.uid));
130459
+ const measurements = [...toClear];
130395
130460
  toClear.forEach(measurement => this.measurements.delete(measurement.uid));
130396
130461
  this._broadcastEvent(this.EVENTS.MEASUREMENTS_CLEARED, {
130397
130462
  measurements
@@ -133396,6 +133461,8 @@ function filterMeasurementsBySeriesUID(selectedSeries) {
133396
133461
  }
133397
133462
  return measurement => selectedSeries.includes(measurement.referenceSeriesUID);
133398
133463
  }
133464
+
133465
+ /** A filter that filters for measurements belonging to the study */
133399
133466
  function filterMeasurementsByStudyUID(studyUID) {
133400
133467
  return measurement => measurement.referenceStudyUID == studyUID;
133401
133468
  }
@@ -135336,7 +135403,7 @@ const detectionOptions = {
135336
135403
  }
135337
135404
  });
135338
135405
  ;// ../../i18n/package.json
135339
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.12.0-beta.41"}');
135406
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.12.0-beta.43"}');
135340
135407
  ;// ../../i18n/src/utils.js
135341
135408
  const languagesMap = {
135342
135409
  ar: 'Arabic',
@@ -275038,6 +275105,7 @@ LayoutSelector_LayoutSelector.propTypes = {
275038
275105
  * @component
275039
275106
  * @example
275040
275107
  * ```tsx
275108
+ * // Basic usage without status
275041
275109
  * <DataRow
275042
275110
  * number={1}
275043
275111
  * title="My Item"
@@ -275053,6 +275121,29 @@ LayoutSelector_LayoutSelector.propTypes = {
275053
275121
  * onDelete={() => {}}
275054
275122
  * onColor={() => {}}
275055
275123
  * />
275124
+ *
275125
+ * // With warning status using composite pattern
275126
+ * <DataRow
275127
+ * // ... other props
275128
+ * >
275129
+ * <DataRow.Status.Warning tooltip="This structured report is not compatible with this application" />
275130
+ * </DataRow>
275131
+ *
275132
+ * // With success status using composite pattern
275133
+ * <DataRow
275134
+ * // ... other props
275135
+ * >
275136
+ * <DataRow.Status.Success tooltip="Measurement completed successfully" />
275137
+ * </DataRow>
275138
+ *
275139
+ * // Multiple status indicators
275140
+ * <DataRow
275141
+ * // ... other props
275142
+ * >
275143
+ * <DataRow.Status.Warning tooltip="Warning message" />
275144
+ * <DataRow.Status.Info tooltip="Additional info" />
275145
+ * </DataRow>
275146
+ *
275056
275147
  * ```
275057
275148
  */
275058
275149
 
@@ -275075,9 +275166,10 @@ LayoutSelector_LayoutSelector.propTypes = {
275075
275166
  * @property {() => void} onRename - Callback when rename is requested
275076
275167
  * @property {() => void} onDelete - Callback when delete is requested
275077
275168
  * @property {() => void} onColor - Callback when color change is requested
275169
+ * @property {React.ReactNode} children - Optional children, including Status components
275078
275170
  */
275079
275171
 
275080
- const DataRow = ({
275172
+ const DataRowComponent = ({
275081
275173
  number,
275082
275174
  title,
275083
275175
  colorHex,
@@ -275092,12 +275184,16 @@ const DataRow = ({
275092
275184
  isSelected = false,
275093
275185
  isVisible = true,
275094
275186
  disableEditing = false,
275095
- className
275187
+ className,
275188
+ children
275096
275189
  }) => {
275097
275190
  const [isDropdownOpen, setIsDropdownOpen] = (0,react.useState)(false);
275098
275191
  const isTitleLong = title?.length > 25;
275099
275192
  const rowRef = (0,react.useRef)(null);
275100
275193
 
275194
+ // Extract Status components from children
275195
+ const statusComponents = react.Children.toArray(children).filter(child => /*#__PURE__*/react.isValidElement(child) && child.type && child.type.displayName?.startsWith('DataRow.Status'));
275196
+
275101
275197
  // useEffect(() => {
275102
275198
  // if (isSelected && rowRef.current) {
275103
275199
  // setTimeout(() => {
@@ -275213,7 +275309,7 @@ const DataRow = ({
275213
275309
  className: "h-6 w-6"
275214
275310
  })), isLocked && !disableEditing && /*#__PURE__*/react.createElement(Icons.Lock, {
275215
275311
  className: "text-muted-foreground h-6 w-6"
275216
- }), disableEditing && /*#__PURE__*/react.createElement("div", {
275312
+ }), statusComponents, disableEditing && /*#__PURE__*/react.createElement("div", {
275217
275313
  className: "h-6 w-6"
275218
275314
  }), !disableEditing && /*#__PURE__*/react.createElement(DropdownMenu_DropdownMenu, {
275219
275315
  onOpenChange: open => setIsDropdownOpen(open)
@@ -275269,7 +275365,73 @@ const DataRow = ({
275269
275365
  className: "text-muted-foreground ml-auto text-sm"
275270
275366
  }, renderDetails(details.secondary)))));
275271
275367
  };
275272
- /* harmony default export */ const DataRow_DataRow = ((/* unused pure expression or super */ null && (DataRow)));
275368
+ const StatusIndicator = ({
275369
+ tooltip,
275370
+ icon,
275371
+ defaultTooltip
275372
+ }) => /*#__PURE__*/react.createElement(Tooltip_Tooltip, null, /*#__PURE__*/react.createElement(Tooltip_TooltipTrigger, {
275373
+ asChild: true
275374
+ }, /*#__PURE__*/react.createElement("div", {
275375
+ className: "flex h-6 w-6 items-center justify-center"
275376
+ }, icon)), /*#__PURE__*/react.createElement(Tooltip_TooltipContent, {
275377
+ side: "bottom"
275378
+ }, /*#__PURE__*/react.createElement("div", null, tooltip || defaultTooltip)));
275379
+ const Status = ({
275380
+ children
275381
+ }) => {
275382
+ return /*#__PURE__*/react.createElement(react.Fragment, null, children);
275383
+ };
275384
+ const DataRow_StatusWarning = ({
275385
+ tooltip
275386
+ }) => /*#__PURE__*/react.createElement(StatusIndicator, {
275387
+ tooltip: tooltip,
275388
+ icon: /*#__PURE__*/react.createElement(Icons.ByName, {
275389
+ name: "status-alert",
275390
+ className: "h-4 w-4 text-yellow-500"
275391
+ }),
275392
+ defaultTooltip: "Warning"
275393
+ });
275394
+ const DataRow_StatusSuccess = ({
275395
+ tooltip
275396
+ }) => /*#__PURE__*/react.createElement(StatusIndicator, {
275397
+ tooltip: tooltip,
275398
+ icon: /*#__PURE__*/react.createElement(Icons.Checked, {
275399
+ className: "h-4 w-4 text-green-500"
275400
+ }),
275401
+ defaultTooltip: "Success"
275402
+ });
275403
+ const DataRow_StatusError = ({
275404
+ tooltip
275405
+ }) => /*#__PURE__*/react.createElement(StatusIndicator, {
275406
+ tooltip: tooltip,
275407
+ icon: /*#__PURE__*/react.createElement(Icons.ByName, {
275408
+ name: "status-error",
275409
+ className: "h-4 w-4 text-red-500"
275410
+ }),
275411
+ defaultTooltip: "Error"
275412
+ });
275413
+ const StatusInfo = ({
275414
+ tooltip
275415
+ }) => /*#__PURE__*/react.createElement(StatusIndicator, {
275416
+ tooltip: tooltip,
275417
+ icon: /*#__PURE__*/react.createElement(Icons.Info, {
275418
+ className: "h-4 w-4 text-blue-500"
275419
+ }),
275420
+ defaultTooltip: "Info"
275421
+ });
275422
+ Status.displayName = 'DataRow.Status';
275423
+ DataRow_StatusWarning.displayName = 'DataRow.Status.Warning';
275424
+ DataRow_StatusSuccess.displayName = 'DataRow.Status.Success';
275425
+ DataRow_StatusError.displayName = 'DataRow.Status.Error';
275426
+ StatusInfo.displayName = 'DataRow.Status.Info';
275427
+ Status.Warning = DataRow_StatusWarning;
275428
+ Status.Success = DataRow_StatusSuccess;
275429
+ Status.Error = DataRow_StatusError;
275430
+ Status.Info = StatusInfo;
275431
+ const DataRow = DataRowComponent;
275432
+ DataRow.Status = Status;
275433
+ /* harmony default export */ const DataRow_DataRow = (DataRow);
275434
+
275273
275435
  ;// ../../ui-next/src/components/DataRow/index.ts
275274
275436
 
275275
275437
  ;// ../../ui-next/src/lib/createContext.tsx
@@ -275310,8 +275472,10 @@ function createContext(rootComponentName, defaultContext) {
275310
275472
 
275311
275473
 
275312
275474
 
275475
+
275313
275476
  const [MeasurementTableProvider, useMeasurementTableContext] = createContext('MeasurementTable', {
275314
- data: []
275477
+ data: [],
275478
+ isExpanded: true
275315
275479
  });
275316
275480
  const MeasurementTable = ({
275317
275481
  data = [],
@@ -275382,7 +275546,7 @@ const MeasurementTable_Row = ({
275382
275546
  const {
275383
275547
  uid
275384
275548
  } = item;
275385
- return /*#__PURE__*/react.createElement(DataRow, {
275549
+ return /*#__PURE__*/react.createElement(DataRow_DataRow, {
275386
275550
  key: item.uid,
275387
275551
  description: item.label,
275388
275552
  number: index + 1,
@@ -275395,11 +275559,13 @@ const MeasurementTable_Row = ({
275395
275559
  onRename: e => onAction(e, 'renameMeasurement', uid),
275396
275560
  onToggleVisibility: e => onAction(e, 'toggleVisibilityMeasurement', uid),
275397
275561
  onToggleLocked: e => onAction(e, 'toggleLockMeasurement', uid),
275562
+ onColor: e => onAction(e, 'changeMeasurementColor', uid),
275398
275563
  disableEditing: disableEditing,
275399
- isExpanded: isExpanded,
275400
275564
  isVisible: item.isVisible,
275401
275565
  isLocked: item.isLocked
275402
- });
275566
+ }, item.isUnmapped && /*#__PURE__*/react.createElement(DataRow_DataRow.Status.Warning, {
275567
+ tooltip: item.statusTooltip
275568
+ }));
275403
275569
  };
275404
275570
  MeasurementTable.Header = MeasurementTable_Header;
275405
275571
  MeasurementTable.Body = MeasurementTable_Body;
@@ -385942,7 +386108,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
385942
386108
  /******/ // This function allow to reference async chunks
385943
386109
  /******/ __webpack_require__.u = (chunkId) => {
385944
386110
  /******/ // return url for filenames based on template
385945
- /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"d3bd77dfeccaf22bb161","147":"30b16832e09898deaf32","213":"d7c96fbf2d262dd1d854","319":"fc959064ddf2f6978b54","414":"c9e4e3568323167f65a8","572":"1ab7dd310985596b4098","732":"6978ac30a1e36abf06db","810":"5f17189c5e5f15675a30","934":"ff9719b99b6c0792e16f","1447":"3ab897850d31f812f60b","1459":"961c0d8f519f1488bf98","1604":"becb7f1a797d63dc2e1b","1807":"49a30c0a1f5c49eca17b","1919":"03e81e78edc6cb576e70","1927":"8941122be98d6aea153c","2007":"f58dd6d3d25dd22cfefd","2108":"e84aa8d858d8c4f2413e","2243":"db90156b09c33f1caf2e","2345":"839224623fb00f805981","2424":"3eb01cf073a96dd6b683","2518":"fbbfa351f8e8c446599b","2701":"02c7c6c283a2ee468af6","2974":"ec95e58b346dbe30a362","3054":"b7bb02c6cd9273c422f5","3694":"f176731b761d630f358c","4019":"c5b332003e3cd00868ce","4113":"82a39a036f61a32c0316","4202":"45fc4a9b7b3cd639d185","4759":"8686abdd7bcf4aa7d107","5261":"6e1a017f8f1027557f5b","5349":"3c050d34f7395566c41e","5457":"16bfe389ed9373145dfa","5485":"dd8fec305758568cd0c7","5674":"24de237ef15879b25714","5802":"48b958ebd8d250156814","6027":"d8a5cecdd8855618e6e3","6201":"d7cc057ae245b4dec943","6939":"41fbdef87597b5172ec6","6991":"1c3166b3b48463d8b4f7","7159":"122cd4e6d8fd1287d07f","7197":"30939e46a8ed4193655c","7412":"80f68b38041e891c64a8","7431":"f6ee76ae243ffe1c811a","7639":"509b4e89932a3e238889","7656":"fb8042ef087692c555e6","8094":"5c44190a325ac23e3e5c","8402":"edb924cd47cd168f621c","8558":"faec2906b9214cf8239c","8740":"fa9a98c1ce314e7040f2","8815":"a6f1c6193fae293da169","9862":"b2d33e721d8c8e2a014c"}[chunkId] + ".js";
386111
+ /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"c842f9e0d90fcae9331a","147":"30b16832e09898deaf32","213":"e65a963cbc1d5c1eca70","319":"fc959064ddf2f6978b54","414":"2a54515e688a58810af6","572":"1ab7dd310985596b4098","732":"6978ac30a1e36abf06db","810":"4251bc41930758f1c7f9","934":"bcff1de4b0a462244dde","1447":"dfac7fcb7d891b842990","1459":"bcd9c6aee80316acbeec","1604":"6374b685dd9265472107","1807":"fa17c6019a2ef6f97c3d","1919":"5c6517335a25b14d700d","1927":"8941122be98d6aea153c","2007":"f58dd6d3d25dd22cfefd","2108":"e84aa8d858d8c4f2413e","2243":"351b90b0dfedb402a824","2345":"839224623fb00f805981","2424":"407de5da5d26c71f14fd","2518":"fbbfa351f8e8c446599b","2701":"02c7c6c283a2ee468af6","2974":"ec95e58b346dbe30a362","3054":"b7bb02c6cd9273c422f5","3694":"f176731b761d630f358c","4019":"c5b332003e3cd00868ce","4113":"75ead0f05587d83dd132","4202":"45fc4a9b7b3cd639d185","4759":"8686abdd7bcf4aa7d107","5261":"6e1a017f8f1027557f5b","5349":"3c050d34f7395566c41e","5457":"7396b0f19e8b84cc0f0c","5485":"b1dee58c8d6aa3f7ba04","5674":"24de237ef15879b25714","5802":"48b958ebd8d250156814","6027":"896e74fec877d68505a1","6201":"a3b84409f4dd4633bb32","6939":"41fbdef87597b5172ec6","6991":"32e4de3097df11905d35","7159":"122cd4e6d8fd1287d07f","7197":"5b8c2206554500da1062","7412":"80f68b38041e891c64a8","7431":"f6ee76ae243ffe1c811a","7639":"c65454b472efdb4541c7","7656":"5a4fb45847d6a2361493","8094":"5c44190a325ac23e3e5c","8402":"edb924cd47cd168f621c","8558":"d2ec63cb2ac102cabaa4","8740":"fa9a98c1ce314e7040f2","8815":"5962a74e27364e10c368","9862":"b2d33e721d8c8e2a014c"}[chunkId] + ".js";
385946
386112
  /******/ };
385947
386113
  /******/ })();
385948
386114
  /******/