@vitessce/launcher 3.9.1 → 3.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { aG as getDefaultExportFromCjs, aH as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aI as PCFSoftShadowMap, aJ as VSMShadowMap, aK as PCFShadowMap, aL as BasicShadowMap, aM as NoToneMapping, aN as ACESFilmicToneMapping, e as Vector3, V as Vector2, aO as Clock, aP as WebGLRenderer, aQ as Camera, x as BufferGeometry, r as Material, aR as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aS as THREE, aT as EventDispatcher, aU as MOUSE, aV as TOUCH, aW as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-eLeCPCoI.js";
1
+ import { aG as getDefaultExportFromCjs, aH as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aI as PCFSoftShadowMap, aJ as VSMShadowMap, aK as PCFShadowMap, aL as BasicShadowMap, aM as NoToneMapping, aN as ACESFilmicToneMapping, e as Vector3, V as Vector2, aO as Clock, aP as WebGLRenderer, aQ as Camera, x as BufferGeometry, r as Material, aR as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aS as THREE, aT as EventDispatcher, aU as MOUSE, aV as TOUCH, aW as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-kqgO-sn-.js";
2
2
  import * as React from "react";
3
3
  import React__default, { useReducer, useRef, useEffect, useLayoutEffect, useDebugValue, useState, useMemo } from "react";
4
4
  var constants = { exports: {} };
@@ -1,4 +1,4 @@
1
- import { aG as getDefaultExportFromCjs, b1 as requireAssign, b2 as require_export, b3 as require_core, b4 as require_fails, b5 as require_toObject, b6 as require_objectKeys, b7 as require_cof, b8 as require_wks, b9 as require_iterators, ba as requireWeb_dom_iterable, bb as requireEs6_string_iterator, bc as require_anObject, bd as require_hide, be as require_ctx, bf as require_toLength, bg as require_global, bh as require_objectDp, bi as require_descriptors, bj as require_isObject, bk as require_objectCreate, bl as require_iterDefine, bm as require_iterStep, bn as require_meta, bo as require_isArray, bp as require_iobject, bq as require_setToStringTag, br as require_aFunction, bs as requireIterator, bt as require_propertyDesc, a_ as commonjsGlobal, bu as requireEs6_symbol, bv as requireDefineProperty, bw as require_toIobject, bx as require_objectGopd, by as require_html, bz as require_domCreate, bA as require_library, bB as requireSymbol, bC as require_objectPie, bD as require_has, bE as require_redefine, bF as require_objectAssign, bG as diffCameraState, ao as jsxRuntimeExports } from "./index-eLeCPCoI.js";
1
+ import { aG as getDefaultExportFromCjs, b1 as requireAssign, b2 as require_export, b3 as require_core, b4 as require_fails, b5 as require_toObject, b6 as require_objectKeys, b7 as require_cof, b8 as require_wks, b9 as require_iterators, ba as requireWeb_dom_iterable, bb as requireEs6_string_iterator, bc as require_anObject, bd as require_hide, be as require_ctx, bf as require_toLength, bg as require_global, bh as require_objectDp, bi as require_descriptors, bj as require_isObject, bk as require_objectCreate, bl as require_iterDefine, bm as require_iterStep, bn as require_meta, bo as require_isArray, bp as require_iobject, bq as require_setToStringTag, br as require_aFunction, bs as requireIterator, bt as require_propertyDesc, a_ as commonjsGlobal, bu as requireEs6_symbol, bv as requireDefineProperty, bw as require_toIobject, bx as require_objectGopd, by as require_html, bz as require_domCreate, bA as require_library, bB as requireSymbol, bC as require_objectPie, bD as require_has, bE as require_redefine, bF as require_objectAssign, bG as diffCameraState, ao as jsxRuntimeExports } from "./index-kqgO-sn-.js";
2
2
  import React__default from "react";
3
3
  var assignExports = requireAssign();
4
4
  const _Object$assign = /* @__PURE__ */ getDefaultExportFromCjs(assignExports);
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
2
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
3
3
  class DeflateDecoder extends BaseDecoder {
4
4
  decodeBlock(buffer) {
5
5
  return inflate_1(new Uint8Array(buffer)).buffer;
@@ -1,7 +1,7 @@
1
1
  import * as React$7 from "react";
2
2
  import React__default, { isValidElement, PureComponent, Component, createElement, createContext, createRef } from "react";
3
3
  import ReactDOM__default, { findDOMNode as findDOMNode$1 } from "react-dom";
4
- import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-eLeCPCoI.js";
4
+ import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-kqgO-sn-.js";
5
5
  var promise = {};
6
6
  var hasRequiredPromise;
7
7
  function requirePromise() {
@@ -1,7 +1,7 @@
1
- import { G as Group, M as Matrix4, T as TrianglesDrawMode, a as TriangleFanDrawMode, b as TriangleStripDrawMode, R as REVISION, L as Loader, c as LoaderUtils, F as FileLoader, d as MeshPhysicalMaterial, V as Vector2, C as Color, S as SpotLight, P as PointLight, D as DirectionalLight, e as Vector3, I as InstancedMesh, Q as Quaternion, O as Object3D, f as TextureLoader, g as ImageBitmapLoader, B as BufferAttribute, h as InterleavedBuffer, i as LinearMipmapLinearFilter, N as NearestMipmapLinearFilter, j as LinearMipmapNearestFilter, k as NearestMipmapNearestFilter, l as LinearFilter, m as NearestFilter, n as RepeatWrapping, o as MirroredRepeatWrapping, p as ClampToEdgeWrapping, q as PointsMaterial, r as Material, s as LineBasicMaterial, t as MeshStandardMaterial, u as DoubleSide, v as MeshBasicMaterial, w as PropertyBinding, x as BufferGeometry, y as SkinnedMesh, z as Mesh, A as LineSegments, E as Line$1, H as LineLoop, J as Points, K as PerspectiveCamera, U as MathUtils, W as OrthographicCamera, X as Skeleton, Y as InterpolateDiscrete, Z as InterpolateLinear, _ as AnimationClip, $ as Bone, a0 as InterleavedBufferAttribute, a1 as Texture, a2 as VectorKeyframeTrack, a3 as QuaternionKeyframeTrack, a4 as NumberKeyframeTrack, a5 as FrontSide, a6 as Interpolant, a7 as Box3, a8 as Sphere, a9 as InstancedBufferGeometry, aa as Float32BufferAttribute, ab as InstancedInterleavedBuffer, ac as WireframeGeometry, ad as ShaderMaterial, ae as UniformsUtils, af as UniformsLib, ag as Vector4, ah as Line3, ai as SphereGeometry, aj as _extends, ak as Plane, al as Triangle, am as BackSide, an as Ray$1, ao as jsxRuntimeExports, ap as Matrix3, aq as CoordinationType, ar as Data3DTexture, as as RedFormat, at as FloatType, au as getImageSize, av as Scene } from "./index-eLeCPCoI.js";
1
+ import { G as Group, M as Matrix4, T as TrianglesDrawMode, a as TriangleFanDrawMode, b as TriangleStripDrawMode, R as REVISION, L as Loader, c as LoaderUtils, F as FileLoader, d as MeshPhysicalMaterial, V as Vector2, C as Color, S as SpotLight, P as PointLight, D as DirectionalLight, e as Vector3, I as InstancedMesh, Q as Quaternion, O as Object3D, f as TextureLoader, g as ImageBitmapLoader, B as BufferAttribute, h as InterleavedBuffer, i as LinearMipmapLinearFilter, N as NearestMipmapLinearFilter, j as LinearMipmapNearestFilter, k as NearestMipmapNearestFilter, l as LinearFilter, m as NearestFilter, n as RepeatWrapping, o as MirroredRepeatWrapping, p as ClampToEdgeWrapping, q as PointsMaterial, r as Material, s as LineBasicMaterial, t as MeshStandardMaterial, u as DoubleSide, v as MeshBasicMaterial, w as PropertyBinding, x as BufferGeometry, y as SkinnedMesh, z as Mesh, A as LineSegments, E as Line$1, H as LineLoop, J as Points, K as PerspectiveCamera, U as MathUtils, W as OrthographicCamera, X as Skeleton, Y as InterpolateDiscrete, Z as InterpolateLinear, _ as AnimationClip, $ as Bone, a0 as InterleavedBufferAttribute, a1 as Texture, a2 as VectorKeyframeTrack, a3 as QuaternionKeyframeTrack, a4 as NumberKeyframeTrack, a5 as FrontSide, a6 as Interpolant, a7 as Box3, a8 as Sphere, a9 as InstancedBufferGeometry, aa as Float32BufferAttribute, ab as InstancedInterleavedBuffer, ac as WireframeGeometry, ad as ShaderMaterial, ae as UniformsUtils, af as UniformsLib, ag as Vector4, ah as Line3, ai as SphereGeometry, aj as _extends, ak as Plane, al as Triangle, am as BackSide, an as Ray$1, ao as jsxRuntimeExports, ap as Matrix3, aq as CoordinationType, ar as Data3DTexture, as as RedFormat, at as FloatType, au as getImageSize, av as Scene } from "./index-kqgO-sn-.js";
2
2
  import * as React from "react";
3
3
  import { useRef, useEffect, useState, forwardRef } from "react";
4
- import { u as useThree, a as useFrame, c as create, e as extend, b as createPortal, O as OrbitControls, C as Canvas } from "./OrbitControls-BtkbJnAk.js";
4
+ import { u as useThree, a as useFrame, c as create, e as extend, b as createPortal, O as OrbitControls, C as Canvas } from "./OrbitControls-DGRrAiaM.js";
5
5
  const isPromise = (promise) => typeof promise === "object" && typeof promise.then === "function";
6
6
  const globalCache = [];
7
7
  function shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {
@@ -5027,7 +5027,7 @@ const Text = /* @__PURE__ */ React.forwardRef(({
5027
5027
  const {
5028
5028
  Text: TextMeshImpl,
5029
5029
  preloadFont
5030
- } = suspend(async () => import("./troika-three-text.esm-r2x4vDIr.js"), []);
5030
+ } = suspend(async () => import("./troika-three-text.esm-HIyc43x2.js"), []);
5031
5031
  const invalidate = useThree(({
5032
5032
  invalidate: invalidate2
5033
5033
  }) => invalidate2);
@@ -1,6 +1,6 @@
1
- import { aw as log, ax as isEqual, ar as Data3DTexture, as as RedFormat, ay as UnsignedByteType, l as LinearFilter, az as RedIntegerFormat, aA as UnsignedIntType, m as NearestFilter, e as Vector3, V as Vector2, ag as Vector4, ae as UniformsUtils, aq as CoordinationType, aB as WebGLMultipleRenderTargets, aC as RGBAFormat, av as Scene, W as OrthographicCamera, ad as ShaderMaterial, z as Mesh, aD as PlaneGeometry, aE as useEventCallback, ao as jsxRuntimeExports, aF as GLSL3, am as BackSide } from "./index-eLeCPCoI.js";
1
+ import { aw as log, ax as isEqual, ar as Data3DTexture, as as RedFormat, ay as UnsignedByteType, l as LinearFilter, az as RedIntegerFormat, aA as UnsignedIntType, m as NearestFilter, e as Vector3, V as Vector2, ag as Vector4, ae as UniformsUtils, aq as CoordinationType, aB as WebGLMultipleRenderTargets, aC as RGBAFormat, av as Scene, W as OrthographicCamera, ad as ShaderMaterial, z as Mesh, aD as PlaneGeometry, aE as useEventCallback, ao as jsxRuntimeExports, aF as GLSL3, am as BackSide } from "./index-kqgO-sn-.js";
2
2
  import { useRef, useState, useMemo, useEffect, Suspense } from "react";
3
- import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-BtkbJnAk.js";
3
+ import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-DGRrAiaM.js";
4
4
  const LogLevel = {
5
5
  INFO: "info",
6
6
  WARN: "warn",
@@ -74390,21 +74390,20 @@ Popper$1.Utils = (typeof window !== "undefined" ? window : global).PopperUtils;
74390
74390
  Popper$1.placements = placements$1;
74391
74391
  Popper$1.Defaults = Defaults;
74392
74392
  function createChainedFunction(...funcs) {
74393
- return funcs.reduce((acc, func) => {
74394
- if (func == null) {
74395
- return acc;
74396
- }
74397
- {
74398
- if (typeof func !== "function") {
74399
- console.error("Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.");
74393
+ return funcs.reduce(
74394
+ (acc, func) => {
74395
+ if (func == null) {
74396
+ return acc;
74400
74397
  }
74398
+ return function chainedFunction(...args) {
74399
+ acc.apply(this, args);
74400
+ func.apply(this, args);
74401
+ };
74402
+ },
74403
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
74404
+ () => {
74401
74405
  }
74402
- return function chainedFunction(...args) {
74403
- acc.apply(this, args);
74404
- func.apply(this, args);
74405
- };
74406
- }, () => {
74407
- });
74406
+ );
74408
74407
  }
74409
74408
  function setRef(ref2, value2) {
74410
74409
  if (typeof ref2 === "function") {
@@ -74443,7 +74442,7 @@ function flipPlacement(placement, theme) {
74443
74442
  }
74444
74443
  }
74445
74444
  function getAnchorEl(anchorEl) {
74446
- return typeof anchorEl === "function" ? anchorEl() : anchorEl;
74445
+ return typeof anchorEl === "function" ? anchorEl(document.body) : anchorEl;
74447
74446
  }
74448
74447
  const useEnhancedEffect = typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect;
74449
74448
  const defaultPopperOptions = {};
@@ -74473,25 +74472,18 @@ const Popper = React.forwardRef((props, ref2) => {
74473
74472
  }
74474
74473
  if (popperRef.current) {
74475
74474
  popperRef.current.destroy();
74476
- handlePopperRefRef.current(null);
74475
+ if (handlePopperRefRef.current) {
74476
+ setRef(handlePopperRefRef.current, null);
74477
+ }
74477
74478
  }
74478
74479
  const handlePopperUpdate = (data2) => {
74479
74480
  setPlacement(data2.placement);
74480
74481
  };
74481
- const resolvedAnchorEl = getAnchorEl(anchorEl);
74482
- {
74483
- if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {
74484
- const box = resolvedAnchorEl.getBoundingClientRect();
74485
- if (box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
74486
- console.warn([
74487
- "Material-UI: The `anchorEl` prop provided to the component is invalid.",
74488
- "The anchor element should be part of the document layout.",
74489
- "Make sure the element is present in the document or that it's not display none."
74490
- ].join("\n"));
74491
- }
74492
- }
74482
+ const anchorElement = getAnchorEl(anchorEl);
74483
+ if (!anchorElement) {
74484
+ return;
74493
74485
  }
74494
- const popper2 = new Popper$1(getAnchorEl(anchorEl), tooltipRef.current, {
74486
+ const popper2 = new Popper$1(anchorElement, tooltipRef.current, {
74495
74487
  placement: rtlPlacement,
74496
74488
  ...popperOptions,
74497
74489
  modifiers: {
@@ -74509,7 +74501,9 @@ const Popper = React.forwardRef((props, ref2) => {
74509
74501
  onCreate: createChainedFunction(handlePopperUpdate, popperOptions.onCreate),
74510
74502
  onUpdate: createChainedFunction(handlePopperUpdate, popperOptions.onUpdate)
74511
74503
  });
74512
- handlePopperRefRef.current(popper2);
74504
+ if (handlePopperRefRef.current) {
74505
+ setRef(handlePopperRefRef.current, popper2);
74506
+ }
74513
74507
  }, [anchorEl, disablePortal, modifiers2, open2, rtlPlacement, popperOptions]);
74514
74508
  const handleRef = React.useCallback((node2) => {
74515
74509
  setRef(ownRef, node2);
@@ -74523,7 +74517,9 @@ const Popper = React.forwardRef((props, ref2) => {
74523
74517
  return;
74524
74518
  }
74525
74519
  popperRef.current.destroy();
74526
- handlePopperRefRef.current(null);
74520
+ if (handlePopperRefRef.current) {
74521
+ setRef(handlePopperRefRef.current, null);
74522
+ }
74527
74523
  };
74528
74524
  const handleExited = () => {
74529
74525
  setExited(true);
@@ -74554,7 +74550,7 @@ const Popper = React.forwardRef((props, ref2) => {
74554
74550
  // Fix Popper.js display issue
74555
74551
  top: 0,
74556
74552
  left: 0,
74557
- display: !open2 && keepMounted && !transition3 ? "none" : null,
74553
+ display: !open2 && keepMounted && !transition3 ? "none" : void 0,
74558
74554
  ...style2
74559
74555
  }, children: typeof children3 === "function" ? children3(childProps) : children3 }) });
74560
74556
  });
@@ -74569,7 +74565,7 @@ function ScopedGlobalStyles(props) {
74569
74565
  const component = useMemo$1(() => {
74570
74566
  const computedStyles = prependParentClassName(styles2, parentClassName);
74571
74567
  return jsxRuntimeExports.jsx(GlobalStyles$3, { styles: computedStyles });
74572
- }, [parentClassName]);
74568
+ }, [parentClassName, styles2]);
74573
74569
  return component;
74574
74570
  }
74575
74571
  function ok$1() {
@@ -210610,22 +210606,22 @@ async function getDecoder(fileDirectory) {
210610
210606
  const Decoder = await importFn();
210611
210607
  return new Decoder(fileDirectory);
210612
210608
  }
210613
- addDecoder([void 0, 1], () => import("./raw-D1HlNbuO.js").then((m2) => m2.default));
210614
- addDecoder(5, () => import("./lzw-ietT45zT.js").then((m2) => m2.default));
210609
+ addDecoder([void 0, 1], () => import("./raw-CG2gVGOP.js").then((m2) => m2.default));
210610
+ addDecoder(5, () => import("./lzw-2nt9L4Ru.js").then((m2) => m2.default));
210615
210611
  addDecoder(6, () => {
210616
210612
  throw new Error("old style JPEG compression is not supported.");
210617
210613
  });
210618
- addDecoder(7, () => import("./jpeg-CBEb4Wla.js").then((m2) => m2.default));
210619
- addDecoder([8, 32946], () => import("./deflate-ZIe3Ahsx.js").then((m2) => m2.default));
210620
- addDecoder(32773, () => import("./packbits-BDNd8psk.js").then((m2) => m2.default));
210614
+ addDecoder(7, () => import("./jpeg-Mg6dripE.js").then((m2) => m2.default));
210615
+ addDecoder([8, 32946], () => import("./deflate-D5lALlVK.js").then((m2) => m2.default));
210616
+ addDecoder(32773, () => import("./packbits-cWr_6BH2.js").then((m2) => m2.default));
210621
210617
  addDecoder(
210622
210618
  34887,
210623
- () => import("./lerc-Cb0ZS1W3.js").then(async (m2) => {
210619
+ () => import("./lerc--2UMppol.js").then(async (m2) => {
210624
210620
  await m2.zstd.init();
210625
210621
  return m2;
210626
210622
  }).then((m2) => m2.default)
210627
210623
  );
210628
- addDecoder(50001, () => import("./webimage-DSebXv_d.js").then((m2) => m2.default));
210624
+ addDecoder(50001, () => import("./webimage-2P-XekNC.js").then((m2) => m2.default));
210629
210625
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
210630
210626
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
210631
210627
  }
@@ -253987,21 +253983,18 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
253987
253983
  };
253988
253984
  }
253989
253985
  }
253990
- const isStaticColor = obsColorEncoding === "spatialLayerColor";
253991
- const getMoleculeColor = (object2, { data: data2, index: index2, target: target2 }) => {
253992
- const obsId = data2.src.obsIndex[index2];
253993
- if (data2.src.obsLabelsMap && data2.src.uniqueObsLabels && data2.src.PALETTE) {
253994
- const obsLabel = data2.src.obsLabelsMap.get(obsId);
253995
- const labelIndex = data2.src.uniqueObsLabels.indexOf(obsLabel);
253996
- target2[0] = data2.src.PALETTE[labelIndex % data2.src.PALETTE.length]?.[0];
253997
- target2[1] = data2.src.PALETTE[labelIndex % data2.src.PALETTE.length]?.[1];
253998
- target2[2] = data2.src.PALETTE[labelIndex % data2.src.PALETTE.length]?.[2];
253999
- }
254000
- return target2;
254001
- };
254002
- const { obsPointsModelMatrix, obsPoints, obsPointsTilingType, loadPointsInRect } = this.obsPointsData?.[layerScope]?.src ?? {};
253986
+ const {
253987
+ obsPointsModelMatrix,
253988
+ obsPoints,
253989
+ // featureIndices: obsPointsFeatureIndices,
253990
+ obsPointsTilingType,
253991
+ loadPointsInRect
253992
+ } = this.obsPointsData?.[layerScope]?.src ?? {};
254003
253993
  obsPoints?.shape?.[0] === 3;
254004
253994
  const modelMatrix2 = obsPointsModelMatrix?.clone();
253995
+ const hasFeatureIndicesMinMax = !showUnselected && Array.isArray(featureIndices) && featureIndices.length === 1;
253996
+ const FILTER_PLACEHOLDER = 0;
253997
+ const featureIndicesMinMax = hasFeatureIndicesMinMax ? [featureIndices[0], featureIndices[0]] : [FILTER_PLACEHOLDER, FILTER_PLACEHOLDER];
254005
253998
  if (obsPointsTilingType === "tiled") {
254006
253999
  return new TileLayer({
254007
254000
  id: `Tiled-${POINT_LAYER_PREFIX}${layerScope}`,
@@ -254052,9 +254045,6 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254052
254045
  renderSubLayers: (subLayerProps) => {
254053
254046
  const { bbox: bbox2, content: tileData } = subLayerProps.tile;
254054
254047
  const { left: left2, top: top2, right: right2, bottom: bottom2 } = bbox2;
254055
- const hasFeatureIndicesMinMax = !showUnselected && Array.isArray(featureIndices) && featureIndices.length === 1;
254056
- const FILTER_PLACEHOLDER = 0;
254057
- const featureIndicesMinMax = hasFeatureIndicesMinMax ? [featureIndices[0], featureIndices[0]] : [FILTER_PLACEHOLDER, FILTER_PLACEHOLDER];
254058
254048
  return new ScatterplotLayer(subLayerProps, {
254059
254049
  bounds: [left2, top2, right2, bottom2],
254060
254050
  data: tileData,
@@ -254131,26 +254121,44 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254131
254121
  coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
254132
254122
  pickable: true,
254133
254123
  autoHighlight: AUTO_HIGHLIGHT,
254134
- radiusMaxPixels: 3,
254135
254124
  opacity: spatialLayerOpacity,
254136
254125
  visible: spatialLayerVisible,
254137
254126
  modelMatrix: modelMatrix2,
254138
- getRadius: 300,
254127
+ getRadius: 5,
254128
+ radiusMaxPixels: 3,
254139
254129
  getPosition: (object2, { data: data2, index: index2, target: target2 }) => {
254140
254130
  target2[0] = data2.src.obsPoints.data[0][index2];
254141
254131
  target2[1] = data2.src.obsPoints.data[1][index2];
254142
254132
  target2[2] = 0;
254143
254133
  return target2;
254144
254134
  },
254145
- getLineColor: isStaticColor ? staticColor : getMoleculeColor,
254146
- getFillColor: isStaticColor ? staticColor : getMoleculeColor,
254135
+ getFillColor,
254147
254136
  onHover: (info2) => delegateHover(info2, "point", layerScope),
254137
+ // Use GPU filtering to filter to only the points in the tile bounding box,
254138
+ // since the row groups may contain points from other tiles.
254139
+ // Note: this can be improved using filterCategories,
254140
+ // but it is not available until post-v9 deck.gl/extensions.
254141
+ filterRange: [featureIndicesMinMax],
254142
+ getFilterValue: hasFeatureIndicesMinMax ? (object2, { data: data2, index: index2 }) => [
254143
+ data2.src.featureIndices[index2]
254144
+ ] : (object2, { data: data2, index: index2 }) => [
254145
+ FILTER_PLACEHOLDER
254146
+ ],
254147
+ extensions: [
254148
+ new DataFilterExtension({ filterSize: 1 })
254149
+ ],
254148
254150
  updateTriggers: {
254149
- getRadius: [],
254150
- getFillColor: [obsColorEncoding, staticColor],
254151
- getLineColor: [obsColorEncoding, staticColor]
254152
- },
254153
- ...{}
254151
+ getFillColor: [
254152
+ showUnselected,
254153
+ featureColor,
254154
+ obsColorEncoding,
254155
+ spatialLayerColor,
254156
+ featureSelection,
254157
+ hasMultipleFeaturesSelected
254158
+ ],
254159
+ getFilterValue: [hasFeatureIndicesMinMax, showUnselected, featureSelection],
254160
+ filterRange: [hasFeatureIndicesMinMax, showUnselected, featureSelection]
254161
+ }
254154
254162
  });
254155
254163
  }
254156
254164
  createSelectionLayer() {
@@ -254689,8 +254697,8 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254689
254697
  this.obsSegmentationsLayers = this.createSegmentationLayers();
254690
254698
  }
254691
254699
  onUpdatePointsData(layerScope) {
254692
- const { obsPoints, pointMultiObsLabels } = this.props;
254693
- const { obsIndex, obsPoints: layerObsPoints, obsPointsModelMatrix, loadPointsInRect, obsPointsTilingType } = obsPoints?.[layerScope] || {};
254700
+ const { obsPoints, pointMultiObsLabels, pointMatrixIndices } = this.props;
254701
+ const { obsIndex, obsPoints: layerObsPoints, featureIds: layerObsPointsFeatureIds, obsPointsModelMatrix, loadPointsInRect, obsPointsTilingType } = obsPoints?.[layerScope] || {};
254694
254702
  const { obsIndex: obsLabelsIndex, obsLabels } = pointMultiObsLabels?.[layerScope] || {};
254695
254703
  if (obsPointsTilingType === "tiled") {
254696
254704
  this.obsPointsData[layerScope] = {
@@ -254698,6 +254706,7 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254698
254706
  obsPointsTilingType,
254699
254707
  obsIndex: null,
254700
254708
  obsPoints: null,
254709
+ featureIndices: null,
254701
254710
  obsPointsModelMatrix,
254702
254711
  obsLabelsMap: null,
254703
254712
  uniqueObsLabels: null,
@@ -254710,11 +254719,17 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254710
254719
  if (layerObsPoints) {
254711
254720
  const getCellCoords = makeDefaultGetObsCoords(layerObsPoints);
254712
254721
  this.obsPointsQuadTree[layerScope] = createQuadTree(layerObsPoints, getCellCoords);
254722
+ let pointFeatureIndex = pointMatrixIndices?.[layerScope]?.featureIndex;
254723
+ if (!pointFeatureIndex) {
254724
+ pointFeatureIndex = Array.from(new Set(layerObsPointsFeatureIds));
254725
+ }
254726
+ const featureIndices = layerObsPointsFeatureIds.map((featureId2) => pointFeatureIndex?.indexOf(featureId2));
254713
254727
  this.obsPointsData[layerScope] = {
254714
254728
  src: {
254715
254729
  obsPointsTilingType,
254716
254730
  obsIndex,
254717
254731
  obsPoints: layerObsPoints,
254732
+ featureIndices,
254718
254733
  obsPointsModelMatrix,
254719
254734
  obsLabelsMap: null,
254720
254735
  uniqueObsLabels: null,
@@ -254927,7 +254942,7 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
254927
254942
  forceUpdate = true;
254928
254943
  } else {
254929
254944
  this.props.pointLayerScopes.forEach((layerScope) => {
254930
- if (shallowDiffByLayer("obsPoints", layerScope) || shallowDiffByLayer("pointMultiObsLabels", layerScope)) {
254945
+ if (shallowDiffByLayer("obsPoints", layerScope) || shallowDiffByLayer("pointMultiObsLabels", layerScope) || shallowDiffByLayer("pointMatrixIndices", layerScope)) {
254931
254946
  this.onUpdatePointsData(layerScope);
254932
254947
  forceUpdate = true;
254933
254948
  }
@@ -255092,12 +255107,12 @@ class ErrorBoundary extends React__default.Component {
255092
255107
  }
255093
255108
  }
255094
255109
  const LazySpatialThree = React__default.lazy(async () => {
255095
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-qB8yVLMX.js");
255110
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BRKAl1Rb.js");
255096
255111
  return { default: SpatialWrapper2 };
255097
255112
  });
255098
255113
  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 }) }) }) }));
255099
255114
  const LazySpatialAccelerated = React__default.lazy(async () => {
255100
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-CqOEyAUT.js");
255115
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BsRCdoDN.js");
255101
255116
  return { default: SpatialWrapper2 };
255102
255117
  });
255103
255118
  const SpatialAcceleratedAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialAccelerated, { ...props }) }) }) }));
@@ -270052,7 +270067,7 @@ function HiglassGlobalStyles(props) {
270052
270067
  }
270053
270068
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
270054
270069
  const LazyHiGlassComponent = React__default.lazy(async () => {
270055
- const { HiGlassComponent } = await import("./higlass-_elX6XYK.js");
270070
+ const { HiGlassComponent } = await import("./higlass-DjvIAKNH.js");
270056
270071
  return { default: HiGlassComponent };
270057
270072
  });
270058
270073
  const HG_SIZE = 800;
@@ -272999,7 +273014,7 @@ function NeuroglancerGlobalStyles(props) {
272999
273014
  const { classes: classes2 } = props;
273000
273015
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
273001
273016
  }
273002
- const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-DDBFlWFo.js"));
273017
+ const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-94YJn1Ps.js"));
273003
273018
  function createWorker() {
273004
273019
  return new WorkerFactory();
273005
273020
  }
@@ -359926,6 +359941,9 @@ class AnnDataSource extends ZarrDataSource {
359926
359941
  async getFlatArrDecompressed(path2) {
359927
359942
  const { storeRoot } = this;
359928
359943
  const arr = await open$1(storeRoot.resolve(path2), { kind: "array" });
359944
+ if (arr.shape[0] === 0) {
359945
+ return [];
359946
+ }
359929
359947
  const data2 = await get$c(arr);
359930
359948
  if (data2.data?.[Symbol.iterator]) {
359931
359949
  return (
@@ -362240,20 +362258,39 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
362240
362258
  * @returns {Promise} A promise for an array of columns.
362241
362259
  */
362242
362260
  async loadPoints() {
362243
- const { path: path2, featureIndexColumn } = this.options;
362261
+ const { path: path2 } = this.options;
362244
362262
  if (this.locations) {
362245
362263
  return this.locations;
362246
362264
  }
362247
362265
  let locations;
362248
362266
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
362249
362267
  if (formatVersion === "0.1") {
362250
- locations = await this.dataSource.loadPoints(path2, featureIndexColumn);
362268
+ locations = await this.dataSource.loadPoints(path2);
362251
362269
  } else {
362252
362270
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
362253
362271
  }
362254
362272
  this.locations = locations;
362255
362273
  return this.locations;
362256
362274
  }
362275
+ /**
362276
+ * Class method for loading the feature index column for points.
362277
+ * @returns {Promise} A promise for a column array of integers.
362278
+ */
362279
+ async loadPointsFeatureIds() {
362280
+ const { path: path2 } = this.options;
362281
+ if (this.locationsFeatureIndex) {
362282
+ return this.locationsFeatureIndex;
362283
+ }
362284
+ let locationsFeatureIndex;
362285
+ const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
362286
+ if (formatVersion === "0.1") {
362287
+ locationsFeatureIndex = await this.dataSource.loadPointsFeatureIds(path2);
362288
+ } else {
362289
+ throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
362290
+ }
362291
+ this.locationsFeatureIndex = locationsFeatureIndex;
362292
+ return this.locationsFeatureIndex;
362293
+ }
362257
362294
  async loadPointsInRect(bounds2, signal) {
362258
362295
  const { path: path2, featureIndexColumn, mortonCodeColumn } = this.options;
362259
362296
  let locations;
@@ -362316,23 +362353,19 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
362316
362353
  };
362317
362354
  let obsIndex = null;
362318
362355
  let obsPoints = null;
362319
- const featureIndices = null;
362356
+ let featureIds = null;
362320
362357
  if (!supportsTiling) {
362321
- [obsIndex, obsPoints] = await Promise.all([
362358
+ [obsIndex, obsPoints, featureIds] = await Promise.all([
362322
362359
  this.loadObsIndex(),
362323
- this.loadPoints()
362360
+ this.loadPoints(),
362361
+ this.loadPointsFeatureIds()
362324
362362
  ]);
362325
362363
  }
362326
362364
  return new LoaderResult({
362327
- /* obsIndex: ["1"], // TEMP
362328
- obsPoints: { // TEMP
362329
- shape: [2, 1],
362330
- data: [[0], [0]],
362331
- }, */
362332
362365
  // These will be null if tiling is supported.
362333
362366
  obsIndex,
362334
362367
  obsPoints,
362335
- featureIndices,
362368
+ featureIds,
362336
362369
  obsPointsModelMatrix: modelMatrix2,
362337
362370
  // Return 'tiled' if the morton_code_2d column
362338
362371
  // and bounding_box metadata are present,
@@ -378733,14 +378766,13 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
378733
378766
  * shape: [number, number],
378734
378767
  * }>} A promise for a zarr array containing the data.
378735
378768
  */
378736
- async loadPoints(elementPath, featureIndexColumnNameFromOptions) {
378769
+ async loadPoints(elementPath) {
378737
378770
  const parquetPath = getParquetPath(elementPath);
378738
378771
  const zattrs = await this.loadSpatialDataElementAttrs(elementPath);
378739
- const { axes, spatialdata_attrs: spatialDataAttrs } = zattrs;
378772
+ const { axes } = zattrs;
378740
378773
  const normAxes = normalizeAxes(axes);
378741
378774
  const axisNames = normAxes.map((axis2) => axis2.name);
378742
- const { feature_key: featureKey } = spatialDataAttrs;
378743
- const columnNames = [...axisNames, featureKey].filter(Boolean);
378775
+ const columnNames = axisNames.filter(Boolean);
378744
378776
  const arrowTable = await this.loadParquetTable(parquetPath, columnNames);
378745
378777
  const axisColumnArrs = axisNames.map((name2) => {
378746
378778
  const column2 = arrowTable.getChild(name2);
@@ -378754,6 +378786,30 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
378754
378786
  data: axisColumnArrs
378755
378787
  };
378756
378788
  }
378789
+ /**
378790
+ *
378791
+ * @param {string} elementPath The path to the points element,
378792
+ * like "points/element_name".
378793
+ * @param {string|undefined} featureIndexColumnNameFromOptions The name
378794
+ * of the feature index column specified in the file definition options, if any.
378795
+ * @returns {Promise<number[]>} A promise for a zarr array containing the data.
378796
+ */
378797
+ async loadPointsFeatureIds(elementPath) {
378798
+ const parquetPath = getParquetPath(elementPath);
378799
+ const zattrs = await this.loadSpatialDataElementAttrs(elementPath);
378800
+ const { spatialdata_attrs: spatialDataAttrs } = zattrs;
378801
+ const { feature_key: featureKey } = spatialDataAttrs;
378802
+ const columnNames = [featureKey];
378803
+ const arrowTable = await this.loadParquetTable(parquetPath, columnNames);
378804
+ const axisColumnArrs = columnNames.map((name2) => {
378805
+ const column2 = arrowTable.getChild(name2);
378806
+ if (!column2) {
378807
+ throw new Error(`Column "${name2}" not found in the arrow table.`);
378808
+ }
378809
+ return column2.toArray();
378810
+ });
378811
+ return axisColumnArrs[0];
378812
+ }
378757
378813
  /**
378758
378814
  *
378759
378815
  * @param {string} elementPath
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { bN, bM } from "./index-eLeCPCoI.js";
1
+ import { bN, bM } from "./index-kqgO-sn-.js";
2
2
  export {
3
3
  bN as ControlledLauncher,
4
4
  bM as UncontrolledLauncher
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
1
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
2
2
  const dctZigZag = new Int32Array([
3
3
  0,
4
4
  1,
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-eLeCPCoI.js";
2
+ import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-kqgO-sn-.js";
3
3
  var LercDecode = { exports: {} };
4
4
  var hasRequiredLercDecode;
5
5
  function requireLercDecode() {
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
1
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
2
2
  const MIN_BITS = 9;
3
3
  const CLEAR_CODE = 256;
4
4
  const EOI_CODE = 257;
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
1
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
2
2
  class PackbitsDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  const dataView = new DataView(buffer);
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
1
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
2
2
  class RawDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  return buffer;
@@ -1,4 +1,4 @@
1
- import { bH as MeshDistanceMaterial, bI as MeshDepthMaterial, bJ as RGBADepthPacking, ae as UniformsUtils, bK as ShaderChunk, a9 as InstancedBufferGeometry, a8 as Sphere, a7 as Box3, am as BackSide, u as DoubleSide, z as Mesh, a5 as FrontSide, v as MeshBasicMaterial, C as Color, e as Vector3, M as Matrix4, V as Vector2, ap as Matrix3, ag as Vector4, a1 as Texture, l as LinearFilter, aD as PlaneGeometry, x as BufferGeometry, aa as Float32BufferAttribute, bL as InstancedBufferAttribute } from "./index-eLeCPCoI.js";
1
+ import { bH as MeshDistanceMaterial, bI as MeshDepthMaterial, bJ as RGBADepthPacking, ae as UniformsUtils, bK as ShaderChunk, a9 as InstancedBufferGeometry, a8 as Sphere, a7 as Box3, am as BackSide, u as DoubleSide, z as Mesh, a5 as FrontSide, v as MeshBasicMaterial, C as Color, e as Vector3, M as Matrix4, V as Vector2, ap as Matrix3, ag as Vector4, a1 as Texture, l as LinearFilter, aD as PlaneGeometry, x as BufferGeometry, aa as Float32BufferAttribute, bL as InstancedBufferAttribute } from "./index-kqgO-sn-.js";
2
2
  function workerBootstrap() {
3
3
  var modules = /* @__PURE__ */ Object.create(null);
4
4
  function registerModule(ref, callback) {
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-eLeCPCoI.js";
1
+ import { aX as BaseDecoder } from "./index-kqgO-sn-.js";
2
2
  class WebImageDecoder extends BaseDecoder {
3
3
  constructor() {
4
4
  super();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/launcher",
3
- "version": "3.9.1",
3
+ "version": "3.9.2",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -20,14 +20,14 @@
20
20
  "use-query-params": "^1.1.9",
21
21
  "react-dropzone": "^14.3.8",
22
22
  "@tanstack/react-query": "^5.80.2",
23
- "@vitessce/constants-internal": "3.9.1",
24
- "@vitessce/all": "3.9.1",
25
- "@vitessce/example-configs": "3.9.1",
26
- "@vitessce/example-plugins": "3.9.1",
27
- "@vitessce/styles": "3.9.1",
28
- "@vitessce/globals": "3.9.1",
29
- "@vitessce/vit-s": "3.9.1",
30
- "@vitessce/config": "3.9.1"
23
+ "@vitessce/constants-internal": "3.9.2",
24
+ "@vitessce/example-plugins": "3.9.2",
25
+ "@vitessce/example-configs": "3.9.2",
26
+ "@vitessce/styles": "3.9.2",
27
+ "@vitessce/globals": "3.9.2",
28
+ "@vitessce/vit-s": "3.9.2",
29
+ "@vitessce/config": "3.9.2",
30
+ "@vitessce/all": "3.9.2"
31
31
  },
32
32
  "devDependencies": {
33
33
  "react": "18.3.1",