@vitessce/all 3.4.10 → 3.4.12

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.
@@ -10073,6 +10073,7 @@ const CoordinationType$1 = {
10073
10073
  FEATURE_TYPE: "featureType",
10074
10074
  FEATURE_VALUE_TYPE: "featureValueType",
10075
10075
  OBS_LABELS_TYPE: "obsLabelsType",
10076
+ FEATURE_LABELS_TYPE: "featureLabelsType",
10076
10077
  // Other types
10077
10078
  EMBEDDING_TYPE: "embeddingType",
10078
10079
  EMBEDDING_ZOOM: "embeddingZoom",
@@ -10196,6 +10197,23 @@ const DescriptionType = {
10196
10197
  PLAIN: "plain",
10197
10198
  MARKDOWN: "markdown"
10198
10199
  };
10200
+ const ViewHelpMapping = {
10201
+ 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).",
10202
+ HEATMAP: "The heatmap displays an observation-by-feature (e.g., cell-by-gene) matrix, typically with transformed (e.g., normalized or standardized) values.",
10203
+ SPATIAL: "The spatial view displays (potentially layered) spatially-resolved data including RGB or multiplexed images, segmentations of observations (bitmask- or polygon-based), and/or points (e.g., representing FISH transcripts).",
10204
+ DESCRIPTION: "The description view displays additional information about a dataset. When images are included in a dataset, the description view also includes image metadata (if contained in the image files).",
10205
+ STATUS: "The status view displays debugging messages, including app-wide error messages when datasets fail to load or when schemas fail to validate. Details about the entity under the mouse cursor (cell, gene, and/or molecule) are displayed during hover interactions.",
10206
+ LAYER_CONTROLLER: "The spatial layer controller provides an interface for manipulating the visualization layers displayed in the spatial view.",
10207
+ GENOMIC_PROFILES: "The genomic profiles view displays genome browser tracks (using the genomic-profiles data type) containing bar plots, where the genome is along the x-axis and the value at each genome position is encoded with a bar along the y-axis.",
10208
+ GATING: "The gating scatterplot displays expression data for two genes (along the X and Y axes). Users can select two genes, and the scatterplot is dynamically generated using observation-by-feature matrix data. Gating can then be performed by using the lasso or box select tools.",
10209
+ FEATURE_LIST: "The feature list controller displays an interactive list of features (e.g., genes).",
10210
+ OBS_SETS: "The observation sets controller displays an interactive list of (potentially hierarchical) observation sets (e.g., cell clusters or cell type annotations).",
10211
+ OBS_SET_SIZES: "The observation set sizes view displays a bar plot with the currently-selected observation sets (e.g., cell types) on the x-axis and bars representing their size (e.g., number of cells) on the y-axis.",
10212
+ 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).",
10213
+ FEATURE_VALUE_HISTOGRAM: "The feature value histogram displays the distribution of values (e.g., expression) for the selected feature (e.g., gene).",
10214
+ 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).",
10215
+ 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."
10216
+ };
10199
10217
  const ALT_ZARR_STORE_TYPES = {
10200
10218
  [FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR]: {
10201
10219
  zip: FileType$1.OBS_FEATURE_MATRIX_ANNDATA_ZARR_ZIP,
@@ -11024,7 +11042,7 @@ const obsFeatureMatrixSpatialdataSchema = annDataObsFeatureMatrix.extend({
11024
11042
  const obsSetsSpatialdataSchema = z.object({
11025
11043
  region: z.string().describe("The name of a region to use to filter instances (i.e., rows) in the table").optional(),
11026
11044
  tablePath: z.string().optional().describe("The path to a table which contains the index for the set values."),
11027
- obsSets: annDataObsSets
11045
+ obsSets: annDataObsSetsArr
11028
11046
  });
11029
11047
  const meshGlbSchema = z.object({
11030
11048
  targetX: z.number(),
@@ -16040,7 +16058,7 @@ function getStylesCreator(stylesOrCreator) {
16040
16058
  }
16041
16059
  }
16042
16060
  return {
16043
- create: function create6(theme, name2) {
16061
+ create: function create5(theme, name2) {
16044
16062
  var styles35;
16045
16063
  try {
16046
16064
  styles35 = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;
@@ -25237,7 +25255,7 @@ var classCallCheck$1 = function(instance, Constructor) {
25237
25255
  }
25238
25256
  };
25239
25257
  var createClass$1 = function() {
25240
- function defineProperties4(target2, props) {
25258
+ function defineProperties3(target2, props) {
25241
25259
  for (var i2 = 0; i2 < props.length; i2++) {
25242
25260
  var descriptor2 = props[i2];
25243
25261
  descriptor2.enumerable = descriptor2.enumerable || false;
@@ -25249,9 +25267,9 @@ var createClass$1 = function() {
25249
25267
  }
25250
25268
  return function(Constructor, protoProps, staticProps) {
25251
25269
  if (protoProps)
25252
- defineProperties4(Constructor.prototype, protoProps);
25270
+ defineProperties3(Constructor.prototype, protoProps);
25253
25271
  if (staticProps)
25254
- defineProperties4(Constructor, staticProps);
25272
+ defineProperties3(Constructor, staticProps);
25255
25273
  return Constructor;
25256
25274
  };
25257
25275
  }();
@@ -31580,14 +31598,14 @@ function toJsxRuntime(tree2, options) {
31580
31598
  throw new TypeError("Expected `Fragment` in options");
31581
31599
  }
31582
31600
  const filePath = options.filePath || void 0;
31583
- let create6;
31601
+ let create5;
31584
31602
  if (options.development) {
31585
31603
  if (typeof options.jsxDEV !== "function") {
31586
31604
  throw new TypeError(
31587
31605
  "Expected `jsxDEV` in options when `development: true`"
31588
31606
  );
31589
31607
  }
31590
- create6 = developmentCreate(filePath, options.jsxDEV);
31608
+ create5 = developmentCreate(filePath, options.jsxDEV);
31591
31609
  } else {
31592
31610
  if (typeof options.jsx !== "function") {
31593
31611
  throw new TypeError("Expected `jsx` in production options");
@@ -31595,13 +31613,13 @@ function toJsxRuntime(tree2, options) {
31595
31613
  if (typeof options.jsxs !== "function") {
31596
31614
  throw new TypeError("Expected `jsxs` in production options");
31597
31615
  }
31598
- create6 = productionCreate(filePath, options.jsx, options.jsxs);
31616
+ create5 = productionCreate(filePath, options.jsx, options.jsxs);
31599
31617
  }
31600
31618
  const state = {
31601
31619
  Fragment: options.Fragment,
31602
31620
  ancestors: [],
31603
31621
  components: options.components || {},
31604
- create: create6,
31622
+ create: create5,
31605
31623
  elementAttributeNameCase: options.elementAttributeNameCase || "react",
31606
31624
  evaluater: options.createEvaluater ? options.createEvaluater() : void 0,
31607
31625
  filePath,
@@ -31725,16 +31743,16 @@ function addChildren(props, children2) {
31725
31743
  }
31726
31744
  }
31727
31745
  function productionCreate(_, jsx, jsxs) {
31728
- return create6;
31729
- function create6(_2, type2, props, key2) {
31746
+ return create5;
31747
+ function create5(_2, type2, props, key2) {
31730
31748
  const isStaticChildren = Array.isArray(props.children);
31731
31749
  const fn = isStaticChildren ? jsxs : jsx;
31732
31750
  return key2 ? fn(type2, props, key2) : fn(type2, props);
31733
31751
  }
31734
31752
  }
31735
31753
  function developmentCreate(filePath, jsxDEV) {
31736
- return create6;
31737
- function create6(node2, type2, props, key2) {
31754
+ return create5;
31755
+ function create5(node2, type2, props, key2) {
31738
31756
  const isStaticChildren = Array.isArray(props.children);
31739
31757
  const point2 = pointStart(node2);
31740
31758
  return jsxDEV(
@@ -35877,14 +35895,14 @@ function parse$d(options) {
35877
35895
  defined: [],
35878
35896
  lazy: {},
35879
35897
  constructs: constructs2,
35880
- content: create6(content$2),
35881
- document: create6(document$2),
35882
- flow: create6(flow$1),
35883
- string: create6(string$4),
35884
- text: create6(text$5)
35898
+ content: create5(content$2),
35899
+ document: create5(document$2),
35900
+ flow: create5(flow$1),
35901
+ string: create5(string$4),
35902
+ text: create5(text$5)
35885
35903
  };
35886
35904
  return parser2;
35887
- function create6(initial) {
35905
+ function create5(initial) {
35888
35906
  return creator2;
35889
35907
  function creator2(from) {
35890
35908
  return createTokenizer(parser2, initial, from);
@@ -36252,10 +36270,10 @@ function compiler(options) {
36252
36270
  events2[start][1]._spread = listSpread;
36253
36271
  return length2;
36254
36272
  }
36255
- function opener(create6, and) {
36273
+ function opener(create5, and) {
36256
36274
  return open2;
36257
36275
  function open2(token) {
36258
- enter.call(this, create6(token), token);
36276
+ enter.call(this, create5(token), token);
36259
36277
  if (and)
36260
36278
  and.call(this, token);
36261
36279
  }
@@ -39592,7 +39610,7 @@ function Description(props) {
39592
39610
  return jsxRuntimeExports.jsxs("div", { className: classes.description, children: [descriptionType && descriptionType === DescriptionType.MARKDOWN ? jsxRuntimeExports.jsx(Markdown, { children: description2 }) : jsxRuntimeExports.jsx("p", { children: description2 }), metadata2 && Array.from(metadata2.entries()).map(([layerIndex, { name: layerName, metadata: metadataRecord }]) => metadataRecord && Object.entries(metadataRecord).length > 0 ? jsxRuntimeExports.jsxs("details", { children: [jsxRuntimeExports.jsx("summary", { children: layerName }), jsxRuntimeExports.jsx("div", { className: classes.metadataContainer, children: jsxRuntimeExports.jsx("table", { children: jsxRuntimeExports.jsx("tbody", { children: Object.entries(metadataRecord).map(([key2, value2]) => jsxRuntimeExports.jsxs("tr", { children: [jsxRuntimeExports.jsx("th", { title: key2, children: key2 }), jsxRuntimeExports.jsx("td", { title: value2, children: value2 })] }, key2)) }) }) })] }, layerIndex) : null)] });
39593
39611
  }
39594
39612
  function DescriptionSubscriber(props) {
39595
- const { coordinationScopes, description: descriptionOverride, descriptionType, removeGridComponent, theme, title: title2 = "Description", closeButtonVisible } = props;
39613
+ const { coordinationScopes, description: descriptionOverride, descriptionType, removeGridComponent, theme, title: title2 = "Description", closeButtonVisible, helpText = ViewHelpMapping.DESCRIPTION } = props;
39596
39614
  const loaders = useLoaders();
39597
39615
  const [{ dataset, spatialImageLayer: rasterLayers }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.DESCRIPTION], coordinationScopes);
39598
39616
  const [description2] = useDescription(loaders, dataset);
@@ -39614,7 +39632,7 @@ function DescriptionSubscriber(props) {
39614
39632
  }
39615
39633
  return result;
39616
39634
  }, [rasterLayers, imageLayerMeta, imageLayerLoaders]);
39617
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, removeGridComponent, isScroll: true, theme, isReady, children: jsxRuntimeExports.jsx(Description, { description: descriptionOverride || description2, descriptionType, metadata: metadata2 }) });
39635
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, removeGridComponent, isScroll: true, theme, isReady, helpText, children: jsxRuntimeExports.jsx(Description, { description: descriptionOverride || description2, descriptionType, metadata: metadata2 }) });
39618
39636
  }
39619
39637
  var earthRadius = 63710088e-1;
39620
39638
  var factors = {
@@ -49056,10 +49074,10 @@ var _propertyDesc = function(bitmap, value2) {
49056
49074
  value: value2
49057
49075
  };
49058
49076
  };
49059
- var dP$2 = require_objectDp();
49077
+ var dP$1 = require_objectDp();
49060
49078
  var createDesc$2 = _propertyDesc;
49061
49079
  var _hide = require_descriptors() ? function(object2, key2, value2) {
49062
- return dP$2.f(object2, key2, createDesc$2(1, value2));
49080
+ return dP$1.f(object2, key2, createDesc$2(1, value2));
49063
49081
  } : function(object2, key2, value2) {
49064
49082
  object2[key2] = value2;
49065
49083
  return object2;
@@ -49073,7 +49091,7 @@ var core$3 = _coreExports;
49073
49091
  var ctx = _ctx;
49074
49092
  var hide$2 = _hide;
49075
49093
  var has$a = _has$1;
49076
- var PROTOTYPE$2 = "prototype";
49094
+ var PROTOTYPE$1 = "prototype";
49077
49095
  var $export$6 = function(type2, name2, source2) {
49078
49096
  var IS_FORCED = type2 & $export$6.F;
49079
49097
  var IS_GLOBAL = type2 & $export$6.G;
@@ -49082,8 +49100,8 @@ var $export$6 = function(type2, name2, source2) {
49082
49100
  var IS_BIND = type2 & $export$6.B;
49083
49101
  var IS_WRAP = type2 & $export$6.W;
49084
49102
  var exports2 = IS_GLOBAL ? core$3 : core$3[name2] || (core$3[name2] = {});
49085
- var expProto = exports2[PROTOTYPE$2];
49086
- var target2 = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name2] : (global$5[name2] || {})[PROTOTYPE$2];
49103
+ var expProto = exports2[PROTOTYPE$1];
49104
+ var target2 = IS_GLOBAL ? global$5 : IS_STATIC ? global$5[name2] : (global$5[name2] || {})[PROTOTYPE$1];
49087
49105
  var key2, own2, out;
49088
49106
  if (IS_GLOBAL)
49089
49107
  source2 = name2;
@@ -49107,7 +49125,7 @@ var $export$6 = function(type2, name2, source2) {
49107
49125
  }
49108
49126
  return C3.apply(this, arguments);
49109
49127
  };
49110
- F[PROTOTYPE$2] = C3[PROTOTYPE$2];
49128
+ F[PROTOTYPE$1] = C3[PROTOTYPE$1];
49111
49129
  return F;
49112
49130
  }(out) : IS_PROTO && typeof out == "function" ? ctx(Function.call, out) : out;
49113
49131
  if (IS_PROTO) {
@@ -49212,22 +49230,30 @@ var px$2 = Math.random();
49212
49230
  var _uid = function(key2) {
49213
49231
  return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id$4 + px$2).toString(36));
49214
49232
  };
49215
- var shared$1 = _sharedExports("keys");
49216
- var uid$3 = _uid;
49217
- var _sharedKey = function(key2) {
49218
- return shared$1[key2] || (shared$1[key2] = uid$3(key2));
49219
- };
49233
+ var _sharedKey;
49234
+ var hasRequired_sharedKey;
49235
+ function require_sharedKey() {
49236
+ if (hasRequired_sharedKey)
49237
+ return _sharedKey;
49238
+ hasRequired_sharedKey = 1;
49239
+ var shared2 = _sharedExports("keys");
49240
+ var uid2 = _uid;
49241
+ _sharedKey = function(key2) {
49242
+ return shared2[key2] || (shared2[key2] = uid2(key2));
49243
+ };
49244
+ return _sharedKey;
49245
+ }
49220
49246
  var has$9 = _has$1;
49221
49247
  var toIObject$4 = _toIobject;
49222
49248
  var arrayIndexOf = _arrayIncludes(false);
49223
- var IE_PROTO$2 = _sharedKey("IE_PROTO");
49249
+ var IE_PROTO$1 = require_sharedKey()("IE_PROTO");
49224
49250
  var _objectKeysInternal = function(object2, names) {
49225
49251
  var O = toIObject$4(object2);
49226
49252
  var i2 = 0;
49227
49253
  var result = [];
49228
49254
  var key2;
49229
49255
  for (key2 in O)
49230
- if (key2 != IE_PROTO$2)
49256
+ if (key2 != IE_PROTO$1)
49231
49257
  has$9(O, key2) && result.push(key2);
49232
49258
  while (names.length > i2)
49233
49259
  if (has$9(O, key2 = names[i2++])) {
@@ -49237,9 +49263,9 @@ var _objectKeysInternal = function(object2, names) {
49237
49263
  };
49238
49264
  var _enumBugKeys = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
49239
49265
  var $keys$2 = _objectKeysInternal;
49240
- var enumBugKeys$1 = _enumBugKeys;
49266
+ var enumBugKeys = _enumBugKeys;
49241
49267
  var _objectKeys$1 = Object.keys || function keys(O) {
49242
- return $keys$2(O, enumBugKeys$1);
49268
+ return $keys$2(O, enumBugKeys);
49243
49269
  };
49244
49270
  var _objectGops = {};
49245
49271
  _objectGops.f = Object.getOwnPropertySymbols;
@@ -49357,7 +49383,7 @@ function _interopRequireDefault$o(obj) {
49357
49383
  return obj && obj.__esModule ? obj : { default: obj };
49358
49384
  }
49359
49385
  var _default$5 = function() {
49360
- function defineProperties4(target2, props) {
49386
+ function defineProperties3(target2, props) {
49361
49387
  for (var i2 = 0; i2 < props.length; i2++) {
49362
49388
  var descriptor2 = props[i2];
49363
49389
  descriptor2.enumerable = descriptor2.enumerable || false;
@@ -49369,9 +49395,9 @@ var _default$5 = function() {
49369
49395
  }
49370
49396
  return function(Constructor, protoProps, staticProps) {
49371
49397
  if (protoProps)
49372
- defineProperties4(Constructor.prototype, protoProps);
49398
+ defineProperties3(Constructor.prototype, protoProps);
49373
49399
  if (staticProps)
49374
- defineProperties4(Constructor, staticProps);
49400
+ defineProperties3(Constructor, staticProps);
49375
49401
  return Constructor;
49376
49402
  };
49377
49403
  }();
@@ -49392,19 +49418,27 @@ var _stringAt = function(TO_STRING) {
49392
49418
  };
49393
49419
  var _redefine = _hide;
49394
49420
  var _iterators = {};
49395
- var dP$1 = require_objectDp();
49396
- var anObject$2 = _anObject;
49397
- var getKeys$1 = _objectKeys$1;
49398
- var _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties(O, Properties) {
49399
- anObject$2(O);
49400
- var keys4 = getKeys$1(Properties);
49401
- var length2 = keys4.length;
49402
- var i2 = 0;
49403
- var P2;
49404
- while (length2 > i2)
49405
- dP$1.f(O, P2 = keys4[i2++], Properties[P2]);
49406
- return O;
49407
- };
49421
+ var _objectDps;
49422
+ var hasRequired_objectDps;
49423
+ function require_objectDps() {
49424
+ if (hasRequired_objectDps)
49425
+ return _objectDps;
49426
+ hasRequired_objectDps = 1;
49427
+ var dP2 = require_objectDp();
49428
+ var anObject2 = _anObject;
49429
+ var getKeys2 = _objectKeys$1;
49430
+ _objectDps = require_descriptors() ? Object.defineProperties : function defineProperties3(O, Properties) {
49431
+ anObject2(O);
49432
+ var keys4 = getKeys2(Properties);
49433
+ var length2 = keys4.length;
49434
+ var i2 = 0;
49435
+ var P2;
49436
+ while (length2 > i2)
49437
+ dP2.f(O, P2 = keys4[i2++], Properties[P2]);
49438
+ return O;
49439
+ };
49440
+ return _objectDps;
49441
+ }
49408
49442
  var _html;
49409
49443
  var hasRequired_html;
49410
49444
  function require_html() {
@@ -49415,42 +49449,50 @@ function require_html() {
49415
49449
  _html = document2 && document2.documentElement;
49416
49450
  return _html;
49417
49451
  }
49418
- var anObject$1 = _anObject;
49419
- var dPs = _objectDps;
49420
- var enumBugKeys = _enumBugKeys;
49421
- var IE_PROTO$1 = _sharedKey("IE_PROTO");
49422
- var Empty$2 = function() {
49423
- };
49424
- var PROTOTYPE$1 = "prototype";
49425
- var createDict = function() {
49426
- var iframe = require_domCreate()("iframe");
49427
- var i2 = enumBugKeys.length;
49428
- var lt2 = "<";
49429
- var gt2 = ">";
49430
- var iframeDocument;
49431
- iframe.style.display = "none";
49432
- require_html().appendChild(iframe);
49433
- iframe.src = "javascript:";
49434
- iframeDocument = iframe.contentWindow.document;
49435
- iframeDocument.open();
49436
- iframeDocument.write(lt2 + "script" + gt2 + "document.F=Object" + lt2 + "/script" + gt2);
49437
- iframeDocument.close();
49438
- createDict = iframeDocument.F;
49439
- while (i2--)
49440
- delete createDict[PROTOTYPE$1][enumBugKeys[i2]];
49441
- return createDict();
49442
- };
49443
- var _objectCreate = Object.create || function create2(O, Properties) {
49444
- var result;
49445
- if (O !== null) {
49446
- Empty$2[PROTOTYPE$1] = anObject$1(O);
49447
- result = new Empty$2();
49448
- Empty$2[PROTOTYPE$1] = null;
49449
- result[IE_PROTO$1] = O;
49450
- } else
49451
- result = createDict();
49452
- return Properties === void 0 ? result : dPs(result, Properties);
49453
- };
49452
+ var _objectCreate;
49453
+ var hasRequired_objectCreate;
49454
+ function require_objectCreate() {
49455
+ if (hasRequired_objectCreate)
49456
+ return _objectCreate;
49457
+ hasRequired_objectCreate = 1;
49458
+ var anObject2 = _anObject;
49459
+ var dPs = require_objectDps();
49460
+ var enumBugKeys2 = _enumBugKeys;
49461
+ var IE_PROTO2 = require_sharedKey()("IE_PROTO");
49462
+ var Empty2 = function() {
49463
+ };
49464
+ var PROTOTYPE2 = "prototype";
49465
+ var createDict = function() {
49466
+ var iframe = require_domCreate()("iframe");
49467
+ var i2 = enumBugKeys2.length;
49468
+ var lt2 = "<";
49469
+ var gt2 = ">";
49470
+ var iframeDocument;
49471
+ iframe.style.display = "none";
49472
+ require_html().appendChild(iframe);
49473
+ iframe.src = "javascript:";
49474
+ iframeDocument = iframe.contentWindow.document;
49475
+ iframeDocument.open();
49476
+ iframeDocument.write(lt2 + "script" + gt2 + "document.F=Object" + lt2 + "/script" + gt2);
49477
+ iframeDocument.close();
49478
+ createDict = iframeDocument.F;
49479
+ while (i2--)
49480
+ delete createDict[PROTOTYPE2][enumBugKeys2[i2]];
49481
+ return createDict();
49482
+ };
49483
+ _objectCreate = Object.create || function create5(O, Properties) {
49484
+ var result;
49485
+ if (O !== null) {
49486
+ Empty2[PROTOTYPE2] = anObject2(O);
49487
+ result = new Empty2();
49488
+ Empty2[PROTOTYPE2] = null;
49489
+ result[IE_PROTO2] = O;
49490
+ } else
49491
+ result = createDict();
49492
+ return Properties === void 0 ? result : dPs(result, Properties);
49493
+ };
49494
+ return _objectCreate;
49495
+ }
49454
49496
  var _wks = { exports: {} };
49455
49497
  var store = _sharedExports("wks");
49456
49498
  var uid$2 = _uid;
@@ -49468,7 +49510,7 @@ var _setToStringTag = function(it, tag2, stat) {
49468
49510
  if (it && !has$8(it = stat ? it : it.prototype, TAG))
49469
49511
  def$1(it, TAG, { configurable: true, value: tag2 });
49470
49512
  };
49471
- var create$b = _objectCreate;
49513
+ var create$b = require_objectCreate();
49472
49514
  var descriptor = _propertyDesc;
49473
49515
  var setToStringTag$2 = _setToStringTag;
49474
49516
  var IteratorPrototype$2 = {};
@@ -49481,7 +49523,7 @@ var _iterCreate = function(Constructor, NAME2, next3) {
49481
49523
  };
49482
49524
  var has$7 = _has$1;
49483
49525
  var toObject$2 = _toObject;
49484
- var IE_PROTO = _sharedKey("IE_PROTO");
49526
+ var IE_PROTO = require_sharedKey()("IE_PROTO");
49485
49527
  var ObjectProto$1 = Object.prototype;
49486
49528
  var _objectGpo = Object.getPrototypeOf || function(O) {
49487
49529
  O = toObject$2(O);
@@ -49644,23 +49686,23 @@ var setMeta = function(it) {
49644
49686
  // weak collections IDs
49645
49687
  } });
49646
49688
  };
49647
- var fastKey = function(it, create6) {
49689
+ var fastKey = function(it, create5) {
49648
49690
  if (!isObject$h(it))
49649
49691
  return typeof it == "symbol" ? it : (typeof it == "string" ? "S" : "P") + it;
49650
49692
  if (!has$6(it, META$1)) {
49651
49693
  if (!isExtensible(it))
49652
49694
  return "F";
49653
- if (!create6)
49695
+ if (!create5)
49654
49696
  return "E";
49655
49697
  setMeta(it);
49656
49698
  }
49657
49699
  return it[META$1].i;
49658
49700
  };
49659
- var getWeak = function(it, create6) {
49701
+ var getWeak = function(it, create5) {
49660
49702
  if (!has$6(it, META$1)) {
49661
49703
  if (!isExtensible(it))
49662
49704
  return true;
49663
- if (!create6)
49705
+ if (!create5)
49664
49706
  return false;
49665
49707
  setMeta(it);
49666
49708
  }
@@ -49769,7 +49811,7 @@ var toObject$1 = _toObject;
49769
49811
  var toIObject = _toIobject;
49770
49812
  var toPrimitive = _toPrimitive;
49771
49813
  var createDesc = _propertyDesc;
49772
- var _create$1 = _objectCreate;
49814
+ var _create$1 = require_objectCreate();
49773
49815
  var gOPNExt = _objectGopnExt;
49774
49816
  var $GOPD = _objectGopd;
49775
49817
  var $GOPS = _objectGops;
@@ -49836,7 +49878,7 @@ var $defineProperty$4 = function defineProperty2(it, key2, D2) {
49836
49878
  }
49837
49879
  return dP(it, key2, D2);
49838
49880
  };
49839
- var $defineProperties = function defineProperties2(it, P2) {
49881
+ var $defineProperties = function defineProperties(it, P2) {
49840
49882
  anObject(it);
49841
49883
  var keys4 = enumKeys(P2 = toIObject(P2));
49842
49884
  var i2 = 0;
@@ -49846,7 +49888,7 @@ var $defineProperties = function defineProperties2(it, P2) {
49846
49888
  $defineProperty$4(it, key2 = keys4[i2++], P2[key2]);
49847
49889
  return it;
49848
49890
  };
49849
- var $create = function create3(it, P2) {
49891
+ var $create = function create2(it, P2) {
49850
49892
  return P2 === void 0 ? _create$1(it) : $defineProperties(_create$1(it), P2);
49851
49893
  };
49852
49894
  var $propertyIsEnumerable = function propertyIsEnumerable(key2) {
@@ -50073,9 +50115,9 @@ $export$1($export$1.S, "Object", { setPrototypeOf: require_setProto().set });
50073
50115
  var setPrototypeOf$2 = _coreExports.Object.setPrototypeOf;
50074
50116
  var setPrototypeOf$1 = { "default": setPrototypeOf$2, __esModule: true };
50075
50117
  var $export = _export;
50076
- $export($export.S, "Object", { create: _objectCreate });
50118
+ $export($export.S, "Object", { create: require_objectCreate() });
50077
50119
  var $Object$2 = _coreExports.Object;
50078
- var create$a = function create4(P2, D2) {
50120
+ var create$a = function create3(P2, D2) {
50079
50121
  return $Object$2.create(P2, D2);
50080
50122
  };
50081
50123
  var create$9 = { "default": create$a, __esModule: true };
@@ -62171,7 +62213,7 @@ function SetsManager(props) {
62171
62213
  }
62172
62214
  const packageJson = { name: "vitessce" };
62173
62215
  function ObsSetsManagerSubscriber(props) {
62174
- const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: titleOverride } = props;
62216
+ const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: titleOverride, helpText = ViewHelpMapping.OBS_SETS } = props;
62175
62217
  const loaders = useLoaders();
62176
62218
  const setWarning = useSetWarning();
62177
62219
  const [{ dataset, obsType, obsSetSelection: cellSetSelection, obsSetExpansion: cellSetExpansion, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets, obsColorEncoding: cellColorEncoding }, { setObsSetSelection: setCellSetSelection, setObsColorEncoding: setCellColorEncoding, setObsSetColor: setCellSetColor, setObsSetExpansion: setCellSetExpansion, setAdditionalObsSets: setAdditionalCellSets }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.OBS_SETS], coordinationScopes);
@@ -62566,7 +62608,7 @@ function ObsSetsManagerSubscriber(props) {
62566
62608
  setWarning,
62567
62609
  theme
62568
62610
  ]);
62569
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, children: manager });
62611
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, children: manager });
62570
62612
  }
62571
62613
  function ascending$7(a2, b2) {
62572
62614
  return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
@@ -105867,11 +105909,11 @@ class Tileset2D {
105867
105909
  this._dirty = false;
105868
105910
  }
105869
105911
  }
105870
- _getTile(index2, create6) {
105912
+ _getTile(index2, create5) {
105871
105913
  const id2 = this.getTileId(index2);
105872
105914
  let tile = this._cache.get(id2);
105873
105915
  let needsReload = false;
105874
- if (!tile && create6) {
105916
+ if (!tile && create5) {
105875
105917
  tile = new Tile2DHeader(index2);
105876
105918
  Object.assign(tile, this.getTileMetadata(tile.index));
105877
105919
  Object.assign(tile, {
@@ -134270,7 +134312,7 @@ var defineProperty$2 = function(object2, name2, value2, predicate) {
134270
134312
  defineDataProperty2(object2, name2, value2);
134271
134313
  }
134272
134314
  };
134273
- var defineProperties3 = function(object2, map2) {
134315
+ var defineProperties2 = function(object2, map2) {
134274
134316
  var predicates = arguments.length > 2 ? arguments[2] : {};
134275
134317
  var props = keys$4(map2);
134276
134318
  if (hasSymbols$1) {
@@ -134280,8 +134322,8 @@ var defineProperties3 = function(object2, map2) {
134280
134322
  defineProperty$2(object2, props[i2], map2[props[i2]], predicates[props[i2]]);
134281
134323
  }
134282
134324
  };
134283
- defineProperties3.supportsDescriptors = !!supportsDescriptors$2;
134284
- var defineProperties_1 = defineProperties3;
134325
+ defineProperties2.supportsDescriptors = !!supportsDescriptors$2;
134326
+ var defineProperties_1 = defineProperties2;
134285
134327
  var numberIsNaN = function(value2) {
134286
134328
  return value2 !== value2;
134287
134329
  };
@@ -168538,16 +168580,16 @@ async function getDecoder(fileDirectory) {
168538
168580
  const Decoder = await importFn();
168539
168581
  return new Decoder(fileDirectory);
168540
168582
  }
168541
- addDecoder([void 0, 1], () => import("./raw-498d13ba.js").then((m2) => m2.default));
168542
- addDecoder(5, () => import("./lzw-3b341e96.js").then((m2) => m2.default));
168583
+ addDecoder([void 0, 1], () => import("./raw-54997420.js").then((m2) => m2.default));
168584
+ addDecoder(5, () => import("./lzw-9502d20a.js").then((m2) => m2.default));
168543
168585
  addDecoder(6, () => {
168544
168586
  throw new Error("old style JPEG compression is not supported.");
168545
168587
  });
168546
- addDecoder(7, () => import("./jpeg-a509da75.js").then((m2) => m2.default));
168547
- addDecoder([8, 32946], () => import("./deflate-997d2944.js").then((m2) => m2.default));
168548
- addDecoder(32773, () => import("./packbits-d7b27016.js").then((m2) => m2.default));
168549
- addDecoder(34887, () => import("./lerc-6b1d32af.js").then((m2) => m2.default));
168550
- addDecoder(50001, () => import("./webimage-65abb0c2.js").then((m2) => m2.default));
168588
+ addDecoder(7, () => import("./jpeg-e383d75a.js").then((m2) => m2.default));
168589
+ addDecoder([8, 32946], () => import("./deflate-efd5356d.js").then((m2) => m2.default));
168590
+ addDecoder(32773, () => import("./packbits-b61051af.js").then((m2) => m2.default));
168591
+ addDecoder(34887, () => import("./lerc-e0ea6e91.js").then((m2) => m2.default));
168592
+ addDecoder(50001, () => import("./webimage-e4eb8c23.js").then((m2) => m2.default));
168551
168593
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
168552
168594
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
168553
168595
  }
@@ -183487,11 +183529,11 @@ function TooltipContent(props) {
183487
183529
  return jsxRuntimeExports.jsx("table", { children: jsxRuntimeExports.jsx("tbody", { children: Object.entries(info2).map(([key2, value2]) => jsxRuntimeExports.jsxs("tr", { children: [jsxRuntimeExports.jsx("th", { children: key2 }), jsxRuntimeExports.jsx("td", { children: value2 })] }, key2)) }) });
183488
183530
  }
183489
183531
  function ScatterplotTooltipSubscriber(props) {
183490
- const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo } = props;
183532
+ const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo: getObsInfo2 } = props;
183491
183533
  const sourceUuid = useComponentHover();
183492
183534
  const viewInfo = useComponentViewInfo(parentUuid);
183493
- const [cellInfo, x2, y2] = obsHighlight && getObsInfo ? [
183494
- getObsInfo(obsHighlight),
183535
+ const [cellInfo, x2, y2] = obsHighlight && getObsInfo2 ? [
183536
+ getObsInfo2(obsHighlight),
183495
183537
  ...viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsHighlight) : [null, null]
183496
183538
  ] : [null, null, null];
183497
183539
  return cellInfo ? jsxRuntimeExports.jsx(Tooltip2D, { x: x2, y: y2, parentUuid, sourceUuid, parentWidth: width2, parentHeight: height2, children: jsxRuntimeExports.jsx(TooltipContent, { info: cellInfo }) }) : null;
@@ -184049,18 +184091,18 @@ function selection_lower() {
184049
184091
  return this.each(lower);
184050
184092
  }
184051
184093
  function selection_append(name2) {
184052
- var create6 = typeof name2 === "function" ? name2 : creator(name2);
184094
+ var create5 = typeof name2 === "function" ? name2 : creator(name2);
184053
184095
  return this.select(function() {
184054
- return this.appendChild(create6.apply(this, arguments));
184096
+ return this.appendChild(create5.apply(this, arguments));
184055
184097
  });
184056
184098
  }
184057
184099
  function constantNull() {
184058
184100
  return null;
184059
184101
  }
184060
184102
  function selection_insert(name2, before) {
184061
- var create6 = typeof name2 === "function" ? name2 : creator(name2), select2 = before == null ? constantNull : typeof before === "function" ? before : selector(before);
184103
+ var create5 = typeof name2 === "function" ? name2 : creator(name2), select2 = before == null ? constantNull : typeof before === "function" ? before : selector(before);
184062
184104
  return this.select(function() {
184063
- return this.insertBefore(create6.apply(this, arguments), select2.apply(this, arguments) || null);
184105
+ return this.insertBefore(create5.apply(this, arguments), select2.apply(this, arguments) || null);
184064
184106
  });
184065
184107
  }
184066
184108
  function remove$1() {
@@ -188506,6 +188548,7 @@ function EmbeddingScatterplotSubscriber(props) {
188506
188548
  theme,
188507
188549
  observationsLabelOverride,
188508
188550
  title: titleOverride,
188551
+ helpText = ViewHelpMapping.SCATTERPLOT,
188509
188552
  // Average fill density for dynamic opacity calculation.
188510
188553
  averageFillDensity
188511
188554
  } = props;
@@ -188650,7 +188693,7 @@ function EmbeddingScatterplotSubscriber(props) {
188650
188693
  initialTargetY,
188651
188694
  averageFillDensity
188652
188695
  ]);
188653
- const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
188696
+ const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
188654
188697
  const cellSelectionSet = useMemo(() => new Set(cellSelection), [cellSelection]);
188655
188698
  const getCellIsSelected = useCallback((object2, { index: index2 }) => (cellSelectionSet || /* @__PURE__ */ new Set([])).has(obsEmbeddingIndex[index2]) ? 1 : 0, [cellSelectionSet, obsEmbeddingIndex]);
188656
188699
  const cellRadius = cellRadiusMode === "manual" ? cellRadiusFixed : dynamicCellRadius;
@@ -188736,7 +188779,7 @@ function EmbeddingScatterplotSubscriber(props) {
188736
188779
  setTargetY(target2[1]);
188737
188780
  setTargetZ(target2[2] || 0);
188738
188781
  };
188739
- return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(observationsLabel, cellsCount)}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, options: jsxRuntimeExports.jsx(ScatterplotOptions, { observationsLabel, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode, setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode, setCellOpacityMode, cellSetLabelsVisible, setCellSetLabelsVisible, tooltipsVisible, setTooltipsVisible, cellSetLabelSize, setCellSetLabelSize, cellSetPolygonsVisible, setCellSetPolygonsVisible, cellColorEncoding, setCellColorEncoding, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, embeddingPointsVisible, setEmbeddingPointsVisible, embeddingContoursVisible, setEmbeddingContoursVisible, embeddingContoursFilled, setEmbeddingContoursFilled, contourPercentiles, setContourPercentiles, defaultContourPercentiles: DEFAULT_CONTOUR_PERCENTILES, contourColorEncoding, setContourColorEncoding }), children: [jsxRuntimeExports.jsx(ScatterplotWrapper, {
188782
+ return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(observationsLabel, cellsCount)}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, options: jsxRuntimeExports.jsx(ScatterplotOptions, { observationsLabel, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode, setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode, setCellOpacityMode, cellSetLabelsVisible, setCellSetLabelsVisible, tooltipsVisible, setTooltipsVisible, cellSetLabelSize, setCellSetLabelSize, cellSetPolygonsVisible, setCellSetPolygonsVisible, cellColorEncoding, setCellColorEncoding, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, embeddingPointsVisible, setEmbeddingPointsVisible, embeddingContoursVisible, setEmbeddingContoursVisible, embeddingContoursFilled, setEmbeddingContoursFilled, contourPercentiles, setContourPercentiles, defaultContourPercentiles: DEFAULT_CONTOUR_PERCENTILES, contourColorEncoding, setContourColorEncoding }), children: [jsxRuntimeExports.jsx(ScatterplotWrapper, {
188740
188783
  ref: deckRef,
188741
188784
  uuid,
188742
188785
  theme,
@@ -188780,7 +188823,7 @@ function EmbeddingScatterplotSubscriber(props) {
188780
188823
  contoursFilled: embeddingContoursFilled,
188781
188824
  embeddingPointsVisible,
188782
188825
  embeddingContoursVisible
188783
- }), tooltipsVisible && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo }), jsxRuntimeExports.jsx(Legend, {
188826
+ }), tooltipsVisible && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo: getObsInfo2 }), jsxRuntimeExports.jsx(Legend, {
188784
188827
  visible: true,
188785
188828
  theme,
188786
188829
  featureType,
@@ -188852,7 +188895,8 @@ function GatingSubscriber(props) {
188852
188895
  disableTooltip = false,
188853
188896
  title: titleOverride,
188854
188897
  // Average fill density for dynamic opacity calculation.
188855
- averageFillDensity
188898
+ averageFillDensity,
188899
+ helpText = ViewHelpMapping.GATING
188856
188900
  } = props;
188857
188901
  const loaders = useLoaders();
188858
188902
  const setComponentHover = useSetComponentHover();
@@ -189022,7 +189066,7 @@ function GatingSubscriber(props) {
189022
189066
  matrixObsIndex: obsIndex,
189023
189067
  expressionData: uint8ExpressionData
189024
189068
  });
189025
- const getObsInfo = useCallback((obsId) => {
189069
+ const getObsInfo2 = useCallback((obsId) => {
189026
189070
  var _a3;
189027
189071
  const selectedTransformName = (_a3 = VALUE_TRANSFORM_OPTIONS.find((o2) => o2.value === featureValueTransform)) == null ? void 0 : _a3.name;
189028
189072
  const genePrefix = featureValueTransform ? `${selectedTransformName} ` : "";
@@ -189041,7 +189085,7 @@ function GatingSubscriber(props) {
189041
189085
  gatingFeatureSelectionY,
189042
189086
  obsType
189043
189087
  ]);
189044
- return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(obsType, cellsCount)}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, options: jsxRuntimeExports.jsx(ScatterplotOptions, { observationsLabel: obsType, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode, setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode, setCellOpacityMode, cellSetLabelsVisible, setCellSetLabelsVisible, cellSetLabelSize, setCellSetLabelSize, cellSetPolygonsVisible, setCellSetPolygonsVisible, cellColorEncoding, setCellColorEncoding, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, children: jsxRuntimeExports.jsx(GatingScatterplotOptions, { featureType, gatingFeatureSelectionX, setGatingFeatureSelectionX, gatingFeatureSelectionY, setGatingFeatureSelectionY, gatingFeatureValueTransform: featureValueTransform, setGatingFeatureValueTransform: (newValue) => {
189088
+ return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(obsType, cellsCount)}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, options: jsxRuntimeExports.jsx(ScatterplotOptions, { observationsLabel: obsType, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode, setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode, setCellOpacityMode, cellSetLabelsVisible, setCellSetLabelsVisible, cellSetLabelSize, setCellSetLabelSize, cellSetPolygonsVisible, setCellSetPolygonsVisible, cellColorEncoding, setCellColorEncoding, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, children: jsxRuntimeExports.jsx(GatingScatterplotOptions, { featureType, gatingFeatureSelectionX, setGatingFeatureSelectionX, gatingFeatureSelectionY, setGatingFeatureSelectionY, gatingFeatureValueTransform: featureValueTransform, setGatingFeatureValueTransform: (newValue) => {
189045
189089
  setFeatureValueTransform(newValue);
189046
189090
  setTargetX(null);
189047
189091
  setTargetY(null);
@@ -189053,7 +189097,7 @@ function GatingSubscriber(props) {
189053
189097
  setTargetZ(target2[2] || 0);
189054
189098
  }, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter, cellSelection, cellHighlight, cellColors, cellSetPolygons, cellSetLabelSize, cellSetLabelsVisible, cellSetPolygonsVisible, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, cellRadius, cellOpacity, cellColorEncoding, geneExpressionColormap, geneExpressionColormapRange, setComponentHover: () => {
189055
189099
  setComponentHover(uuid);
189056
- }, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo })] });
189100
+ }, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo: getObsInfo2 })] });
189057
189101
  }
189058
189102
  var DEFAULT_CONFIG = {
189059
189103
  // minimum relative difference between two compared values,
@@ -189350,7 +189394,7 @@ var typedFunction$1 = { exports: {} };
189350
189394
  function undef() {
189351
189395
  return void 0;
189352
189396
  }
189353
- function create6() {
189397
+ function create5() {
189354
189398
  var _types = [
189355
189399
  { name: "number", test: function(x2) {
189356
189400
  return typeof x2 === "number";
@@ -190102,7 +190146,7 @@ var typedFunction$1 = { exports: {} };
190102
190146
  return createTypedFunction(name2, extractSignatures(fns));
190103
190147
  }
190104
190148
  });
190105
- typed2.create = create6;
190149
+ typed2.create = create5;
190106
190150
  typed2.types = _types;
190107
190151
  typed2.conversions = _conversions;
190108
190152
  typed2.ignore = _ignore;
@@ -190133,7 +190177,7 @@ var typedFunction$1 = { exports: {} };
190133
190177
  };
190134
190178
  return typed2;
190135
190179
  }
190136
- return create6();
190180
+ return create5();
190137
190181
  });
190138
190182
  })(typedFunction$1);
190139
190183
  var typedFunctionExports = typedFunction$1.exports;
@@ -190845,11 +190889,11 @@ function getArrayDataType(array2, typeOf2) {
190845
190889
  }
190846
190890
  return type2;
190847
190891
  }
190848
- function factory(name2, dependencies2, create6, meta2) {
190892
+ function factory(name2, dependencies2, create5, meta2) {
190849
190893
  function assertAndCreate(scope) {
190850
190894
  var deps = pickShallow(scope, dependencies2.map(stripOptionalNotation));
190851
190895
  assertDependencies(name2, dependencies2, scope);
190852
- return create6(deps);
190896
+ return create5(deps);
190853
190897
  }
190854
190898
  assertAndCreate.isFactory = true;
190855
190899
  assertAndCreate.fn = name2;
@@ -208097,7 +208141,7 @@ function SpatialOptions(props) {
208097
208141
  }, id: `gene-expression-colormap-range-${spatialOptionsId}`, valueLabelDisplay: "auto", step: 5e-3, min: 0, max: 1 }) })] })] }) : null] });
208098
208142
  }
208099
208143
  function SpatialTooltipSubscriber$1(props) {
208100
- const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo, hoverData, hoverCoord, useHoverInfoForTooltip, getObsIdFromHoverData } = props;
208144
+ const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo: getObsInfo2, hoverData, hoverCoord, useHoverInfoForTooltip, getObsIdFromHoverData } = props;
208101
208145
  const sourceUuid = useComponentHover();
208102
208146
  const viewInfo = useComponentViewInfo(parentUuid);
208103
208147
  let [cellInfo, x2, y2] = [null, null, null];
@@ -208105,21 +208149,21 @@ function SpatialTooltipSubscriber$1(props) {
208105
208149
  const obsId = getObsIdFromHoverData(hoverData);
208106
208150
  if (obsId) {
208107
208151
  [cellInfo, x2, y2] = [
208108
- getObsInfo(obsId),
208152
+ getObsInfo2(obsId),
208109
208153
  ...viewInfo && viewInfo.project ? viewInfo.project(hoverCoord) : [null, null]
208110
208154
  ];
208111
208155
  }
208112
- } else if (!useHoverInfoForTooltip && getObsInfo && obsHighlight) {
208156
+ } else if (!useHoverInfoForTooltip && getObsInfo2 && obsHighlight) {
208113
208157
  const obsId = obsHighlight;
208114
208158
  [cellInfo, x2, y2] = [
208115
- getObsInfo(obsId),
208159
+ getObsInfo2(obsId),
208116
208160
  ...viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsId) : [null, null]
208117
208161
  ];
208118
208162
  }
208119
208163
  return cellInfo ? jsxRuntimeExports.jsx(Tooltip2D, { x: x2, y: y2, parentUuid, sourceUuid, parentWidth: width2, parentHeight: height2, children: jsxRuntimeExports.jsx(TooltipContent, { info: cellInfo }) }) : null;
208120
208164
  }
208121
208165
  function SpatialSubscriber$1(props) {
208122
- const { uuid, coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, observationsLabelOverride, subobservationsLabelOverride: subobservationsLabel = "molecule", theme, title: title2 = "Spatial", disable3d, globalDisable3d, useFullResolutionImage = {}, channelNamesVisible = false } = props;
208166
+ const { uuid, coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, observationsLabelOverride, subobservationsLabelOverride: subobservationsLabel = "molecule", theme, title: title2 = "Spatial", disable3d, globalDisable3d, useFullResolutionImage = {}, channelNamesVisible = false, helpText = ViewHelpMapping.SPATIAL } = props;
208123
208167
  const loaders = useLoaders();
208124
208168
  const setComponentHover = useSetComponentHover();
208125
208169
  const setComponentViewInfo = useSetComponentViewInfo(uuid);
@@ -208260,7 +208304,7 @@ function SpatialSubscriber$1(props) {
208260
208304
  matrixObsIndex
208261
208305
  ]);
208262
208306
  const cellSelection = useMemo(() => Array.from(cellColors.keys()), [cellColors]);
208263
- const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
208307
+ const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
208264
208308
  const [hoverData, setHoverData] = useState(null);
208265
208309
  const [hoverCoord, setHoverCoord] = useState(null);
208266
208310
  const useHoverInfoForTooltip = !obsCentroids;
@@ -208368,7 +208412,7 @@ function SpatialSubscriber$1(props) {
208368
208412
  }
208369
208413
  return [names, colors2];
208370
208414
  }, [imageLayers, imageLayerLoaders]);
208371
- return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, options, children: [jsxRuntimeExports.jsx("div", { style: {
208415
+ return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, options, helpText, children: [jsxRuntimeExports.jsx("div", { style: {
208372
208416
  position: "absolute",
208373
208417
  bottom: "5px",
208374
208418
  left: "5px",
@@ -208386,7 +208430,7 @@ function SpatialSubscriber$1(props) {
208386
208430
  orbitAxis
208387
208431
  }, setViewState, originalViewState, imageLayerDefs: imageLayers, obsSegmentationsLayerDefs: cellsLayer, obsLocationsLayerDefs: moleculesLayer, neighborhoodLayerDefs: neighborhoodsLayer, obsLocationsIndex, obsSegmentationsIndex, obsLocations, obsLocationsLabels, obsLocationsFeatureIndex, hasSegmentations: hasSegmentationsData, obsSegmentations, obsSegmentationsType, obsCentroids, obsCentroidsIndex, cellFilter, cellSelection, cellHighlight, cellColors, neighborhoods, imageLayerLoaders: resolutionFilteredImageLayerLoaders, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, setHoverInfo, setMoleculeHighlight, setComponentHover: () => {
208388
208432
  setComponentHover(uuid);
208389
- }, updateViewInfo: setComponentViewInfo, imageLayerCallbacks, segmentationLayerCallbacks, spatialAxisFixed, geneExpressionColormap, geneExpressionColormapRange, expressionData: shiftedExpressionDataForBitmask, cellColorEncoding, getExpressionValue, theme, useFullResolutionImage }), tooltipsVisible && jsxRuntimeExports.jsx(SpatialTooltipSubscriber$1, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo, useHoverInfoForTooltip, hoverData, hoverCoord, getObsIdFromHoverData }), jsxRuntimeExports.jsx(Legend, {
208433
+ }, updateViewInfo: setComponentViewInfo, imageLayerCallbacks, segmentationLayerCallbacks, spatialAxisFixed, geneExpressionColormap, geneExpressionColormapRange, expressionData: shiftedExpressionDataForBitmask, cellColorEncoding, getExpressionValue, theme, useFullResolutionImage }), tooltipsVisible && jsxRuntimeExports.jsx(SpatialTooltipSubscriber$1, { parentUuid: uuid, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo: getObsInfo2, useHoverInfoForTooltip, hoverData, hoverCoord, getObsIdFromHoverData }), jsxRuntimeExports.jsx(Legend, {
208390
208434
  visible: true,
208391
208435
  // Fix to dark theme due to black background of spatial plot.
208392
208436
  theme: "dark",
@@ -209676,6 +209720,24 @@ function getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTo
209676
209720
  const projectedObsCoord = viewInfo == null ? void 0 : viewInfo.project(obsCoord);
209677
209721
  return [projectedObsCoord == null ? void 0 : projectedObsCoord[0], projectedObsCoord == null ? void 0 : projectedObsCoord[1]];
209678
209722
  }
209723
+ function getObsInfo(obsSetsData, obsType, obsId) {
209724
+ let result = {
209725
+ [`${capitalize$2(obsType)} ID`]: obsId
209726
+ };
209727
+ if (obsSetsData == null ? void 0 : obsSetsData.obsSetsMembership) {
209728
+ const obsMembership = obsSetsData.obsSetsMembership.get(obsId) || [];
209729
+ if (obsMembership) {
209730
+ result = {
209731
+ ...result,
209732
+ ...Object.fromEntries(obsMembership.flatMap((path2) => path2.slice(1).map((pathEl, elLevel) => [
209733
+ `${path2[0]}${path2.length > 2 ? ` L${elLevel + 1}` : ""}`,
209734
+ pathEl
209735
+ ])))
209736
+ };
209737
+ }
209738
+ }
209739
+ return result;
209740
+ }
209679
209741
  function SpatialTooltipSubscriber(props) {
209680
209742
  const {
209681
209743
  parentUuid,
@@ -209695,6 +209757,7 @@ function SpatialTooltipSubscriber(props) {
209695
209757
  segmentationLayerScopes,
209696
209758
  segmentationChannelScopesByLayer,
209697
209759
  segmentationChannelCoordination,
209760
+ obsSegmentationsSetsData,
209698
209761
  // Images
209699
209762
  imageLayerScopes,
209700
209763
  imageLayerCoordination
@@ -209713,18 +209776,18 @@ function SpatialTooltipSubscriber(props) {
209713
209776
  })), segmentationLayerScopes == null ? void 0 : segmentationLayerScopes.flatMap((layerScope) => {
209714
209777
  var _a3;
209715
209778
  return (_a3 = segmentationChannelScopesByLayer == null ? void 0 : segmentationChannelScopesByLayer[layerScope]) == null ? void 0 : _a3.map((channelScope) => {
209716
- var _a4, _b2, _c2;
209779
+ var _a4, _b2, _c2, _d2;
209717
209780
  const { obsType, obsHighlight, tooltipsVisible, tooltipCrosshairsVisible, spatialChannelVisible } = ((_b2 = (_a4 = segmentationChannelCoordination == null ? void 0 : segmentationChannelCoordination[0]) == null ? void 0 : _a4[layerScope]) == null ? void 0 : _b2[channelScope]) || {};
209781
+ const obsSetsData = (_c2 = obsSegmentationsSetsData == null ? void 0 : obsSegmentationsSetsData[layerScope]) == null ? void 0 : _c2[channelScope];
209782
+ const obsInfo = getObsInfo(obsSetsData, obsType, obsHighlight);
209718
209783
  if (!obsHighlight || !spatialChannelVisible || !tooltipsVisible && !tooltipCrosshairsVisible)
209719
209784
  return null;
209720
- const { obsIndex, obsLocations } = ((_c2 = obsSegmentationsLocations == null ? void 0 : obsSegmentationsLocations[layerScope]) == null ? void 0 : _c2[channelScope]) || {};
209785
+ const { obsIndex, obsLocations } = ((_d2 = obsSegmentationsLocations == null ? void 0 : obsSegmentationsLocations[layerScope]) == null ? void 0 : _d2[channelScope]) || {};
209721
209786
  const xy = getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTooltip, projectedHoverCoord);
209722
209787
  if (!xy)
209723
209788
  return null;
209724
209789
  const [x2, y2] = xy;
209725
- return jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, tooltipsVisible, tooltipCrosshairsVisible, width: width2, height: height2, info: {
209726
- [`${capitalize$2(obsType)} ID`]: obsHighlight
209727
- }, x: x2, y: y2 + (yOffset += 30) }, `${layerScope}-${channelScope}`);
209790
+ return jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, tooltipsVisible, tooltipCrosshairsVisible, width: width2, height: height2, info: obsInfo, x: x2, y: y2 + (yOffset += 20 + 15 * Object.keys(obsInfo).length) }, `${layerScope}-${channelScope}`);
209728
209791
  });
209729
209792
  }), spotLayerScopes == null ? void 0 : spotLayerScopes.map((layerScope) => {
209730
209793
  var _a3;
@@ -209772,7 +209835,7 @@ class ErrorBoundary extends React__default.Component {
209772
209835
  }
209773
209836
  }
209774
209837
  const LazySpatialThree = React__default.lazy(async () => {
209775
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-7def4863.js");
209838
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-1eed7926.js");
209776
209839
  return { default: SpatialWrapper2 };
209777
209840
  });
209778
209841
  const SpatialThreeAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialThree, { ...props }) }) }) }));
