@vitessce/scatterplot-embedding 3.3.2 → 3.3.4

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.
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-68f84e2a.js";
2
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
2
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
3
3
  import "react";
4
4
  import "@vitessce/vit-s";
5
5
  import "react-dom";
@@ -999,18 +999,18 @@ bisector$1(number$2).center;
999
999
  const bisect = bisectRight;
1000
1000
  function extent$1(values2, valueof) {
1001
1001
  let min;
1002
- let max;
1002
+ let max2;
1003
1003
  if (valueof === void 0) {
1004
1004
  for (const value of values2) {
1005
1005
  if (value != null) {
1006
1006
  if (min === void 0) {
1007
1007
  if (value >= value)
1008
- min = max = value;
1008
+ min = max2 = value;
1009
1009
  } else {
1010
1010
  if (min > value)
1011
1011
  min = value;
1012
- if (max < value)
1013
- max = value;
1012
+ if (max2 < value)
1013
+ max2 = value;
1014
1014
  }
1015
1015
  }
1016
1016
  }
@@ -1020,17 +1020,17 @@ function extent$1(values2, valueof) {
1020
1020
  if ((value = valueof(value, ++index2, values2)) != null) {
1021
1021
  if (min === void 0) {
1022
1022
  if (value >= value)
1023
- min = max = value;
1023
+ min = max2 = value;
1024
1024
  } else {
1025
1025
  if (min > value)
1026
1026
  min = value;
1027
- if (max < value)
1028
- max = value;
1027
+ if (max2 < value)
1028
+ max2 = value;
1029
1029
  }
1030
1030
  }
1031
1031
  }
1032
1032
  }
1033
- return [min, max];
1033
+ return [min, max2];
1034
1034
  }
1035
1035
  var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2);
1036
1036
  function ticks(start, stop, count2) {
@@ -1080,6 +1080,24 @@ function tickStep(start, stop, count2) {
1080
1080
  step1 *= 2;
1081
1081
  return stop < start ? -step1 : step1;
1082
1082
  }
1083
+ function max(values2, valueof) {
1084
+ let max2;
1085
+ if (valueof === void 0) {
1086
+ for (const value of values2) {
1087
+ if (value != null && (max2 < value || max2 === void 0 && value >= value)) {
1088
+ max2 = value;
1089
+ }
1090
+ }
1091
+ } else {
1092
+ let index2 = -1;
1093
+ for (let value of values2) {
1094
+ if ((value = valueof(value, ++index2, values2)) != null && (max2 < value || max2 === void 0 && value >= value)) {
1095
+ max2 = value;
1096
+ }
1097
+ }
1098
+ }
1099
+ return max2;
1100
+ }
1083
1101
  var freeGlobal$1 = typeof global == "object" && global && global.Object === Object && global;
1084
1102
  const freeGlobal$2 = freeGlobal$1;
1085
1103
  var freeSelf$1 = typeof self == "object" && self && self.Object === Object && self;
@@ -4457,61 +4475,6 @@ const PALETTE = [
4457
4475
  [136, 34, 85],
4458
4476
  [170, 68, 153]
4459
4477
  ];
4460
- const schemeRdBu = [[103, 0, 31], [178, 24, 43], [214, 96, 77], [244, 165, 130], [253, 219, 199], [247, 247, 247], [209, 229, 240], [146, 197, 222], [67, 147, 195], [33, 102, 172], [5, 48, 97]];
4461
- const schemePlasma = [[13, 8, 135], [16, 7, 136], [19, 7, 137], [22, 7, 138], [25, 6, 140], [27, 6, 141], [29, 6, 142], [32, 6, 143], [34, 6, 144], [36, 6, 145], [38, 5, 145], [40, 5, 146], [42, 5, 147], [44, 5, 148], [46, 5, 149], [47, 5, 150], [49, 5, 151], [51, 5, 151], [53, 4, 152], [55, 4, 153], [56, 4, 154], [58, 4, 154], [60, 4, 155], [62, 4, 156], [63, 4, 156], [65, 4, 157], [67, 3, 158], [68, 3, 158], [70, 3, 159], [72, 3, 159], [73, 3, 160], [75, 3, 161], [76, 2, 161], [78, 2, 162], [80, 2, 162], [81, 2, 163], [83, 2, 163], [85, 2, 164], [86, 1, 164], [88, 1, 164], [89, 1, 165], [91, 1, 165], [92, 1, 166], [94, 1, 166], [96, 1, 166], [97, 0, 167], [99, 0, 167], [100, 0, 167], [102, 0, 167], [103, 0, 168], [105, 0, 168], [106, 0, 168], [108, 0, 168], [110, 0, 168], [111, 0, 168], [113, 0, 168], [114, 1, 168], [116, 1, 168], [117, 1, 168], [119, 1, 168], [120, 1, 168], [122, 2, 168], [123, 2, 168], [125, 3, 168], [126, 3, 168], [128, 4, 168], [129, 4, 167], [131, 5, 167], [132, 5, 167], [134, 6, 166], [135, 7, 166], [136, 8, 166], [138, 9, 165], [139, 10, 165], [141, 11, 165], [142, 12, 164], [143, 13, 164], [145, 14, 163], [146, 15, 163], [148, 16, 162], [149, 17, 161], [150, 19, 161], [152, 20, 160], [153, 21, 159], [154, 22, 159], [156, 23, 158], [157, 24, 157], [158, 25, 157], [160, 26, 156], [161, 27, 155], [162, 29, 154], [163, 30, 154], [165, 31, 153], [166, 32, 152], [167, 33, 151], [168, 34, 150], [170, 35, 149], [171, 36, 148], [172, 38, 148], [173, 39, 147], [174, 40, 146], [176, 41, 145], [177, 42, 144], [178, 43, 143], [179, 44, 142], [180, 46, 141], [181, 47, 140], [182, 48, 139], [183, 49, 138], [184, 50, 137], [186, 51, 136], [187, 52, 136], [188, 53, 135], [189, 55, 134], [190, 56, 133], [191, 57, 132], [192, 58, 131], [193, 59, 130], [194, 60, 129], [195, 61, 128], [196, 62, 127], [197, 64, 126], [198, 65, 125], [199, 66, 124], [200, 67, 123], [201, 68, 122], [202, 69, 122], [203, 70, 121], [204, 71, 120], [204, 73, 119], [205, 74, 118], [206, 75, 117], [207, 76, 116], [208, 77, 115], [209, 78, 114], [210, 79, 113], [211, 81, 113], [212, 82, 112], [213, 83, 111], [213, 84, 110], [214, 85, 109], [215, 86, 108], [216, 87, 107], [217, 88, 106], [218, 90, 106], [218, 91, 105], [219, 92, 104], [220, 93, 103], [221, 94, 102], [222, 95, 101], [222, 97, 100], [223, 98, 99], [224, 99, 99], [225, 100, 98], [226, 101, 97], [226, 102, 96], [227, 104, 95], [228, 105, 94], [229, 106, 93], [229, 107, 93], [230, 108, 92], [231, 110, 91], [231, 111, 90], [232, 112, 89], [233, 113, 88], [233, 114, 87], [234, 116, 87], [235, 117, 86], [235, 118, 85], [236, 119, 84], [237, 121, 83], [237, 122, 82], [238, 123, 81], [239, 124, 81], [239, 126, 80], [240, 127, 79], [240, 128, 78], [241, 129, 77], [241, 131, 76], [242, 132, 75], [243, 133, 75], [243, 135, 74], [244, 136, 73], [244, 137, 72], [245, 139, 71], [245, 140, 70], [246, 141, 69], [246, 143, 68], [247, 144, 68], [247, 145, 67], [247, 147, 66], [248, 148, 65], [248, 149, 64], [249, 151, 63], [249, 152, 62], [249, 154, 62], [250, 155, 61], [250, 156, 60], [250, 158, 59], [251, 159, 58], [251, 161, 57], [251, 162, 56], [252, 163, 56], [252, 165, 55], [252, 166, 54], [252, 168, 53], [252, 169, 52], [253, 171, 51], [253, 172, 51], [253, 174, 50], [253, 175, 49], [253, 177, 48], [253, 178, 47], [253, 180, 47], [253, 181, 46], [254, 183, 45], [254, 184, 44], [254, 186, 44], [254, 187, 43], [254, 189, 42], [254, 190, 42], [254, 192, 41], [253, 194, 41], [253, 195, 40], [253, 197, 39], [253, 198, 39], [253, 200, 39], [253, 202, 38], [253, 203, 38], [252, 205, 37], [252, 206, 37], [252, 208, 37], [252, 210, 37], [251, 211, 36], [251, 213, 36], [251, 215, 36], [250, 216, 36], [250, 218, 36], [249, 220, 36], [249, 221, 37], [248, 223, 37], [248, 225, 37], [247, 226, 37], [247, 228, 37], [246, 230, 38], [246, 232, 38], [245, 233, 38], [245, 235, 39], [244, 237, 39], [243, 238, 39], [243, 240, 39], [242, 242, 39], [241, 244, 38], [241, 245, 37], [240, 247, 36], [240, 249, 33]];
4462
- function rgbSpline(spline) {
4463
- return (colors) => {
4464
- const n2 = colors.length;
4465
- const r2 = new Array(n2);
4466
- const g2 = new Array(n2);
4467
- const b = new Array(n2);
4468
- let i2;
4469
- let color2;
4470
- for (i2 = 0; i2 < n2; ++i2) {
4471
- color2 = [colors[i2][0], colors[i2][1], colors[i2][2]];
4472
- r2[i2] = color2[0] || 0;
4473
- g2[i2] = color2[1] || 0;
4474
- b[i2] = color2[2] || 0;
4475
- }
4476
- const rFunc = spline(r2);
4477
- const gFunc = spline(g2);
4478
- const bFunc = spline(b);
4479
- return (t2) => [rFunc(t2), gFunc(t2), bFunc(t2)];
4480
- };
4481
- }
4482
- function basis(values2) {
4483
- function innerBasis(t1, v0, v12, v2, v32) {
4484
- const t2 = t1 * t1;
4485
- const t3 = t2 * t1;
4486
- return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v12 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v32) / 6;
4487
- }
4488
- const n2 = values2.length - 1;
4489
- return (t2) => {
4490
- const i2 = t2 <= 0 ? t2 = 0 : t2 >= 1 ? (t2 = 1, n2 - 1) : Math.floor(t2 * n2);
4491
- const v12 = values2[i2];
4492
- const v2 = values2[i2 + 1];
4493
- const v0 = i2 > 0 ? values2[i2 - 1] : 2 * v12 - v2;
4494
- const v32 = i2 < n2 - 1 ? values2[i2 + 2] : 2 * v2 - v12;
4495
- return innerBasis((t2 - i2 / n2) * n2, v0, v12, v2, v32);
4496
- };
4497
- }
4498
- const interpolateRgbBasis = rgbSpline(basis);
4499
- function interpolateSequentialMulti(range2) {
4500
- const n2 = range2.length;
4501
- return (t2) => range2[Math.max(0, Math.min(n2 - 1, Math.floor(t2 * n2)))];
4502
- }
4503
- interpolateRgbBasis(schemeRdBu);
4504
- interpolateSequentialMulti(schemePlasma);
4505
- function getCellColors(params) {
4506
- const { cellSets, cellSetSelection, cellSetColor, obsIndex, theme } = params;
4507
- if (cellSetSelection && cellSets) {
4508
- return treeToCellColorsBySetNames(cellSets, cellSetSelection, cellSetColor, theme);
4509
- }
4510
- if (obsIndex && theme) {
4511
- return new Map(obsIndex.map((o2) => [o2, getDefaultColor(theme)]));
4512
- }
4513
- return /* @__PURE__ */ new Map();
4514
- }
4515
4478
  var util$4;
