@vitessce/all 3.3.6 → 3.3.8

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.
@@ -26,10 +26,10 @@ var __privateMethod = (obj, member, method2) => {
26
26
  __accessCheck(obj, member, "access private method");
27
27
  return method2;
28
28
  };
29
- var _bytes, _encoder, _encode_buffer, _strides, _TypedArray, _BYTES_PER_ELEMENT, _shape, _endian, _shape2, _strides2, _metadata, _a2, _metadata2, _b, _c, _overrides, _use_suffix_request, _merge_init, merge_init_fn;
29
+ var _bytes, _encoder, _data, _encode_buffer, _strides, _TypedArray, _BYTES_PER_ELEMENT, _shape, _endian, _shape2, _strides2, _encoder_config, _decoder_config, _metadata, _a2, _metadata2, _b, _c, _overrides, _use_suffix_request, _merge_init, merge_init_fn, _overrides2;
30
30
  import * as React from "react";
31
31
  import React__default, { Children, isValidElement, cloneElement, useMemo, forwardRef, useRef, useImperativeHandle, useEffect, useLayoutEffect as useLayoutEffect$1, useState, PureComponent, Component as Component$1, useCallback, createElement, useContext, useReducer, Suspense } from "react";
32
- import { useLoaders, useCoordination, useDescription, useImageData, useReady, TitleInfo, useVitessceContainer, useSetWarning, useObsSetsData, useUrls, usePlotOptionsStyles, OptionsContainer, CellColorEncodingOption, OptionSelect, useComponentHover, useComponentViewInfo, useSetComponentHover, useSetComponentViewInfo, useInitialCoordination, useDeckCanvasSize, useMultiObsLabels, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useFeatureLabelsData, useGetObsInfo, useUint8FeatureSelection, useExpressionValueGetter, useAuxiliaryCoordination, useHasLoader, useObsLocationsData, useObsLabelsData, useObsSegmentationsData, useNeighborhoodsData, useMergeCoordination, useCoordinationScopes, useCoordinationScopesBy, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationScopesNonNull, useComplexCoordination, useComplexCoordinationSecondary, useMultiObsPoints, usePointMultiObsLabels, useMultiObsSpots, useSpotMultiObsSets, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useMultiObsSegmentations, useSegmentationMultiObsSets, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useMultiImages, useObsFeatureMatrixData, useUint8ObsFeatureMatrix, useGetObsMembership, PopperMenu, useComponentLayout, useClosestVitessceContainerSize, useWindowDimensions, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes, useWarning, useGridItemSize, useGenomicProfilesData, DataSourceFetchError, AbstractLoaderError, AbstractTwoStepLoader, LoaderResult, LoaderValidationError, logConfig, VitS } from "@vitessce/vit-s";
32
+ import { useLoaders, useCoordination, useDescription, useImageData, useReady, TitleInfo, useVitessceContainer, useSetWarning, useObsSetsData, useUrls, usePlotOptionsStyles, OptionsContainer, CellColorEncodingOption, OptionSelect, useComponentHover, useComponentViewInfo, useSetComponentHover, useSetComponentViewInfo, useInitialCoordination, useDeckCanvasSize, useMultiObsLabels, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useFeatureLabelsData, useGetObsInfo, useUint8FeatureSelection, useExpressionValueGetter, useAuxiliaryCoordination, useHasLoader, useObsLocationsData, useObsLabelsData, useObsSegmentationsData, useNeighborhoodsData, useMergeCoordination, useCoordinationScopes, useCoordinationScopesBy, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationScopesNonNull, useComplexCoordination, useComplexCoordinationSecondary, useMultiObsPoints, usePointMultiObsLabels, useMultiObsSpots, useSpotMultiObsSets, useSpotMultiFeatureLabels, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useMultiObsSegmentations, useSegmentationMultiObsSets, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useMultiImages, useObsFeatureMatrixData, useUint8ObsFeatureMatrix, useGetObsMembership, PopperMenu, useComponentLayout, useClosestVitessceContainerSize, useWindowDimensions, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes, useWarning, useGridItemSize, useGenomicProfilesData, useSampleSetsData, useSampleEdgesData, DataSourceFetchError, AbstractLoaderError, AbstractTwoStepLoader, LoaderResult, LoaderValidationError, logConfig, VitS } from "@vitessce/vit-s";
33
33
  import * as ReactDOM from "react-dom";
34
34
  import ReactDOM__default from "react-dom";