@@ -210159,8 +210222,8 @@ function SpatialSubscriber(props) {
210159
210222
  let obsId;
210160
210223
  if (layerType === "segmentation-bitmask") {
210161
210224
  const { obsIndex } = ((_a3 = segmentationMultiIndicesData == null ? void 0 : segmentationMultiIndicesData[segmentationLayerScope]) == null ? void 0 : _a3[channelScope]) || {};
210162
- obsI -= 1;
210163
210225
  if (obsIndex && bitmaskValueIsIndex) {
210226
+ obsI -= 1;
210164
210227
  obsId = obsIndex == null ? void 0 : obsIndex[obsI];
210165
210228
  } else {
210166
210229
  obsId = String(obsI);
@@ -210368,6 +210431,7 @@ function SpatialSubscriber(props) {
210368
210431
  segmentationLayerScopes,
210369
210432
  segmentationChannelScopesByLayer,
210370
210433
  segmentationChannelCoordination,
210434
+ obsSegmentationsSetsData,
210371
210435
  // Images
210372
210436
  imageLayerScopes,
210373
210437
  imageLayerCoordination
@@ -211213,11 +211277,11 @@ const Heatmap$1 = forwardRef((props, deckRef) => {
211213
211277
  ], layers, layerFilter, getCursor: (interactionState) => interactionState.isDragging ? "grabbing" : cursorType, glOptions: DEFAULT_GL_OPTIONS$1, onViewStateChange, viewState, onHover, useDevicePixels, onClick: onHeatmapClick });
211214
211278
  });
211215
211279
  function HeatmapTooltipSubscriber(props) {
211216
- const { parentUuid, width: width2, height: height2, transpose: transpose2, getObsInfo, getFeatureInfo, obsHighlight, featureHighlight } = props;
211280
+ const { parentUuid, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight, featureHighlight } = props;
211217
211281
  const sourceUuid = useComponentHover();
211218
211282
  const viewInfo = useComponentViewInfo(parentUuid);
211219
- const [cellInfo, cellCoord] = obsHighlight && getObsInfo ? [
211220
- getObsInfo(obsHighlight),
211283
+ const [cellInfo, cellCoord] = obsHighlight && getObsInfo2 ? [
211284
+ getObsInfo2(obsHighlight),
211221
211285
  viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsHighlight, null)[transpose2 ? 0 : 1] : null
211222
211286
  ] : [null, null];
211223
211287
  const [geneInfo, geneCoord] = featureHighlight && getFeatureInfo ? [
@@ -211263,7 +211327,7 @@ function HeatmapOptions(props) {
211263
211327
  }) })] }), jsxRuntimeExports.jsxs(TableRow$1, { children: [jsxRuntimeExports.jsx(TableCell$1, { className: classes.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsx("label", { htmlFor: `heatmap-gene-expression-colormap-range-${heatmapOptionsId}`, children: "Gene Expression Colormap Range" }) }), jsxRuntimeExports.jsx(TableCell$1, { className: classes.inputCell, variant: "body", children: jsxRuntimeExports.jsx(Slider$1, { classes: { root: classes.slider, valueLabel: classes.sliderValueLabel }, value: geneExpressionColormapRange, onChange: handleColormapRangeChangeDebounced, getAriaLabel: (index2) => index2 === 0 ? "Low value colormap range slider" : "High value colormap range slider", id: `heatmap-gene-expression-colormap-range-${heatmapOptionsId}`, valueLabelDisplay: "auto", step: 5e-3, min: 0, max: 1 }) })] })] });
