@vitessce/launcher 3.9.9 → 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.
- package/dist/{OrbitControls-rkiwZoCV.js → OrbitControls-EUhjZYox.js} +1 -1
- package/dist/{ReactNeuroglancer-Cb2ywexW.js → ReactNeuroglancer-Du5EgkkS.js} +1 -1
- package/dist/{deflate-BtZLCgk5.js → deflate-DdUMPfPX.js} +1 -1
- package/dist/{higlass-BXmDHp1M.js → higlass-BQr7sqN0.js} +1 -1
- package/dist/{index-DzPOP2R1.js → index-HfN7ntLr.js} +3 -3
- package/dist/{index-BGzgHqzw.js → index-RsK7cASr.js} +2 -2
- package/dist/{index-C7kW8YKc.js → index-dq5Rjqj6.js} +111 -65
- package/dist/index.js +1 -1
- package/dist/{jpeg-iS7dFiFn.js → jpeg-ZLpwudQ0.js} +1 -1
- package/dist/{lerc-DlsnNE1I.js → lerc-ClZhA-Ay.js} +1 -1
- package/dist/{lzw-DwMJ1C9x.js → lzw-Clq2S7lv.js} +1 -1
- package/dist/{packbits-8RuDMM5K.js → packbits-CoBPy7Ka.js} +1 -1
- package/dist/{raw-BecsWWD-.js → raw-CgEyy76y.js} +1 -1
- package/dist/{troika-three-text.esm-DCSbwoWM.js → troika-three-text.esm-C5MetR4O.js} +1 -1
- package/dist/{webimage-1fmk-aLA.js → webimage-Cqw15JzH.js} +1 -1
- package/package.json +9 -9
|
@@ -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-
|
|
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-dq5Rjqj6.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-
|
|
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-dq5Rjqj6.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-
|
|
2
|
+
import { aX as BaseDecoder } from "./index-dq5Rjqj6.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-
|
|
4
|
+
import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-dq5Rjqj6.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-
|
|
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-dq5Rjqj6.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-
|
|
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-EUhjZYox.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-
|
|
5030
|
+
} = suspend(async () => import("./troika-three-text.esm-C5MetR4O.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-
|
|
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-dq5Rjqj6.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-
|
|
3
|
+
import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-EUhjZYox.js";
|
|
4
4
|
const LogLevel = {
|
|
5
5
|
INFO: "info",
|
|
6
6
|
WARN: "warn",
|
|
@@ -11106,6 +11106,7 @@ const FileType$1 = {
|
|
|
11106
11106
|
OBS_LABELS_MUDATA_ZARR: "obsLabels.mudata.zarr",
|
|
11107
11107
|
FEATURE_LABELS_MUDATA_ZARR: "featureLabels.mudata.zarr",
|
|
11108
11108
|
GENOMIC_PROFILES_ZARR: "genomic-profiles.zarr",
|
|
11109
|
+
GENOMIC_PROFILES_ZARR_ZIP: "genomic-profiles.zarr.zip",
|
|
11109
11110
|
NEIGHBORHOODS_JSON: "neighborhoods.json",
|
|
11110
11111
|
// OME-TIFF
|
|
11111
11112
|
IMAGE_OME_TIFF: "image.ome-tiff",
|
|
@@ -11400,6 +11401,7 @@ const ViewHelpMapping = {
|
|
|
11400
11401
|
[FileType$1.OBS_LABELS_MOLECULES_JSON]: DataType$3.OBS_LABELS,
|
|
11401
11402
|
// For old file types
|
|
11402
11403
|
[FileType$1.GENOMIC_PROFILES_ZARR]: DataType$3.GENOMIC_PROFILES,
|
|
11404
|
+
[FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: DataType$3.GENOMIC_PROFILES,
|
|
11403
11405
|
[FileType$1.NEIGHBORHOODS_JSON]: DataType$3.NEIGHBORHOODS
|
|
11404
11406
|
});
|
|
11405
11407
|
({
|
|
@@ -11564,6 +11566,10 @@ const ALT_ZARR_STORE_TYPES = {
|
|
|
11564
11566
|
},
|
|
11565
11567
|
[FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR]: {
|
|
11566
11568
|
zip: FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR_ZIP
|
|
11569
|
+
},
|
|
11570
|
+
// For genomic profiles:
|
|
11571
|
+
[FileType$1.GENOMIC_PROFILES_ZARR]: {
|
|
11572
|
+
zip: FileType$1.GENOMIC_PROFILES_ZARR_ZIP
|
|
11567
11573
|
}
|
|
11568
11574
|
};
|
|
11569
11575
|
[
|
|
@@ -211827,22 +211833,22 @@ async function getDecoder(fileDirectory) {
|
|
|
211827
211833
|
const Decoder = await importFn();
|
|
211828
211834
|
return new Decoder(fileDirectory);
|
|
211829
211835
|
}
|
|
211830
|
-
addDecoder([void 0, 1], () => import("./raw-
|
|
211831
|
-
addDecoder(5, () => import("./lzw-
|
|
211836
|
+
addDecoder([void 0, 1], () => import("./raw-CgEyy76y.js").then((m2) => m2.default));
|
|
211837
|
+
addDecoder(5, () => import("./lzw-Clq2S7lv.js").then((m2) => m2.default));
|
|
211832
211838
|
addDecoder(6, () => {
|
|
211833
211839
|
throw new Error("old style JPEG compression is not supported.");
|
|
211834
211840
|
});
|
|
211835
|
-
addDecoder(7, () => import("./jpeg-
|
|
211836
|
-
addDecoder([8, 32946], () => import("./deflate-
|
|
211837
|
-
addDecoder(32773, () => import("./packbits-
|
|
211841
|
+
addDecoder(7, () => import("./jpeg-ZLpwudQ0.js").then((m2) => m2.default));
|
|
211842
|
+
addDecoder([8, 32946], () => import("./deflate-DdUMPfPX.js").then((m2) => m2.default));
|
|
211843
|
+
addDecoder(32773, () => import("./packbits-CoBPy7Ka.js").then((m2) => m2.default));
|
|
211838
211844
|
addDecoder(
|
|
211839
211845
|
34887,
|
|
211840
|
-
() => import("./lerc-
|
|
211846
|
+
() => import("./lerc-ClZhA-Ay.js").then(async (m2) => {
|
|
211841
211847
|
await m2.zstd.init();
|
|
211842
211848
|
return m2;
|
|
211843
211849
|
}).then((m2) => m2.default)
|
|
211844
211850
|
);
|
|
211845
|
-
addDecoder(50001, () => import("./webimage-
|
|
211851
|
+
addDecoder(50001, () => import("./webimage-Cqw15JzH.js").then((m2) => m2.default));
|
|
211846
211852
|
function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
|
|
211847
211853
|
return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
|
|
211848
211854
|
}
|
|
@@ -256404,12 +256410,12 @@ class ErrorBoundary extends React__default.Component {
|
|
|
256404
256410
|
}
|
|
256405
256411
|
}
|
|
256406
256412
|
const LazySpatialThree = React__default.lazy(async () => {
|
|
256407
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
256413
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-HfN7ntLr.js");
|
|
256408
256414
|
return { default: SpatialWrapper2 };
|
|
256409
256415
|
});
|
|
256410
256416
|
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
256417
|
const LazySpatialAccelerated = React__default.lazy(async () => {
|
|
256412
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
256418
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-RsK7cASr.js");
|
|
256413
256419
|
return { default: SpatialWrapper2 };
|
|
256414
256420
|
});
|
|
256415
256421
|
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 }) }) }) }));
|
|
@@ -271593,7 +271599,7 @@ function HiglassGlobalStyles(props) {
|
|
|
271593
271599
|
}
|
|
271594
271600
|
register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
|
|
271595
271601
|
const LazyHiGlassComponent = React__default.lazy(async () => {
|
|
271596
|
-
const { HiGlassComponent } = await import("./higlass-
|
|
271602
|
+
const { HiGlassComponent } = await import("./higlass-BQr7sqN0.js");
|
|
271597
271603
|
return { default: HiGlassComponent };
|
|
271598
271604
|
});
|
|
271599
271605
|
const HG_SIZE = 800;
|
|
@@ -274541,7 +274547,7 @@ function NeuroglancerGlobalStyles(props) {
|
|
|
274541
274547
|
const { classes: classes2 } = props;
|
|
274542
274548
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
|
|
274543
274549
|
}
|
|
274544
|
-
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-
|
|
274550
|
+
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-Du5EgkkS.js"));
|
|
274545
274551
|
function createWorker() {
|
|
274546
274552
|
const worker = new WorkerFactory$1();
|
|
274547
274553
|
worker.AsyncComputationWorker = WorkerFactory;
|
|
@@ -360952,7 +360958,9 @@ const fileTypeToExtensions = {
|
|
|
360952
360958
|
// TODO: how to handle h5ad-based AnnData (since needs reference JSON file).
|
|
360953
360959
|
// Perhaps just assume one H5AD+one JSON (or .ref.json) file correspond to each other?
|
|
360954
360960
|
[FileType$1.SPATIALDATA_ZARR]: [".sd.zarr", ".sdata.zarr", ".spatialdata.zarr"],
|
|
360955
|
-
[FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"]
|
|
360961
|
+
[FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"],
|
|
360962
|
+
[FileType$1.GENOMIC_PROFILES_ZARR]: [".multivec.zarr"],
|
|
360963
|
+
[FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: [".multivec.zarr.zip"]
|
|
360956
360964
|
};
|
|
360957
360965
|
const fileTypeToClass = {
|
|
360958
360966
|
// OME-TIFF
|
|
@@ -360978,7 +360986,9 @@ const ZARR_FILETYPES = [
|
|
|
360978
360986
|
FileType$1.IMAGE_OME_ZARR,
|
|
360979
360987
|
FileType$1.IMAGE_OME_ZARR_ZIP,
|
|
360980
360988
|
FileType$1.OBS_SEGMENTATIONS_OME_ZARR,
|
|
360981
|
-
FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP
|
|
360989
|
+
FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP,
|
|
360990
|
+
FileType$1.GENOMIC_PROFILES_ZARR,
|
|
360991
|
+
FileType$1.GENOMIC_PROFILES_ZARR_ZIP
|
|
360982
360992
|
];
|
|
360983
360993
|
function urlToFileType(url) {
|
|
360984
360994
|
const match2 = Object.entries(fileTypeToExtensions).find(
|
|
@@ -363226,16 +363236,25 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
|
|
|
363226
363236
|
return this.dataSource.loadDataFrameIndex(dfPath);
|
|
363227
363237
|
}
|
|
363228
363238
|
async loadDataFrame(dfPath) {
|
|
363229
|
-
|
|
363230
|
-
|
|
363231
|
-
|
|
363232
|
-
|
|
363233
|
-
|
|
363234
|
-
|
|
363235
|
-
|
|
363236
|
-
|
|
363237
|
-
|
|
363238
|
-
|
|
363239
|
+
try {
|
|
363240
|
+
const [featureId2, featureFoldChange, featureSignificance] = await Promise.all([
|
|
363241
|
+
this.loadFeatureNames(dfPath),
|
|
363242
|
+
this.loadFoldChanges(dfPath),
|
|
363243
|
+
this.loadSignificances(dfPath)
|
|
363244
|
+
]);
|
|
363245
|
+
return {
|
|
363246
|
+
featureId: featureId2,
|
|
363247
|
+
featureFoldChange,
|
|
363248
|
+
featureSignificance
|
|
363249
|
+
};
|
|
363250
|
+
} catch (e3) {
|
|
363251
|
+
log$b.warn("Dataframe not found at", dfPath);
|
|
363252
|
+
return {
|
|
363253
|
+
featureId: [],
|
|
363254
|
+
featureFoldChange: [],
|
|
363255
|
+
featureSignificance: []
|
|
363256
|
+
};
|
|
363257
|
+
}
|
|
363239
363258
|
}
|
|
363240
363259
|
/**
|
|
363241
363260
|
*
|
|
@@ -363262,7 +363281,7 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
|
|
|
363262
363281
|
* @returns {Promise<LoaderResult<FeatureStatsData>>}
|
|
363263
363282
|
*/
|
|
363264
363283
|
async loadMulti(volcanoOptions) {
|
|
363265
|
-
const { analysisType: targetAnalysisType = "
|
|
363284
|
+
const { analysisType: targetAnalysisType = "pydeseq2" } = this.options;
|
|
363266
363285
|
const { sampleSetSelection, obsSetSelection } = volcanoOptions || {};
|
|
363267
363286
|
const rawObsSetSelection = obsSetSelection;
|
|
363268
363287
|
const rawSampleSetSelection = sampleSetSelection;
|
|
@@ -364503,9 +364522,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364503
364522
|
this.dataSource.supportsLoadPointsInRect(path2, featureIndexColumnName, mortonCodeColumn)
|
|
364504
364523
|
]);
|
|
364505
364524
|
const isSupportedVersion = formatVersion === "0.1" || formatVersion === "0.2";
|
|
364506
|
-
|
|
364507
|
-
const hasBoundingBox2D = typeof boundingBox?.x_max === "number" && typeof boundingBox?.x_min === "number" && typeof boundingBox?.y_max === "number" && typeof boundingBox?.y_min === "number";
|
|
364508
|
-
return isSupportedVersion && hasBoundingBox2D && hasRequiredColumnsAndRowGroupSize;
|
|
364525
|
+
return isSupportedVersion && hasRequiredColumnsAndRowGroupSize;
|
|
364509
364526
|
}
|
|
364510
364527
|
async load() {
|
|
364511
364528
|
const [modelMatrix2, supportsTiling] = await Promise.all([
|
|
@@ -364543,7 +364560,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364543
364560
|
featureIds,
|
|
364544
364561
|
obsPointsModelMatrix: modelMatrix2,
|
|
364545
364562
|
// Return 'tiled' if the morton_code_2d column
|
|
364546
|
-
//
|
|
364563
|
+
// is present,
|
|
364547
364564
|
// and the row group size is small enough.
|
|
364548
364565
|
// Otherwise, return 'full'.
|
|
364549
364566
|
obsPointsTilingType: supportsTiling ? "tiled" : "full",
|
|
@@ -374052,6 +374069,7 @@ function sdataMortonQueryRectAux(boundingBox, origRect) {
|
|
|
374052
374069
|
const mortonIntervals = zcoverRectangle(normRect[0][0], normRect[0][1], normRect[1][0], normRect[1][1], 16, null, true);
|
|
374053
374070
|
return mortonIntervals;
|
|
374054
374071
|
}
|
|
374072
|
+
const MORTON_CODE_EXTREME_VALUE_INDICATOR = 0;
|
|
374055
374073
|
async function getParquetModule() {
|
|
374056
374074
|
const module2 = await import(
|
|
374057
374075
|
/* webpackIgnore: true */
|
|
@@ -374177,22 +374195,22 @@ async function _loadParquetMetadataByPart({ queryClient, store }, parquetPath) {
|
|
|
374177
374195
|
} catch (error2) {
|
|
374178
374196
|
if (error2.message.includes("Failed to load parquet footerLength")) {
|
|
374179
374197
|
numParts = partIndex;
|
|
374198
|
+
log$b.info(`Found ${numParts} parts for parquet path ${parquetPath}; An above "Failed to load parquet footerLength" error is expected for the subsequent part.`);
|
|
374180
374199
|
}
|
|
374181
374200
|
}
|
|
374182
374201
|
} while (numParts === void 0);
|
|
374202
|
+
const numRows = allMetadata.map((part) => part.metadata.fileMetadata().numRows());
|
|
374203
|
+
const numRowGroups = allMetadata.map((part) => part.metadata.numRowGroups());
|
|
374204
|
+
const numRowsPerGroup = allMetadata.map((part) => part.metadata.rowGroup(0).numRows());
|
|
374183
374205
|
const metadata2 = {
|
|
374184
|
-
|
|
374185
|
-
|
|
374186
|
-
|
|
374187
|
-
|
|
374188
|
-
|
|
374189
|
-
|
|
374190
|
-
|
|
374191
|
-
|
|
374192
|
-
metadata2.numRowGroups = allMetadata.reduce((sum2, part) => sum2 + part.metadata.numRowGroups(), 0);
|
|
374193
|
-
metadata2.numRowsPerGroup = firstPart.metadata.rowGroup(0).numRows();
|
|
374194
|
-
metadata2.schema = firstPart.schema.schema;
|
|
374195
|
-
}
|
|
374206
|
+
totalNumRows: numRows.reduce((a2, b2) => a2 + b2, 0),
|
|
374207
|
+
totalNumRowGroups: numRowGroups.reduce((a2, b2) => a2 + b2, 0),
|
|
374208
|
+
// Array of count per part (length equal to numParts).
|
|
374209
|
+
numRowsByPart: numRows,
|
|
374210
|
+
numRowGroupsByPart: numRowGroups,
|
|
374211
|
+
numRowsPerGroupByPart: numRowsPerGroup,
|
|
374212
|
+
schema: allMetadata?.[0]?.schema?.schema
|
|
374213
|
+
};
|
|
374196
374214
|
const result = {
|
|
374197
374215
|
...metadata2,
|
|
374198
374216
|
// TODO: extract metadata per part and rowGroup into plain objects that match the hyparquet parquetMetadata() return value?
|
|
@@ -374216,8 +374234,8 @@ async function _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetP
|
|
|
374216
374234
|
const store2 = ctx.meta?.store;
|
|
374217
374235
|
const { readParquetRowGroup } = await _getParquetModule({ queryClient: queryClient2 });
|
|
374218
374236
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
|
|
374219
|
-
if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.
|
|
374220
|
-
throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.
|
|
374237
|
+
if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.totalNumRowGroups) {
|
|
374238
|
+
throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.totalNumRowGroups} row groups.`);
|
|
374221
374239
|
}
|
|
374222
374240
|
let partIndex;
|
|
374223
374241
|
let cumulativeRowGroups = 0;
|
|
@@ -374327,9 +374345,9 @@ async function _bisectRowGroupsRight({ queryClient, store }, parquetPath, column
|
|
|
374327
374345
|
);
|
|
374328
374346
|
const store2 = ctx.meta?.store;
|
|
374329
374347
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
|
|
374330
|
-
const {
|
|
374348
|
+
const { totalNumRowGroups } = allMetadata;
|
|
374331
374349
|
let lo = 0;
|
|
374332
|
-
let hi =
|
|
374350
|
+
let hi = totalNumRowGroups;
|
|
374333
374351
|
while (lo < hi) {
|
|
374334
374352
|
const cachedInRange = await getCachedInRange(queryClient2, parquetPath, columnName, lo, hi);
|
|
374335
374353
|
const betterLo = cachedInRange.slice().reverse().find((c2) => c2.index > lo && targetValue >= c2.max);
|
|
@@ -374732,11 +374750,12 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374732
374750
|
const { queryClient } = this;
|
|
374733
374751
|
const { store } = this.storeRoot;
|
|
374734
374752
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
|
|
374735
|
-
const {
|
|
374736
|
-
const numRowsTotal = allMetadata.
|
|
374737
|
-
|
|
374753
|
+
const { numRowsPerGroupByPart } = allMetadata;
|
|
374754
|
+
const numRowsTotal = allMetadata.totalNumRows;
|
|
374755
|
+
const maxNumRowsPerGroup = Math.max(...numRowsPerGroupByPart);
|
|
374756
|
+
if (maxNumRowsPerGroup >= 1e5) {
|
|
374738
374757
|
if (numRowsTotal > 5e6) {
|
|
374739
|
-
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 (${
|
|
374758
|
+
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.`);
|
|
374740
374759
|
}
|
|
374741
374760
|
return false;
|
|
374742
374761
|
}
|
|
@@ -374760,7 +374779,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374760
374779
|
* @param {string[]|undefined} columns An optional list of column names to load.
|
|
374761
374780
|
* @returns
|
|
374762
374781
|
*/
|
|
374763
|
-
async loadParquetTableInRect(parquetPath, tileBbox,
|
|
374782
|
+
async loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn) {
|
|
374764
374783
|
const { queryClient } = this;
|
|
374765
374784
|
const { store } = this.storeRoot;
|
|
374766
374785
|
const mortonCodeColumnName = mortonCodeColumn ?? "morton_code_2d";
|
|
@@ -374785,15 +374804,46 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374785
374804
|
} else {
|
|
374786
374805
|
tileBboxes = [tileBbox];
|
|
374787
374806
|
}
|
|
374807
|
+
const firstRowGroupTable = await _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, 0);
|
|
374808
|
+
const xColumnForBoundingBox = firstRowGroupTable.getChild("x");
|
|
374809
|
+
const yColumnForBoundingBox = firstRowGroupTable.getChild("y");
|
|
374810
|
+
const mortonCodeColumnForBoundingBox = firstRowGroupTable.getChild(mortonCodeColumnName);
|
|
374811
|
+
const boundingBoxMaxNumRows = Math.min(4, firstRowGroupTable.numRows);
|
|
374812
|
+
const firstMortonCodes = range$e(boundingBoxMaxNumRows).map((i2) => mortonCodeColumnForBoundingBox.get(i2));
|
|
374813
|
+
const boundingBoxNumRows = firstMortonCodes.filter((code2) => code2 === MORTON_CODE_EXTREME_VALUE_INDICATOR).length;
|
|
374814
|
+
const boundingBoxXValues = range$e(boundingBoxNumRows).map((i2) => xColumnForBoundingBox.get(i2));
|
|
374815
|
+
const boundingBoxYValues = range$e(boundingBoxNumRows).map((i2) => yColumnForBoundingBox.get(i2));
|
|
374816
|
+
const xMin = Math.min(...boundingBoxXValues);
|
|
374817
|
+
const xMax = Math.max(...boundingBoxXValues);
|
|
374818
|
+
const yMin = Math.min(...boundingBoxYValues);
|
|
374819
|
+
const yMax = Math.max(...boundingBoxYValues);
|
|
374820
|
+
const allPointsBbox = {
|
|
374821
|
+
x_min: xMin,
|
|
374822
|
+
x_max: xMax,
|
|
374823
|
+
y_min: yMin,
|
|
374824
|
+
y_max: yMax
|
|
374825
|
+
};
|
|
374788
374826
|
const rowGroupIndicesPerTile = await Promise.all(tileBboxes.map(async (subTileBbox) => _rectToRowGroupIndices({ queryClient, store }, parquetPath, subTileBbox, allPointsBbox, mortonCodeColumnName)));
|
|
374789
374827
|
const uniqueCoveredRowGroupIndices = Array.from(new Set(rowGroupIndicesPerTile.flat())).toSorted((a2, b2) => a2 - b2);
|
|
374790
374828
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
|
|
374791
|
-
const {
|
|
374792
|
-
const
|
|
374793
|
-
|
|
374794
|
-
|
|
374795
|
-
|
|
374796
|
-
|
|
374829
|
+
const { numRowsPerGroupByPart, numRowGroupsByPart } = allMetadata;
|
|
374830
|
+
const rowGroupIToNumRows = (rowGroupI) => {
|
|
374831
|
+
let currPartIndex = 0;
|
|
374832
|
+
let prevTotalRowGroupCount = 0;
|
|
374833
|
+
for (let partIndex = 0; partIndex < numRowGroupsByPart.length; partIndex++) {
|
|
374834
|
+
const numRowGroupsInPart = numRowGroupsByPart[partIndex];
|
|
374835
|
+
if (prevTotalRowGroupCount <= rowGroupI && rowGroupI < prevTotalRowGroupCount + numRowGroupsInPart) {
|
|
374836
|
+
currPartIndex = partIndex;
|
|
374837
|
+
break;
|
|
374838
|
+
}
|
|
374839
|
+
prevTotalRowGroupCount += numRowGroupsInPart;
|
|
374840
|
+
}
|
|
374841
|
+
return numRowsPerGroupByPart[currPartIndex];
|
|
374842
|
+
};
|
|
374843
|
+
const totalNumRowsToLoad = uniqueCoveredRowGroupIndices.reduce((acc, rowGroupI) => acc + rowGroupIToNumRows(rowGroupI), 0);
|
|
374844
|
+
const xArr = new Float32Array(totalNumRowsToLoad);
|
|
374845
|
+
const yArr = new Float32Array(totalNumRowsToLoad);
|
|
374846
|
+
const featureIndexArr = new Uint32Array(totalNumRowsToLoad);
|
|
374797
374847
|
const rowGroupTables = await Promise.all(uniqueCoveredRowGroupIndices.map(async (rowGroupIndex) => _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, rowGroupIndex)));
|
|
374798
374848
|
let rowOffset = 0;
|
|
374799
374849
|
rowGroupTables.forEach((table2) => {
|
|
@@ -374806,7 +374856,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374806
374856
|
xArr.set(xColumn.toArray(), rowOffset);
|
|
374807
374857
|
yArr.set(yColumn.toArray(), rowOffset);
|
|
374808
374858
|
featureIndexArr.set(featureIndexColumn.toArray(), rowOffset);
|
|
374809
|
-
rowOffset +=
|
|
374859
|
+
rowOffset += table2.numRows;
|
|
374810
374860
|
});
|
|
374811
374861
|
return {
|
|
374812
374862
|
data: {
|
|
@@ -374814,7 +374864,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374814
374864
|
y: yArr,
|
|
374815
374865
|
featureIndices: featureIndexArr
|
|
374816
374866
|
},
|
|
374817
|
-
shape: [3,
|
|
374867
|
+
shape: [3, totalNumRowsToLoad]
|
|
374818
374868
|
};
|
|
374819
374869
|
}
|
|
374820
374870
|
}
|
|
@@ -381009,16 +381059,11 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
|
|
|
381009
381059
|
const zattrs = await this.loadSpatialDataElementAttrs(elementPath);
|
|
381010
381060
|
const {
|
|
381011
381061
|
// axes,
|
|
381012
|
-
spatialdata_attrs: spatialDataAttrs
|
|
381013
|
-
// The bounding box (extent) of all points.
|
|
381014
|
-
// Required for un-normalization from uints back to floats.
|
|
381015
|
-
// TODO: decide whether these will be stored here or somewhere else.
|
|
381016
|
-
// Reference: https://github.com/vitessce/vitessce-python/pull/476#issuecomment-3362656956
|
|
381017
|
-
bounding_box: allPointsBbox
|
|
381062
|
+
spatialdata_attrs: spatialDataAttrs
|
|
381018
381063
|
} = zattrs;
|
|
381019
381064
|
const { feature_key: featureKey } = spatialDataAttrs;
|
|
381020
381065
|
const featureIndexColumnName = featureIndexColumnNameFromOptions ?? `${featureKey}_codes`;
|
|
381021
|
-
return this.loadParquetTableInRect(parquetPath, tileBbox,
|
|
381066
|
+
return this.loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn);
|
|
381022
381067
|
}
|
|
381023
381068
|
async supportsLoadPointsInRect(elementPath, featureIndexColumnName, mortonCodeColumn) {
|
|
381024
381069
|
const parquetPath = getParquetPath(elementPath);
|
|
@@ -386576,7 +386621,8 @@ const baseFileTypes = [
|
|
|
386576
386621
|
makeFileType(FileType$1.OBS_LOCATIONS_MOLECULES_JSON, DataType$3.OBS_LOCATIONS, MoleculesJsonAsObsLocationsLoader, JsonSource, z.null()),
|
|
386577
386622
|
makeFileType(FileType$1.OBS_LABELS_MOLECULES_JSON, DataType$3.OBS_LABELS, MoleculesJsonAsObsLabelsLoader, JsonSource, z.null()),
|
|
386578
386623
|
makeFileType(FileType$1.NEIGHBORHOODS_JSON, DataType$3.NEIGHBORHOODS, JsonLoader, JsonSource, z.null()),
|
|
386579
|
-
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
|
|
386624
|
+
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
|
|
386625
|
+
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR_ZIP, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
|
|
386580
386626
|
];
|
|
386581
386627
|
const baseJointFileTypes = [
|
|
386582
386628
|
new PluginJointFileType(FileType$1.ANNDATA_ZARR, expandAnndataZarr, anndataZarrSchema),
|
package/dist/index.js
CHANGED
|
@@ -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-
|
|
2
|
+
import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-dq5Rjqj6.js";
|
|
3
3
|
var LercDecode = { exports: {} };
|
|
4
4
|
var hasRequiredLercDecode;
|
|
5
5
|
function requireLercDecode() {
|
|
@@ -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-
|
|
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-dq5Rjqj6.js";
|
|
2
2
|
function workerBootstrap() {
|
|
3
3
|
var modules = /* @__PURE__ */ Object.create(null);
|
|
4
4
|
function registerModule(ref, callback) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitessce/launcher",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.10",
|
|
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.
|
|
24
|
-
"@vitessce/
|
|
25
|
-
"@vitessce/
|
|
26
|
-
"@vitessce/
|
|
27
|
-
"@vitessce/
|
|
28
|
-
"@vitessce/
|
|
29
|
-
"@vitessce/
|
|
30
|
-
"@vitessce/config": "3.9.
|
|
23
|
+
"@vitessce/all": "3.9.10",
|
|
24
|
+
"@vitessce/constants-internal": "3.9.10",
|
|
25
|
+
"@vitessce/example-plugins": "3.9.10",
|
|
26
|
+
"@vitessce/globals": "3.9.10",
|
|
27
|
+
"@vitessce/example-configs": "3.9.10",
|
|
28
|
+
"@vitessce/vit-s": "3.9.10",
|
|
29
|
+
"@vitessce/styles": "3.9.10",
|
|
30
|
+
"@vitessce/config": "3.9.10"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"react": "18.3.1",
|