4516
4479
  (function(util2) {
4517
4480
  util2.assertEqual = (val) => val;
@@ -5669,14 +5632,14 @@ class ZodString extends ZodType {
5669
5632
  return min;
5670
5633
  }
5671
5634
  get maxLength() {
5672
- let max = null;
5635
+ let max2 = null;
5673
5636
  for (const ch of this._def.checks) {
5674
5637
  if (ch.kind === "max") {
5675
- if (max === null || ch.value < max)
5676
- max = ch.value;
5638
+ if (max2 === null || ch.value < max2)
5639
+ max2 = ch.value;
5677
5640
  }
5678
5641
  }
5679
- return max;
5642
+ return max2;
5680
5643
  }
5681
5644
  }
5682
5645
  ZodString.create = (params) => {
@@ -5891,20 +5854,20 @@ class ZodNumber extends ZodType {
5891
5854
  return min;
5892
5855
  }
5893
5856
  get maxValue() {
5894
- let max = null;
5857
+ let max2 = null;
5895
5858
  for (const ch of this._def.checks) {
5896
5859
  if (ch.kind === "max") {
5897
- if (max === null || ch.value < max)
5898
- max = ch.value;
5860
+ if (max2 === null || ch.value < max2)
5861
+ max2 = ch.value;
5899
5862
  }
5900
5863
  }
5901
- return max;
5864
+ return max2;
5902
5865
  }
5903
5866
  get isInt() {
5904
5867
  return !!this._def.checks.find((ch) => ch.kind === "int" || ch.kind === "multipleOf" && util$4.isInteger(ch.value));
5905
5868
  }
5906
5869
  get isFinite() {
5907
- let max = null, min = null;
5870
+ let max2 = null, min = null;
5908
5871
  for (const ch of this._def.checks) {
5909
5872
  if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") {
5910
5873
  return true;
@@ -5912,11 +5875,11 @@ class ZodNumber extends ZodType {
5912
5875
  if (min === null || ch.value > min)
5913
5876
  min = ch.value;
5914
5877
  } else if (ch.kind === "max") {
5915
- if (max === null || ch.value < max)
5916
- max = ch.value;
5878
+ if (max2 === null || ch.value < max2)
5879
+ max2 = ch.value;
5917
5880
  }
5918
5881
  }
5919
- return Number.isFinite(min) && Number.isFinite(max);
5882
+ return Number.isFinite(min) && Number.isFinite(max2);
5920
5883
  }
5921
5884
  }
5922
5885
  ZodNumber.create = (params) => {
@@ -6074,14 +6037,14 @@ class ZodBigInt extends ZodType {
6074
6037
  return min;
6075
6038
  }
6076
6039
  get maxValue() {
6077
- let max = null;
6040
+ let max2 = null;
6078
6041
  for (const ch of this._def.checks) {
6079
6042
  if (ch.kind === "max") {
6080
- if (max === null || ch.value < max)
6081
- max = ch.value;
6043
+ if (max2 === null || ch.value < max2)
6044
+ max2 = ch.value;
6082
6045
  }
6083
6046
  }
6084
- return max;
6047
+ return max2;
6085
6048
  }
6086
6049
  }
6087
6050
  ZodBigInt.create = (params) => {
@@ -6209,14 +6172,14 @@ class ZodDate extends ZodType {
6209
6172
  return min != null ? new Date(min) : null;
6210
6173
  }
6211
6174
  get maxDate() {
6212
- let max = null;
6175
+ let max2 = null;
6213
6176
  for (const ch of this._def.checks) {
6214
6177
  if (ch.kind === "max") {
6215
- if (max === null || ch.value < max)
6216
- max = ch.value;
6178
+ if (max2 === null || ch.value < max2)
6179
+ max2 = ch.value;
6217
6180
  }
6218
6181
  }
6219
- return max != null ? new Date(max) : null;
6182
+ return max2 != null ? new Date(max2) : null;
6220
6183
  }
6221
6184
  }
6222
6185
  ZodDate.create = (params) => {
@@ -10575,7 +10538,7 @@ var toComparators_1 = toComparators$1;
10575
10538
  const SemVer$4 = semver;
10576
10539
  const Range$7 = requireRange();
10577
10540
  const maxSatisfying$1 = (versions, range2, options) => {
10578
- let max = null;
10541
+ let max2 = null;
10579
10542
  let maxSV = null;
10580
10543
  let rangeObj = null;
10581
10544
  try {
@@ -10585,13 +10548,13 @@ const maxSatisfying$1 = (versions, range2, options) => {
10585
10548
  }
10586
10549
  versions.forEach((v) => {
10587
10550
  if (rangeObj.test(v)) {
10588
- if (!max || maxSV.compare(v) === -1) {
10589
- max = v;
10590
- maxSV = new SemVer$4(max, options);
10551
+ if (!max2 || maxSV.compare(v) === -1) {
10552
+ max2 = v;
10553
+ maxSV = new SemVer$4(max2, options);
10591
10554
  }
10592
10555
  }
10593
10556
  });
10594
- return max;
10557
+ return max2;
10595
10558
  };
10596
10559
  var maxSatisfying_1 = maxSatisfying$1;
10597
10560
  const SemVer$3 = semver;
@@ -10776,17 +10739,17 @@ var simplify = (versions, range2, options) => {
10776
10739
  set3.push([first, null]);
10777
10740
  }
10778
10741
  const ranges2 = [];
10779
- for (const [min, max] of set3) {
10780
- if (min === max) {
10742
+ for (const [min, max2] of set3) {
10743
+ if (min === max2) {
10781
10744
  ranges2.push(min);
10782
- } else if (!max && min === v[0]) {
10745
+ } else if (!max2 && min === v[0]) {
10783
10746
  ranges2.push("*");
10784
- } else if (!max) {
10747
+ } else if (!max2) {
10785
10748
  ranges2.push(`>=${min}`);
10786
10749
  } else if (min === v[0]) {
10787
- ranges2.push(`<=${max}`);
10750
+ ranges2.push(`<=${max2}`);
10788
10751
  } else {
10789
- ranges2.push(`${min} - ${max}`);
10752
+ ranges2.push(`${min} - ${max2}`);
10790
10753
  }
10791
10754
  }
10792
10755
  const simplified = ranges2.join(" || ");
@@ -11080,7 +11043,9 @@ const FileType$1 = {
11080
11043
  OBS_SEGMENTATIONS_JSON: "obsSegmentations.json",
11081
11044
  OBS_SETS_CSV: "obsSets.csv",
11082
11045
  OBS_SETS_JSON: "obsSets.json",
11046
+ // OME-Zarr
11083
11047
  IMAGE_OME_ZARR: "image.ome-zarr",
11048
+ OBS_SEGMENTATIONS_OME_ZARR: "obsSegmentations.ome-zarr",
11084
11049
  // AnnData
11085
11050
  OBS_FEATURE_MATRIX_ANNDATA_ZARR: "obsFeatureMatrix.anndata.zarr",
11086
11051
  OBS_SETS_ANNDATA_ZARR: "obsSets.anndata.zarr",
@@ -11564,7 +11529,9 @@ const COMPONENT_COORDINATION_TYPES = {
11564
11529
  CoordinationType$1.SPATIAL_SEGMENTATION_FILLED,
11565
11530
  CoordinationType$1.SPATIAL_SEGMENTATION_STROKE_WIDTH,
11566
11531
  CoordinationType$1.IMAGE_CHANNEL,
11532
+ CoordinationType$1.IMAGE_LAYER,
11567
11533
  CoordinationType$1.SEGMENTATION_CHANNEL,
11534
+ CoordinationType$1.SEGMENTATION_LAYER,
11568
11535
  CoordinationType$1.SPATIAL_CHANNEL_VISIBLE,
11569
11536
  CoordinationType$1.SPATIAL_CHANNEL_OPACITY,
11570
11537
  CoordinationType$1.SPATIAL_CHANNEL_WINDOW,
@@ -11582,6 +11549,9 @@ const COMPONENT_COORDINATION_TYPES = {
11582
11549
  CoordinationType$1.SPATIAL_SPOT_STROKE_WIDTH,
11583
11550
  CoordinationType$1.SPATIAL_LAYER_COLOR,
11584
11551
  CoordinationType$1.OBS_COLOR_ENCODING,
11552
+ CoordinationType$1.FEATURE_VALUE_COLORMAP,
11553
+ CoordinationType$1.FEATURE_VALUE_COLORMAP_RANGE,
11554
+ CoordinationType$1.FEATURE_SELECTION,
11585
11555
  CoordinationType$1.TOOLTIPS_VISIBLE,
11586
11556
  CoordinationType$1.TOOLTIP_CROSSHAIRS_VISIBLE,
11587
11557
  CoordinationType$1.LEGEND_VISIBLE,
@@ -11898,30 +11868,39 @@ const omeCoordinateTransformations = z.array(z.union([
11898
11868
  scale: z.array(z.number())
11899
11869
  })
11900
11870
  ]));
11901
- z.object({
11871
+ const imageOmeTiffSchema = z.object({
11902
11872
  offsetsUrl: z.string().optional(),
11903
11873
  coordinateTransformations: omeCoordinateTransformations.optional()
11904
11874
  });
11875
+ imageOmeTiffSchema.extend({
11876
+ obsTypesFromChannelNames: z.boolean().optional()
11877
+ });
11905
11878
  const imageOmeZarrSchema = z.object({
11906
11879
  coordinateTransformations: omeCoordinateTransformations.optional()
11907
11880
  });
11908
11881
  imageOmeZarrSchema.extend({
11882
+ obsTypesFromChannelNames: z.boolean().optional()
11883
+ });
11884
+ const imageSpatialdataSchema = imageOmeZarrSchema.extend({
11909
11885
  path: z.string()
11910
11886
  });
11911
- z.object({
11887
+ const obsSegmentationsSpatialdataSchema = z.object({
11888
+ // TODO: should this also extend the imageOmeZarrSchema?
11889
+ // TODO: should this be renamed labelsSpatialdataSchema?
11890
+ // TODO: support obsTypesFromChannelNames?
11912
11891
  path: z.string()
11913
11892
  });
11914
11893
  z.object({
11915
11894
  path: z.string()
11916
11895
  });
11917
- z.object({
11896
+ const obsSpotsSpatialdataSchema = z.object({
11918
11897
  path: z.string(),
11919
11898
  tablePath: z.string().optional().describe("The path to a table which annotates the spots. If available but not specified, the spot identifiers may not be aligned with associated tabular data as expected.")
11920
11899
  });
11921
- annDataObsFeatureMatrix.extend({
11900
+ const obsFeatureMatrixSpatialdataSchema = annDataObsFeatureMatrix.extend({
11922
11901
  region: z.string().describe("The name of a region to use to filter instances (i.e., rows) in the table").optional()
11923
11902
  });
11924
- z.object({
11903
+ const obsSetsSpatialdataSchema = z.object({
11925
11904
  region: z.string().describe("The name of a region to use to filter instances (i.e., rows) in the table").optional(),
11926
11905
  tablePath: z.string().optional().describe("The path to a table which contains the index for the set values."),
11927
11906
  obsSets: annDataObsSets
@@ -11984,6 +11963,19 @@ z.object({
11984
11963
  z.array(annDataConvenienceObsEmbeddingItem)
11985
11964
  ])
11986
11965
  }).partial();
11966
+ z.object({
11967
+ // TODO: should `image` be a special schema
11968
+ // to allow specifying fileUid (like for embeddingType)?
11969
+ image: imageSpatialdataSchema,
11970
+ // TODO: should this be a special schema
11971
+ // to allow specifying fileUid (like for embeddingType)?
11972
+ labels: obsSegmentationsSpatialdataSchema,
11973
+ obsFeatureMatrix: obsFeatureMatrixSpatialdataSchema,
11974
+ obsSpots: obsSpotsSpatialdataSchema,
11975
+ // TODO: obsPoints
11976
+ // TODO: obsLocations
11977
+ obsSets: obsSetsSpatialdataSchema
11978
+ }).partial();
11987
11979
  z.object({
11988
11980
  obsLabelsTypes: z.array(z.string()).optional(),
11989
11981
  embeddingTypes: z.array(z.string()).optional()
@@ -12357,14 +12349,14 @@ var tinycolor = { exports: {} };
12357
12349
  r2 = bound01(r2, 255);
12358
12350
  g2 = bound01(g2, 255);
12359
12351
  b = bound01(b, 255);
12360
- var max = mathMax(r2, g2, b), min = mathMin(r2, g2, b);
12361
- var h, s2, l2 = (max + min) / 2;
12362
- if (max == min) {
12352
+ var max2 = mathMax(r2, g2, b), min = mathMin(r2, g2, b);
12353
+ var h, s2, l2 = (max2 + min) / 2;
12354
+ if (max2 == min) {
12363
12355
  h = s2 = 0;
12364
12356
  } else {
12365
- var d = max - min;
12366
- s2 = l2 > 0.5 ? d / (2 - max - min) : d / (max + min);
12367
- switch (max) {
12357
+ var d = max2 - min;
12358
+ s2 = l2 > 0.5 ? d / (2 - max2 - min) : d / (max2 + min);
12359
+ switch (max2) {
12368
12360
  case r2:
12369
12361
  h = (g2 - b) / d + (g2 < b ? 6 : 0);
12370
12362
  break;
@@ -12412,14 +12404,14 @@ var tinycolor = { exports: {} };
12412
12404
  r2 = bound01(r2, 255);
12413
12405
  g2 = bound01(g2, 255);
12414
12406
  b = bound01(b, 255);
12415
- var max = mathMax(r2, g2, b), min = mathMin(r2, g2, b);
12416
- var h, s2, v = max;
12417
- var d = max - min;
12418
- s2 = max === 0 ? 0 : d / max;
12419
- if (max == min) {
12407
+ var max2 = mathMax(r2, g2, b), min = mathMin(r2, g2, b);
12408
+ var h, s2, v = max2;
12409
+ var d = max2 - min;
12410
+ s2 = max2 === 0 ? 0 : d / max2;
12411
+ if (max2 == min) {
12420
12412
  h = 0;
12421
12413
  } else {
12422
- switch (max) {
12414
+ switch (max2) {
12423
12415
  case r2:
12424
12416
  h = (g2 - b) / d + (g2 < b ? 6 : 0);
12425
12417
  break;
@@ -12816,19 +12808,19 @@ var tinycolor = { exports: {} };
12816
12808
  }
12817
12809
  return a2;
12818
12810
  }
12819
- function bound01(n2, max) {
12811
+ function bound01(n2, max2) {
12820
12812
  if (isOnePointZero(n2)) {
12821
12813
  n2 = "100%";
12822
12814
  }
12823
12815
  var processPercent = isPercentage(n2);
12824
- n2 = mathMin(max, mathMax(0, parseFloat(n2)));
12816
+ n2 = mathMin(max2, mathMax(0, parseFloat(n2)));
12825
12817
  if (processPercent) {
12826
- n2 = parseInt(n2 * max, 10) / 100;
12818
+ n2 = parseInt(n2 * max2, 10) / 100;
12827
12819
  }
12828
- if (Math2.abs(n2 - max) < 1e-6) {
12820
+ if (Math2.abs(n2 - max2) < 1e-6) {
12829
12821
  return 1;
12830
12822
  }
12831
- return n2 % max / parseFloat(max);
12823
+ return n2 % max2 / parseFloat(max2);
12832
12824
  }
12833
12825
  function clamp01(val) {
12834
12826
  return mathMin(1, mathMax(0, val));
@@ -14044,10 +14036,10 @@ var json2csv_umd = { exports: {} };
14044
14036
  };
14045
14037
  Buffer3.prototype.inspect = function inspect2() {
14046
14038
  var str = "";
14047
- var max = INSPECT_MAX_BYTES;
14039
+ var max2 = INSPECT_MAX_BYTES;
14048
14040
  if (this.length > 0) {
14049
- str = this.toString("hex", 0, max).match(/.{2}/g).join(" ");
14050
- if (this.length > max)
14041
+ str = this.toString("hex", 0, max2).match(/.{2}/g).join(" ");
14042
+ if (this.length > max2)
14051
14043
  str += " ... ";
14052
14044
  }
14053
14045
  return "<Buffer " + str + ">";
@@ -14613,10 +14605,10 @@ var json2csv_umd = { exports: {} };
14613
14605
  checkOffset(offset5, 8, this.length);
14614
14606
  return read(this, offset5, false, 52, 8);
14615
14607
  };
14616
- function checkInt(buf, value, offset5, ext, max, min) {
14608
+ function checkInt(buf, value, offset5, ext, max2, min) {
14617
14609
  if (!internalIsBuffer(buf))
14618
14610
  throw new TypeError('"buffer" argument must be a Buffer instance');
14619
- if (value > max || value < min)
14611
+ if (value > max2 || value < min)
14620
14612
  throw new RangeError('"value" argument is out of bounds');
14621
14613
  if (offset5 + ext > buf.length)
14622
14614
  throw new RangeError("Index out of range");
@@ -14841,7 +14833,7 @@ var json2csv_umd = { exports: {} };
14841
14833
  }
14842
14834
  return offset5 + 4;
14843
14835
  };
14844
- function checkIEEE754(buf, value, offset5, ext, max, min) {
14836
+ function checkIEEE754(buf, value, offset5, ext, max2, min) {
14845
14837
  if (offset5 + ext > buf.length)
14846
14838
  throw new RangeError("Index out of range");
14847
14839
  if (offset5 < 0)
@@ -18640,6 +18632,67 @@ var json2csv_umd = { exports: {} };
18640
18632
  Object.defineProperty(exports3, "__esModule", { value: true });
18641
18633
  });
18642
18634
  })(json2csv_umd, json2csv_umd.exports);
18635
+ const schemeRdBu = [[103, 0, 31], [178, 24, 43], [214, 96, 77], [244, 165, 130], [253, 219, 199], [247, 247, 247], [209, 229, 240], [146, 197, 222], [67, 147, 195], [33, 102, 172], [5, 48, 97]];
18636
+ const schemePlasma = [[13, 8, 135], [16, 7, 136], [19, 7, 137], [22, 7, 138], [25, 6, 140], [27, 6, 141], [29, 6, 142], [32, 6, 143], [34, 6, 144], [36, 6, 145], [38, 5, 145], [40, 5, 146], [42, 5, 147], [44, 5, 148], [46, 5, 149], [47, 5, 150], [49, 5, 151], [51, 5, 151], [53, 4, 152], [55, 4, 153], [56, 4, 154], [58, 4, 154], [60, 4, 155], [62, 4, 156], [63, 4, 156], [65, 4, 157], [67, 3, 158], [68, 3, 158], [70, 3, 159], [72, 3, 159], [73, 3, 160], [75, 3, 161], [76, 2, 161], [78, 2, 162], [80, 2, 162], [81, 2, 163], [83, 2, 163], [85, 2, 164], [86, 1, 164], [88, 1, 164], [89, 1, 165], [91, 1, 165], [92, 1, 166], [94, 1, 166], [96, 1, 166], [97, 0, 167], [99, 0, 167], [100, 0, 167], [102, 0, 167], [103, 0, 168], [105, 0, 168], [106, 0, 168], [108, 0, 168], [110, 0, 168], [111, 0, 168], [113, 0, 168], [114, 1, 168], [116, 1, 168], [117, 1, 168], [119, 1, 168], [120, 1, 168], [122, 2, 168], [123, 2, 168], [125, 3, 168], [126, 3, 168], [128, 4, 168], [129, 4, 167], [131, 5, 167], [132, 5, 167], [134, 6, 166], [135, 7, 166], [136, 8, 166], [138, 9, 165], [139, 10, 165], [141, 11, 165], [142, 12, 164], [143, 13, 164], [145, 14, 163], [146, 15, 163], [148, 16, 162], [149, 17, 161], [150, 19, 161], [152, 20, 160], [153, 21, 159], [154, 22, 159], [156, 23, 158], [157, 24, 157], [158, 25, 157], [160, 26, 156], [161, 27, 155], [162, 29, 154], [163, 30, 154], [165, 31, 153], [166, 32, 152], [167, 33, 151], [168, 34, 150], [170, 35, 149], [171, 36, 148], [172, 38, 148], [173, 39, 147], [174, 40, 146], [176, 41, 145], [177, 42, 144], [178, 43, 143], [179, 44, 142], [180, 46, 141], [181, 47, 140], [182, 48, 139], [183, 49, 138], [184, 50, 137], [186, 51, 136], [187, 52, 136], [188, 53, 135], [189, 55, 134], [190, 56, 133], [191, 57, 132], [192, 58, 131], [193, 59, 130], [194, 60, 129], [195, 61, 128], [196, 62, 127], [197, 64, 126], [198, 65, 125], [199, 66, 124], [200, 67, 123], [201, 68, 122], [202, 69, 122], [203, 70, 121], [204, 71, 120], [204, 73, 119], [205, 74, 118], [206, 75, 117], [207, 76, 116], [208, 77, 115], [209, 78, 114], [210, 79, 113], [211, 81, 113], [212, 82, 112], [213, 83, 111], [213, 84, 110], [214, 85, 109], [215, 86, 108], [216, 87, 107], [217, 88, 106], [218, 90, 106], [218, 91, 105], [219, 92, 104], [220, 93, 103], [221, 94, 102], [222, 95, 101], [222, 97, 100], [223, 98, 99], [224, 99, 99], [225, 100, 98], [226, 101, 97], [226, 102, 96], [227, 104, 95], [228, 105, 94], [229, 106, 93], [229, 107, 93], [230, 108, 92], [231, 110, 91], [231, 111, 90], [232, 112, 89], [233, 113, 88], [233, 114, 87], [234, 116, 87], [235, 117, 86], [235, 118, 85], [236, 119, 84], [237, 121, 83], [237, 122, 82], [238, 123, 81], [239, 124, 81], [239, 126, 80], [240, 127, 79], [240, 128, 78], [241, 129, 77], [241, 131, 76], [242, 132, 75], [243, 133, 75], [243, 135, 74], [244, 136, 73], [244, 137, 72], [245, 139, 71], [245, 140, 70], [246, 141, 69], [246, 143, 68], [247, 144, 68], [247, 145, 67], [247, 147, 66], [248, 148, 65], [248, 149, 64], [249, 151, 63], [249, 152, 62], [249, 154, 62], [250, 155, 61], [250, 156, 60], [250, 158, 59], [251, 159, 58], [251, 161, 57], [251, 162, 56], [252, 163, 56], [252, 165, 55], [252, 166, 54], [252, 168, 53], [252, 169, 52], [253, 171, 51], [253, 172, 51], [253, 174, 50], [253, 175, 49], [253, 177, 48], [253, 178, 47], [253, 180, 47], [253, 181, 46], [254, 183, 45], [254, 184, 44], [254, 186, 44], [254, 187, 43], [254, 189, 42], [254, 190, 42], [254, 192, 41], [253, 194, 41], [253, 195, 40], [253, 197, 39], [253, 198, 39], [253, 200, 39], [253, 202, 38], [253, 203, 38], [252, 205, 37], [252, 206, 37], [252, 208, 37], [252, 210, 37], [251, 211, 36], [251, 213, 36], [251, 215, 36], [250, 216, 36], [250, 218, 36], [249, 220, 36], [249, 221, 37], [248, 223, 37], [248, 225, 37], [247, 226, 37], [247, 228, 37], [246, 230, 38], [246, 232, 38], [245, 233, 38], [245, 235, 39], [244, 237, 39], [243, 238, 39], [243, 240, 39], [242, 242, 39], [241, 244, 38], [241, 245, 37], [240, 247, 36], [240, 249, 33]];
18637
+ function rgbSpline(spline) {
18638
+ return (colors) => {
18639
+ const n2 = colors.length;
18640
+ const r2 = new Array(n2);
18641
+ const g2 = new Array(n2);
18642
+ const b = new Array(n2);
18643
+ let i2;
18644
+ let color2;
18645
+ for (i2 = 0; i2 < n2; ++i2) {
18646
+ color2 = [colors[i2][0], colors[i2][1], colors[i2][2]];
18647
+ r2[i2] = color2[0] || 0;
18648
+ g2[i2] = color2[1] || 0;
18649
+ b[i2] = color2[2] || 0;
18650
+ }
18651
+ const rFunc = spline(r2);
18652
+ const gFunc = spline(g2);
18653
+ const bFunc = spline(b);
18654
+ return (t2) => [rFunc(t2), gFunc(t2), bFunc(t2)];
18655
+ };
18656
+ }
18657
+ function basis(values2) {
18658
+ function innerBasis(t1, v0, v12, v2, v32) {
18659
+ const t2 = t1 * t1;
18660
+ const t3 = t2 * t1;
18661
+ return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v12 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v32) / 6;
18662
+ }
18663
+ const n2 = values2.length - 1;
18664
+ return (t2) => {
18665
+ const i2 = t2 <= 0 ? t2 = 0 : t2 >= 1 ? (t2 = 1, n2 - 1) : Math.floor(t2 * n2);
18666
+ const v12 = values2[i2];
18667
+ const v2 = values2[i2 + 1];
18668
+ const v0 = i2 > 0 ? values2[i2 - 1] : 2 * v12 - v2;
18669
+ const v32 = i2 < n2 - 1 ? values2[i2 + 2] : 2 * v2 - v12;
18670
+ return innerBasis((t2 - i2 / n2) * n2, v0, v12, v2, v32);
18671
+ };
18672
+ }
18673
+ const interpolateRgbBasis = rgbSpline(basis);
18674
+ function interpolateSequentialMulti(range2) {
18675
+ const n2 = range2.length;
18676
+ return (t2) => range2[Math.max(0, Math.min(n2 - 1, Math.floor(t2 * n2)))];
18677
+ }
18678
+ interpolateRgbBasis(schemeRdBu);
18679
+ interpolateSequentialMulti(schemePlasma);
18680
+ function getCellColors(params) {
18681
+ const { cellSets, cellSetSelection, cellSetColor, obsIndex, theme } = params;
18682
+ if (cellSetSelection && cellSets) {
18683
+ return treeToCellColorsBySetNames(
18684
+ cellSets,
18685
+ cellSetSelection,
18686
+ cellSetColor,
18687
+ theme
18688
+ /* as string */
18689
+ );
18690
+ }
18691
+ if (obsIndex && theme) {
18692
+ return new Map(obsIndex.map((o2) => [o2, getDefaultColor(theme)]));
18693
+ }
18694
+ return /* @__PURE__ */ new Map();
18695
+ }
18643
18696
  function tree_add(d) {
18644
18697
  var x2 = +this._x.call(null, d), y2 = +this._y.call(null, d);
18645
18698
  return add$6(this.cover(x2, y2), x2, y2, d);
@@ -30017,8 +30070,8 @@ function acos$1(radians2, result) {
30017
30070
  function atan$1(radians2, result) {
30018
30071
  return map$1(radians2, (angle2) => Math.atan(angle2), result);
30019
30072
  }
30020
- function clamp$3(value, min, max) {
30021
- return map$1(value, (value2) => Math.max(min, Math.min(max, value2)));
30073
+ function clamp$3(value, min, max2) {
30074
+ return map$1(value, (value2) => Math.max(min, Math.min(max2, value2)));
30022
30075
  }
30023
30076
  function lerp$5(a2, b, t2) {
30024
30077
  if (isArray$1(a2)) {
@@ -30305,9 +30358,9 @@ class MathArray extends _extendableBuiltin(Array) {
30305
30358
  divideScalar(a2) {
30306
30359
  return this.multiplyByScalar(1 / a2);
30307
30360
  }
30308
- clampScalar(min, max) {
30361
+ clampScalar(min, max2) {
30309
30362
  for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
30310
- this[i2] = Math.min(Math.max(this[i2], min), max);
30363
+ this[i2] = Math.min(Math.max(this[i2], min), max2);
30311
30364
  }
30312
30365
  return this.check();
30313
30366
  }
@@ -36440,8 +36493,8 @@ function mod$1(value, divisor) {
36440
36493
  function lerp(start, end, step) {
36441
36494
  return step * end + (1 - step) * start;
36442
36495
  }
36443
- function clamp$2(x2, min, max) {
36444
- return x2 < min ? min : x2 > max ? max : x2;
36496
+ function clamp$2(x2, min, max2) {
36497
+ return x2 < min ? min : x2 > max2 ? max2 : x2;
36445
36498
  }
36446
36499
  function ieLog2(x2) {
36447
36500
  return Math.log(x2) * Math.LOG2E;
@@ -46162,17 +46215,17 @@ class DataColumn {
46162
46215
  const len2 = numInstances * size;
46163
46216
  if (value && len2 && value.length >= len2) {
46164
46217
  const min = new Array(size).fill(Infinity);
46165
- const max = new Array(size).fill(-Infinity);
46218
+ const max2 = new Array(size).fill(-Infinity);
46166
46219
  for (let i2 = 0; i2 < len2; ) {
46167
46220
  for (let j = 0; j < size; j++) {
46168
46221
  const v = value[i2++];
46169
46222
  if (v < min[j])
46170
46223
  min[j] = v;
46171
- if (v > max[j])
46172
- max[j] = v;
46224
+ if (v > max2[j])
46225
+ max2[j] = v;
46173
46226
  }
46174
46227
  }
46175
- result = [min, max];
46228
+ result = [min, max2];
46176
46229
  }
46177
46230
  }
46178
46231
  this.state.bounds = result;
@@ -72253,10 +72306,10 @@ class GroupNode extends ScenegraphNode {
72253
72306
  if (!bounds2) {
72254
72307
  return;
72255
72308
  }
72256
- const [min, max] = bounds2;
72257
- const center2 = new Vector3(min).add(max).divide([2, 2, 2]);
72309
+ const [min, max2] = bounds2;
72310
+ const center2 = new Vector3(min).add(max2).divide([2, 2, 2]);
72258
72311
  worldMatrix.transformAsPoint(center2, center2);
72259
- const halfSize = new Vector3(max).subtract(min).divide([2, 2, 2]);
72312
+ const halfSize = new Vector3(max2).subtract(min).divide([2, 2, 2]);
72260
72313
  worldMatrix.transformAsVector(halfSize, halfSize);
72261
72314
  for (let v = 0; v < 8; v++) {
72262
72315
  const position = new Vector3(v & 1 ? -1 : 1, v & 2 ? -1 : 1, v & 4 ? -1 : 1).multiply(halfSize).add(center2);
@@ -81205,7 +81258,7 @@ class Tile {
81205
81258
  const { errors } = this;
81206
81259
  let numVertices = 0;
81207
81260
  let numTriangles = 0;
81208
- const max = size - 1;
81261
+ const max2 = size - 1;
81209
81262
  indices.fill(0);
81210
81263
  function countElements(ax, ay, bx, by, cx, cy) {
81211
81264
  const mx = ax + bx >> 1;
@@ -81220,8 +81273,8 @@ class Tile {
81220
81273
  numTriangles++;
81221
81274
  }
81222
81275
  }
81223
- countElements(0, 0, max, max, max, 0);
81224
- countElements(max, max, 0, 0, 0, max);
81276
+ countElements(0, 0, max2, max2, max2, 0);
81277
+ countElements(max2, max2, 0, 0, 0, max2);
81225
81278
  const vertices = new Uint16Array(numVertices * 2);
81226
81279
  const triangles = new Uint32Array(numTriangles * 3);
81227
81280
  let triIndex = 0;
@@ -81246,8 +81299,8 @@ class Tile {
81246
81299
  triangles[triIndex++] = c2;
81247
81300
  }
81248
81301
  }
81249
- processTriangle(0, 0, max, max, max, 0);
81250
- processTriangle(max, max, 0, 0, 0, max);
81302
+ processTriangle(0, 0, max2, max2, max2, 0);
81303
+ processTriangle(max2, max2, 0, 0, 0, max2);
81251
81304
  return { vertices, triangles };
81252
81305
  }
81253
81306
  }
@@ -121261,16 +121314,16 @@ function addDecoder(cases, importFn) {
121261
121314
  }
121262
121315
  cases.forEach((c2) => registry$1.set(c2, importFn));
121263
121316
  }
121264
- addDecoder([void 0, 1], () => import("./raw-2f6386b1.js").then((m2) => m2.default));
121265
- addDecoder(5, () => import("./lzw-feb8dc70.js").then((m2) => m2.default));
121317
+ addDecoder([void 0, 1], () => import("./raw-e09dceaf.js").then((m2) => m2.default));
121318
+ addDecoder(5, () => import("./lzw-5ee876a5.js").then((m2) => m2.default));
121266
121319
  addDecoder(6, () => {
121267
121320
  throw new Error("old style JPEG compression is not supported.");
121268
121321
  });
121269
- addDecoder(7, () => import("./jpeg-59b4a15e.js").then((m2) => m2.default));
121270
- addDecoder([8, 32946], () => import("./deflate-99ed3e4b.js").then((m2) => m2.default));
121271
- addDecoder(32773, () => import("./packbits-c190d867.js").then((m2) => m2.default));
121272
- addDecoder(34887, () => import("./lerc-ce83e5c1.js").then((m2) => m2.default));
121273
- addDecoder(50001, () => import("./webimage-0ef01b51.js").then((m2) => m2.default));
121322
+ addDecoder(7, () => import("./jpeg-bf9fd2bf.js").then((m2) => m2.default));
121323
+ addDecoder([8, 32946], () => import("./deflate-143b7b76.js").then((m2) => m2.default));
121324
+ addDecoder(32773, () => import("./packbits-11e46ecd.js").then((m2) => m2.default));
121325
+ addDecoder(34887, () => import("./lerc-fd829a7c.js").then((m2) => m2.default));
121326
+ addDecoder(50001, () => import("./webimage-9fafb50a.js").then((m2) => m2.default));
121274
121327
  function decodeRowAcc(row, stride) {
121275
121328
  let length2 = row.length - stride;
121276
121329
  let offset5 = 0;
@@ -124819,9 +124872,9 @@ const buf2binstring = (buf, len2) => {
124819
124872
  }
124820
124873
  return result;
124821
124874
  };
124822
- var buf2string = (buf, max) => {
124875
+ var buf2string = (buf, max2) => {
124823
124876
  let i2, out;
124824
- const len2 = max || buf.length;
124877
+ const len2 = max2 || buf.length;
124825
124878
  const utf16buf = new Array(len2 * 2);
124826
124879
  for (out = 0, i2 = 0; i2 < len2; ) {
124827
124880
  let c2 = buf[i2++];
@@ -124854,22 +124907,22 @@ var buf2string = (buf, max) => {
124854
124907
  }
124855
124908
  return buf2binstring(utf16buf, out);
124856
124909
  };
124857
- var utf8border = (buf, max) => {
124858
- max = max || buf.length;
124859
- if (max > buf.length) {
124860
- max = buf.length;
124910
+ var utf8border = (buf, max2) => {
124911
+ max2 = max2 || buf.length;
124912
+ if (max2 > buf.length) {
124913
+ max2 = buf.length;
124861
124914
  }
124862
- let pos = max - 1;
124915
+ let pos = max2 - 1;
124863
124916
  while (pos >= 0 && (buf[pos] & 192) === 128) {
124864
124917
  pos--;
124865
124918
  }
124866
124919
  if (pos < 0) {
124867
- return max;
124920
+ return max2;
124868
124921
  }
124869
124922
  if (pos === 0) {
124870
- return max;
124923
+ return max2;
124871
124924
  }
124872
- return pos + _utf8len[buf[pos]] > max ? pos : max;
124925
+ return pos + _utf8len[buf[pos]] > max2 ? pos : max2;
124873
124926
  };
124874
124927
  var strings = {
124875
124928
  string2buf,
@@ -125419,7 +125472,7 @@ const inflate_table = (type, lens2, lens_index, codes, table, table_index, work,
125419
125472
  const bits = opts2.bits;
125420
125473
  let len2 = 0;
125421
125474
  let sym = 0;
125422
- let min = 0, max = 0;
125475
+ let min = 0, max2 = 0;
125423
125476
  let root2 = 0;
125424
125477
  let curr = 0;
125425
125478
  let drop = 0;
@@ -125446,21 +125499,21 @@ const inflate_table = (type, lens2, lens_index, codes, table, table_index, work,
125446
125499
  count2[lens2[lens_index + sym]]++;
125447
125500
  }
125448
125501
  root2 = bits;
125449
- for (max = MAXBITS; max >= 1; max--) {
125450
- if (count2[max] !== 0) {
125502
+ for (max2 = MAXBITS; max2 >= 1; max2--) {
125503
+ if (count2[max2] !== 0) {
125451
125504
  break;
125452
125505
  }
125453
125506
  }
125454
- if (root2 > max) {
125455
- root2 = max;
125507
+ if (root2 > max2) {
125508
+ root2 = max2;
125456
125509
  }
125457
- if (max === 0) {
125510
+ if (max2 === 0) {
125458
125511
  table[table_index++] = 1 << 24 | 64 << 16 | 0;
125459
125512
  table[table_index++] = 1 << 24 | 64 << 16 | 0;
125460
125513
  opts2.bits = 1;
125461
125514
  return 0;
125462
125515
  }
125463
- for (min = 1; min < max; min++) {
125516
+ for (min = 1; min < max2; min++) {
125464
125517
  if (count2[min] !== 0) {
125465
125518
  break;
125466
125519
  }
@@ -125476,7 +125529,7 @@ const inflate_table = (type, lens2, lens_index, codes, table, table_index, work,
125476
125529
  return -1;
125477
125530
  }
125478
125531
  }
125479
- if (left2 > 0 && (type === CODES || max !== 1)) {
125532
+ if (left2 > 0 && (type === CODES || max2 !== 1)) {
125480
125533
  return -1;
125481
125534
  }
125482
125535
  offs[1] = 0;
@@ -125545,7 +125598,7 @@ const inflate_table = (type, lens2, lens_index, codes, table, table_index, work,
125545
125598
  }
125546
125599
  sym++;
125547
125600
  if (--count2[len2] === 0) {
125548
- if (len2 === max) {
125601
+ if (len2 === max2) {
125549
125602
  break;
125550
125603
  }
125551
125604
  len2 = lens2[lens_index + work[sym]];
@@ -125557,7 +125610,7 @@ const inflate_table = (type, lens2, lens_index, codes, table, table_index, work,
125557
125610
  next += min;
125558
125611
  curr = len2 - drop;
125559
125612
  left2 = 1 << curr;
125560
- while (curr + drop < max) {
125613
+ while (curr + drop < max2) {
125561
125614
  left2 -= count2[curr + drop];
125562
125615
  if (left2 <= 0) {
125563
125616
  break;
@@ -132291,21 +132344,21 @@ void main() {
132291
132344
  }
132292
132345
  `;
132293
132346
  function normalize$1(arr) {
132294
- const [min, max] = extent$1(arr);
132295
- const ratio = 255 / (max - min);
132347
+ const [min, max2] = extent$1(arr);
132348
+ const ratio = 255 / (max2 - min);
132296
132349
  const data = new Uint8Array(arr.map((i2) => Math.floor((i2 - min) * ratio)));
132297
132350
  return data;
132298
132351
  }
132299
- function multiSetsToTextureData(multiFeatureValues, setColorValues, channelIsSetColorMode, texSize) {
132352
+ function multiSetsToTextureData(multiFeatureValues, multiMatrixObsIndex, setColorValues, channelIsSetColorMode, texSize) {
132300
132353
  let totalValuesLength = 0;
132301
132354
  let totalColorsLength = 0;
132302
132355
  channelIsSetColorMode.forEach((isSetColorMode, channelIndex) => {
132303
- var _a2, _b, _c, _d, _e;
132356
+ var _a2, _b, _c, _d;
132304
132357
  if (isSetColorMode) {
132305
- totalValuesLength += ((_b = (_a2 = setColorValues[channelIndex]) == null ? void 0 : _a2.obsIndex) == null ? void 0 : _b.length) || 0;
132306
- totalColorsLength += (((_d = (_c = setColorValues[channelIndex]) == null ? void 0 : _c.setColors) == null ? void 0 : _d.length) || 0) * 3;
132358
+ totalColorsLength += (((_b = (_a2 = setColorValues[channelIndex]) == null ? void 0 : _a2.setColors) == null ? void 0 : _b.length) || 0) * 3;
132359
+ totalValuesLength += ((_c = setColorValues[channelIndex]) == null ? void 0 : _c.obsIndex) ? max(setColorValues[channelIndex].obsIndex.map((d) => parseInt(d))) : 0;
132307
132360
  } else {
132308
- totalValuesLength += ((_e = multiFeatureValues[channelIndex]) == null ? void 0 : _e.length) || 0;
132361
+ totalValuesLength += multiMatrixObsIndex[channelIndex] ? max(multiMatrixObsIndex[channelIndex].map((d) => parseInt(d))) : ((_d = multiFeatureValues[channelIndex]) == null ? void 0 : _d.length) || 0;
132309
132362
  }
132310
132363
  });
132311
132364
  const valueTexHeight = Math.max(2, Math.ceil(totalValuesLength / texSize));
@@ -132323,12 +132376,20 @@ function multiSetsToTextureData(multiFeatureValues, setColorValues, channelIsSet
132323
132376
  let indexOffset = 0;
132324
132377
  let colorOffset = 0;
132325
132378
  channelIsSetColorMode.forEach((isSetColorMode, channelIndex) => {
132379
+ const matrixObsIndex = multiMatrixObsIndex[channelIndex];
132380
+ const bitmaskValueIsIndex = matrixObsIndex === null;
132326
132381
  if (isSetColorMode) {
132327
132382
  const { setColorIndices, setColors, obsIndex } = setColorValues[channelIndex] || {};
132328
132383
  if (setColorIndices && setColors && obsIndex) {
132329
132384
  for (let i2 = 0; i2 < obsIndex.length; i2++) {
132330
- const colorIndex = setColorIndices.get(String(i2 + 1));
132331
- totalData[indexOffset + i2] = colorIndex === void 0 ? 0 : colorIndex + 1;
132385
+ let obsId = String(i2 + 1);
132386
+ let obsI = i2;
132387
+ if (!bitmaskValueIsIndex) {
132388
+ obsId = obsIndex[i2];
132389
+ obsI = parseInt(obsId) - 1;
132390
+ }
132391
+ const colorIndex = setColorIndices.get(obsId);
132392
+ totalData[indexOffset + obsI] = colorIndex === void 0 ? 0 : colorIndex + 1;
132332
132393
  }
132333
132394
  for (let i2 = 0; i2 < setColors.length; i2++) {
132334
132395
  const { color: [r2, g2, b] } = setColors[i2];
@@ -132343,7 +132404,16 @@ function multiSetsToTextureData(multiFeatureValues, setColorValues, channelIsSet
132343
132404
  colorOffset += (setColors == null ? void 0 : setColors.length) || 0;
132344
132405
  } else {
132345
132406
  const featureArr = multiFeatureValues[channelIndex];
132346
- totalData.set(normalize$1(featureArr), indexOffset);
132407
+ const normalizedFeatureArr = normalize$1(featureArr);
132408
+ if (!bitmaskValueIsIndex && matrixObsIndex) {
132409
+ for (let i2 = 0; i2 < matrixObsIndex.length; i2++) {
132410
+ const obsId = matrixObsIndex[i2];
132411
+ const obsI = parseInt(obsId) - 1;
132412
+ totalData[indexOffset + obsI] = normalizedFeatureArr[i2];
132413
+ }
132414
+ } else {
132415
+ totalData.set(normalizedFeatureArr, indexOffset);
132416
+ }
132347
132417
  indicesOffsets.push(indexOffset);
132348
132418
  indexOffset += featureArr.length;
132349
132419
  colorsOffsets.push(colorOffset);
@@ -132370,6 +132440,17 @@ function padWithDefault(arr, defaultValue2, padWidth) {
132370
132440
  function getColor(arr) {
132371
132441
  return arr ? arr.map((v) => v / 255) : [0, 0, 0];
132372
132442
  }
132443
+ function isEqualShallow(prevArr, nextArr) {
132444
+ if (prevArr === nextArr) {
132445
+ return true;
132446
+ }
132447
+ if (Array.isArray(prevArr) && Array.isArray(nextArr)) {
132448
+ if (prevArr.length === nextArr.length) {
132449
+ return !prevArr.some((v, i2) => v !== nextArr[i2] && (!Array.isArray(v) && !Array.isArray(nextArr[i2]) || (v.length > 0 || nextArr[i2].length > 0)));
132450
+ }
132451
+ }
132452
+ return prevArr === nextArr;
132453
+ }
132373
132454
  const defaultProps$1 = {
132374
132455
  channelStrokeWidths: { type: "array", value: null, compare: true },
132375
132456
  channelsFilled: { type: "array", value: null, compare: true },
@@ -132379,6 +132460,7 @@ const defaultProps$1 = {
132379
132460
  colormap: { type: "string", value: GLSL_COLORMAP_DEFAULT, compare: true },
132380
132461
  expressionData: { type: "object", value: null, compare: true },
132381
132462
  multiFeatureValues: { type: "array", value: null, compare: true },
132463
+ multiMatrixObsIndex: { type: "array", value: null, compare: true },
132382
132464
  setColorValues: { type: "array", value: null, compare: true },
132383
132465
  channelFeatureValueColormaps: { type: "array", value: null, compare: true },
132384
132466
  channelFeatureValueColormapRanges: { type: "array", value: null, compare: true },
@@ -132425,9 +132507,9 @@ class BitmaskLayer2 extends XRLayer {
132425
132507
  }
132426
132508
  updateState({ props: props2, oldProps, changeFlags }) {
132427
132509
  super.updateState({ props: props2, oldProps, changeFlags });
132428
- if (props2.multiFeatureValues !== oldProps.multiFeatureValues || props2.setColorValues !== oldProps.setColorValues || props2.channelIsSetColorMode !== oldProps.channelIsSetColorMode) {
132429
- const { multiFeatureValues, setColorValues, channelIsSetColorMode } = this.props;
132430
- const [valueTex, colorTex, valueTexOffsets, colorTexOffsets, valueTexHeight, colorTexHeight] = this.multiSetsToTexture(multiFeatureValues, setColorValues, channelIsSetColorMode);
132510
+ if (!isEqualShallow(props2.multiFeatureValues, oldProps.multiFeatureValues) || !isEqualShallow(props2.multiMatrixObsIndex, oldProps.multiMatrixObsIndex) || !isEqualShallow(props2.setColorValues, oldProps.setColorValues) || !isEqualShallow(props2.channelIsSetColorMode, oldProps.channelIsSetColorMode)) {
132511
+ const { multiFeatureValues, multiMatrixObsIndex, setColorValues, channelIsSetColorMode } = this.props;
132512
+ const [valueTex, colorTex, valueTexOffsets, colorTexOffsets, valueTexHeight, colorTexHeight] = this.multiSetsToTexture(multiFeatureValues, multiMatrixObsIndex, setColorValues, channelIsSetColorMode);
132431
132513
  this.setState({
132432
132514
  valueTex,
132433
132515
  colorTex,
@@ -132579,9 +132661,9 @@ class BitmaskLayer2 extends XRLayer {
132579
132661
  type: GL$1.FLOAT
132580
132662
  });
132581
132663
  }
132582
- multiSetsToTexture(multiFeatureValues, setColorValues, channelIsSetColorMode) {
132664
+ multiSetsToTexture(multiFeatureValues, multiMatrixObsIndex, setColorValues, channelIsSetColorMode) {
132583
132665
  const isWebGL2On = isWebGL2$1(this.context.gl);
132584
- const [totalData, valueTexHeight, indicesOffsets, totalColors, colorTexHeight, colorsOffsets] = multiSetsToTextureData(multiFeatureValues, setColorValues, channelIsSetColorMode, MULTI_FEATURE_TEX_SIZE);
132666
+ const [totalData, valueTexHeight, indicesOffsets, totalColors, colorTexHeight, colorsOffsets] = multiSetsToTextureData(multiFeatureValues, multiMatrixObsIndex, setColorValues, channelIsSetColorMode, MULTI_FEATURE_TEX_SIZE);
132585
132667
  return [
132586
132668
  // Color indices texture
132587
132669
  new Texture2D(this.context.gl, {
@@ -133833,13 +133915,13 @@ var refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);
133833
133915
  const refType$1 = refType;
133834
133916
  function clamp$1(value) {
133835
133917
  var min = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
133836
- var max = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1;
133918
+ var max2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1;
133837
133919
  {
133838
- if (value < min || value > max) {
133839
- console.error("Material-UI: The value provided ".concat(value, " is out of range [").concat(min, ", ").concat(max, "]."));
133920
+ if (value < min || value > max2) {
133921
+ console.error("Material-UI: The value provided ".concat(value, " is out of range [").concat(min, ", ").concat(max2, "]."));
133840
133922
  }
133841
133923
  }
133842
- return Math.min(Math.max(min, value), max);
133924
+ return Math.min(Math.max(min, value), max2);
133843
133925
  }
133844
133926
  function hexToRgb(color2) {
133845
133927
  color2 = color2.substr(1);
@@ -141494,8 +141576,8 @@ const ValueLabel$1 = withStyles2(styles$4, {
141494
141576
  function asc(a2, b) {
141495
141577
  return a2 - b;
141496
141578
  }
141497
- function clamp(value, min, max) {
141498
- return Math.min(Math.max(min, value), max);
141579
+ function clamp(value, min, max2) {
141580
+ return Math.min(Math.max(min, value), max2);
141499
141581
  }
141500
141582
  function findClosest(values2, currentValue) {
141501
141583
  var _values$reduce = values2.reduce(function(acc, value, index2) {
@@ -141528,11 +141610,11 @@ function trackFinger(event, touchId) {
141528
141610
  y: event.clientY
141529
141611
  };
141530
141612
  }
141531
- function valueToPercent(value, min, max) {
141532
- return (value - min) * 100 / (max - min);
141613
+ function valueToPercent(value, min, max2) {
141614
+ return (value - min) * 100 / (max2 - min);
141533
141615
  }
141534
- function percentToValue(percent2, min, max) {
141535
- return (max - min) * percent2 + min;
141616
+ function percentToValue(percent2, min, max2) {
141617
+ return (max2 - min) * percent2 + min;
141536
141618
  }
141537
141619
  function getDecimalPrecision(num) {
141538
141620
  if (Math.abs(num) < 1) {
@@ -141820,7 +141902,7 @@ var styles$3 = function styles7(theme) {
141820
141902
  };
141821
141903
  };
141822
141904
  var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141823
- var ariaLabel = props2["aria-label"], ariaLabelledby = props2["aria-labelledby"], ariaValuetext = props2["aria-valuetext"], classes = props2.classes, className = props2.className, _props$color = props2.color, color2 = _props$color === void 0 ? "primary" : _props$color, _props$component = props2.component, Component2 = _props$component === void 0 ? "span" : _props$component, defaultValue2 = props2.defaultValue, _props$disabled = props2.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, getAriaLabel = props2.getAriaLabel, getAriaValueText = props2.getAriaValueText, _props$marks = props2.marks, marksProp = _props$marks === void 0 ? false : _props$marks, _props$max = props2.max, max = _props$max === void 0 ? 100 : _props$max, _props$min = props2.min, min = _props$min === void 0 ? 0 : _props$min, name2 = props2.name, onChange = props2.onChange, onChangeCommitted = props2.onChangeCommitted, onMouseDown = props2.onMouseDown, _props$orientation = props2.orientation, orientation = _props$orientation === void 0 ? "horizontal" : _props$orientation, _props$scale = props2.scale, scale2 = _props$scale === void 0 ? Identity : _props$scale, _props$step = props2.step, step = _props$step === void 0 ? 1 : _props$step, _props$ThumbComponent = props2.ThumbComponent, ThumbComponent = _props$ThumbComponent === void 0 ? "span" : _props$ThumbComponent, _props$track = props2.track, track = _props$track === void 0 ? "normal" : _props$track, valueProp = props2.value, _props$ValueLabelComp = props2.ValueLabelComponent, ValueLabelComponent = _props$ValueLabelComp === void 0 ? ValueLabel$1 : _props$ValueLabelComp, _props$valueLabelDisp = props2.valueLabelDisplay, valueLabelDisplay = _props$valueLabelDisp === void 0 ? "off" : _props$valueLabelDisp, _props$valueLabelForm = props2.valueLabelFormat, valueLabelFormat = _props$valueLabelForm === void 0 ? Identity : _props$valueLabelForm, other = _objectWithoutProperties(props2, ["aria-label", "aria-labelledby", "aria-valuetext", "classes", "className", "color", "component", "defaultValue", "disabled", "getAriaLabel", "getAriaValueText", "marks", "max", "min", "name", "onChange", "onChangeCommitted", "onMouseDown", "orientation", "scale", "step", "ThumbComponent", "track", "value", "ValueLabelComponent", "valueLabelDisplay", "valueLabelFormat"]);
141905
+ var ariaLabel = props2["aria-label"], ariaLabelledby = props2["aria-labelledby"], ariaValuetext = props2["aria-valuetext"], classes = props2.classes, className = props2.className, _props$color = props2.color, color2 = _props$color === void 0 ? "primary" : _props$color, _props$component = props2.component, Component2 = _props$component === void 0 ? "span" : _props$component, defaultValue2 = props2.defaultValue, _props$disabled = props2.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, getAriaLabel = props2.getAriaLabel, getAriaValueText = props2.getAriaValueText, _props$marks = props2.marks, marksProp = _props$marks === void 0 ? false : _props$marks, _props$max = props2.max, max2 = _props$max === void 0 ? 100 : _props$max, _props$min = props2.min, min = _props$min === void 0 ? 0 : _props$min, name2 = props2.name, onChange = props2.onChange, onChangeCommitted = props2.onChangeCommitted, onMouseDown = props2.onMouseDown, _props$orientation = props2.orientation, orientation = _props$orientation === void 0 ? "horizontal" : _props$orientation, _props$scale = props2.scale, scale2 = _props$scale === void 0 ? Identity : _props$scale, _props$step = props2.step, step = _props$step === void 0 ? 1 : _props$step, _props$ThumbComponent = props2.ThumbComponent, ThumbComponent = _props$ThumbComponent === void 0 ? "span" : _props$ThumbComponent, _props$track = props2.track, track = _props$track === void 0 ? "normal" : _props$track, valueProp = props2.value, _props$ValueLabelComp = props2.ValueLabelComponent, ValueLabelComponent = _props$ValueLabelComp === void 0 ? ValueLabel$1 : _props$ValueLabelComp, _props$valueLabelDisp = props2.valueLabelDisplay, valueLabelDisplay = _props$valueLabelDisp === void 0 ? "off" : _props$valueLabelDisp, _props$valueLabelForm = props2.valueLabelFormat, valueLabelFormat = _props$valueLabelForm === void 0 ? Identity : _props$valueLabelForm, other = _objectWithoutProperties(props2, ["aria-label", "aria-labelledby", "aria-valuetext", "classes", "className", "color", "component", "defaultValue", "disabled", "getAriaLabel", "getAriaValueText", "marks", "max", "min", "name", "onChange", "onChangeCommitted", "onMouseDown", "orientation", "scale", "step", "ThumbComponent", "track", "value", "ValueLabelComponent", "valueLabelDisplay", "valueLabelFormat"]);
141824
141906
  var theme = useTheme();
141825
141907
  var touchId = React.useRef();
141826
141908
  var _React$useState = React.useState(-1), active = _React$useState[0], setActive = _React$useState[1];
@@ -141833,9 +141915,9 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141833
141915
  var range2 = Array.isArray(valueDerived);
141834
141916
  var values2 = range2 ? valueDerived.slice().sort(asc) : [valueDerived];
141835
141917
  values2 = values2.map(function(value) {
141836
- return clamp(value, min, max);
141918
+ return clamp(value, min, max2);
141837
141919
  });
141838
- var marks = marksProp === true && step !== null ? _toConsumableArray$1(Array(Math.floor((max - min) / step) + 1)).map(function(_, index2) {
141920
+ var marks = marksProp === true && step !== null ? _toConsumableArray$1(Array(Math.floor((max2 - min) / step) + 1)).map(function(_, index2) {
141839
141921
  return {
141840
141922
  value: min + step * index2
141841
141923
  };
@@ -141870,7 +141952,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141870
141952
  var handleKeyDown2 = useEventCallback(function(event) {
141871
141953
  var index2 = Number(event.currentTarget.getAttribute("data-index"));
141872
141954
  var value = values2[index2];
141873
- var tenPercents = (max - min) / 10;
141955
+ var tenPercents = (max2 - min) / 10;
141874
141956
  var marksValues = marks.map(function(mark) {
141875
141957
  return mark.value;
141876
141958
  });
@@ -141883,7 +141965,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141883
141965
  newValue = min;
141884
141966
  break;
141885
141967
  case "End":
141886
- newValue = max;
141968
+ newValue = max2;
141887
141969
  break;
141888
141970
  case "PageUp":
141889
141971
  if (step) {
@@ -141918,7 +142000,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141918
142000
  if (step) {
141919
142001
  newValue = roundValueToStep(newValue, step, min);
141920
142002
  }
141921
- newValue = clamp(newValue, min, max);
142003
+ newValue = clamp(newValue, min, max2);
141922
142004
  if (range2) {
141923
142005
  var previousValue = newValue;
141924
142006
  newValue = setValueIndex({
@@ -141960,7 +142042,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141960
142042
  percent2 = 1 - percent2;
141961
142043
  }
141962
142044
  var newValue;
141963
- newValue = percentToValue(percent2, min, max);
142045
+ newValue = percentToValue(percent2, min, max2);
141964
142046
  if (step) {
141965
142047
  newValue = roundValueToStep(newValue, step, min);
141966
142048
  } else {
@@ -141970,7 +142052,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
141970
142052
  var closestIndex = findClosest(marksValues, newValue);
141971
142053
  newValue = marksValues[closestIndex];
141972
142054
  }
141973
- newValue = clamp(newValue, min, max);
142055
+ newValue = clamp(newValue, min, max2);
141974
142056
  var activeIndex = 0;
141975
142057
  if (range2) {
141976
142058
  if (!move) {
@@ -142099,8 +142181,8 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
142099
142181
  doc.addEventListener("mousemove", handleTouchMove);
142100
142182
  doc.addEventListener("mouseup", handleTouchEnd);
142101
142183
  });
142102
- var trackOffset = valueToPercent(range2 ? values2[0] : min, min, max);
142103
- var trackLeap = valueToPercent(values2[values2.length - 1], min, max) - trackOffset;
142184
+ var trackOffset = valueToPercent(range2 ? values2[0] : min, min, max2);
142185
+ var trackLeap = valueToPercent(values2[values2.length - 1], min, max2) - trackOffset;
142104
142186
  var trackStyle = _extends$1({}, axisProps[axis2].offset(trackOffset), axisProps[axis2].leap(trackLeap));
142105
142187
  return /* @__PURE__ */ React.createElement(Component2, _extends$1({
142106
142188
  ref: handleRef,
@@ -142118,7 +142200,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
142118
142200
  name: name2,
142119
142201
  type: "hidden"
142120
142202
  }), marks.map(function(mark, index2) {
142121
- var percent2 = valueToPercent(mark.value, min, max);
142203
+ var percent2 = valueToPercent(mark.value, min, max2);
142122
142204
  var style = axisProps[axis2].offset(percent2);
142123
142205
  var markActive;
142124
142206
  if (track === false) {
@@ -142139,7 +142221,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
142139
142221
  className: clsx(classes.markLabel, markActive && classes.markLabelActive)
142140
142222
  }, mark.label) : null);
142141
142223
  }), values2.map(function(value, index2) {
142142
- var percent2 = valueToPercent(value, min, max);
142224
+ var percent2 = valueToPercent(value, min, max2);
142143
142225
  var style = axisProps[axis2].offset(percent2);
142144
142226
  return /* @__PURE__ */ React.createElement(ValueLabelComponent, {
142145
142227
  key: index2,
@@ -142159,7 +142241,7 @@ var Slider = /* @__PURE__ */ React.forwardRef(function Slider2(props2, ref) {
142159
142241
  "aria-label": getAriaLabel ? getAriaLabel(index2) : ariaLabel,
142160
142242
  "aria-labelledby": ariaLabelledby,
142161
142243
  "aria-orientation": orientation,
142162
- "aria-valuemax": scale2(max),
142244
+ "aria-valuemax": scale2(max2),
142163
142245
  "aria-valuemin": scale2(min),
142164
142246
  "aria-valuenow": scale2(value),
142165
142247
  "aria-valuetext": getAriaValueText ? getAriaValueText(scale2(value), index2) : ariaValuetext,
@@ -144657,15 +144739,15 @@ function hslConvert(o2) {
144657
144739
  if (o2 instanceof Hsl)
144658
144740
  return o2;
144659
144741
  o2 = o2.rgb();
144660
- var r2 = o2.r / 255, g2 = o2.g / 255, b = o2.b / 255, min = Math.min(r2, g2, b), max = Math.max(r2, g2, b), h = NaN, s2 = max - min, l2 = (max + min) / 2;
144742
+ var r2 = o2.r / 255, g2 = o2.g / 255, b = o2.b / 255, min = Math.min(r2, g2, b), max2 = Math.max(r2, g2, b), h = NaN, s2 = max2 - min, l2 = (max2 + min) / 2;
144661
144743
  if (s2) {
144662
- if (r2 === max)
144744
+ if (r2 === max2)
144663
144745
  h = (g2 - b) / s2 + (g2 < b) * 6;
144664
- else if (g2 === max)
144746
+ else if (g2 === max2)
144665
144747
  h = (b - r2) / s2 + 2;
144666
144748
  else
144667
144749
  h = (r2 - g2) / s2 + 4;
144668
- s2 /= l2 < 0.5 ? max + min : 2 - max - min;
144750
+ s2 /= l2 < 0.5 ? max2 + min : 2 - max2 - min;
144669
144751
  h *= 60;
144670
144752
  } else {
144671
144753
  s2 = l2 > 0 && l2 < 1 ? 0 : h;
@@ -145213,9 +145295,9 @@ function precisionFixed(step) {
145213
145295
  function precisionPrefix(step, value) {
145214
145296
  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));
145215
145297
  }
145216
- function precisionRound(step, max) {
145217
- step = Math.abs(step), max = Math.abs(max) - step;
145218
- return Math.max(0, exponent(max) - exponent(step)) + 1;
145298
+ function precisionRound(step, max2) {
145299
+ step = Math.abs(step), max2 = Math.abs(max2) - step;
145300
+ return Math.max(0, exponent(max2) - exponent(step)) + 1;
145219
145301
  }
145220
145302
  function tickFormat(start, stop, count2, specifier) {
145221
145303
  var step = tickStep(start, stop, count2), precision;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { E } from "./index-e7cfe3df.js";
1
+ import { E } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
1
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-68f84e2a.js";
2
- import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-e7cfe3df.js";
2
+ import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-82a0ed1f.js";
3
3
  import "react";
4
4
  import "@vitessce/vit-s";
5
5
  import "react-dom";
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
1
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
1
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
1
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-e7cfe3df.js";
1
+ import { B as BaseDecoder } from "./index-82a0ed1f.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;GAYG;AACH;IAVyB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;gBA8WhB"}
1
+ {"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;GAYG;AACH;IAVyB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;gBA8WhB"}
@@ -3,8 +3,8 @@ import React, { useState, useEffect, useCallback, useMemo, } from 'react';
3
3
  import { extent } from 'd3-array';
4
4
  import { isEqual } from 'lodash-es';
5
5
  import { TitleInfo, useReady, useUrls, useDeckCanvasSize, useUint8FeatureSelection, useExpressionValueGetter, useGetObsInfo, useObsEmbeddingData, useObsSetsData, useFeatureSelection, useObsFeatureMatrixIndices, useFeatureLabelsData, useMultiObsLabels, useCoordination, useLoaders, useSetComponentHover, useSetComponentViewInfo, useInitialCoordination, } from '@vitessce/vit-s';
6
- import { setObsSelection, mergeObsSets, getCellSetPolygons } from '@vitessce/sets-utils';
7
- import { pluralize as plur, getCellColors, commaNumber } from '@vitessce/utils';
6
+ import { setObsSelection, mergeObsSets, getCellSetPolygons, getCellColors, } from '@vitessce/sets-utils';
7
+ import { pluralize as plur, commaNumber } from '@vitessce/utils';
8
8
  import { Scatterplot, ScatterplotTooltipSubscriber, ScatterplotOptions, getPointSizeDevicePixels, getPointOpacity, } from '@vitessce/scatterplot';
9
9
  import { Legend } from '@vitessce/legend';
10
10
  import { ViewType, COMPONENT_COORDINATION_TYPES } from '@vitessce/constants-internal';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/scatterplot-embedding",
3
- "version": "3.3.2",
3
+ "version": "3.3.4",
4
4
  "author": "Gehlenborg Lab",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -20,12 +20,12 @@
20
20
  "d3-array": "^2.4.0",
21
21
  "lodash-es": "^4.17.21",
22
22
  "react-aria": "^3.28.0",
23
- "@vitessce/legend": "3.3.2",
24
- "@vitessce/constants-internal": "3.3.2",
25
- "@vitessce/scatterplot": "3.3.2",
26
- "@vitessce/sets-utils": "3.3.2",
27
- "@vitessce/utils": "3.3.2",
28
- "@vitessce/vit-s": "3.3.2"
23
+ "@vitessce/scatterplot": "3.3.4",
24
+ "@vitessce/sets-utils": "3.3.4",
25
+ "@vitessce/utils": "3.3.4",
26
+ "@vitessce/vit-s": "3.3.4",
27
+ "@vitessce/legend": "3.3.4",
28
+ "@vitessce/constants-internal": "3.3.4"
29
29
  },
30
30
  "devDependencies": {
31
31
  "react": "^18.0.0",
@@ -22,8 +22,10 @@ import {
22
22
  useSetComponentViewInfo,
23
23
  useInitialCoordination,
24
24
  } from '@vitessce/vit-s';
25
- import { setObsSelection, mergeObsSets, getCellSetPolygons } from '@vitessce/sets-utils';
26
- import { pluralize as plur, getCellColors, commaNumber } from '@vitessce/utils';
25
+ import {
26
+ setObsSelection, mergeObsSets, getCellSetPolygons, getCellColors,
27
+ } from '@vitessce/sets-utils';
28
+ import { pluralize as plur, commaNumber } from '@vitessce/utils';
27
29
  import {
28
30
  Scatterplot, ScatterplotTooltipSubscriber, ScatterplotOptions,
29
31
  getPointSizeDevicePixels,