211264
211328
  }
211265
211329
  function HeatmapSubscriber(props) {
211266
- const { uuid, coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, transpose: transpose2, observationsLabelOverride, variablesLabelOverride, title: title2 = "Heatmap" } = props;
211330
+ const { uuid, coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, transpose: transpose2, observationsLabelOverride, variablesLabelOverride, title: title2 = "Heatmap", helpText = ViewHelpMapping.HEATMAP } = props;
211267
211331
  const loaders = useLoaders();
211268
211332
  const setComponentHover = useSetComponentHover();
211269
211333
  const setComponentViewInfo = useSetComponentViewInfo(uuid);
@@ -211306,7 +211370,7 @@ function HeatmapSubscriber(props) {
211306
211370
  cellSetSelection,
211307
211371
  obsIndex
211308
211372
  ]);
211309
- const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
211373
+ const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
211310
211374
  const getObsMembership = useGetObsMembership(obsSetsMembership);
211311
211375
  const getFeatureInfo = useCallback((featureId) => {
211312
211376
  if (featureId) {
@@ -211338,7 +211402,7 @@ function HeatmapSubscriber(props) {
211338
211402
  `${capitalize$2(observationsLabel)} Set`
211339
211403
  ], [observationsLabel]);
211340
211404
  const selectedCount = cellColors.size;
211341
- return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(observationsLabel, cellsCount)} × ${commaNumber(genesCount)} ${pluralize(variablesLabel, genesCount)},
211405
+ return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, helpText, info: `${commaNumber(cellsCount)} ${pluralize(observationsLabel, cellsCount)} × ${commaNumber(genesCount)} ${pluralize(variablesLabel, genesCount)},
211342
211406
  with ${commaNumber(selectedCount)} ${pluralize(observationsLabel, selectedCount)} selected`, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady: isReady && !isRendering, options: jsxRuntimeExports.jsx(HeatmapOptions, { geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, tooltipsVisible, setTooltipsVisible }), children: [jsxRuntimeExports.jsx(Heatmap$1, { ref: deckRef, transpose: transpose2, viewState: { zoom: zoomX, target: [targetX2, targetY2] }, setViewState: ({ zoom: zoom2, target: target2 }) => {
211343
211407
  setZoomX(zoom2);
211344
211408
  setZoomY(zoom2);
@@ -211346,7 +211410,7 @@ function HeatmapSubscriber(props) {
211346
211410
  setTargetY(target2[1]);
211347
211411
  }, colormapRange: geneExpressionColormapRange, setColormapRange: setGeneExpressionColormapRange, height: height2, width: width2, theme, uuid, uint8ObsFeatureMatrix: uint8ObsFeatureMatrix == null ? void 0 : uint8ObsFeatureMatrix.data, cellColors, colormap: geneExpressionColormap, setIsRendering, setCellHighlight, setGeneHighlight, featureLabelsMap, obsIndex, featureIndex, setTrackHighlight, setComponentHover: () => {
211348
211412
  setComponentHover(uuid);
211349
- }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid, width: width2, height: height2, transpose: transpose2, getObsInfo, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
211413
+ }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
211350
211414
  }
211351
211415
  var AutoSizer$1 = {};
211352
211416
  var interopRequireDefault = { exports: {} };
@@ -215747,7 +215811,7 @@ function FeatureListOptions(props) {
215747
215811
  } }) })] })] }) : null] });
