@vitessce/all 3.9.8 → 3.9.10

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-gbtRLRj5.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-Cjg9h1C7.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-gbtRLRj5.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-Cjg9h1C7.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-gbtRLRj5.js";
2
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.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-gbtRLRj5.js";
4
+ import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-Cjg9h1C7.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-gbtRLRj5.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-Cjg9h1C7.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-BSs_Q5On.js";
3
+ import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-DtlnpUX5.js";
4
4
  const LogLevel = {
5
5
  INFO: "info",
6
6
  WARN: "warn",
@@ -9263,6 +9263,7 @@ const FileType$1 = {
9263
9263
  OBS_LABELS_MUDATA_ZARR: "obsLabels.mudata.zarr",
9264
9264
  FEATURE_LABELS_MUDATA_ZARR: "featureLabels.mudata.zarr",
9265
9265
  GENOMIC_PROFILES_ZARR: "genomic-profiles.zarr",
9266
+ GENOMIC_PROFILES_ZARR_ZIP: "genomic-profiles.zarr.zip",
9266
9267
  NEIGHBORHOODS_JSON: "neighborhoods.json",
9267
9268
  // OME-TIFF
9268
9269
  IMAGE_OME_TIFF: "image.ome-tiff",
@@ -9557,6 +9558,7 @@ const ViewHelpMapping = {
9557
9558
  [FileType$1.OBS_LABELS_MOLECULES_JSON]: DataType$3.OBS_LABELS,
9558
9559
  // For old file types
9559
9560
  [FileType$1.GENOMIC_PROFILES_ZARR]: DataType$3.GENOMIC_PROFILES,
9561
+ [FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: DataType$3.GENOMIC_PROFILES,
9560
9562
  [FileType$1.NEIGHBORHOODS_JSON]: DataType$3.NEIGHBORHOODS
9561
9563
  });
9562
9564
  ({
@@ -9721,6 +9723,10 @@ const ALT_ZARR_STORE_TYPES = {
9721
9723
  },
9722
9724
  [FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR]: {
9723
9725
  zip: FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR_ZIP
9726
+ },
9727
+ // For genomic profiles:
9728
+ [FileType$1.GENOMIC_PROFILES_ZARR]: {
9729
+ zip: FileType$1.GENOMIC_PROFILES_ZARR_ZIP
9724
9730
  }
9725
9731
  };
9726
9732
  [
@@ -210359,22 +210365,22 @@ async function getDecoder(fileDirectory) {
210359
210365
  const Decoder = await importFn();
210360
210366
  return new Decoder(fileDirectory);
210361
210367
  }
210362
- addDecoder([void 0, 1], () => import("./raw-BDQB9cuz.js").then((m2) => m2.default));
210363
- addDecoder(5, () => import("./lzw-oMC0dlgC.js").then((m2) => m2.default));
210368
+ addDecoder([void 0, 1], () => import("./raw-Dc6qpV4c.js").then((m2) => m2.default));
210369
+ addDecoder(5, () => import("./lzw-KtJKGU0e.js").then((m2) => m2.default));
210364
210370
  addDecoder(6, () => {
210365
210371
  throw new Error("old style JPEG compression is not supported.");
210366
210372
  });
210367
- addDecoder(7, () => import("./jpeg-C7Mxa_R_.js").then((m2) => m2.default));
210368
- addDecoder([8, 32946], () => import("./deflate-CsmxXIPT.js").then((m2) => m2.default));
210369
- addDecoder(32773, () => import("./packbits-C-3XoOot.js").then((m2) => m2.default));
210373
+ addDecoder(7, () => import("./jpeg-P83napcQ.js").then((m2) => m2.default));
210374
+ addDecoder([8, 32946], () => import("./deflate-B8Q5f1vo.js").then((m2) => m2.default));
210375
+ addDecoder(32773, () => import("./packbits-5MWE4C40.js").then((m2) => m2.default));
210370
210376
  addDecoder(
210371
210377
  34887,
210372
- () => import("./lerc-DbIzGgSj.js").then(async (m2) => {
210378
+ () => import("./lerc-DuLHKdpN.js").then(async (m2) => {
210373
210379
  await m2.zstd.init();
210374
210380
  return m2;
210375
210381
  }).then((m2) => m2.default)
210376
210382
  );
210377
- addDecoder(50001, () => import("./webimage-DhNmlhtK.js").then((m2) => m2.default));
210383
+ addDecoder(50001, () => import("./webimage-BnwAgUeU.js").then((m2) => m2.default));
210378
210384
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
210379
210385
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
210380
210386
  }
@@ -254873,12 +254879,12 @@ class ErrorBoundary extends React__default.Component {
254873
254879
  }
254874
254880
  }
254875
254881
  const LazySpatialThree = React__default.lazy(async () => {
254876
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BstOXuv0.js");
254882
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-DFhTMlUT.js");
254877
254883
  return { default: SpatialWrapper2 };
254878
254884
  });
254879
254885
  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 }) }) }) }));