35
35
  function _mergeNamespaces(n3, m2) {
@@ -9849,11 +9849,14 @@ const DataType$2 = {
9849
9849
  GENOMIC_PROFILES: "genomic-profiles",
9850
9850
  OBS_SPOTS: "obsSpots",
9851
9851
  OBS_POINTS: "obsPoints",
9852
- OBS_LOCATIONS: "obsLocations"
9852
+ OBS_LOCATIONS: "obsLocations",
9853
+ SAMPLE_SETS: "sampleSets",
9854
+ SAMPLE_EDGES: "sampleEdges"
9853
9855
  };
9854
9856
  const FileType$1 = {
9855
9857
  // Joint file types
9856
9858
  ANNDATA_ZARR: "anndata.zarr",
9859
+ ANNDATA_ZARR_ZIP: "anndata.zarr.zip",
9857
9860
  SPATIALDATA_ZARR: "spatialdata.zarr",
9858
9861
  // Atomic file types
9859
9862
  OBS_EMBEDDING_CSV: "obsEmbedding.csv",
@@ -9866,6 +9869,7 @@ const FileType$1 = {
9866
9869
  OBS_SEGMENTATIONS_JSON: "obsSegmentations.json",
9867
9870
  OBS_SETS_CSV: "obsSets.csv",
9868
9871
  OBS_SETS_JSON: "obsSets.json",
9872
+ SAMPLE_SETS_CSV: "sampleSets.csv",
9869
9873
  // OME-Zarr
9870
9874
  IMAGE_OME_ZARR: "image.ome-zarr",
9871
9875
  OBS_SEGMENTATIONS_OME_ZARR: "obsSegmentations.ome-zarr",
@@ -9880,6 +9884,19 @@ const FileType$1 = {
9880
9884
  OBS_SEGMENTATIONS_ANNDATA_ZARR: "obsSegmentations.anndata.zarr",
9881
9885
  OBS_LABELS_ANNDATA_ZARR: "obsLabels.anndata.zarr",
9882
9886
  FEATURE_LABELS_ANNDATA_ZARR: "featureLabels.anndata.zarr",
9887
+ SAMPLE_EDGES_ANNDATA_ZARR: "sampleEdges.anndata.zarr",
9888
+ // AnnData - zipped
9889
+ OBS_FEATURE_MATRIX_ANNDATA_ZARR_ZIP: "obsFeatureMatrix.anndata.zarr.zip",
9890
+ OBS_FEATURE_COLUMNS_ANNDATA_ZARR_ZIP: "obsFeatureColumns.anndata.zarr.zip",
9891
+ OBS_SETS_ANNDATA_ZARR_ZIP: "obsSets.anndata.zarr.zip",
9892
+ OBS_EMBEDDING_ANNDATA_ZARR_ZIP: "obsEmbedding.anndata.zarr.zip",
9893
+ OBS_SPOTS_ANNDATA_ZARR_ZIP: "obsSpots.anndata.zarr.zip",
9894
+ OBS_POINTS_ANNDATA_ZARR_ZIP: "obsPoints.anndata.zarr.zip",
9895
+ OBS_LOCATIONS_ANNDATA_ZARR_ZIP: "obsLocations.anndata.zarr.zip",
9896
+ OBS_SEGMENTATIONS_ANNDATA_ZARR_ZIP: "obsSegmentations.anndata.zarr.zip",
9897
+ OBS_LABELS_ANNDATA_ZARR_ZIP: "obsLabels.anndata.zarr.zip",
9898
+ FEATURE_LABELS_ANNDATA_ZARR_ZIP: "featureLabels.anndata.zarr.zip",
9899
+ SAMPLE_EDGES_ANNDATA_ZARR_ZIP: "sampleEdges.anndata.zarr.zip",
9883
9900
  // SpatialData
9884
9901
  IMAGE_SPATIALDATA_ZARR: "image.spatialdata.zarr",
9885
9902
  LABELS_SPATIALDATA_ZARR: "labels.spatialdata.zarr",
@@ -9887,6 +9904,7 @@ const FileType$1 = {
9887
9904
  OBS_FEATURE_MATRIX_SPATIALDATA_ZARR: "obsFeatureMatrix.spatialdata.zarr",
9888
9905
  OBS_SETS_SPATIALDATA_ZARR: "obsSets.spatialdata.zarr",
9889
9906
  OBS_SPOTS_SPATIALDATA_ZARR: "obsSpots.spatialdata.zarr",
9907
+ FEATURE_LABELS_SPATIALDATA_ZARR: "featureLabels.spatialdata.zarr",
9890
9908
  // TODO:
9891
9909
  // OBS_POINTS_SPATIALDATA_ZARR: 'obsPoints.spatialdata.zarr',
9892
9910
  // OBS_LOCATIONS_SPATIALDATA_ZARR: 'obsLocations.spatialdata.zarr',
@@ -10043,13 +10061,51 @@ const CoordinationType$1 = {
10043
10061
  LEGEND_VISIBLE: "legendVisible",
10044
10062
  SPATIAL_CHANNEL_LABELS_VISIBLE: "spatialChannelLabelsVisible",
10045
10063
  SPATIAL_CHANNEL_LABELS_ORIENTATION: "spatialChannelLabelsOrientation",
10046
- SPATIAL_CHANNEL_LABEL_SIZE: "spatialChannelLabelSize"
10064
+ SPATIAL_CHANNEL_LABEL_SIZE: "spatialChannelLabelSize",
10065
+ // Multi-sample / comparative
10066
+ SAMPLE_TYPE: "sampleType",
10067
+ SAMPLE_SET_SELECTION: "sampleSetSelection"
10047
10068
  };
10048
10069
  const STATUS$1 = {
10049
10070
  LOADING: "loading",
10050
10071
  SUCCESS: "success",
10051
10072
  ERROR: "error"
10052
10073
  };
10074
+ const ALT_ZARR_STORE_TYPES = {
10075
+ [FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR]: {
10076
+ zip: FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR_ZIP
10077
+ },
10078
+ [FileType$1.OBS_FEATURE_COLUMNS_ANNDATA_ZARR]: {
10079
+ zip: FileType$1.OBS_FEATURE_COLUMNS_ANNDATA_ZARR_ZIP
10080
+ },
10081
+ [FileType$1.OBS_SETS_ANNDATA_ZARR]: {
10082
+ zip: FileType$1.OBS_SETS_ANNDATA_ZARR_ZIP
10083
+ },
10084
+ [FileType$1.OBS_EMBEDDING_ANNDATA_ZARR]: {
10085
+ zip: FileType$1.OBS_EMBEDDING_ANNDATA_ZARR_ZIP
10086
+ },
10087
+ [FileType$1.OBS_SPOTS_ANNDATA_ZARR]: {
10088
+ zip: FileType$1.OBS_SPOTS_ANNDATA_ZARR_ZIP
10089
+ },
10090
+ [FileType$1.OBS_POINTS_ANNDATA_ZARR]: {
10091
+ zip: FileType$1.OBS_POINTS_ANNDATA_ZARR_ZIP
10092
+ },
10093
+ [FileType$1.OBS_LOCATIONS_ANNDATA_ZARR]: {
10094
+ zip: FileType$1.OBS_LOCATIONS_ANNDATA_ZARR_ZIP
10095
+ },
10096
+ [FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR]: {
10097
+ zip: FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR_ZIP
10098
+ },
10099
+ [FileType$1.OBS_LABELS_ANNDATA_ZARR]: {
10100
+ zip: FileType$1.OBS_LABELS_ANNDATA_ZARR_ZIP
10101
+ },
10102
+ [FileType$1.FEATURE_LABELS_ANNDATA_ZARR]: {
10103
+ zip: FileType$1.FEATURE_LABELS_ANNDATA_ZARR_ZIP
10104
+ },
10105
+ [FileType$1.SAMPLE_EDGES_ANNDATA_ZARR]: {
10106
+ zip: FileType$1.SAMPLE_EDGES_ANNDATA_ZARR_ZIP
10107
+ }
10108
+ };
10053
10109
  const COMPONENT_COORDINATION_TYPES = {
10054
10110
  [ViewType$1.SCATTERPLOT]: [
10055
10111
  CoordinationType$1.DATASET,
@@ -10296,7 +10352,9 @@ const COMPONENT_COORDINATION_TYPES = {
10296
10352
  CoordinationType$1.OBS_SET_SELECTION,
10297
10353
  CoordinationType$1.OBS_SET_HIGHLIGHT,
10298
10354
  CoordinationType$1.OBS_SET_COLOR,
10299
- CoordinationType$1.ADDITIONAL_OBS_SETS
10355
+ CoordinationType$1.ADDITIONAL_OBS_SETS,
10356
+ CoordinationType$1.SAMPLE_TYPE,
10357
+ CoordinationType$1.SAMPLE_SET_SELECTION
10300
10358
  ],
10301
10359
  [ViewType$1.FEATURE_VALUE_HISTOGRAM]: [
10302
10360
  CoordinationType$1.DATASET,
@@ -10708,6 +10766,7 @@ const annDataConvenienceObsEmbeddingItem = z.object({
10708
10766
  });
10709
10767
  const annDataObsLabels = annDataObs;
10710
10768
  const annDataFeatureLabels = annDataObs;
10769
+ const annDataSampleEdges = annDataObs;
10711
10770
  const annDataObsFeatureMatrix = z.object({
10712
10771
  path: z.string(),
10713
10772
  featureFilterPath: z.string().optional().describe("If the feature index should be filtered, put a boolean column here (analogous to the previous geneFilter option). e.g., var/in_obsm_X_small_matrix"),
@@ -10789,6 +10848,7 @@ const obsFeatureMatrixAnndataSchema = annDataObsFeatureMatrix;
10789
10848
  const obsLabelsAnndataSchema = annDataObsLabels;
10790
10849
  const featureLabelsAnndataSchema = annDataFeatureLabels;
10791
10850
  const obsFeatureColumnsAnndataSchema = annDataObsFeatureColumns;
10851
+ const sampleEdgesAnndataSchema = annDataSampleEdges;
10792
10852
  const obsEmbeddingCsvSchema = z.object({
10793
10853
  obsIndex: z.string(),
10794
10854
  obsEmbedding: z.array(z.string()).length(2)
@@ -10827,6 +10887,17 @@ const obsSetsCsvSchema = z.object({
10827
10887
  scoreColumn: z.string().optional()
10828
10888
  }))
10829
10889
  });
10890
+ const sampleSetsCsvSchema = z.object({
10891
+ sampleIndex: z.string(),
10892
+ sampleSets: z.array(z.object({
10893
+ name: z.string(),
10894
+ column: z.union([
10895
+ z.string(),
10896
+ z.array(z.string())
10897
+ ]),
10898
+ scoreColumn: z.string().optional()
10899
+ }))
10900
+ });
10830
10901
  const anndataZarrSchema = z.object({
10831
10902
  obsLabels: z.union([
10832
10903
  annDataObsLabels,
@@ -15778,7 +15849,7 @@ function getStylesCreator(stylesOrCreator) {
15778
15849
  }
15779
15850
  }
15780
15851
  return {
15781
- create: function create6(theme, name2) {
15852
+ create: function create5(theme, name2) {
15782
15853
  var styles35;
15783
15854
  try {
15784
15855
  styles35 = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;
@@ -16594,7 +16665,7 @@ function useIsFocusVisible() {
16594
16665
  function _toArray(arr) {
16595
16666
  return _arrayWithHoles$7(arr) || _iterableToArray$j(arr) || _unsupportedIterableToArray$m(arr) || _nonIterableRest$7();
16596
16667
  }
16597
- const config$3 = {
16668
+ const config$4 = {
16598
16669
  disabled: false
16599
16670
  };
16600
16671
  var timeoutsShape = _pt.oneOfType([_pt.number, _pt.shape({
@@ -16728,7 +16799,7 @@ var Transition$1 = /* @__PURE__ */ function(_React$Component) {
16728
16799
  var _ref22 = this.props.nodeRef ? [appearing] : [ReactDOM__default.findDOMNode(this), appearing], maybeNode = _ref22[0], maybeAppearing = _ref22[1];
16729
16800
  var timeouts = this.getTimeouts();
16730
16801
  var enterTimeout = appearing ? timeouts.appear : timeouts.enter;
16731
- if (!mounting && !enter || config$3.disabled) {
16802
+ if (!mounting && !enter || config$4.disabled) {
16732
16803
  this.safeSetState({
16733
16804
  status: ENTERED
16734
16805
  }, function() {
@@ -16755,7 +16826,7 @@ var Transition$1 = /* @__PURE__ */ function(_React$Component) {
16755
16826
  var exit = this.props.exit;
16756
16827
  var timeouts = this.getTimeouts();
16757
16828
  var maybeNode = this.props.nodeRef ? void 0 : ReactDOM__default.findDOMNode(this);
16758
- if (!exit || config$3.disabled) {
16829
+ if (!exit || config$4.disabled) {
16759
16830
  this.safeSetState({
16760
16831
  status: EXITED
16761
16832
  }, function() {
@@ -24897,7 +24968,7 @@ var classCallCheck$1 = function(instance, Constructor) {
24897
24968
  }
24898
24969
  };
24899
24970
  var createClass$1 = function() {
24900
- function defineProperties4(target2, props2) {
24971
+ function defineProperties3(target2, props2) {
24901
24972
  for (var i2 = 0; i2 < props2.length; i2++) {
24902
24973
  var descriptor2 = props2[i2];
24903
24974
  descriptor2.enumerable = descriptor2.enumerable || false;
@@ -24909,9 +24980,9 @@ var createClass$1 = function() {
24909
24980
  }
24910
24981
  return function(Constructor, protoProps, staticProps) {
24911
24982
  if (protoProps)
24912
- defineProperties4(Constructor.prototype, protoProps);
24983
+ defineProperties3(Constructor.prototype, protoProps);
24913
24984
  if (staticProps)
24914
- defineProperties4(Constructor, staticProps);
24985
+ defineProperties3(Constructor, staticProps);
24915
24986
  return Constructor;
24916
24987
  };
24917
24988
  }();
@@ -39013,10 +39084,10 @@ var _propertyDesc = function(bitmap, value2) {
39013
39084
  value: value2
39014
39085
  };
39015
39086
  };
39016
- var dP$2 = require_objectDp();
39087
+ var dP$1 = require_objectDp();
39017
39088
  var createDesc$2 = _propertyDesc;
39018
39089
  var _hide = require_descriptors() ? function(object2, key2, value2) {
39019
- return dP$2.f(object2, key2, createDesc$2(1, value2));
39090
+ return dP$1.f(object2, key2, createDesc$2(1, value2));
39020
39091
  } : function(object2, key2, value2) {
39021
39092
  object2[key2] = value2;
39022
39093
  return object2;
@@ -39030,7 +39101,7 @@ var core$3 = _coreExports;
39030
39101
  var ctx = _ctx;
39031
39102
  var hide$2 = _hide;
39032
39103
  var has$a = _has$1;
39033
- var PROTOTYPE$2 = "prototype";
39104
+ var PROTOTYPE$1 = "prototype";
39034
39105
  var $export$6 = function(type2, name2, source2) {
39035
39106
  var IS_FORCED = type2 & $export$6.F;
39036
39107
  var IS_GLOBAL = type2 & $export$6.G;
@@ -39039,8 +39110,8 @@ var $export$6 = function(type2, name2, source2) {
39039
39110
  var IS_BIND = type2 & $export$6.B;
39040
39111
  var IS_WRAP = type2 & $export$6.W;
39041
39112
  var exports2 = IS_GLOBAL ? core$3 : core$3[name2] || (core$3[name2] = {});
39042
- var expProto = exports2[PROTOTYPE$2];
39043
- var target2 = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name2] : (global$5[name2] || {})[PROTOTYPE$2];
39113
+ var expProto = exports2[PROTOTYPE$1];
39114
+ var target2 = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name2] : (global$5[name2] || {})[PROTOTYPE$1];
39044
39115
  var key2, own, out;
39045
39116
  if (IS_GLOBAL)
39046
39117
  source2 = name2;
@@ -39064,7 +39135,7 @@ var $export$6 = function(type2, name2, source2) {
39064
39135
  }
39065
39136
  return C3.apply(this, arguments);
39066
39137
  };
39067
- F[PROTOTYPE$2] = C3[PROTOTYPE$2];
39138
+ F[PROTOTYPE$1] = C3[PROTOTYPE$1];
39068
39139
  return F;
39069
39140
  }(out) : IS_PROTO && typeof out == "function" ? ctx(Function.call, out) : out;
39070
39141
  if (IS_PROTO) {
@@ -39169,22 +39240,30 @@ var px$1 = Math.random();
39169
39240
  var _uid = function(key2) {
39170
39241
  return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id$3 + px$1).toString(36));
39171
39242
  };
39172
- var shared$1 = _sharedExports("keys");
39173
- var uid$3 = _uid;
39174
- var _sharedKey = function(key2) {
39175
- return shared$1[key2] || (shared$1[key2] = uid$3(key2));
39176
- };
39243
+ var _sharedKey;
39244
+ var hasRequired_sharedKey;
39245
+ function require_sharedKey() {
39246
+ if (hasRequired_sharedKey)
39247
+ return _sharedKey;
39248
+ hasRequired_sharedKey = 1;
39249
+ var shared2 = _sharedExports("keys");
39250
+ var uid2 = _uid;
39251
+ _sharedKey = function(key2) {
39252
+ return shared2[key2] || (shared2[key2] = uid2(key2));
39253
+ };
39254
+ return _sharedKey;
39255
+ }
39177
39256
  var has$9 = _has$1;
39178
39257
  var toIObject$4 = _toIobject;
39179
39258
  var arrayIndexOf = _arrayIncludes(false);
39180
- var IE_PROTO$2 = _sharedKey("IE_PROTO");
39259
+ var IE_PROTO$1 = require_sharedKey()("IE_PROTO");
39181
39260
  var _objectKeysInternal = function(object2, names) {
39182
39261
  var O = toIObject$4(object2);
39183
39262
  var i2 = 0;
39184
39263
  var result = [];
39185
39264
  var key2;
39186
39265
  for (key2 in O)
39187
- if (key2 != IE_PROTO$2)
39266
+ if (key2 != IE_PROTO$1)
39188
39267
  has$9(O, key2) && result.push(key2);
39189
39268
  while (names.length > i2)
39190
39269
  if (has$9(O, key2 = names[i2++])) {
@@ -39194,9 +39273,9 @@ var _objectKeysInternal = function(object2, names) {
39194
39273
  };
39195
39274
  var _enumBugKeys = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
39196
39275
  var $keys$2 = _objectKeysInternal;
39197
- var enumBugKeys$1 = _enumBugKeys;
39276
+ var enumBugKeys = _enumBugKeys;
39198
39277
  var _objectKeys$1 = Object.keys || function keys(O) {
39199
- return $keys$2(O, enumBugKeys$1);
39278
+ return $keys$2(O, enumBugKeys);
39200
39279
  };
39201
39280
  var _objectGops = {};
39202
39281
  _objectGops.f = Object.getOwnPropertySymbols;
@@ -39314,7 +39393,7 @@ function _interopRequireDefault$o(obj) {
39314
39393
  return obj && obj.__esModule ? obj : { default: obj };
39315
39394
  }
39316
39395
  var _default$5 = function() {
39317
- function defineProperties4(target2, props2) {
39396
+ function defineProperties3(target2, props2) {
39318
39397
  for (var i2 = 0; i2 < props2.length; i2++) {
39319
39398
  var descriptor2 = props2[i2];
39320
39399
  descriptor2.enumerable = descriptor2.enumerable || false;
@@ -39326,9 +39405,9 @@ var _default$5 = function() {
39326
39405
  }
39327
39406
  return function(Constructor, protoProps, staticProps) {
39328
39407
  if (protoProps)
39329
- defineProperties4(Constructor.prototype, protoProps);
39408
+ defineProperties3(Constructor.prototype, protoProps);
39330
39409
  if (staticProps)
39331
- defineProperties4(Constructor, staticProps);
39410
+ defineProperties3(Constructor, staticProps);
39332
39411
  return Constructor;
39333
39412
  };
39334
39413
  }();
@@ -39349,19 +39428,27 @@ var _stringAt = function(TO_STRING) {
39349
39428
  };
39350
39429
  var _redefine = _hide;
39351
39430
  var _iterators = {};
39352
- var dP$1 = require_objectDp();
39353
- var anObject$2 = _anObject;
39354
- var getKeys$1 = _objectKeys$1;
39355
- var _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties(O, Properties) {
39356
- anObject$2(O);
39357
- var keys4 = getKeys$1(Properties);
39358
- var length2 = keys4.length;
39359
- var i2 = 0;
39360
- var P2;
39361
- while (length2 > i2)
39362
- dP$1.f(O, P2 = keys4[i2++], Properties[P2]);
39363
- return O;
39364
- };
39431
+ var _objectDps;
39432
+ var hasRequired_objectDps;
39433
+ function require_objectDps() {
39434
+ if (hasRequired_objectDps)
39435
+ return _objectDps;
39436
+ hasRequired_objectDps = 1;
39437
+ var dP2 = require_objectDp();
39438
+ var anObject2 = _anObject;
39439
+ var getKeys2 = _objectKeys$1;
39440
+ _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties3(O, Properties) {
39441
+ anObject2(O);
39442
+ var keys4 = getKeys2(Properties);
39443
+ var length2 = keys4.length;
39444
+ var i2 = 0;
39445
+ var P2;
39446
+ while (length2 > i2)
39447
+ dP2.f(O, P2 = keys4[i2++], Properties[P2]);
39448
+ return O;
39449
+ };
39450
+ return _objectDps;
39451
+ }
39365
39452
  var _html;
39366
39453
  var hasRequired_html;
39367
39454
  function require_html() {
@@ -39372,42 +39459,50 @@ function require_html() {
39372
39459
  _html = document2 && document2.documentElement;
39373
39460
  return _html;
39374
39461
  }
39375
- var anObject$1 = _anObject;
39376
- var dPs = _objectDps;
39377
- var enumBugKeys = _enumBugKeys;
39378
- var IE_PROTO$1 = _sharedKey("IE_PROTO");
39379
- var Empty$2 = function() {
39380
- };
39381
- var PROTOTYPE$1 = "prototype";
39382
- var createDict = function() {
39383
- var iframe = require_domCreate()("iframe");
39384
- var i2 = enumBugKeys.length;
39385
- var lt2 = "<";
39386
- var gt2 = ">";
39387
- var iframeDocument;
39388
- iframe.style.display = "none";
39389
- require_html().appendChild(iframe);
39390
- iframe.src = "javascript:";
39391
- iframeDocument = iframe.contentWindow.document;
39392
- iframeDocument.open();
39393
- iframeDocument.write(lt2 + "script" + gt2 + "document.F=Object" + lt2 + "/script" + gt2);
39394
- iframeDocument.close();
39395
- createDict = iframeDocument.F;
39396
- while (i2--)
39397
- delete createDict[PROTOTYPE$1][enumBugKeys[i2]];
39398
- return createDict();
39399
- };
39400
- var _objectCreate = Object.create || function create2(O, Properties) {
39401
- var result;
39402
- if (O !== null) {
39403
- Empty$2[PROTOTYPE$1] = anObject$1(O);
39404
- result = new Empty$2();
39405
- Empty$2[PROTOTYPE$1] = null;
39406
- result[IE_PROTO$1] = O;
39407
- } else
39408
- result = createDict();
39409
- return Properties === void 0 ? result : dPs(result, Properties);
39410
- };
39462
+ var _objectCreate;
39463
+ var hasRequired_objectCreate;
39464
+ function require_objectCreate() {
39465
+ if (hasRequired_objectCreate)
39466
+ return _objectCreate;
39467
+ hasRequired_objectCreate = 1;
39468
+ var anObject2 = _anObject;
39469
+ var dPs = require_objectDps();
39470
+ var enumBugKeys2 = _enumBugKeys;
39471
+ var IE_PROTO2 = require_sharedKey()("IE_PROTO");
39472
+ var Empty2 = function() {
39473
+ };
39474
+ var PROTOTYPE2 = "prototype";
39475
+ var createDict = function() {
39476
+ var iframe = require_domCreate()("iframe");
39477
+ var i2 = enumBugKeys2.length;
39478
+ var lt2 = "<";
39479
+ var gt2 = ">";
39480
+ var iframeDocument;
39481
+ iframe.style.display = "none";
39482
+ require_html().appendChild(iframe);
39483
+ iframe.src = "javascript:";
39484
+ iframeDocument = iframe.contentWindow.document;
39485
+ iframeDocument.open();
39486
+ iframeDocument.write(lt2 + "script" + gt2 + "document.F=Object" + lt2 + "/script" + gt2);
39487
+ iframeDocument.close();
39488
+ createDict = iframeDocument.F;
39489
+ while (i2--)
39490
+ delete createDict[PROTOTYPE2][enumBugKeys2[i2]];
39491
+ return createDict();
39492
+ };
39493
+ _objectCreate = Object.create || function create5(O, Properties) {
39494
+ var result;
39495
+ if (O !== null) {
39496
+ Empty2[PROTOTYPE2] = anObject2(O);
39497
+ result = new Empty2();
39498
+ Empty2[PROTOTYPE2] = null;
39499
+ result[IE_PROTO2] = O;
39500
+ } else
39501
+ result = createDict();
39502
+ return Properties === void 0 ? result : dPs(result, Properties);
39503
+ };
39504
+ return _objectCreate;
39505
+ }
39411
39506
  var _wks = { exports: {} };
39412
39507
  var store = _sharedExports("wks");
39413
39508
  var uid$2 = _uid;
@@ -39425,7 +39520,7 @@ var _setToStringTag = function(it, tag2, stat) {
39425
39520
  if (it && !has$8(it = stat ? it : it.prototype, TAG))
39426
39521
  def$1(it, TAG, { configurable: true, value: tag2 });
39427
39522
  };
39428
- var create$b = _objectCreate;
39523
+ var create$b = require_objectCreate();
39429
39524
  var descriptor = _propertyDesc;
39430
39525
  var setToStringTag$2 = _setToStringTag;
39431
39526
  var IteratorPrototype$2 = {};
@@ -39438,7 +39533,7 @@ var _iterCreate = function(Constructor, NAME2, next3) {
39438
39533
  };
39439
39534
  var has$7 = _has$1;
39440
39535
  var toObject$2 = _toObject;
39441
- var IE_PROTO = _sharedKey("IE_PROTO");
39536
+ var IE_PROTO = require_sharedKey()("IE_PROTO");
39442
39537
  var ObjectProto$1 = Object.prototype;
39443
39538
  var _objectGpo = Object.getPrototypeOf || function(O) {
39444
39539
  O = toObject$2(O);
@@ -39601,23 +39696,23 @@ var setMeta = function(it) {
39601
39696
  // weak collections IDs
39602
39697
  } });
39603
39698
  };
39604
- var fastKey = function(it, create6) {
39699
+ var fastKey = function(it, create5) {
39605
39700
  if (!isObject$h(it))
39606
39701
  return typeof it == "symbol" ? it : (typeof it == "string" ? "S" : "P") + it;
39607
39702
  if (!has$6(it, META$1)) {
39608
39703
  if (!isExtensible(it))
39609
39704
  return "F";
39610
- if (!create6)
39705
+ if (!create5)
39611
39706
  return "E";
39612
39707
  setMeta(it);
39613
39708
  }
39614
39709
  return it[META$1].i;
39615
39710
  };
39616
- var getWeak = function(it, create6) {
39711
+ var getWeak = function(it, create5) {
39617
39712
  if (!has$6(it, META$1)) {
39618
39713
  if (!isExtensible(it))
39619
39714
  return true;
39620
- if (!create6)
39715
+ if (!create5)
39621
39716
  return false;
39622
39717
  setMeta(it);
39623
39718
  }
@@ -39726,7 +39821,7 @@ var toObject$1 = _toObject;
39726
39821
  var toIObject = _toIobject;
39727
39822
  var toPrimitive = _toPrimitive;
39728
39823
  var createDesc = _propertyDesc;
39729
- var _create$1 = _objectCreate;
39824
+ var _create$1 = require_objectCreate();
39730
39825
  var gOPNExt = _objectGopnExt;
39731
39826
  var $GOPD = _objectGopd;
39732
39827
  var $GOPS = _objectGops;
@@ -39793,7 +39888,7 @@ var $defineProperty$1 = function defineProperty2(it, key2, D2) {
39793
39888
  }
39794
39889
  return dP(it, key2, D2);
39795
39890
  };
39796
- var $defineProperties = function defineProperties2(it, P2) {
39891
+ var $defineProperties = function defineProperties(it, P2) {
39797
39892
  anObject(it);
39798
39893
  var keys4 = enumKeys(P2 = toIObject(P2));
39799
39894
  var i2 = 0;
@@ -39803,7 +39898,7 @@ var $defineProperties = function defineProperties2(it, P2) {
39803
39898
  $defineProperty$1(it, key2 = keys4[i2++], P2[key2]);
39804
39899
  return it;
39805
39900
  };
39806
- var $create = function create3(it, P2) {
39901
+ var $create = function create2(it, P2) {
39807
39902
  return P2 === void 0 ? _create$1(it) : $defineProperties(_create$1(it), P2);
39808
39903
  };
39809
39904
  var $propertyIsEnumerable = function propertyIsEnumerable(key2) {
@@ -40030,9 +40125,9 @@ $export$1($export$1.S, "Object", { setPrototypeOf: require_setProto().set });
40030
40125
  var setPrototypeOf$2 = _coreExports.Object.setPrototypeOf;
40031
40126
  var setPrototypeOf$1 = { "default": setPrototypeOf$2, __esModule: true };
40032
40127
  var $export = _export;
40033
- $export($export.S, "Object", { create: _objectCreate });
40128
+ $export($export.S, "Object", { create: require_objectCreate() });
40034
40129
  var $Object$1 = _coreExports.Object;
40035
- var create$a = function create4(P2, D2) {
40130
+ var create$a = function create3(P2, D2) {
40036
40131
  return $Object$1.create(P2, D2);
40037
40132
  };
40038
40133
  var create$9 = { "default": create$a, __esModule: true };
@@ -54740,7 +54835,7 @@ const isPureObject = (x2) => isObject$4(x2) && x2.constructor === {}.constructor
54740
54835
  const isIterable$1 = (x2) => x2 && typeof x2[Symbol.iterator] === "function";
54741
54836
  const isAsyncIterable$1 = (x2) => x2 && typeof x2[Symbol.asyncIterator] === "function";
54742
54837
  const isResponse = (x2) => typeof Response !== "undefined" && x2 instanceof Response || x2 && x2.arrayBuffer && x2.text && x2.json;
54743
- const isBlob = (x2) => typeof Blob !== "undefined" && x2 instanceof Blob;
54838
+ const isBlob$1 = (x2) => typeof Blob !== "undefined" && x2 instanceof Blob;
54744
54839
  const isBuffer$2 = (x2) => x2 && typeof x2 === "object" && x2.isBuffer;
54745
54840
  const isReadableDOMStream = (x2) => typeof ReadableStream !== "undefined" && x2 instanceof ReadableStream || isObject$4(x2) && isFunction$4(x2.tee) && isFunction$4(x2.cancel) && isFunction$4(x2.getReader);
54746
54841
  const isReadableNodeStream = (x2) => isObject$4(x2) && isFunction$4(x2.read) && isFunction$4(x2.pipe) && isBoolean$4(x2.readable);
@@ -54771,7 +54866,7 @@ function getResourceUrlAndType(resource) {
54771
54866
  type: parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(url)
54772
54867
  };
54773
54868
  }
54774
- if (isBlob(resource)) {
54869
+ if (isBlob$1(resource)) {
54775
54870
  return {
54776
54871
  url: stripQueryString(resource.name || ""),
54777
54872
  type: resource.type || ""
@@ -54792,7 +54887,7 @@ function getResourceContentLength(resource) {
54792
54887
  if (isResponse(resource)) {
54793
54888
  return resource.headers["content-length"] || -1;
54794
54889
  }
54795
- if (isBlob(resource)) {
54890
+ if (isBlob$1(resource)) {
54796
54891
  return resource.size;
54797
54892
  }
54798
54893
  if (typeof resource === "string") {
@@ -55695,7 +55790,7 @@ async function selectLoader(data2, loaders = [], options, context2) {
55695
55790
  if (loader2) {
55696
55791
  return loader2;
55697
55792
  }
55698
- if (isBlob(data2)) {
55793
+ if (isBlob$1(data2)) {
55699
55794
  data2 = await data2.slice(0, 10).arrayBuffer();
55700
55795
  loader2 = selectLoaderSync(data2, loaders, options, context2);
55701
55796
  }
@@ -55949,7 +56044,7 @@ function makeIterator(data2, options) {
55949
56044
  if (data2 instanceof ArrayBuffer) {
55950
56045
  return makeArrayBufferIterator(data2, options);
55951
56046
  }
55952
- if (isBlob(data2)) {
56047
+ if (isBlob$1(data2)) {
55953
56048
  return makeBlobIterator(data2, options);
55954
56049
  }
55955
56050
  if (isReadableStream(data2)) {
@@ -55996,7 +56091,7 @@ async function getArrayBufferOrStringFromData(data2, loader2, options) {
55996
56091
  if (typeof data2 === "string" || isArrayBuffer) {
55997
56092
  return getArrayBufferOrStringFromDataSync(data2, loader2);
55998
56093
  }
55999
- if (isBlob(data2)) {
56094
+ if (isBlob$1(data2)) {
56000
56095
  data2 = await makeResponse(data2);
56001
56096
  }
56002
56097
  if (isResponse(data2)) {
@@ -56115,7 +56210,7 @@ async function load$2(url, loaders, options, context2) {
56115
56210
  if (typeof url === "string") {
56116
56211
  data2 = await fetch2(url);
56117
56212
  }
56118
- if (isBlob(url)) {
56213
+ if (isBlob$1(url)) {
56119
56214
  data2 = await fetch2(url);
56120
56215
  }
56121
56216
  return await parse$b(data2, loaders, options);
@@ -64340,7 +64435,7 @@ function assert$7(condition, message) {
64340
64435
  }
64341
64436
  const RADIANS_TO_DEGREES$2 = 1 / Math.PI * 180;
64342
64437
  const DEGREES_TO_RADIANS$7 = 1 / 180 * Math.PI;
64343
- const config$2 = {
64438
+ const config$3 = {
64344
64439
  EPSILON: 1e-12,
64345
64440
  debug: false,
64346
64441
  precision: 4,
@@ -64350,13 +64445,13 @@ const config$2 = {
64350
64445
  };
64351
64446
  function configure(options) {
64352
64447
  for (const key2 in options) {
64353
- assert$7(key2 in config$2);
64354
- config$2[key2] = options[key2];
64448
+ assert$7(key2 in config$3);
64449
+ config$3[key2] = options[key2];
64355
64450
  }
64356
- return config$2;
64451
+ return config$3;
64357
64452
  }
64358
64453
  function formatValue$4(value2, {
64359
- precision = config$2.precision
64454
+ precision = config$3.precision
64360
64455
  } = {}) {
64361
64456
  value2 = round$3(value2);
64362
64457
  return "".concat(parseFloat(value2.toPrecision(precision)));
@@ -64407,9 +64502,9 @@ function lerp$7(a2, b2, t4) {
64407
64502
  return t4 * b2 + (1 - t4) * a2;
64408
64503
  }
64409
64504
  function equals$3(a2, b2, epsilon3) {
64410
- const oldEpsilon = config$2.EPSILON;
64505
+ const oldEpsilon = config$3.EPSILON;
64411
64506
  if (epsilon3) {
64412
- config$2.EPSILON = epsilon3;
64507
+ config$3.EPSILON = epsilon3;
64413
64508
  }
64414
64509
  try {
64415
64510
  if (a2 === b2) {
@@ -64433,11 +64528,11 @@ function equals$3(a2, b2, epsilon3) {
64433
64528
  return b2.equals(a2);
64434
64529
  }
64435
64530
  if (typeof a2 === "number" && typeof b2 === "number") {
64436
- return Math.abs(a2 - b2) <= config$2.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2));
64531
+ return Math.abs(a2 - b2) <= config$3.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2));
64437
64532
  }
64438
64533
  return false;
64439
64534
  } finally {
64440
- config$2.EPSILON = oldEpsilon;
64535
+ config$3.EPSILON = oldEpsilon;
64441
64536
  }
64442
64537
  }
64443
64538
  function exactEquals(a2, b2) {
@@ -64466,18 +64561,18 @@ function exactEquals(a2, b2) {
64466
64561
  return false;
64467
64562
  }
64468
64563
  function withEpsilon(epsilon3, func) {
64469
- const oldPrecision = config$2.EPSILON;
64470
- config$2.EPSILON = epsilon3;
64564
+ const oldPrecision = config$3.EPSILON;
64565
+ config$3.EPSILON = epsilon3;
64471
64566
  let value2;
64472
64567
  try {
64473
64568
  value2 = func();
64474
64569
  } finally {
64475
- config$2.EPSILON = oldPrecision;
64570
+ config$3.EPSILON = oldPrecision;
64476
64571
  }
64477
64572
  return value2;
64478
64573
  }
64479
64574
  function round$3(value2) {
64480
- return Math.round(value2 / config$2.EPSILON) * config$2.EPSILON;
64575
+ return Math.round(value2 / config$3.EPSILON) * config$3.EPSILON;
64481
64576
  }
64482
64577
  function duplicateArray(array2) {
64483
64578
  return array2.clone ? array2.clone() : new Array(array2.length);
@@ -64546,7 +64641,7 @@ class MathArray extends _extendableBuiltin(Array) {
64546
64641
  return new Float32Array(this);
64547
64642
  }
64548
64643
  toString() {
64549
- return this.formatString(config$2);
64644
+ return this.formatString(config$3);
64550
64645
  }
64551
64646
  formatString(opts2) {
64552
64647
  let string2 = "";
@@ -64646,7 +64741,7 @@ class MathArray extends _extendableBuiltin(Array) {
64646
64741
  return this.check();
64647
64742
  }
64648
64743
  check() {
64649
- if (config$2.debug && !this.validate()) {
64744
+ if (config$3.debug && !this.validate()) {
64650
64745
  throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
64651
64746
  }
64652
64747
  return this;
@@ -64713,7 +64808,7 @@ function checkNumber(value2) {
64713
64808
  return value2;
64714
64809
  }
64715
64810
  function checkVector(v, length2, callerName = "") {
64716
- if (config$2.debug && !validateVector(v, length2)) {
64811
+ if (config$3.debug && !validateVector(v, length2)) {
64717
64812
  throw new Error("math.gl: ".concat(callerName, " some fields set to invalid numbers'"));
64718
64813
  }
64719
64814
  return v;
@@ -64971,7 +65066,7 @@ class Vector2 extends Vector {
64971
65066
  if (isArray$3(x2) && arguments.length === 1) {
64972
65067
  this.copy(x2);
64973
65068
  } else {
64974
- if (config$2.debug) {
65069
+ if (config$3.debug) {
64975
65070
  checkNumber(x2);
64976
65071
  checkNumber(y2);
64977
65072
  }
@@ -64990,7 +65085,7 @@ class Vector2 extends Vector {
64990
65085
  return this.check();
64991
65086
  }
64992
65087
  fromObject(object2) {
64993
- if (config$2.debug) {
65088
+ if (config$3.debug) {
64994
65089
  checkNumber(object2.x);
64995
65090
  checkNumber(object2.y);
64996
65091
  }
@@ -65243,7 +65338,7 @@ class Vector3 extends Vector {
65243
65338
  if (arguments.length === 1 && isArray$3(x2)) {
65244
65339
  this.copy(x2);
65245
65340
  } else {
65246
- if (config$2.debug) {
65341
+ if (config$3.debug) {
65247
65342
  checkNumber(x2);
65248
65343
  checkNumber(y2);
65249
65344
  checkNumber(z2);
@@ -65266,7 +65361,7 @@ class Vector3 extends Vector {
65266
65361
  return this.check();
65267
65362
  }
65268
65363
  fromObject(object2) {
65269
- if (config$2.debug) {
65364
+ if (config$3.debug) {
65270
65365
  checkNumber(object2.x);
65271
65366
  checkNumber(object2.y);
65272
65367
  checkNumber(object2.z);
@@ -65357,7 +65452,7 @@ class Vector4 extends Vector {
65357
65452
  if (isArray$3(x2) && arguments.length === 1) {
65358
65453
  this.copy(x2);
65359
65454
  } else {
65360
- if (config$2.debug) {
65455
+ if (config$3.debug) {
65361
65456
  checkNumber(x2);
65362
65457
  checkNumber(y2);
65363
65458
  checkNumber(z2);
@@ -65384,7 +65479,7 @@ class Vector4 extends Vector {
65384
65479
  return this.check();
65385
65480
  }
65386
65481
  fromObject(object2) {
65387
- if (config$2.debug) {
65482
+ if (config$3.debug) {
65388
65483
  checkNumber(object2.x);
65389
65484
  checkNumber(object2.y);
65390
65485
  checkNumber(object2.z);
@@ -65442,7 +65537,7 @@ class Vector4 extends Vector {
65442
65537
  let Matrix$1 = class Matrix extends MathArray {
65443
65538
  toString() {
65444
65539
  let string2 = "[";
65445
- if (config$2.printRowMajor) {
65540
+ if (config$3.printRowMajor) {
65446
65541
  string2 += "row-major:";
65447
65542
  for (let row = 0; row < this.RANK; ++row) {
65448
65543
  for (let col = 0; col < this.RANK; ++col) {
@@ -67305,7 +67400,7 @@ class SphericalCoordinates {
67305
67400
  this.check();
67306
67401
  }
67307
67402
  toString() {
67308
- return this.formatString(config$2);
67403
+ return this.formatString(config$3);
67309
67404
  }
67310
67405
  formatString({
67311
67406
  printTypes = false
@@ -93831,11 +93926,11 @@ class Tileset2D {
93831
93926
  this._dirty = false;
93832
93927
  }
93833
93928
  }
93834
- _getTile(index2, create6) {
93929
+ _getTile(index2, create5) {
93835
93930
  const id2 = this.getTileId(index2);
93836
93931
  let tile = this._cache.get(id2);
93837
93932
  let needsReload = false;
93838
- if (!tile && create6) {
93933
+ if (!tile && create5) {
93839
93934
  tile = new Tile2DHeader(index2);
93840
93935
  Object.assign(tile, this.getTileMetadata(tile.index));
93841
93936
  Object.assign(tile, {
@@ -110880,7 +110975,7 @@ function fromCartographic(cartographic, result = [], map2 = identity$f) {
110880
110975
  return result;
110881
110976
  }
110882
110977
  function fromCartographicToRadians(cartographic, vector = []) {
110883
- return fromCartographic(cartographic, vector, config$2._cartographicRadians ? identity$f : toRadians);
110978
+ return fromCartographic(cartographic, vector, config$3._cartographicRadians ? identity$f : toRadians);
110884
110979
  }
110885
110980
  function toCartographic(vector, cartographic, map2 = identity$f) {
110886
110981
  if ("longitude" in cartographic) {
@@ -110899,7 +110994,7 @@ function toCartographic(vector, cartographic, map2 = identity$f) {
110899
110994
  return cartographic;
110900
110995
  }
110901
110996
  function toCartographicFromRadians(vector, cartographic) {
110902
- return toCartographic(vector, cartographic, config$2._cartographicRadians ? identity$f : toDegrees);
110997
+ return toCartographic(vector, cartographic, config$3._cartographicRadians ? identity$f : toDegrees);
110903
110998
  }
110904
110999
  const scratchVector$4 = new Vector3();
110905
111000
  const scaleToGeodeticSurfaceIntersection = new Vector3();
@@ -122085,7 +122180,7 @@ var defineProperty$2 = function(object2, name2, value2, predicate) {
122085
122180
  object2[name2] = value2;
122086
122181
  }
122087
122182
  };
122088
- var defineProperties3 = function(object2, map2) {
122183
+ var defineProperties2 = function(object2, map2) {
122089
122184
  var predicates = arguments.length > 2 ? arguments[2] : {};
122090
122185
  var props2 = keys$4(map2);
122091
122186
  if (hasSymbols2) {
@@ -122095,8 +122190,8 @@ var defineProperties3 = function(object2, map2) {
122095
122190
  defineProperty$2(object2, props2[i2], map2[props2[i2]], predicates[props2[i2]]);
122096
122191
  }
122097
122192
  };
122098
- defineProperties3.supportsDescriptors = !!supportsDescriptors$2;
122099
- var defineProperties_1 = defineProperties3;
122193
+ defineProperties2.supportsDescriptors = !!supportsDescriptors$2;
122194
+ var defineProperties_1 = defineProperties2;
122100
122195
  var numberIsNaN = function(value2) {
122101
122196
  return value2 !== value2;
122102
122197
  };
@@ -123454,14 +123549,14 @@ var jsts_min = { exports: {} };
123454
123549
  return 1e-15;
123455
123550
  }, Object.defineProperties(q, B2);
123456
123551
  var V = function() {
123457
- }, U = { X: { configurable: true }, Y: { configurable: true }, Z: { configurable: true }, M: { configurable: true } };
123458
- U.X.get = function() {
123552
+ }, U2 = { X: { configurable: true }, Y: { configurable: true }, Z: { configurable: true }, M: { configurable: true } };
123553
+ U2.X.get = function() {
123459
123554
  return 0;
123460
- }, U.Y.get = function() {
123555
+ }, U2.Y.get = function() {
123461
123556
  return 1;
123462
- }, U.Z.get = function() {
123557
+ }, U2.Z.get = function() {
123463
123558
  return 2;
123464
- }, U.M.get = function() {
123559
+ }, U2.M.get = function() {
123465
123560
  return 3;
123466
123561
  }, V.prototype.setOrdinate = function(t5, e4, n4) {
123467
123562
  }, V.prototype.size = function() {
@@ -123479,7 +123574,7 @@ var jsts_min = { exports: {} };
123479
123574
  return [x2];
123480
123575
  }, V.prototype.getClass = function() {
123481
123576
  return V;
123482
- }, Object.defineProperties(V, U);
123577
+ }, Object.defineProperties(V, U2);
123483
123578
  var z2 = function() {
123484
123579
  }, X3 = function(t5) {
123485
123580
  function e4() {
@@ -151889,7 +151984,7 @@ const esm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty(
151889
151984
  atan: atan$3,
151890
151985
  clamp: clamp$3,
151891
151986
  clone: clone$9,
151892
- config: config$2,
151987
+ config: config$3,
151893
151988
  configure,
151894
151989
  cos: cos$5,
151895
151990
  degrees: degrees$5,
@@ -156326,16 +156421,16 @@ async function getDecoder(fileDirectory) {
156326
156421
  const Decoder = await importFn();
156327
156422
  return new Decoder(fileDirectory);
156328
156423
  }
156329
- addDecoder([void 0, 1], () => import("./raw-3e7d0813.js").then((m2) => m2.default));
156330
- addDecoder(5, () => import("./lzw-754fdaeb.js").then((m2) => m2.default));
156424
+ addDecoder([void 0, 1], () => import("./raw-5ddb5b7f.js").then((m2) => m2.default));
156425
+ addDecoder(5, () => import("./lzw-ee8021e0.js").then((m2) => m2.default));
156331
156426
  addDecoder(6, () => {
156332
156427
  throw new Error("old style JPEG compression is not supported.");
156333
156428
  });
156334
- addDecoder(7, () => import("./jpeg-02d5fbb9.js").then((m2) => m2.default));
156335
- addDecoder([8, 32946], () => import("./deflate-9e23a7db.js").then((m2) => m2.default));
156336
- addDecoder(32773, () => import("./packbits-d34edbf8.js").then((m2) => m2.default));
156337
- addDecoder(34887, () => import("./lerc-4ac97b0f.js").then((m2) => m2.default));
156338
- addDecoder(50001, () => import("./webimage-2385de92.js").then((m2) => m2.default));
156429
+ addDecoder(7, () => import("./jpeg-773ebeec.js").then((m2) => m2.default));
156430
+ addDecoder([8, 32946], () => import("./deflate-8ecc37d7.js").then((m2) => m2.default));
156431
+ addDecoder(32773, () => import("./packbits-40c62302.js").then((m2) => m2.default));
156432
+ addDecoder(34887, () => import("./lerc-cd64e4aa.js").then((m2) => m2.default));
156433
+ addDecoder(50001, () => import("./webimage-50369c59.js").then((m2) => m2.default));
156339
156434
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
156340
156435
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
156341
156436
  }
@@ -161340,14 +161435,14 @@ const makeTable = () => {
161340
161435
  return table;
161341
161436
  };
161342
161437
  const crcTable = new Uint32Array(makeTable());
161343
- const crc32 = (crc, buf, len2, pos) => {
161438
+ const crc32 = (crc2, buf, len2, pos) => {
161344
161439
  const t4 = crcTable;
161345
161440
  const end = pos + len2;
161346
- crc ^= -1;
161441
+ crc2 ^= -1;
161347
161442
  for (let i2 = pos; i2 < end; i2++) {
161348
- crc = crc >>> 8 ^ t4[(crc ^ buf[i2]) & 255];
161443
+ crc2 = crc2 >>> 8 ^ t4[(crc2 ^ buf[i2]) & 255];
161349
161444
  }
161350
- return crc ^ -1;
161445
+ return crc2 ^ -1;
161351
161446
  };
161352
161447
  var crc32_1 = crc32;
161353
161448
  var messages = {
@@ -163549,7 +163644,7 @@ const updatewindow = (strm, src2, end, copy2) => {
163549
163644
  }
163550
163645
  return 0;
163551
163646
  };
163552
- const inflate = (strm, flush2) => {
163647
+ const inflate$1 = (strm, flush2) => {
163553
163648
  let state;
163554
163649
  let input, output2;
163555
163650
  let next3;
@@ -164506,7 +164601,7 @@ var inflateReset2_1 = inflateReset2;
164506
164601
  var inflateResetKeep_1 = inflateResetKeep;
164507
164602
  var inflateInit_1 = inflateInit;
164508
164603
  var inflateInit2_1 = inflateInit2;
164509
- var inflate_2 = inflate;
164604
+ var inflate_2 = inflate$1;
164510
164605
  var inflateEnd_1 = inflateEnd;
164511
164606
  var inflateGetHeader_1 = inflateGetHeader;
164512
164607
  var inflateSetDictionary_1 = inflateSetDictionary;
@@ -164688,22 +164783,22 @@ Inflate.prototype.onEnd = function(status) {
164688
164783
  this.err = status;
164689
164784
  this.msg = this.strm.msg;
164690
164785
  };
164691
- function inflate$1(input, options) {
164786
+ function inflate$1$1(input, options) {
164692
164787
  const inflator = new Inflate(options);
164693
164788
  inflator.push(input);
164694
164789
  if (inflator.err)
164695
164790
  throw inflator.msg || messages[inflator.err];
164696
164791
  return inflator.result;
164697
164792
  }
164698
- function inflateRaw(input, options) {
164793
+ function inflateRaw$1(input, options) {
164699
164794
  options = options || {};
164700
164795
  options.raw = true;
164701
- return inflate$1(input, options);
164796
+ return inflate$1$1(input, options);
164702
164797
  }
164703
164798
  var Inflate_1 = Inflate;
164704
- var inflate_2$1 = inflate$1;
164705
- var inflateRaw_1 = inflateRaw;
164706
- var ungzip = inflate$1;
164799
+ var inflate_2$1 = inflate$1$1;
164800
+ var inflateRaw_1 = inflateRaw$1;
164801
+ var ungzip = inflate$1$1;
164707
164802
  var constants$2$1 = constants$3;
164708
164803
  var inflate_1$1 = {
164709
164804
  Inflate: Inflate_1,
@@ -164713,14 +164808,14 @@ var inflate_1$1 = {
164713
164808
  constants: constants$2$1
164714
164809
  };
164715
164810
  const { Deflate: Deflate$1, deflate: deflate$2, deflateRaw: deflateRaw$1, gzip: gzip$1 } = deflate_1$1;
164716
- const { Inflate: Inflate$1, inflate: inflate$2, inflateRaw: inflateRaw$1, ungzip: ungzip$1 } = inflate_1$1;
164811
+ const { Inflate: Inflate$1, inflate: inflate$2, inflateRaw: inflateRaw$1$1, ungzip: ungzip$1 } = inflate_1$1;
164717
164812
  var Deflate_1$1 = Deflate$1;
164718
164813
  var deflate_1$2 = deflate$2;
164719
164814
  var deflateRaw_1$1 = deflateRaw$1;
164720
164815
  var gzip_1$1 = gzip$1;
164721
164816
  var Inflate_1$1 = Inflate$1;
164722
164817
  var inflate_1$2 = inflate$2;
164723
- var inflateRaw_1$1 = inflateRaw$1;
164818
+ var inflateRaw_1$1 = inflateRaw$1$1;
164724
164819
  var ungzip_1 = ungzip$1;
164725
164820
  var constants_1 = constants$3;
164726
164821
  var pako = {
@@ -165106,7 +165201,7 @@ var blosc_codec = function() {
165106
165201
  if (h2.length !== d.length)
165107
165202
  throw new La("Mismatched type converter count");
165108
165203
  for (var l2 = 0; l2 < d.length; ++l2)
165109
- U(d[l2], h2[l2]);
165204
+ U2(d[l2], h2[l2]);
165110
165205
  }
165111
165206
  var d = [];
165112
165207
  d.forEach(function(h2) {
@@ -165122,7 +165217,7 @@ var blosc_codec = function() {
165122
165217
  });
165123
165218
  0 === g2.length && c2(e3);
165124
165219
  }
165125
- function U(a2, b2, c2) {
165220
+ function U2(a2, b2, c2) {
165126
165221
  c2 = c2 || {};
165127
165222
  if (!("argPackAdvance" in b2))
165128
165223
  throw new TypeError("registerType registeredInstance requires argPackAdvance");
@@ -165317,7 +165412,7 @@ var blosc_codec = function() {
165317
165412
  }, z: function(a2, b2, c2, d, e3) {
165318
165413
  var g2 = Fa(c2);
165319
165414
  b2 = P2(b2);
165320
- U(a2, { name: b2, fromWireType: function(k) {
165415
+ U2(a2, { name: b2, fromWireType: function(k) {
165321
165416
  return !!k;
165322
165417
  }, toWireType: function(k, h2) {
165323
165418
  return h2 ? d : e3;
@@ -165334,7 +165429,7 @@ var blosc_codec = function() {
165334
165429
  }, M: null });
165335
165430
  }, y: function(a2, b2) {
165336
165431
  b2 = P2(b2);
165337
- U(a2, { name: b2, fromWireType: function(c2) {
165432
+ U2(a2, { name: b2, fromWireType: function(c2) {
165338
165433
  var d = V[c2].value;
165339
165434
  Qa(c2);
165340
165435
  return d;
@@ -165344,7 +165439,7 @@ var blosc_codec = function() {
165344
165439
  }, h: function(a2, b2, c2) {
165345
165440
  c2 = Fa(c2);
165346
165441
  b2 = P2(b2);
165347
- U(a2, { name: b2, fromWireType: function(d) {
165442
+ U2(a2, { name: b2, fromWireType: function(d) {
165348
165443
  return d;
165349
165444
  }, toWireType: function(d, e3) {
165350
165445
  if ("number" !== typeof e3 && "boolean" !== typeof e3)
@@ -165412,7 +165507,7 @@ var blosc_codec = function() {
165412
165507
  };
165413
165508
  }
165414
165509
  var l2 = -1 != b2.indexOf("unsigned");
165415
- U(a2, { name: b2, fromWireType: g2, toWireType: function(n3, p) {
165510
+ U2(a2, { name: b2, fromWireType: g2, toWireType: function(n3, p) {
165416
165511
  if ("number" !== typeof p && "boolean" !== typeof p)
165417
165512
  throw new TypeError('Cannot convert "' + Ta(p) + '" to ' + this.name);
165418
165513
  if (p < d || p > e3)
@@ -165431,11 +165526,11 @@ var blosc_codec = function() {
165431
165526
  }
165432
165527
  var e3 = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b2];
165433
165528
  c2 = P2(c2);
165434
- U(a2, { name: c2, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { U: true });
165529
+ U2(a2, { name: c2, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { U: true });
165435
165530
  }, i: function(a2, b2) {
165436
165531
  b2 = P2(b2);
165437
165532
  var c2 = "std::string" === b2;
165438
- U(a2, { name: b2, fromWireType: function(d) {
165533
+ U2(a2, { name: b2, fromWireType: function(d) {
165439
165534
  var e3 = G2[d >> 2];
165440
165535
  if (c2)
165441
165536
  for (var g2 = d + 4, k = 0; k <= e3; ++k) {
@@ -165502,7 +165597,7 @@ var blosc_codec = function() {
165502
165597
  4 === b2 && (d = na, e3 = oa, g2 = pa2, k = function() {
165503
165598
  return G2;
165504
165599
  }, h2 = 2);
165505
- U(a2, { name: c2, fromWireType: function(l2) {
165600
+ U2(a2, { name: c2, fromWireType: function(l2) {
165506
165601
  for (var n3 = G2[l2 >> 2], p = k(), q, x2 = l2 + 4, B2 = 0; B2 <= n3; ++B2) {
165507
165602
  var m2 = l2 + 4 + B2 * b2;
165508
165603
  if (B2 == n3 || 0 == p[m2 >> h2])
@@ -165522,7 +165617,7 @@ var blosc_codec = function() {
165522
165617
  } });
165523
165618
  }, A: function(a2, b2) {
165524
165619
  b2 = P2(b2);
165525
- U(a2, {
165620
+ U2(a2, {
165526
165621
  aa: true,
165527
165622
  name: b2,
165528
165623
  argPackAdvance: 0,
@@ -171821,10 +171916,10 @@ const $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== "undefined
171821
171916
  let $bdb11010cef70236$var$idsUpdaterMap = /* @__PURE__ */ new Map();
171822
171917
  function $bdb11010cef70236$export$f680877a34711e37(defaultId2) {
171823
171918
  let [value2, setValue] = useState(defaultId2);
171824
- let nextId = useRef(null);
171919
+ let nextId2 = useRef(null);
171825
171920
  let res = $b5e257d569688ac6$export$619500959fc48b26(value2);
171826
171921
  let updateValue = useCallback((val) => {
171827
- nextId.current = val;
171922
+ nextId2.current = val;
171828
171923
  }, []);
171829
171924
  $bdb11010cef70236$var$idsUpdaterMap.set(res, updateValue);
171830
171925
  $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(() => {
@@ -171836,9 +171931,9 @@ function $bdb11010cef70236$export$f680877a34711e37(defaultId2) {
171836
171931
  res
171837
171932
  ]);
171838
171933
  useEffect(() => {
171839
- let newId = nextId.current;
171934
+ let newId = nextId2.current;
171840
171935
  if (newId) {
171841
- nextId.current = null;
171936
+ nextId2.current = null;
171842
171937
  setValue(newId);
171843
171938
  }
171844
171939
  });
@@ -172598,18 +172693,18 @@ function selection_lower() {
172598
172693
  return this.each(lower);
172599
172694
  }
172600
172695
  function selection_append(name2) {
172601
- var create6 = typeof name2 === "function" ? name2 : creator(name2);
172696
+ var create5 = typeof name2 === "function" ? name2 : creator(name2);
172602
172697
  return this.select(function() {
172603
- return this.appendChild(create6.apply(this, arguments));
172698
+ return this.appendChild(create5.apply(this, arguments));
172604
172699
  });
172605
172700
  }
172606
172701
  function constantNull() {
172607
172702
  return null;
172608
172703
  }
172609
172704
  function selection_insert(name2, before) {
172610
- var create6 = typeof name2 === "function" ? name2 : creator(name2), select2 = before == null ? constantNull : typeof before === "function" ? before : selector(before);
172705
+ var create5 = typeof name2 === "function" ? name2 : creator(name2), select2 = before == null ? constantNull : typeof before === "function" ? before : selector(before);
172611
172706
  return this.select(function() {
172612
- return this.insertBefore(create6.apply(this, arguments), select2.apply(this, arguments) || null);
172707
+ return this.insertBefore(create5.apply(this, arguments), select2.apply(this, arguments) || null);
172613
172708
  });
172614
172709
  }
172615
172710
  function remove$1() {
@@ -175785,6 +175880,7 @@ function MultiLegend(props2) {
175785
175880
  spotLayerScopes,
175786
175881
  spotLayerCoordination,
175787
175882
  spotMultiExpressionExtents,
175883
+ spotMultiFeatureLabels,
175788
175884
  // Points
175789
175885
  pointLayerScopes,
175790
175886
  pointLayerCoordination
@@ -175817,32 +175913,15 @@ function MultiLegend(props2) {
175817
175913
  height: height2
175818
175914
  }, layerScope) : null;
175819
175915
  }) : null, spotLayerScopes ? reversedSpotLayerScopes.flatMap((layerScope) => {
175916
+ var _a3;
175820
175917
  const layerCoordination = spotLayerCoordination[0][layerScope];
175821
175918
  const { spatialLayerVisible, obsColorEncoding, featureValueColormap, featureValueColormapRange, obsType, featureType, featureValueType, featureSelection, spatialLayerColor, legendVisible, obsSetSelection, obsSetColor } = layerCoordination;
175822
175919
  const expressionExtents = spotMultiExpressionExtents == null ? void 0 : spotMultiExpressionExtents[layerScope];
175823
175920
  const firstExpressionExtent = expressionExtents == null ? void 0 : expressionExtents[0];
175824
175921
  const isStaticColor = obsColorEncoding === "spatialLayerColor";
175825
175922
  const height2 = isStaticColor ? 20 : 36;
175826
- return spatialLayerVisible && legendVisible ? jsxRuntimeExports.jsx(Legend, {
175827
- positionRelative: true,
175828
- highContrast: true,
175829
- showObsLabel: true,
175830
- visible: spatialLayerVisible,
175831
- theme,
175832
- obsType,
175833
- featureType,
175834
- featureValueType,
175835
- obsColorEncoding,
175836
- spatialLayerColor,
175837
- featureSelection,
175838
- // featureLabelsMap={featureLabelsMap} // TODO
175839
- featureValueColormap,
175840
- featureValueColormapRange,
175841
- extent: firstExpressionExtent,
175842
- height: height2,
175843
- obsSetSelection,
175844
- obsSetColor
175845
- }, layerScope) : null;
175923
+ const featureLabelsMap = (_a3 = spotMultiFeatureLabels == null ? void 0 : spotMultiFeatureLabels[layerScope]) == null ? void 0 : _a3.featureLabelsMap;
175924
+ return spatialLayerVisible && legendVisible ? jsxRuntimeExports.jsx(Legend, { positionRelative: true, highContrast: true, showObsLabel: true, visible: spatialLayerVisible, theme, obsType, featureType, featureValueType, obsColorEncoding, spatialLayerColor, featureSelection, featureLabelsMap, featureValueColormap, featureValueColormapRange, extent: firstExpressionExtent, height: height2, obsSetSelection, obsSetColor }, layerScope) : null;
175846
175925
  }) : null, segmentationLayerScopes ? reversedSegmentationLayerScopes.flatMap((layerScope) => {
175847
175926
  const layerCoordination = segmentationLayerCoordination[0][layerScope];
175848
175927
  const channelScopes = segmentationChannelScopesByLayer[layerScope];
@@ -176469,7 +176548,7 @@ function isFunctionNode(x2) {
176469
176548
  function isIndexNode(x2) {
176470
176549
  return x2 && x2.isIndexNode === true && x2.constructor.prototype.isNode === true || false;
176471
176550
  }
176472
- function isNode(x2) {
176551
+ function isNode$1(x2) {
176473
176552
  return x2 && x2.isNode === true && x2.constructor.prototype.isNode === true || false;
176474
176553
  }
176475
176554
  function isObjectNode(x2) {
@@ -176517,7 +176596,7 @@ function typeOf(x2) {
176517
176596
  return "Range";
176518
176597
  if (isResultSet(x2))
176519
176598
  return "ResultSet";
176520
- if (isNode(x2))
176599
+ if (isNode$1(x2))
176521
176600
  return x2.type;
176522
176601
  if (isChain(x2))
176523
176602
  return "Chain";
@@ -176619,13 +176698,13 @@ function pickShallow(object2, properties) {
176619
176698
  }
176620
176699
  var MATRIX_OPTIONS = ["Matrix", "Array"];
176621
176700
  var NUMBER_OPTIONS = ["number", "BigNumber", "Fraction"];
176622
- var config$1 = function config(options) {
176701
+ var config$2 = function config(options) {
176623
176702
  if (options) {
176624
176703
  throw new Error("The global config is readonly. \nPlease create a mathjs instance if you want to change the default configuration. \nExample:\n\n import { create, all } from 'mathjs';\n const mathjs = create(all);\n mathjs.config({ number: 'BigNumber' });\n");
176625
176704
  }
176626
176705
  return Object.freeze(DEFAULT_CONFIG);
176627
176706
  };
176628
- _extends$6(config$1, DEFAULT_CONFIG, {
176707
+ _extends$6(config$2, DEFAULT_CONFIG, {
176629
176708
  MATRIX_OPTIONS,
176630
176709
  NUMBER_OPTIONS
176631
176710
  });
@@ -176645,7 +176724,7 @@ var typedFunction$1 = { exports: {} };
176645
176724
  function undef() {
176646
176725
  return void 0;
176647
176726
  }
176648
- function create6() {
176727
+ function create5() {
176649
176728
  var _types = [
176650
176729
  { name: "number", test: function(x2) {
176651
176730
  return typeof x2 === "number";
@@ -177397,7 +177476,7 @@ var typedFunction$1 = { exports: {} };
177397
177476
  return createTypedFunction(name2, extractSignatures(fns));
177398
177477
  }
177399
177478
  });
177400
- typed2.create = create6;
177479
+ typed2.create = create5;
177401
177480
  typed2.types = _types;
177402
177481
  typed2.conversions = _conversions;
177403
177482
  typed2.ignore = _ignore;
@@ -177428,7 +177507,7 @@ var typedFunction$1 = { exports: {} };
177428
177507
  };
177429
177508
  return typed2;
177430
177509
  }
177431
- return create6();
177510
+ return create5();
177432
177511
  });
177433
177512
  })(typedFunction$1);
177434
177513
  var typedFunctionExports = typedFunction$1.exports;
@@ -178140,11 +178219,11 @@ function getArrayDataType(array2, typeOf2) {
178140
178219
  }
178141
178220
  return type2;
178142
178221
  }
178143
- function factory(name2, dependencies2, create6, meta2) {
178222
+ function factory(name2, dependencies2, create5, meta2) {
178144
178223
  function assertAndCreate(scope) {
178145
178224
  var deps = pickShallow(scope, dependencies2.map(stripOptionalNotation));
178146
178225
  assertDependencies(name2, dependencies2, scope);
178147
- return create6(deps);
178226
+ return create5(deps);
178148
178227
  }
178149
178228
  assertAndCreate.isFactory = true;
178150
178229
  assertAndCreate.fn = name2;
@@ -178391,7 +178470,7 @@ var createTyped = /* @__PURE__ */ factory("typed", dependencies$R, function crea
178391
178470
  },
178392
178471
  {
178393
178472
  name: "Node",
178394
- test: isNode
178473
+ test: isNode$1
178395
178474
  },
178396
178475
  {
178397
178476
  name: "ObjectNode",
@@ -180568,7 +180647,7 @@ function ceil$2(x2) {
180568
180647
  function clamp$1(x2, min2, max2) {
180569
180648
  return new this(x2).clamp(min2, max2);
180570
180649
  }
180571
- function config2(obj) {
180650
+ function config$1(obj) {
180572
180651
  if (!obj || typeof obj !== "object")
180573
180652
  throw Error(decimalError + "Object expected");
180574
180653
  var i2, p, v, useDefaults = obj.defaults === true, ps = [
@@ -180720,7 +180799,7 @@ function clone$1(obj) {
180720
180799
  Decimal2.ROUND_HALF_CEIL = 7;
180721
180800
  Decimal2.ROUND_HALF_FLOOR = 8;
180722
180801
  Decimal2.EUCLID = 9;
180723
- Decimal2.config = Decimal2.set = config2;
180802
+ Decimal2.config = Decimal2.set = config$1;
180724
180803
  Decimal2.clone = clone$1;
180725
180804
  Decimal2.isDecimal = isDecimalInstance;
180726
180805
  Decimal2.abs = abs$4;
@@ -191121,7 +191200,7 @@ var createDivide = /* @__PURE__ */ factory(name$2, dependencies$1, (_ref3) => {
191121
191200
  });
191122
191201
  var Complex = /* @__PURE__ */ createComplexClass({});
191123
191202
  var BigNumber = /* @__PURE__ */ createBigNumberClass({
191124
- config: config$1
191203
+ config: config$2
191125
191204
  });
191126
191205
  var Matrix2 = /* @__PURE__ */ createMatrixClass({});
191127
191206
  var Fraction = /* @__PURE__ */ createFractionClass({});
@@ -191138,7 +191217,7 @@ var isNumeric$1 = /* @__PURE__ */ createIsNumeric({
191138
191217
  typed
191139
191218
  });
191140
191219
  var equalScalar = /* @__PURE__ */ createEqualScalar({
191141
- config: config$1,
191220
+ config: config$2,
191142
191221
  typed
191143
191222
  });
191144
191223
  var number$9 = /* @__PURE__ */ createNumber({
@@ -191181,18 +191260,18 @@ var identity$8 = /* @__PURE__ */ createIdentity({
191181
191260
  BigNumber,
191182
191261
  DenseMatrix,
191183
191262
  SparseMatrix,
191184
- config: config$1,
191263
+ config: config$2,
191185
191264
  matrix,
191186
191265
  typed
191187
191266
  });
191188
191267
  var size$1 = /* @__PURE__ */ createSize({
191189
191268
  matrix,
191190
- config: config$1,
191269
+ config: config$2,
191191
191270
  typed
191192
191271
  });
191193
191272
  var zeros = /* @__PURE__ */ createZeros({
191194
191273
  BigNumber,
191195
- config: config$1,
191274
+ config: config$2,
191196
191275
  matrix,
191197
191276
  typed
191198
191277
  });
@@ -191208,20 +191287,20 @@ var compare$a = /* @__PURE__ */ createCompare({
191208
191287
  BigNumber,
191209
191288
  DenseMatrix,
191210
191289
  Fraction,
191211
- config: config$1,
191290
+ config: config$2,
191212
191291
  equalScalar,
191213
191292
  matrix,
191214
191293
  typed
191215
191294
  });
191216
191295
  var smaller = /* @__PURE__ */ createSmaller({
191217
191296
  DenseMatrix,
191218
- config: config$1,
191297
+ config: config$2,
191219
191298
  matrix,
191220
191299
  typed
191221
191300
  });
191222
191301
  var larger = /* @__PURE__ */ createLarger({
191223
191302
  DenseMatrix,
191224
- config: config$1,
191303
+ config: config$2,
191225
191304
  matrix,
191226
191305
  typed
191227
191306
  });
@@ -191237,7 +191316,7 @@ var dot = /* @__PURE__ */ createDot({
191237
191316
  typed
191238
191317
  });
191239
191318
  var floor$1 = /* @__PURE__ */ createFloor({
191240
- config: config$1,
191319
+ config: config$2,
191241
191320
  equalScalar,
191242
191321
  matrix,
191243
191322
  round: round$1,
@@ -191253,7 +191332,7 @@ var multiply = /* @__PURE__ */ createMultiply({
191253
191332
  });
191254
191333
  var pow$5 = /* @__PURE__ */ createPow({
191255
191334
  Complex,
191256
- config: config$1,
191335
+ config: config$2,
191257
191336
  fraction,
191258
191337
  identity: identity$8,
191259
191338
  matrix,
@@ -191285,7 +191364,7 @@ var equal$1 = /* @__PURE__ */ createEqual({
191285
191364
  typed
191286
191365
  });
191287
191366
  var ceil$1 = /* @__PURE__ */ createCeil({
191288
- config: config$1,
191367
+ config: config$2,
191289
191368
  equalScalar,
191290
191369
  matrix,
191291
191370
  round: round$1,
@@ -191355,7 +191434,7 @@ var Unit = /* @__PURE__ */ createUnitClass({
191355
191434
  Fraction,
191356
191435
  abs: abs$3,
191357
191436
  addScalar,
191358
- config: config$1,
191437
+ config: config$2,
191359
191438
  divideScalar,
191360
191439
  equal: equal$1,
191361
191440
  fix,
@@ -191830,14 +191909,14 @@ function normalizeCoordinateTransformations(coordinateTransformations, datasets)
191830
191909
  return result;
191831
191910
  }
191832
191911
  class NodeNotFoundError extends Error {
191833
- constructor(msg) {
191834
- super(msg);
191912
+ constructor(context2, options = {}) {
191913
+ super(`Node not found: ${context2}`, options);
191835
191914
  this.name = "NodeNotFoundError";
191836
191915
  }
191837
191916
  }
191838
191917
  class KeyError extends Error {
191839
- constructor(msg) {
191840
- super(msg);
191918
+ constructor(path2) {
191919
+ super(`Missing key: ${path2}`);
191841
191920
  this.name = "KeyError";
191842
191921
  }
191843
191922
  }
@@ -191948,56 +192027,56 @@ class ByteStringArray {
191948
192027
  _encoder = new WeakMap();
191949
192028
  const _UnicodeStringArray = class {
191950
192029
  constructor(chars, x2, byteOffset, length2) {
191951
- __publicField(this, "_data");
192030
+ __privateAdd(this, _data, void 0);
191952
192031
  __publicField(this, "chars");
191953
192032
  __privateAdd(this, _encode_buffer, void 0);
191954
192033
  this.chars = chars;
191955
192034
  if (typeof x2 === "number") {
191956
- this._data = new Int32Array(x2 * chars);
192035
+ __privateSet(this, _data, new Int32Array(x2 * chars));
191957
192036
  } else if (x2 instanceof ArrayBuffer) {
191958
192037
  if (length2)
191959
192038
  length2 *= chars;
191960
- this._data = new Int32Array(x2, byteOffset, length2);
192039
+ __privateSet(this, _data, new Int32Array(x2, byteOffset, length2));
191961
192040
  } else {
191962
192041
  const values3 = x2;
191963
192042
  const d = new _UnicodeStringArray(chars, 1);
191964
- this._data = new Int32Array(function* () {
192043
+ __privateSet(this, _data, new Int32Array(function* () {
191965
192044
  for (let str of values3) {
191966
192045
  d.set(0, str);
191967
- yield* d._data;
192046
+ yield* __privateGet(d, _data);
191968
192047
  }
191969
- }());
192048
+ }()));
191970
192049
  }
191971
192050
  __privateSet(this, _encode_buffer, new Int32Array(chars));
191972
192051
  }
191973
192052
  get BYTES_PER_ELEMENT() {
191974
- return this._data.BYTES_PER_ELEMENT * this.chars;
192053
+ return __privateGet(this, _data).BYTES_PER_ELEMENT * this.chars;
191975
192054
  }
191976
192055
  get byteLength() {
191977
- return this._data.byteLength;
192056
+ return __privateGet(this, _data).byteLength;
191978
192057
  }
191979
192058
  get byteOffset() {
191980
- return this._data.byteOffset;
192059
+ return __privateGet(this, _data).byteOffset;
191981
192060
  }
191982
192061
  /** @type {ArrayBuffer} */
191983
192062
  get buffer() {
191984
- return this._data.buffer;
192063
+ return __privateGet(this, _data).buffer;
191985
192064
  }
191986
192065
  /** @type {number} */
191987
192066
  get length() {
191988
- return this._data.length / this.chars;
192067
+ return __privateGet(this, _data).length / this.chars;
191989
192068
  }
191990
192069
  get(idx) {
191991
192070
  const offset6 = this.chars * idx;
191992
192071
  let result = "";
191993
192072
  for (let i2 = 0; i2 < this.chars; i2++) {
191994
- result += String.fromCodePoint(this._data[offset6 + i2]);
192073
+ result += String.fromCodePoint(__privateGet(this, _data)[offset6 + i2]);
191995
192074
  }
191996
192075
  return result.replace(/\u0000/g, "");
191997
192076
  }
191998
192077
  set(idx, value2) {
191999
192078
  const offset6 = this.chars * idx;
192000
- const view = this._data.subarray(offset6, offset6 + this.chars);
192079
+ const view = __privateGet(this, _data).subarray(offset6, offset6 + this.chars);
192001
192080
  view.fill(0);
192002
192081
  for (let i2 = 0; i2 < this.chars; i2++) {
192003
192082
  view[i2] = value2.codePointAt(i2) ?? 0;
@@ -192005,9 +192084,9 @@ const _UnicodeStringArray = class {
192005
192084
  }
192006
192085
  fill(value2) {
192007
192086
  this.set(0, value2);
192008
- let encoded = this._data.subarray(0, this.chars);
192087
+ let encoded = __privateGet(this, _data).subarray(0, this.chars);
192009
192088
  for (let i2 = 1; i2 < this.length; i2++) {
192010
- this._data.set(encoded, i2 * this.chars);
192089
+ __privateGet(this, _data).set(encoded, i2 * this.chars);
192011
192090
  }
192012
192091
  }
192013
192092
  *[Symbol.iterator]() {
@@ -192017,6 +192096,7 @@ const _UnicodeStringArray = class {
192017
192096
  }
192018
192097
  };
192019
192098
  let UnicodeStringArray = _UnicodeStringArray;
192099
+ _data = new WeakMap();
192020
192100
  _encode_buffer = new WeakMap();
192021
192101
  function json_decode_object(bytes) {
192022
192102
  const str = new TextDecoder().decode(bytes);
@@ -192382,8 +192462,115 @@ const _VLenUTF8 = class {
192382
192462
  let VLenUTF8 = _VLenUTF8;
192383
192463
  _shape2 = new WeakMap();
192384
192464
  _strides2 = new WeakMap();
192465
+ function throw_on_nan_replacer(_key, value2) {
192466
+ if (value2 !== value2) {
192467
+ throw new Error("JsonCodec allow_nan is false but NaN was encountered during encoding.");
192468
+ }
192469
+ if (value2 === Infinity) {
192470
+ throw new Error("JsonCodec allow_nan is false but Infinity was encountered during encoding.");
192471
+ }
192472
+ if (value2 === -Infinity) {
192473
+ throw new Error("JsonCodec allow_nan is false but -Infinity was encountered during encoding.");
192474
+ }
192475
+ return value2;
192476
+ }
192477
+ function sort_keys_replacer(_key, value2) {
192478
+ return value2 instanceof Object && !(value2 instanceof Array) ? Object.keys(value2).sort().reduce((sorted, key2) => {
192479
+ sorted[key2] = value2[key2];
192480
+ return sorted;
192481
+ }, {}) : value2;
192482
+ }
192483
+ const _JsonCodec = class {
192484
+ constructor(configuration) {
192485
+ __publicField(this, "configuration");
192486
+ __publicField(this, "kind", "array_to_bytes");
192487
+ __privateAdd(this, _encoder_config, void 0);
192488
+ __privateAdd(this, _decoder_config, void 0);
192489
+ this.configuration = configuration;
192490
+ const { encoding = "utf-8", skipkeys = false, ensure_ascii = true, check_circular = true, allow_nan = true, sort_keys = true, indent, strict = true } = configuration;
192491
+ let separators = configuration.separators;
192492
+ if (!separators) {
192493
+ if (!indent) {
192494
+ separators = [",", ":"];
192495
+ } else {
192496
+ separators = [", ", ": "];
192497
+ }
192498
+ }
192499
+ __privateSet(this, _encoder_config, {
192500
+ encoding,
192501
+ skipkeys,
192502
+ ensure_ascii,
192503
+ check_circular,
192504
+ allow_nan,
192505
+ indent,
192506
+ separators,
192507
+ sort_keys
192508
+ });
192509
+ __privateSet(this, _decoder_config, { strict });
192510
+ }
192511
+ static fromConfig(configuration) {
192512
+ return new _JsonCodec(configuration);
192513
+ }
192514
+ encode(buf) {
192515
+ const { indent, encoding, ensure_ascii, check_circular, allow_nan, sort_keys } = __privateGet(this, _encoder_config);
192516
+ if (encoding !== "utf-8") {
192517
+ throw new Error("JsonCodec does not yet support non-utf-8 encoding.");
192518
+ }
192519
+ const replacer_functions = [];
192520
+ if (!check_circular) {
192521
+ throw new Error("JsonCodec does not yet support skipping the check for circular references during encoding.");
192522
+ }
192523
+ if (!allow_nan) {
192524
+ replacer_functions.push(throw_on_nan_replacer);
192525
+ }
192526
+ if (sort_keys) {
192527
+ replacer_functions.push(sort_keys_replacer);
192528
+ }
192529
+ const items = Array.from(buf.data);
192530
+ items.push("|O");
192531
+ items.push(buf.shape);
192532
+ let replacer2 = void 0;
192533
+ if (replacer_functions.length) {
192534
+ replacer2 = function(key2, value2) {
192535
+ let new_value = value2;
192536
+ replacer_functions.forEach((sub_replacer) => {
192537
+ new_value = sub_replacer(key2, new_value);
192538
+ });
192539
+ return new_value;
192540
+ };
192541
+ }
192542
+ let json_str = JSON.stringify(items, replacer2, indent);
192543
+ if (ensure_ascii) {
192544
+ json_str = json_str.replace(/[\u007F-\uFFFF]/g, function(chr) {
192545
+ const full_str = "0000" + chr.charCodeAt(0).toString(16);
192546
+ const sub_str = full_str.substring(full_str.length - 4);
192547
+ return "\\u" + sub_str;
192548
+ });
192549
+ }
192550
+ return new TextEncoder().encode(json_str);
192551
+ }
192552
+ decode(bytes) {
192553
+ const { strict } = __privateGet(this, _decoder_config);
192554
+ if (!strict) {
192555
+ throw new Error("JsonCodec does not yet support non-strict decoding.");
192556
+ }
192557
+ const items = json_decode_object(bytes);
192558
+ const shape2 = items.pop();
192559
+ items.pop();
192560
+ if (!shape2) {
192561
+ throw new Error("0D not implemented for JsonCodec.");
192562
+ } else {
192563
+ const stride = get_strides(shape2, "C");
192564
+ const data2 = items;
192565
+ return { data: data2, shape: shape2, stride };
192566
+ }
192567
+ }
192568
+ };
192569
+ let JsonCodec = _JsonCodec;
192570
+ _encoder_config = new WeakMap();
192571
+ _decoder_config = new WeakMap();
192385
192572
  function create_default_registry() {
192386
- return (/* @__PURE__ */ new Map()).set("blosc", () => import("./blosc-0acfcf7e.js").then((m2) => m2.default)).set("gzip", () => import("./gzip-dd5ab7c8.js").then((m2) => m2.default)).set("lz4", () => import("./lz4-abb4416a.js").then((m2) => m2.default)).set("zlib", () => import("./zlib-cd823c38.js").then((m2) => m2.default)).set("zstd", () => import("./zstd-4072ca78.js").then((m2) => m2.default)).set("transpose", () => TransposeCodec).set("bytes", () => BytesCodec).set("crc32c", () => Crc32cCodec).set("vlen-utf8", () => VLenUTF8);
192573
+ return (/* @__PURE__ */ new Map()).set("blosc", () => import("./blosc-537fd004.js").then((m2) => m2.default)).set("gzip", () => import("./gzip-6a24f0fe.js").then((m2) => m2.default)).set("lz4", () => import("./lz4-bbd18009.js").then((m2) => m2.default)).set("zlib", () => import("./zlib-175cd38d.js").then((m2) => m2.default)).set("zstd", () => import("./zstd-ec5a40b8.js").then((m2) => m2.default)).set("transpose", () => TransposeCodec).set("bytes", () => BytesCodec).set("crc32c", () => Crc32cCodec).set("vlen-utf8", () => VLenUTF8).set("json2", () => JsonCodec);
192387
192574
  }
192388
192575
  const registry = create_default_registry();
192389
192576
  function create_codec_pipeline(chunk_metadata) {
@@ -192628,6 +192815,7 @@ let Array$1 = (_c = class extends Location {
192628
192815
  return is_dtype(this.dtype, query);
192629
192816
  }
192630
192817
  }, _b = CONTEXT_MARKER, _metadata2 = new WeakMap(), _c);
192818
+ let VERSION_COUNTER = create_version_counter();
192631
192819
  function create_version_counter() {
192632
192820
  let version_counts = /* @__PURE__ */ new WeakMap();
192633
192821
  function get_counts(store2) {
@@ -192645,7 +192833,6 @@ function create_version_counter() {
192645
192833
  }
192646
192834
  };
192647
192835
  }
192648
- let VERSION_COUNTER = create_version_counter();
192649
192836
  async function load_attrs(location) {
192650
192837
  let meta_bytes = await location.store.get(location.resolve(".zattrs").path);
192651
192838
  if (!meta_bytes)
@@ -192671,7 +192858,9 @@ async function open_array_v2(location, attrs) {
192671
192858
  let { path: path2 } = location.resolve(".zarray");
192672
192859
  let meta2 = await location.store.get(path2);
192673
192860
  if (!meta2) {
192674
- throw new NodeNotFoundError(path2);
192861
+ throw new NodeNotFoundError("v2 array", {
192862
+ cause: new KeyError(path2)
192863
+ });
192675
192864
  }
192676
192865
  VERSION_COUNTER.increment(location.store, "v2");
192677
192866
  return new Array$1(location.store, location.path, v2_to_v3_array_metadata(json_decode_object(meta2), attrs));
@@ -192680,7 +192869,9 @@ async function open_group_v2(location, attrs) {
192680
192869
  let { path: path2 } = location.resolve(".zgroup");
192681
192870
  let meta2 = await location.store.get(path2);
192682
192871
  if (!meta2) {
192683
- throw new NodeNotFoundError(path2);
192872
+ throw new NodeNotFoundError("v2 group", {
192873
+ cause: new KeyError(path2)
192874
+ });
192684
192875
  }
192685
192876
  VERSION_COUNTER.increment(location.store, "v2");
192686
192877
  return new Group$1(location.store, location.path, v2_to_v3_group_metadata(json_decode_object(meta2), attrs));
@@ -192689,7 +192880,9 @@ async function _open_v3(location) {
192689
192880
  let { store: store2, path: path2 } = location.resolve("zarr.json");
192690
192881
  let meta2 = await location.store.get(path2);
192691
192882
  if (!meta2) {
192692
- throw new NodeNotFoundError(path2);
192883
+ throw new NodeNotFoundError("v3 array or group", {
192884
+ cause: new KeyError(path2)
192885
+ });
192693
192886
  }
192694
192887
  let meta_doc = json_decode_object(meta2);
192695
192888
  if (meta_doc.node_type === "array" && (meta_doc.data_type === "uint64" || meta_doc.data_type === "int64") && meta_doc.fill_value != void 0) {
@@ -192711,8 +192904,8 @@ async function open_v3(location, options = {}) {
192711
192904
  throw new Error(`Expected node of kind ${options.kind}, found ${kind}.`);
192712
192905
  }
192713
192906
  async function open(location, options = {}) {
192714
- const store2 = "store" in location ? location.store : location;
192715
- const version_max = VERSION_COUNTER.version_max(store2);
192907
+ let store2 = "store" in location ? location.store : location;
192908
+ let version_max = VERSION_COUNTER.version_max(store2);
192716
192909
  let open_primary = version_max === "v2" ? open.v2 : open.v3;
192717
192910
  let open_secondary = version_max === "v2" ? open.v3 : open.v2;
192718
192911
  return open_primary(location, options).catch((err2) => {
@@ -192756,7 +192949,7 @@ function* product(...iterables) {
192756
192949
  results[i2] = iterators[i2].next();
192757
192950
  }
192758
192951
  }
192759
- function slice_indices(start, stop3, step2, length2) {
192952
+ function slice_indices({ start, stop: stop3, step: step2 }, length2) {
192760
192953
  if (step2 === 0) {
192761
192954
  throw new Error("slice step cannot be zero");
192762
192955
  }
@@ -192797,10 +192990,7 @@ function slice$4(start, stop3, step2 = null) {
192797
192990
  return {
192798
192991
  start,
192799
192992
  stop: stop3,
192800
- step: step2,
192801
- indices(length2) {
192802
- return slice_indices(this.start, this.stop, this.step, length2);
192803
- }
192993
+ step: step2
192804
192994
  };
192805
192995
  }
192806
192996
  function create_queue() {
@@ -192868,7 +193058,7 @@ class SliceDimIndexer {
192868
193058
  __publicField(this, "dim_chunk_len");
192869
193059
  __publicField(this, "nitems");
192870
193060
  __publicField(this, "nchunks");
192871
- const [start, stop3, step2] = dim_sel.indices(dim_len);
193061
+ const [start, stop3, step2] = slice_indices(dim_sel, dim_len);
192872
193062
  this.start = start;
192873
193063
  this.stop = stop3;
192874
193064
  this.step = step2;
@@ -192954,25 +193144,20 @@ function unwrap(arr, idx) {
192954
193144
  }
192955
193145
  async function get$7(arr, selection, opts2, setter2) {
192956
193146
  var _a3;
192957
- const context2 = get_context(arr);
192958
- const indexer = new BasicIndexer({
193147
+ let context2 = get_context(arr);
193148
+ let indexer = new BasicIndexer({
192959
193149
  selection,
192960
193150
  shape: arr.shape,
192961
193151
  chunk_shape: arr.chunks
192962
193152
  });
192963
- const out = setter2.prepare(new context2.TypedArray(indexer.shape.reduce((a2, b2) => a2 * b2, 1)), indexer.shape, context2.get_strides(indexer.shape, opts2.order));
192964
- const queue = ((_a3 = opts2.create_queue) == null ? void 0 : _a3.call(opts2)) ?? create_queue();
193153
+ let out = setter2.prepare(new context2.TypedArray(indexer.shape.reduce((a2, b2) => a2 * b2, 1)), indexer.shape, context2.get_strides(indexer.shape, opts2.order));
193154
+ let queue = ((_a3 = opts2.create_queue) == null ? void 0 : _a3.call(opts2)) ?? create_queue();
192965
193155
  for (const { chunk_coords, mapping } of indexer) {
192966
- queue.add(() => arr.getChunk(chunk_coords, opts2.opts).then(({ data: data2, shape: shape2, stride }) => {
192967
- const chunk = setter2.prepare(data2, shape2, stride);
193156
+ queue.add(async () => {
193157
+ let { data: data2, shape: shape2, stride } = await arr.getChunk(chunk_coords, opts2.opts);
193158
+ let chunk = setter2.prepare(data2, shape2, stride);
192968
193159
  setter2.set_from_chunk(out, chunk, mapping);
192969
- }).catch((err2) => {
192970
- if (!(err2 instanceof KeyError))
192971
- throw err2;
192972
- if (context2.fill_value) {
192973
- setter2.set_scalar(out, mapping.map((m2) => m2.to).filter((s2) => s2 !== null), context2.fill_value);
192974
- }
192975
- }));
193160
+ });
192976
193161
  }
192977
193162
  await queue.onIdle();
192978
193163
  return indexer.shape.length === 0 ? unwrap(out.data, 0) : out;
@@ -193125,6 +193310,9 @@ function set_from_chunk_binary(dest, src2, bytes_per_element2, projections2) {
193125
193310
  }, bytes_per_element2, projs);
193126
193311
  }
193127
193312
  }
193313
+ function strip_prefix(path2) {
193314
+ return path2.slice(1);
193315
+ }
193128
193316
  function fetch_range(url, offset6, length2, opts2 = {}) {
193129
193317
  if (offset6 !== void 0 && length2 !== void 0) {
193130
193318
  opts2 = {
@@ -193137,6 +193325,16 @@ function fetch_range(url, offset6, length2, opts2 = {}) {
193137
193325
  }
193138
193326
  return fetch(url, opts2);
193139
193327
  }
193328
+ function merge_init(storeOverrides, requestOverrides) {
193329
+ return {
193330
+ ...storeOverrides,
193331
+ ...requestOverrides,
193332
+ headers: {
193333
+ ...storeOverrides.headers,
193334
+ ...requestOverrides.headers
193335
+ }
193336
+ };
193337
+ }
193140
193338
  function resolve$1(root2, path2) {
193141
193339
  const base2 = typeof root2 === "string" ? new URL(root2) : root2;
193142
193340
  if (!base2.pathname.endsWith("/")) {
@@ -193201,14 +193399,7 @@ _overrides = new WeakMap();
193201
193399
  _use_suffix_request = new WeakMap();
193202
193400
  _merge_init = new WeakSet();
193203
193401
  merge_init_fn = function(overrides) {
193204
- return {
193205
- ...__privateGet(this, _overrides),
193206
- ...overrides,
193207
- headers: {
193208
- ...__privateGet(this, _overrides).headers,
193209
- ...overrides.headers
193210
- }
193211
- };
193402
+ return merge_init(__privateGet(this, _overrides), overrides);
193212
193403
  };
193213
193404
  const FetchStore$1 = FetchStore;
193214
193405
  function getV2DataType(dtype) {
@@ -193250,8 +193441,896 @@ function createZarrArrayAdapter(arr) {
193250
193441
  }
193251
193442
  });
193252
193443
  }
193253
- function zarrOpenRoot(url, requestInit2) {
193254
- const store2 = new FetchStore$1(url, { overrides: requestInit2 });
193444
+ function readBlobAsArrayBuffer(blob) {
193445
+ if (blob.arrayBuffer) {
193446
+ return blob.arrayBuffer();
193447
+ }
193448
+ return new Promise((resolve2, reject) => {
193449
+ const reader = new FileReader();
193450
+ reader.addEventListener("loadend", () => {
193451
+ resolve2(reader.result);
193452
+ });
193453
+ reader.addEventListener("error", reject);
193454
+ reader.readAsArrayBuffer(blob);
193455
+ });
193456
+ }
193457
+ async function readBlobAsUint8Array(blob) {
193458
+ const arrayBuffer2 = await readBlobAsArrayBuffer(blob);
193459
+ return new Uint8Array(arrayBuffer2);
193460
+ }
193461
+ function isBlob(v) {
193462
+ return typeof Blob !== "undefined" && v instanceof Blob;
193463
+ }
193464
+ function isSharedArrayBuffer(b2) {
193465
+ return typeof SharedArrayBuffer !== "undefined" && b2 instanceof SharedArrayBuffer;
193466
+ }
193467
+ const isNode = typeof process !== "undefined" && process.versions && typeof process.versions.node !== "undefined" && typeof process.versions.electron === "undefined";
193468
+ function isTypedArraySameAsArrayBuffer(typedArray) {
193469
+ return typedArray.byteOffset === 0 && typedArray.byteLength === typedArray.buffer.byteLength;
193470
+ }
193471
+ class ArrayBufferReader {
193472
+ constructor(arrayBufferOrView) {
193473
+ this.typedArray = arrayBufferOrView instanceof ArrayBuffer || isSharedArrayBuffer(arrayBufferOrView) ? new Uint8Array(arrayBufferOrView) : new Uint8Array(arrayBufferOrView.buffer, arrayBufferOrView.byteOffset, arrayBufferOrView.byteLength);
193474
+ }
193475
+ async getLength() {
193476
+ return this.typedArray.byteLength;
193477
+ }
193478
+ async read(offset6, length2) {
193479
+ return new Uint8Array(this.typedArray.buffer, this.typedArray.byteOffset + offset6, length2);
193480
+ }
193481
+ }
193482
+ let BlobReader$1 = class BlobReader {
193483
+ constructor(blob) {
193484
+ this.blob = blob;
193485
+ }
193486
+ async getLength() {
193487
+ return this.blob.size;
193488
+ }
193489
+ async read(offset6, length2) {
193490
+ const blob = this.blob.slice(offset6, offset6 + length2);
193491
+ const arrayBuffer2 = await readBlobAsArrayBuffer(blob);
193492
+ return new Uint8Array(arrayBuffer2);
193493
+ }
193494
+ async sliceAsBlob(offset6, length2, type2 = "") {
193495
+ return this.blob.slice(offset6, offset6 + length2, type2);
193496
+ }
193497
+ };
193498
+ function inflate(data2, buf) {
193499
+ var u8 = Uint8Array;
193500
+ if (data2[0] == 3 && data2[1] == 0)
193501
+ return buf ? buf : new u8(0);
193502
+ var bitsF = _bitsF, bitsE = _bitsE, decodeTiny = _decodeTiny, get17 = _get17;
193503
+ var noBuf = buf == null;
193504
+ if (noBuf)
193505
+ buf = new u8(data2.length >>> 2 << 3);
193506
+ var BFINAL = 0, BTYPE = 0, HLIT = 0, HDIST = 0, HCLEN = 0, ML = 0, MD = 0;
193507
+ var off = 0, pos = 0;
193508
+ var lmap, dmap;
193509
+ while (BFINAL == 0) {
193510
+ BFINAL = bitsF(data2, pos, 1);
193511
+ BTYPE = bitsF(data2, pos + 1, 2);
193512
+ pos += 3;
193513
+ if (BTYPE == 0) {
193514
+ if ((pos & 7) != 0)
193515
+ pos += 8 - (pos & 7);
193516
+ var p8 = (pos >>> 3) + 4, len2 = data2[p8 - 4] | data2[p8 - 3] << 8;
193517
+ if (noBuf)
193518
+ buf = _check(buf, off + len2);
193519
+ buf.set(new u8(data2.buffer, data2.byteOffset + p8, len2), off);
193520
+ pos = p8 + len2 << 3;
193521
+ off += len2;
193522
+ continue;
193523
+ }
193524
+ if (noBuf)
193525
+ buf = _check(buf, off + (1 << 17));
193526
+ if (BTYPE == 1) {
193527
+ lmap = U.flmap;
193528
+ dmap = U.fdmap;
193529
+ ML = (1 << 9) - 1;
193530
+ MD = (1 << 5) - 1;
193531
+ }
193532
+ if (BTYPE == 2) {
193533
+ HLIT = bitsE(data2, pos, 5) + 257;
193534
+ HDIST = bitsE(data2, pos + 5, 5) + 1;
193535
+ HCLEN = bitsE(data2, pos + 10, 4) + 4;
193536
+ pos += 14;
193537
+ for (var i2 = 0; i2 < 38; i2 += 2) {
193538
+ U.itree[i2] = 0;
193539
+ U.itree[i2 + 1] = 0;
193540
+ }
193541
+ var tl2 = 1;
193542
+ for (var i2 = 0; i2 < HCLEN; i2++) {
193543
+ var l2 = bitsE(data2, pos + i2 * 3, 3);
193544
+ U.itree[(U.ordr[i2] << 1) + 1] = l2;
193545
+ if (l2 > tl2)
193546
+ tl2 = l2;
193547
+ }
193548
+ pos += 3 * HCLEN;
193549
+ makeCodes(U.itree, tl2);
193550
+ codes2map(U.itree, tl2, U.imap);
193551
+ lmap = U.lmap;
193552
+ dmap = U.dmap;
193553
+ pos = decodeTiny(U.imap, (1 << tl2) - 1, HLIT + HDIST, data2, pos, U.ttree);
193554
+ var mx0 = _copyOut(U.ttree, 0, HLIT, U.ltree);
193555
+ ML = (1 << mx0) - 1;
193556
+ var mx1 = _copyOut(U.ttree, HLIT, HDIST, U.dtree);
193557
+ MD = (1 << mx1) - 1;
193558
+ makeCodes(U.ltree, mx0);
193559
+ codes2map(U.ltree, mx0, lmap);
193560
+ makeCodes(U.dtree, mx1);
193561
+ codes2map(U.dtree, mx1, dmap);
193562
+ }
193563
+ while (true) {
193564
+ var code = lmap[get17(data2, pos) & ML];
193565
+ pos += code & 15;
193566
+ var lit = code >>> 4;
193567
+ if (lit >>> 8 == 0) {
193568
+ buf[off++] = lit;
193569
+ } else if (lit == 256) {
193570
+ break;
193571
+ } else {
193572
+ var end = off + lit - 254;
193573
+ if (lit > 264) {
193574
+ var ebs = U.ldef[lit - 257];
193575
+ end = off + (ebs >>> 3) + bitsE(data2, pos, ebs & 7);
193576
+ pos += ebs & 7;
193577
+ }
193578
+ var dcode = dmap[get17(data2, pos) & MD];
193579
+ pos += dcode & 15;
193580
+ var dlit = dcode >>> 4;
193581
+ var dbs = U.ddef[dlit], dst = (dbs >>> 4) + bitsF(data2, pos, dbs & 15);
193582
+ pos += dbs & 15;
193583
+ if (noBuf)
193584
+ buf = _check(buf, off + (1 << 17));
193585
+ while (off < end) {
193586
+ buf[off] = buf[off++ - dst];
193587
+ buf[off] = buf[off++ - dst];
193588
+ buf[off] = buf[off++ - dst];
193589
+ buf[off] = buf[off++ - dst];
193590
+ }
193591
+ off = end;
193592
+ }
193593
+ }
193594
+ }
193595
+ return buf.length == off ? buf : buf.slice(0, off);
193596
+ }
193597
+ function _check(buf, len2) {
193598
+ var bl2 = buf.length;
193599
+ if (len2 <= bl2)
193600
+ return buf;
193601
+ var nbuf = new Uint8Array(Math.max(bl2 << 1, len2));
193602
+ nbuf.set(buf, 0);
193603
+ return nbuf;
193604
+ }
193605
+ function _decodeTiny(lmap, LL, len2, data2, pos, tree2) {
193606
+ var bitsE = _bitsE, get17 = _get17;
193607
+ var i2 = 0;
193608
+ while (i2 < len2) {
193609
+ var code = lmap[get17(data2, pos) & LL];
193610
+ pos += code & 15;
193611
+ var lit = code >>> 4;
193612
+ if (lit <= 15) {
193613
+ tree2[i2] = lit;
193614
+ i2++;
193615
+ } else {
193616
+ var ll = 0, n3 = 0;
193617
+ if (lit == 16) {
193618
+ n3 = 3 + bitsE(data2, pos, 2);
193619
+ pos += 2;
193620
+ ll = tree2[i2 - 1];
193621
+ } else if (lit == 17) {
193622
+ n3 = 3 + bitsE(data2, pos, 3);
193623
+ pos += 3;
193624
+ } else if (lit == 18) {
193625
+ n3 = 11 + bitsE(data2, pos, 7);
193626
+ pos += 7;
193627
+ }
193628
+ var ni = i2 + n3;
193629
+ while (i2 < ni) {
193630
+ tree2[i2] = ll;
193631
+ i2++;
193632
+ }
193633
+ }
193634
+ }
193635
+ return pos;
193636
+ }
193637
+ function _copyOut(src2, off, len2, tree2) {
193638
+ var mx = 0, i2 = 0, tl2 = tree2.length >>> 1;
193639
+ while (i2 < len2) {
193640
+ var v = src2[i2 + off];
193641
+ tree2[i2 << 1] = 0;
193642
+ tree2[(i2 << 1) + 1] = v;
193643
+ if (v > mx)
193644
+ mx = v;
193645
+ i2++;
193646
+ }
193647
+ while (i2 < tl2) {
193648
+ tree2[i2 << 1] = 0;
193649
+ tree2[(i2 << 1) + 1] = 0;
193650
+ i2++;
193651
+ }
193652
+ return mx;
193653
+ }
193654
+ function makeCodes(tree2, MAX_BITS2) {
193655
+ var max_code = tree2.length;
193656
+ var code, bits, n3, i2, len2;
193657
+ var bl_count = U.bl_count;
193658
+ for (var i2 = 0; i2 <= MAX_BITS2; i2++)
193659
+ bl_count[i2] = 0;
193660
+ for (i2 = 1; i2 < max_code; i2 += 2)
193661
+ bl_count[tree2[i2]]++;
193662
+ var next_code = U.next_code;
193663
+ code = 0;
193664
+ bl_count[0] = 0;
193665
+ for (bits = 1; bits <= MAX_BITS2; bits++) {
193666
+ code = code + bl_count[bits - 1] << 1;
193667
+ next_code[bits] = code;
193668
+ }
193669
+ for (n3 = 0; n3 < max_code; n3 += 2) {
193670
+ len2 = tree2[n3 + 1];
193671
+ if (len2 != 0) {
193672
+ tree2[n3] = next_code[len2];
193673
+ next_code[len2]++;
193674
+ }
193675
+ }
193676
+ }
193677
+ function codes2map(tree2, MAX_BITS2, map2) {
193678
+ var max_code = tree2.length;
193679
+ var r15 = U.rev15;
193680
+ for (var i2 = 0; i2 < max_code; i2 += 2)
193681
+ if (tree2[i2 + 1] != 0) {
193682
+ var lit = i2 >> 1;
193683
+ var cl = tree2[i2 + 1], val = lit << 4 | cl;
193684
+ var rest = MAX_BITS2 - cl, i0 = tree2[i2] << rest, i1 = i0 + (1 << rest);
193685
+ while (i0 != i1) {
193686
+ var p02 = r15[i0] >>> 15 - MAX_BITS2;
193687
+ map2[p02] = val;
193688
+ i0++;
193689
+ }
193690
+ }
193691
+ }
193692
+ function revCodes(tree2, MAX_BITS2) {
193693
+ var r15 = U.rev15, imb = 15 - MAX_BITS2;
193694
+ for (var i2 = 0; i2 < tree2.length; i2 += 2) {
193695
+ var i0 = tree2[i2] << MAX_BITS2 - tree2[i2 + 1];
193696
+ tree2[i2] = r15[i0] >>> imb;
193697
+ }
193698
+ }
193699
+ function _bitsE(dt, pos, length2) {
193700
+ return (dt[pos >>> 3] | dt[(pos >>> 3) + 1] << 8) >>> (pos & 7) & (1 << length2) - 1;
193701
+ }
193702
+ function _bitsF(dt, pos, length2) {
193703
+ return (dt[pos >>> 3] | dt[(pos >>> 3) + 1] << 8 | dt[(pos >>> 3) + 2] << 16) >>> (pos & 7) & (1 << length2) - 1;
193704
+ }
193705
+ function _get17(dt, pos) {
193706
+ return (dt[pos >>> 3] | dt[(pos >>> 3) + 1] << 8 | dt[(pos >>> 3) + 2] << 16) >>> (pos & 7);
193707
+ }
193708
+ const U = function() {
193709
+ var u16 = Uint16Array, u32 = Uint32Array;
193710
+ return {
193711
+ next_code: new u16(16),
193712
+ bl_count: new u16(16),
193713
+ ordr: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
193714
+ of0: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999],
193715
+ exb: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0],
193716
+ ldef: new u16(32),
193717
+ df0: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535],
193718
+ dxb: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0],
193719
+ ddef: new u32(32),
193720
+ flmap: new u16(512),
193721
+ fltree: [],
193722
+ fdmap: new u16(32),
193723
+ fdtree: [],
193724
+ lmap: new u16(32768),
193725
+ ltree: [],
193726
+ ttree: [],
193727
+ dmap: new u16(32768),
193728
+ dtree: [],
193729
+ imap: new u16(512),
193730
+ itree: [],
193731
+ //rev9 : new u16( 512)
193732
+ rev15: new u16(1 << 15),
193733
+ lhst: new u32(286),
193734
+ dhst: new u32(30),
193735
+ ihst: new u32(19),
193736
+ lits: new u32(15e3),
193737
+ strt: new u16(1 << 16),
193738
+ prev: new u16(1 << 15)
193739
+ };
193740
+ }();
193741
+ (function() {
193742
+ var len2 = 1 << 15;
193743
+ for (var i2 = 0; i2 < len2; i2++) {
193744
+ var x2 = i2;
193745
+ x2 = (x2 & 2863311530) >>> 1 | (x2 & 1431655765) << 1;
193746
+ x2 = (x2 & 3435973836) >>> 2 | (x2 & 858993459) << 2;
193747
+ x2 = (x2 & 4042322160) >>> 4 | (x2 & 252645135) << 4;
193748
+ x2 = (x2 & 4278255360) >>> 8 | (x2 & 16711935) << 8;
193749
+ U.rev15[i2] = (x2 >>> 16 | x2 << 16) >>> 17;
193750
+ }
193751
+ function pushV(tgt, n3, sv) {
193752
+ while (n3-- != 0)
193753
+ tgt.push(0, sv);
193754
+ }
193755
+ for (var i2 = 0; i2 < 32; i2++) {
193756
+ U.ldef[i2] = U.of0[i2] << 3 | U.exb[i2];
193757
+ U.ddef[i2] = U.df0[i2] << 4 | U.dxb[i2];
193758
+ }
193759
+ pushV(U.fltree, 144, 8);
193760
+ pushV(U.fltree, 255 - 143, 9);
193761
+ pushV(U.fltree, 279 - 255, 7);
193762
+ pushV(U.fltree, 287 - 279, 8);
193763
+ makeCodes(U.fltree, 9);
193764
+ codes2map(U.fltree, 9, U.flmap);
193765
+ revCodes(U.fltree, 9);
193766
+ pushV(U.fdtree, 32, 5);
193767
+ makeCodes(U.fdtree, 5);
193768
+ codes2map(U.fdtree, 5, U.fdmap);
193769
+ revCodes(U.fdtree, 5);
193770
+ pushV(U.itree, 19, 0);
193771
+ pushV(U.ltree, 286, 0);
193772
+ pushV(U.dtree, 30, 0);
193773
+ pushV(U.ttree, 320, 0);
193774
+ })();
193775
+ const crc = {
193776
+ table: function() {
193777
+ var tab = new Uint32Array(256);
193778
+ for (var n3 = 0; n3 < 256; n3++) {
193779
+ var c2 = n3;
193780
+ for (var k = 0; k < 8; k++) {
193781
+ if (c2 & 1)
193782
+ c2 = 3988292384 ^ c2 >>> 1;
193783
+ else
193784
+ c2 = c2 >>> 1;
193785
+ }
193786
+ tab[n3] = c2;
193787
+ }
193788
+ return tab;
193789
+ }(),
193790
+ update: function(c2, buf, off, len2) {
193791
+ for (var i2 = 0; i2 < len2; i2++)
193792
+ c2 = crc.table[(c2 ^ buf[off + i2]) & 255] ^ c2 >>> 8;
193793
+ return c2;
193794
+ },
193795
+ crc: function(b2, o2, l2) {
193796
+ return crc.update(4294967295, b2, o2, l2) ^ 4294967295;
193797
+ }
193798
+ };
193799
+ function inflateRaw(file, buf) {
193800
+ return inflate(file, buf);
193801
+ }
193802
+ const config2 = {
193803
+ numWorkers: 1,
193804
+ workerURL: "",
193805
+ useWorkers: false
193806
+ };
193807
+ let nextId = 0;
193808
+ const waitingForWorkerQueue = [];
193809
+ function startWorker(url) {
193810
+ return new Promise((resolve2, reject) => {
193811
+ const worker = new Worker(url);
193812
+ worker.onmessage = (e3) => {
193813
+ if (e3.data === "start") {
193814
+ worker.onerror = void 0;
193815
+ worker.onmessage = void 0;
193816
+ resolve2(worker);
193817
+ } else {
193818
+ reject(new Error(`unexpected message: ${e3.data}`));
193819
+ }
193820
+ };
193821
+ worker.onerror = reject;
193822
+ });
193823
+ }
193824
+ function dynamicRequire(mod2, request2) {
193825
+ return mod2.require ? mod2.require(request2) : {};
193826
+ }
193827
+ (function() {
193828
+ if (isNode) {
193829
+ const { Worker: Worker3 } = dynamicRequire(module, "worker_threads");
193830
+ return {
193831
+ async createWorker(url) {
193832
+ return new Worker3(url);
193833
+ },
193834
+ addEventListener(worker, fn) {
193835
+ worker.on("message", (data2) => {
193836
+ fn({ target: worker, data: data2 });
193837
+ });
193838
+ },
193839
+ async terminate(worker) {
193840
+ await worker.terminate();
193841
+ }
193842
+ };
193843
+ } else {
193844
+ return {
193845
+ async createWorker(url) {
193846
+ try {
193847
+ const worker = await startWorker(url);
193848
+ return worker;
193849
+ } catch (e3) {
193850
+ console.warn("could not load worker:", url);
193851
+ }
193852
+ let text2;
193853
+ try {
193854
+ const req = await fetch(url, { mode: "cors" });
193855
+ if (!req.ok) {
193856
+ throw new Error(`could not load: ${url}`);
193857
+ }
193858
+ text2 = await req.text();
193859
+ url = URL.createObjectURL(new Blob([text2], { type: "application/javascript" }));
193860
+ const worker = await startWorker(url);
193861
+ config2.workerURL = url;
193862
+ return worker;
193863
+ } catch (e3) {
193864
+ console.warn("could not load worker via fetch:", url);
193865
+ }
193866
+ if (text2 !== void 0) {
193867
+ try {
193868
+ url = `data:application/javascript;base64,${btoa(text2)}`;
193869
+ const worker = await startWorker(url);
193870
+ config2.workerURL = url;
193871
+ return worker;
193872
+ } catch (e3) {
193873
+ console.warn("could not load worker via dataURI");
193874
+ }
193875
+ }
193876
+ console.warn("workers will not be used");
193877
+ throw new Error("can not start workers");
193878
+ },
193879
+ addEventListener(worker, fn) {
193880
+ worker.addEventListener("message", fn);
193881
+ },
193882
+ async terminate(worker) {
193883
+ worker.terminate();
193884
+ }
193885
+ };
193886
+ }
193887
+ })();
193888
+ function inflateRawLocal(src2, uncompressedSize, type2, resolve2) {
193889
+ const dst = new Uint8Array(uncompressedSize);
193890
+ inflateRaw(src2, dst);
193891
+ resolve2(type2 ? new Blob([dst], { type: type2 }) : dst.buffer);
193892
+ }
193893
+ async function processWaitingForWorkerQueue() {
193894
+ if (waitingForWorkerQueue.length === 0) {
193895
+ return;
193896
+ }
193897
+ while (waitingForWorkerQueue.length) {
193898
+ const { src: src2, uncompressedSize, type: type2, resolve: resolve2 } = waitingForWorkerQueue.shift();
193899
+ let data2 = src2;
193900
+ if (isBlob(src2)) {
193901
+ data2 = await readBlobAsUint8Array(src2);
193902
+ }
193903
+ inflateRawLocal(data2, uncompressedSize, type2, resolve2);
193904
+ }
193905
+ }
193906
+ function inflateRawAsync(src2, uncompressedSize, type2) {
193907
+ return new Promise((resolve2, reject) => {
193908
+ waitingForWorkerQueue.push({ src: src2, uncompressedSize, type: type2, resolve: resolve2, reject, id: nextId++ });
193909
+ processWaitingForWorkerQueue();
193910
+ });
193911
+ }
193912
+ function dosDateTimeToDate(date2, time2) {
193913
+ const day2 = date2 & 31;
193914
+ const month2 = (date2 >> 5 & 15) - 1;
193915
+ const year2 = (date2 >> 9 & 127) + 1980;
193916
+ const millisecond2 = 0;
193917
+ const second2 = (time2 & 31) * 2;
193918
+ const minute2 = time2 >> 5 & 63;
193919
+ const hour2 = time2 >> 11 & 31;
193920
+ return new Date(year2, month2, day2, hour2, minute2, second2, millisecond2);
193921
+ }
193922
+ class ZipEntry {
193923
+ constructor(reader, rawEntry) {
193924
+ this._reader = reader;
193925
+ this._rawEntry = rawEntry;
193926
+ this.name = rawEntry.name;
193927
+ this.nameBytes = rawEntry.nameBytes;
193928
+ this.size = rawEntry.uncompressedSize;
193929
+ this.compressedSize = rawEntry.compressedSize;
193930
+ this.comment = rawEntry.comment;
193931
+ this.commentBytes = rawEntry.commentBytes;
193932
+ this.compressionMethod = rawEntry.compressionMethod;
193933
+ this.lastModDate = dosDateTimeToDate(rawEntry.lastModFileDate, rawEntry.lastModFileTime);
193934
+ this.isDirectory = rawEntry.uncompressedSize === 0 && rawEntry.name.endsWith("/");
193935
+ this.encrypted = !!(rawEntry.generalPurposeBitFlag & 1);
193936
+ this.externalFileAttributes = rawEntry.externalFileAttributes;
193937
+ this.versionMadeBy = rawEntry.versionMadeBy;
193938
+ }
193939
+ // returns a promise that returns a Blob for this entry
193940
+ async blob(type2 = "application/octet-stream") {
193941
+ return await readEntryDataAsBlob(this._reader, this._rawEntry, type2);
193942
+ }
193943
+ // returns a promise that returns an ArrayBuffer for this entry
193944
+ async arrayBuffer() {
193945
+ return await readEntryDataAsArrayBuffer(this._reader, this._rawEntry);
193946
+ }
193947
+ // returns text, assumes the text is valid utf8. If you want more options decode arrayBuffer yourself
193948
+ async text() {
193949
+ const buffer2 = await this.arrayBuffer();
193950
+ return decodeBuffer(new Uint8Array(buffer2));
193951
+ }
193952
+ // returns text with JSON.parse called on it. If you want more options decode arrayBuffer yourself
193953
+ async json() {
193954
+ const text2 = await this.text();
193955
+ return JSON.parse(text2);
193956
+ }
193957
+ }
193958
+ const EOCDR_WITHOUT_COMMENT_SIZE = 22;
193959
+ const MAX_COMMENT_SIZE = 65535;
193960
+ const EOCDR_SIGNATURE = 101010256;
193961
+ const ZIP64_EOCDR_SIGNATURE = 101075792;
193962
+ async function readAs(reader, offset6, length2) {
193963
+ return await reader.read(offset6, length2);
193964
+ }
193965
+ async function readAsBlobOrTypedArray(reader, offset6, length2, type2) {
193966
+ if (reader.sliceAsBlob) {
193967
+ return await reader.sliceAsBlob(offset6, length2, type2);
193968
+ }
193969
+ return await reader.read(offset6, length2);
193970
+ }
193971
+ const crc$1 = {
193972
+ unsigned() {
193973
+ return 0;
193974
+ }
193975
+ };
193976
+ function getUint16LE(uint8View, offset6) {
193977
+ return uint8View[offset6] + uint8View[offset6 + 1] * 256;
193978
+ }
193979
+ function getUint32LE(uint8View, offset6) {
193980
+ return uint8View[offset6] + uint8View[offset6 + 1] * 256 + uint8View[offset6 + 2] * 65536 + uint8View[offset6 + 3] * 16777216;
193981
+ }
193982
+ function getUint64LE(uint8View, offset6) {
193983
+ return getUint32LE(uint8View, offset6) + getUint32LE(uint8View, offset6 + 4) * 4294967296;
193984
+ }
193985
+ const utf8Decoder = new TextDecoder();
193986
+ function decodeBuffer(uint8View, isUTF8) {
193987
+ if (isSharedArrayBuffer(uint8View.buffer)) {
193988
+ uint8View = new Uint8Array(uint8View);
193989
+ }
193990
+ return utf8Decoder.decode(uint8View);
193991
+ }
193992
+ async function findEndOfCentralDirector(reader, totalLength) {
193993
+ const size2 = Math.min(EOCDR_WITHOUT_COMMENT_SIZE + MAX_COMMENT_SIZE, totalLength);
193994
+ const readStart = totalLength - size2;
193995
+ const data2 = await readAs(reader, readStart, size2);
193996
+ for (let i2 = size2 - EOCDR_WITHOUT_COMMENT_SIZE; i2 >= 0; --i2) {
193997
+ if (getUint32LE(data2, i2) !== EOCDR_SIGNATURE) {
193998
+ continue;
193999
+ }
194000
+ const eocdr = new Uint8Array(data2.buffer, data2.byteOffset + i2, data2.byteLength - i2);
194001
+ const diskNumber = getUint16LE(eocdr, 4);
194002
+ if (diskNumber !== 0) {
194003
+ throw new Error(`multi-volume zip files are not supported. This is volume: ${diskNumber}`);
194004
+ }
194005
+ const entryCount = getUint16LE(eocdr, 10);
194006
+ const centralDirectorySize = getUint32LE(eocdr, 12);
194007
+ const centralDirectoryOffset = getUint32LE(eocdr, 16);
194008
+ const commentLength = getUint16LE(eocdr, 20);
194009
+ const expectedCommentLength = eocdr.length - EOCDR_WITHOUT_COMMENT_SIZE;
194010
+ if (commentLength !== expectedCommentLength) {
194011
+ throw new Error(`invalid comment length. expected: ${expectedCommentLength}, actual: ${commentLength}`);
194012
+ }
194013
+ const commentBytes = new Uint8Array(eocdr.buffer, eocdr.byteOffset + 22, commentLength);
194014
+ const comment = decodeBuffer(commentBytes);
194015
+ if (entryCount === 65535 || centralDirectoryOffset === 4294967295) {
194016
+ return await readZip64CentralDirectory(reader, readStart + i2, comment, commentBytes);
194017
+ } else {
194018
+ return await readEntries(reader, centralDirectoryOffset, centralDirectorySize, entryCount, comment, commentBytes);
194019
+ }
194020
+ }
194021
+ throw new Error("could not find end of central directory. maybe not zip file");
194022
+ }
194023
+ const END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE = 117853008;
194024
+ async function readZip64CentralDirectory(reader, offset6, comment, commentBytes) {
194025
+ const zip64EocdlOffset = offset6 - 20;
194026
+ const eocdl = await readAs(reader, zip64EocdlOffset, 20);
194027
+ if (getUint32LE(eocdl, 0) !== END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE) {
194028
+ throw new Error("invalid zip64 end of central directory locator signature");
194029
+ }
194030
+ const zip64EocdrOffset = getUint64LE(eocdl, 8);
194031
+ const zip64Eocdr = await readAs(reader, zip64EocdrOffset, 56);
194032
+ if (getUint32LE(zip64Eocdr, 0) !== ZIP64_EOCDR_SIGNATURE) {
194033
+ throw new Error("invalid zip64 end of central directory record signature");
194034
+ }
194035
+ const entryCount = getUint64LE(zip64Eocdr, 32);
194036
+ const centralDirectorySize = getUint64LE(zip64Eocdr, 40);
194037
+ const centralDirectoryOffset = getUint64LE(zip64Eocdr, 48);
194038
+ return readEntries(reader, centralDirectoryOffset, centralDirectorySize, entryCount, comment, commentBytes);
194039
+ }
194040
+ const CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE = 33639248;
194041
+ async function readEntries(reader, centralDirectoryOffset, centralDirectorySize, rawEntryCount, comment, commentBytes) {
194042
+ let readEntryCursor = 0;
194043
+ const allEntriesBuffer = await readAs(reader, centralDirectoryOffset, centralDirectorySize);
194044
+ const rawEntries = [];
194045
+ for (let e3 = 0; e3 < rawEntryCount; ++e3) {
194046
+ const buffer2 = allEntriesBuffer.subarray(readEntryCursor, readEntryCursor + 46);
194047
+ const signature = getUint32LE(buffer2, 0);
194048
+ if (signature !== CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE) {
194049
+ throw new Error(`invalid central directory file header signature: 0x${signature.toString(16)}`);
194050
+ }
194051
+ const rawEntry = {
194052
+ // 4 - Version made by
194053
+ versionMadeBy: getUint16LE(buffer2, 4),
194054
+ // 6 - Version needed to extract (minimum)
194055
+ versionNeededToExtract: getUint16LE(buffer2, 6),
194056
+ // 8 - General purpose bit flag
194057
+ generalPurposeBitFlag: getUint16LE(buffer2, 8),
194058
+ // 10 - Compression method
194059
+ compressionMethod: getUint16LE(buffer2, 10),
194060
+ // 12 - File last modification time
194061
+ lastModFileTime: getUint16LE(buffer2, 12),
194062
+ // 14 - File last modification date
194063
+ lastModFileDate: getUint16LE(buffer2, 14),
194064
+ // 16 - CRC-32
194065
+ crc32: getUint32LE(buffer2, 16),
194066
+ // 20 - Compressed size
194067
+ compressedSize: getUint32LE(buffer2, 20),
194068
+ // 24 - Uncompressed size
194069
+ uncompressedSize: getUint32LE(buffer2, 24),
194070
+ // 28 - File name length (n)
194071
+ fileNameLength: getUint16LE(buffer2, 28),
194072
+ // 30 - Extra field length (m)
194073
+ extraFieldLength: getUint16LE(buffer2, 30),
194074
+ // 32 - File comment length (k)
194075
+ fileCommentLength: getUint16LE(buffer2, 32),
194076
+ // 34 - Disk number where file starts
194077
+ // 36 - Internal file attributes
194078
+ internalFileAttributes: getUint16LE(buffer2, 36),
194079
+ // 38 - External file attributes
194080
+ externalFileAttributes: getUint32LE(buffer2, 38),
194081
+ // 42 - Relative offset of local file header
194082
+ relativeOffsetOfLocalHeader: getUint32LE(buffer2, 42)
194083
+ };
194084
+ if (rawEntry.generalPurposeBitFlag & 64) {
194085
+ throw new Error("strong encryption is not supported");
194086
+ }
194087
+ readEntryCursor += 46;
194088
+ const data2 = allEntriesBuffer.subarray(readEntryCursor, readEntryCursor + rawEntry.fileNameLength + rawEntry.extraFieldLength + rawEntry.fileCommentLength);
194089
+ rawEntry.nameBytes = data2.slice(0, rawEntry.fileNameLength);
194090
+ rawEntry.name = decodeBuffer(rawEntry.nameBytes);
194091
+ const fileCommentStart = rawEntry.fileNameLength + rawEntry.extraFieldLength;
194092
+ const extraFieldBuffer = data2.slice(rawEntry.fileNameLength, fileCommentStart);
194093
+ rawEntry.extraFields = [];
194094
+ let i2 = 0;
194095
+ while (i2 < extraFieldBuffer.length - 3) {
194096
+ const headerId = getUint16LE(extraFieldBuffer, i2 + 0);
194097
+ const dataSize = getUint16LE(extraFieldBuffer, i2 + 2);
194098
+ const dataStart = i2 + 4;
194099
+ const dataEnd = dataStart + dataSize;
194100
+ if (dataEnd > extraFieldBuffer.length) {
194101
+ throw new Error("extra field length exceeds extra field buffer size");
194102
+ }
194103
+ rawEntry.extraFields.push({
194104
+ id: headerId,
194105
+ data: extraFieldBuffer.slice(dataStart, dataEnd)
194106
+ });
194107
+ i2 = dataEnd;
194108
+ }
194109
+ rawEntry.commentBytes = data2.slice(fileCommentStart, fileCommentStart + rawEntry.fileCommentLength);
194110
+ rawEntry.comment = decodeBuffer(rawEntry.commentBytes);
194111
+ readEntryCursor += data2.length;
194112
+ if (rawEntry.uncompressedSize === 4294967295 || rawEntry.compressedSize === 4294967295 || rawEntry.relativeOffsetOfLocalHeader === 4294967295) {
194113
+ const zip64ExtraField = rawEntry.extraFields.find((e4) => e4.id === 1);
194114
+ if (!zip64ExtraField) {
194115
+ throw new Error("expected zip64 extended information extra field");
194116
+ }
194117
+ const zip64EiefBuffer = zip64ExtraField.data;
194118
+ let index2 = 0;
194119
+ if (rawEntry.uncompressedSize === 4294967295) {
194120
+ if (index2 + 8 > zip64EiefBuffer.length) {
194121
+ throw new Error("zip64 extended information extra field does not include uncompressed size");
194122
+ }
194123
+ rawEntry.uncompressedSize = getUint64LE(zip64EiefBuffer, index2);
194124
+ index2 += 8;
194125
+ }
194126
+ if (rawEntry.compressedSize === 4294967295) {
194127
+ if (index2 + 8 > zip64EiefBuffer.length) {
194128
+ throw new Error("zip64 extended information extra field does not include compressed size");
194129
+ }
194130
+ rawEntry.compressedSize = getUint64LE(zip64EiefBuffer, index2);
194131
+ index2 += 8;
194132
+ }
194133
+ if (rawEntry.relativeOffsetOfLocalHeader === 4294967295) {
194134
+ if (index2 + 8 > zip64EiefBuffer.length) {
194135
+ throw new Error("zip64 extended information extra field does not include relative header offset");
194136
+ }
194137
+ rawEntry.relativeOffsetOfLocalHeader = getUint64LE(zip64EiefBuffer, index2);
194138
+ index2 += 8;
194139
+ }
194140
+ }
194141
+ const nameField = rawEntry.extraFields.find((e4) => e4.id === 28789 && e4.data.length >= 6 && // too short to be meaningful
194142
+ e4.data[0] === 1 && // Version 1 byte version of this extra field, currently 1
194143
+ getUint32LE(e4.data, 1), crc$1.unsigned(rawEntry.nameBytes));
194144
+ if (nameField) {
194145
+ rawEntry.fileName = decodeBuffer(nameField.data.slice(5));
194146
+ }
194147
+ if (rawEntry.compressionMethod === 0) {
194148
+ let expectedCompressedSize = rawEntry.uncompressedSize;
194149
+ if ((rawEntry.generalPurposeBitFlag & 1) !== 0) {
194150
+ expectedCompressedSize += 12;
194151
+ }
194152
+ if (rawEntry.compressedSize !== expectedCompressedSize) {
194153
+ throw new Error(`compressed size mismatch for stored file: ${rawEntry.compressedSize} != ${expectedCompressedSize}`);
194154
+ }
194155
+ }
194156
+ rawEntries.push(rawEntry);
194157
+ }
194158
+ const zip2 = {
194159
+ comment,
194160
+ commentBytes
194161
+ };
194162
+ return {
194163
+ zip: zip2,
194164
+ entries: rawEntries.map((e3) => new ZipEntry(reader, e3))
194165
+ };
194166
+ }
194167
+ async function readEntryDataHeader(reader, rawEntry) {
194168
+ if (rawEntry.generalPurposeBitFlag & 1) {
194169
+ throw new Error("encrypted entries not supported");
194170
+ }
194171
+ const buffer2 = await readAs(reader, rawEntry.relativeOffsetOfLocalHeader, 30);
194172
+ const totalLength = await reader.getLength();
194173
+ const signature = getUint32LE(buffer2, 0);
194174
+ if (signature !== 67324752) {
194175
+ throw new Error(`invalid local file header signature: 0x${signature.toString(16)}`);
194176
+ }
194177
+ const fileNameLength = getUint16LE(buffer2, 26);
194178
+ const extraFieldLength = getUint16LE(buffer2, 28);
194179
+ const localFileHeaderEnd = rawEntry.relativeOffsetOfLocalHeader + buffer2.length + fileNameLength + extraFieldLength;
194180
+ let decompress;
194181
+ if (rawEntry.compressionMethod === 0) {
194182
+ decompress = false;
194183
+ } else if (rawEntry.compressionMethod === 8) {
194184
+ decompress = true;
194185
+ } else {
194186
+ throw new Error(`unsupported compression method: ${rawEntry.compressionMethod}`);
194187
+ }
194188
+ const fileDataStart = localFileHeaderEnd;
194189
+ const fileDataEnd = fileDataStart + rawEntry.compressedSize;
194190
+ if (rawEntry.compressedSize !== 0) {
194191
+ if (fileDataEnd > totalLength) {
194192
+ throw new Error(`file data overflows file bounds: ${fileDataStart} + ${rawEntry.compressedSize} > ${totalLength}`);
194193
+ }
194194
+ }
194195
+ return {
194196
+ decompress,
194197
+ fileDataStart
194198
+ };
194199
+ }
194200
+ async function readEntryDataAsArrayBuffer(reader, rawEntry) {
194201
+ const { decompress, fileDataStart } = await readEntryDataHeader(reader, rawEntry);
194202
+ if (!decompress) {
194203
+ const dataView = await readAs(reader, fileDataStart, rawEntry.compressedSize);
194204
+ return isTypedArraySameAsArrayBuffer(dataView) ? dataView.buffer : dataView.slice().buffer;
194205
+ }
194206
+ const typedArrayOrBlob = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize);
194207
+ const result = await inflateRawAsync(typedArrayOrBlob, rawEntry.uncompressedSize);
194208
+ return result;
194209
+ }
194210
+ async function readEntryDataAsBlob(reader, rawEntry, type2) {
194211
+ const { decompress, fileDataStart } = await readEntryDataHeader(reader, rawEntry);
194212
+ if (!decompress) {
194213
+ const typedArrayOrBlob2 = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize, type2);
194214
+ if (isBlob(typedArrayOrBlob2)) {
194215
+ return typedArrayOrBlob2;
194216
+ }
194217
+ return new Blob([isSharedArrayBuffer(typedArrayOrBlob2.buffer) ? new Uint8Array(typedArrayOrBlob2) : typedArrayOrBlob2], { type: type2 });
194218
+ }
194219
+ const typedArrayOrBlob = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize);
194220
+ const result = await inflateRawAsync(typedArrayOrBlob, rawEntry.uncompressedSize, type2);
194221
+ return result;
194222
+ }
194223
+ async function unzipRaw(source2) {
194224
+ let reader;
194225
+ if (typeof Blob !== "undefined" && source2 instanceof Blob) {
194226
+ reader = new BlobReader$1(source2);
194227
+ } else if (source2 instanceof ArrayBuffer || source2 && source2.buffer && source2.buffer instanceof ArrayBuffer) {
194228
+ reader = new ArrayBufferReader(source2);
194229
+ } else if (isSharedArrayBuffer(source2) || isSharedArrayBuffer(source2.buffer)) {
194230
+ reader = new ArrayBufferReader(source2);
194231
+ } else if (typeof source2 === "string") {
194232
+ const req = await fetch(source2);
194233
+ if (!req.ok) {
194234
+ throw new Error(`failed http request ${source2}, status: ${req.status}: ${req.statusText}`);
194235
+ }
194236
+ const blob = await req.blob();
194237
+ reader = new BlobReader$1(blob);
194238
+ } else if (typeof source2.getLength === "function" && typeof source2.read === "function") {
194239
+ reader = source2;
194240
+ } else {
194241
+ throw new Error("unsupported source type");
194242
+ }
194243
+ const totalLength = await reader.getLength();
194244
+ if (totalLength > Number.MAX_SAFE_INTEGER) {
194245
+ throw new Error(`file too large. size: ${totalLength}. Only file sizes up 4503599627370496 bytes are supported`);
194246
+ }
194247
+ return await findEndOfCentralDirector(reader, totalLength);
194248
+ }
194249
+ async function unzip(source2) {
194250
+ const { zip: zip2, entries: entries2 } = await unzipRaw(source2);
194251
+ return {
194252
+ zip: zip2,
194253
+ entries: Object.fromEntries(entries2.map((v) => [v.name, v]))
194254
+ };
194255
+ }
194256
+ class BlobReader2 {
194257
+ constructor(blob) {
194258
+ __publicField(this, "blob");
194259
+ this.blob = blob;
194260
+ }
194261
+ async getLength() {
194262
+ return this.blob.size;
194263
+ }
194264
+ async read(offset6, length2) {
194265
+ const blob = this.blob.slice(offset6, offset6 + length2);
194266
+ return new Uint8Array(await blob.arrayBuffer());
194267
+ }
194268
+ }
194269
+ class HTTPRangeReader {
194270
+ constructor(url, opts2 = {}) {
194271
+ __publicField(this, "url");
194272
+ __publicField(this, "length");
194273
+ __privateAdd(this, _overrides2, void 0);
194274
+ this.url = url;
194275
+ __privateSet(this, _overrides2, opts2.overrides ?? {});
194276
+ }
194277
+ async getLength() {
194278
+ if (this.length === void 0) {
194279
+ const req = await fetch(this.url, {
194280
+ ...__privateGet(this, _overrides2),
194281
+ method: "HEAD"
194282
+ });
194283
+ if (!req.ok) {
194284
+ throw new Error(`failed http request ${this.url}, status: ${req.status}: ${req.statusText}`);
194285
+ }
194286
+ this.length = parseInt(req.headers.get("content-length"));
194287
+ if (Number.isNaN(this.length)) {
194288
+ throw Error("could not get length");
194289
+ }
194290
+ }
194291
+ return this.length;
194292
+ }
194293
+ async read(offset6, size2) {
194294
+ if (size2 === 0) {
194295
+ return new Uint8Array(0);
194296
+ }
194297
+ const req = await fetch_range(this.url, offset6, size2, __privateGet(this, _overrides2));
194298
+ if (!req.ok) {
194299
+ throw new Error(`failed http request ${this.url}, status: ${req.status} offset: ${offset6} size: ${size2}: ${req.statusText}`);
194300
+ }
194301
+ return new Uint8Array(await req.arrayBuffer());
194302
+ }
194303
+ }
194304
+ _overrides2 = new WeakMap();
194305
+ class ZipFileStore {
194306
+ constructor(reader) {
194307
+ __publicField(this, "info");
194308
+ this.info = unzip(reader);
194309
+ }
194310
+ async get(key2) {
194311
+ let entry2 = (await this.info).entries[strip_prefix(key2)];
194312
+ if (!entry2)
194313
+ return;
194314
+ return new Uint8Array(await entry2.arrayBuffer());
194315
+ }
194316
+ async has(key2) {
194317
+ return strip_prefix(key2) in (await this.info).entries;
194318
+ }
194319
+ static fromUrl(href2, opts2 = {}) {
194320
+ return new ZipFileStore(new HTTPRangeReader(href2, opts2));
194321
+ }
194322
+ static fromBlob(blob) {
194323
+ return new ZipFileStore(new BlobReader2(blob));
194324
+ }
194325
+ }
194326
+ const ZipFileStore$1 = ZipFileStore;
194327
+ function zarrOpenRoot(url, fileType, requestInit2) {
194328
+ let store2;
194329
+ if (fileType && fileType.endsWith(".zip")) {
194330
+ store2 = ZipFileStore$1.fromUrl(url, { overrides: requestInit2 });
194331
+ } else {
194332
+ store2 = new FetchStore$1(url, { overrides: requestInit2 });
194333
+ }
193255
194334
  return root(store2);
193256
194335
  }
193257
194336
  function prevPowerOf2(x2) {
@@ -195926,6 +197005,7 @@ function SpatialSubscriber(props2) {
195926
197005
  const [pointMultiObsLabelsData, pointMultiObsLabelsDataStatus] = usePointMultiObsLabels(coordinationScopes, coordinationScopesBy, loaders, dataset);
195927
197006
  const [obsSpotsData, obsSpotsDataStatus, obsSpotsUrls] = useMultiObsSpots(coordinationScopes, coordinationScopesBy, loaders, dataset, mergeCoordination, uuid);
195928
197007
  const [obsSpotsSetsData, obsSpotsSetsDataStatus] = useSpotMultiObsSets(coordinationScopes, coordinationScopesBy, loaders, dataset);
197008
+ const [obsSpotsFeatureLabelsData, obsSpotsFeatureLabelsDataStatus] = useSpotMultiFeatureLabels(coordinationScopes, coordinationScopesBy, loaders, dataset);
195929
197009
  const [spotMultiExpressionData, spotMultiLoadedFeatureSelection, spotMultiExpressionExtents, spotMultiExpressionNormData, spotMultiFeatureSelectionStatus] = useSpotMultiFeatureSelection(coordinationScopes, coordinationScopesBy, loaders, dataset);
195930
197010
  const [spotMultiIndicesData, spotMultiIndicesDataStatus] = useSpotMultiObsFeatureMatrixIndices(coordinationScopes, coordinationScopesBy, loaders, dataset);
195931
197011
  const [obsSegmentationsLocationsData, obsSegmentationsLocationsDataStatus] = useSegmentationMultiObsLocations(coordinationScopes, coordinationScopesBy, loaders, dataset);
@@ -196260,6 +197340,7 @@ function SpatialSubscriber(props2) {
196260
197340
  spotLayerScopes,
196261
197341
  spotLayerCoordination,
196262
197342
  spotMultiExpressionExtents,
197343
+ spotMultiFeatureLabels: obsSpotsFeatureLabelsData,
196263
197344
  // Points
196264
197345
  pointLayerScopes,
196265
197346
  pointLayerCoordination
@@ -204689,7 +205770,7 @@ const HIGLASS_BUNDLE_VERSION = "1.11.13";
204689
205770
  const HIGLASS_CSS_URL = `https://unpkg.com/${HIGLASS_PKG_NAME}@${HIGLASS_BUNDLE_VERSION}/dist/hglib.css`;
204690
205771
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
204691
205772
  const LazyHiGlassComponent = React__default.lazy(async () => {
204692
- const { HiGlassComponent } = await import("./hglib-9f6a7eaf.js").then((n3) => n3.h);
205773
+ const { HiGlassComponent } = await import("./hglib-167b2b88.js").then((n3) => n3.h);
204693
205774
  return { default: HiGlassComponent };
204694
205775
  });
204695
205776
  const HG_SIZE = 800;
@@ -209798,23 +210879,29 @@ function CellSetExpressionPlotSubscriber(props2) {
209798
210879
  const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, jitter: jitter2 = false, yMin = null, yUnits = null } = props2;
209799
210880
  const classes = useStyles$1();
209800
210881
  const loaders = useLoaders();
209801
- const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, featureValueTransform, featureValueTransformCoefficient, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets }, { setFeatureValueTransform, setFeatureValueTransformCoefficient }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.OBS_SET_FEATURE_VALUE_DISTRIBUTION], coordinationScopes);
210882
+ const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, featureValueTransform, featureValueTransformCoefficient, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets, sampleType }, { setFeatureValueTransform, setFeatureValueTransformCoefficient }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.OBS_SET_FEATURE_VALUE_DISTRIBUTION], coordinationScopes);
209802
210883
  const [width2, height2, containerRef] = useGridItemSize();
209803
210884
  const transformOptions = VALUE_TRANSFORM_OPTIONS;
209804
210885
  const [expressionData, loadedFeatureSelection, featureSelectionStatus] = useFeatureSelection(loaders, dataset, false, geneSelection, { obsType, featureType, featureValueType });
209805
210886
  const [{ featureLabelsMap }, featureLabelsStatus, featureLabelsUrls] = useFeatureLabelsData(loaders, dataset, false, {}, {}, { featureType });
209806
210887
  const [{ obsIndex }, matrixIndicesStatus, matrixIndicesUrls] = useObsFeatureMatrixIndices(loaders, dataset, false, { obsType, featureType, featureValueType });
209807
210888
  const [{ obsSets: cellSets }, obsSetsStatus, obsSetsUrls] = useObsSetsData(loaders, dataset, true, {}, {}, { obsType });
210889
+ const [{ sampleSets }, sampleSetsStatus, sampleSetsUrls] = useSampleSetsData(loaders, dataset, false, {}, {}, { sampleType });
210890
+ const [{ sampleEdges }, sampleEdgesStatus, sampleEdgesUrls] = useSampleEdgesData(loaders, dataset, false, {}, {}, { obsType, sampleType });
209808
210891
  const isReady = useReady([
209809
210892
  featureSelectionStatus,
209810
210893
  matrixIndicesStatus,
209811
210894
  obsSetsStatus,
209812
- featureLabelsStatus
210895
+ featureLabelsStatus,
210896
+ sampleSetsStatus,
210897
+ sampleEdgesStatus
209813
210898
  ]);
209814
210899
  const urls2 = useUrls([
209815
210900
  featureLabelsUrls,
209816
210901
  matrixIndicesUrls,
209817
- obsSetsUrls
210902
+ obsSetsUrls,
210903
+ sampleSetsUrls,
210904
+ sampleEdgesUrls
209818
210905
  ]);
209819
210906
  const [expressionArr, setArr] = useExpressionByCellSet(expressionData, obsIndex, cellSets, additionalCellSets, geneSelection, cellSetSelection, cellSetColor, featureValueTransform, featureValueTransformCoefficient, theme);
209820
210907
  const firstGeneSelected = geneSelection && geneSelection.length >= 1 ? (featureLabelsMap == null ? void 0 : featureLabelsMap.get(geneSelection[0])) || geneSelection[0] : null;
@@ -228095,7 +229182,7 @@ inherits(Projection$1, Transform2, {
228095
229182
  transform(_, pulse2) {
228096
229183
  let proj = this.value;
228097
229184
  if (!proj || _.modified("type")) {
228098
- this.value = proj = create5(_.type);
229185
+ this.value = proj = create4(_.type);
228099
229186
  projectionProperties.forEach((prop) => {
228100
229187
  if (_[prop] != null)
228101
229188
  set$3(proj, prop, _[prop]);
@@ -228117,7 +229204,7 @@ function fit(proj, _) {
228117
229204
  const data2 = collectGeoJSON(_.fit);
228118
229205
  _.extent ? proj.fitExtent(_.extent, data2) : _.size ? proj.fitSize(_.size, data2) : 0;
228119
229206
  }
228120
- function create5(type2) {
229207
+ function create4(type2) {
228121
229208
  const constructor = projection((type2 || "mercator").toLowerCase());
228122
229209
  if (!constructor)
228123
229210
  error("Unrecognized projection type: " + type2);
@@ -236924,8 +238011,8 @@ function bind3(view, el2, binding) {
236924
238011
  bind4.update = debounce(param2.debounce, bind4.update);
236925
238012
  }
236926
238013
  }
236927
- const create6 = param2.input == null && param2.element ? target : generate;
236928
- create6(bind4, el2, param2, view);
238014
+ const create5 = param2.input == null && param2.element ? target : generate;
238015
+ create5(bind4, el2, param2, view);
236929
238016
  if (!bind4.active) {
236930
238017
  view.on(view._signals[param2.signal], null, () => {
236931
238018
  bind4.source ? bind4.source = false : bind4.set(view.signal(param2.signal));
@@ -262950,6 +264037,40 @@ class ObsSetsCsvLoader extends CsvLoader {
262950
264037
  }, url, coordinationValues));
262951
264038
  }
262952
264039
  }
264040
+ class SampleSetsCsvLoader extends CsvLoader {
264041
+ loadFromCache(data2) {
264042
+ if (this.cachedResult) {
264043
+ return this.cachedResult;
264044
+ }
264045
+ const { sampleIndex: indexCol, sampleSets: setsArr } = this.options;
264046
+ const obsIndex = data2.map((d) => String(d[indexCol]));
264047
+ const setsCols = setsArr.map(({ column }) => column);
264048
+ const cellSetIds = setsCols.map((setCol) => Array.isArray(setCol) ? setCol.map((subCol) => data2.map((d) => d[subCol])) : data2.map((d) => d[setCol]));
264049
+ const scoresCols = setsArr.map((option) => option.scorePath || void 0);
264050
+ const cellSetScores = scoresCols.map((scoreCol) => scoreCol ? data2.map((d) => d[scoreCol]) : void 0);
264051
+ const obsIndices = cellSetIds.map(() => obsIndex);
264052
+ const cellSetsTree = dataToCellSetsTree([
264053
+ obsIndices,
264054
+ cellSetIds,
264055
+ cellSetScores
264056
+ ], setsArr);
264057
+ const obsSetsMembership = treeToMembershipMap(cellSetsTree);
264058
+ return [obsIndex, cellSetsTree, obsSetsMembership];
264059
+ }
264060
+ async load() {
264061
+ const payload = await this.getSourceData().catch((reason) => Promise.resolve(reason));
264062
+ if (payload instanceof AbstractLoaderError) {
264063
+ return Promise.reject(payload);
264064
+ }
264065
+ const { data: data2, url } = payload;
264066
+ const [obsIndex, cellSetsTree, obsSetsMembership] = this.loadFromCache(data2);
264067
+ return Promise.resolve(new LoaderResult({
264068
+ sampleIndex: obsIndex,
264069
+ sampleSets: cellSetsTree,
264070
+ sampleSetsMembership: obsSetsMembership
264071
+ }, url));
264072
+ }
264073
+ }
262953
264074
  class JsonSource {
262954
264075
  constructor({ url, requestInit: requestInit2 }) {
262955
264076
  this.url = url;
@@ -263405,7 +264526,7 @@ async function initLoader(imageData) {
263405
264526
  const { dimensions, isPyramid, transform: transform3 } = metadata2 || {};
263406
264527
  const labels2 = dimensions.map((d) => d.field);
263407
264528
  let source2;
263408
- const root2 = await zarrOpenRoot(url, requestInit2);
264529
+ const root2 = await zarrOpenRoot(url, null, requestInit2);
263409
264530
  if (isPyramid) {
263410
264531
  const metadataUrl = `${url}${url.slice(-1) === "/" ? "" : "/"}.zmetadata`;
263411
264532
  const response = await fetch(metadataUrl);
@@ -263443,7 +264564,7 @@ async function initLoader(imageData) {
263443
264564
  }
263444
264565
  case "ome-zarr": {
263445
264566
  const { coordinateTransformations: coordinateTransformationsFromOptions } = metadata2 || {};
263446
- const root2 = await zarrOpenRoot(url, requestInit2);
264567
+ const root2 = await zarrOpenRoot(url, null, requestInit2);
263447
264568
  const loader2 = await loadOmeZarr(root2);
263448
264569
  const { metadata: loaderMetadata } = loader2;
263449
264570
  const { omero, multiscales } = loaderMetadata;
@@ -263573,11 +264694,11 @@ class RasterJsonAsObsSegmentationsLoader extends RasterLoader {
263573
264694
  }
263574
264695
  }
263575
264696
  class ZarrDataSource {
263576
- constructor({ url, requestInit: requestInit2, store: store2 }) {
264697
+ constructor({ url, requestInit: requestInit2, store: store2, fileType }) {
263577
264698
  if (store2) {
263578
264699
  this.storeRoot = root(store2);
263579
264700
  } else {
263580
- this.storeRoot = zarrOpenRoot(url, requestInit2);
264701
+ this.storeRoot = zarrOpenRoot(url, fileType, requestInit2);
263581
264702
  }
263582
264703
  }
263583
264704
  getStoreRoot(path2) {
@@ -264748,6 +265869,35 @@ class ObsFeatureColumnsAnndataLoader extends AbstractTwoStepLoader {
264748
265869
  ]).then(([{ obsIndex, obsFeatureMatrix, featureIndex }]) => Promise.resolve(new LoaderResult({ obsIndex, obsFeatureMatrix, featureIndex }, null)));
264749
265870
  }
264750
265871
  }
265872
+ class SampleEdgesAnndataLoader extends AbstractTwoStepLoader {
265873
+ /**
265874
+ * Class method for loading observation string labels.
265875
+ * @returns {Promise} A promise for the array.
265876
+ */
265877
+ loadLabels() {
265878
+ const { path: path2 } = this.options;
265879
+ if (this.labels) {
265880
+ return this.labels;
265881
+ }
265882
+ if (!this.labels) {
265883
+ this.labels = this.dataSource._loadColumn(path2);
265884
+ return this.labels;
265885
+ }
265886
+ this.labels = Promise.resolve(null);
265887
+ return this.labels;
265888
+ }
265889
+ async load() {
265890
+ const { path: path2 } = this.options;
265891
+ const superResult = await super.load().catch((reason) => Promise.resolve(reason));
265892
+ if (superResult instanceof AbstractLoaderError) {
265893
+ return Promise.reject(superResult);
265894
+ }
265895
+ return Promise.all([
265896
+ this.dataSource.loadObsIndex(path2),
265897
+ this.loadLabels()
265898
+ ]).then(([obsIndex, sampleIds]) => Promise.resolve(new LoaderResult({ obsIndex, sampleIds }, null)));
265899
+ }
265900
+ }
264751
265901
  class ImageWrapper {
264752
265902
  constructor(vivLoader, options) {
264753
265903
  __publicField(this, "vivLoader");
@@ -265201,7 +266351,7 @@ class SpatialDataLabelsLoader extends SpatialDataImageLoader {
265201
266351
  };
265202
266352
  const imageWrapper = result.data.obsSegmentations.instance;
265203
266353
  const channelObjects = imageWrapper.getChannelObjects();
265204
- const channelCoordination = channelObjects.slice(0, 5).map((channelObj, i2) => ({
266354
+ const channelCoordination = channelObjects.slice(0, 7).map((channelObj, i2) => ({
265205
266355
  spatialTargetC: i2,
265206
266356
  // obsType: channelObj.name,
265207
266357
  spatialChannelColor: (channelObj.defaultColor || channelObj.autoDefaultColor).slice(0, 3),
@@ -265506,8 +266656,18 @@ const expectedCoordinationTypes = [
265506
266656
  "obsLabelsType",
265507
266657
  "embeddingType"
265508
266658
  ];
266659
+ function createGetFileType(jointFileType) {
266660
+ return (fileType) => {
266661
+ var _a3;
266662
+ if (jointFileType.endsWith(".zip") && ((_a3 = ALT_ZARR_STORE_TYPES[fileType]) == null ? void 0 : _a3.zip)) {
266663
+ return ALT_ZARR_STORE_TYPES[fileType].zip;
266664
+ }
266665
+ return fileType;
266666
+ };
266667
+ }
265509
266668
  function expandAnndataZarr(fileDef) {
265510
266669
  var _a3, _b2, _c2;
266670
+ const getFileType = createGetFileType(fileDef.fileType);
265511
266671
  const baseFileDef = {
265512
266672
  url: fileDef.url,
265513
266673
  requestInit: fileDef.requestInit,
@@ -265529,7 +266689,7 @@ function expandAnndataZarr(fileDef) {
265529
266689
  // obsFeatureMatrix
265530
266690
  ...options.obsFeatureMatrix ? [{
265531
266691
  ...baseFileDef,
265532
- fileType: FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR,
266692
+ fileType: getFileType(FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR),
265533
266693
  options: options.obsFeatureMatrix,
265534
266694
  coordinationValues: {
265535
266695
  ...extraCoordinationValues,
@@ -265541,7 +266701,7 @@ function expandAnndataZarr(fileDef) {
265541
266701
  // obsSets
265542
266702
  ...options.obsSets ? [{
265543
266703
  ...baseFileDef,
265544
- fileType: FileType$1.OBS_SETS_ANNDATA_ZARR,
266704
+ fileType: getFileType(FileType$1.OBS_SETS_ANNDATA_ZARR),
265545
266705
  options: options.obsSets,
265546
266706
  coordinationValues: {
265547
266707
  ...extraCoordinationValues,
@@ -265551,7 +266711,7 @@ function expandAnndataZarr(fileDef) {
265551
266711
  // obsSpots
265552
266712
  ...options.obsSpots ? [{
265553
266713
  ...baseFileDef,
265554
- fileType: FileType$1.OBS_SPOTS_ANNDATA_ZARR,
266714
+ fileType: getFileType(FileType$1.OBS_SPOTS_ANNDATA_ZARR),
265555
266715
  options: options.obsSpots,
265556
266716
  coordinationValues: {
265557
266717
  ...extraCoordinationValues,
@@ -265561,7 +266721,7 @@ function expandAnndataZarr(fileDef) {
265561
266721
  // obsPoints
265562
266722
  ...options.obsPoints ? [{
265563
266723
  ...baseFileDef,
265564
- fileType: FileType$1.OBS_POINTS_ANNDATA_ZARR,
266724
+ fileType: getFileType(FileType$1.OBS_POINTS_ANNDATA_ZARR),
265565
266725
  options: options.obsPoints,
265566
266726
  coordinationValues: {
265567
266727
  ...extraCoordinationValues,
@@ -265571,7 +266731,7 @@ function expandAnndataZarr(fileDef) {
265571
266731
  // obsLocations
265572
266732
  ...options.obsLocations ? [{
265573
266733
  ...baseFileDef,
265574
- fileType: FileType$1.OBS_LOCATIONS_ANNDATA_ZARR,
266734
+ fileType: getFileType(FileType$1.OBS_LOCATIONS_ANNDATA_ZARR),
265575
266735
  options: options.obsLocations,
265576
266736
  coordinationValues: {
265577
266737
  ...extraCoordinationValues,
@@ -265581,7 +266741,7 @@ function expandAnndataZarr(fileDef) {
265581
266741
  // obsSegmentations
265582
266742
  ...options.obsSegmentations ? [{
265583
266743
  ...baseFileDef,
265584
- fileType: FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR,
266744
+ fileType: getFileType(FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR),
265585
266745
  options: options.obsSegmentations,
265586
266746
  coordinationValues: {
265587
266747
  ...extraCoordinationValues,
@@ -265593,7 +266753,7 @@ function expandAnndataZarr(fileDef) {
265593
266753
  ...options.obsEmbedding ? Array.isArray(options.obsEmbedding) ? options.obsEmbedding.map((oe) => ({
265594
266754
  // obsEmbedding was an array, process each element.
265595
266755
  ...baseFileDef,
265596
- fileType: FileType$1.OBS_EMBEDDING_ANNDATA_ZARR,
266756
+ fileType: getFileType(FileType$1.OBS_EMBEDDING_ANNDATA_ZARR),
265597
266757
  options: {
265598
266758
  path: oe.path,
265599
266759
  dims: oe.dims
@@ -265607,7 +266767,7 @@ function expandAnndataZarr(fileDef) {
265607
266767
  })) : [{
265608
266768
  // obsEmbedding was an object.
265609
266769
  ...baseFileDef,
265610
- fileType: FileType$1.OBS_EMBEDDING_ANNDATA_ZARR,
266770
+ fileType: getFileType(FileType$1.OBS_EMBEDDING_ANNDATA_ZARR),
265611
266771
  options: options.obsEmbedding,
265612
266772
  coordinationValues: {
265613
266773
  ...extraCoordinationValues,
@@ -265620,7 +266780,7 @@ function expandAnndataZarr(fileDef) {
265620
266780
  ...options.obsLabels ? Array.isArray(options.obsLabels) ? options.obsLabels.map((ol) => ({
265621
266781
  // obsLabels was an array, process each element.
265622
266782
  ...baseFileDef,
265623
- fileType: FileType$1.OBS_LABELS_ANNDATA_ZARR,
266783
+ fileType: getFileType(FileType$1.OBS_LABELS_ANNDATA_ZARR),
265624
266784
  options: {
265625
266785
  path: ol.path
265626
266786
  },
@@ -265633,7 +266793,7 @@ function expandAnndataZarr(fileDef) {
265633
266793
  })) : [{
265634
266794
  // obsLabels was an object.
265635
266795
  ...baseFileDef,
265636
- fileType: FileType$1.OBS_LABELS_ANNDATA_ZARR,
266796
+ fileType: getFileType(FileType$1.OBS_LABELS_ANNDATA_ZARR),
265637
266797
  options: options.obsLabels,
265638
266798
  coordinationValues: {
265639
266799
  ...extraCoordinationValues,
@@ -265646,7 +266806,7 @@ function expandAnndataZarr(fileDef) {
265646
266806
  ...options.featureLabels ? Array.isArray(options.featureLabels) ? options.featureLabels.map((fl) => ({
265647
266807
  // featureLabels was an array, process each element.
265648
266808
  ...baseFileDef,
265649
- fileType: FileType$1.FEATURE_LABELS_ANNDATA_ZARR,
266809
+ fileType: getFileType(FileType$1.FEATURE_LABELS_ANNDATA_ZARR),
265650
266810
  options: {
265651
266811
  path: fl.path
265652
266812
  },
@@ -265659,7 +266819,7 @@ function expandAnndataZarr(fileDef) {
265659
266819
  })) : [{
265660
266820
  // featureLabels was an object.
265661
266821
  ...baseFileDef,
265662
- fileType: FileType$1.FEATURE_LABELS_ANNDATA_ZARR,
266822
+ fileType: getFileType(FileType$1.FEATURE_LABELS_ANNDATA_ZARR),
265663
266823
  options: options.featureLabels,
265664
266824
  coordinationValues: {
265665
266825
  ...extraCoordinationValues,
@@ -266025,6 +267185,13 @@ function makeViewType(name2, component) {
266025
267185
  function makeFileType(name2, dataType, dataLoaderClass, dataSourceClass, optionsSchema) {
266026
267186
  return new PluginFileType(name2, dataType, dataLoaderClass, dataSourceClass, optionsSchema);
266027
267187
  }
267188
+ function makeZarrFileTypes(name2, dataType, dataLoaderClass, dataSourceClass, optionsSchema) {
267189
+ const altFileTypes = Object.values(ALT_ZARR_STORE_TYPES[name2]);
267190
+ return [
267191
+ new PluginFileType(name2, dataType, dataLoaderClass, dataSourceClass, optionsSchema),
267192
+ ...altFileTypes.map((n3) => new PluginFileType(n3, dataType, dataLoaderClass, dataSourceClass, optionsSchema))
267193
+ ];
267194
+ }
266028
267195
  const baseViewTypes = [
266029
267196
  makeViewType(ViewType$1.DESCRIPTION, DescriptionSubscriber),
266030
267197
  makeViewType(ViewType$1.OBS_SETS, ObsSetsManagerSubscriber),
@@ -266053,20 +267220,22 @@ const baseFileTypes = [
266053
267220
  makeFileType(FileType$1.OBS_LABELS_CSV, DataType$2.OBS_LABELS, ObsLabelsCsvLoader, CsvSource, obsLabelsCsvSchema),
266054
267221
  makeFileType(FileType$1.OBS_FEATURE_MATRIX_CSV, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureMatrixCsvLoader, CsvSource, z.null()),
266055
267222
  makeFileType(FileType$1.FEATURE_LABELS_CSV, DataType$2.FEATURE_LABELS, FeatureLabelsCsvLoader, CsvSource, featureLabelsCsvSchema),
267223
+ makeFileType(FileType$1.SAMPLE_SETS_CSV, DataType$2.SAMPLE_SETS, SampleSetsCsvLoader, CsvSource, sampleSetsCsvSchema),
266056
267224
  // All JSON file types
266057
267225
  makeFileType(FileType$1.OBS_SEGMENTATIONS_JSON, DataType$2.OBS_SEGMENTATIONS, ObsSegmentationsJsonLoader, JsonSource, z.null()),
266058
267226
  makeFileType(FileType$1.OBS_SETS_JSON, DataType$2.OBS_SETS, ObsSetsJsonLoader, JsonSource, z.null()),
266059
267227
  // All AnnData file types
266060
- makeFileType(FileType$1.OBS_SETS_ANNDATA_ZARR, DataType$2.OBS_SETS, ObsSetsAnndataLoader, AnnDataSource, obsSetsAnndataSchema),
266061
- makeFileType(FileType$1.OBS_EMBEDDING_ANNDATA_ZARR, DataType$2.OBS_EMBEDDING, ObsEmbeddingAnndataLoader, AnnDataSource, obsEmbeddingAnndataSchema),
266062
- makeFileType(FileType$1.OBS_SPOTS_ANNDATA_ZARR, DataType$2.OBS_SPOTS, ObsSpotsAnndataLoader, AnnDataSource, obsSpotsAnndataSchema),
266063
- makeFileType(FileType$1.OBS_POINTS_ANNDATA_ZARR, DataType$2.OBS_POINTS, ObsPointsAnndataLoader, AnnDataSource, obsPointsAnndataSchema),
266064
- makeFileType(FileType$1.OBS_LOCATIONS_ANNDATA_ZARR, DataType$2.OBS_LOCATIONS, ObsLocationsAnndataLoader, AnnDataSource, obsLocationsAnndataSchema),
266065
- makeFileType(FileType$1.OBS_LABELS_ANNDATA_ZARR, DataType$2.OBS_LABELS, ObsLabelsAnndataLoader, AnnDataSource, obsLabelsAnndataSchema),
266066
- makeFileType(FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureMatrixAnndataLoader, AnnDataSource, obsFeatureMatrixAnndataSchema),
266067
- makeFileType(FileType$1.OBS_FEATURE_COLUMNS_ANNDATA_ZARR, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureColumnsAnndataLoader, AnnDataSource, obsFeatureColumnsAnndataSchema),
266068
- makeFileType(FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR, DataType$2.OBS_SEGMENTATIONS, ObsSegmentationsAnndataLoader, AnnDataSource, obsSegmentationsAnndataSchema),
266069
- makeFileType(FileType$1.FEATURE_LABELS_ANNDATA_ZARR, DataType$2.FEATURE_LABELS, FeatureLabelsAnndataLoader, AnnDataSource, featureLabelsAnndataSchema),
267228
+ ...makeZarrFileTypes(FileType$1.OBS_SETS_ANNDATA_ZARR, DataType$2.OBS_SETS, ObsSetsAnndataLoader, AnnDataSource, obsSetsAnndataSchema),
267229
+ ...makeZarrFileTypes(FileType$1.OBS_EMBEDDING_ANNDATA_ZARR, DataType$2.OBS_EMBEDDING, ObsEmbeddingAnndataLoader, AnnDataSource, obsEmbeddingAnndataSchema),
267230
+ ...makeZarrFileTypes(FileType$1.OBS_SPOTS_ANNDATA_ZARR, DataType$2.OBS_SPOTS, ObsSpotsAnndataLoader, AnnDataSource, obsSpotsAnndataSchema),
267231
+ ...makeZarrFileTypes(FileType$1.OBS_POINTS_ANNDATA_ZARR, DataType$2.OBS_POINTS, ObsPointsAnndataLoader, AnnDataSource, obsPointsAnndataSchema),
267232
+ ...makeZarrFileTypes(FileType$1.OBS_LOCATIONS_ANNDATA_ZARR, DataType$2.OBS_LOCATIONS, ObsLocationsAnndataLoader, AnnDataSource, obsLocationsAnndataSchema),
267233
+ ...makeZarrFileTypes(FileType$1.OBS_LABELS_ANNDATA_ZARR, DataType$2.OBS_LABELS, ObsLabelsAnndataLoader, AnnDataSource, obsLabelsAnndataSchema),
267234
+ ...makeZarrFileTypes(FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureMatrixAnndataLoader, AnnDataSource, obsFeatureMatrixAnndataSchema),
267235
+ ...makeZarrFileTypes(FileType$1.OBS_FEATURE_COLUMNS_ANNDATA_ZARR, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureColumnsAnndataLoader, AnnDataSource, obsFeatureColumnsAnndataSchema),
267236
+ ...makeZarrFileTypes(FileType$1.OBS_SEGMENTATIONS_ANNDATA_ZARR, DataType$2.OBS_SEGMENTATIONS, ObsSegmentationsAnndataLoader, AnnDataSource, obsSegmentationsAnndataSchema),
267237
+ ...makeZarrFileTypes(FileType$1.FEATURE_LABELS_ANNDATA_ZARR, DataType$2.FEATURE_LABELS, FeatureLabelsAnndataLoader, AnnDataSource, featureLabelsAnndataSchema),
267238
+ ...makeZarrFileTypes(FileType$1.SAMPLE_EDGES_ANNDATA_ZARR, DataType$2.SAMPLE_EDGES, SampleEdgesAnndataLoader, AnnDataSource, sampleEdgesAnndataSchema),
266070
267239
  // All MuData file types
266071
267240
  makeFileType(FileType$1.OBS_SETS_MUDATA_ZARR, DataType$2.OBS_SETS, ObsSetsAnndataLoader, MuDataSource, obsSetsAnndataSchema),
266072
267241
  makeFileType(FileType$1.OBS_EMBEDDING_MUDATA_ZARR, DataType$2.OBS_EMBEDDING, ObsEmbeddingAnndataLoader, MuDataSource, obsEmbeddingAnndataSchema),
@@ -266092,6 +267261,7 @@ const baseFileTypes = [
266092
267261
  makeFileType(FileType$1.OBS_SPOTS_SPATIALDATA_ZARR, DataType$2.OBS_SPOTS, SpatialDataObsSpotsLoader, SpatialDataShapesSource, obsSpotsSpatialdataSchema),
266093
267262
  makeFileType(FileType$1.OBS_FEATURE_MATRIX_SPATIALDATA_ZARR, DataType$2.OBS_FEATURE_MATRIX, ObsFeatureMatrixAnndataLoader, SpatialDataTableSource, obsFeatureMatrixSpatialdataSchema),
266094
267263
  makeFileType(FileType$1.OBS_SETS_SPATIALDATA_ZARR, DataType$2.OBS_SETS, SpatialDataObsSetsLoader, SpatialDataTableSource, obsSetsSpatialdataSchema),
267264
+ makeFileType(FileType$1.FEATURE_LABELS_SPATIALDATA_ZARR, DataType$2.FEATURE_LABELS, FeatureLabelsAnndataLoader, SpatialDataTableSource, featureLabelsAnndataSchema),
266095
267265
  // All legacy file types
266096
267266
  makeFileType(FileType$1.OBS_FEATURE_MATRIX_EXPRESSION_MATRIX_ZARR, DataType$2.OBS_FEATURE_MATRIX, MatrixZarrAsObsFeatureMatrixLoader, ZarrDataSource, z.null()),
266097
267267
  makeFileType(FileType$1.IMAGE_RASTER_JSON, DataType$2.IMAGE, RasterJsonAsImageLoader, JsonSource, rasterJsonSchema),
@@ -266110,6 +267280,7 @@ const baseFileTypes = [
266110
267280
  ];
266111
267281
  const baseJointFileTypes = [
266112
267282
  new PluginJointFileType(FileType$1.ANNDATA_ZARR, expandAnndataZarr, anndataZarrSchema),
267283
+ new PluginJointFileType(FileType$1.ANNDATA_ZARR_ZIP, expandAnndataZarr, anndataZarrSchema),
266113
267284
  new PluginJointFileType(FileType$1.SPATIALDATA_ZARR, expandSpatialdataZarr, spatialdataZarrSchema),
266114
267285
  // For legacy file types:
266115
267286
  new PluginJointFileType(FileType$1.ANNDATA_CELLS_ZARR, expandAnndataCellsZarr, anndataCellsZarrSchema),
@@ -266304,7 +267475,9 @@ const baseCoordinationTypes = [
266304
267475
  new PluginCoordinationType(CoordinationType$1.LEGEND_VISIBLE, true, z.boolean()),
266305
267476
  new PluginCoordinationType(CoordinationType$1.SPATIAL_CHANNEL_LABELS_VISIBLE, true, z.boolean()),
266306
267477
  new PluginCoordinationType(CoordinationType$1.SPATIAL_CHANNEL_LABELS_ORIENTATION, "vertical", z.enum(["vertical", "horizontal"])),
266307
- new PluginCoordinationType(CoordinationType$1.SPATIAL_CHANNEL_LABEL_SIZE, 14, z.number())
267478
+ new PluginCoordinationType(CoordinationType$1.SPATIAL_CHANNEL_LABEL_SIZE, 14, z.number()),
267479
+ new PluginCoordinationType(CoordinationType$1.SAMPLE_TYPE, null, z.string().nullable()),
267480
+ new PluginCoordinationType(CoordinationType$1.SAMPLE_SET_SELECTION, null, z.array(z.string()).nullable())
266308
267481
  ];
266309
267482
  function Vitessce(props2) {
266310
267483
  const {