@vitessce/scatterplot-embedding 3.5.6 → 3.5.7

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-59d93bea.js";
2
+ import { B as BaseDecoder } from "./index-6931089e.js";
3
3
  import "react";
4
4
  import "@vitessce/vit-s";
5
5
  import "react-dom";
@@ -4369,6 +4369,258 @@ function getNextScope(prevScopes) {
4369
4369
  } while (prevScopes.includes(nextScope));
4370
4370
  return nextScope;
4371
4371
  }
4372
+ var loglevel = { exports: {} };
4373
+ (function(module2) {
4374
+ (function(root2, definition) {
4375
+ if (module2.exports) {
4376
+ module2.exports = definition();
4377
+ } else {
4378
+ root2.log = definition();
4379
+ }
4380
+ })(commonjsGlobal, function() {
4381
+ var noop2 = function() {
4382
+ };
4383
+ var undefinedType2 = "undefined";
4384
+ var isIE2 = typeof window !== undefinedType2 && typeof window.navigator !== undefinedType2 && /Trident\/|MSIE /.test(window.navigator.userAgent);
4385
+ var logMethods = [
4386
+ "trace",
4387
+ "debug",
4388
+ "info",
4389
+ "warn",
4390
+ "error"
4391
+ ];
4392
+ var _loggersByName = {};
4393
+ var defaultLogger = null;
4394
+ function bindMethod(obj, methodName) {
4395
+ var method = obj[methodName];
4396
+ if (typeof method.bind === "function") {
4397
+ return method.bind(obj);
4398
+ } else {
4399
+ try {
4400
+ return Function.prototype.bind.call(method, obj);
4401
+ } catch (e3) {
4402
+ return function() {
4403
+ return Function.prototype.apply.apply(method, [obj, arguments]);
4404
+ };
4405
+ }
4406
+ }
4407
+ }
4408
+ function traceForIE() {
4409
+ if (console.log) {
4410
+ if (console.log.apply) {
4411
+ console.log.apply(console, arguments);
4412
+ } else {
4413
+ Function.prototype.apply.apply(console.log, [console, arguments]);
4414
+ }
4415
+ }
4416
+ if (console.trace)
4417
+ console.trace();
4418
+ }
4419
+ function realMethod(methodName) {
4420
+ if (methodName === "debug") {
4421
+ methodName = "log";
4422
+ }
4423
+ if (typeof console === undefinedType2) {
4424
+ return false;
4425
+ } else if (methodName === "trace" && isIE2) {
4426
+ return traceForIE;
4427
+ } else if (console[methodName] !== void 0) {
4428
+ return bindMethod(console, methodName);
4429
+ } else if (console.log !== void 0) {
4430
+ return bindMethod(console, "log");
4431
+ } else {
4432
+ return noop2;
4433
+ }
4434
+ }
4435
+ function replaceLoggingMethods() {
4436
+ var level = this.getLevel();
4437
+ for (var i2 = 0; i2 < logMethods.length; i2++) {
4438
+ var methodName = logMethods[i2];
4439
+ this[methodName] = i2 < level ? noop2 : this.methodFactory(methodName, level, this.name);
4440
+ }
4441
+ this.log = this.debug;
4442
+ if (typeof console === undefinedType2 && level < this.levels.SILENT) {
4443
+ return "No console available for logging";
4444
+ }
4445
+ }
4446
+ function enableLoggingWhenConsoleArrives(methodName) {
4447
+ return function() {
4448
+ if (typeof console !== undefinedType2) {
4449
+ replaceLoggingMethods.call(this);
4450
+ this[methodName].apply(this, arguments);
4451
+ }
4452
+ };
4453
+ }
4454
+ function defaultMethodFactory(methodName, _level, _loggerName) {
4455
+ return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);
4456
+ }
4457
+ function Logger(name2, factory) {
4458
+ var self2 = this;
4459
+ var inheritedLevel;
4460
+ var defaultLevel;
4461
+ var userLevel;
4462
+ var storageKey = "loglevel";
4463
+ if (typeof name2 === "string") {
4464
+ storageKey += ":" + name2;
4465
+ } else if (typeof name2 === "symbol") {
4466
+ storageKey = void 0;
4467
+ }
4468
+ function persistLevelIfPossible(levelNum) {
4469
+ var levelName = (logMethods[levelNum] || "silent").toUpperCase();
4470
+ if (typeof window === undefinedType2 || !storageKey)
4471
+ return;
4472
+ try {
4473
+ window.localStorage[storageKey] = levelName;
4474
+ return;
4475
+ } catch (ignore) {
4476
+ }
4477
+ try {
4478
+ window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";";
4479
+ } catch (ignore) {
4480
+ }
4481
+ }
4482
+ function getPersistedLevel() {
4483
+ var storedLevel;
4484
+ if (typeof window === undefinedType2 || !storageKey)
4485
+ return;
4486
+ try {
4487
+ storedLevel = window.localStorage[storageKey];
4488
+ } catch (ignore) {
4489
+ }
4490
+ if (typeof storedLevel === undefinedType2) {
4491
+ try {
4492
+ var cookie = window.document.cookie;
4493
+ var cookieName = encodeURIComponent(storageKey);
4494
+ var location = cookie.indexOf(cookieName + "=");
4495
+ if (location !== -1) {
4496
+ storedLevel = /^([^;]+)/.exec(
4497
+ cookie.slice(location + cookieName.length + 1)
4498
+ )[1];
4499
+ }
4500
+ } catch (ignore) {
4501
+ }
4502
+ }
4503
+ if (self2.levels[storedLevel] === void 0) {
4504
+ storedLevel = void 0;
4505
+ }
4506
+ return storedLevel;
4507
+ }
4508
+ function clearPersistedLevel() {
4509
+ if (typeof window === undefinedType2 || !storageKey)
4510
+ return;
4511
+ try {
4512
+ window.localStorage.removeItem(storageKey);
4513
+ } catch (ignore) {
4514
+ }
4515
+ try {
4516
+ window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
4517
+ } catch (ignore) {
4518
+ }
4519
+ }
4520
+ function normalizeLevel(input) {
4521
+ var level = input;
4522
+ if (typeof level === "string" && self2.levels[level.toUpperCase()] !== void 0) {
4523
+ level = self2.levels[level.toUpperCase()];
4524
+ }
4525
+ if (typeof level === "number" && level >= 0 && level <= self2.levels.SILENT) {
4526
+ return level;
4527
+ } else {
4528
+ throw new TypeError("log.setLevel() called with invalid level: " + input);
4529
+ }
4530
+ }
4531
+ self2.name = name2;
4532
+ self2.levels = {
4533
+ "TRACE": 0,
4534
+ "DEBUG": 1,
4535
+ "INFO": 2,
4536
+ "WARN": 3,
4537
+ "ERROR": 4,
4538
+ "SILENT": 5
4539
+ };
4540
+ self2.methodFactory = factory || defaultMethodFactory;
4541
+ self2.getLevel = function() {
4542
+ if (userLevel != null) {
4543
+ return userLevel;
4544
+ } else if (defaultLevel != null) {
4545
+ return defaultLevel;
4546
+ } else {
4547
+ return inheritedLevel;
4548
+ }
4549
+ };
4550
+ self2.setLevel = function(level, persist) {
4551
+ userLevel = normalizeLevel(level);
4552
+ if (persist !== false) {
4553
+ persistLevelIfPossible(userLevel);
4554
+ }
4555
+ return replaceLoggingMethods.call(self2);
4556
+ };
4557
+ self2.setDefaultLevel = function(level) {
4558
+ defaultLevel = normalizeLevel(level);
4559
+ if (!getPersistedLevel()) {
4560
+ self2.setLevel(level, false);
4561
+ }
4562
+ };
4563
+ self2.resetLevel = function() {
4564
+ userLevel = null;
4565
+ clearPersistedLevel();
4566
+ replaceLoggingMethods.call(self2);
4567
+ };
4568
+ self2.enableAll = function(persist) {
4569
+ self2.setLevel(self2.levels.TRACE, persist);
4570
+ };
4571
+ self2.disableAll = function(persist) {
4572
+ self2.setLevel(self2.levels.SILENT, persist);
4573
+ };
4574
+ self2.rebuild = function() {
4575
+ if (defaultLogger !== self2) {
4576
+ inheritedLevel = normalizeLevel(defaultLogger.getLevel());
4577
+ }
4578
+ replaceLoggingMethods.call(self2);
4579
+ if (defaultLogger === self2) {
4580
+ for (var childName in _loggersByName) {
4581
+ _loggersByName[childName].rebuild();
4582
+ }
4583
+ }
4584
+ };
4585
+ inheritedLevel = normalizeLevel(
4586
+ defaultLogger ? defaultLogger.getLevel() : "WARN"
4587
+ );
4588
+ var initialLevel = getPersistedLevel();
4589
+ if (initialLevel != null) {
4590
+ userLevel = normalizeLevel(initialLevel);
4591
+ }
4592
+ replaceLoggingMethods.call(self2);
4593
+ }
4594
+ defaultLogger = new Logger();
4595
+ defaultLogger.getLogger = function getLogger(name2) {
4596
+ if (typeof name2 !== "symbol" && typeof name2 !== "string" || name2 === "") {
4597
+ throw new TypeError("You must supply a name when creating a logger.");
4598
+ }
4599
+ var logger = _loggersByName[name2];
4600
+ if (!logger) {
4601
+ logger = _loggersByName[name2] = new Logger(
4602
+ name2,
4603
+ defaultLogger.methodFactory
4604
+ );
4605
+ }
4606
+ return logger;
4607
+ };
4608
+ var _log = typeof window !== undefinedType2 ? window.log : void 0;
4609
+ defaultLogger.noConflict = function() {
4610
+ if (typeof window !== undefinedType2 && window.log === defaultLogger) {
4611
+ window.log = _log;
4612
+ }
4613
+ return defaultLogger;
4614
+ };
4615
+ defaultLogger.getLoggers = function getLoggers2() {
4616
+ return _loggersByName;
4617
+ };
4618
+ defaultLogger["default"] = defaultLogger;
4619
+ return defaultLogger;
4620
+ });
4621
+ })(loglevel);
4622
+ var loglevelExports = loglevel.exports;
4623
+ const log$5 = /* @__PURE__ */ getDefaultExportFromCjs(loglevelExports);
4372
4624
  const DEFAULT_DARK_COLOR = [50, 50, 50];