215748
215812
  }
215749
215813
  function FeatureListSubscriber(props) {
215750
- const { coordinationScopes, removeGridComponent, variablesLabelOverride, theme, title: titleOverride, enableMultiSelect = false, showTable = false, sort: sort2 = "alphabetical", sortKey: sortKey2 = null, closeButtonVisible, downloadButtonVisible } = props;
215814
+ const { coordinationScopes, removeGridComponent, variablesLabelOverride, theme, title: titleOverride, enableMultiSelect = false, showTable = false, sort: sort2 = "alphabetical", sortKey: sortKey2 = null, closeButtonVisible, downloadButtonVisible, helpText = ViewHelpMapping.FEATURE_LIST } = props;
215751
215815
  const loaders = useLoaders();
215752
215816
  const [{ dataset, obsType, featureType, featureSelection: geneSelection, featureFilter: geneFilter, obsColorEncoding: cellColorEncoding }, { setFeatureSelection: setGeneSelection, setFeatureFilter: setGeneFilter, setFeatureHighlight: setGeneHighlight, setObsColorEncoding: setCellColorEncoding }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.FEATURE_LIST], coordinationScopes);
215753
215817
  const variablesLabel = variablesLabelOverride || featureType;
@@ -215787,6 +215851,7 @@ function FeatureListSubscriber(props) {
215787
215851
  removeGridComponent,
215788
215852
  isReady,
215789
215853
  urls: urls2,
215854
+ helpText,
215790
215855
  options: jsxRuntimeExports.jsx(FeatureListOptions, { featureListSort, setFeatureListSort, featureListSortKey: featureListSortKey || initialSortKey, setFeatureListSortKey, showFeatureTable, setShowFeatureTable, hasFeatureLabels: Boolean(featureLabelsMap), primaryColumnName }),
215791
215856
  children: jsxRuntimeExports.jsx(FeatureList, { hasColorEncoding: cellColorEncoding === "geneSelection", showFeatureTable, geneList, featureListSort, featureListSortKey: featureListSortKey || initialSortKey, featureLabelsMap, featureType, geneSelection, geneFilter, setGeneSelection: setGeneSelectionAndColorEncoding, setGeneFilter, setGeneHighlight, enableMultiSelect, hasFeatureLabels: Boolean(featureLabelsMap), primaryColumnName })
215792
215857
  });
