@vitessce/all 3.8.9 → 3.8.10

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.
@@ -5598,7 +5598,7 @@ function createRange(fromRight) {
5598
5598
  return baseRange(start2, end2, step);
5599
5599
  };
5600
5600
  }
5601
- var range$f = createRange();
5601
+ var range$e = createRange();
5602
5602
  function sum$7(array2) {
5603
5603
  return array2 && array2.length ? baseSum(array2, identity$h) : 0;
5604
5604
  }
@@ -7679,10 +7679,10 @@ function requireLrucache() {
7679
7679
  lrucache = LRUCache3;
7680
7680
  return lrucache;
7681
7681
  }
7682
- var range$e;
7682
+ var range$d;
7683
7683
  var hasRequiredRange$1;
7684
7684
  function requireRange$1() {
7685
- if (hasRequiredRange$1) return range$e;
7685
+ if (hasRequiredRange$1) return range$d;
7686
7686
  hasRequiredRange$1 = 1;
7687
7687
  const SPACE_CHARACTERS = /\s+/g;
7688
7688
  class Range2 {
@@ -7823,7 +7823,7 @@ function requireRange$1() {
7823
7823
  return false;
7824
7824
  }
7825
7825
  }
7826
- range$e = Range2;
7826
+ range$d = Range2;
7827
7827
  const LRU = requireLrucache();
7828
7828
  const cache2 = new LRU();
7829
7829
  const parseOptions2 = requireParseOptions();
@@ -8053,7 +8053,7 @@ function requireRange$1() {
8053
8053
  }
8054
8054
  return true;
8055
8055
  };
8056
- return range$e;
8056
+ return range$d;
8057
8057
  }
8058
8058
  var comparator$2;
8059
8059
  var hasRequiredComparator$1;
@@ -46931,7 +46931,7 @@ function escapeRegExp(value2) {
46931
46931
  return value2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
46932
46932
  }
46933
46933
  const clamp$6 = (value2, min2, max2) => Math.max(min2, Math.min(max2, value2));
