@vitessce/launcher 3.9.8 → 3.9.9

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-DBTEa182.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-C7kW8YKc.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-DBTEa182.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-C7kW8YKc.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-DBTEa182.js";
2
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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-DBTEa182.js";
4
+ import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-C7kW8YKc.js";
5
5
  var promise = {};
6
6
  var hasRequiredPromise;
7
7
  function requirePromise() {
@@ -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-DBTEa182.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-C7kW8YKc.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-D_ACWA92.js";
3
+ import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-rkiwZoCV.js";
4
4
  const LogLevel = {
5
5
  INFO: "info",
6
6
  WARN: "warn",
@@ -211827,22 +211827,22 @@ async function getDecoder(fileDirectory) {
211827
211827
  const Decoder = await importFn();
211828
211828
  return new Decoder(fileDirectory);
211829
211829
  }
211830
- addDecoder([void 0, 1], () => import("./raw-BChW8Bv2.js").then((m2) => m2.default));
211831
- addDecoder(5, () => import("./lzw-GyLKEjHd.js").then((m2) => m2.default));
211830
+ addDecoder([void 0, 1], () => import("./raw-BecsWWD-.js").then((m2) => m2.default));
211831
+ addDecoder(5, () => import("./lzw-DwMJ1C9x.js").then((m2) => m2.default));
211832
211832
  addDecoder(6, () => {
211833
211833
  throw new Error("old style JPEG compression is not supported.");
211834
211834
  });
211835
- addDecoder(7, () => import("./jpeg-BztqQwoS.js").then((m2) => m2.default));
211836
- addDecoder([8, 32946], () => import("./deflate-D0JH4rkz.js").then((m2) => m2.default));
211837
- addDecoder(32773, () => import("./packbits-DJsZJlYo.js").then((m2) => m2.default));
211835
+ addDecoder(7, () => import("./jpeg-iS7dFiFn.js").then((m2) => m2.default));
211836
+ addDecoder([8, 32946], () => import("./deflate-BtZLCgk5.js").then((m2) => m2.default));
211837
+ addDecoder(32773, () => import("./packbits-8RuDMM5K.js").then((m2) => m2.default));
211838
211838
  addDecoder(
211839
211839
  34887,
211840
- () => import("./lerc-9qrJ4PEa.js").then(async (m2) => {
211840
+ () => import("./lerc-DlsnNE1I.js").then(async (m2) => {
211841
211841
  await m2.zstd.init();
211842
211842
  return m2;
211843
211843
  }).then((m2) => m2.default)
211844
211844
  );
211845
- addDecoder(50001, () => import("./webimage-BlgQb3bb.js").then((m2) => m2.default));
211845
+ addDecoder(50001, () => import("./webimage-1fmk-aLA.js").then((m2) => m2.default));
211846
211846
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
211847
211847
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
211848
211848
  }
@@ -256404,12 +256404,12 @@ class ErrorBoundary extends React__default.Component {
256404
256404
  }
256405
256405
  }
256406
256406
  const LazySpatialThree = React__default.lazy(async () => {
256407
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-1U4gELip.js");
256407
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-DzPOP2R1.js");
256408
256408
  return { default: SpatialWrapper2 };
256409
256409
  });
256410
256410
  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 }) }) }) }));
256411
256411
  const LazySpatialAccelerated = React__default.lazy(async () => {
256412
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-D2vPxKer.js");
256412
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BGzgHqzw.js");
256413
256413
  return { default: SpatialWrapper2 };
256414
256414
  });
256415
256415
  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 }) }) }) }));