@@ -216609,10 +216674,11 @@ const LayerControllerMemoized = React__default.memo(forwardRef((props, ref2) =>
216609
216674
  componentWidth,
216610
216675
  spatialLayout,
216611
216676
  handleImageAdd,
216612
- enableLayerButtonsWithOneLayer
216677
+ enableLayerButtonsWithOneLayer,
216678
+ helpText
216613
216679
  } = props;
216614
216680
  const shouldShowImageLayerButton = Boolean(enableLayerButtonsWithOneLayer || (imageLayerLoaders == null ? void 0 : imageLayerLoaders.length) > 1);
216615
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, children: jsxRuntimeExports.jsxs("div", { className: "layer-controller-container", ref: ref2, children: [moleculesLayer && jsxRuntimeExports.jsx(VectorLayerController, { label: "Molecules", layerType: "molecules", layer: moleculesLayer, handleLayerChange: setMoleculesLayer }, `${dataset}-molecules`), cellsLayer && obsSegmentationsType === "polygon" && jsxRuntimeExports.jsx(VectorLayerController, { label: `${capitalize$2(obsType)} Segmentations`, layerType: "cells", layer: cellsLayer, handleLayerChange: setCellsLayer }, `${dataset}-cells`), cellsLayer && obsSegmentationsType === "bitmask" && cellsLayer.map((layer, i2) => {
216681
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, helpText, children: jsxRuntimeExports.jsxs("div", { className: "layer-controller-container", ref: ref2, children: [moleculesLayer && jsxRuntimeExports.jsx(VectorLayerController, { label: "Molecules", layerType: "molecules", layer: moleculesLayer, handleLayerChange: setMoleculesLayer }, `${dataset}-molecules`), cellsLayer && obsSegmentationsType === "polygon" && jsxRuntimeExports.jsx(VectorLayerController, { label: `${capitalize$2(obsType)} Segmentations`, layerType: "cells", layer: cellsLayer, handleLayerChange: setCellsLayer }, `${dataset}-cells`), cellsLayer && obsSegmentationsType === "bitmask" && cellsLayer.map((layer, i2) => {
216616
216682
  const { index: index2 } = layer;
216617
216683
  const loader2 = segmentationLayerLoaders == null ? void 0 : segmentationLayerLoaders[index2];
216618
216684
  const layerMeta = segmentationLayerMeta == null ? void 0 : segmentationLayerMeta[index2];
@@ -216727,7 +216793,7 @@ const LayerControllerMemoized = React__default.memo(forwardRef((props, ref2) =>
216727
216793
  }), shouldShowImageLayerButton ? jsxRuntimeExports.jsx(Grid$3, { item: true, children: jsxRuntimeExports.jsx(ImageAddButton, { imageOptions: imageLayerMeta, handleImageAdd }) }) : null] }) });
216728
216794
  }));
216729
216795
  function LayerControllerSubscriber$1(props) {
216730
- const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Spatial Layers", disable3d, globalDisable3d, disableChannelsIfRgbDetected, enableLayerButtonsWithOneLayer } = props;
216796
+ const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Spatial Layers", disable3d, globalDisable3d, disableChannelsIfRgbDetected, enableLayerButtonsWithOneLayer, helpText = ViewHelpMapping.LAYER_CONTROLLER } = props;
216731
216797
  const loaders = useLoaders();
216732
216798
  const [{ dataset, obsType, spatialImageLayer: rasterLayers, spatialSegmentationLayer: cellsLayer, spatialPointLayer: moleculesLayer }, { setSpatialImageLayer: setRasterLayers, setSpatialSegmentationLayer: setCellsLayer, setSpatialPointLayer: setMoleculesLayer, setSpatialTargetX: setTargetX, setSpatialTargetY: setTargetY, setSpatialTargetZ: setTargetZ, setSpatialRotationX: setRotationX, setSpatialRotationOrbit: setRotationOrbit, setSpatialZoom: setZoom }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.LAYER_CONTROLLER], coordinationScopes);
216733
216799
  const [{ imageLayerCallbacks, areLoadingImageChannels, segmentationLayerCallbacks, areLoadingSegmentationChannels }, { setImageLayerCallbacks, setAreLoadingImageChannels, setSegmentationLayerCallbacks, setAreLoadingSegmentationChannels }] = useAuxiliaryCoordination(COMPONENT_COORDINATION_TYPES.layerController, coordinationScopes);
@@ -216795,6 +216861,7 @@ function LayerControllerSubscriber$1(props) {
216795
216861
  setMoleculesLayer,
216796
216862
  cellsLayer,
216797
216863
  setCellsLayer,
216864
+ helpText,
216798
216865
  rasterLayers,
216799
216866
  imageLayerLoaders,
216800
216867
  imageLayerMeta,
@@ -218558,7 +218625,7 @@ function Status(props) {
218558
218625
  return messages2;
218559
218626
  }
218560
218627
  function StatusSubscriber(props) {
218561
- const { coordinationScopes, closeButtonVisible, removeGridComponent, theme, title: title2 = "Status" } = props;
218628
+ const { coordinationScopes, closeButtonVisible, removeGridComponent, theme, title: title2 = "Status", helpText = ViewHelpMapping.STATUS } = props;
218562
218629
  const [{ obsHighlight: cellHighlight, featureHighlight: geneHighlight, moleculeHighlight }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.STATUS], coordinationScopes);
218563
218630
  const warn2 = useWarning();
218564
218631
  const infos = [
@@ -218567,7 +218634,7 @@ function StatusSubscriber(props) {
218567
218634
  ...moleculeHighlight ? [`Hovered gene ${moleculeHighlight}`] : []
218568
218635
  ];
218569
218636
  const info2 = infos.join("; ");
218570
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, theme, closeButtonVisible, removeGridComponent, isScroll: true, isReady: true, children: jsxRuntimeExports.jsx(Status, { warn: warn2, info: info2 }) });
218637
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, theme, closeButtonVisible, removeGridComponent, isScroll: true, isReady: true, helpText, children: jsxRuntimeExports.jsx(Status, { warn: warn2, info: info2 }) });
218571
218638
  }