4373
4625
  const DEFAULT_LIGHT_COLOR$3 = [200, 200, 200];
4374
4626
  const DEFAULT_LIGHT2_COLOR = [235, 235, 235];
@@ -8783,7 +9035,7 @@ function upgradeFrom1_0_14(config2) {
8783
9035
  Object.entries(propAnalogies).forEach(([oldProp, newType]) => {
8784
9036
  var _a2;
8785
9037
  if ((_a2 = viewDef.props) == null ? void 0 : _a2[oldProp]) {
8786
- console.warn(`Warning: the '${oldProp}' prop on the ${viewDef.component} view is deprecated. Please use the '${newType}' coordination type instead.`);
9038
+ log$5.warn(`Warning: the '${oldProp}' prop on the ${viewDef.component} view is deprecated. Please use the '${newType}' coordination type instead.`);
8787
9039
  }
8788
9040
  });
8789
9041
  });
@@ -8806,7 +9058,7 @@ function upgradeFrom1_0_15(config2) {
8806
9058
  Object.entries(coordinationScopes).forEach(([coordinationType, coordinationScope]) => {
8807
9059
  if (!Array.isArray(coordinationScope) && typeof coordinationScope === "object") {
8808
9060
  if (coordinationType === "dataset") {
8809
- console.error("Expected coordinationScopes.dataset value to be either string or string[], but got object.");
9061
+ log$5.error("Expected coordinationScopes.dataset value to be either string or string[], but got object.");
8810
9062
  }
8811
9063
  coordinationScopesBy.dataset[coordinationType] = coordinationScope;
8812
9064
  } else if (Array.isArray(coordinationScope) || typeof coordinationScope === "string") {
@@ -11019,7 +11271,8 @@ const ViewType$1 = {
11019
11271
  FEATURE_BAR_PLOT: "featureBarPlot",
11020
11272
  BIOMARKER_SELECT: "biomarkerSelect",
11021
11273
  LINK_CONTROLLER: "linkController",
11022
- DUAL_SCATTERPLOT: "dualScatterplot"
11274
+ DUAL_SCATTERPLOT: "dualScatterplot",
11275
+ TREEMAP: "treemap"
11023
11276
  };
11024
11277
  const DataType$2 = {
11025
11278
  OBS_LABELS: "obsLabels",
@@ -11073,6 +11326,7 @@ const FileType$1 = {
11073
11326
  OBS_LABELS_ANNDATA_ZARR: "obsLabels.anndata.zarr",
11074
11327
  FEATURE_LABELS_ANNDATA_ZARR: "featureLabels.anndata.zarr",
11075
11328
  SAMPLE_EDGES_ANNDATA_ZARR: "sampleEdges.anndata.zarr",
11329
+ SAMPLE_SETS_ANNDATA_ZARR: "sampleSets.anndata.zarr",
11076
11330
  // AnnData - zipped
11077
11331
  OBS_FEATURE_MATRIX_ANNDATA_ZARR_ZIP: "obsFeatureMatrix.anndata.zarr.zip",
11078
11332
  OBS_FEATURE_COLUMNS_ANNDATA_ZARR_ZIP: "obsFeatureColumns.anndata.zarr.zip",
@@ -11085,6 +11339,7 @@ const FileType$1 = {
11085
11339
  OBS_LABELS_ANNDATA_ZARR_ZIP: "obsLabels.anndata.zarr.zip",
11086
11340
  FEATURE_LABELS_ANNDATA_ZARR_ZIP: "featureLabels.anndata.zarr.zip",
11087
11341
  SAMPLE_EDGES_ANNDATA_ZARR_ZIP: "sampleEdges.anndata.zarr.zip",
11342
+ SAMPLE_SETS_ANNDATA_ZARR_ZIP: "sampleSets.anndata.zarr.zip",
11088
11343
  // AnnData - h5ad via reference spec
11089
11344
  OBS_FEATURE_MATRIX_ANNDATA_H5AD: "obsFeatureMatrix.anndata.h5ad",
11090
11345
  OBS_FEATURE_COLUMNS_ANNDATA_H5AD: "obsFeatureColumns.anndata.h5ad",
@@ -11097,6 +11352,7 @@ const FileType$1 = {
11097
11352
  OBS_LABELS_ANNDATA_H5AD: "obsLabels.anndata.h5ad",
11098
11353
  FEATURE_LABELS_ANNDATA_H5AD: "featureLabels.anndata.h5ad",
11099
11354
  SAMPLE_EDGES_ANNDATA_H5AD: "sampleEdges.anndata.h5ad",
11355
+ SAMPLE_SETS_ANNDATA_H5AD: "sampleSets.anndata.h5ad",
11100
11356
  // SpatialData
11101
11357
  IMAGE_SPATIALDATA_ZARR: "image.spatialdata.zarr",
11102
11358
  LABELS_SPATIALDATA_ZARR: "labels.spatialdata.zarr",
@@ -11288,12 +11544,15 @@ const CoordinationType$1 = {
11288
11544
  SAMPLE_SET_FILTER: "sampleSetFilter",
11289
11545
  SAMPLE_FILTER_MODE: "sampleFilterMode",
11290
11546
  SAMPLE_SET_COLOR: "sampleSetColor",
11547
+ SAMPLE_HIGHLIGHT: "sampleHighlight",
11291
11548
  EMBEDDING_POINTS_VISIBLE: "embeddingPointsVisible",
11292
11549
  EMBEDDING_CONTOURS_VISIBLE: "embeddingContoursVisible",
11293
11550
  EMBEDDING_CONTOURS_FILLED: "embeddingContoursFilled",
11294
11551
  EMBEDDING_CONTOUR_PERCENTILES: "embeddingContourPercentiles",
11295
11552
  CONTOUR_COLOR_ENCODING: "contourColorEncoding",
11296
- CONTOUR_COLOR: "contourColor"
11553
+ CONTOUR_COLOR: "contourColor",
11554
+ // Treemap
11555
+ HIERARCHY_LEVELS: "hierarchyLevels"
11297
11556
  };
11298
11557
  const ViewHelpMapping = {
11299
11558
  SCATTERPLOT: "The scatterplot displays two-dimensional (pre-computed) dimensionality reduction results (such as from t-SNE or UMAP). Each point on the scatterplot represents an observation (e.g., cell).",
@@ -11310,7 +11569,8 @@ const ViewHelpMapping = {
11310
11569
  OBS_SET_FEATURE_VALUE_DISTRIBUTION: "The observation set feature value distribution view displays a violin plot with values (e.g., expression values) per set (e.g., cell type) for the selected feature (e.g., gene).",
11311
11570
  FEATURE_VALUE_HISTOGRAM: "The feature value histogram displays the distribution of values (e.g., expression) for the selected feature (e.g., gene).",
11312
11571
  DOT_PLOT: "The dot plot displays summary information about expression of the selected features (e.g., genes) for each selected observation set (e.g., cell type).",
11313
- FEATURE_BAR_PLOT: "The feature bar plot displays one bar per observation (e.g., cell) along the x-axis, where the value of a selected feature (e.g., gene) is encoded along the y-axis."
11572
+ FEATURE_BAR_PLOT: "The feature bar plot displays one bar per observation (e.g., cell) along the x-axis, where the value of a selected feature (e.g., gene) is encoded along the y-axis.",
11573
+ TREEMAP: "The treemap provides an overview of the current state of sample-level or cell-level selection and filtering."
11314
11574
  };
11315
11575
  const COMPONENT_COORDINATION_TYPES = {
11316
11576
  [ViewType$1.SCATTERPLOT]: [
@@ -11790,6 +12050,32 @@ const COMPONENT_COORDINATION_TYPES = {
11790
12050
  CoordinationType$1.OBS_SET_SELECTION,
11791
12051
  CoordinationType$1.OBS_SET_FILTER
11792
12052
  // TODO: create coordination types for internal state of the biomarker selection view?
12053
+ ],
12054
+ [ViewType$1.TREEMAP]: [
12055
+ CoordinationType$1.DATASET,
12056
+ CoordinationType$1.OBS_TYPE,
12057
+ CoordinationType$1.FEATURE_TYPE,
12058
+ CoordinationType$1.FEATURE_VALUE_TYPE,
12059
+ CoordinationType$1.OBS_FILTER,
12060
+ CoordinationType$1.OBS_HIGHLIGHT,
12061
+ CoordinationType$1.OBS_SET_SELECTION,
12062
+ CoordinationType$1.OBS_SET_FILTER,
12063
+ CoordinationType$1.OBS_SELECTION,
12064
+ CoordinationType$1.OBS_SELECTION_MODE,
12065
+ CoordinationType$1.OBS_SET_HIGHLIGHT,
12066
+ CoordinationType$1.OBS_SET_COLOR,
12067
+ CoordinationType$1.OBS_COLOR_ENCODING,
12068
+ CoordinationType$1.ADDITIONAL_OBS_SETS,
12069
+ CoordinationType$1.SAMPLE_TYPE,
12070
+ CoordinationType$1.SAMPLE_SET_SELECTION,
12071
+ CoordinationType$1.SAMPLE_SET_FILTER,
12072
+ CoordinationType$1.SAMPLE_SET_COLOR,
12073
+ CoordinationType$1.SAMPLE_SELECTION,
12074
+ CoordinationType$1.SAMPLE_SELECTION_MODE,
12075
+ CoordinationType$1.SAMPLE_FILTER,
12076
+ CoordinationType$1.SAMPLE_FILTER_MODE,
12077
+ CoordinationType$1.SAMPLE_HIGHLIGHT,
12078
+ CoordinationType$1.HIERARCHY_LEVELS
11793
12079
  ]
11794
12080
  };
11795
12081
  const ViewType = {
@@ -11958,7 +12244,7 @@ function makeConstantWithDeprecationMessage(currObj, oldObj) {
11958
12244
  const oldKeys = Object.keys(oldObj);
11959
12245
  const propKey = String(prop);
11960
12246
  if (oldKeys.includes(propKey)) {
11961
- console.warn(`Notice about the constant mapping ${propKey}: '${oldObj[propKey][0]}':
12247
+ log$5.warn(`Notice about the constant mapping ${propKey}: '${oldObj[propKey][0]}':
11962
12248
  ${oldObj[propKey][1]}`);
11963
12249
  return oldObj[propKey];
11964
12250
  }
@@ -12056,6 +12342,9 @@ const annDataObsSetsArr = z.array(z.object({
12056
12342
  z.object({
12057
12343
  obsSets: annDataObsSetsArr
12058
12344
  });
12345
+ z.object({
12346
+ sampleSets: annDataObsSetsArr
12347
+ });
12059
12348
  const annDataObsFeatureColumnsArr = z.array(z.object({
12060
12349
  path: z.string()
12061
12350
  }));
@@ -19096,7 +19385,7 @@ function stratifyArrays(sampleEdges, sampleIdToObsIdsMap, sampleSets, sampleSetS
19096
19385
  sampleSetKeys.forEach((sampleSetKey) => {
19097
19386
  const finalInsertionIndex = result.get(cellSetKey).get(sampleSetKey).get("i");
19098
19387
  if (finalInsertionIndex !== result.get(cellSetKey).get(sampleSetKey).get("obsIndex").length) {
19099
- console.warn("The final insertion index is lower than expected.");
19388
+ log$5.warn("The final insertion index is lower than expected.");
19100
19389
  }
19101
19390
  result.get(cellSetKey).get(sampleSetKey).delete("i");
19102
19391
  });
@@ -124054,16 +124343,16 @@ function addDecoder(cases, importFn) {
124054
124343
  }
124055
124344
  cases.forEach((c2) => registry$1.set(c2, importFn));
124056
124345
  }
124057
- addDecoder([void 0, 1], () => import("./raw-03df793e.js").then((m2) => m2.default));
124058
- addDecoder(5, () => import("./lzw-2bf68d77.js").then((m2) => m2.default));
124346
+ addDecoder([void 0, 1], () => import("./raw-3928687d.js").then((m2) => m2.default));
124347
+ addDecoder(5, () => import("./lzw-4b6e12be.js").then((m2) => m2.default));
124059
124348
  addDecoder(6, () => {
124060
124349
  throw new Error("old style JPEG compression is not supported.");
124061
124350
  });
124062
- addDecoder(7, () => import("./jpeg-96119ba3.js").then((m2) => m2.default));
124063
- addDecoder([8, 32946], () => import("./deflate-d0300d1e.js").then((m2) => m2.default));
124064
- addDecoder(32773, () => import("./packbits-b40edb17.js").then((m2) => m2.default));
124065
- addDecoder(34887, () => import("./lerc-c167c85c.js").then((m2) => m2.default));
124066
- addDecoder(50001, () => import("./webimage-1cf2f04f.js").then((m2) => m2.default));
124351
+ addDecoder(7, () => import("./jpeg-db1f9adb.js").then((m2) => m2.default));
124352
+ addDecoder([8, 32946], () => import("./deflate-7ff395f6.js").then((m2) => m2.default));
124353
+ addDecoder(32773, () => import("./packbits-61eb655b.js").then((m2) => m2.default));
124354
+ addDecoder(34887, () => import("./lerc-9859e1c5.js").then((m2) => m2.default));
124355
+ addDecoder(50001, () => import("./webimage-62020543.js").then((m2) => m2.default));
124067
124356
  function decodeRowAcc(row, stride) {
124068
124357
  let length2 = row.length - stride;
124069
124358
  let offset5 = 0;
@@ -134120,10 +134409,10 @@ function multiSetsToTextureData(multiFeatureValues, multiMatrixObsIndex, setColo
134120
134409
  const valueTexHeight = Math.max(2, Math.ceil(totalValuesLength / texSize));
134121
134410
  const colorTexHeight = Math.max(2, Math.ceil(totalColorsLength / texSize));
134122
134411
  if (valueTexHeight > texSize) {
134123
- console.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
134412
+ log$5.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
134124
134413
  }
134125
134414
  if (colorTexHeight > texSize) {
134126
- console.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
134415
+ log$5.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
134127
134416
  }
134128
134417
  const totalData = new Uint8Array(texSize * valueTexHeight);
134129
134418
  const totalColors = new Uint8Array(texSize * colorTexHeight);
@@ -148753,6 +149042,7 @@ function EmbeddingScatterplotSubscriber(props) {
148753
149042
  }
148754
149043
  function DualEmbeddingScatterplotSubscriber(props) {
148755
149044
  const {
149045
+ uuid,
148756
149046
  coordinationScopes
148757
149047
  } = props;
148758
149048
  const [{
@@ -148765,6 +149055,7 @@ function DualEmbeddingScatterplotSubscriber(props) {
148765
149055
  EmbeddingScatterplotSubscriber,
148766
149056
  {
148767
149057
  ...props,
149058
+ uuid: `${uuid}-case`,
148768
149059
  sampleSetSelection: caseSampleSetSelection
148769
149060
  }
148770
149061
  ) }),
@@ -148772,7 +149063,7 @@ function DualEmbeddingScatterplotSubscriber(props) {
148772
149063
  EmbeddingScatterplotSubscriber,
148773
149064
  {
148774
149065
  ...props,
148775
- title: "",
149066
+ uuid: `${uuid}-ctrl`,
148776
149067
  sampleSetSelection: ctrlSampleSetSelection
148777
149068
  }
148778
149069
  ) })
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { D, E } from "./index-59d93bea.js";
1
+ import { D, E } from "./index-6931089e.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-59d93bea.js";
1
+ import { B as BaseDecoder } from "./index-6931089e.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-59d93bea.js";
2
+ import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-6931089e.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-59d93bea.js";
1
+ import { B as BaseDecoder } from "./index-6931089e.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-59d93bea.js";
1
+ import { B as BaseDecoder } from "./index-6931089e.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-59d93bea.js";
1
+ import { B as BaseDecoder } from "./index-6931089e.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-59d93bea.js";
1
+ import { B as BaseDecoder } from "./index-6931089e.js";
2
2
  import "react";
3
3
  import "@vitessce/vit-s";
4
4
  import "react-dom";
@@ -1 +1 @@
1
- {"version":3,"file":"DualEmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/DualEmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,0DAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAuCA"}
1
+ {"version":3,"file":"DualEmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/DualEmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,0DAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAyCA"}
@@ -20,7 +20,7 @@ import { EmbeddingScatterplotSubscriber } from './EmbeddingScatterplotSubscriber
20
20
  * when using dynamic opacity mode.
21
21
  */
22
22
  export function DualEmbeddingScatterplotSubscriber(props) {
23
- const { coordinationScopes, } = props;
23
+ const { uuid, coordinationScopes, } = props;
24
24
  // Get "props" from the coordination space.
25
25
  const [{ sampleSetSelection, }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType.DUAL_SCATTERPLOT], coordinationScopes);
26
26
  const caseSampleSetSelection = useMemo(() => (sampleSetSelection?.[0]
@@ -29,5 +29,5 @@ export function DualEmbeddingScatterplotSubscriber(props) {
29
29
  const ctrlSampleSetSelection = useMemo(() => (sampleSetSelection?.[1]
30
30
  ? [sampleSetSelection[1]]
31
31
  : null), [sampleSetSelection]);
32
- return (_jsxs("div", { style: { width: '100%', height: '100%', display: 'flex', flexDirection: 'row' }, children: [_jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, sampleSetSelection: caseSampleSetSelection }) }), _jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, title: "", sampleSetSelection: ctrlSampleSetSelection }) })] }));
32
+ return (_jsxs("div", { style: { width: '100%', height: '100%', display: 'flex', flexDirection: 'row' }, children: [_jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, uuid: `${uuid}-case`, sampleSetSelection: caseSampleSetSelection }) }), _jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, uuid: `${uuid}-ctrl`, sampleSetSelection: ctrlSampleSetSelection }) })] }));
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;GAYG;AACH,sDAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAshBA"}
1
+ {"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;GAYG;AACH,sDAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAwhBA"}
@@ -35,7 +35,8 @@ export function EmbeddingScatterplotSubscriber(props) {
35
35
  const [{ dataset, obsType, featureType, featureValueType, sampleType, embeddingZoom: zoom, embeddingTargetX: targetX, embeddingTargetY: targetY, embeddingTargetZ: targetZ, embeddingType: mapping, obsFilter: cellFilter, obsHighlight: cellHighlight, featureSelection: geneSelection, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, obsColorEncoding: cellColorEncoding, additionalObsSets: additionalCellSets, embeddingObsSetPolygonsVisible: cellSetPolygonsVisible, embeddingObsSetLabelsVisible: cellSetLabelsVisible, embeddingObsSetLabelSize: cellSetLabelSize, embeddingObsRadius: cellRadiusFixed, embeddingObsRadiusMode: cellRadiusMode, embeddingObsOpacity: cellOpacityFixed, embeddingObsOpacityMode: cellOpacityMode, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, tooltipsVisible, sampleSetSelection: sampleSetSelectionFromCoordination, sampleSetColor, embeddingPointsVisible, embeddingContoursVisible, embeddingContoursFilled, embeddingContourPercentiles: contourPercentiles, contourColorEncoding, contourColor, }, { setEmbeddingZoom: setZoom, setEmbeddingTargetX: setTargetX, setEmbeddingTargetY: setTargetY, setEmbeddingTargetZ: setTargetZ, setObsFilter: setCellFilter, setObsSetSelection: setCellSetSelection, setObsHighlight: setCellHighlight, setObsSetColor: setCellSetColor, setObsColorEncoding: setCellColorEncoding, setAdditionalObsSets: setAdditionalCellSets, setEmbeddingObsSetPolygonsVisible: setCellSetPolygonsVisible, setEmbeddingObsSetLabelsVisible: setCellSetLabelsVisible, setEmbeddingObsSetLabelSize: setCellSetLabelSize, setEmbeddingObsRadius: setCellRadiusFixed, setEmbeddingObsRadiusMode: setCellRadiusMode, setEmbeddingObsOpacity: setCellOpacityFixed, setEmbeddingObsOpacityMode: setCellOpacityMode, setFeatureValueColormap: setGeneExpressionColormap, setFeatureValueColormapRange: setGeneExpressionColormapRange, setTooltipsVisible, setEmbeddingPointsVisible, setEmbeddingContoursVisible, setEmbeddingContoursFilled, setEmbeddingContourPercentiles: setContourPercentiles, setContourColorEncoding, }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType.SCATTERPLOT], coordinationScopes);
36
36
  const { embeddingZoom: initialZoom, embeddingTargetX: initialTargetX, embeddingTargetY: initialTargetY, } = useInitialCoordination(COMPONENT_COORDINATION_TYPES[ViewType.SCATTERPLOT], coordinationScopes);
37
37
  const observationsLabel = observationsLabelOverride || obsType;
38
- const sampleSetSelection = (sampleSetSelectionFromProps || sampleSetSelectionFromCoordination);
38
+ const sampleSetSelection = (sampleSetSelectionFromProps
39
+ || sampleSetSelectionFromCoordination);
39
40
  const [width, height, deckRef] = useDeckCanvasSize();
40
41
  const title = titleOverride || `Scatterplot (${mapping})`;
41
42
  const [obsLabelsTypes, obsLabelsData] = useMultiObsLabels(coordinationScopes, obsType, loaders, dataset);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/scatterplot-embedding",
3
- "version": "3.5.6",
3
+ "version": "3.5.7",
4
4
  "author": "HIDIVE Lab at HMS",
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/constants-internal": "3.5.6",
24
- "@vitessce/legend": "3.5.6",
25
- "@vitessce/scatterplot": "3.5.6",
26
- "@vitessce/sets-utils": "3.5.6",
27
- "@vitessce/utils": "3.5.6",
28
- "@vitessce/vit-s": "3.5.6"
23
+ "@vitessce/constants-internal": "3.5.7",
24
+ "@vitessce/legend": "3.5.7",
25
+ "@vitessce/scatterplot": "3.5.7",
26
+ "@vitessce/sets-utils": "3.5.7",
27
+ "@vitessce/utils": "3.5.7",
28
+ "@vitessce/vit-s": "3.5.7"
29
29
  },
30
30
  "devDependencies": {
31
31
  "react": "^18.0.0",
@@ -24,6 +24,7 @@ import { EmbeddingScatterplotSubscriber } from './EmbeddingScatterplotSubscriber
24
24
  */
25
25
  export function DualEmbeddingScatterplotSubscriber(props) {
26
26
  const {
27
+ uuid,
27
28
  coordinationScopes,
28
29
  } = props;
29
30
 
@@ -48,13 +49,14 @@ export function DualEmbeddingScatterplotSubscriber(props) {
48
49
  <div style={{ width: '50%', display: 'flex', flexDirection: 'column' }}>
49
50
  <EmbeddingScatterplotSubscriber
50
51
  {...props}
52
+ uuid={`${uuid}-case`}
51
53
  sampleSetSelection={caseSampleSetSelection}
52
54
  />
53
55
  </div>
54
56
  <div style={{ width: '50%', display: 'flex', flexDirection: 'column' }}>
55
57
  <EmbeddingScatterplotSubscriber
56
58
  {...props}
57
- title=""
59
+ uuid={`${uuid}-ctrl`}
58
60
  sampleSetSelection={ctrlSampleSetSelection}
59
61
  />
60
62
  </div>
@@ -149,7 +149,9 @@ export function EmbeddingScatterplotSubscriber(props) {
149
149
  );
150
150
 
151
151
  const observationsLabel = observationsLabelOverride || obsType;
152
- const sampleSetSelection = (sampleSetSelectionFromProps || sampleSetSelectionFromCoordination
152
+ const sampleSetSelection = (
153
+ sampleSetSelectionFromProps
154
+ || sampleSetSelectionFromCoordination
153
155
  );
154
156
 
155
157
  const [width, height, deckRef] = useDeckCanvasSize();