@@ -266282,7 +266282,7 @@ function PointLayerController(props) {
266282
266282
  const [coloringTabIndex, setColoringTabIndex] = useState(0);
266283
266283
  const { featureIndex } = pointMatrixIndicesData || {};
266284
266284
  const hasSelectedFeatures = Array.isArray(featureSelection) && featureSelection.length > 0;
266285
- return jsxRuntimeExports.jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxRuntimeExports.jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsxRuntimeExports.jsx(Visibility, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode }) }), jsxRuntimeExports.jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsxRuntimeExports.jsx(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsxRuntimeExports.jsx(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), hasSelectedFeatures ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [featureSelection.map((featureName) => jsxRuntimeExports.jsx(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsxRuntimeExports.jsx(Grid$1, { className: lcClasses.layerControllerGrid, children: jsxRuntimeExports.jsx(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsxRuntimeExports.jsx(VisibilityOffIcon, {}) : jsxRuntimeExports.jsx(VisibilityIcon, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
266285
+ return jsxRuntimeExports.jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxRuntimeExports.jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsxRuntimeExports.jsx(Visibility, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode }) }), jsxRuntimeExports.jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsxRuntimeExports.jsx(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsxRuntimeExports.jsx(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), layerPerFeatureForPoints && hasSelectedFeatures ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [featureSelection.map((featureName) => jsxRuntimeExports.jsx(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsxRuntimeExports.jsx(Grid$1, { className: lcClasses.layerControllerGrid, children: jsxRuntimeExports.jsx(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsxRuntimeExports.jsx(VisibilityOffIcon, {}) : jsxRuntimeExports.jsx(VisibilityIcon, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
266286
266286
  }
266287
266287
  const useStyles$e = makeStyles()(() => ({
266288
266288
  layerTypeSegmentationIcon: {
@@ -271593,7 +271593,7 @@ function HiglassGlobalStyles(props) {
271593
271593
  }
271594
271594
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
271595
271595
  const LazyHiGlassComponent = React__default.lazy(async () => {
271596
- const { HiGlassComponent } = await import("./higlass-PHabY4jK.js");
271596
+ const { HiGlassComponent } = await import("./higlass-BXmDHp1M.js");
271597
271597
  return { default: HiGlassComponent };
271598
271598
  });
271599
271599
  const HG_SIZE = 800;
@@ -274541,7 +274541,7 @@ function NeuroglancerGlobalStyles(props) {
274541
274541
  const { classes: classes2 } = props;
274542
274542
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
274543
274543
  }
274544
- const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-DJRTUBG7.js"));
274544
+ const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-Cb2ywexW.js"));
274545
274545
  function createWorker() {
274546
274546
  const worker = new WorkerFactory$1();
274547
274547
  worker.AsyncComputationWorker = WorkerFactory;
@@ -362048,11 +362048,21 @@ class AnnDataSource extends ZarrDataSource {
362048
362048
  categoriesValues = await this.getFlatArrDecompressed(`${prefix2}/${categories}`);
362049
362049
  }
362050
362050
  } else if (encodingType === "categorical") {
362051
- const { dtype } = await open$1(storeRoot.resolve(`${path2}/categories`), { kind: "array" });
362052
- if (dtype === "v2:object" || dtype === "|O") {
362051
+ const categoriesZattrs = await this.getJson(`${path2}/categories/.zattrs`);
362052
+ const categoriesEncodingType = categoriesZattrs?.["encoding-type"];
362053
+ if (categoriesEncodingType === "nullable-string-array") {
362054
+ categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories/values`);
362055
+ } else if (categoriesEncodingType === "string-array") {
362053
362056
  categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
362057
+ } else {
362058
+ const { dtype } = await open$1(storeRoot.resolve(`${path2}/categories`), { kind: "array" });
362059
+ if (dtype === "v2:object" || dtype === "|O") {
362060
+ categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
362061
+ }
362054
362062
  }
362055
362063
  codesPath = `${path2}/codes`;
362064
+ } else if (encodingType === "nullable-string-array") {
362065
+ return this.getFlatArrDecompressed(`${path2}/values`);
362056
362066
  } else if (encodingType === "string-array") {
362057
362067
  return this.getFlatArrDecompressed(path2);
362058
362068
  } else {
@@ -364429,7 +364439,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
364429
364439
  }
364430
364440
  let locations;
364431
364441
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
364432
- if (formatVersion === "0.1") {
364442
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
364433
364443
  locations = await this.dataSource.loadPoints(path2);
364434
364444
  } else {
364435
364445
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -364448,7 +364458,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
364448
364458
  }
364449
364459
  let locationsFeatureIndex;
364450
364460
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
364451
- if (formatVersion === "0.1") {
364461
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
364452
364462
  locationsFeatureIndex = await this.dataSource.loadPointsFeatureIds(path2);
364453
364463
  } else {
364454
364464
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -364460,7 +364470,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
364460
364470
  const { path: path2, featureIndexColumn, mortonCodeColumn } = this.options;
364461
364471
  let locations;
364462
364472
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
364463
- if (formatVersion === "0.1") {
364473
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
364464
364474
  locations = await this.dataSource.loadPointsInRect(path2, bounds2, signal, featureIndexColumn, mortonCodeColumn);
364465
364475
  } else {
364466
364476
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -364492,7 +364502,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
364492
364502
  // and for the presence of morton_code_2d and feature_index columns.
364493
364503
  this.dataSource.supportsLoadPointsInRect(path2, featureIndexColumnName, mortonCodeColumn)
364494
364504
  ]);
364495
- const isSupportedVersion = formatVersion === "0.1";
364505
+ const isSupportedVersion = formatVersion === "0.1" || formatVersion === "0.2";
364496
364506
  const boundingBox = zattrs?.bounding_box;
364497
364507
  const hasBoundingBox2D = typeof boundingBox?.x_max === "number" && typeof boundingBox?.x_min === "number" && typeof boundingBox?.y_max === "number" && typeof boundingBox?.y_min === "number";
364498
364508
  return isSupportedVersion && hasBoundingBox2D && hasRequiredColumnsAndRowGroupSize;
@@ -374120,7 +374130,7 @@ async function _loadParquetSchemaBytes({ queryClient, store }, parquetPath, part
374120
374130
  if (!tailBytes || tailBytes.length < TAIL_LENGTH) {
374121
374131
  throw new Error(`Failed to load parquet footerLength for ${partZeroPath}`);
374122
374132
  }
374123
- const footerLength = new DataView(tailBytes.buffer).getInt32(0, true);
374133
+ const footerLength = new DataView(tailBytes.buffer, tailBytes.byteOffset, tailBytes.byteLength).getInt32(0, true);
374124
374134
  const magic = new TextDecoder().decode(tailBytes.slice(4, 8));
374125
374135
  if (magic !== "PAR1") {
374126
374136
  throw new Error("Invalid Parquet file: missing PAR1 magic number");
@@ -380896,7 +380906,7 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
380896
380906
  const zattrs = await this.loadSpatialDataElementAttrs(path2);
380897
380907
  const formatVersion = zattrs.spatialdata_attrs.version;
380898
380908
  const encodingType = zattrs["encoding-type"];
380899
- if (encodingType === "ngff:points" && !(formatVersion === "0.1")) {
380909
+ if (encodingType === "ngff:points" && !(formatVersion === "0.1" || formatVersion === "0.2")) {
380900
380910
  throw new Error(`Unexpected version for points spatialdata_attrs: ${formatVersion}`);
380901
380911
  }
380902
380912
  return formatVersion;
@@ -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-DBTEa182.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-C7kW8YKc.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-D_ACWA92.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-rkiwZoCV.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-BqEm25-I.js"), []);
5030
+ } = suspend(async () => import("./troika-three-text.esm-DCSbwoWM.js"), []);
5031
5031
  const invalidate = useThree(({
5032
5032
  invalidate: invalidate2
5033
5033
  }) => invalidate2);
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { bN, bM } from "./index-DBTEa182.js";
1
+ import { bN, bM } from "./index-C7kW8YKc.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-DBTEa182.js";
1
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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-DBTEa182.js";
2
+ import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-C7kW8YKc.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-DBTEa182.js";
1
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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-DBTEa182.js";
1
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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-DBTEa182.js";
1
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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-DBTEa182.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-C7kW8YKc.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-DBTEa182.js";
1
+ import { aX as BaseDecoder } from "./index-C7kW8YKc.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.8",
3
+ "version": "3.9.9",
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/all": "3.9.8",
24
- "@vitessce/example-configs": "3.9.8",
25
- "@vitessce/styles": "3.9.8",
26
- "@vitessce/globals": "3.9.8",
27
- "@vitessce/example-plugins": "3.9.8",
28
- "@vitessce/constants-internal": "3.9.8",
29
- "@vitessce/vit-s": "3.9.8",
30
- "@vitessce/config": "3.9.8"
23
+ "@vitessce/all": "3.9.9",
24
+ "@vitessce/example-configs": "3.9.9",
25
+ "@vitessce/constants-internal": "3.9.9",
26
+ "@vitessce/styles": "3.9.9",
27
+ "@vitessce/vit-s": "3.9.9",
28
+ "@vitessce/example-plugins": "3.9.9",
29
+ "@vitessce/globals": "3.9.9",
30
+ "@vitessce/config": "3.9.9"
31
31
  },
32
32
  "devDependencies": {
33
33
  "react": "18.3.1",