218572
218639
  window.higlassTracks = window.higlassTracks || {};
218573
218640
  window.higlassTracksByType = window.higlassTracksByType || {};
@@ -220133,7 +220200,7 @@ const useStyles$2 = makeStyles((theme) => ({
220133
220200
  }));
220134
220201
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
220135
220202
  const LazyHiGlassComponent = React__default.lazy(async () => {
220136
- const { HiGlassComponent } = await import("./higlass-79b185c3.js");
220203
+ const { HiGlassComponent } = await import("./higlass-32a71267.js");
220137
220204
  return { default: HiGlassComponent };
220138
220205
  });
220139
220206
  const HG_SIZE = 800;
@@ -220300,7 +220367,7 @@ const REFERENCE_STATIC_FILES = {
220300
220367
  }
220301
220368
  };
220302
220369
  function GenomicProfilesSubscriber(props) {
220303
- const { coordinationScopes, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, profileTrackUidKey = "path", profileTrackNameKey = null, higlassServer = "https://higlass.io/api/v1", assembly = "hg38", title: title2 = "Genomic Profiles", showGeneAnnotations = true } = props;
220370
+ const { coordinationScopes, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, profileTrackUidKey = "path", profileTrackNameKey = null, higlassServer = "https://higlass.io/api/v1", assembly = "hg38", title: title2 = "Genomic Profiles", showGeneAnnotations = true, helpText = ViewHelpMapping.GENOMIC_PROFILES } = props;
220304
220371
  const [width2, height2, containerRef] = useGridItemSize();
220305
220372
  const loaders = useLoaders();
220306
220373
  const [{ dataset, obsSetColor: cellSetColor, obsSetSelection: cellSetSelection }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.GENOMIC_PROFILES], coordinationScopes);