254880
254886
  const LazySpatialAccelerated = React__default.lazy(async () => {
254881
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BPsHPaJT.js");
254887
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-Cad4MlxC.js");
254882
254888
  return { default: SpatialWrapper2 };
254883
254889
  });
254884
254890
  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 }) }) }) }));
@@ -264751,7 +264757,7 @@ function PointLayerController(props) {
264751
264757
  const [coloringTabIndex, setColoringTabIndex] = useState(0);
264752
264758
  const { featureIndex } = pointMatrixIndicesData || {};
264753
264759
  const hasSelectedFeatures = Array.isArray(featureSelection) && featureSelection.length > 0;
264754
- 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] });
264760
+ 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] });
264755
264761
  }
264756
264762
  const useStyles$d = makeStyles()(() => ({
264757
264763
  layerTypeSegmentationIcon: {
@@ -268585,7 +268591,7 @@ function HiglassGlobalStyles(props) {
268585
268591
  }
268586
268592
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
268587
268593
  const LazyHiGlassComponent = React__default.lazy(async () => {
268588
- const { HiGlassComponent } = await import("./higlass-wSBrpMhX.js");
268594
+ const { HiGlassComponent } = await import("./higlass-CD6EVJJy.js");
268589
268595
  return { default: HiGlassComponent };
268590
268596
  });
268591
268597
  const HG_SIZE = 800;
@@ -271533,7 +271539,7 @@ function NeuroglancerGlobalStyles(props) {
271533
271539
  const { classes: classes2 } = props;
271534
271540
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
271535
271541
  }
271536
- const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-x4EMSEcX.js"));
271542
+ const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-gVFMyubB.js"));
271537
271543
  function createWorker() {
271538
271544
  const worker = new WorkerFactory$1();
271539
271545
  worker.AsyncComputationWorker = WorkerFactory;
@@ -357257,7 +357263,9 @@ class OmeAutoConfig extends AbstractAutoConfig {
357257
357263
  // TODO: how to handle h5ad-based AnnData (since needs reference JSON file).
357258
357264
  // Perhaps just assume one H5AD+one JSON (or .ref.json) file correspond to each other?
357259
357265
  [FileType$1.SPATIALDATA_ZARR]: [".sd.zarr", ".sdata.zarr", ".spatialdata.zarr"],
357260
- [FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"]
357266
+ [FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"],
357267
+ [FileType$1.GENOMIC_PROFILES_ZARR]: [".multivec.zarr"],
357268
+ [FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: [".multivec.zarr.zip"]
357261
357269
  });
357262
357270
  ({
357263
357271
  // OME-TIFF
@@ -357283,7 +357291,9 @@ class OmeAutoConfig extends AbstractAutoConfig {
357283
357291
  FileType$1.IMAGE_OME_ZARR,
357284
357292
  FileType$1.IMAGE_OME_ZARR_ZIP,
357285
357293
  FileType$1.OBS_SEGMENTATIONS_OME_ZARR,
357286
- FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP
357294
+ FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP,
357295
+ FileType$1.GENOMIC_PROFILES_ZARR,
357296
+ FileType$1.GENOMIC_PROFILES_ZARR_ZIP
357287
357297
  ];
357288
357298
  class ObsSpotsCsvLoader extends CsvLoader {
357289
357299
  loadFromCache(data2) {
@@ -358199,11 +358209,21 @@ class AnnDataSource extends ZarrDataSource {
358199
358209
  categoriesValues = await this.getFlatArrDecompressed(`${prefix2}/${categories}`);
358200
358210
  }
358201
358211
  } else if (encodingType === "categorical") {
358202
- const { dtype } = await open$1(storeRoot.resolve(`${path2}/categories`), { kind: "array" });
358203
- if (dtype === "v2:object" || dtype === "|O") {
358212
+ const categoriesZattrs = await this.getJson(`${path2}/categories/.zattrs`);
358213
+ const categoriesEncodingType = categoriesZattrs?.["encoding-type"];
358214
+ if (categoriesEncodingType === "nullable-string-array") {
358215
+ categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories/values`);
358216
+ } else if (categoriesEncodingType === "string-array") {
358204
358217
  categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
358218
+ } else {
358219
+ const { dtype } = await open$1(storeRoot.resolve(`${path2}/categories`), { kind: "array" });
358220
+ if (dtype === "v2:object" || dtype === "|O") {
358221
+ categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
358222
+ }
358205
358223
  }
358206
358224
  codesPath = `${path2}/codes`;
358225
+ } else if (encodingType === "nullable-string-array") {
358226
+ return this.getFlatArrDecompressed(`${path2}/values`);
358207
358227
  } else if (encodingType === "string-array") {
358208
358228
  return this.getFlatArrDecompressed(path2);
358209
358229
  } else {
@@ -359367,16 +359387,25 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
359367
359387
  return this.dataSource.loadDataFrameIndex(dfPath);
359368
359388
  }
359369
359389
  async loadDataFrame(dfPath) {
359370
- const [featureId2, featureFoldChange, featureSignificance] = await Promise.all([
359371
- this.loadFeatureNames(dfPath),
359372
- this.loadFoldChanges(dfPath),
359373
- this.loadSignificances(dfPath)
359374
- ]);
359375
- return {
359376
- featureId: featureId2,
359377
- featureFoldChange,
359378
- featureSignificance
359379
- };
359390
+ try {
359391
+ const [featureId2, featureFoldChange, featureSignificance] = await Promise.all([
359392
+ this.loadFeatureNames(dfPath),
359393
+ this.loadFoldChanges(dfPath),
359394
+ this.loadSignificances(dfPath)
359395
+ ]);
359396
+ return {
359397
+ featureId: featureId2,
359398
+ featureFoldChange,
359399
+ featureSignificance
359400
+ };
359401
+ } catch (e3) {
359402
+ log$b.warn("Dataframe not found at", dfPath);
359403
+ return {
359404
+ featureId: [],
359405
+ featureFoldChange: [],
359406
+ featureSignificance: []
359407
+ };
359408
+ }
359380
359409
  }
359381
359410
  /**
359382
359411
  *
@@ -359403,7 +359432,7 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
359403
359432
  * @returns {Promise<LoaderResult<FeatureStatsData>>}
359404
359433
  */
359405
359434
  async loadMulti(volcanoOptions) {
359406
- const { analysisType: targetAnalysisType = "rank_genes_groups" } = this.options;
359435
+ const { analysisType: targetAnalysisType = "pydeseq2" } = this.options;
359407
359436
  const { sampleSetSelection, obsSetSelection } = volcanoOptions || {};
359408
359437
  const rawObsSetSelection = obsSetSelection;
359409
359438
  const rawSampleSetSelection = sampleSetSelection;
@@ -360580,7 +360609,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
360580
360609
  }
360581
360610
  let locations;
360582
360611
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
360583
- if (formatVersion === "0.1") {
360612
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
360584
360613
  locations = await this.dataSource.loadPoints(path2);
360585
360614
  } else {
360586
360615
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -360599,7 +360628,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
360599
360628
  }
360600
360629
  let locationsFeatureIndex;
360601
360630
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
360602
- if (formatVersion === "0.1") {
360631
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
360603
360632
  locationsFeatureIndex = await this.dataSource.loadPointsFeatureIds(path2);
360604
360633
  } else {
360605
360634
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -360611,7 +360640,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
360611
360640
  const { path: path2, featureIndexColumn, mortonCodeColumn } = this.options;
360612
360641
  let locations;
360613
360642
  const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
360614
- if (formatVersion === "0.1") {
360643
+ if (formatVersion === "0.1" || formatVersion === "0.2") {
360615
360644
  locations = await this.dataSource.loadPointsInRect(path2, bounds2, signal, featureIndexColumn, mortonCodeColumn);
360616
360645
  } else {
360617
360646
  throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
@@ -360643,10 +360672,8 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
360643
360672
  // and for the presence of morton_code_2d and feature_index columns.
360644
360673
  this.dataSource.supportsLoadPointsInRect(path2, featureIndexColumnName, mortonCodeColumn)
360645
360674
  ]);
360646
- const isSupportedVersion = formatVersion === "0.1";
360647
- const boundingBox = zattrs?.bounding_box;
360648
- const hasBoundingBox2D = typeof boundingBox?.x_max === "number" && typeof boundingBox?.x_min === "number" && typeof boundingBox?.y_max === "number" && typeof boundingBox?.y_min === "number";
360649
- return isSupportedVersion && hasBoundingBox2D && hasRequiredColumnsAndRowGroupSize;
360675
+ const isSupportedVersion = formatVersion === "0.1" || formatVersion === "0.2";
360676
+ return isSupportedVersion && hasRequiredColumnsAndRowGroupSize;
360650
360677
  }
360651
360678
  async load() {
360652
360679
  const [modelMatrix2, supportsTiling] = await Promise.all([
@@ -360684,7 +360711,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
360684
360711
  featureIds,
360685
360712
  obsPointsModelMatrix: modelMatrix2,
360686
360713
  // Return 'tiled' if the morton_code_2d column
360687
- // and bounding_box metadata are present,
360714
+ // is present,
360688
360715
  // and the row group size is small enough.
360689
360716
  // Otherwise, return 'full'.
360690
360717
  obsPointsTilingType: supportsTiling ? "tiled" : "full",
@@ -370193,6 +370220,7 @@ function sdataMortonQueryRectAux(boundingBox, origRect) {
370193
370220
  const mortonIntervals = zcoverRectangle(normRect[0][0], normRect[0][1], normRect[1][0], normRect[1][1], 16, null, true);
370194
370221
  return mortonIntervals;
370195
370222
  }
370223
+ const MORTON_CODE_EXTREME_VALUE_INDICATOR = 0;
370196
370224
  async function getParquetModule() {
370197
370225
  const module2 = await import(
370198
370226
  /* webpackIgnore: true */
@@ -370271,7 +370299,7 @@ async function _loadParquetSchemaBytes({ queryClient, store }, parquetPath, part
370271
370299
  if (!tailBytes || tailBytes.length < TAIL_LENGTH) {
370272
370300
  throw new Error(`Failed to load parquet footerLength for ${partZeroPath}`);
370273
370301
  }
370274
- const footerLength = new DataView(tailBytes.buffer).getInt32(0, true);
370302
+ const footerLength = new DataView(tailBytes.buffer, tailBytes.byteOffset, tailBytes.byteLength).getInt32(0, true);
370275
370303
  const magic = new TextDecoder().decode(tailBytes.slice(4, 8));
370276
370304
  if (magic !== "PAR1") {
370277
370305
  throw new Error("Invalid Parquet file: missing PAR1 magic number");
@@ -370318,22 +370346,22 @@ async function _loadParquetMetadataByPart({ queryClient, store }, parquetPath) {
370318
370346
  } catch (error2) {
370319
370347
  if (error2.message.includes("Failed to load parquet footerLength")) {
370320
370348
  numParts = partIndex;
370349
+ log$b.info(`Found ${numParts} parts for parquet path ${parquetPath}; An above "Failed to load parquet footerLength" error is expected for the subsequent part.`);
370321
370350
  }
370322
370351
  }
370323
370352
  } while (numParts === void 0);
370353
+ const numRows = allMetadata.map((part) => part.metadata.fileMetadata().numRows());
370354
+ const numRowGroups = allMetadata.map((part) => part.metadata.numRowGroups());
370355
+ const numRowsPerGroup = allMetadata.map((part) => part.metadata.rowGroup(0).numRows());
370324
370356
  const metadata2 = {
370325
- numRows: 0,
370326
- numRowGroups: 0,
370327
- numRowsPerGroup: 0,
370328
- schema: null
370329
- };
370330
- if (allMetadata.length > 0) {
370331
- const firstPart = allMetadata[0];
370332
- metadata2.numRows = allMetadata.reduce((sum2, part) => sum2 + part.metadata.fileMetadata().numRows(), 0);
370333
- metadata2.numRowGroups = allMetadata.reduce((sum2, part) => sum2 + part.metadata.numRowGroups(), 0);
370334
- metadata2.numRowsPerGroup = firstPart.metadata.rowGroup(0).numRows();
370335
- metadata2.schema = firstPart.schema.schema;
370336
- }
370357
+ totalNumRows: numRows.reduce((a2, b2) => a2 + b2, 0),
370358
+ totalNumRowGroups: numRowGroups.reduce((a2, b2) => a2 + b2, 0),
370359
+ // Array of count per part (length equal to numParts).
370360
+ numRowsByPart: numRows,
370361
+ numRowGroupsByPart: numRowGroups,
370362
+ numRowsPerGroupByPart: numRowsPerGroup,
370363
+ schema: allMetadata?.[0]?.schema?.schema
370364
+ };
370337
370365
  const result = {
370338
370366
  ...metadata2,
370339
370367
  // TODO: extract metadata per part and rowGroup into plain objects that match the hyparquet parquetMetadata() return value?
@@ -370357,8 +370385,8 @@ async function _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetP
370357
370385
  const store2 = ctx.meta?.store;
370358
370386
  const { readParquetRowGroup } = await _getParquetModule({ queryClient: queryClient2 });
370359
370387
  const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
370360
- if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.numRowGroups) {
370361
- throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.numRowGroups} row groups.`);
370388
+ if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.totalNumRowGroups) {
370389
+ throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.totalNumRowGroups} row groups.`);
370362
370390
  }
370363
370391
  let partIndex;
370364
370392
  let cumulativeRowGroups = 0;
@@ -370468,9 +370496,9 @@ async function _bisectRowGroupsRight({ queryClient, store }, parquetPath, column
370468
370496
  );
370469
370497
  const store2 = ctx.meta?.store;
370470
370498
  const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
370471
- const { numRowGroups } = allMetadata;
370499
+ const { totalNumRowGroups } = allMetadata;
370472
370500
  let lo = 0;
370473
- let hi = numRowGroups;
370501
+ let hi = totalNumRowGroups;
370474
370502
  while (lo < hi) {
370475
370503
  const cachedInRange = await getCachedInRange(queryClient2, parquetPath, columnName, lo, hi);
370476
370504
  const betterLo = cachedInRange.slice().reverse().find((c2) => c2.index > lo && targetValue >= c2.max);
@@ -370873,11 +370901,12 @@ class SpatialDataTableSource extends AnnDataSource {
370873
370901
  const { queryClient } = this;
370874
370902
  const { store } = this.storeRoot;
370875
370903
  const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
370876
- const { numRowsPerGroup } = allMetadata;
370877
- const numRowsTotal = allMetadata.numRows;
370878
- if (numRowsPerGroup >= 1e5) {
370904
+ const { numRowsPerGroupByPart } = allMetadata;
370905
+ const numRowsTotal = allMetadata.totalNumRows;
370906
+ const maxNumRowsPerGroup = Math.max(...numRowsPerGroupByPart);
370907
+ if (maxNumRowsPerGroup >= 1e5) {
370879
370908
  if (numRowsTotal > 5e6) {
370880
- throw new Error(`The Parquet table at ${parquetPath} has ${numRowsTotal} total rows, which necessitates tiled loading, but it was not possible because the row group size is too large (${numRowsPerGroup}). See the Vitessce documentation at Data Troubleshooting -> Points for more details.`);
370909
+ throw new Error(`The Parquet table at ${parquetPath} has ${numRowsTotal} total rows, which necessitates tiled loading, but it was not possible because the row group size is too large (${maxNumRowsPerGroup}). See the Vitessce documentation at Data Troubleshooting -> Points for more details.`);
370881
370910
  }
370882
370911
  return false;
370883
370912
  }
@@ -370901,7 +370930,7 @@ class SpatialDataTableSource extends AnnDataSource {
370901
370930
  * @param {string[]|undefined} columns An optional list of column names to load.
370902
370931
  * @returns
370903
370932
  */
370904
- async loadParquetTableInRect(parquetPath, tileBbox, allPointsBbox, signal, featureIndexColumnName, mortonCodeColumn) {
370933
+ async loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn) {
370905
370934
  const { queryClient } = this;
370906
370935
  const { store } = this.storeRoot;
370907
370936
  const mortonCodeColumnName = mortonCodeColumn ?? "morton_code_2d";
@@ -370926,15 +370955,46 @@ class SpatialDataTableSource extends AnnDataSource {
370926
370955
  } else {
370927
370956
  tileBboxes = [tileBbox];
370928
370957
  }
370958
+ const firstRowGroupTable = await _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, 0);
370959
+ const xColumnForBoundingBox = firstRowGroupTable.getChild("x");
370960
+ const yColumnForBoundingBox = firstRowGroupTable.getChild("y");
370961
+ const mortonCodeColumnForBoundingBox = firstRowGroupTable.getChild(mortonCodeColumnName);
370962
+ const boundingBoxMaxNumRows = Math.min(4, firstRowGroupTable.numRows);
370963
+ const firstMortonCodes = range$e(boundingBoxMaxNumRows).map((i2) => mortonCodeColumnForBoundingBox.get(i2));
370964
+ const boundingBoxNumRows = firstMortonCodes.filter((code2) => code2 === MORTON_CODE_EXTREME_VALUE_INDICATOR).length;
370965
+ const boundingBoxXValues = range$e(boundingBoxNumRows).map((i2) => xColumnForBoundingBox.get(i2));
370966
+ const boundingBoxYValues = range$e(boundingBoxNumRows).map((i2) => yColumnForBoundingBox.get(i2));
370967
+ const xMin = Math.min(...boundingBoxXValues);
370968
+ const xMax = Math.max(...boundingBoxXValues);
370969
+ const yMin = Math.min(...boundingBoxYValues);
370970
+ const yMax = Math.max(...boundingBoxYValues);
370971
+ const allPointsBbox = {
370972
+ x_min: xMin,
370973
+ x_max: xMax,
370974
+ y_min: yMin,
370975
+ y_max: yMax
370976
+ };
370929
370977
  const rowGroupIndicesPerTile = await Promise.all(tileBboxes.map(async (subTileBbox) => _rectToRowGroupIndices({ queryClient, store }, parquetPath, subTileBbox, allPointsBbox, mortonCodeColumnName)));
370930
370978
  const uniqueCoveredRowGroupIndices = Array.from(new Set(rowGroupIndicesPerTile.flat())).toSorted((a2, b2) => a2 - b2);
370931
370979
  const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
370932
- const { numRowsPerGroup } = allMetadata;
370933
- const numRowGroups = uniqueCoveredRowGroupIndices.length;
370934
- const totalNumRows = numRowsPerGroup * numRowGroups;
370935
- const xArr = new Float32Array(totalNumRows);
370936
- const yArr = new Float32Array(totalNumRows);
370937
- const featureIndexArr = new Uint32Array(totalNumRows);
370980
+ const { numRowsPerGroupByPart, numRowGroupsByPart } = allMetadata;
370981
+ const rowGroupIToNumRows = (rowGroupI) => {
370982
+ let currPartIndex = 0;
370983
+ let prevTotalRowGroupCount = 0;
370984
+ for (let partIndex = 0; partIndex < numRowGroupsByPart.length; partIndex++) {
370985
+ const numRowGroupsInPart = numRowGroupsByPart[partIndex];
370986
+ if (prevTotalRowGroupCount <= rowGroupI && rowGroupI < prevTotalRowGroupCount + numRowGroupsInPart) {
370987
+ currPartIndex = partIndex;
370988
+ break;
370989
+ }
370990
+ prevTotalRowGroupCount += numRowGroupsInPart;
370991
+ }
370992
+ return numRowsPerGroupByPart[currPartIndex];
370993
+ };
370994
+ const totalNumRowsToLoad = uniqueCoveredRowGroupIndices.reduce((acc, rowGroupI) => acc + rowGroupIToNumRows(rowGroupI), 0);
370995
+ const xArr = new Float32Array(totalNumRowsToLoad);
370996
+ const yArr = new Float32Array(totalNumRowsToLoad);
370997
+ const featureIndexArr = new Uint32Array(totalNumRowsToLoad);
370938
370998
  const rowGroupTables = await Promise.all(uniqueCoveredRowGroupIndices.map(async (rowGroupIndex) => _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, rowGroupIndex)));
370939
370999
  let rowOffset = 0;
370940
371000
  rowGroupTables.forEach((table2) => {
@@ -370947,7 +371007,7 @@ class SpatialDataTableSource extends AnnDataSource {
370947
371007
  xArr.set(xColumn.toArray(), rowOffset);
370948
371008
  yArr.set(yColumn.toArray(), rowOffset);
370949
371009
  featureIndexArr.set(featureIndexColumn.toArray(), rowOffset);
370950
- rowOffset += numRowsPerGroup;
371010
+ rowOffset += table2.numRows;
370951
371011
  });
370952
371012
  return {
370953
371013
  data: {
@@ -370955,7 +371015,7 @@ class SpatialDataTableSource extends AnnDataSource {
370955
371015
  y: yArr,
370956
371016
  featureIndices: featureIndexArr
370957
371017
  },
370958
- shape: [3, totalNumRows]
371018
+ shape: [3, totalNumRowsToLoad]
370959
371019
  };
370960
371020
  }
370961
371021
  }
@@ -377047,7 +377107,7 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
377047
377107
  const zattrs = await this.loadSpatialDataElementAttrs(path2);
377048
377108
  const formatVersion = zattrs.spatialdata_attrs.version;
377049
377109
  const encodingType = zattrs["encoding-type"];
377050
- if (encodingType === "ngff:points" && !(formatVersion === "0.1")) {
377110
+ if (encodingType === "ngff:points" && !(formatVersion === "0.1" || formatVersion === "0.2")) {
377051
377111
  throw new Error(`Unexpected version for points spatialdata_attrs: ${formatVersion}`);
377052
377112
  }
377053
377113
  return formatVersion;
@@ -377150,16 +377210,11 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
377150
377210
  const zattrs = await this.loadSpatialDataElementAttrs(elementPath);
377151
377211
  const {
377152
377212
  // axes,
377153
- spatialdata_attrs: spatialDataAttrs,
377154
- // The bounding box (extent) of all points.
377155
- // Required for un-normalization from uints back to floats.
377156
- // TODO: decide whether these will be stored here or somewhere else.
377157
- // Reference: https://github.com/vitessce/vitessce-python/pull/476#issuecomment-3362656956
377158
- bounding_box: allPointsBbox
377213
+ spatialdata_attrs: spatialDataAttrs
377159
377214
  } = zattrs;
377160
377215
  const { feature_key: featureKey } = spatialDataAttrs;
377161
377216
  const featureIndexColumnName = featureIndexColumnNameFromOptions ?? `${featureKey}_codes`;
377162
- return this.loadParquetTableInRect(parquetPath, tileBbox, allPointsBbox, signal, featureIndexColumnName, mortonCodeColumn);
377217
+ return this.loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn);
377163
377218
  }
377164
377219
  async supportsLoadPointsInRect(elementPath, featureIndexColumnName, mortonCodeColumn) {
377165
377220
  const parquetPath = getParquetPath(elementPath);
@@ -382717,7 +382772,8 @@ const baseFileTypes = [
382717
382772
  makeFileType(FileType$1.OBS_LOCATIONS_MOLECULES_JSON, DataType$3.OBS_LOCATIONS, MoleculesJsonAsObsLocationsLoader, JsonSource, z.null()),
382718
382773
  makeFileType(FileType$1.OBS_LABELS_MOLECULES_JSON, DataType$3.OBS_LABELS, MoleculesJsonAsObsLabelsLoader, JsonSource, z.null()),
382719
382774
  makeFileType(FileType$1.NEIGHBORHOODS_JSON, DataType$3.NEIGHBORHOODS, JsonLoader, JsonSource, z.null()),
382720
- makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
382775
+ makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
382776
+ makeFileType(FileType$1.GENOMIC_PROFILES_ZARR_ZIP, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
382721
382777
  ];
382722
382778
  const baseJointFileTypes = [
382723
382779
  new PluginJointFileType(FileType$1.ANNDATA_ZARR, expandAnndataZarr, anndataZarrSchema),
@@ -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-gbtRLRj5.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-Cjg9h1C7.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-BSs_Q5On.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-DtlnpUX5.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-DK1u2spU.js"), []);
5030
+ } = suspend(async () => import("./troika-three-text.esm-3N3SIomL.js"), []);
5031
5031
  const invalidate = useThree(({
5032
5032
  invalidate: invalidate2
5033
5033
  }) => invalidate2);
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { bR, bP, bN, bQ, bO, bM, bS } from "./index-gbtRLRj5.js";
1
+ import { bR, bP, bN, bQ, bO, bM, bS } from "./index-Cjg9h1C7.js";
2
2
  import { useComplexCoordination, useComplexCoordinationSecondary, useCoordination, useCoordinationScopes, useCoordinationScopesBy, useGridItemSize, useMultiCoordinationScopesNonNull, useMultiCoordinationScopesSecondaryNonNull, usePageModeView } from "@vitessce/vit-s";
3
3
  export {
4
4
  bR as PluginAsyncFunction,
@@ -1,4 +1,4 @@
1
- import { aX as BaseDecoder } from "./index-gbtRLRj5.js";
1
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.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-gbtRLRj5.js";
2
+ import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-Cjg9h1C7.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-gbtRLRj5.js";
1
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.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-gbtRLRj5.js";
1
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.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-gbtRLRj5.js";
1
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.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-gbtRLRj5.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-Cjg9h1C7.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-gbtRLRj5.js";
1
+ import { aX as BaseDecoder } from "./index-Cjg9h1C7.js";
2
2
  class WebImageDecoder extends BaseDecoder {
3
3
  constructor() {
4
4
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"base-plugins.d.ts","sourceRoot":"","sources":["../src/base-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-plugins.d.ts","sourceRoot":"","sources":["../src/base-plugins.ts"],"names":[],"mappings":"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"}
@@ -177,6 +177,7 @@ export const baseFileTypes = [
177
177
  makeFileType(FileType.OBS_LABELS_MOLECULES_JSON, DataType.OBS_LABELS, MoleculesJsonAsObsLabelsLoader, JsonSource, z.null()),
178
178
  makeFileType(FileType.NEIGHBORHOODS_JSON, DataType.NEIGHBORHOODS, JsonLoader, JsonSource, z.null()),
179
179
  makeFileType(FileType.GENOMIC_PROFILES_ZARR, DataType.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
180
+ makeFileType(FileType.GENOMIC_PROFILES_ZARR_ZIP, DataType.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
180
181
  ];
181
182
  export const baseJointFileTypes = [
182
183
  new PluginJointFileType(FileType.ANNDATA_ZARR, expandAnndataZarr, anndataZarrSchema),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/all",
3
- "version": "3.9.8",
3
+ "version": "3.9.10",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -17,38 +17,38 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "zod": "^3.21.4",
20
- "@vitessce/styles": "3.9.8",
21
- "@vitessce/error": "3.9.8",
22
- "@vitessce/constants-internal": "3.9.8",
23
- "@vitessce/csv": "3.9.8",
24
- "@vitessce/description": "3.9.8",
25
- "@vitessce/abstract": "3.9.8",
26
- "@vitessce/feature-list": "3.9.8",
27
- "@vitessce/genomic-profiles": "3.9.8",
28
- "@vitessce/heatmap": "3.9.8",
29
- "@vitessce/glb": "3.9.8",
30
- "@vitessce/json": "3.9.8",
31
- "@vitessce/layer-controller": "3.9.8",
32
- "@vitessce/layer-controller-beta": "3.9.8",
33
- "@vitessce/link-controller": "3.9.8",
34
- "@vitessce/obs-sets-manager": "3.9.8",
35
- "@vitessce/ome-tiff": "3.9.8",
36
- "@vitessce/plugins": "3.9.8",
37
- "@vitessce/scatterplot-embedding": "3.9.8",
38
- "@vitessce/scatterplot-gating": "3.9.8",
39
- "@vitessce/schemas": "3.9.8",
40
- "@vitessce/spatial": "3.9.8",
41
- "@vitessce/status": "3.9.8",
42
- "@vitessce/vit-s": "3.9.8",
43
- "@vitessce/spatial-beta": "3.9.8",
44
- "@vitessce/zarr": "3.9.8",
45
- "@vitessce/statistical-plots": "3.9.8",
46
- "@vitessce/globals": "3.9.8",
47
- "@vitessce/spatial-zarr": "3.9.8",
48
- "@vitessce/spatial-three": "3.9.8",
49
- "@vitessce/spatial-accelerated": "3.9.8",
50
- "@vitessce/neuroglancer": "3.9.8",
51
- "@vitessce/biomarker-select": "3.9.8"
20
+ "@vitessce/styles": "3.9.10",
21
+ "@vitessce/constants-internal": "3.9.10",
22
+ "@vitessce/error": "3.9.10",
23
+ "@vitessce/description": "3.9.10",
24
+ "@vitessce/abstract": "3.9.10",
25
+ "@vitessce/csv": "3.9.10",
26
+ "@vitessce/feature-list": "3.9.10",
27
+ "@vitessce/genomic-profiles": "3.9.10",
28
+ "@vitessce/heatmap": "3.9.10",
29
+ "@vitessce/glb": "3.9.10",
30
+ "@vitessce/json": "3.9.10",
31
+ "@vitessce/layer-controller": "3.9.10",
32
+ "@vitessce/link-controller": "3.9.10",
33
+ "@vitessce/ome-tiff": "3.9.10",
34
+ "@vitessce/layer-controller-beta": "3.9.10",
35
+ "@vitessce/plugins": "3.9.10",
36
+ "@vitessce/obs-sets-manager": "3.9.10",
37
+ "@vitessce/scatterplot-embedding": "3.9.10",
38
+ "@vitessce/scatterplot-gating": "3.9.10",
39
+ "@vitessce/schemas": "3.9.10",
40
+ "@vitessce/spatial": "3.9.10",
41
+ "@vitessce/spatial-beta": "3.9.10",
42
+ "@vitessce/statistical-plots": "3.9.10",
43
+ "@vitessce/status": "3.9.10",
44
+ "@vitessce/vit-s": "3.9.10",
45
+ "@vitessce/zarr": "3.9.10",
46
+ "@vitessce/globals": "3.9.10",
47
+ "@vitessce/spatial-zarr": "3.9.10",
48
+ "@vitessce/spatial-accelerated": "3.9.10",
49
+ "@vitessce/biomarker-select": "3.9.10",
50
+ "@vitessce/neuroglancer": "3.9.10",
51
+ "@vitessce/spatial-three": "3.9.10"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/react": "^18.0.28",
@@ -366,6 +366,7 @@ export const baseFileTypes = [
366
366
  makeFileType(FileType.OBS_LABELS_MOLECULES_JSON, DataType.OBS_LABELS, MoleculesJsonAsObsLabelsLoader, JsonSource, z.null()),
367
367
  makeFileType(FileType.NEIGHBORHOODS_JSON, DataType.NEIGHBORHOODS, JsonLoader, JsonSource, z.null()),
368
368
  makeFileType(FileType.GENOMIC_PROFILES_ZARR, DataType.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
369
+ makeFileType(FileType.GENOMIC_PROFILES_ZARR_ZIP, DataType.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
369
370
  ];
370
371
 
371
372
  export const baseJointFileTypes = [