46934
- function range$d(from2, to) {
46934
+ function range$c(from2, to) {
46935
46935
  return Array.from({
46936
46936
  length: to - from2
46937
46937
  }).map((_, i2) => from2 + i2);
@@ -51329,7 +51329,7 @@ const useGridVirtualScroller = () => {
51329
51329
  const rowModels = params2.rows ?? currentPage.rows;
51330
51330
  const firstRowToRender = baseRenderContext.firstRowIndex;
51331
51331
  const lastRowToRender = Math.min(baseRenderContext.lastRowIndex, rowModels.length);
51332
- const rowIndexes = params2.rows ? range$d(0, params2.rows.length) : range$d(firstRowToRender, lastRowToRender);
51332
+ const rowIndexes = params2.rows ? range$c(0, params2.rows.length) : range$c(firstRowToRender, lastRowToRender);
51333
51333
  let virtualRowIndex = -1;
51334
51334
  if (!isPinnedSection && focusedVirtualCell) {
51335
51335
  if (focusedVirtualCell.rowIndex < firstRowToRender) {
@@ -72816,7 +72816,7 @@ let powers = 0;
72816
72816
  const boolean = increment$1();
72817
72817
  const booleanish = increment$1();
72818
72818
  const overloadedBoolean = increment$1();
72819
- const number$b = increment$1();
72819
+ const number$a = increment$1();
72820
72820
  const spaceSeparated = increment$1();
72821
72821
  const commaSeparated = increment$1();
72822
72822
  const commaOrSpaceSeparated = increment$1();
@@ -72829,7 +72829,7 @@ const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
72829
72829
  booleanish,
72830
72830
  commaOrSpaceSeparated,
72831
72831
  commaSeparated,
72832
- number: number$b,
72832
+ number: number$a,
72833
72833
  overloadedBoolean,
72834
72834
  spaceSeparated
72835
72835
  }, Symbol.toStringTag, { value: "Module" }));
@@ -72928,9 +72928,9 @@ const aria$1 = create$c({
72928
72928
  ariaAutoComplete: null,
72929
72929
  ariaBusy: booleanish,
72930
72930
  ariaChecked: booleanish,
72931
- ariaColCount: number$b,
72932
- ariaColIndex: number$b,
72933
- ariaColSpan: number$b,
72931
+ ariaColCount: number$a,
72932
+ ariaColIndex: number$a,
72933
+ ariaColSpan: number$a,
72934
72934
  ariaControls: spaceSeparated,
72935
72935
  ariaCurrent: null,
72936
72936
  ariaDescribedBy: spaceSeparated,
@@ -72947,7 +72947,7 @@ const aria$1 = create$c({
72947
72947
  ariaKeyShortcuts: null,
72948
72948
  ariaLabel: null,
72949
72949
  ariaLabelledBy: spaceSeparated,
72950
- ariaLevel: number$b,
72950
+ ariaLevel: number$a,
72951
72951
  ariaLive: null,
72952
72952
  ariaModal: booleanish,
72953
72953
  ariaMultiLine: booleanish,
@@ -72955,21 +72955,21 @@ const aria$1 = create$c({
72955
72955
  ariaOrientation: null,
72956
72956
  ariaOwns: spaceSeparated,
72957
72957
  ariaPlaceholder: null,
72958
- ariaPosInSet: number$b,
72958
+ ariaPosInSet: number$a,
72959
72959
  ariaPressed: booleanish,
72960
72960
  ariaReadOnly: booleanish,
72961
72961
  ariaRelevant: null,
72962
72962
  ariaRequired: booleanish,
72963
72963
  ariaRoleDescription: spaceSeparated,
72964
- ariaRowCount: number$b,
72965
- ariaRowIndex: number$b,
72966
- ariaRowSpan: number$b,
72964
+ ariaRowCount: number$a,
72965
+ ariaRowIndex: number$a,
72966
+ ariaRowSpan: number$a,
72967
72967
  ariaSelected: booleanish,
72968
- ariaSetSize: number$b,
72968
+ ariaSetSize: number$a,
72969
72969
  ariaSort: null,
72970
- ariaValueMax: number$b,
72971
- ariaValueMin: number$b,
72972
- ariaValueNow: number$b,
72970
+ ariaValueMax: number$a,
72971
+ ariaValueMin: number$a,
72972
+ ariaValueNow: number$a,
72973
72973
  ariaValueText: null,
72974
72974
  role: null
72975
72975
  }
@@ -73008,13 +73008,13 @@ const html$2 = create$c({
73008
73008
  checked: boolean,
73009
73009
  cite: null,
73010
73010
  className: spaceSeparated,
73011
- cols: number$b,
73011
+ cols: number$a,
73012
73012
  colSpan: null,
73013
73013
  content: null,
73014
73014
  contentEditable: booleanish,
73015
73015
  controls: boolean,
73016
73016
  controlsList: spaceSeparated,
73017
- coords: number$b | commaSeparated,
73017
+ coords: number$a | commaSeparated,
73018
73018
  crossOrigin: null,
73019
73019
  data: null,
73020
73020
  dateTime: null,
@@ -73036,9 +73036,9 @@ const html$2 = create$c({
73036
73036
  formNoValidate: boolean,
73037
73037
  formTarget: null,
73038
73038
  headers: spaceSeparated,
73039
- height: number$b,
73039
+ height: number$a,
73040
73040
  hidden: boolean,
73041
- high: number$b,
73041
+ high: number$a,
73042
73042
  href: null,
73043
73043
  hrefLang: null,
73044
73044
  htmlFor: spaceSeparated,
@@ -73063,14 +73063,14 @@ const html$2 = create$c({
73063
73063
  list: null,
73064
73064
  loading: null,
73065
73065
  loop: boolean,
73066
- low: number$b,
73066
+ low: number$a,
73067
73067
  manifest: null,
73068
73068
  max: null,
73069
- maxLength: number$b,
73069
+ maxLength: number$a,
73070
73070
  media: null,
73071
73071
  method: null,
73072
73072
  min: null,
73073
- minLength: number$b,
73073
+ minLength: number$a,
73074
73074
  multiple: boolean,
73075
73075
  muted: boolean,
73076
73076
  name: null,
@@ -73166,7 +73166,7 @@ const html$2 = create$c({
73166
73166
  onWaiting: null,
73167
73167
  onWheel: null,
73168
73168
  open: boolean,
73169
- optimum: number$b,
73169
+ optimum: number$a,
73170
73170
  pattern: null,
73171
73171
  ping: spaceSeparated,
73172
73172
  placeholder: null,
@@ -73181,8 +73181,8 @@ const html$2 = create$c({
73181
73181
  rel: spaceSeparated,
73182
73182
  required: boolean,
73183
73183
  reversed: boolean,
73184
- rows: number$b,
73185
- rowSpan: number$b,
73184
+ rows: number$a,
73185
+ rowSpan: number$a,
73186
73186
  sandbox: spaceSeparated,
73187
73187
  scope: null,
73188
73188
  scoped: boolean,
@@ -73192,19 +73192,19 @@ const html$2 = create$c({
73192
73192
  shadowRootDelegatesFocus: boolean,
73193
73193
  shadowRootMode: null,
73194
73194
  shape: null,
73195
- size: number$b,
73195
+ size: number$a,
73196
73196
  sizes: null,
73197
73197
  slot: null,
73198
- span: number$b,
73198
+ span: number$a,
73199
73199
  spellCheck: booleanish,
73200
73200
  src: null,
73201
73201
  srcDoc: null,
73202
73202
  srcLang: null,
73203
73203
  srcSet: null,
73204
- start: number$b,
73204
+ start: number$a,
73205
73205
  step: null,
73206
73206
  style: null,
73207
- tabIndex: number$b,
73207
+ tabIndex: number$a,
73208
73208
  target: null,
73209
73209
  title: null,
73210
73210
  translate: null,
@@ -73212,7 +73212,7 @@ const html$2 = create$c({
73212
73212
  typeMustMatch: boolean,
73213
73213
  useMap: null,
73214
73214
  value: booleanish,
73215
- width: number$b,
73215
+ width: number$a,
73216
73216
  wrap: null,
73217
73217
  writingSuggestions: null,
73218
73218
  // Legacy.
@@ -73229,11 +73229,11 @@ const html$2 = create$c({
73229
73229
  // `<body>`. Use CSS `background-image` instead
73230
73230
  bgColor: null,
73231
73231
  // `<body>` and table elements. Use CSS `background-color` instead
73232
- border: number$b,
73232
+ border: number$a,
73233
73233
  // `<table>`. Use CSS `border-width` instead,
73234
73234
  borderColor: null,
73235
73235
  // `<table>`. Use CSS `border-color` instead,
73236
- bottomMargin: number$b,
73236
+ bottomMargin: number$a,
73237
73237
  // `<body>`
73238
73238
  cellPadding: null,
73239
73239
  // `<table>`
@@ -73267,9 +73267,9 @@ const html$2 = create$c({
73267
73267
  // `<table>`
73268
73268
  frameBorder: null,
73269
73269
  // `<iframe>`. Use CSS `border` instead
73270
- hSpace: number$b,
73270
+ hSpace: number$a,
73271
73271
  // `<img>` and `<object>`
73272
- leftMargin: number$b,
73272
+ leftMargin: number$a,
73273
73273
  // `<body>`
73274
73274
  link: null,
73275
73275
  // `<body>`. Use CSS `a:link {color: *}` instead
@@ -73277,9 +73277,9 @@ const html$2 = create$c({
73277
73277
  // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`
73278
73278
  lowSrc: null,
73279
73279
  // `<img>`. Use a `<picture>`
73280
- marginHeight: number$b,
73280
+ marginHeight: number$a,
73281
73281
  // `<body>`
73282
- marginWidth: number$b,
73282
+ marginWidth: number$a,
73283
73283
  // `<body>`
73284
73284
  noResize: boolean,
73285
73285
  // `<frame>`
@@ -73297,7 +73297,7 @@ const html$2 = create$c({
73297
73297
  // `<isindex>`
73298
73298
  rev: null,
73299
73299
  // `<link>`
73300
- rightMargin: number$b,
73300
+ rightMargin: number$a,
73301
73301
  // `<body>`
73302
73302
  rules: null,
73303
73303
  // `<table>`
@@ -73311,7 +73311,7 @@ const html$2 = create$c({
73311
73311
  // `<table>`
73312
73312
  text: null,
73313
73313
  // `<body>`. Use CSS `color` instead
73314
- topMargin: number$b,
73314
+ topMargin: number$a,
73315
73315
  // `<body>`
73316
73316
  valueType: null,
73317
73317
  // `<param>`
@@ -73321,7 +73321,7 @@ const html$2 = create$c({
73321
73321
  // Several. Use CSS `vertical-align` instead
73322
73322
  vLink: null,
73323
73323
  // `<body>`. Use CSS `a:visited {color}` instead
73324
- vSpace: number$b,
73324
+ vSpace: number$a,
73325
73325
  // `<img>` and `<object>`
73326
73326
  // Non-standard Properties.
73327
73327
  allowTransparency: null,
@@ -73331,7 +73331,7 @@ const html$2 = create$c({
73331
73331
  disableRemotePlayback: boolean,
73332
73332
  prefix: null,
73333
73333
  property: null,
73334
- results: number$b,
73334
+ results: number$a,
73335
73335
  security: null,
73336
73336
  unselectable: null
73337
73337
  }
@@ -73516,27 +73516,27 @@ const svg$1 = create$c({
73516
73516
  transform: caseSensitiveTransform,
73517
73517
  properties: {
73518
73518
  about: commaOrSpaceSeparated,
73519
- accentHeight: number$b,
73519
+ accentHeight: number$a,
73520
73520
  accumulate: null,
73521
73521
  additive: null,
73522
73522
  alignmentBaseline: null,
73523
- alphabetic: number$b,
73524
- amplitude: number$b,
73523
+ alphabetic: number$a,
73524
+ amplitude: number$a,
73525
73525
  arabicForm: null,
73526
- ascent: number$b,
73526
+ ascent: number$a,
73527
73527
  attributeName: null,
73528
73528
  attributeType: null,
73529
- azimuth: number$b,
73529
+ azimuth: number$a,
73530
73530
  bandwidth: null,
73531
73531
  baselineShift: null,
73532
73532
  baseFrequency: null,
73533
73533
  baseProfile: null,
73534
73534
  bbox: null,
73535
73535
  begin: null,
73536
- bias: number$b,
73536
+ bias: number$a,
73537
73537
  by: null,
73538
73538
  calcMode: null,
73539
- capHeight: number$b,
73539
+ capHeight: number$a,
73540
73540
  className: spaceSeparated,
73541
73541
  clip: null,
73542
73542
  clipPath: null,
@@ -73557,26 +73557,26 @@ const svg$1 = create$c({
73557
73557
  d: null,
73558
73558
  dataType: null,
73559
73559
  defaultAction: null,
73560
- descent: number$b,
73561
- diffuseConstant: number$b,
73560
+ descent: number$a,
73561
+ diffuseConstant: number$a,
73562
73562
  direction: null,
73563
73563
  display: null,
73564
73564
  dur: null,
73565
- divisor: number$b,
73565
+ divisor: number$a,
73566
73566
  dominantBaseline: null,
73567
73567
  download: boolean,
73568
73568
  dx: null,
73569
73569
  dy: null,
73570
73570
  edgeMode: null,
73571
73571
  editable: null,
73572
- elevation: number$b,
73572
+ elevation: number$a,
73573
73573
  enableBackground: null,
73574
73574
  end: null,
73575
73575
  event: null,
73576
- exponent: number$b,
73576
+ exponent: number$a,
73577
73577
  externalResourcesRequired: null,
73578
73578
  fill: null,
73579
- fillOpacity: number$b,
73579
+ fillOpacity: number$a,
73580
73580
  fillRule: null,
73581
73581
  filter: null,
73582
73582
  filterRes: null,
@@ -73606,27 +73606,27 @@ const svg$1 = create$c({
73606
73606
  gradientTransform: null,
73607
73607
  gradientUnits: null,
73608
73608
  handler: null,
73609
- hanging: number$b,
73609
+ hanging: number$a,
73610
73610
  hatchContentUnits: null,
73611
73611
  hatchUnits: null,
73612
73612
  height: null,
73613
73613
  href: null,
73614
73614
  hrefLang: null,
73615
- horizAdvX: number$b,
73616
- horizOriginX: number$b,
73617
- horizOriginY: number$b,
73615
+ horizAdvX: number$a,
73616
+ horizOriginX: number$a,
73617
+ horizOriginY: number$a,
73618
73618
  id: null,
73619
- ideographic: number$b,
73619
+ ideographic: number$a,
73620
73620
  imageRendering: null,
73621
73621
  initialVisibility: null,
73622
73622
  in: null,
73623
73623
  in2: null,
73624
- intercept: number$b,
73625
- k: number$b,
73626
- k1: number$b,
73627
- k2: number$b,
73628
- k3: number$b,
73629
- k4: number$b,
73624
+ intercept: number$a,
73625
+ k: number$a,
73626
+ k1: number$a,
73627
+ k2: number$a,
73628
+ k3: number$a,
73629
+ k4: number$a,
73630
73630
  kernelMatrix: commaOrSpaceSeparated,
73631
73631
  kernelUnitLength: null,
73632
73632
  keyPoints: null,
@@ -73640,7 +73640,7 @@ const svg$1 = create$c({
73640
73640
  lengthAdjust: null,
73641
73641
  letterSpacing: null,
73642
73642
  lightingColor: null,
73643
- limitingConeAngle: number$b,
73643
+ limitingConeAngle: number$a,
73644
73644
  local: null,
73645
73645
  markerEnd: null,
73646
73646
  markerMid: null,
@@ -73656,7 +73656,7 @@ const svg$1 = create$c({
73656
73656
  media: null,
73657
73657
  mediaCharacterEncoding: null,
73658
73658
  mediaContentEncodings: null,
73659
- mediaSize: number$b,
73659
+ mediaSize: number$a,
73660
73660
  mediaTime: null,
73661
73661
  method: null,
73662
73662
  min: null,
@@ -73762,12 +73762,12 @@ const svg$1 = create$c({
73762
73762
  origin: null,
73763
73763
  overflow: null,
73764
73764
  overlay: null,
73765
- overlinePosition: number$b,
73766
- overlineThickness: number$b,
73765
+ overlinePosition: number$a,
73766
+ overlineThickness: number$a,
73767
73767
  paintOrder: null,
73768
73768
  panose1: null,
73769
73769
  path: null,
73770
- pathLength: number$b,
73770
+ pathLength: number$a,
73771
73771
  patternContentUnits: null,
73772
73772
  patternTransform: null,
73773
73773
  patternUnits: null,
@@ -73777,9 +73777,9 @@ const svg$1 = create$c({
73777
73777
  playbackOrder: null,
73778
73778
  pointerEvents: null,
73779
73779
  points: null,
73780
- pointsAtX: number$b,
73781
- pointsAtY: number$b,
73782
- pointsAtZ: number$b,
73780
+ pointsAtX: number$a,
73781
+ pointsAtY: number$a,
73782
+ pointsAtZ: number$a,
73783
73783
  preserveAlpha: null,
73784
73784
  preserveAspectRatio: null,
73785
73785
  primitiveUnits: null,
@@ -73811,8 +73811,8 @@ const svg$1 = create$c({
73811
73811
  side: null,
73812
73812
  slope: null,
73813
73813
  snapshotTime: null,
73814
- specularConstant: number$b,
73815
- specularExponent: number$b,
73814
+ specularConstant: number$a,
73815
+ specularExponent: number$a,
73816
73816
  spreadMethod: null,
73817
73817
  spacing: null,
73818
73818
  startOffset: null,
@@ -73822,30 +73822,30 @@ const svg$1 = create$c({
73822
73822
  stitchTiles: null,
73823
73823
  stopColor: null,
73824
73824
  stopOpacity: null,
73825
- strikethroughPosition: number$b,
73826
- strikethroughThickness: number$b,
73825
+ strikethroughPosition: number$a,
73826
+ strikethroughThickness: number$a,
73827
73827
  string: null,
73828
73828
  stroke: null,
73829
73829
  strokeDashArray: commaOrSpaceSeparated,
73830
73830
  strokeDashOffset: null,
73831
73831
  strokeLineCap: null,
73832
73832
  strokeLineJoin: null,
73833
- strokeMiterLimit: number$b,
73834
- strokeOpacity: number$b,
73833
+ strokeMiterLimit: number$a,
73834
+ strokeOpacity: number$a,
73835
73835
  strokeWidth: null,
73836
73836
  style: null,
73837
- surfaceScale: number$b,
73837
+ surfaceScale: number$a,
73838
73838
  syncBehavior: null,
73839
73839
  syncBehaviorDefault: null,
73840
73840
  syncMaster: null,
73841
73841
  syncTolerance: null,
73842
73842
  syncToleranceDefault: null,
73843
73843
  systemLanguage: commaOrSpaceSeparated,
73844
- tabIndex: number$b,
73844
+ tabIndex: number$a,
73845
73845
  tableValues: null,
73846
73846
  target: null,
73847
- targetX: number$b,
73848
- targetY: number$b,
73847
+ targetX: number$a,
73848
+ targetY: number$a,
73849
73849
  textAnchor: null,
73850
73850
  textDecoration: null,
73851
73851
  textRendering: null,
@@ -73860,22 +73860,22 @@ const svg$1 = create$c({
73860
73860
  transformOrigin: null,
73861
73861
  u1: null,
73862
73862
  u2: null,
73863
- underlinePosition: number$b,
73864
- underlineThickness: number$b,
73863
+ underlinePosition: number$a,
73864
+ underlineThickness: number$a,
73865
73865
  unicode: null,
73866
73866
  unicodeBidi: null,
73867
73867
  unicodeRange: null,
73868
- unitsPerEm: number$b,
73868
+ unitsPerEm: number$a,
73869
73869
  values: null,
73870
- vAlphabetic: number$b,
73871
- vMathematical: number$b,
73870
+ vAlphabetic: number$a,
73871
+ vMathematical: number$a,
73872
73872
  vectorEffect: null,
73873
- vHanging: number$b,
73874
- vIdeographic: number$b,
73873
+ vHanging: number$a,
73874
+ vIdeographic: number$a,
73875
73875
  version: null,
73876
- vertAdvY: number$b,
73877
- vertOriginX: number$b,
73878
- vertOriginY: number$b,
73876
+ vertAdvY: number$a,
73877
+ vertOriginX: number$a,
73878
+ vertOriginY: number$a,
73879
73879
  viewBox: null,
73880
73880
  viewTarget: null,
73881
73881
  visibility: null,
@@ -73887,7 +73887,7 @@ const svg$1 = create$c({
73887
73887
  x1: null,
73888
73888
  x2: null,
73889
73889
  xChannelSelector: null,
73890
- xHeight: number$b,
73890
+ xHeight: number$a,
73891
73891
  y: null,
73892
73892
  y1: null,
73893
73893
  y2: null,
@@ -84828,7 +84828,7 @@ function treeToExpectedCheckedLevel(currTree, checkedPaths) {
84828
84828
  currTree.tree.forEach((lzn) => {
84829
84829
  const levelZeroPath = [lzn.name];
84830
84830
  const height2 = nodeToHeight(lzn);
84831
- range$f(height2).forEach((i2) => {
84831
+ range$e(height2).forEach((i2) => {
84832
84832
  const levelIndex = i2 + 1;
84833
84833
  const levelNodePaths = nodeToLevelDescendantNamePaths(lzn, levelIndex, [], true);
84834
84834
  if (isEqual$3(levelNodePaths, checkedPaths)) {
@@ -84901,7 +84901,7 @@ function treeToMembershipMap(currTree) {
84901
84901
  if (currTree) {
84902
84902
  currTree.tree.forEach((lzn) => {
84903
84903
  const height2 = nodeToHeight(lzn);
84904
- range$f(height2).forEach((i2) => {
84904
+ range$e(height2).forEach((i2) => {
84905
84905
  const levelIndex = i2 + 1;
84906
84906
  const levelNodePaths = nodeToLevelDescendantNamePaths(lzn, levelIndex, [], true);
84907
84907
  levelNodePaths.forEach((setNamePath) => {
@@ -102607,7 +102607,7 @@ function LevelsButtons(props) {
102607
102607
  }
102608
102608
  }
102609
102609
  const { classes: classes2 } = useStyles$t();
102610
- return jsxRuntimeExports.jsx("div", { className: classes2.levelButtonsContainer, children: range$f(1, height2 + 1).map((i2) => {
102610
+ return jsxRuntimeExports.jsx("div", { className: classes2.levelButtonsContainer, children: range$e(1, height2 + 1).map((i2) => {
102611
102611
  const isChecked = isEqual$3(path2, checkedLevelPath) && i2 === checkedLevelIndex;
102612
102612
  return jsxRuntimeExports.jsx("div", { children: jsxRuntimeExports.jsx(HelpTooltip, { title: getLevelTooltipText(i2), children: jsxRuntimeExports.jsx("input", { className: clsx(classes2.levelRadioButton, { [classes2.levelRadioButtonChecked]: isChecked && !hasColorEncoding }), type: "checkbox", value: i2, checked: isChecked && hasColorEncoding, onChange: onCheck }) }) }, i2);
102613
102613
  }) });
@@ -103213,10 +103213,10 @@ function ObsSetsManagerSubscriber(props) {
103213
103213
  ]);
103214
103214
  return jsxRuntimeExports.jsx(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, errors, children: manager2 });
103215
103215
  }
103216
- function ascending$9(a2, b2) {
103216
+ function ascending$8(a2, b2) {
103217
103217
  return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
103218
103218
  }
103219
- function bisector$4(f2) {
103219
+ function bisector$3(f2) {
103220
103220
  let delta = f2;
103221
103221
  let compare2 = f2;
103222
103222
  if (f2.length === 1) {
@@ -103252,14 +103252,14 @@ function bisector$4(f2) {
103252
103252
  return { left: left2, center: center2, right: right2 };
103253
103253
  }
103254
103254
  function ascendingComparator$1(f2) {
103255
- return (d, x2) => ascending$9(f2(d), x2);
103255
+ return (d, x2) => ascending$8(f2(d), x2);
103256
103256
  }
103257
- function number$a(x2) {
103257
+ function number$9(x2) {
103258
103258
  return x2 === null ? NaN : +x2;
103259
103259
  }
103260
- const ascendingBisect$2 = bisector$4(ascending$9);
103261
- const bisectRight$3 = ascendingBisect$2.right;
103262
- bisector$4(number$a).center;
103260
+ const ascendingBisect$1 = bisector$3(ascending$8);
103261
+ const bisectRight$2 = ascendingBisect$1.right;
103262
+ bisector$3(number$9).center;
103263
103263
  function count$2(values3, valueof) {
103264
103264
  let count2 = 0;
103265
103265
  {
@@ -103478,7 +103478,7 @@ function bin$2() {
103478
103478
  for (i2 = 0; i2 < n3; ++i2) {
103479
103479
  x2 = values3[i2];
103480
103480
  if (x02 <= x2 && x2 <= x12) {
103481
- bins2[bisectRight$3(tz, x2, 0, m2)].push(data2[i2]);
103481
+ bins2[bisectRight$2(tz, x2, 0, m2)].push(data2[i2]);
103482
103482
  }
103483
103483
  }
103484
103484
  return bins2;
@@ -103516,7 +103516,7 @@ function min$4(values3, valueof) {
103516
103516
  }
103517
103517
  return min2;
103518
103518
  }
103519
- function quantileSorted$1(values3, p, valueof = number$a) {
103519
+ function quantileSorted$1(values3, p, valueof = number$9) {
103520
103520
  if (!(n3 = values3.length)) return;
103521
103521
  if ((p = +p) <= 0 || n3 < 2) return +valueof(values3[0], 0, values3);
103522
103522
  if (p >= 1) return +valueof(values3[n3 - 1], n3 - 1, values3);
@@ -142711,7 +142711,7 @@ const defaultGetValue = (points2) => points2.length;
142711
142711
  const MAX_32_BIT_FLOAT = 3402823466e29;
142712
142712
  const defaultGetPoints = (bin2) => bin2.points;
142713
142713
  const defaultGetIndex = (bin2) => bin2.index;
142714
- const ascending$8 = (a2, b2) => a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
142714
+ const ascending$7 = (a2, b2) => a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
142715
142715
  const defaultProps$w = {
142716
142716
  getValue: defaultGetValue,
142717
142717
  getPoints: defaultGetPoints,
@@ -142795,7 +142795,7 @@ class BinSorter {
142795
142795
  }
142796
142796
  getValueRange(percentileRange) {
142797
142797
  if (!this.sortedBins) {
142798
- this.sortedBins = this.aggregatedBins.sort((a2, b2) => ascending$8(a2.value, b2.value));
142798
+ this.sortedBins = this.aggregatedBins.sort((a2, b2) => ascending$7(a2.value, b2.value));
142799
142799
  }
142800
142800
  if (!this.sortedBins.length) {
142801
142801
  return [];
@@ -142811,7 +142811,7 @@ class BinSorter {
142811
142811
  }
142812
142812
  getValueDomainByScale(scale2, [lower2 = 0, upper = 100] = []) {
142813
142813
  if (!this.sortedBins) {
142814
- this.sortedBins = this.aggregatedBins.sort((a2, b2) => ascending$8(a2.value, b2.value));
142814
+ this.sortedBins = this.aggregatedBins.sort((a2, b2) => ascending$7(a2.value, b2.value));
142815
142815
  }
142816
142816
  if (!this.sortedBins.length) {
142817
142817
  return [];
@@ -182586,7 +182586,7 @@ function cartesianNormalizeInPlace$1(d) {
182586
182586
  var l2 = sqrt$5(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
182587
182587
  d[0] /= l2, d[1] /= l2, d[2] /= l2;
182588
182588
  }
182589
- var lambda0$3, phi0$1, lambda1$1, phi1$1, lambda2$1, lambda00$4, phi00$4, p0$1, deltaSum$1 = adder(), ranges$1, range$c;
182589
+ var lambda0$3, phi0$1, lambda1$1, phi1$1, lambda2$1, lambda00$4, phi00$4, p0$1, deltaSum$1 = adder(), ranges$1, range$b;
182590
182590
  var boundsStream$3 = {
182591
182591
  point: boundsPoint$3,
182592
182592
  lineStart: boundsLineStart$1,
@@ -182606,11 +182606,11 @@ var boundsStream$3 = {
182606
182606
  if (areaRingSum$3 < 0) lambda0$3 = -(lambda1$1 = 180), phi0$1 = -(phi1$1 = 90);
182607
182607
  else if (deltaSum$1 > epsilon$8) phi1$1 = 90;
182608
182608
  else if (deltaSum$1 < -epsilon$8) phi0$1 = -90;
182609
- range$c[0] = lambda0$3, range$c[1] = lambda1$1;
182609
+ range$b[0] = lambda0$3, range$b[1] = lambda1$1;
182610
182610
  }
182611
182611
  };
182612
182612
  function boundsPoint$3(lambda, phi2) {
182613
- ranges$1.push(range$c = [lambda0$3 = lambda, lambda1$1 = lambda]);
182613
+ ranges$1.push(range$b = [lambda0$3 = lambda, lambda1$1 = lambda]);
182614
182614
  if (phi2 < phi0$1) phi0$1 = phi2;
182615
182615
  if (phi2 > phi1$1) phi1$1 = phi2;
182616
182616
  }
@@ -182650,7 +182650,7 @@ function linePoint$1(lambda, phi2) {
182650
182650
  }
182651
182651
  }
182652
182652
  } else {
182653
- ranges$1.push(range$c = [lambda0$3 = lambda, lambda1$1 = lambda]);
182653
+ ranges$1.push(range$b = [lambda0$3 = lambda, lambda1$1 = lambda]);
182654
182654
  }
182655
182655
  if (phi2 < phi0$1) phi0$1 = phi2;
182656
182656
  if (phi2 > phi1$1) phi1$1 = phi2;
@@ -182660,7 +182660,7 @@ function boundsLineStart$1() {
182660
182660
  boundsStream$3.point = linePoint$1;
182661
182661
  }
182662
182662
  function boundsLineEnd$1() {
182663
- range$c[0] = lambda0$3, range$c[1] = lambda1$1;
182663
+ range$b[0] = lambda0$3, range$b[1] = lambda1$1;
182664
182664
  boundsStream$3.point = boundsPoint$3;
182665
182665
  p0$1 = null;
182666
182666
  }
@@ -182681,7 +182681,7 @@ function boundsRingEnd$1() {
182681
182681
  boundsRingPoint$1(lambda00$4, phi00$4);
182682
182682
  areaStream$3.lineEnd();
182683
182683
  if (abs$5(deltaSum$1) > epsilon$8) lambda0$3 = -(lambda1$1 = 180);
182684
- range$c[0] = lambda0$3, range$c[1] = lambda1$1;
182684
+ range$b[0] = lambda0$3, range$b[1] = lambda1$1;
182685
182685
  p0$1 = null;
182686
182686
  }
182687
182687
  function angle$1(lambda02, lambda12) {
@@ -182714,7 +182714,7 @@ function bounds$2(feature2) {
182714
182714
  if ((delta = angle$1(a2[1], b2[0])) > deltaMax) deltaMax = delta, lambda0$3 = b2[0], lambda1$1 = a2[1];
182715
182715
  }
182716
182716
  }
182717
- ranges$1 = range$c = null;
182717
+ ranges$1 = range$b = null;
182718
182718
  return lambda0$3 === Infinity || phi0$1 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[lambda0$3, phi0$1], [lambda1$1, phi1$1]];
182719
182719
  }
182720
182720
  var W0$1, W1$1, X0$3, Y0$3, Z0$3, X1$3, Y1$3, Z1$3, X2$4, Y2$4, Z2$3, lambda00$3, phi00$3, x0$9, y0$9, z0$1;
@@ -183060,10 +183060,10 @@ function link$1(array2) {
183060
183060
  a2.n = b2 = array2[0];
183061
183061
  b2.p = a2;
183062
183062
  }
183063
- function ascending$7(a2, b2) {
183063
+ function ascending$6(a2, b2) {
183064
183064
  return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
183065
183065
  }
183066
- function bisector$3(compare2) {
183066
+ function bisector$2(compare2) {
183067
183067
  if (compare2.length === 1) compare2 = ascendingComparator(compare2);
183068
183068
  return {
183069
183069
  left: function(a2, x2, lo, hi) {
@@ -183090,11 +183090,11 @@ function bisector$3(compare2) {
183090
183090
  }
183091
183091
  function ascendingComparator(f2) {
183092
183092
  return function(d, x2) {
183093
- return ascending$7(f2(d), x2);
183093
+ return ascending$6(f2(d), x2);
183094
183094
  };
183095
183095
  }
183096
- bisector$3(ascending$7);
183097
- function range$b(start2, stop3, step) {
183096
+ bisector$2(ascending$6);
183097
+ function range$a(start2, stop3, step) {
183098
183098
  start2 = +start2, stop3 = +stop3, step = (n3 = arguments.length) < 2 ? (stop3 = start2, start2 = 0, 1) : n3 < 3 ? 1 : +step;
183099
183099
  var i2 = -1, n3 = Math.max(0, Math.ceil((stop3 - start2) / step)) | 0, range2 = new Array(n3);
183100
183100
  while (++i2 < n3) {
@@ -183376,7 +183376,7 @@ function contains$2(object2, point2) {
183376
183376
  return (object2 && containsObjectType.hasOwnProperty(object2.type) ? containsObjectType[object2.type] : containsGeometry)(object2, point2);
183377
183377
  }
183378
183378
  function graticuleX$1(y02, y12, dy) {
183379
- var y2 = range$b(y02, y12 - epsilon$8, dy).concat(y12);
183379
+ var y2 = range$a(y02, y12 - epsilon$8, dy).concat(y12);
183380
183380
  return function(x2) {
183381
183381
  return y2.map(function(y22) {
183382
183382
  return [x2, y22];
@@ -183384,7 +183384,7 @@ function graticuleX$1(y02, y12, dy) {
183384
183384
  };
183385
183385
  }
183386
183386
  function graticuleY$1(x02, x12, dx) {
183387
- var x2 = range$b(x02, x12 - epsilon$8, dx).concat(x12);
183387
+ var x2 = range$a(x02, x12 - epsilon$8, dx).concat(x12);
183388
183388
  return function(y2) {
183389
183389
  return x2.map(function(x22) {
183390
183390
  return [x22, y2];
@@ -183397,9 +183397,9 @@ function graticule$1() {
183397
183397
  return { type: "MultiLineString", coordinates: lines() };
183398
183398
  }
183399
183399
  function lines() {
183400
- return range$b(ceil$3(X02 / DX) * DX, X12, DX).map(X3).concat(range$b(ceil$3(Y02 / DY) * DY, Y12, DY).map(Y3)).concat(range$b(ceil$3(x02 / dx) * dx, x12, dx).filter(function(x22) {
183400
+ return range$a(ceil$3(X02 / DX) * DX, X12, DX).map(X3).concat(range$a(ceil$3(Y02 / DY) * DY, Y12, DY).map(Y3)).concat(range$a(ceil$3(x02 / dx) * dx, x12, dx).filter(function(x22) {
183401
183401
  return abs$5(x22 % DX) > epsilon$8;
183402
- }).map(x2)).concat(range$b(ceil$3(y02 / dy) * dy, y12, dy).filter(function(y22) {
183402
+ }).map(x2)).concat(range$a(ceil$3(y02 / dy) * dy, y12, dy).filter(function(y22) {
183403
183403
  return abs$5(y22 % DY) > epsilon$8;
183404
183404
  }).map(y2));
183405
183405
  }
@@ -209105,22 +209105,22 @@ async function getDecoder(fileDirectory) {
209105
209105
  const Decoder = await importFn();
209106
209106
  return new Decoder(fileDirectory);
209107
209107
  }
209108
- addDecoder([void 0, 1], () => import("./raw-CCF7Hnlb.js").then((m2) => m2.default));
209109
- addDecoder(5, () => import("./lzw-Dq9ewDsx.js").then((m2) => m2.default));
209108
+ addDecoder([void 0, 1], () => import("./raw-DP5Af32W.js").then((m2) => m2.default));
209109
+ addDecoder(5, () => import("./lzw-D4L-VfX8.js").then((m2) => m2.default));
209110
209110
  addDecoder(6, () => {
209111
209111
  throw new Error("old style JPEG compression is not supported.");
209112
209112
  });
209113
- addDecoder(7, () => import("./jpeg-DnYEHHlA.js").then((m2) => m2.default));
209114
- addDecoder([8, 32946], () => import("./deflate-Yy00XXjl.js").then((m2) => m2.default));
209115
- addDecoder(32773, () => import("./packbits-DUvZwRme.js").then((m2) => m2.default));
209113
+ addDecoder(7, () => import("./jpeg-Bz6F-bB0.js").then((m2) => m2.default));
209114
+ addDecoder([8, 32946], () => import("./deflate-BHuVu6ka.js").then((m2) => m2.default));
209115
+ addDecoder(32773, () => import("./packbits-CLckyTrz.js").then((m2) => m2.default));
209116
209116
  addDecoder(
209117
209117
  34887,
209118
- () => import("./lerc-xK3UlYuK.js").then(async (m2) => {
209118
+ () => import("./lerc-C0S_lxM2.js").then(async (m2) => {
209119
209119
  await m2.zstd.init();
209120
209120
  return m2;
209121
209121
  }).then((m2) => m2.default)
209122
209122
  );
209123
- addDecoder(50001, () => import("./webimage-mUI4EmOE.js").then((m2) => m2.default));
209123
+ addDecoder(50001, () => import("./webimage-Y7ICR65G.js").then((m2) => m2.default));
209124
209124
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
209125
209125
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
209126
209126
  }
@@ -212161,7 +212161,7 @@ const Z_FIXED = 4;
212161
212161
  const Z_BINARY = 0;
212162
212162
  const Z_TEXT = 1;
212163
212163
  const Z_UNKNOWN = 2;
212164
- function zero$6(buf) {
212164
+ function zero$5(buf) {
212165
212165
  let len2 = buf.length;
212166
212166
  while (--len2 >= 0) {
212167
212167
  buf[len2] = 0;
@@ -212200,17 +212200,17 @@ const extra_blbits = (
212200
212200
  const bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
212201
212201
  const DIST_CODE_LEN = 512;
212202
212202
  const static_ltree = new Array((L_CODES + 2) * 2);
212203
- zero$6(static_ltree);
212203
+ zero$5(static_ltree);
212204
212204
  const static_dtree = new Array(D_CODES * 2);
212205
- zero$6(static_dtree);
212205
+ zero$5(static_dtree);
212206
212206
  const _dist_code = new Array(DIST_CODE_LEN);
212207
- zero$6(_dist_code);
212207
+ zero$5(_dist_code);
212208
212208
  const _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);
212209
- zero$6(_length_code);
212209
+ zero$5(_length_code);
212210
212210
  const base_length = new Array(LENGTH_CODES);
212211
- zero$6(base_length);
212211
+ zero$5(base_length);
212212
212212
  const base_dist = new Array(D_CODES);
212213
- zero$6(base_dist);
212213
+ zero$5(base_dist);
212214
212214
  function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
212215
212215
  this.static_tree = static_tree;
212216
212216
  this.extra_bits = extra_bits;
@@ -220076,7 +220076,7 @@ const channels = {
220076
220076
  },
220077
220077
  fs: fs$2
220078
220078
  };
220079
- function range$a(len2) {
220079
+ function range$9(len2) {
220080
220080
  return [...Array(len2).keys()];
220081
220081
  }
220082
220082
  function padWithDefault$2(arr, defaultValue2, padWidth) {
@@ -221176,7 +221176,7 @@ const ScaleBarLayer = class extends CompositeLayer {
221176
221176
  sizeScale: 2 ** -zoom2,
221177
221177
  characterSet: [
221178
221178
  ...displayUnit.split(""),
221179
- ...range$a(10).map((i2) => String(i2)),
221179
+ ...range$9(10).map((i2) => String(i2)),
221180
221180
  ".",
221181
221181
  "e",
221182
221182
  "+"
@@ -222615,7 +222615,7 @@ class BitmaskLayer2 extends XRLayer {
222615
222615
  } = this.state;
222616
222616
  if (textures && model) {
222617
222617
  const scaleFactor = 1 / 2 ** (maxZoom - zoom2);
222618
- const colors2 = Object.fromEntries(range$f(MAX_CHANNELS).map((i2) => [`color${i2}`, getColor(channelColors[i2])]));
222618
+ const colors2 = Object.fromEntries(range$e(MAX_CHANNELS).map((i2) => [`color${i2}`, getColor(channelColors[i2])]));
222619
222619
  model.setUniforms(Object.assign({}, uniforms, {
222620
222620
  ...colors2,
222621
222621
  // Bitmask image channel data textures
@@ -225804,7 +225804,7 @@ class ContourLayerWithText extends ContourLayer {
225804
225804
  let minCirclePointI;
225805
225805
  let minPolygonPoint;
225806
225806
  const numVertices = maxAreaPolygon.geometry.coordinates[0].length;
225807
- const polygonVertices = numVertices > MAX_NUM_VERTICES ? range$f(MAX_NUM_VERTICES).map((i2) => maxAreaPolygon.geometry.coordinates[0][Math.floor(i2 * numVertices / MAX_NUM_VERTICES)]) : [...maxAreaPolygon.geometry.coordinates[0]];
225807
+ const polygonVertices = numVertices > MAX_NUM_VERTICES ? range$e(MAX_NUM_VERTICES).map((i2) => maxAreaPolygon.geometry.coordinates[0][Math.floor(i2 * numVertices / MAX_NUM_VERTICES)]) : [...maxAreaPolygon.geometry.coordinates[0]];
225808
225808
  circlePolygon.geometry.coordinates[0].forEach((circleCoord, circlePointI) => {
225809
225809
  const circlePoint = point$9(circleCoord);
225810
225810
  polygonVertices.forEach((polyCoord) => {
@@ -226224,7 +226224,7 @@ function createQuadTree(obsEmbedding, getCellCoords) {
226224
226224
  if (!obsEmbedding) {
226225
226225
  return null;
226226
226226
  }
226227
- const tree2 = quadtree$1().x((i2) => getCellCoords(i2)[0]).y((i2) => getCellCoords(i2)[1]).addAll(range$f(obsEmbedding.shape[1]));
226227
+ const tree2 = quadtree$1().x((i2) => getCellCoords(i2)[0]).y((i2) => getCellCoords(i2)[1]).addAll(range$e(obsEmbedding.shape[1]));
226228
226228
  return tree2;
226229
226229
  }
226230
226230
  function constant$6(v) {
@@ -226332,8 +226332,14 @@ function forceCollideRects() {
226332
226332
  };
226333
226333
  return force2;
226334
226334
  }
226335
- function getPointSizeDevicePixels(devicePixelRatio2, zoom2, xRange, yRange, width2, height2) {
226336
- const pointSize = 5e-4;
226335
+ const BASE_POINT_SIZE = 5;
226336
+ const LARGE_DATASET_CELL_COUNT = 1e4;
226337
+ const SMALL_DATASET_CELL_COUNT = 100;
226338
+ function getInitialPointSize(numCells = LARGE_DATASET_CELL_COUNT) {
226339
+ return BASE_POINT_SIZE / clamp$8(numCells, SMALL_DATASET_CELL_COUNT, LARGE_DATASET_CELL_COUNT);
226340
+ }
226341
+ function getPointSizeDevicePixels(devicePixelRatio2, zoom2, xRange, yRange, width2, height2, numCells) {
226342
+ const pointSize = getInitialPointSize(numCells);
226337
226343
  const pointScreenSizeMax = 10;
226338
226344
  const pointScreenSizeMin = 1 / devicePixelRatio2;
226339
226345
  const scaleFactor = 2 ** zoom2;
@@ -227529,7 +227535,7 @@ function selection_order() {
227529
227535
  return this;
227530
227536
  }
227531
227537
  function selection_sort(compare2) {
227532
- if (!compare2) compare2 = ascending$6;
227538
+ if (!compare2) compare2 = ascending$5;
227533
227539
  function compareNode(a2, b2) {
227534
227540
  return a2 && b2 ? compare2(a2.__data__, b2.__data__) : !a2 - !b2;
227535
227541
  }
@@ -227543,7 +227549,7 @@ function selection_sort(compare2) {
227543
227549
  }
227544
227550
  return new Selection(sortgroups, this._parents).order();
227545
227551
  }
227546
- function ascending$6(a2, b2) {
227552
+ function ascending$5(a2, b2) {
227547
227553
  return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
227548
227554
  }
227549
227555
  function selection_call() {
@@ -227952,20 +227958,20 @@ Selection.prototype = {
227952
227958
  function select$1(selector2) {
227953
227959
  return typeof selector2 === "string" ? new Selection([[document.querySelector(selector2)]], [document.documentElement]) : new Selection([[selector2]], root$2);
227954
227960
  }
227955
- function ascending$5(a2, b2) {
227961
+ function ascending$4(a2, b2) {
227956
227962
  return a2 == null || b2 == null ? NaN : a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
227957
227963
  }
227958
- function descending$2(a2, b2) {
227964
+ function descending$1(a2, b2) {
227959
227965
  return a2 == null || b2 == null ? NaN : b2 < a2 ? -1 : b2 > a2 ? 1 : b2 >= a2 ? 0 : NaN;
227960
227966
  }
227961
- function bisector$2(f2) {
227967
+ function bisector$1(f2) {
227962
227968
  let compare12, compare2, delta;
227963
227969
  if (f2.length !== 2) {
227964
- compare12 = ascending$5;
227965
- compare2 = (d, x2) => ascending$5(f2(d), x2);
227970
+ compare12 = ascending$4;
227971
+ compare2 = (d, x2) => ascending$4(f2(d), x2);
227966
227972
  delta = (d, x2) => f2(d) - x2;
227967
227973
  } else {
227968
- compare12 = f2 === ascending$5 || f2 === descending$2 ? f2 : zero$5;
227974
+ compare12 = f2 === ascending$4 || f2 === descending$1 ? f2 : zero$4;
227969
227975
  compare2 = f2;
227970
227976
  delta = f2;
227971
227977
  }
@@ -227997,10 +228003,10 @@ function bisector$2(f2) {
227997
228003
  }
227998
228004
  return { left: left2, center: center2, right: right2 };
227999
228005
  }
228000
- function zero$5() {
228006
+ function zero$4() {
228001
228007
  return 0;
228002
228008
  }
228003
- function number$9(x2) {
228009
+ function number$8(x2) {
228004
228010
  return x2 === null ? NaN : +x2;
228005
228011
  }
228006
228012
  function* numbers$4(values3, valueof) {
@@ -228019,10 +228025,10 @@ function* numbers$4(values3, valueof) {
228019
228025
  }
228020
228026
  }
228021
228027
  }
228022
- const ascendingBisect$1 = bisector$2(ascending$5);
228023
- const bisectRight$2 = ascendingBisect$1.right;
228024
- const bisectLeft$1 = ascendingBisect$1.left;
228025
- bisector$2(number$9).center;
228028
+ const ascendingBisect = bisector$1(ascending$4);
228029
+ const bisectRight$1 = ascendingBisect.right;
228030
+ const bisectLeft$1 = ascendingBisect.left;
228031
+ bisector$1(number$8).center;
228026
228032
  function variance(values3, valueof) {
228027
228033
  let count2 = 0;
228028
228034
  let delta;
@@ -228093,8 +228099,8 @@ class Adder {
228093
228099
  function permute(source2, keys2) {
228094
228100
  return Array.from(keys2, (key2) => source2[key2]);
228095
228101
  }
228096
- function compareDefined(compare2 = ascending$5) {
228097
- if (compare2 === ascending$5) return ascendingDefined;
228102
+ function compareDefined(compare2 = ascending$4) {
228103
+ if (compare2 === ascending$4) return ascendingDefined;
228098
228104
  if (typeof compare2 !== "function") throw new TypeError("compare is not a function");
228099
228105
  return (a2, b2) => {
228100
228106
  const x2 = compare2(a2, b2);
@@ -228105,40 +228111,51 @@ function compareDefined(compare2 = ascending$5) {
228105
228111
  function ascendingDefined(a2, b2) {
228106
228112
  return (a2 == null || !(a2 >= a2)) - (b2 == null || !(b2 >= b2)) || (a2 < b2 ? -1 : a2 > b2 ? 1 : 0);
228107
228113
  }
228108
- var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2);
228114
+ const e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2);
228115
+ function tickSpec(start2, stop3, count2) {
228116
+ const step = (stop3 - start2) / Math.max(0, count2), power = Math.floor(Math.log10(step)), error2 = step / Math.pow(10, power), factor = error2 >= e10 ? 10 : error2 >= e5 ? 5 : error2 >= e2 ? 2 : 1;
228117
+ let i1, i2, inc;
228118
+ if (power < 0) {
228119
+ inc = Math.pow(10, -power) / factor;
228120
+ i1 = Math.round(start2 * inc);
228121
+ i2 = Math.round(stop3 * inc);
228122
+ if (i1 / inc < start2) ++i1;
228123
+ if (i2 / inc > stop3) --i2;
228124
+ inc = -inc;
228125
+ } else {
228126
+ inc = Math.pow(10, power) * factor;
228127
+ i1 = Math.round(start2 / inc);
228128
+ i2 = Math.round(stop3 / inc);
228129
+ if (i1 * inc < start2) ++i1;
228130
+ if (i2 * inc > stop3) --i2;
228131
+ }
228132
+ if (i2 < i1 && 0.5 <= count2 && count2 < 2) return tickSpec(start2, stop3, count2 * 2);
228133
+ return [i1, i2, inc];
228134
+ }
228109
228135
  function ticks(start2, stop3, count2) {
228110
- var reverse2, i2 = -1, n3, ticks2, step;
228111
228136
  stop3 = +stop3, start2 = +start2, count2 = +count2;
228112
- if (start2 === stop3 && count2 > 0) return [start2];
228113
- if (reverse2 = stop3 < start2) n3 = start2, start2 = stop3, stop3 = n3;
228114
- if ((step = tickIncrement(start2, stop3, count2)) === 0 || !isFinite(step)) return [];
228115
- if (step > 0) {
228116
- let r0 = Math.round(start2 / step), r1 = Math.round(stop3 / step);
228117
- if (r0 * step < start2) ++r0;
228118
- if (r1 * step > stop3) --r1;
228119
- ticks2 = new Array(n3 = r1 - r0 + 1);
228120
- while (++i2 < n3) ticks2[i2] = (r0 + i2) * step;
228137
+ if (!(count2 > 0)) return [];
228138
+ if (start2 === stop3) return [start2];
228139
+ const reverse2 = stop3 < start2, [i1, i2, inc] = reverse2 ? tickSpec(stop3, start2, count2) : tickSpec(start2, stop3, count2);
228140
+ if (!(i2 >= i1)) return [];
228141
+ const n3 = i2 - i1 + 1, ticks2 = new Array(n3);
228142
+ if (reverse2) {
228143
+ if (inc < 0) for (let i3 = 0; i3 < n3; ++i3) ticks2[i3] = (i2 - i3) / -inc;
228144
+ else for (let i3 = 0; i3 < n3; ++i3) ticks2[i3] = (i2 - i3) * inc;
228121
228145
  } else {
228122
- step = -step;
228123
- let r0 = Math.round(start2 * step), r1 = Math.round(stop3 * step);
228124
- if (r0 / step < start2) ++r0;
228125
- if (r1 / step > stop3) --r1;
228126
- ticks2 = new Array(n3 = r1 - r0 + 1);
228127
- while (++i2 < n3) ticks2[i2] = (r0 + i2) / step;
228146
+ if (inc < 0) for (let i3 = 0; i3 < n3; ++i3) ticks2[i3] = (i1 + i3) / -inc;
228147
+ else for (let i3 = 0; i3 < n3; ++i3) ticks2[i3] = (i1 + i3) * inc;
228128
228148
  }
228129
- if (reverse2) ticks2.reverse();
228130
228149
  return ticks2;
228131
228150
  }
228132
228151
  function tickIncrement(start2, stop3, count2) {
228133
- var step = (stop3 - start2) / Math.max(0, count2), power = Math.floor(Math.log(step) / Math.LN10), error2 = step / Math.pow(10, power);
228134
- return power >= 0 ? (error2 >= e10 ? 10 : error2 >= e5 ? 5 : error2 >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error2 >= e10 ? 10 : error2 >= e5 ? 5 : error2 >= e2 ? 2 : 1);
228152
+ stop3 = +stop3, start2 = +start2, count2 = +count2;
228153
+ return tickSpec(start2, stop3, count2)[2];
228135
228154
  }
228136
228155
  function tickStep(start2, stop3, count2) {
228137
- var step0 = Math.abs(stop3 - start2) / Math.max(0, count2), step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), error2 = step0 / step1;
228138
- if (error2 >= e10) step1 *= 10;
228139
- else if (error2 >= e5) step1 *= 5;
228140
- else if (error2 >= e2) step1 *= 2;
228141
- return stop3 < start2 ? -step1 : step1;
228156
+ stop3 = +stop3, start2 = +start2, count2 = +count2;
228157
+ const reverse2 = stop3 < start2, inc = reverse2 ? tickIncrement(stop3, start2, count2) : tickIncrement(start2, stop3, count2);
228158
+ return (reverse2 ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);
228142
228159
  }
228143
228160
  function max$3(values3, valueof) {
228144
228161
  let max2;
@@ -228176,7 +228193,11 @@ function min$3(values3, valueof) {
228176
228193
  }
228177
228194
  return min2;
228178
228195
  }
228179
- function quickselect(array2, k, left2 = 0, right2 = array2.length - 1, compare2) {
228196
+ function quickselect(array2, k, left2 = 0, right2 = Infinity, compare2) {
228197
+ k = Math.floor(k);
228198
+ left2 = Math.floor(Math.max(0, left2));
228199
+ right2 = Math.floor(Math.min(array2.length - 1, right2));
228200
+ if (!(left2 <= k && k <= right2)) return array2;
228180
228201
  compare2 = compare2 === void 0 ? ascendingDefined : compareDefined(compare2);
228181
228202
  while (right2 > left2) {
228182
228203
  if (right2 - left2 > 600) {
@@ -228213,15 +228234,15 @@ function swap$1(array2, i2, j) {
228213
228234
  }
228214
228235
  function quantile$1(values3, p, valueof) {
228215
228236
  values3 = Float64Array.from(numbers$4(values3, valueof));
228216
- if (!(n3 = values3.length)) return;
228217
- if ((p = +p) <= 0 || n3 < 2) return min$3(values3);
228237
+ if (!(n3 = values3.length) || isNaN(p = +p)) return;
228238
+ if (p <= 0 || n3 < 2) return min$3(values3);
228218
228239
  if (p >= 1) return max$3(values3);
228219
228240
  var n3, i2 = (n3 - 1) * p, i0 = Math.floor(i2), value0 = max$3(quickselect(values3, i0).subarray(0, i0 + 1)), value1 = min$3(values3.subarray(i0 + 1));
228220
228241
  return value0 + (value1 - value0) * (i2 - i0);
228221
228242
  }
228222
- function quantileSorted(values3, p, valueof = number$9) {
228223
- if (!(n3 = values3.length)) return;
228224
- if ((p = +p) <= 0 || n3 < 2) return +valueof(values3[0], 0, values3);
228243
+ function quantileSorted(values3, p, valueof = number$8) {
228244
+ if (!(n3 = values3.length) || isNaN(p = +p)) return;
228245
+ if (p <= 0 || n3 < 2) return +valueof(values3[0], 0, values3);
228225
228246
  if (p >= 1) return +valueof(values3[n3 - 1], n3 - 1, values3);
228226
228247
  var n3, i2 = (n3 - 1) * p, i0 = Math.floor(i2), value0 = +valueof(values3[i0], i0, values3), value1 = +valueof(values3[i0 + 1], i0 + 1, values3);
228227
228248
  return value0 + (value1 - value0) * (i2 - i0);
@@ -228256,7 +228277,7 @@ function* flatten$2(arrays) {
228256
228277
  function merge$3(arrays) {
228257
228278
  return Array.from(flatten$2(arrays));
228258
228279
  }
228259
- function range$9(start2, stop3, step) {
228280
+ function range$8(start2, stop3, step) {
228260
228281
  start2 = +start2, stop3 = +stop3, step = (n3 = arguments.length) < 2 ? (stop3 = start2, start2 = 0, 1) : n3 < 3 ? 1 : +step;
228261
228282
  var i2 = -1, n3 = Math.max(0, Math.ceil((stop3 - start2) / step)) | 0, range2 = new Array(n3);
228262
228283
  while (++i2 < n3) {
@@ -228927,7 +228948,7 @@ function object$1(a2, b2) {
228927
228948
  };
228928
228949
  }
228929
228950
  var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, reB = new RegExp(reA.source, "g");
228930
- function zero$4(b2) {
228951
+ function zero$3(b2) {
228931
228952
  return function() {
228932
228953
  return b2;
228933
228954
  };
@@ -228960,7 +228981,7 @@ function string(a2, b2) {
228960
228981
  if (s2[i2]) s2[i2] += bs;
228961
228982
  else s2[++i2] = bs;
228962
228983
  }
228963
- return s2.length < 2 ? q[0] ? one$2(q[0].x) : zero$4(b2) : (b2 = q.length, function(t4) {
228984
+ return s2.length < 2 ? q[0] ? one$2(q[0].x) : zero$3(b2) : (b2 = q.length, function(t4) {
228964
228985
  for (var i22 = 0, o2; i22 < b2; ++i22) s2[(o2 = q[i22]).i] = o2.x(t4);
228965
228986
  return s2.join("");
228966
228987
  });
@@ -229226,7 +229247,7 @@ function constants$1(x2) {
229226
229247
  return x2;
229227
229248
  };
229228
229249
  }
229229
- function number$8(x2) {
229250
+ function number$7(x2) {
229230
229251
  return +x2;
229231
229252
  }
229232
229253
  var unit$1 = [0, 1];
@@ -229264,7 +229285,7 @@ function polymap(domain2, range2, interpolate2) {
229264
229285
  r3[i2] = interpolate2(range2[i2], range2[i2 + 1]);
229265
229286
  }
229266
229287
  return function(x2) {
229267
- var i22 = bisectRight$2(domain2, x2, 1, j) - 1;
229288
+ var i22 = bisectRight$1(domain2, x2, 1, j) - 1;
229268
229289
  return r3[i22](d[i22](x2));
229269
229290
  };
229270
229291
  }
@@ -229287,7 +229308,7 @@ function transformer$3() {
229287
229308
  return clamp2(untransform((input || (input = piecewise2(range2, domain2.map(transform3), interpolateNumber)))(y2)));
229288
229309
  };
229289
229310
  scale2.domain = function(_) {
229290
- return arguments.length ? (domain2 = Array.from(_, number$8), rescale()) : domain2.slice();
229311
+ return arguments.length ? (domain2 = Array.from(_, number$7), rescale()) : domain2.slice();
229291
229312
  };
229292
229313
  scale2.range = function(_) {
229293
229314
  return arguments.length ? (range2 = Array.from(_), rescale()) : range2.slice();
@@ -229607,7 +229628,7 @@ function identity$6(domain2) {
229607
229628
  }
229608
229629
  scale2.invert = scale2;
229609
229630
  scale2.domain = scale2.range = function(_) {
229610
- return arguments.length ? (domain2 = Array.from(_, number$8), scale2) : domain2.slice();
229631
+ return arguments.length ? (domain2 = Array.from(_, number$7), scale2) : domain2.slice();
229611
229632
  };
229612
229633
  scale2.unknown = function(_) {
229613
229634
  return arguments.length ? (unknown = _, scale2) : unknown;
@@ -229615,7 +229636,7 @@ function identity$6(domain2) {
229615
229636
  scale2.copy = function() {
229616
229637
  return identity$6(domain2).unknown(unknown);
229617
229638
  };
229618
- domain2 = arguments.length ? Array.from(domain2, number$8) : [0, 1];
229639
+ domain2 = arguments.length ? Array.from(domain2, number$7) : [0, 1];
229619
229640
  return linearish(scale2);
229620
229641
  }
229621
229642
  function nice$1(domain2, interval2) {
@@ -229805,7 +229826,7 @@ function quantile() {
229805
229826
  return scale2;
229806
229827
  }
229807
229828
  function scale2(x2) {
229808
- return x2 == null || isNaN(x2 = +x2) ? unknown : range2[bisectRight$2(thresholds, x2)];
229829
+ return x2 == null || isNaN(x2 = +x2) ? unknown : range2[bisectRight$1(thresholds, x2)];
229809
229830
  }
229810
229831
  scale2.invertExtent = function(y2) {
229811
229832
  var i2 = range2.indexOf(y2);
@@ -229818,7 +229839,7 @@ function quantile() {
229818
229839
  if (!arguments.length) return domain2.slice();
229819
229840
  domain2 = [];
229820
229841
  for (let d of _) if (d != null && !isNaN(d = +d)) domain2.push(d);
229821
- domain2.sort(ascending$5);
229842
+ domain2.sort(ascending$4);
229822
229843
  return rescale();
229823
229844
  };
229824
229845
  scale2.range = function(_) {
@@ -229838,7 +229859,7 @@ function quantile() {
229838
229859
  function quantize$2() {
229839
229860
  var x02 = 0, x12 = 1, n3 = 1, domain2 = [0.5], range2 = [0, 1], unknown;
229840
229861
  function scale2(x2) {
229841
- return x2 != null && x2 <= x2 ? range2[bisectRight$2(domain2, x2, 0, n3)] : unknown;
229862
+ return x2 != null && x2 <= x2 ? range2[bisectRight$1(domain2, x2, 0, n3)] : unknown;
229842
229863
  }
229843
229864
  function rescale() {
229844
229865
  var i2 = -1;
@@ -229870,7 +229891,7 @@ function quantize$2() {
229870
229891
  function threshold() {
229871
229892
  var domain2 = [0.5], range2 = [0, 1], unknown, n3 = 1;
229872
229893
  function scale2(x2) {
229873
- return x2 != null && x2 <= x2 ? range2[bisectRight$2(domain2, x2, 0, n3)] : unknown;
229894
+ return x2 != null && x2 <= x2 ? range2[bisectRight$1(domain2, x2, 0, n3)] : unknown;
229874
229895
  }
229875
229896
  scale2.domain = function(_) {
229876
229897
  return arguments.length ? (domain2 = Array.from(_), n3 = Math.min(domain2.length, range2.length - 1), scale2) : domain2.slice();
@@ -230184,7 +230205,7 @@ function ticker(year2, month2, week2, day2, hour2, minute2) {
230184
230205
  }
230185
230206
  function tickInterval(start2, stop3, count2) {
230186
230207
  const target2 = Math.abs(stop3 - start2) / count2;
230187
- const i2 = bisector$2(([, , step2]) => step2).right(tickIntervals, target2);
230208
+ const i2 = bisector$1(([, , step2]) => step2).right(tickIntervals, target2);
230188
230209
  if (i2 === tickIntervals.length) return year2.every(tickStep(start2 / durationYear$1, stop3 / durationYear$1, count2));
230189
230210
  if (i2 === 0) return millisecond.every(Math.max(tickStep(start2, stop3, count2), 1));
230190
230211
  const [t4, step] = tickIntervals[target2 / tickIntervals[i2 - 1][2] < tickIntervals[i2][2] / target2 ? i2 - 1 : i2];
@@ -230756,7 +230777,7 @@ function defaultLocale$1(definition2) {
230756
230777
  function date(t4) {
230757
230778
  return new Date(t4);
230758
230779
  }
230759
- function number$7(t4) {
230780
+ function number$6(t4) {
230760
230781
  return t4 instanceof Date ? +t4 : +/* @__PURE__ */ new Date(+t4);
230761
230782
  }
230762
230783
  function calendar(ticks2, tickInterval, year2, month2, week2, day2, hour2, minute2, second2, format2) {
@@ -230769,7 +230790,7 @@ function calendar(ticks2, tickInterval, year2, month2, week2, day2, hour2, minut
230769
230790
  return new Date(invert2(y2));
230770
230791
  };
230771
230792
  scale2.domain = function(_) {
230772
- return arguments.length ? domain2(Array.from(_, number$7)) : domain2().map(date);
230793
+ return arguments.length ? domain2(Array.from(_, number$6)) : domain2().map(date);
230773
230794
  };
230774
230795
  scale2.ticks = function(interval2) {
230775
230796
  var d = domain2();
@@ -230929,7 +230950,7 @@ function translateX(x2) {
230929
230950
  function translateY(y2) {
230930
230951
  return "translate(0," + y2 + ")";
230931
230952
  }
230932
- function number$6(scale2) {
230953
+ function number$5(scale2) {
230933
230954
  return (d) => +scale2(d);
230934
230955
  }
230935
230956
  function center(scale2, offset2) {
@@ -230943,7 +230964,7 @@ function entering() {
230943
230964
  function axis(orient2, scale2) {
230944
230965
  var tickArguments = [], tickValues2 = null, tickFormat2 = null, tickSizeInner = 6, tickSizeOuter = 6, tickPadding = 3, offset2 = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, k = orient2 === top || orient2 === left ? -1 : 1, x2 = orient2 === left || orient2 === right ? "x" : "y", transform3 = orient2 === top || orient2 === bottom ? translateX : translateY;
230945
230966
  function axis2(context2) {
230946
- var values3 = tickValues2 == null ? scale2.ticks ? scale2.ticks.apply(scale2, tickArguments) : scale2.domain() : tickValues2, format2 = tickFormat2 == null ? scale2.tickFormat ? scale2.tickFormat.apply(scale2, tickArguments) : identity$5 : tickFormat2, spacing2 = Math.max(tickSizeInner, 0) + tickPadding, range2 = scale2.range(), range0 = +range2[0] + offset2, range1 = +range2[range2.length - 1] + offset2, position2 = (scale2.bandwidth ? center : number$6)(scale2.copy(), offset2), selection = context2.selection ? context2.selection() : context2, path2 = selection.selectAll(".domain").data([null]), tick2 = selection.selectAll(".tick").data(values3, scale2).order(), tickExit = tick2.exit(), tickEnter = tick2.enter().append("g").attr("class", "tick"), line2 = tick2.select("line"), text2 = tick2.select("text");
230967
+ var values3 = tickValues2 == null ? scale2.ticks ? scale2.ticks.apply(scale2, tickArguments) : scale2.domain() : tickValues2, format2 = tickFormat2 == null ? scale2.tickFormat ? scale2.tickFormat.apply(scale2, tickArguments) : identity$5 : tickFormat2, spacing2 = Math.max(tickSizeInner, 0) + tickPadding, range2 = scale2.range(), range0 = +range2[0] + offset2, range1 = +range2[range2.length - 1] + offset2, position2 = (scale2.bandwidth ? center : number$5)(scale2.copy(), offset2), selection = context2.selection ? context2.selection() : context2, path2 = selection.selectAll(".domain").data([null]), tick2 = selection.selectAll(".tick").data(values3, scale2).order(), tickExit = tick2.exit(), tickEnter = tick2.enter().append("g").attr("class", "tick"), line2 = tick2.select("line"), text2 = tick2.select("text");
230947
230968
  path2 = path2.merge(path2.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor"));
230948
230969
  tick2 = tick2.merge(tickEnter);
230949
230970
  line2 = line2.merge(tickEnter.append("line").attr("stroke", "currentColor").attr(x2 + "2", k * tickSizeInner));
@@ -231076,6 +231097,9 @@ function ramp(color2, n3 = 256) {
231076
231097
  canvas.width = n3;
231077
231098
  canvas.height = 1;
231078
231099
  const context2 = canvas.getContext("2d");
231100
+ if (!context2) {
231101
+ throw new Error("Could not get 2d context from canvas");
231102
+ }
231079
231103
  for (let i2 = 0; i2 < n3; ++i2) {
231080
231104
  context2.fillStyle = color2(i2 / (n3 - 1));
231081
231105
  context2.fillRect(i2, 0, 1, 1);
@@ -231094,6 +231118,8 @@ function getXlinkHref(cmap) {
231094
231118
  }
231095
231119
  const useStyles$p = makeStyles()(() => ({
231096
231120
  legend: {
231121
+ position: "relative",
231122
+ // Needed for absolute positioning of slider overlay
231097
231123
  top: "2px",
231098
231124
  right: "2px",
231099
231125
  fontSize: "10px !important",
@@ -231125,6 +231151,74 @@ const useStyles$p = makeStyles()(() => ({
231125
231151
  },
231126
231152
  legendInvisible: {
231127
231153
  display: "none"
231154
+ },
231155
+ sliderContainer: {
231156
+ position: "absolute",
231157
+ // Position at the colormap location: top offset = titleHeight
231158
+ top: "10px",
231159
+ // titleHeight
231160
+ left: "2px",
231161
+ // Account for parent padding
231162
+ width: "calc(100% - 4px)",
231163
+ // Account for left and right padding
231164
+ height: "8px",
231165
+ // rectHeight
231166
+ "&:hover $sliderThumb": {
231167
+ opacity: 1
231168
+ }
231169
+ },
231170
+ sliderRoot: {
231171
+ position: "absolute",
231172
+ top: 0,
231173
+ left: 0,
231174
+ width: "100%",
231175
+ height: "8px",
231176
+ // rectHeight
231177
+ padding: 0,
231178
+ "& .MuiSlider-rail": {
231179
+ display: "none"
231180
+ },
231181
+ "& .MuiSlider-track": {
231182
+ display: "none"
231183
+ },
231184
+ "& .MuiSlider-valueLabel": {
231185
+ fontSize: "9px",
231186
+ padding: "2px 4px",
231187
+ backgroundColor: "rgb(0, 0, 0)",
231188
+ borderRadius: "2px"
231189
+ }
231190
+ },
231191
+ sliderThumb: {
231192
+ width: "4px",
231193
+ height: "12px",
231194
+ borderRadius: "2px",
231195
+ backgroundColor: "white",
231196
+ border: "1px solid black",
231197
+ opacity: 0,
231198
+ transition: "opacity 0.15s ease-in-out",
231199
+ "&:hover, &.Mui-focusVisible": {
231200
+ boxShadow: "0 0 0 4px rgba(0, 0, 0, 0.16)",
231201
+ opacity: 1
231202
+ },
231203
+ "&.Mui-active": {
231204
+ boxShadow: "0 0 0 6px rgba(0, 0, 0, 0.16)",
231205
+ opacity: 1
231206
+ }
231207
+ },
231208
+ colormapImage: {
231209
+ position: "absolute",
231210
+ top: "2px",
231211
+ height: "6px",
231212
+ // rectHeight
231213
+ pointerEvents: "none"
231214
+ },
231215
+ grayTrack: {
231216
+ position: "absolute",
231217
+ top: "2px",
231218
+ height: "6px",
231219
+ // rectHeight
231220
+ backgroundColor: "rgba(128, 128, 128, 0.5)",
231221
+ pointerEvents: "none"
231128
231222
  }
231129
231223
  }));
231130
231224
  const titleHeight = 10;
@@ -231134,21 +231228,23 @@ const rectMarginX = 2;
231134
231228
  function combineExtents(extents, featureAggregationStrategy) {
231135
231229
  if (Array.isArray(extents)) {
231136
231230
  if (Array.isArray(extents?.[0])) {
231231
+ const extentsArray = extents;
231137
231232
  if (featureAggregationStrategy === "first") {
231138
- return extents[0];
231233
+ return extentsArray[0];
231139
231234
  }
231140
231235
  if (featureAggregationStrategy === "last") {
231141
- return extents.at(-1);
231236
+ return extentsArray.at(-1) || null;
231142
231237
  }
231143
231238
  if (typeof featureAggregationStrategy === "number") {
231144
231239
  const i2 = featureAggregationStrategy;
231145
- return extents[i2];
231240
+ return extentsArray[i2];
231146
231241
  }
231147
231242
  if (featureAggregationStrategy === "sum") {
231148
- return extents.reduce((a2, h2) => [a2[0] + h2[0], a2[1] + h2[1]]);
231243
+ return extentsArray.reduce((a2, h2) => [a2[0] + h2[0], a2[1] + h2[1]]);
231149
231244
  }
231150
231245
  if (featureAggregationStrategy === "mean") {
231151
- return extents.reduce((a2, h2) => [a2[0] + h2[0], a2[1] + h2[1]]).map((v) => v / extents.length);
231246
+ const sum2 = extentsArray.reduce((a2, h2) => [a2[0] + h2[0], a2[1] + h2[1]]);
231247
+ return [sum2[0] / extentsArray.length, sum2[1] / extentsArray.length];
231152
231248
  }
231153
231249
  } else {
231154
231250
  return extents;
@@ -231162,7 +231258,7 @@ function combineMissings(missings, featureAggregationStrategy) {
231162
231258
  return missings[0];
231163
231259
  }
231164
231260
  if (featureAggregationStrategy === "last") {
231165
- return missings.at(-1);
231261
+ return missings.at(-1) || null;
231166
231262
  }
231167
231263
  if (typeof featureAggregationStrategy === "number") {
231168
231264
  const i2 = featureAggregationStrategy;
@@ -231178,52 +231274,127 @@ function combineMissings(missings, featureAggregationStrategy) {
231178
231274
  return null;
231179
231275
  }
231180
231276
  function Legend(props) {
231181
- const { visible: visibleProp, positionRelative = false, highContrast = false, obsType, featureValueType, considerSelections = true, obsColorEncoding, featureSelection, featureLabelsMap, featureValueColormap, featureValueColormapRange, spatialChannelColor, spatialLayerColor, obsSetSelection, obsSetColor, featureAggregationStrategy, extent: extent2, missing, width: width2 = 100, height: height2 = 36, maxHeight: maxHeight2 = null, theme, showObsLabel = false, pointsVisible = true, contoursVisible = false, contoursFilled, contourPercentiles, contourThresholds } = props;
231182
- const svgRef = useRef();
231277
+ const {
231278
+ visible: visibleProp,
231279
+ positionRelative = false,
231280
+ highContrast = false,
231281
+ obsType,
231282
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
231283
+ featureType: _featureType = void 0,
231284
+ // Unused but accepted for API compatibility
231285
+ featureValueType,
231286
+ considerSelections = true,
231287
+ obsColorEncoding,
231288
+ featureSelection,
231289
+ featureLabelsMap,
231290
+ featureValueColormap,
231291
+ featureValueColormapRange,
231292
+ setFeatureValueColormapRange,
231293
+ spatialChannelColor,
231294
+ spatialLayerColor,
231295
+ obsSetSelection,
231296
+ obsSetColor,
231297
+ featureAggregationStrategy,
231298
+ extent: extent2,
231299
+ missing,
231300
+ width: width2 = 100,
231301
+ height: height2 = 36,
231302
+ maxHeight: maxHeight2 = null,
231303
+ theme,
231304
+ showObsLabel = false,
231305
+ pointsVisible = true,
231306
+ contoursVisible = false,
231307
+ contoursFilled,
231308
+ contourPercentiles,
231309
+ contourThresholds
231310
+ } = props;
231311
+ const svgRef = useRef(null);
231183
231312
  const { classes: classes2 } = useStyles$p();
231313
+ const [localRange, setLocalRange] = useState(featureValueColormapRange);
231314
+ useEffect(() => {
231315
+ setLocalRange(featureValueColormapRange);
231316
+ }, [featureValueColormapRange]);
231317
+ const debouncedSetRange = useMemo$1(() => setFeatureValueColormapRange ? debounce$5((value2) => {
231318
+ setFeatureValueColormapRange(value2);
231319
+ }, 5, { leading: false, trailing: true }) : null, [setFeatureValueColormapRange]);
231320
+ useEffect(() => () => {
231321
+ if (debouncedSetRange) {
231322
+ debouncedSetRange.cancel();
231323
+ }
231324
+ }, [debouncedSetRange]);
231325
+ const handleSliderChange = useCallback((_event, newValue) => {
231326
+ const rangeValue = newValue;
231327
+ setLocalRange(rangeValue);
231328
+ if (debouncedSetRange) {
231329
+ debouncedSetRange(rangeValue);
231330
+ }
231331
+ }, [debouncedSetRange]);
231184
231332
  const isDarkTheme = theme === "dark";
231185
231333
  const isStaticColor = obsColorEncoding === "spatialChannelColor" || obsColorEncoding === "spatialLayerColor";
231186
231334
  const isSetColor = obsColorEncoding === "cellSetSelection";
231187
- const layerColor = Array.isArray(spatialLayerColor) && spatialLayerColor.length === 3 ? spatialLayerColor : getDefaultColor(theme);
231188
- const channelColor = Array.isArray(spatialChannelColor) && spatialChannelColor.length === 3 ? spatialChannelColor : getDefaultColor(theme);
231335
+ const layerColor = Array.isArray(spatialLayerColor) && spatialLayerColor.length === 3 ? spatialLayerColor : getDefaultColor(theme ?? "light");
231336
+ const channelColor = Array.isArray(spatialChannelColor) && spatialChannelColor.length === 3 ? spatialChannelColor : getDefaultColor(theme ?? "light");
231189
231337
  const staticColor = obsColorEncoding === "spatialChannelColor" ? channelColor : layerColor;
231190
- const visible = visibleProp && (!considerSelections || obsColorEncoding === "geneSelection" && featureSelection && Array.isArray(featureSelection) && featureSelection.length >= 1 || isSetColor && obsSetSelection?.length > 0 && obsSetColor?.length > 0 || isStaticColor);
231338
+ const visible = visibleProp && (!considerSelections || ["geneSelection", "geneExpression"].includes(obsColorEncoding ?? "") && featureSelection && Array.isArray(featureSelection) && featureSelection.length >= 1 || isSetColor && (obsSetSelection?.length ?? 0) > 0 && (obsSetColor?.length ?? 0) > 0 || isStaticColor);
231191
231339
  const levelZeroNames = useMemo$1(() => Array.from(new Set(obsSetSelection?.map((setPath) => setPath[0]) || [])), [obsSetSelection]);
231192
- const dynamicHeight = isSetColor && obsSetSelection ? levelZeroNames.length * titleHeight + obsSetSelection?.length * (rectHeight + rectMarginY) : height2 + (!pointsVisible && contoursVisible ? 25 : 0);
231340
+ const dynamicHeight = isSetColor && obsSetSelection ? levelZeroNames.length * titleHeight + (obsSetSelection?.length ?? 0) * (rectHeight + rectMarginY) : height2 + (!pointsVisible && contoursVisible ? 25 : 0);
231193
231341
  const availHeight = maxHeight2 !== null ? Math.max(0, maxHeight2 - 4) : Infinity;
231194
231342
  const needsScroll = Number.isFinite(availHeight) && dynamicHeight > availHeight + 1;
231195
231343
  useEffect(() => {
231196
231344
  const domElement = svgRef.current;
231345
+ if (!domElement)
231346
+ return;
231197
231347
  const foregroundColor = highContrast ? "black" : isDarkTheme ? "white" : "black";
231198
231348
  const svg2 = select$1(domElement);
231199
231349
  svg2.selectAll("g").remove();
231200
231350
  svg2.attr("width", width2).attr("height", dynamicHeight);
231201
231351
  const g2 = svg2.append("g").attr("width", width2).attr("height", dynamicHeight);
231202
- if (!considerSelections || obsColorEncoding === "geneSelection") {
231203
- const [xMin, xMax] = combineExtents(extent2, featureAggregationStrategy) || [0, 1];
231352
+ const showInteractiveSlider2 = setFeatureValueColormapRange && ["geneSelection", "geneExpression"].includes(obsColorEncoding ?? "") && pointsVisible && featureValueColormap;
231353
+ if (!considerSelections || ["geneSelection", "geneExpression"].includes(obsColorEncoding ?? "")) {
231354
+ const combinedExtent = combineExtents(extent2 ?? null, featureAggregationStrategy ?? null) || [0, 1];
231355
+ const [xMin, xMax] = combinedExtent;
231204
231356
  if (featureValueColormap && pointsVisible) {
231205
- const xlinkHref = getXlinkHref(featureValueColormap);
231206
- g2.append("image").attr("x", 0).attr("y", titleHeight).attr("width", width2).attr("height", rectHeight).attr("preserveAspectRatio", "none").attr("href", xlinkHref);
231207
- const [rMin, rMax] = featureValueColormapRange;
231357
+ const xlinkHref2 = getXlinkHref(featureValueColormap);
231358
+ const currentRange = showInteractiveSlider2 ? localRange : featureValueColormapRange;
231359
+ const [rMin, rMax] = currentRange || [0, 1];
231360
+ if (showInteractiveSlider2) ;
231361
+ else if (setFeatureValueColormapRange) {
231362
+ g2.append("image").attr("x", rMin * width2).attr("y", titleHeight).attr("width", (rMax - rMin) * width2).attr("height", rectHeight).attr("preserveAspectRatio", "none").attr("href", xlinkHref2);
231363
+ } else {
231364
+ g2.append("image").attr("x", 0).attr("y", titleHeight).attr("width", width2).attr("height", rectHeight).attr("preserveAspectRatio", "none").attr("href", xlinkHref2);
231365
+ }
231208
231366
  const scaledDataExtent = [
231209
231367
  xMin + (xMax - xMin) * rMin,
231210
231368
  xMax - (xMax - xMin) * (1 - rMax)
231211
231369
  ];
231212
- const x2 = linear$1().domain(scaledDataExtent).range([0.5, width2 - 0.5]);
231213
- const axisTicks2 = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight})`).style("font-size", "10px").call(axisBottom(x2).tickValues(scaledDataExtent));
231214
- axisTicks2.selectAll("line,path").style("stroke", foregroundColor);
231215
- axisTicks2.selectAll("text").style("fill", foregroundColor);
231216
- axisTicks2.selectAll("text").attr("text-anchor", (d, i2) => i2 === 0 ? "start" : "end");
231217
- } else if (contoursVisible) {
231370
+ let x2;
231371
+ if (setFeatureValueColormapRange || showInteractiveSlider2) {
231372
+ x2 = linear$1().domain(scaledDataExtent).range([rMin * width2, rMax * width2]);
231373
+ } else {
231374
+ x2 = linear$1().domain(scaledDataExtent).range([0, width2]);
231375
+ }
231376
+ if (showInteractiveSlider2) {
231377
+ const xGlobal = linear$1().domain([xMin, xMax]).range([0, width2 - 4]);
231378
+ const axisTicks2 = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight})`).style("font-size", "10px").call(axisBottom(xGlobal).tickValues([xMin, xMax]));
231379
+ axisTicks2.selectAll("line,path").style("stroke", foregroundColor);
231380
+ axisTicks2.selectAll("text").style("fill", foregroundColor);
231381
+ axisTicks2.selectAll("text").attr("text-anchor", (_d2, i2) => i2 === 0 ? "start" : "end");
231382
+ } else {
231383
+ const axisTicks2 = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight})`).style("font-size", "10px").call(axisBottom(x2).tickValues(scaledDataExtent));
231384
+ axisTicks2.selectAll("line,path").style("stroke", foregroundColor);
231385
+ axisTicks2.selectAll("text").style("fill", foregroundColor);
231386
+ axisTicks2.selectAll("text").attr("text-anchor", (_d2, i2) => i2 === 0 ? "start" : "end");
231387
+ }
231388
+ } else if (contoursVisible && contourPercentiles) {
231218
231389
  const tSize = 12;
231219
231390
  const xPercentile = linear$1().domain([0, 1]).range([tSize / 2, width2 - tSize / 2 - 2]);
231220
- const axisTicks2 = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight + 15})`).style("font-size", "9px").call(axisBottom(xPercentile).tickValues(contourPercentiles).tickFormat(format$8(".0%")).tickSizeOuter(0));
231391
+ const axisTicks2 = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight + 15})`).style("font-size", "9px").call(axisBottom(xPercentile).tickValues(contourPercentiles).tickFormat((d) => format$8(".0%")(d)).tickSizeOuter(0));
231221
231392
  axisTicks2.selectAll("line,path").style("stroke", foregroundColor);
231222
231393
  axisTicks2.selectAll("text").style("fill", foregroundColor);
231223
231394
  const NEIGHBOR_THRESHOLD = 18;
231224
- const contourPercentages = contourPercentiles.map((x2) => x2 * 100);
231395
+ const contourPercentages = contourPercentiles.map((p) => p * 100);
231225
231396
  if (contourPercentages?.[1] - contourPercentages?.[0] <= NEIGHBOR_THRESHOLD || contourPercentages?.[2] - contourPercentages?.[1] <= NEIGHBOR_THRESHOLD) {
231226
- axisTicks2.selectAll("text").attr("transform", (d, i2) => `translate(0,${i2 === 0 || i2 === contourPercentiles.length - 1 ? 0 : 10})`);
231397
+ axisTicks2.selectAll("text").attr("transform", (_d2, i2) => `translate(0,${i2 === 0 || i2 === contourPercentiles.length - 1 ? 0 : 10})`);
231227
231398
  }
231228
231399
  const triangleGroupG = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight + 4})`);
231229
231400
  contourPercentiles.forEach((p, i2) => {
@@ -231233,7 +231404,7 @@ function Legend(props) {
231233
231404
  const thresholdGroupG = g2.append("g").attr("transform", `translate(0,${titleHeight + rectHeight})`);
231234
231405
  const thresholdFormatter = format$8(".0f");
231235
231406
  contourPercentiles.forEach((p, i2) => {
231236
- const contourThreshold = xMin + (xMax - xMin) * (contourThresholds?.[i2] / 255);
231407
+ const contourThreshold = xMin + (xMax - xMin) * ((contourThresholds?.[i2] ?? 0) / 255);
231237
231408
  const thresholdG = thresholdGroupG.append("g").attr("transform", `translate(${xPercentile(p)},0)`).style("font-size", "7px");
231238
231409
  thresholdG.append("text").text(thresholdFormatter(contourThreshold)).style("fill", foregroundColor).attr("text-anchor", "middle");
231239
231410
  });
@@ -231256,9 +231427,9 @@ function Legend(props) {
231256
231427
  g2.append("text").attr("text-anchor", "start").attr("dominant-baseline", "hanging").attr("x", 0).attr("y", y2).text(levelZeroName).style("font-size", "9px").style("fill", foregroundColor);
231257
231428
  y2 += titleHeight;
231258
231429
  setPaths.forEach((setPath) => {
231259
- const setColor2 = obsSetColor?.find((d) => isEqual$3(d.path, setPath))?.color || getDefaultColor(theme);
231430
+ const setColor2 = obsSetColor?.find((d) => isEqual$3(d.path, setPath))?.color || getDefaultColor(theme ?? "light");
231260
231431
  g2.append("rect").attr("x", 0).attr("y", y2).attr("width", rectHeight).attr("height", rectHeight).attr("fill", `rgb(${setColor2[0]},${setColor2[1]},${setColor2[2]})`);
231261
- g2.append("text").attr("text-anchor", "start").attr("dominant-baseline", "hanging").attr("x", rectHeight + rectMarginX).attr("y", y2).text(setPath.at(-1)).style("font-size", "9px").style("fill", foregroundColor);
231432
+ g2.append("text").attr("text-anchor", "start").attr("dominant-baseline", "hanging").attr("x", rectHeight + rectMarginX).attr("y", y2).text(setPath.at(-1) ?? "").style("font-size", "9px").style("fill", foregroundColor);
231262
231433
  y2 += rectHeight + rectMarginY;
231263
231434
  });
231264
231435
  });
@@ -231279,17 +231450,17 @@ function Legend(props) {
231279
231450
  } else {
231280
231451
  featureSelectionLabelRawStr = featureSelectionLabelRaw?.[0];
231281
231452
  }
231282
- const combinedMissing = combineMissings(missing, featureAggregationStrategy);
231453
+ const combinedMissing = combineMissings(missing ?? null, featureAggregationStrategy ?? null);
231283
231454
  const featureSelectionLabel = combinedMissing ? `${featureSelectionLabelRawStr} (${Math.round(combinedMissing * 100)}% NaN)` : featureSelectionLabelRawStr;
231284
- const obsLabel = capitalize$3(obsType);
231285
- const featureLabel = considerSelections ? featureSelectionLabel || capitalize$3(featureValueType) : capitalize$3(featureValueType);
231455
+ const obsLabel = capitalize$3(obsType ?? null);
231456
+ const featureLabel = considerSelections ? featureSelectionLabel || capitalize$3(featureValueType ?? null) : capitalize$3(featureValueType ?? null);
231286
231457
  const mainLabel = showObsLabel ? obsLabel : featureLabel;
231287
231458
  const subLabel = showObsLabel ? featureLabel : null;
231288
231459
  const hasSubLabel = subLabel !== null;
231289
231460
  if (!isSetColor) {
231290
- g2.append("text").attr("text-anchor", hasSubLabel ? "start" : "end").attr("dominant-baseline", "hanging").attr("x", hasSubLabel ? 0 : width2).attr("y", 0).text(mainLabel).style("font-size", "10px").style("fill", foregroundColor);
231461
+ g2.append("text").attr("text-anchor", hasSubLabel ? "start" : "end").attr("dominant-baseline", "hanging").attr("x", hasSubLabel ? 0 : width2 - 4).attr("y", 0).text(mainLabel ?? "").style("font-size", "10px").style("fill", foregroundColor);
231291
231462
  if (hasSubLabel) {
231292
- g2.append("text").attr("text-anchor", "end").attr("dominant-baseline", "hanging").attr("x", width2).attr("y", titleHeight).text(subLabel).style("font-size", "9px").style("fill", foregroundColor);
231463
+ g2.append("text").attr("text-anchor", "end").attr("dominant-baseline", "hanging").attr("x", width2).attr("y", titleHeight + rectHeight).text(subLabel ?? "").style("font-size", "9px").style("fill", foregroundColor);
231293
231464
  }
231294
231465
  }
231295
231466
  }, [
@@ -231297,6 +231468,7 @@ function Legend(props) {
231297
231468
  height2,
231298
231469
  featureValueColormap,
231299
231470
  featureValueColormapRange,
231471
+ localRange,
231300
231472
  considerSelections,
231301
231473
  obsType,
231302
231474
  obsColorEncoding,
@@ -231315,20 +231487,63 @@ function Legend(props) {
231315
231487
  contoursFilled,
231316
231488
  contoursVisible,
231317
231489
  pointsVisible,
231318
- featureAggregationStrategy
231490
+ featureAggregationStrategy,
231491
+ setFeatureValueColormapRange,
231492
+ dynamicHeight,
231493
+ highContrast,
231494
+ isStaticColor,
231495
+ missing,
231496
+ showObsLabel,
231497
+ staticColor
231319
231498
  ]);
231320
- return jsxRuntimeExports.jsx("div", { className: clsx(classes2.legend, {
231499
+ const showInteractiveSlider = setFeatureValueColormapRange && ["geneSelection", "geneExpression"].includes(obsColorEncoding ?? "") && pointsVisible && featureValueColormap;
231500
+ const globalExtent = useMemo$1(() => {
231501
+ const combined = combineExtents(extent2 ?? null, featureAggregationStrategy ?? null);
231502
+ return combined || [0, 1];
231503
+ }, [extent2, featureAggregationStrategy]);
231504
+ const formatSliderValue = useCallback((value2) => {
231505
+ const [xMin, xMax] = globalExtent;
231506
+ const dataValue = xMin + (xMax - xMin) * value2;
231507
+ const range2 = xMax - xMin;
231508
+ if (range2 < 0.01) {
231509
+ return dataValue.toExponential(2);
231510
+ }
231511
+ if (range2 < 1) {
231512
+ return dataValue.toFixed(3);
231513
+ }
231514
+ if (range2 < 100) {
231515
+ return dataValue.toFixed(1);
231516
+ }
231517
+ return Math.round(dataValue).toString();
231518
+ }, [globalExtent]);
231519
+ const xlinkHref = featureValueColormap ? getXlinkHref(featureValueColormap) : null;
231520
+ const currentLocalRange = localRange || [0, 1];
231521
+ return jsxRuntimeExports.jsxs("div", { className: clsx(classes2.legend, {
231321
231522
  [classes2.legendRelative]: positionRelative,
231322
231523
  [classes2.legendAbsolute]: !positionRelative,
231323
231524
  [classes2.legendHighContrast]: highContrast,
231324
231525
  [classes2.legendLowContrast]: !highContrast,
231325
231526
  [classes2.legendInvisible]: !visible
231326
231527
  }), style: {
231327
- ...needsScroll ? { maxHeight: `${Math.floor(availHeight)}px`, overflowY: "auto" } : { maxHeight: void 0, overflowY: "visible" }
231328
- }, children: jsxRuntimeExports.jsx("svg", { ref: svgRef, style: {
231528
+ ...needsScroll ? { maxHeight: `${Math.floor(availHeight)}px`, overflowY: "auto" } : { maxHeight: void 0, overflowY: "visible" },
231529
+ width: `${width2}px`
231530
+ }, children: [jsxRuntimeExports.jsx("svg", { ref: svgRef, style: {
231329
231531
  width: `${width2}px`,
231330
231532
  height: `${dynamicHeight}px`
231331
- } }) });
231533
+ } }), showInteractiveSlider && xlinkHref && jsxRuntimeExports.jsxs("div", { className: classes2.sliderContainer, children: [currentLocalRange[0] > 0 && jsxRuntimeExports.jsx("div", { className: classes2.grayTrack, style: {
231534
+ left: 0,
231535
+ width: `${currentLocalRange[0] * 100}%`
231536
+ } }), currentLocalRange[1] < 1 && jsxRuntimeExports.jsx("div", { className: classes2.grayTrack, style: {
231537
+ left: `${currentLocalRange[1] * 100}%`,
231538
+ width: `${(1 - currentLocalRange[1]) * 100}%`
231539
+ } }), jsxRuntimeExports.jsx("img", { src: xlinkHref, alt: "Colormap gradient", className: classes2.colormapImage, style: {
231540
+ left: `${currentLocalRange[0] * 100}%`,
231541
+ width: `${(currentLocalRange[1] - currentLocalRange[0]) * 100}%`
231542
+ } }), jsxRuntimeExports.jsx(Slider, { className: classes2.sliderRoot, value: currentLocalRange, onChange: handleSliderChange, min: 0, max: 1, step: 0.01, disableSwap: true, valueLabelDisplay: "auto", valueLabelFormat: formatSliderValue, "aria-label": "Colormap range", getAriaLabel: (index2) => index2 === 0 ? "Colormap minimum" : "Colormap maximum", getAriaValueText: (value2) => formatSliderValue(value2), slotProps: {
231543
+ thumb: {
231544
+ className: classes2.sliderThumb
231545
+ }
231546
+ } })] })] });
231332
231547
  }
231333
231548
  const useStyles$o = makeStyles()(() => ({
231334
231549
  multiLegend: {
@@ -231361,8 +231576,12 @@ function MultiLegend(props) {
231361
231576
  const reversedSpotLayerScopes = useMemo$1(() => [...spotLayerScopes || []].reverse(), [spotLayerScopes]);
231362
231577
  const reversedPointLayerScopes = useMemo$1(() => [...pointLayerScopes || []].reverse(), [pointLayerScopes]);
231363
231578
  return jsxRuntimeExports.jsxs("div", { className: classes2.multiLegend, children: [pointLayerScopes ? reversedPointLayerScopes.flatMap((layerScope) => {
231364
- const layerCoordination = pointLayerCoordination[0][layerScope];
231365
- const { spatialLayerVisible, obsColorEncoding, obsType, featureType, featureValueType, spatialLayerColor, legendVisible } = layerCoordination;
231579
+ const layerCoordination = pointLayerCoordination?.[0]?.[layerScope];
231580
+ const layerSetters = pointLayerCoordination?.[1]?.[layerScope];
231581
+ if (!layerCoordination)
231582
+ return null;
231583
+ const { spatialLayerVisible, obsColorEncoding, obsType, featureType, featureValueType, featureSelection, featureValueColormap, featureValueColormapRange, spatialLayerColor, legendVisible } = layerCoordination;
231584
+ const { setFeatureValueColormapRange } = layerSetters || {};
231366
231585
  const isStaticColor = obsColorEncoding === "spatialLayerColor";
231367
231586
  const height2 = isStaticColor ? 20 : 36;
231368
231587
  return spatialLayerVisible && legendVisible ? jsxRuntimeExports.jsx(Legend, {
@@ -231377,30 +231596,39 @@ function MultiLegend(props) {
231377
231596
  featureValueType,
231378
231597
  obsColorEncoding,
231379
231598
  spatialLayerColor,
231380
- featureSelection: null,
231599
+ featureSelection,
231381
231600
  // featureLabelsMap={featureLabelsMap} // TODO
231382
- featureValueColormap: "viridis",
231383
- featureValueColormapRange: [0, 1],
231601
+ featureValueColormap: featureValueColormap || "viridis",
231602
+ featureValueColormapRange: featureValueColormapRange || [0, 1],
231603
+ setFeatureValueColormapRange,
231384
231604
  extent: null,
231385
231605
  height: height2
231386
231606
  }, layerScope) : null;
231387
231607
  }) : null, spotLayerScopes ? reversedSpotLayerScopes.flatMap((layerScope) => {
231388
- const layerCoordination = spotLayerCoordination[0][layerScope];
231608
+ const layerCoordination = spotLayerCoordination?.[0][layerScope];
231609
+ const layerSetters = spotLayerCoordination?.[1]?.[layerScope];
231610
+ if (!layerCoordination)
231611
+ return null;
231389
231612
  const { spatialLayerVisible, obsColorEncoding, featureValueColormap, featureValueColormapRange, obsType, featureType, featureValueType, featureSelection, featureAggregationStrategy, spatialLayerColor, legendVisible, obsSetSelection, obsSetColor } = layerCoordination;
231613
+ const { setFeatureValueColormapRange } = layerSetters || {};
231390
231614
  const expressionExtents = spotMultiExpressionExtents?.[layerScope];
231391
231615
  const firstExpressionExtent = expressionExtents?.[0];
231392
231616
  const isStaticColor = obsColorEncoding === "spatialLayerColor";
231393
231617
  const height2 = isStaticColor ? 20 : 36;
231394
231618
  const featureLabelsMap = spotMultiFeatureLabels?.[layerScope]?.featureLabelsMap;
231395
- return spatialLayerVisible && legendVisible ? jsxRuntimeExports.jsx(Legend, { maxHeight: maxHeight2, positionRelative: true, highContrast: true, showObsLabel: true, visible: spatialLayerVisible, theme, obsType, featureType, featureValueType, obsColorEncoding, spatialLayerColor, featureSelection, featureAggregationStrategy, featureLabelsMap, featureValueColormap, featureValueColormapRange, extent: firstExpressionExtent, height: height2, obsSetSelection, obsSetColor }, layerScope) : null;
231619
+ return spatialLayerVisible && legendVisible ? jsxRuntimeExports.jsx(Legend, { maxHeight: maxHeight2, positionRelative: true, highContrast: true, showObsLabel: true, visible: spatialLayerVisible, theme, obsType, featureType, featureValueType, obsColorEncoding, spatialLayerColor, featureSelection, featureAggregationStrategy, featureLabelsMap, featureValueColormap, featureValueColormapRange, setFeatureValueColormapRange, extent: firstExpressionExtent, height: height2, obsSetSelection, obsSetColor }, layerScope) : null;
231396
231620
  }) : null, segmentationLayerScopes ? reversedSegmentationLayerScopes.flatMap((layerScope) => {
231397
- const layerCoordination = segmentationLayerCoordination[0][layerScope];
231398
- const channelScopes = segmentationChannelScopesByLayer[layerScope];
231399
- const channelCoordination = segmentationChannelCoordination[0][layerScope];
231621
+ const layerCoordination = segmentationLayerCoordination?.[0][layerScope];
231622
+ const channelScopes = segmentationChannelScopesByLayer?.[layerScope];
231623
+ const channelCoordination = segmentationChannelCoordination?.[0][layerScope];
231624
+ const channelSetters = segmentationChannelCoordination?.[1]?.[layerScope];
231625
+ if (!layerCoordination)
231626
+ return null;
231400
231627
  const { spatialLayerVisible } = layerCoordination;
231401
231628
  const reversedChannelScopes = [...channelScopes || []].reverse();
231402
231629
  return channelCoordination && channelScopes ? reversedChannelScopes.map((cScope) => {
231403
231630
  const { spatialChannelVisible, spatialChannelColor, obsColorEncoding, featureValueColormap, featureValueColormapRange, obsType, featureType, featureValueType, featureSelection, featureAggregationStrategy, legendVisible, obsSetSelection, obsSetColor } = channelCoordination[cScope];
231631
+ const { setFeatureValueColormapRange } = channelSetters?.[cScope] || {};
231404
231632
  const expressionExtents = segmentationMultiExpressionExtents?.[layerScope]?.[cScope];
231405
231633
  const firstExpressionExtent = expressionExtents?.[0];
231406
231634
  const isStaticColor = obsColorEncoding === "spatialChannelColor";
@@ -231421,6 +231649,7 @@ function MultiLegend(props) {
231421
231649
  // featureLabelsMap={featureLabelsMap} // TODO
231422
231650
  featureValueColormap,
231423
231651
  featureValueColormapRange,
231652
+ setFeatureValueColormapRange,
231424
231653
  extent: firstExpressionExtent,
231425
231654
  height: height2,
231426
231655
  spatialChannelColor,
@@ -231470,7 +231699,7 @@ function ChannelNamesLegend(props) {
231470
231699
  const imageWrapperInstance = images?.[layerScope]?.image?.instance;
231471
231700
  const channelNames = imageWrapperInstance?.getChannelNames();
231472
231701
  const channelIndex = imageWrapperInstance?.getChannelIndex(spatialTargetC);
231473
- const channelName = channelNames?.[channelIndex];
231702
+ const channelName = channelIndex !== void 0 ? channelNames?.[channelIndex] : void 0;
231474
231703
  return spatialLayerVisible && spatialChannelVisible && spatialChannelLabelsVisible ? jsxRuntimeExports.jsx(Typography, { variant: "h6", className: classes2.channelNameText, style: {
231475
231704
  color: rgbColor,
231476
231705
  fontSize: `${spatialChannelLabelSize}px`
@@ -231629,7 +231858,7 @@ function EmbeddingScatterplotSubscriber(props) {
231629
231858
  }, [obsEmbedding]);
231630
231859
  useEffect(() => {
231631
231860
  if (xRange && yRange && width2 && height2) {
231632
- const pointSizeDevicePixels = getPointSizeDevicePixels(window.devicePixelRatio, zoom2, xRange, yRange, width2, height2);
231861
+ const pointSizeDevicePixels = getPointSizeDevicePixels(window.devicePixelRatio, zoom2, xRange, yRange, width2, height2, numCells);
231633
231862
  setDynamicCellRadius(pointSizeDevicePixels);
231634
231863
  const nextCellOpacityScale = getPointOpacity(zoom2, xRange, yRange, width2, height2, numCells, averageFillDensity);
231635
231864
  setDynamicCellOpacity(nextCellOpacityScale);
@@ -231837,6 +232066,7 @@ function EmbeddingScatterplotSubscriber(props) {
231837
232066
  featureLabelsMap,
231838
232067
  featureValueColormap: geneExpressionColormap,
231839
232068
  featureValueColormapRange: geneExpressionColormapRange,
232069
+ setFeatureValueColormapRange: setGeneExpressionColormapRange,
231840
232070
  obsSetSelection: cellSetSelection,
231841
232071
  extent: expressionExtents,
231842
232072
  missing: expressionMissing,
@@ -232064,7 +232294,7 @@ function GatingSubscriber(props) {
232064
232294
  }, [obsXY]);
232065
232295
  useEffect(() => {
232066
232296
  if (xRange && yRange) {
232067
- const pointSizeDevicePixels = getPointSizeDevicePixels(window.devicePixelRatio, zoom2, xRange, yRange, width2, height2);
232297
+ const pointSizeDevicePixels = getPointSizeDevicePixels(window.devicePixelRatio, zoom2, xRange, yRange, width2, height2, numCells);
232068
232298
  setDynamicCellRadius(pointSizeDevicePixels);
232069
232299
  const nextCellOpacityScale = getPointOpacity(zoom2, xRange, yRange, width2, height2, numCells, averageFillDensity);
232070
232300
  setDynamicCellOpacity(nextCellOpacityScale);
@@ -246730,7 +246960,7 @@ var equalScalar = /* @__PURE__ */ createEqualScalar({
246730
246960
  config: config$2,
246731
246961
  typed
246732
246962
  });
246733
- var number$5 = /* @__PURE__ */ createNumber({
246963
+ var number$4 = /* @__PURE__ */ createNumber({
246734
246964
  typed
246735
246965
  });
246736
246966
  var multiplyScalar = /* @__PURE__ */ createMultiplyScalar({
@@ -246847,7 +247077,7 @@ var pow$4 = /* @__PURE__ */ createPow({
246847
247077
  identity: identity$4,
246848
247078
  matrix,
246849
247079
  multiply,
246850
- number: number$5,
247080
+ number: number$4,
246851
247081
  typed
246852
247082
  });
246853
247083
  var bignumber = /* @__PURE__ */ createBignumber({
@@ -246857,7 +247087,7 @@ var bignumber = /* @__PURE__ */ createBignumber({
246857
247087
  var numeric$1 = /* @__PURE__ */ createNumeric({
246858
247088
  bignumber,
246859
247089
  fraction,
246860
- number: number$5
247090
+ number: number$4
246861
247091
  });
246862
247092
  var subtract = /* @__PURE__ */ createSubtract({
246863
247093
  DenseMatrix,
@@ -246951,7 +247181,7 @@ var Unit = /* @__PURE__ */ createUnitClass({
246951
247181
  format: format$4,
246952
247182
  isNumeric: isNumeric$1,
246953
247183
  multiplyScalar,
246954
- number: number$5,
247184
+ number: number$4,
246955
247185
  pow: pow$4,
246956
247186
  round,
246957
247187
  subtract
@@ -248582,7 +248812,7 @@ let Array$2 = class Array2 extends (_a$5 = Location$1, _a$5) {
248582
248812
  return is_dtype$1(this.dtype, query);
248583
248813
  }
248584
248814
  };
248585
- function* range$8(start2, stop3, step = 1) {
248815
+ function* range$7(start2, stop3, step = 1) {
248586
248816
  if (stop3 === void 0) {
248587
248817
  stop3 = start2;
248588
248818
  start2 = 0;
@@ -248726,7 +248956,7 @@ let SliceDimIndexer$1 = class SliceDimIndexer {
248726
248956
  *[Symbol.iterator]() {
248727
248957
  const dim_chunk_ix_from = Math.floor(this.start / this.dim_chunk_len);
248728
248958
  const dim_chunk_ix_to = Math.ceil(this.stop / this.dim_chunk_len);
248729
- for (const dim_chunk_ix of range$8(dim_chunk_ix_from, dim_chunk_ix_to)) {
248959
+ for (const dim_chunk_ix of range$7(dim_chunk_ix_from, dim_chunk_ix_to)) {
248730
248960
  const dim_offset = dim_chunk_ix * this.dim_chunk_len;
248731
248961
  const dim_limit = Math.min(this.dim_len, (dim_chunk_ix + 1) * this.dim_chunk_len);
248732
248962
  const dim_chunk_len = dim_limit - dim_offset;
@@ -250091,7 +250321,7 @@ function parseV1(spec, renderString) {
250091
250321
  function* iterDims(dimensions) {
250092
250322
  const keys2 = Object.keys(dimensions);
250093
250323
  const iterables = Object.values(dimensions).map(
250094
- (i2) => Array.isArray(i2) ? i2 : [...range$7(i2)]
250324
+ (i2) => Array.isArray(i2) ? i2 : [...range$6(i2)]
250095
250325
  );
250096
250326
  for (const values3 of product$1(...iterables)) {
250097
250327
  yield Object.fromEntries(keys2.map((key2, i2) => [key2, values3[i2]]));
@@ -250120,7 +250350,7 @@ function* product$1(...iterables) {
250120
250350
  results[i2] = iterators[i2].next();
250121
250351
  }
250122
250352
  }
250123
- function* range$7({ stop: stop3, start: start2 = 0, step = 1 }) {
250353
+ function* range$6({ stop: stop3, start: start2 = 0, step = 1 }) {
250124
250354
  for (let i2 = start2; i2 < stop3; i2 += step) {
250125
250355
  yield i2;
250126
250356
  }
@@ -251558,6 +251788,7 @@ function SpatialSubscriber$1(props) {
251558
251788
  featureLabelsMap,
251559
251789
  featureValueColormap: geneExpressionColormap,
251560
251790
  featureValueColormapRange: geneExpressionColormapRange,
251791
+ setFeatureValueColormapRange: setGeneExpressionColormapRange,
251561
251792
  extent: expressionExtents?.[0]
251562
251793
  })] });
251563
251794
  }
@@ -252936,12 +253167,12 @@ class ErrorBoundary extends React__default.Component {
252936
253167
  }
252937
253168
  }
252938
253169
  const LazySpatialThree = React__default.lazy(async () => {
252939
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-DNRC-wrS.js");
253170
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-C07z-9Ag.js");
252940
253171
  return { default: SpatialWrapper2 };
252941
253172
  });
252942
253173
  const SpatialThreeAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialThree, { ...props }) }) }) }));
252943
253174
  const LazySpatialAccelerated = React__default.lazy(async () => {
252944
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BATko5ux.js");
253175
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-sdWGixZi.js");
252945
253176
  return { default: SpatialWrapper2 };
252946
253177
  });
252947
253178
  const SpatialAcceleratedAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialAccelerated, { ...props }) }) }) }));
@@ -253819,7 +254050,7 @@ const Heatmap$1 = forwardRef$1((props, deckRef) => {
253819
254050
  }
253820
254051
  const curr = backlog[backlog.length - 1];
253821
254052
  if (dataRef.current && dataRef.current.buffer.byteLength && expressionRowLookUp.size > 0 && !shouldUsePaddedImplementation(dataRef.current.length)) {
253822
- const promises = range$f(yTiles).map((i2) => range$f(xTiles).map(async (j) => workerPool.process({
254053
+ const promises = range$e(yTiles).map((i2) => range$e(xTiles).map(async (j) => workerPool.process({
253823
254054
  curr,
253824
254055
  tileI: i2,
253825
254056
  tileJ: j,
@@ -253928,7 +254159,7 @@ const Heatmap$1 = forwardRef$1((props, deckRef) => {
253928
254159
  });
253929
254160
  };
253930
254161
  const cellOrdering = transpose2 ? axisTopLabels : axisLeftLabels;
253931
- const layers3 = range$f(yTiles * xTiles).map((index2) => getLayer2(Math.floor(index2 / xTiles), index2 % xTiles));
254162
+ const layers3 = range$e(yTiles * xTiles).map((index2) => getLayer2(Math.floor(index2 / xTiles), index2 % xTiles));
253932
254163
  return layers3;
253933
254164
  }
253934
254165
  function getLayer(i2, j, tile) {
@@ -254080,10 +254311,10 @@ const Heatmap$1 = forwardRef$1((props, deckRef) => {
254080
254311
  const cellOrdering = transpose2 ? axisTopLabels : axisLeftLabels;
254081
254312
  const colorBarTileWidthPx = transpose2 ? TILE_SIZE : 1;
254082
254313
  const colorBarTileHeightPx = transpose2 ? 1 : TILE_SIZE;
254083
- const result = range$f(numCellColorTracks).map((track) => {
254084
- const trackResult = range$f(transpose2 ? xTiles : yTiles).map((i2) => {
254314
+ const result = range$e(numCellColorTracks).map((track) => {
254315
+ const trackResult = range$e(transpose2 ? xTiles : yTiles).map((i2) => {
254085
254316
  const tileData = new Uint8ClampedArray(TILE_SIZE * 1 * 4);
254086
- range$f(TILE_SIZE).forEach((tileY) => {
254317
+ range$e(TILE_SIZE).forEach((tileY) => {
254087
254318
  rowI = i2 * TILE_SIZE + tileY;
254088
254319
  if (rowI < cellOrdering.length) {
254089
254320
  cellId = cellOrdering[rowI];
@@ -254213,7 +254444,7 @@ const Heatmap$1 = forwardRef$1((props, deckRef) => {
254213
254444
  }
254214
254445
  }
254215
254446
  const cellColorsViews = useMemo$1(() => {
254216
- const result = range$f(numCellColorTracks).map((track) => {
254447
+ const result = range$e(numCellColorTracks).map((track) => {
254217
254448
  let view;
254218
254449
  if (transpose2) {
254219
254450
  view = new OrthographicView({
@@ -254439,7 +254670,7 @@ function HeatmapSubscriber(props) {
254439
254670
  setTargetY(target2[1]);
254440
254671
  }, colormapRange: geneExpressionColormapRange, setColormapRange: setGeneExpressionColormapRange, height: height2, width: width2, theme, uuid: uuid2, uint8ObsFeatureMatrix: uint8ObsFeatureMatrix?.data, cellColors, colormap: geneExpressionColormap, setIsRendering, setCellHighlight, setGeneHighlight, featureLabelsMap, obsIndex, featureIndex, setTrackHighlight, setComponentHover: () => {
254441
254672
  setComponentHover(uuid2);
254442
- }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid2, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
254673
+ }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid2, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, setFeatureValueColormapRange: setGeneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
254443
254674
  }
254444
254675
  function _classCallCheck(a2, n3) {
254445
254676
  if (!(a2 instanceof n3)) throw new TypeError("Cannot call a class as a function");
@@ -261631,7 +261862,7 @@ function LayerOptions({ colormap, opacity: opacity2, handleColormapChange, handl
261631
261862
  const domainSelectorId = $bdb11010cef70236$export$f680877a34711e37();
261632
261863
  const opacitySliderId = $bdb11010cef70236$export$f680877a34711e37();
261633
261864
  const zeroTransparentId = $bdb11010cef70236$export$f680877a34711e37();
261634
- return jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "column", sx: { width: "100%" }, children: [hasZStack && !disable3d && hasViewableResolutions && jsxRuntimeExports.jsx(VolumeDropdown, { loader: loader2, handleSliderChange, handleDomainChange, channels: channels2, handleMultiPropertyChange, resolution, disable3d, setRasterLayerCallback, setAreAllChannelsLoading, setViewState, spatialHeight, spatialWidth, use3d, modelMatrix: modelMatrix2 }), hasDimensionsAndChannels && !use3d && globalControlLabels.map((field2) => shape2[labels2.indexOf(field2)] > 1 && jsxRuntimeExports.jsx(LayerOption, { name: field2, inputId: `${field2}-${globalSelectionSliderId}`, children: jsxRuntimeExports.jsx(GlobalSelectionSlider, { field: field2, inputId: `${field2}-${globalSelectionSliderId}`, value: globalLabelValues[field2], handleChange: handleGlobalChannelsSelectionChange, possibleValues: range$f(shape2[labels2.indexOf(field2)]) }) }, field2)), !disableChannelsIfRgbDetected ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [shouldShowColormap && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Colormap", inputId: colormapSelectId, children: jsxRuntimeExports.jsx(ColormapSelect, { value: colormap || "", inputId: colormapSelectId, handleChange: handleColormapChange }) }) }), shouldShowDomain && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Domain", inputId: domainSelectorId, children: jsxRuntimeExports.jsx(SliderDomainSelector, { value: domainType || DEFAULT_RASTER_DOMAIN_TYPE, inputId: domainSelectorId, handleChange: (value2) => {
261865
+ return jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "column", sx: { width: "100%" }, children: [hasZStack && !disable3d && hasViewableResolutions && jsxRuntimeExports.jsx(VolumeDropdown, { loader: loader2, handleSliderChange, handleDomainChange, channels: channels2, handleMultiPropertyChange, resolution, disable3d, setRasterLayerCallback, setAreAllChannelsLoading, setViewState, spatialHeight, spatialWidth, use3d, modelMatrix: modelMatrix2 }), hasDimensionsAndChannels && !use3d && globalControlLabels.map((field2) => shape2[labels2.indexOf(field2)] > 1 && jsxRuntimeExports.jsx(LayerOption, { name: field2, inputId: `${field2}-${globalSelectionSliderId}`, children: jsxRuntimeExports.jsx(GlobalSelectionSlider, { field: field2, inputId: `${field2}-${globalSelectionSliderId}`, value: globalLabelValues[field2], handleChange: handleGlobalChannelsSelectionChange, possibleValues: range$e(shape2[labels2.indexOf(field2)]) }) }, field2)), !disableChannelsIfRgbDetected ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [shouldShowColormap && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Colormap", inputId: colormapSelectId, children: jsxRuntimeExports.jsx(ColormapSelect, { value: colormap || "", inputId: colormapSelectId, handleChange: handleColormapChange }) }) }), shouldShowDomain && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Domain", inputId: domainSelectorId, children: jsxRuntimeExports.jsx(SliderDomainSelector, { value: domainType || DEFAULT_RASTER_DOMAIN_TYPE, inputId: domainSelectorId, handleChange: (value2) => {
261635
261866
  handleDomainChange(value2);
261636
261867
  } }) }) })] }) : null, !use3d && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Opacity", inputId: opacitySliderId, children: jsxRuntimeExports.jsx(OpacitySlider, { value: opacity2, handleChange: handleOpacityChange, inputId: opacitySliderId }) }) }), shouldShowTransparentColor && !use3d && jsxRuntimeExports.jsx(Grid$1, { children: jsxRuntimeExports.jsx(LayerOption, { name: "Zero Transparent", inputId: zeroTransparentId, children: jsxRuntimeExports.jsx(TransparentColorCheckbox, { value: transparentColor, handleChange: handleTransparentColorChange, inputId: zeroTransparentId }) }) })] });
261637
261868
  }
@@ -265477,7 +265708,7 @@ async function open(location, options = {}) {
265477
265708
  }
265478
265709
  open.v2 = open_v2;
265479
265710
  open.v3 = open_v3;
265480
- function* range$6(start2, stop3, step = 1) {
265711
+ function* range$5(start2, stop3, step = 1) {
265481
265712
  if (stop3 === void 0) {
265482
265713
  stop3 = start2;
265483
265714
  start2 = 0;
@@ -265621,7 +265852,7 @@ class SliceDimIndexer2 {
265621
265852
  *[Symbol.iterator]() {
265622
265853
  const dim_chunk_ix_from = Math.floor(this.start / this.dim_chunk_len);
265623
265854
  const dim_chunk_ix_to = Math.ceil(this.stop / this.dim_chunk_len);
265624
- for (const dim_chunk_ix of range$6(dim_chunk_ix_from, dim_chunk_ix_to)) {
265855
+ for (const dim_chunk_ix of range$5(dim_chunk_ix_from, dim_chunk_ix_to)) {
265625
265856
  const dim_offset = dim_chunk_ix * this.dim_chunk_len;
265626
265857
  const dim_limit = Math.min(this.dim_len, (dim_chunk_ix + 1) * this.dim_chunk_len);
265627
265858
  const dim_chunk_len = dim_limit - dim_offset;
@@ -266077,7 +266308,7 @@ function HiglassGlobalStyles(props) {
266077
266308
  }
266078
266309
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
266079
266310
  const LazyHiGlassComponent = React__default.lazy(async () => {
266080
- const { HiGlassComponent } = await import("./higlass-Dfzm4Aif.js");
266311
+ const { HiGlassComponent } = await import("./higlass-BWjoRZ_l.js");
266081
266312
  return { default: HiGlassComponent };
266082
266313
  });
266083
266314
  const HG_SIZE = 800;
@@ -269024,7 +269255,7 @@ function NeuroglancerGlobalStyles(props) {
269024
269255
  const { classes: classes2 } = props;
269025
269256
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
269026
269257
  }
269027
- const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-Bn39ATeL.js"));
269258
+ const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-D662gKgy.js"));
269028
269259
  function createWorker() {
269029
269260
  return new WorkerFactory();
269030
269261
  }
@@ -299293,68 +299524,6 @@ function toSet$1(_) {
299293
299524
  for (let i2 = 0; i2 < n3; ++i2) s2[_[i2]] = true;
299294
299525
  return s2;
299295
299526
  }
299296
- function ascending$4(a2, b2) {
299297
- return a2 == null || b2 == null ? NaN : a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
299298
- }
299299
- function descending$1(a2, b2) {
299300
- return a2 == null || b2 == null ? NaN : b2 < a2 ? -1 : b2 > a2 ? 1 : b2 >= a2 ? 0 : NaN;
299301
- }
299302
- function bisector$1(f2) {
299303
- let compare12, compare2, delta;
299304
- if (f2.length !== 2) {
299305
- compare12 = ascending$4;
299306
- compare2 = (d, x2) => ascending$4(f2(d), x2);
299307
- delta = (d, x2) => f2(d) - x2;
299308
- } else {
299309
- compare12 = f2 === ascending$4 || f2 === descending$1 ? f2 : zero$3;
299310
- compare2 = f2;
299311
- delta = f2;
299312
- }
299313
- function left2(a2, x2, lo = 0, hi = a2.length) {
299314
- if (lo < hi) {
299315
- if (compare12(x2, x2) !== 0) return hi;
299316
- do {
299317
- const mid = lo + hi >>> 1;
299318
- if (compare2(a2[mid], x2) < 0) lo = mid + 1;
299319
- else hi = mid;
299320
- } while (lo < hi);
299321
- }
299322
- return lo;
299323
- }
299324
- function right2(a2, x2, lo = 0, hi = a2.length) {
299325
- if (lo < hi) {
299326
- if (compare12(x2, x2) !== 0) return hi;
299327
- do {
299328
- const mid = lo + hi >>> 1;
299329
- if (compare2(a2[mid], x2) <= 0) lo = mid + 1;
299330
- else hi = mid;
299331
- } while (lo < hi);
299332
- }
299333
- return lo;
299334
- }
299335
- function center2(a2, x2, lo = 0, hi = a2.length) {
299336
- const i2 = left2(a2, x2, lo, hi - 1);
299337
- return i2 > lo && delta(a2[i2 - 1], x2) > -delta(a2[i2], x2) ? i2 - 1 : i2;
299338
- }
299339
- return { left: left2, center: center2, right: right2 };
299340
- }
299341
- function zero$3() {
299342
- return 0;
299343
- }
299344
- function number$4(x2) {
299345
- return x2 === null ? NaN : +x2;
299346
- }
299347
- const ascendingBisect = bisector$1(ascending$4);
299348
- const bisectRight$1 = ascendingBisect.right;
299349
- bisector$1(number$4).center;
299350
- function range$5(start2, stop3, step) {
299351
- start2 = +start2, stop3 = +stop3, step = (n3 = arguments.length) < 2 ? (stop3 = start2, start2 = 0, 1) : n3 < 3 ? 1 : +step;
299352
- var i2 = -1, n3 = Math.max(0, Math.ceil((stop3 - start2) / step)) | 0, range2 = new Array(n3);
299353
- while (++i2 < n3) {
299354
- range2[i2] = start2 + i2 * step;
299355
- }
299356
- return range2;
299357
- }
299358
299527
  function colors$2(specifier) {
299359
299528
  var n3 = specifier.length / 6 | 0, colors2 = new Array(n3), i2 = 0;
299360
299529
  while (i2 < n3) colors2[i2] = "#" + specifier.slice(i2 * 6, ++i2 * 6);
@@ -299544,7 +299713,7 @@ function band$1() {
299544
299713
  start2 = Math.round(start2);
299545
299714
  bandwidth2 = Math.round(bandwidth2);
299546
299715
  }
299547
- const values3 = range$5(n3).map((i2) => start2 + step * i2);
299716
+ const values3 = range$8(n3).map((i2) => start2 + step * i2);
299548
299717
  return ordinalRange(reverse2 ? values3.reverse() : values3);
299549
299718
  }
299550
299719
  scale2.domain = function(_) {
@@ -301308,7 +301477,7 @@ const useStyles$3 = makeStyles()(() => ({
301308
301477
  }
301309
301478
  }));
301310
301479
  function summarize(iterable, keepZeros) {
301311
- const values3 = iterable.filter((d) => keepZeros).sort(ascending$9);
301480
+ const values3 = iterable.filter((d) => keepZeros).sort(ascending$8);
301312
301481
  const minVal = values3[0];
301313
301482
  const maxVal = values3[values3.length - 1];
301314
301483
  const q1 = quantileSorted$1(values3, 0.25);
@@ -302919,7 +303088,7 @@ const Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS], Second
302919
303088
  const intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];
302920
303089
  function bin$1(opt) {
302921
303090
  const ext = opt.extent, max2 = opt.maxbins || 40, target2 = Math.abs(span(ext)) / max2;
302922
- let i2 = bisector$2((i3) => i3[2]).right(intervals, target2), units, step;
303091
+ let i2 = bisector$1((i3) => i3[2]).right(intervals, target2), units, step;
302923
303092
  if (i2 === intervals.length) {
302924
303093
  units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max2);
302925
303094
  } else if (i2) {
@@ -304857,7 +305026,7 @@ function* numbers$1(values3, valueof) {
304857
305026
  }
304858
305027
  function quantiles(array2, p, f2) {
304859
305028
  const values3 = Float64Array.from(numbers$1(array2, f2));
304860
- values3.sort(ascending$5);
305029
+ values3.sort(ascending$4);
304861
305030
  return p.map((_) => quantileSorted(values3, _));
304862
305031
  }
304863
305032
  function quartiles(array2, f2) {
@@ -304916,7 +305085,7 @@ function bootstrapCI(array2, samples, alpha2, f2) {
304916
305085
  }
304917
305086
  mu[j] = a2 / n3;
304918
305087
  }
304919
- mu.sort(ascending$5);
305088
+ mu.sort(ascending$4);
304920
305089
  return [quantile$1(mu, alpha2 / 2), quantile$1(mu, 1 - alpha2 / 2)];
304921
305090
  }
304922
305091
  function dotbin(array2, step, smooth, f2) {
@@ -307889,7 +308058,7 @@ inherits(Quantile$1, Transform2, {
307889
308058
  out.source = this.value;
307890
308059
  return out;
307891
308060
  }
307892
- const source2 = pulse2.materialize(pulse2.SOURCE).source, groups = partition$1$1(source2, _.groupby, _.field), names = (_.groupby || []).map(accessorName), values3 = [], step = _.step || 0.01, p = _.probs || range$9(step / 2, 1 - EPSILON$2, step), n3 = p.length;
308061
+ const source2 = pulse2.materialize(pulse2.SOURCE).source, groups = partition$1$1(source2, _.groupby, _.field), names = (_.groupby || []).map(accessorName), values3 = [], step = _.step || 0.01, p = _.probs || range$8(step / 2, 1 - EPSILON$2, step), n3 = p.length;
307893
308062
  groups.forEach((g2) => {
307894
308063
  const q = quantiles(g2, p);
307895
308064
  for (let i2 = 0; i2 < n3; ++i2) {
@@ -308048,7 +308217,7 @@ inherits(Sequence, Transform2, {
308048
308217
  if (this.value && !_.modified()) return;
308049
308218
  const out = pulse2.materialize().fork(pulse2.MOD), as = _.as || "data";
308050
308219
  out.rem = this.value ? pulse2.rem.concat(this.value) : pulse2.rem;
308051
- this.value = range$9(_.start, _.stop, _.step || 1).map((v) => {
308220
+ this.value = range$8(_.start, _.stop, _.step || 1).map((v) => {
308052
308221
  const t4 = {};
308053
308222
  t4[as] = v;
308054
308223
  return ingest$1(t4);
@@ -308508,7 +308677,7 @@ inherits(Window, Transform2, {
308508
308677
  }
308509
308678
  });
308510
308679
  function processPartition(list2, state, cmp2, _) {
308511
- const sort2 = _.sort, range2 = sort2 && !_.ignorePeers, frame2 = _.frame || [null, 0], data2 = list2.data(cmp2), n3 = data2.length, b2 = range2 ? bisector$2(sort2) : null, w2 = {
308680
+ const sort2 = _.sort, range2 = sort2 && !_.ignorePeers, frame2 = _.frame || [null, 0], data2 = list2.data(cmp2), n3 = data2.length, b2 = range2 ? bisector$1(sort2) : null, w2 = {
308512
308681
  i0: 0,
308513
308682
  i1: 0,
308514
308683
  p0: 0,
@@ -308666,7 +308835,7 @@ function band() {
308666
308835
  start2 = Math.round(start2);
308667
308836
  bandwidth2 = Math.round(bandwidth2);
308668
308837
  }
308669
- const values3 = range$9(n3).map((i2) => start2 + step * i2);
308838
+ const values3 = range$8(n3).map((i2) => start2 + step * i2);
308670
308839
  return ordinalRange(reverse2 ? values3.reverse() : values3);
308671
308840
  }
308672
308841
  scale2.domain = function(_) {
@@ -308748,8 +308917,8 @@ function band() {
308748
308917
  hi = t4;
308749
308918
  }
308750
308919
  if (hi < values3[0] || lo > range$12[1 - reverse2]) return;
308751
- a2 = Math.max(0, bisectRight$2(values3, lo) - 1);
308752
- b2 = lo === hi ? a2 : bisectRight$2(values3, hi) - 1;
308920
+ a2 = Math.max(0, bisectRight$1(values3, lo) - 1);
308921
+ b2 = lo === hi ? a2 : bisectRight$1(values3, hi) - 1;
308753
308922
  if (lo - values3[a2] > bandwidth2 + 1e-10) ++a2;
308754
308923
  if (reverse2) {
308755
308924
  t4 = a2;
@@ -308787,7 +308956,7 @@ const slice$2 = Array.prototype.slice;
308787
308956
  function scaleBinOrdinal() {
308788
308957
  let domain2 = [], range2 = [];
308789
308958
  function scale2(x2) {
308790
- return x2 == null || x2 !== x2 ? void 0 : range2[(bisectRight$2(domain2, x2) - 1) % range2.length];
308959
+ return x2 == null || x2 !== x2 ? void 0 : range2[(bisectRight$1(domain2, x2) - 1) % range2.length];
308791
308960
  }
308792
308961
  scale2.domain = function(_) {
308793
308962
  if (arguments.length) {
@@ -314510,7 +314679,7 @@ Pie.Definition = {
314510
314679
  };
314511
314680
  inherits(Pie, Transform2, {
314512
314681
  transform(_, pulse2) {
314513
- var as = _.as || ["startAngle", "endAngle"], startAngle = as[0], endAngle = as[1], field2 = _.field || one$1, start2 = _.startAngle || 0, stop3 = _.endAngle != null ? _.endAngle : 2 * Math.PI, data2 = pulse2.source, values3 = data2.map(field2), n3 = values3.length, a2 = start2, k = (stop3 - start2) / sum$2(values3), index2 = range$9(n3), i2, t4, v;
314682
+ var as = _.as || ["startAngle", "endAngle"], startAngle = as[0], endAngle = as[1], field2 = _.field || one$1, start2 = _.startAngle || 0, stop3 = _.endAngle != null ? _.endAngle : 2 * Math.PI, data2 = pulse2.source, values3 = data2.map(field2), n3 = values3.length, a2 = start2, k = (stop3 - start2) / sum$2(values3), index2 = range$8(n3), i2, t4, v;
314514
314683
  if (_.sort) {
314515
314684
  index2.sort((a3, b2) => values3[a3] - values3[b2]);
314516
314685
  }
@@ -314628,7 +314797,7 @@ function configureBins(scale2, _, count2) {
314628
314797
  if (!step) error("Scale bins parameter missing step property.");
314629
314798
  if (start2 < lo) start2 = step * Math.ceil(lo / step);
314630
314799
  if (stop3 > hi) stop3 = step * Math.floor(hi / step);
314631
- bins2 = range$9(start2, stop3 + step / 2, step);
314800
+ bins2 = range$8(start2, stop3 + step / 2, step);
314632
314801
  }
314633
314802
  if (bins2) {
314634
314803
  scale2.bins = bins2;
@@ -315849,7 +316018,7 @@ function clipRectangle(x02, y02, x12, y12) {
315849
316018
  };
315850
316019
  }
315851
316020
  function graticuleX(y02, y12, dy) {
315852
- var y2 = range$9(y02, y12 - epsilon$3, dy).concat(y12);
316021
+ var y2 = range$8(y02, y12 - epsilon$3, dy).concat(y12);
315853
316022
  return function(x2) {
315854
316023
  return y2.map(function(y22) {
315855
316024
  return [x2, y22];
@@ -315857,7 +316026,7 @@ function graticuleX(y02, y12, dy) {
315857
316026
  };
315858
316027
  }
315859
316028
  function graticuleY(x02, x12, dx) {
315860
- var x2 = range$9(x02, x12 - epsilon$3, dx).concat(x12);
316029
+ var x2 = range$8(x02, x12 - epsilon$3, dx).concat(x12);
315861
316030
  return function(y2) {
315862
316031
  return x2.map(function(x22) {
315863
316032
  return [x22, y2];
@@ -315870,9 +316039,9 @@ function graticule() {
315870
316039
  return { type: "MultiLineString", coordinates: lines() };
315871
316040
  }
315872
316041
  function lines() {
315873
- return range$9(ceil(X02 / DX) * DX, X12, DX).map(X3).concat(range$9(ceil(Y02 / DY) * DY, Y12, DY).map(Y3)).concat(range$9(ceil(x02 / dx) * dx, x12, dx).filter(function(x22) {
316042
+ return range$8(ceil(X02 / DX) * DX, X12, DX).map(X3).concat(range$8(ceil(Y02 / DY) * DY, Y12, DY).map(Y3)).concat(range$8(ceil(x02 / dx) * dx, x12, dx).filter(function(x22) {
315874
316043
  return abs$1(x22 % DX) > epsilon$3;
315875
- }).map(x2)).concat(range$9(ceil(y02 / dy) * dy, y12, dy).filter(function(y22) {
316044
+ }).map(x2)).concat(range$8(ceil(y02 / dy) * dy, y12, dy).filter(function(y22) {
315876
316045
  return abs$1(y22 % DY) > epsilon$3;
315877
316046
  }).map(y2));
315878
316047
  }
@@ -317147,7 +317316,7 @@ function within(p, q, r3) {
317147
317316
  function quantize$1(k, nice2, zero2) {
317148
317317
  return function(values3) {
317149
317318
  var ex = extent(values3), start2 = zero2 ? Math.min(ex[0], 0) : ex[0], stop3 = ex[1], span2 = stop3 - start2, step = nice2 ? tickStep(start2, stop3, k) : span2 / (k + 1);
317150
- return range$9(start2 + step, stop3, step);
317319
+ return range$8(start2 + step, stop3, step);
317151
317320
  };
317152
317321
  }
317153
317322
  function Isocontour(params2) {
@@ -323087,7 +323256,7 @@ function SortedIndex() {
323087
323256
  array2 = value2;
323088
323257
  n3 = size2;
323089
323258
  }
323090
- return [bisectLeft$1(array2, range2[0], 0, n3), bisectRight$2(array2, range2[1], 0, n3)];
323259
+ return [bisectLeft$1(array2, range2[0], 0, n3), bisectRight$1(array2, range2[1], 0, n3)];
323091
323260
  }
323092
323261
  return {
323093
323262
  insert: insert2,
@@ -325452,7 +325621,7 @@ const functionContext = {
325452
325621
  hsl: hsl$2,
325453
325622
  luminance,
325454
325623
  contrast,
325455
- sequence: range$9,
325624
+ sequence: range$8,
325456
325625
  format: format$1,
325457
325626
  utcFormat,
325458
325627
  utcParse,
@@ -352722,7 +352891,7 @@ function FeatureBarPlot(props) {
352722
352891
  const xTitle = `${capitalize$3(obsType)}`;
352723
352892
  const autoMarginBottom = marginBottom || 30 + Math.sqrt(maxCharactersForLabel / 2) * 30;
352724
352893
  const foregroundColor = theme === "dark" ? "lightgray" : "black";
352725
- data2.sort((a2, b2) => ascending$9(a2[FEATURE_KEY], b2[FEATURE_KEY]));
352894
+ data2.sort((a2, b2) => ascending$8(a2[FEATURE_KEY], b2[FEATURE_KEY]));
352726
352895
  const svg2 = select$1(domElement);
352727
352896
  svg2.selectAll("g").remove();
352728
352897
  svg2.attr("width", width2).attr("height", height2);
@@ -354066,13 +354235,7 @@ class SpatialDataAutoConfig extends AbstractAutoConfig {
354066
354235
  };
354067
354236
  }
354068
354237
  if (relPath.match(/^(shapes)\/([^/]*)$/)) {
354069
- options.obsSpots = {
354070
- path: relPath,
354071
- coordinateSystem: firstCoordinateSystem
354072
- };
354073
- }
354074
- if (relPath.match(/^(points)\/([^/]*)$/)) {
354075
- options.obsPoints = {
354238
+ options.obsSegmentations = {
354076
354239
  path: relPath,
354077
354240
  coordinateSystem: firstCoordinateSystem
354078
354241
  };
@@ -354086,21 +354249,6 @@ class SpatialDataAutoConfig extends AbstractAutoConfig {
354086
354249
  // region: null,
354087
354250
  };
354088
354251
  }
354089
- const hasObs = tableEls.find((el) => el.path === `${path2}/obs`);
354090
- if (hasObs) {
354091
- const columnOrder = hasObs.attrs?.["column-order"];
354092
- options.obsSets = {
354093
- // region: null,
354094
- tablePath: relPath,
354095
- obsSets: columnOrder.map((c2) => ({
354096
- // TODO: determine whether this column is string/categorical.
354097
- // TODO: determine whether this column contains too many
354098
- // categories to make sense to consider a cell set.
354099
- path: `${hasObs.path.substring(1)}/${c2}`,
354100
- name: c2
354101
- }))
354102
- };
354103
- }
354104
354252
  }
354105
354253
  });
354106
354254
  return options;
@@ -354663,7 +354811,7 @@ class ClustersJsonAsObsFeatureMatrixLoader extends JsonLoader {
354663
354811
  const normalize2 = (d) => Math.floor((d - min2) / (max2 - min2) * 255);
354664
354812
  return col.map(normalize2);
354665
354813
  });
354666
- const tNormalizedMatrix = range$f(shape2[0]).map((i2) => range$f(shape2[1]).map((j) => normalizedMatrix[j][i2]));
354814
+ const tNormalizedMatrix = range$e(shape2[0]).map((i2) => range$e(shape2[1]).map((j) => normalizedMatrix[j][i2]));
354667
354815
  const normalizedFlatMatrix = tNormalizedMatrix.flat();
354668
354816
  const obsFeatureMatrix = { data: Uint8Array.from(normalizedFlatMatrix) };
354669
354817
  this.cachedResult = { obsIndex, featureIndex, obsFeatureMatrix };
@@ -354714,12 +354862,12 @@ class MoleculesJsonAsObsLabelsLoader extends JsonLoader {
354714
354862
  if (this.cachedResult) {
354715
354863
  return this.cachedResult;
354716
354864
  }
354717
- const obsIndex = range$f(sum$7(Object.values(data2).map((v) => v.length))).map((i2) => String(i2));
354865
+ const obsIndex = range$e(sum$7(Object.values(data2).map((v) => v.length))).map((i2) => String(i2));
354718
354866
  let obsLabels = [];
354719
354867
  Object.entries(data2).forEach(([gene, locations]) => {
354720
354868
  obsLabels = [
354721
354869
  ...obsLabels,
354722
- ...range$f(locations.length).map(() => gene)
354870
+ ...range$e(locations.length).map(() => gene)
354723
354871
  ];
354724
354872
  });
354725
354873
  this.cachedResult = { obsIndex, obsLabels };
@@ -354742,7 +354890,7 @@ class MoleculesJsonAsObsLocationsLoader extends JsonLoader {
354742
354890
  return this.cachedResult;
354743
354891
  }
354744
354892
  const moleculesValues = Object.values(data2);
354745
- const obsIndex = range$f(sum$7(moleculesValues.map((v) => v.length))).map((i2) => String(i2));
354893
+ const obsIndex = range$e(sum$7(moleculesValues.map((v) => v.length))).map((i2) => String(i2));
354746
354894
  const obsLocationsX = new Float32Array(obsIndex.length);
354747
354895
  const obsLocationsY = new Float32Array(obsIndex.length);
354748
354896
  let startAt = 0;