@@ -220436,7 +220503,7 @@ function GenomicProfilesSubscriber(props) {
220436
220503
  assembly
220437
220504
  ]);
220438
220505
  const classes = useStyles$2();
220439
- return jsxRuntimeExports.jsx("div", { className: classes.higlassTitleWrapper, children: jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, urls: urls2, children: jsxRuntimeExports.jsx("div", { className: classes.higlassLazyWrapper, ref: containerRef, children: hgViewConfig ? jsxRuntimeExports.jsx(HiGlassLazy, { coordinationScopes, theme, hgViewConfig, height: height2 }) : null }) }) });
220506
+ return jsxRuntimeExports.jsx("div", { className: classes.higlassTitleWrapper, children: jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, urls: urls2, helpText, children: jsxRuntimeExports.jsx("div", { className: classes.higlassLazyWrapper, ref: containerRef, children: hgViewConfig ? jsxRuntimeExports.jsx(HiGlassLazy, { coordinationScopes, theme, hgViewConfig, height: height2 }) : null }) }) });
220440
220507
  }
220441
220508
  function CellSetExpressionPlotOptions(props) {
220442
220509
  const { featureValueTransform, setFeatureValueTransform, featureValueTransformCoefficient, setFeatureValueTransformCoefficient, transformOptions, featureValuePositivityThreshold, setFeatureValuePositivityThreshold, featureValueColormap, setFeatureValueColormap } = props;
@@ -225566,7 +225633,7 @@ function useExpressionByCellSet(sampleEdges, sampleSets, sampleSetSelection, exp
225566
225633
  }
225567
225634
  function CellSetExpressionPlotSubscriber(props) {
225568
225635
  var _a3;
225569
- const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, jitter: jitter2 = false, yMin = null, yUnits = null } = props;
225636
+ const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, jitter: jitter2 = false, yMin = null, yUnits = null, helpText = ViewHelpMapping.OBS_SET_FEATURE_VALUE_DISTRIBUTION } = props;
225570
225637
  const classes = useStyles$1();
225571
225638
  const loaders = useLoaders();
225572
225639
  const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, featureValueTransform, featureValueTransformCoefficient, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets, sampleType, sampleSetSelection, sampleSetColor }, { setFeatureValueTransform, setFeatureValueTransformCoefficient, setSampleSetColor }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.OBS_SET_FEATURE_VALUE_DISTRIBUTION], coordinationScopes);
@@ -225596,7 +225663,7 @@ function CellSetExpressionPlotSubscriber(props) {
225596
225663
  const [histogramData, setArr, exprMax] = useExpressionByCellSet(sampleEdges, sampleSets, sampleSetSelection, expressionData, obsIndex, cellSets, additionalCellSets, geneSelection, cellSetSelection, cellSetColor, featureValueTransform, featureValueTransformCoefficient, theme, yMin);
225597
225664
  const firstGeneSelected = geneSelection && geneSelection.length >= 1 ? (featureLabelsMap == null ? void 0 : featureLabelsMap.get(geneSelection[0])) || geneSelection[0] : null;
225598
225665
  const selectedTransformName = (_a3 = transformOptions.find((o2) => o2.value === featureValueTransform)) == null ? void 0 : _a3.name;
225599
- return jsxRuntimeExports.jsx(TitleInfo, { title: `Expression by ${capitalize$2(obsType)} Set${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, options: jsxRuntimeExports.jsx(CellSetExpressionPlotOptions, { featureValueTransform, setFeatureValueTransform, featureValueTransformCoefficient, setFeatureValueTransformCoefficient, transformOptions }), children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: histogramData ? jsxRuntimeExports.jsx(CellSetExpressionPlot, { yMin, yUnits, jitter: jitter2, cellSetSelection, sampleSetSelection, sampleSetColor, colors: setArr, data: histogramData, exprMax, theme, width: width2, height: height2, obsType, featureType, featureValueType, featureValueTransformName: selectedTransformName }) : jsxRuntimeExports.jsxs("span", { children: ["Select a ", featureType, "."] }) }) });
225666
+ return jsxRuntimeExports.jsx(TitleInfo, { title: `Expression by ${capitalize$2(obsType)} Set${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, options: jsxRuntimeExports.jsx(CellSetExpressionPlotOptions, { featureValueTransform, setFeatureValueTransform, featureValueTransformCoefficient, setFeatureValueTransformCoefficient, transformOptions }), children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: histogramData ? jsxRuntimeExports.jsx(CellSetExpressionPlot, { yMin, yUnits, jitter: jitter2, cellSetSelection, sampleSetSelection, sampleSetColor, colors: setArr, data: histogramData, exprMax, theme, width: width2, height: height2, obsType, featureType, featureValueType, featureValueTransformName: selectedTransformName }) : jsxRuntimeExports.jsxs("span", { children: ["Select a ", featureType, "."] }) }) });
225600
225667
  }
225601
225668
  /*! *****************************************************************************
225602
225669
  Copyright (c) Microsoft Corporation.
@@ -241964,7 +242031,7 @@ inherits(Projection$1, Transform2, {
241964
242031
  transform(_, pulse2) {
241965
242032
  let proj = this.value;
241966
242033
  if (!proj || _.modified("type")) {
241967
- this.value = proj = create5(_.type);
242034
+ this.value = proj = create4(_.type);
241968
242035
  projectionProperties.forEach((prop) => {
241969
242036
  if (_[prop] != null)
241970
242037
  set$3(proj, prop, _[prop]);
@@ -241986,7 +242053,7 @@ function fit(proj, _) {
241986
242053
  const data2 = collectGeoJSON(_.fit);
241987
242054
  _.extent ? proj.fitExtent(_.extent, data2) : _.size ? proj.fitSize(_.size, data2) : 0;
241988
242055
  }
241989
- function create5(type2) {
242056
+ function create4(type2) {
241990
242057
  const constructor = projection((type2 || "mercator").toLowerCase());
241991
242058
  if (!constructor)
241992
242059
  error("Unrecognized projection type: " + type2);
@@ -250793,8 +250860,8 @@ function bind3(view, el2, binding) {
250793
250860
  bind4.update = debounce(param2.debounce, bind4.update);
250794
250861
  }
250795
250862
  }
250796
- const create6 = param2.input == null && param2.element ? target : generate$1;
250797
- create6(bind4, el2, param2, view);
250863
+ const create5 = param2.input == null && param2.element ? target : generate$1;
250864
+ create5(bind4, el2, param2, view);
250798
250865
  if (!bind4.active) {
250799
250866
  view.on(view._signals[param2.signal], null, () => {
250800
250867
  bind4.source ? bind4.source = false : bind4.set(view.signal(param2.signal));
@@ -277119,7 +277186,7 @@ function CellSetSizesPlot(props) {
277119
277186
  return jsxRuntimeExports.jsx(VegaPlot, { data: data2, spec, signalListeners, getTooltipText });
277120
277187
  }
277121
277188
  function CellSetSizesPlotSubscriber(props) {
277122
- const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: titleOverride } = props;
277189
+ const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: titleOverride, helpText = ViewHelpMapping.OBS_SET_SIZES } = props;
277123
277190
  const classes = useStyles$1();
277124
277191
  const loaders = useLoaders();
277125
277192
  const [{ dataset, obsType, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets, obsSetExpansion: cellSetExpansion }, { setObsSetSelection: setCellSetSelection, setObsSetColor: setCellSetColor }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.OBS_SET_SIZES], coordinationScopes);
@@ -277166,7 +277233,7 @@ function CellSetSizesPlotSubscriber(props) {
277166
277233
  setCellSetSelection([...cellSetSelection, setNamePath]);
277167
277234
  }
277168
277235
  };
277169
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: jsxRuntimeExports.jsx(CellSetSizesPlot, { data: data2, onBarSelect, theme, width: width2, height: height2, obsType }) }) });
277236
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: jsxRuntimeExports.jsx(CellSetSizesPlot, { data: data2, onBarSelect, theme, width: width2, height: height2, obsType }) }) });
277170
277237
  }
277171
277238
  function ExpressionHistogram(props) {
277172
277239
  const { geneSelection, obsType, featureType, featureValueType, data: data2, theme, width: width2, height: height2, marginRight = 90, marginBottom = 50, onSelect } = props;
@@ -277225,7 +277292,7 @@ function ExpressionHistogram(props) {
277225
277292
  return jsxRuntimeExports.jsx(VegaPlot, { data: data2, signalListeners, spec });
277226
277293
  }
277227
277294
  function ExpressionHistogramSubscriber(props) {
277228
- const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme } = props;
277295
+ const { coordinationScopes, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, helpText = ViewHelpMapping.FEATURE_VALUE_HISTOGRAM } = props;
277229
277296
  const classes = useStyles$1();
277230
277297
  const loaders = useLoaders();
277231
277298
  const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, additionalObsSets: additionalCellSets, obsSetColor: cellSetColor }, { setAdditionalObsSets: setAdditionalCellSets, setObsSetColor: setCellSetColor, setObsColorEncoding: setCellColorEncoding, setObsSetSelection: setCellSetSelection }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.FEATURE_VALUE_HISTOGRAM], coordinationScopes);
@@ -277273,7 +277340,7 @@ function ExpressionHistogramSubscriber(props) {
277273
277340
  setCellSetSelection,
277274
277341
  firstGeneSelected
277275
277342
  ]);
277276
- return jsxRuntimeExports.jsx(TitleInfo, { title: `Histogram${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: jsxRuntimeExports.jsx(ExpressionHistogram, { geneSelection, obsType, featureType, featureValueType, onSelect, data: data2, theme, width: width2, height: height2 }) }) });
277343
+ return jsxRuntimeExports.jsx(TitleInfo, { title: `Histogram${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: jsxRuntimeExports.jsx(ExpressionHistogram, { geneSelection, obsType, featureType, featureValueType, onSelect, data: data2, theme, width: width2, height: height2 }) }) });
277277
277344
  }
277278
277345
  function DotPlot(props) {
277279
277346
  const { isStratified, transpose: transpose2, data: rawData, theme, width: width2, height: height2, marginRight, marginBottom, obsType, keyLength = 36, featureType, featureValueType, featureValueTransformName, featureValueColormap, cellSetSelection } = props;
@@ -277425,7 +277492,7 @@ function useExpressionSummaries(sampleEdges, sampleSets, sampleSetSelection, exp
277425
277492
  }
277426
277493
  function DotPlotSubscriber(props) {
277427
277494
  var _a3;
277428
- const { coordinationScopes, removeGridComponent, theme, title: title2 = "Dot Plot", transpose: transpose2 = true } = props;
277495
+ const { coordinationScopes, removeGridComponent, theme, title: title2 = "Dot Plot", transpose: transpose2 = true, helpText = ViewHelpMapping.DOT_PLOT } = props;
277429
277496
  const classes = useStyles$1();
277430
277497
  const loaders = useLoaders();
277431
277498
  const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, featureValueTransform, featureValueTransformCoefficient, featureValuePositivityThreshold: posThreshold, featureValueColormap, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, additionalObsSets: additionalCellSets, sampleType, sampleSetSelection }, { setFeatureValueTransform, setFeatureValueTransformCoefficient, setFeatureValuePositivityThreshold: setPosThreshold, setFeatureValueColormap }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.DOT_PLOT], coordinationScopes);
@@ -277455,7 +277522,7 @@ function DotPlotSubscriber(props) {
277455
277522
  ]);
277456
277523
  const [resultArr, meanExpressionMax] = useExpressionSummaries(sampleEdges, sampleSets, sampleSetSelection, expressionData, obsIndex, cellSets, additionalCellSets, geneSelection, cellSetSelection, cellSetColor, featureValueTransform, featureValueTransformCoefficient, posThreshold, featureLabelsMap);
277457
277524
  const selectedTransformName = (_a3 = transformOptions.find((o2) => o2.value === featureValueTransform)) == null ? void 0 : _a3.name;
277458
- return jsxRuntimeExports.jsx(TitleInfo, { title: title2, removeGridComponent, urls: urls2, theme, isReady, options: jsxRuntimeExports.jsx(CellSetExpressionPlotOptions, { featureValueTransform, setFeatureValueTransform, featureValueTransformCoefficient, setFeatureValueTransformCoefficient, transformOptions, featureValuePositivityThreshold: posThreshold, setFeatureValuePositivityThreshold: setPosThreshold, featureValueColormap, setFeatureValueColormap }), children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: resultArr ? jsxRuntimeExports.jsx(DotPlot, { isStratified, transpose: transpose2, domainMax: meanExpressionMax, data: resultArr, theme, width: width2, height: height2, obsType, featureType, featureValueType, featureValueTransformName: selectedTransformName, featureValueColormap, cellSetSelection }) : jsxRuntimeExports.jsxs("span", { children: ["Select at least one ", featureType, "."] }) }) });
277525
+ return jsxRuntimeExports.jsx(TitleInfo, { title: title2, removeGridComponent, urls: urls2, theme, isReady, helpText, options: jsxRuntimeExports.jsx(CellSetExpressionPlotOptions, { featureValueTransform, setFeatureValueTransform, featureValueTransformCoefficient, setFeatureValueTransformCoefficient, transformOptions, featureValuePositivityThreshold: posThreshold, setFeatureValuePositivityThreshold: setPosThreshold, featureValueColormap, setFeatureValueColormap }), children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: resultArr ? jsxRuntimeExports.jsx(DotPlot, { isStratified, transpose: transpose2, domainMax: meanExpressionMax, data: resultArr, theme, width: width2, height: height2, obsType, featureType, featureValueType, featureValueTransformName: selectedTransformName, featureValueColormap, cellSetSelection }) : jsxRuntimeExports.jsxs("span", { children: ["Select at least one ", featureType, "."] }) }) });
277459
277526
  }
277460
277527
  const scaleBand = scale$5("band");
277461
277528
  const OBS_KEY = "obsId";
@@ -277567,7 +277634,7 @@ function FeatureBarPlot(props) {
277567
277634
  } });
277568
277635
  }
277569
277636
  function FeatureBarPlotSubscriber(props) {
277570
- const { coordinationScopes, removeGridComponent, theme, yMin = 0, yUnits = null } = props;
277637
+ const { coordinationScopes, removeGridComponent, theme, yMin = 0, yUnits = null, helpText = ViewHelpMapping.FEATURE_BAR_PLOT } = props;
277571
277638
  const classes = useStyles$1();
277572
277639
  const loaders = useLoaders();
277573
277640
  const [{ dataset, obsType, featureType, featureValueType, featureSelection: geneSelection, featureValueTransform, featureValueTransformCoefficient, obsHighlight: cellHighlight, additionalObsSets: additionalCellSets, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor }, { setObsSetSelection: setCellSetSelection, setObsHighlight: setCellHighlight, setObsSetColor: setCellSetColor, setObsColorEncoding: setCellColorEncoding, setAdditionalObsSets: setAdditionalCellSets }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.FEATURE_BAR_PLOT], coordinationScopes);
@@ -277623,7 +277690,7 @@ function FeatureBarPlotSubscriber(props) {
277623
277690
  featureValueTransformCoefficient,
277624
277691
  firstGeneSelected
277625
277692
  ]);
277626
- return jsxRuntimeExports.jsx(TitleInfo, { title: `Feature Values${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, removeGridComponent, urls: urls2, theme, isReady, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: expressionArr ? jsxRuntimeExports.jsx(FeatureBarPlot, { yMin, yMax: expressionMax, yUnits, data: expressionArr, theme, width: width2, height: height2, obsType, cellHighlight, cellSetSelection, additionalCellSets, cellSetColor, featureType, featureValueType, featureName: firstGeneSelected, onBarSelect, onBarHighlight }) : jsxRuntimeExports.jsxs("span", { children: ["Select a ", featureType, "."] }) }) });
277693
+ return jsxRuntimeExports.jsx(TitleInfo, { title: `Feature Values${firstGeneSelected ? ` (${firstGeneSelected})` : ""}`, removeGridComponent, urls: urls2, theme, isReady, helpText, children: jsxRuntimeExports.jsx("div", { ref: containerRef, className: classes.vegaContainer, children: expressionArr ? jsxRuntimeExports.jsx(FeatureBarPlot, { yMin, yMax: expressionMax, yUnits, data: expressionArr, theme, width: width2, height: height2, obsType, cellHighlight, cellSetSelection, additionalCellSets, cellSetColor, featureType, featureValueType, featureName: firstGeneSelected, onBarSelect, onBarHighlight }) : jsxRuntimeExports.jsxs("span", { children: ["Select a ", featureType, "."] }) }) });
277627
277694
  }
277628
277695
  class CsvSource {
277629
277696
  constructor({ url, requestInit: requestInit2 }) {
@@ -280509,7 +280576,6 @@ class SpatialDataObsSetsLoader extends ObsSetsAnndataLoader {
280509
280576
  constructor(dataSource, params2) {
280510
280577
  super(dataSource, params2);
280511
280578
  this.region = this.options.region;
280512
- this.options = this.options.obsSets;
280513
280579
  }
280514
280580
  }
280515
280581
  class GenomicProfilesZarrLoader extends AbstractTwoStepLoader {
@@ -314656,6 +314722,7 @@ const baseCoordinationTypes = [
314656
314722
  new PluginCoordinationType(CoordinationType$1.FEATURE_TYPE, "gene", z.string()),
314657
314723
  new PluginCoordinationType(CoordinationType$1.FEATURE_VALUE_TYPE, "expression", z.string()),
314658
314724
  new PluginCoordinationType(CoordinationType$1.OBS_LABELS_TYPE, null, z.string().nullable()),
314725
+ new PluginCoordinationType(CoordinationType$1.FEATURE_LABELS_TYPE, null, z.string().nullable()),
314659
314726
  new PluginCoordinationType(CoordinationType$1.EMBEDDING_ZOOM, null, z.number().nullable()),
314660
314727
  new PluginCoordinationType(CoordinationType$1.EMBEDDING_ROTATION, 0, z.number().nullable()),
314661
314728
  new PluginCoordinationType(CoordinationType$1.EMBEDDING_TARGET_X, null, z.number().nullable()),