@vitessce/all 3.8.0 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{OrbitControls-Cz9DCZ2j.js → OrbitControls-CeIrm0B5.js} +1 -1
- package/dist/{ReactNeuroglancer-CbIsUGfp.js → ReactNeuroglancer-BoUKguqy.js} +1 -1
- package/dist/{deflate-BZqpc-jk.js → deflate-BmPQfLH1.js} +1 -1
- package/dist/{higlass-DEBJRTUn.js → higlass-CHvsEtQd.js} +1 -1
- package/dist/{index-eNWork9t.js → index-BNUI-w49.js} +196 -57
- package/dist/{index-CpB0CdZl.js → index-BR7YdakD.js} +3 -3
- package/dist/{index-BVFjJIoQ.js → index-BWxI6QUS.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/{jpeg-Sl7J-6mO.js → jpeg-BB_ilRwM.js} +1 -1
- package/dist/{lerc-z_QbiC-f.js → lerc-STi5EC9q.js} +1 -1
- package/dist/{lzw-C8NEd7Y4.js → lzw-BlOU-CBg.js} +1 -1
- package/dist/{packbits-BRJrVgsM.js → packbits-BkMUG84m.js} +1 -1
- package/dist/{raw-CRoXFKXe.js → raw-CDmwxpDL.js} +1 -1
- package/dist/{troika-three-text.esm-B0ld0YMM.js → troika-three-text.esm-C8Q3aJRr.js} +1 -1
- package/dist/{webimage-C6WknL6k.js → webimage-C4EDX2gd.js} +1 -1
- package/dist-tsc/base-plugins.d.ts.map +1 -1
- package/dist-tsc/base-plugins.js +5 -2
- package/package.json +33 -33
- package/src/base-plugins.ts +5 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import { aF as getDefaultExportFromCjs, aG as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aH as PCFSoftShadowMap, aI as VSMShadowMap, aJ as PCFShadowMap, aK as BasicShadowMap, aL as NoToneMapping, aM as ACESFilmicToneMapping, e as Vector3, V as Vector2, aN as Clock, aO as WebGLRenderer, aP as Camera, x as BufferGeometry, r as Material, aQ as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aR as THREE, aS as EventDispatcher, aT as MOUSE, aU as TOUCH, aV as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-
|
1
|
+
import { aF as getDefaultExportFromCjs, aG as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aH as PCFSoftShadowMap, aI as VSMShadowMap, aJ as PCFShadowMap, aK as BasicShadowMap, aL as NoToneMapping, aM as ACESFilmicToneMapping, e as Vector3, V as Vector2, aN as Clock, aO as WebGLRenderer, aP as Camera, x as BufferGeometry, r as Material, aQ as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aR as THREE, aS as EventDispatcher, aT as MOUSE, aU as TOUCH, aV as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-BNUI-w49.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 { aF as getDefaultExportFromCjs, b0 as requireAssign, b1 as require_export, b2 as require_core, b3 as require_fails, b4 as require_toObject, b5 as require_objectKeys, b6 as require_cof, b7 as require_wks, b8 as require_iterators, b9 as requireWeb_dom_iterable, ba as requireEs6_string_iterator, bb as require_anObject, bc as require_hide, bd as require_ctx, be as require_toLength, bf as require_global, bg as require_objectDp, bh as require_descriptors, bi as require_isObject, bj as require_objectCreate, bk as require_iterDefine, bl as require_iterStep, bm as require_meta, bn as require_isArray, bo as require_iobject, bp as require_setToStringTag, bq as require_aFunction, br as requireIterator, bs as require_propertyDesc, aZ as commonjsGlobal, bt as requireEs6_symbol, bu as requireDefineProperty, bv as require_toIobject, bw as require_objectGopd, bx as require_html, by as require_domCreate, bz as require_library, bA as requireSymbol, bB as require_objectPie, bC as require_has, bD as require_redefine, bE as require_objectAssign, bF as diffCameraState, ao as jsxRuntimeExports } from "./index-
|
1
|
+
import { aF as getDefaultExportFromCjs, b0 as requireAssign, b1 as require_export, b2 as require_core, b3 as require_fails, b4 as require_toObject, b5 as require_objectKeys, b6 as require_cof, b7 as require_wks, b8 as require_iterators, b9 as requireWeb_dom_iterable, ba as requireEs6_string_iterator, bb as require_anObject, bc as require_hide, bd as require_ctx, be as require_toLength, bf as require_global, bg as require_objectDp, bh as require_descriptors, bi as require_isObject, bj as require_objectCreate, bk as require_iterDefine, bl as require_iterStep, bm as require_meta, bn as require_isArray, bo as require_iobject, bp as require_setToStringTag, bq as require_aFunction, br as requireIterator, bs as require_propertyDesc, aZ as commonjsGlobal, bt as requireEs6_symbol, bu as requireDefineProperty, bv as require_toIobject, bw as require_objectGopd, bx as require_html, by as require_domCreate, bz as require_library, bA as requireSymbol, bB as require_objectPie, bC as require_has, bD as require_redefine, bE as require_objectAssign, bF as diffCameraState, ao as jsxRuntimeExports } from "./index-BNUI-w49.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 { aW as BaseDecoder } from "./index-
|
2
|
+
import { aW as BaseDecoder } from "./index-BNUI-w49.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 { aZ as commonjsGlobal$1, a_ as requireObjectAssign, aF as getDefaultExportFromCjs$1, a$ as earcut } from "./index-
|
4
|
+
import { aZ as commonjsGlobal$1, a_ as requireObjectAssign, aF as getDefaultExportFromCjs$1, a$ as earcut } from "./index-BNUI-w49.js";
|
5
5
|
var promise = {};
|
6
6
|
var hasRequiredPromise;
|
7
7
|
function requirePromise() {
|
@@ -8963,7 +8963,7 @@ const ViewType$1 = {
|
|
8963
8963
|
SCATTERPLOT: "scatterplot",
|
8964
8964
|
SPATIAL: "spatial",
|
8965
8965
|
SPATIAL_BETA: "spatialBeta",
|
8966
|
-
SPATIAL_ACCELERATED:
|
8966
|
+
// SPATIAL_ACCELERATED: 'spatialAccelerated',
|
8967
8967
|
HEATMAP: "heatmap",
|
8968
8968
|
LAYER_CONTROLLER: "layerController",
|
8969
8969
|
LAYER_CONTROLLER_BETA: "layerControllerBeta",
|
@@ -9131,6 +9131,9 @@ const FileType$1 = {
|
|
9131
9131
|
OBS_SEGMENTATIONS_OME_TIFF: "obsSegmentations.ome-tiff",
|
9132
9132
|
// GLB
|
9133
9133
|
OBS_SEGMENTATIONS_GLB: "obsSegmentations.glb",
|
9134
|
+
// Neuroglancer
|
9135
|
+
// Precomputed (mesh) format
|
9136
|
+
OBS_SEGMENTATIONS_NG_PRECOMPUTED: "obsSegmentations.ng-precomputed",
|
9134
9137
|
// New file types to support old file types:
|
9135
9138
|
// - cells.json
|
9136
9139
|
OBS_EMBEDDING_CELLS_JSON: "obsEmbedding.cells.json",
|
@@ -9385,6 +9388,7 @@ const ViewHelpMapping = {
|
|
9385
9388
|
[FileType$1.OBS_LABELS_MUDATA_ZARR]: DataType$3.OBS_LABELS,
|
9386
9389
|
[FileType$1.FEATURE_LABELS_MUDATA_ZARR]: DataType$3.FEATURE_LABELS,
|
9387
9390
|
[FileType$1.OBS_SEGMENTATIONS_GLB]: DataType$3.OBS_SEGMENTATIONS,
|
9391
|
+
[FileType$1.OBS_SEGMENTATIONS_NG_PRECOMPUTED]: DataType$3.OBS_SEGMENTATIONS,
|
9388
9392
|
[FileType$1.IMAGE_SPATIALDATA_ZARR]: DataType$3.IMAGE,
|
9389
9393
|
[FileType$1.LABELS_SPATIALDATA_ZARR]: DataType$3.OBS_SEGMENTATIONS,
|
9390
9394
|
[FileType$1.SHAPES_SPATIALDATA_ZARR]: DataType$3.OBS_SEGMENTATIONS,
|
@@ -10714,6 +10718,18 @@ const meshGlbSchema = z.object({
|
|
10714
10718
|
sceneScaleZ: z.number(),
|
10715
10719
|
materialSide: z.enum(["front", "back"])
|
10716
10720
|
}).partial().nullable();
|
10721
|
+
const ngSchema = z.object({
|
10722
|
+
// TODO: Should this explicitly specify sharded vs. unsharded?
|
10723
|
+
// Or can/should that be inferred from the data?
|
10724
|
+
dimensionX: z.number(),
|
10725
|
+
dimensionY: z.number(),
|
10726
|
+
dimensionZ: z.number(),
|
10727
|
+
dimensionUnit: z.enum(["nm", "um", "µm", "mm", "cm", "m"]),
|
10728
|
+
// TODO: should the following be passed via coordination types instead?
|
10729
|
+
projectionScale: z.number(),
|
10730
|
+
position: z.array(z.number()).length(3),
|
10731
|
+
projectionOrientation: z.array(z.number()).length(4)
|
10732
|
+
}).partial().nullable();
|
10717
10733
|
const obsEmbeddingAnndataSchema = annDataObsEmbedding;
|
10718
10734
|
const obsSpotsAnndataSchema = annDataObsLocations;
|
10719
10735
|
const obsPointsAnndataSchema = annDataObsLocations;
|
@@ -209303,22 +209319,22 @@ async function getDecoder(fileDirectory) {
|
|
209303
209319
|
const Decoder = await importFn();
|
209304
209320
|
return new Decoder(fileDirectory);
|
209305
209321
|
}
|
209306
|
-
addDecoder([void 0, 1], () => import("./raw-
|
209307
|
-
addDecoder(5, () => import("./lzw-
|
209322
|
+
addDecoder([void 0, 1], () => import("./raw-CDmwxpDL.js").then((m2) => m2.default));
|
209323
|
+
addDecoder(5, () => import("./lzw-BlOU-CBg.js").then((m2) => m2.default));
|
209308
209324
|
addDecoder(6, () => {
|
209309
209325
|
throw new Error("old style JPEG compression is not supported.");
|
209310
209326
|
});
|
209311
|
-
addDecoder(7, () => import("./jpeg-
|
209312
|
-
addDecoder([8, 32946], () => import("./deflate-
|
209313
|
-
addDecoder(32773, () => import("./packbits-
|
209327
|
+
addDecoder(7, () => import("./jpeg-BB_ilRwM.js").then((m2) => m2.default));
|
209328
|
+
addDecoder([8, 32946], () => import("./deflate-BmPQfLH1.js").then((m2) => m2.default));
|
209329
|
+
addDecoder(32773, () => import("./packbits-BkMUG84m.js").then((m2) => m2.default));
|
209314
209330
|
addDecoder(
|
209315
209331
|
34887,
|
209316
|
-
() => import("./lerc-
|
209332
|
+
() => import("./lerc-STi5EC9q.js").then(async (m2) => {
|
209317
209333
|
await m2.zstd.init();
|
209318
209334
|
return m2;
|
209319
209335
|
}).then((m2) => m2.default)
|
209320
209336
|
);
|
209321
|
-
addDecoder(50001, () => import("./webimage-
|
209337
|
+
addDecoder(50001, () => import("./webimage-C4EDX2gd.js").then((m2) => m2.default));
|
209322
209338
|
function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
|
209323
209339
|
return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
|
209324
209340
|
}
|
@@ -226160,13 +226176,13 @@ function IconButton(props) {
|
|
226160
226176
|
function ToolMenu(props) {
|
226161
226177
|
const pointerIconAltText = "Pointer tool";
|
226162
226178
|
const lassoIconAltText = "Select lasso";
|
226163
|
-
const { setActiveTool, activeTool, visibleTools = { pan: true, selectLasso: true }, recenterOnClick = () => {
|
226179
|
+
const { setActiveTool, activeTool, visibleTools = { pan: true, selectLasso: true, recenter: true }, recenterOnClick = () => {
|
226164
226180
|
} } = props;
|
226165
226181
|
const { classes: classes2 } = useStyles$s();
|
226166
226182
|
const onRecenterButtonCLick = () => {
|
226167
226183
|
recenterOnClick();
|
226168
226184
|
};
|
226169
|
-
return jsxRuntimeExports.jsxs("div", { className: classes2.tool, children: [visibleTools.pan && jsxRuntimeExports.jsx(IconTool, { alt: pointerIconAltText, onClick: () => setActiveTool(null), isActive: activeTool === null, children: jsxRuntimeExports.jsx(SvgNearMe, {}) }), visibleTools.selectLasso ? jsxRuntimeExports.jsx(IconTool, { alt: lassoIconAltText, onClick: () => setActiveTool(distEs6Exports$2.SELECTION_TYPE.POLYGON), isActive: activeTool === distEs6Exports$2.SELECTION_TYPE.POLYGON, children: jsxRuntimeExports.jsx(SvgSelectionLasso, {}) }) : null, jsxRuntimeExports.jsx(IconButton, { alt: "click to recenter", onClick: () => onRecenterButtonCLick(), "aria-label": "Recenter scatterplot view", children: jsxRuntimeExports.jsx(CenterFocusStrong, {}) })] });
|
226185
|
+
return jsxRuntimeExports.jsxs("div", { className: classes2.tool, children: [visibleTools.pan && jsxRuntimeExports.jsx(IconTool, { alt: pointerIconAltText, onClick: () => setActiveTool(null), isActive: activeTool === null, children: jsxRuntimeExports.jsx(SvgNearMe, {}) }), visibleTools.selectLasso ? jsxRuntimeExports.jsx(IconTool, { alt: lassoIconAltText, onClick: () => setActiveTool(distEs6Exports$2.SELECTION_TYPE.POLYGON), isActive: activeTool === distEs6Exports$2.SELECTION_TYPE.POLYGON, children: jsxRuntimeExports.jsx(SvgSelectionLasso, {}) }) : null, visibleTools.recenter ? jsxRuntimeExports.jsx(IconButton, { alt: "click to recenter", onClick: () => onRecenterButtonCLick(), "aria-label": "Recenter scatterplot view", children: jsxRuntimeExports.jsx(CenterFocusStrong, {}) }) : null] });
|
226170
226186
|
}
|
226171
226187
|
const getCursorWithTool = () => "crosshair";
|
226172
226188
|
const getCursor = (interactionState) => interactionState.isDragging ? "grabbing" : "default";
|
@@ -226400,7 +226416,7 @@ class AbstractSpatialOrScatterplot extends PureComponent {
|
|
226400
226416
|
* and Scatterplot components.
|
226401
226417
|
*/
|
226402
226418
|
render() {
|
226403
|
-
const { deckRef, viewState, uuid: uuid2, hideTools, orbitAxis } = this.props;
|
226419
|
+
const { deckRef, viewState, uuid: uuid2, hideTools, hideRecenter, orbitAxis } = this.props;
|
226404
226420
|
const { gl, tool } = this.state;
|
226405
226421
|
const layers = this.getLayers();
|
226406
226422
|
const use3d = this.use3d();
|
@@ -226409,7 +226425,8 @@ class AbstractSpatialOrScatterplot extends PureComponent {
|
|
226409
226425
|
const useDevicePixels = !use3d && (this.obsSegmentationsData?.shape?.[0] < 1e5 || this.obsLocationsData?.shape?.[1] < 1e5);
|
226410
226426
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(ToolMenu, { activeTool: tool, setActiveTool: this.onToolChange, visibleTools: {
|
226411
226427
|
pan: showPanTool && !hideTools,
|
226412
|
-
selectLasso: showCellSelectionTools && !hideTools
|
226428
|
+
selectLasso: showCellSelectionTools && !hideTools,
|
226429
|
+
recenter: !hideRecenter
|
226413
226430
|
}, recenterOnClick: this.recenter }), jsxRuntimeExports.jsx(DeckGL, { id: `deckgl-overlay-${uuid2}`, ref: deckRef, views: [
|
226414
226431
|
use3d ? new OrbitView({ id: "orbit", controller: true, orbitAxis }) : new OrthographicView({
|
226415
226432
|
id: "ortho"
|
@@ -232049,21 +232066,14 @@ function DualEmbeddingScatterplotSubscriber(props) {
|
|
232049
232066
|
function GatingScatterplotOptions(props) {
|
232050
232067
|
const { featureType, gatingFeatureSelectionX, setGatingFeatureSelectionX, gatingFeatureSelectionY, setGatingFeatureSelectionY, gatingFeatureValueTransform, setGatingFeatureValueTransform, gatingFeatureValueTransformCoefficient, setGatingFeatureValueTransformCoefficient, geneSelectOptions, transformOptions } = props;
|
232051
232068
|
const gatingScatterplotOptionsId = $bdb11010cef70236$export$f680877a34711e37();
|
232069
|
+
const gatingScatterplotGeneXId = $bdb11010cef70236$export$f680877a34711e37();
|
232070
|
+
const gatingScatterplotGeneYId = $bdb11010cef70236$export$f680877a34711e37();
|
232052
232071
|
const { classes: classes2 } = usePlotOptionsStyles();
|
232053
|
-
const
|
232054
|
-
|
232055
|
-
|
232056
|
-
|
232057
|
-
|
232058
|
-
newValues.push(options[i2].value);
|
232059
|
-
}
|
232060
|
-
}
|
232061
|
-
if (newValues.length === 1 && gatingFeatureSelectionX && !gatingFeatureSelectionY && newValues[0] !== gatingFeatureSelectionX) {
|
232062
|
-
setGatingFeatureSelectionY(newValues[0]);
|
232063
|
-
} else if (newValues.length <= 2) {
|
232064
|
-
setGatingFeatureSelectionX(newValues[0]);
|
232065
|
-
setGatingFeatureSelectionY(newValues[1]);
|
232066
|
-
}
|
232072
|
+
const handleSelectionX = (event2) => {
|
232073
|
+
setGatingFeatureSelectionX(event2.target.value === "" ? null : event2.target.value);
|
232074
|
+
};
|
232075
|
+
const handleSelectionY = (event2) => {
|
232076
|
+
setGatingFeatureSelectionY(event2.target.value === "" ? null : event2.target.value);
|
232067
232077
|
};
|
232068
232078
|
const handleTransformChange = (event2) => {
|
232069
232079
|
setGatingFeatureValueTransform(event2.target.value === "" ? null : event2.target.value);
|
@@ -232079,11 +232089,13 @@ function GatingScatterplotOptions(props) {
|
|
232079
232089
|
}
|
232080
232090
|
}
|
232081
232091
|
};
|
232082
|
-
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.
|
232083
|
-
id: `scatterplot-gating-gene-select-${
|
232084
|
-
}, children: geneSelectOptions.map((name2) => jsxRuntimeExports.jsx("option", { value: name2, children: name2 }, name2)) }) })] }), jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.
|
232092
|
+
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsxs("label", { htmlFor: `scatterplot-gating-gene-select-${gatingScatterplotGeneXId}`, children: [capitalize$3(featureType), " along X"] }) }), jsxRuntimeExports.jsx(TableCell, { className: classes2.inputCell, variant: "body", children: jsxRuntimeExports.jsxs(OptionSelect, { className: classes2.select, value: gatingFeatureSelectionX ?? "", onChange: handleSelectionX, inputProps: {
|
232093
|
+
id: `scatterplot-gating-gene-select-${gatingScatterplotGeneXId}`
|
232094
|
+
}, children: [jsxRuntimeExports.jsx("option", { value: "", children: "None" }), geneSelectOptions.map((name2) => jsxRuntimeExports.jsx("option", { value: name2, children: name2 }, name2))] }) })] }), jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsxs("label", { htmlFor: `scatterplot-gating-gene-select-${gatingScatterplotGeneYId}`, children: [capitalize$3(featureType), " along Y"] }) }), jsxRuntimeExports.jsx(TableCell, { className: classes2.inputCell, variant: "body", children: jsxRuntimeExports.jsxs(OptionSelect, { className: classes2.select, value: gatingFeatureSelectionY ?? "", onChange: handleSelectionY, inputProps: {
|
232095
|
+
id: `scatterplot-gating-gene-select-${gatingScatterplotGeneYId}`
|
232096
|
+
}, children: [jsxRuntimeExports.jsx("option", { value: "", children: "None" }), geneSelectOptions.map((name2) => jsxRuntimeExports.jsx("option", { value: name2, children: name2 }, name2))] }) })] }), jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsx("label", { htmlFor: `scatterplot-gating-transform-select-${gatingScatterplotOptionsId}`, children: "Transform" }) }), jsxRuntimeExports.jsx(TableCell, { className: classes2.inputCell, variant: "body", children: jsxRuntimeExports.jsx(OptionSelect, { className: classes2.select, value: gatingFeatureValueTransform === null ? "" : gatingFeatureValueTransform, onChange: handleTransformChange, inputProps: {
|
232085
232097
|
id: `scatterplot-gating-transform-select-${gatingScatterplotOptionsId}`
|
232086
|
-
}, children: transformOptions.map((opt) => jsxRuntimeExports.jsx("option", { value: opt.value === null ? "" : opt.value, children: opt.name }, opt.name)) }) })] }), jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsx("label", { htmlFor: `scatterplot-gating-transform-coefficient-${gatingScatterplotOptionsId}`, children: "Transform Coefficient" }) }), jsxRuntimeExports.jsx(TableCell, { className: classes2.inputCell, variant: "body", children: jsxRuntimeExports.jsx(TextField, { label: "Transform Coefficient", type: "number", onChange: handleTransformCoefficientChange, value: gatingFeatureValueTransformCoefficient, slotProps: {
|
232098
|
+
}, children: transformOptions.map((opt) => jsxRuntimeExports.jsx("option", { value: opt.value === null ? "" : opt.value, children: opt.name }, opt.name)) }) })] }), jsxRuntimeExports.jsxs(TableRow, { children: [jsxRuntimeExports.jsx(TableCell, { className: classes2.labelCell, variant: "head", scope: "row", children: jsxRuntimeExports.jsx("label", { htmlFor: `scatterplot-gating-transform-coefficient-${gatingScatterplotOptionsId}`, children: "Transform Coefficient" }) }), jsxRuntimeExports.jsx(TableCell, { className: classes2.inputCell, variant: "body", children: jsxRuntimeExports.jsx(TextField, { label: "Transform Coefficient", type: "number", onChange: handleTransformCoefficientChange, value: gatingFeatureValueTransformCoefficient, slotProps: { inputLabel: { shrink: true } }, id: `scatterplot-gating-transform-coefficient-${gatingScatterplotOptionsId}` }) })] })] });
|
232087
232099
|
}
|
232088
232100
|
function GatingSubscriber(props) {
|
232089
232101
|
const {
|
@@ -232104,6 +232116,7 @@ function GatingSubscriber(props) {
|
|
232104
232116
|
const setComponentHover = useSetComponentHover();
|
232105
232117
|
const setComponentViewInfo = useSetComponentViewInfo(uuid2);
|
232106
232118
|
const [{ dataset, obsType, featureType, featureValueType, embeddingZoom: zoom2, embeddingTargetX: targetX2, embeddingTargetY: targetY2, embeddingTargetZ: targetZ, obsFilter: cellFilter, obsHighlight: cellHighlight, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, obsColorEncoding: cellColorEncoding, additionalObsSets: additionalCellSets, embeddingObsSetPolygonsVisible: cellSetPolygonsVisible, embeddingObsSetLabelsVisible: cellSetLabelsVisible, embeddingObsSetLabelSize: cellSetLabelSize, embeddingObsRadius: cellRadiusFixed, embeddingObsRadiusMode: cellRadiusMode, embeddingObsOpacity: cellOpacityFixed, embeddingObsOpacityMode: cellOpacityMode, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, featureSelection: gatingFeatureSelectionColor, featureValueTransform, featureValueTransformCoefficient, gatingFeatureSelectionX, gatingFeatureSelectionY }, { setEmbeddingZoom: setZoom, setEmbeddingTargetX: setTargetX, setEmbeddingTargetY: setTargetY, setEmbeddingTargetZ: setTargetZ, setObsFilter: setCellFilter, setObsSetSelection: setCellSetSelection, setObsHighlight: setCellHighlight, setObsSetColor: setCellSetColor, setObsColorEncoding: setCellColorEncoding, setAdditionalObsSets: setAdditionalCellSets, setEmbeddingObsSetPolygonsVisible: setCellSetPolygonsVisible, setEmbeddingObsSetLabelsVisible: setCellSetLabelsVisible, setEmbeddingObsSetLabelSize: setCellSetLabelSize, setEmbeddingObsRadius: setCellRadiusFixed, setEmbeddingObsRadiusMode: setCellRadiusMode, setEmbeddingObsOpacity: setCellOpacityFixed, setEmbeddingObsOpacityMode: setCellOpacityMode, setFeatureValueColormap: setGeneExpressionColormap, setFeatureValueColormapRange: setGeneExpressionColormapRange, setFeatureValueTransform, setFeatureValueTransformCoefficient, setGatingFeatureSelectionX, setGatingFeatureSelectionY }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.GATING], coordinationScopes);
|
232119
|
+
const { embeddingZoom: initialZoom, embeddingTargetX: initialTargetX, embeddingTargetY: initialTargetY } = useInitialCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.GATING], coordinationScopes);
|
232107
232120
|
const [width2, height2, deckRef] = useDeckCanvasSize();
|
232108
232121
|
const title2 = useMemo$1(() => {
|
232109
232122
|
if (titleOverride) {
|
@@ -232189,6 +232202,7 @@ function GatingSubscriber(props) {
|
|
232189
232202
|
]);
|
232190
232203
|
const [dynamicCellRadius, setDynamicCellRadius] = useState(cellRadiusFixed);
|
232191
232204
|
const [dynamicCellOpacity, setDynamicCellOpacity] = useState(cellOpacityFixed);
|
232205
|
+
const [originalViewState, setOriginalViewState] = useState(null);
|
232192
232206
|
const mergedCellSets = useMemo$1(() => mergeObsSets(cellSets, additionalCellSets), [cellSets, additionalCellSets]);
|
232193
232207
|
const setCellSelectionProp = useCallback((v) => {
|
232194
232208
|
setObsSelection(v, additionalCellSets, cellSetColor, setCellSetSelection, setAdditionalCellSets, setCellSetColor, setCellColorEncoding);
|
@@ -232259,13 +232273,20 @@ function GatingSubscriber(props) {
|
|
232259
232273
|
setDynamicCellRadius(pointSizeDevicePixels);
|
232260
232274
|
const nextCellOpacityScale = getPointOpacity(zoom2, xRange, yRange, width2, height2, numCells, averageFillDensity);
|
232261
232275
|
setDynamicCellOpacity(nextCellOpacityScale);
|
232262
|
-
if (typeof
|
232276
|
+
if (typeof initialTargetX !== "number" || typeof initialTargetY !== "number") {
|
232263
232277
|
const newTargetX = xExtent[0] + xRange / 2;
|
232264
232278
|
const newTargetY = yExtent[0] + yRange / 2;
|
232265
232279
|
const newZoom = Math.log2(Math.min(width2 / xRange, height2 / yRange));
|
232266
|
-
|
232267
|
-
|
232268
|
-
|
232280
|
+
const notYetInitialized = typeof targetX2 !== "number" || typeof targetY2 !== "number";
|
232281
|
+
const stillDefaultInitialized = targetX2 === newTargetX && targetY2 === -newTargetY;
|
232282
|
+
if (notYetInitialized || stillDefaultInitialized) {
|
232283
|
+
setTargetX(newTargetX);
|
232284
|
+
setTargetY(-newTargetY);
|
232285
|
+
setZoom(newZoom);
|
232286
|
+
}
|
232287
|
+
setOriginalViewState({ target: [newTargetX, -newTargetY, 0], zoom: newZoom });
|
232288
|
+
} else if (!originalViewState) {
|
232289
|
+
setOriginalViewState({ target: [initialTargetX, initialTargetY, 0], zoom: initialZoom });
|
232269
232290
|
}
|
232270
232291
|
}
|
232271
232292
|
}, [
|
@@ -232277,6 +232298,8 @@ function GatingSubscriber(props) {
|
|
232277
232298
|
width2,
|
232278
232299
|
height2,
|
232279
232300
|
zoom2,
|
232301
|
+
initialTargetX,
|
232302
|
+
initialTargetY,
|
232280
232303
|
averageFillDensity
|
232281
232304
|
]);
|
232282
232305
|
const cellSelectionSet = useMemo$1(() => new Set(cellSelection), [cellSelection]);
|
@@ -232307,19 +232330,20 @@ function GatingSubscriber(props) {
|
|
232307
232330
|
gatingFeatureSelectionY,
|
232308
232331
|
obsType
|
232309
232332
|
]);
|
232333
|
+
const setViewState = ({ zoom: newZoom, target: target2 }) => {
|
232334
|
+
setZoom(newZoom);
|
232335
|
+
setTargetX(target2[0]);
|
232336
|
+
setTargetY(target2[1]);
|
232337
|
+
setTargetZ(target2[2] || 0);
|
232338
|
+
};
|
232310
232339
|
return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: `${commaNumber(cellsCount)} ${pluralize(obsType, cellsCount)}`, closeButtonVisible, downloadButtonVisible, removeGridComponent, urls: urls2, theme, isReady, helpText, errors, options: jsxRuntimeExports.jsx(ScatterplotOptions, { observationsLabel: obsType, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode, setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode, setCellOpacityMode, cellSetLabelsVisible, setCellSetLabelsVisible, cellSetLabelSize, setCellSetLabelSize, cellSetPolygonsVisible, setCellSetPolygonsVisible, cellColorEncoding, setCellColorEncoding, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, children: jsxRuntimeExports.jsx(GatingScatterplotOptions, { featureType, gatingFeatureSelectionX, setGatingFeatureSelectionX, gatingFeatureSelectionY, setGatingFeatureSelectionY, gatingFeatureValueTransform: featureValueTransform, setGatingFeatureValueTransform: (newValue) => {
|
232311
232340
|
setFeatureValueTransform(newValue);
|
232312
232341
|
setTargetX(null);
|
232313
232342
|
setTargetY(null);
|
232314
232343
|
setZoom(null);
|
232315
|
-
}, gatingFeatureValueTransformCoefficient: featureValueTransformCoefficient, setGatingFeatureValueTransformCoefficient: setFeatureValueTransformCoefficient, geneSelectOptions: featureIndex, transformOptions: VALUE_TRANSFORM_OPTIONS }) }), children: [jsxRuntimeExports.jsx(EmptyMessage, { visible: !(gatingFeatureSelectionX && gatingFeatureSelectionY), message: `Select two ${pluralize(featureType, 2)} in the plot settings.` }), jsxRuntimeExports.jsx(ScatterplotWrapper, { ref: deckRef, uuid: uuid2, theme, hideTools: !(gatingFeatureSelectionX && gatingFeatureSelectionY), viewState: { zoom: zoom2, target: [targetX2, targetY2, targetZ] }, setViewState:
|
232316
|
-
setZoom(newZoom);
|
232317
|
-
setTargetX(target2[0]);
|
232318
|
-
setTargetY(target2[1]);
|
232319
|
-
setTargetZ(target2[2] || 0);
|
232320
|
-
}, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter, cellSelection, cellHighlight, cellColors, cellSetPolygons, cellSetLabelSize, cellSetLabelsVisible, cellSetPolygonsVisible, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, cellRadius, cellOpacity, cellColorEncoding, geneExpressionColormap, geneExpressionColormapRange, setComponentHover: () => {
|
232344
|
+
}, gatingFeatureValueTransformCoefficient: featureValueTransformCoefficient, setGatingFeatureValueTransformCoefficient: setFeatureValueTransformCoefficient, geneSelectOptions: featureIndex, transformOptions: VALUE_TRANSFORM_OPTIONS }) }), children: [jsxRuntimeExports.jsx(EmptyMessage, { visible: !(gatingFeatureSelectionX && gatingFeatureSelectionY), message: `Select two ${pluralize(featureType, 2)} in the plot settings.` }), jsxRuntimeExports.jsx(ScatterplotWrapper, { ref: deckRef, uuid: uuid2, theme, hideTools: !(gatingFeatureSelectionX && gatingFeatureSelectionY), hideRecenter: !(gatingFeatureSelectionX && gatingFeatureSelectionY), viewState: { zoom: zoom2, target: [targetX2, targetY2, targetZ] }, setViewState, originalViewState, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter, cellSelection, cellHighlight, cellColors, cellSetPolygons, cellSetLabelSize, cellSetLabelsVisible, cellSetPolygonsVisible, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, cellRadius, cellOpacity, cellColorEncoding, geneExpressionColormap, geneExpressionColormapRange, setComponentHover: () => {
|
232321
232345
|
setComponentHover(uuid2);
|
232322
|
-
}, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo })] });
|
232346
|
+
}, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected, embeddingPointsVisible: true }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo })] });
|
232323
232347
|
}
|
232324
232348
|
var DEFAULT_CONFIG = {
|
232325
232349
|
// minimum relative difference between two compared values,
|
@@ -248635,7 +248659,7 @@ let Location$1 = class Location {
|
|
248635
248659
|
}
|
248636
248660
|
resolve(path2) {
|
248637
248661
|
let root2 = new URL(`file://${this.path.endsWith("/") ? this.path : `${this.path}/`}`);
|
248638
|
-
return new Location(this.store, new URL(path2, root2).pathname);
|
248662
|
+
return new Location(this.store, decodeURIComponent(new URL(path2, root2).pathname));
|
248639
248663
|
}
|
248640
248664
|
};
|
248641
248665
|
function root$1(store) {
|
@@ -253006,12 +253030,12 @@ class ErrorBoundary extends React__default.Component {
|
|
253006
253030
|
}
|
253007
253031
|
}
|
253008
253032
|
const LazySpatialThree = React__default.lazy(async () => {
|
253009
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
253033
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BR7YdakD.js");
|
253010
253034
|
return { default: SpatialWrapper2 };
|
253011
253035
|
});
|
253012
253036
|
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 }) }) }) }));
|
253013
253037
|
const LazySpatialAccelerated = React__default.lazy(async () => {
|
253014
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
253038
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BWxI6QUS.js");
|
253015
253039
|
return { default: SpatialWrapper2 };
|
253016
253040
|
});
|
253017
253041
|
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 }) }) }) }));
|
@@ -253216,6 +253240,7 @@ function SpatialSubscriber(props) {
|
|
253216
253240
|
CoordinationType$1.LEGEND_VISIBLE
|
253217
253241
|
], coordinationScopes, coordinationScopesBy, CoordinationType$1.POINT_LAYER);
|
253218
253242
|
const is3dMode = spatialRenderingMode === "3D";
|
253243
|
+
const shouldUseThree = threeFor3d && is3dMode;
|
253219
253244
|
const [deckWidth, deckHeight, deckRef] = useDeckCanvasSize();
|
253220
253245
|
const [threeWidth, threeHeight, threeRef] = useGridItemSize();
|
253221
253246
|
const width2 = threeFor3d && deckWidth === void 0 ? threeWidth : deckWidth;
|
@@ -253484,7 +253509,7 @@ function SpatialSubscriber(props) {
|
|
253484
253509
|
}
|
253485
253510
|
}
|
253486
253511
|
};
|
253487
|
-
return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, children: [
|
253512
|
+
return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, children: [shouldUseThree ? acceleratedFor3d ? jsxRuntimeExports.jsx(SpatialAcceleratedAdapter, { ref: threeRef, uuid: uuid2, width: width2, height: height2, theme, hideTools: !isSelectable, rotation: [rotationX, rotationY, rotationZ], setRotationX, setRotationY, setRotationZ, targetT, targetZ, viewState: isValidViewState ? {
|
253488
253513
|
zoom: zoom2,
|
253489
253514
|
target: [targetX2, targetY2, targetZ],
|
253490
253515
|
rotationX,
|
@@ -266211,7 +266236,7 @@ function HiglassGlobalStyles(props) {
|
|
266211
266236
|
}
|
266212
266237
|
register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
|
266213
266238
|
const LazyHiGlassComponent = React__default.lazy(async () => {
|
266214
|
-
const { HiGlassComponent } = await import("./higlass-
|
266239
|
+
const { HiGlassComponent } = await import("./higlass-CHvsEtQd.js");
|
266215
266240
|
return { default: HiGlassComponent };
|
266216
266241
|
});
|
266217
266242
|
const HG_SIZE = 800;
|
@@ -269158,7 +269183,7 @@ function NeuroglancerGlobalStyles(props) {
|
|
269158
269183
|
const { classes: classes2 } = props;
|
269159
269184
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
|
269160
269185
|
}
|
269161
|
-
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-
|
269186
|
+
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-BoUKguqy.js"));
|
269162
269187
|
function createWorker() {
|
269163
269188
|
return new WorkerFactory();
|
269164
269189
|
}
|
@@ -269235,6 +269260,108 @@ class NeuroglancerComp extends PureComponent {
|
|
269235
269260
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(NeuroglancerGlobalStyles, { classes: classes2 }), jsxRuntimeExports.jsx("div", { className: classes2.neuroglancerWrapper, children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazyReactNeuroglancer, { brainMapsClientId: "NOT_A_VALID_ID", viewerState, onViewerStateChanged: this.onViewerStateChanged, bundleRoot: this.bundleRoot, cellColorMapping, ref: this.onRef }) }) })] });
|
269236
269261
|
}
|
269237
269262
|
}
|
269263
|
+
const DEFAULT_NG_PROPS = {
|
269264
|
+
layout: "3d",
|
269265
|
+
position: [0, 0, 0],
|
269266
|
+
projectionOrientation: [0, 0, 0, 1],
|
269267
|
+
projectionScale: 1024,
|
269268
|
+
crossSectionScale: 1
|
269269
|
+
};
|
269270
|
+
function toPrecomputedSource(url) {
|
269271
|
+
if (!url) {
|
269272
|
+
return void 0;
|
269273
|
+
}
|
269274
|
+
return `precomputed://${url}`;
|
269275
|
+
}
|
269276
|
+
const UNIT_TO_NM = {
|
269277
|
+
nm: 1,
|
269278
|
+
um: 1e3,
|
269279
|
+
µm: 1e3,
|
269280
|
+
mm: 1e6,
|
269281
|
+
cm: 1e7,
|
269282
|
+
m: 1e9
|
269283
|
+
};
|
269284
|
+
function isInNanometerRange(value2, unit2, minNm = 1, maxNm = 100) {
|
269285
|
+
const n3 = typeof value2 === "number" ? value2 : Number(value2);
|
269286
|
+
if (!Number.isFinite(n3))
|
269287
|
+
return false;
|
269288
|
+
const factor = unit2 && UNIT_TO_NM[unit2];
|
269289
|
+
if (!factor)
|
269290
|
+
return false;
|
269291
|
+
const nm = n3 * factor;
|
269292
|
+
return nm >= minNm && nm <= maxNm;
|
269293
|
+
}
|
269294
|
+
function normalizeDimensionsToNanometers(opts2) {
|
269295
|
+
const { dimensionUnit, dimensionX, dimensionY, dimensionZ } = opts2;
|
269296
|
+
if (!dimensionUnit || !dimensionX || !dimensionY || !dimensionZ) {
|
269297
|
+
console.warn("Missing dimension info");
|
269298
|
+
}
|
269299
|
+
const xNm = isInNanometerRange(dimensionX, dimensionUnit);
|
269300
|
+
const yNm = isInNanometerRange(dimensionY, dimensionUnit);
|
269301
|
+
const zNm = isInNanometerRange(dimensionZ, dimensionUnit);
|
269302
|
+
if (!xNm || !yNm || !zNm) {
|
269303
|
+
console.warn("Dimension was converted to nm units");
|
269304
|
+
}
|
269305
|
+
return {
|
269306
|
+
x: xNm ? [dimensionX, dimensionUnit] : [1, "nm"],
|
269307
|
+
y: yNm ? [dimensionY, dimensionUnit] : [1, "nm"],
|
269308
|
+
z: zNm ? [dimensionZ, dimensionUnit] : [1, "nm"]
|
269309
|
+
};
|
269310
|
+
}
|
269311
|
+
function extractDataTypeEntities(loaders, dataset, dataType) {
|
269312
|
+
const datasetEntry = loaders?.[dataset];
|
269313
|
+
const internMap = datasetEntry?.loaders?.[dataType];
|
269314
|
+
if (!internMap || typeof internMap.entries !== "function")
|
269315
|
+
return [];
|
269316
|
+
return Array.from(internMap.entries()).map(([key2, loader2]) => {
|
269317
|
+
const url = loader2?.url ?? loader2?.dataSource?.url ?? void 0;
|
269318
|
+
const fileUid = key2?.fileUid ?? loader2?.coordinationValues?.fileUid ?? void 0;
|
269319
|
+
const { position: position2, projectionOrientation, projectionScale, crossSectionScale } = loader2?.options ?? {};
|
269320
|
+
const isPrecomputed = loader2?.fileType.includes("precomputed");
|
269321
|
+
if (!isPrecomputed) {
|
269322
|
+
console.warn("Filetype needs to be precomputed");
|
269323
|
+
}
|
269324
|
+
return {
|
269325
|
+
key: key2,
|
269326
|
+
type: "segmentation",
|
269327
|
+
fileUid,
|
269328
|
+
layout: DEFAULT_NG_PROPS.layout,
|
269329
|
+
url,
|
269330
|
+
source: toPrecomputedSource(url),
|
269331
|
+
name: fileUid ?? key2?.name ?? "segmentation",
|
269332
|
+
// For precomputed: nm is the unit used
|
269333
|
+
dimensions: normalizeDimensionsToNanometers(loader2?.options),
|
269334
|
+
// If not provided, no error, but difficult to see the data
|
269335
|
+
position: Array.isArray(position2) && position2.length === 3 ? position2 : DEFAULT_NG_PROPS.position,
|
269336
|
+
// If not provided, will have a default orientation
|
269337
|
+
projectionOrientation: Array.isArray(projectionOrientation) && projectionOrientation.length === 4 ? projectionOrientation : DEFAULT_NG_PROPS.projectionOrientation,
|
269338
|
+
projectionScale: Number.isFinite(projectionScale) ? projectionScale : DEFAULT_NG_PROPS.projectionScale,
|
269339
|
+
crossSectionScale: Number.isFinite(crossSectionScale) ? crossSectionScale : DEFAULT_NG_PROPS.crossSectionScale
|
269340
|
+
};
|
269341
|
+
});
|
269342
|
+
}
|
269343
|
+
function useExtractOptionsForNg(loaders, dataset, dataType) {
|
269344
|
+
const extractedEntities = useMemo$1(() => extractDataTypeEntities(loaders, dataset, dataType), [loaders, dataset, dataType]);
|
269345
|
+
const layers = useMemo$1(() => extractedEntities.filter((t4) => t4.source).map((t4) => ({
|
269346
|
+
type: t4.type,
|
269347
|
+
source: t4.source,
|
269348
|
+
segments: [],
|
269349
|
+
name: t4.name || "segmentation"
|
269350
|
+
})), [extractedEntities]);
|
269351
|
+
const viewerState = useMemo$1(() => ({
|
269352
|
+
dimensions: extractedEntities[0]?.dimensions,
|
269353
|
+
position: extractedEntities[0]?.position,
|
269354
|
+
crossSectionScale: extractedEntities[0]?.crossSectionScale,
|
269355
|
+
projectionOrientation: extractedEntities[0]?.projectionOrientation,
|
269356
|
+
projectionScale: extractedEntities[0]?.projectionScale,
|
269357
|
+
layers,
|
269358
|
+
layout: extractedEntities[0].layout
|
269359
|
+
}));
|
269360
|
+
return [viewerState];
|
269361
|
+
}
|
269362
|
+
function useNeuroglancerViewerState(loaders, dataset, isRequired, coordinationSetters, initialCoordinationValues, matchOn) {
|
269363
|
+
return useExtractOptionsForNg(loaders, dataset, DataType$3.OBS_SEGMENTATIONS);
|
269364
|
+
}
|
269238
269365
|
/**
|
269239
269366
|
* @license
|
269240
269367
|
* Copyright 2010-2023 Three.js Authors
|
@@ -298850,10 +298977,6 @@ const multiplyQuat = (a2, b2) => {
|
|
298850
298977
|
const conjQuat = (q) => [-q[0], -q[1], -q[2], q[3]];
|
298851
298978
|
const rad2deg = (r3) => r3 * 180 / Math.PI;
|
298852
298979
|
const deg2rad = (d) => d * Math.PI / 180;
|
298853
|
-
function isValidState(viewerState) {
|
298854
|
-
const { projectionScale, projectionOrientation, position: position2, dimensions } = viewerState || {};
|
298855
|
-
return dimensions !== void 0 && typeof projectionScale === "number" && Array.isArray(projectionOrientation) && projectionOrientation.length === 4 && Array.isArray(position2) && position2.length === 3;
|
298856
|
-
}
|
298857
298980
|
function valueGreaterThanEpsilon(a2, b2, epsilon3) {
|
298858
298981
|
if (Array.isArray(a2) && Array.isArray(b2) && a2.length === b2.length) {
|
298859
298982
|
return a2.some((val, i2) => Math.abs(val - b2[i2]) > epsilon3);
|
@@ -298865,8 +298988,6 @@ function valueGreaterThanEpsilon(a2, b2, epsilon3) {
|
|
298865
298988
|
}
|
298866
298989
|
const nearEq = (a2, b2, epsilon3) => Number.isFinite(a2) && Number.isFinite(b2) ? Math.abs(a2 - b2) <= epsilon3 : a2 === b2;
|
298867
298990
|
function diffCameraState(prev2, next4) {
|
298868
|
-
if (!isValidState(next4))
|
298869
|
-
return { changed: false, scale: false, pos: false, rot: false };
|
298870
298991
|
const eps = EPSILON_KEYS_MAPPING_NG;
|
298871
298992
|
const scale2 = valueGreaterThanEpsilon(prev2?.projectionScale, next4?.projectionScale, eps.projectionScale);
|
298872
298993
|
const posHard = valueGreaterThanEpsilon(prev2?.position, next4?.position, eps.position);
|
@@ -298913,7 +299034,7 @@ function rgbToHex$1(rgb2) {
|
|
298913
299034
|
return typeof rgb2 === "string" ? rgb2 : `#${rgb2.map((c2) => c2.toString(16).padStart(2, "0")).join("")}`;
|
298914
299035
|
}
|
298915
299036
|
function NeuroglancerSubscriber(props) {
|
298916
|
-
const { coordinationScopes: coordinationScopesRaw, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Neuroglancer", helpText = ViewHelpMapping.NEUROGLANCER
|
299037
|
+
const { coordinationScopes: coordinationScopesRaw, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Neuroglancer", helpText = ViewHelpMapping.NEUROGLANCER } = props;
|
298917
299038
|
const loaders = useLoaders();
|
298918
299039
|
const coordinationScopes = useCoordinationScopes(coordinationScopesRaw);
|
298919
299040
|
const [{
|
@@ -298945,11 +299066,12 @@ function NeuroglancerSubscriber(props) {
|
|
298945
299066
|
setSpatialRotationOrbit: setRotationOrbit,
|
298946
299067
|
setSpatialZoom: setZoom
|
298947
299068
|
}] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType$1.NEUROGLANCER], coordinationScopes);
|
298948
|
-
const latestViewerStateRef = useRef(initialViewerState);
|
298949
|
-
const initialRotationPushedRef = useRef(false);
|
298950
299069
|
const { classes: classes2 } = useStyles$4();
|
298951
299070
|
const [{ obsSets: cellSets }] = useObsSetsData(loaders, dataset, false, { setObsSetSelection: setCellSetSelection, setObsSetColor: setCellSetColor }, { cellSetSelection, obsSetColor: cellSetColor }, { obsType });
|
298952
299071
|
const [{ obsIndex }] = useObsEmbeddingData(loaders, dataset, true, {}, {}, { obsType, embeddingType: mapping });
|
299072
|
+
const [initalViewerState] = useNeuroglancerViewerState(loaders, dataset);
|
299073
|
+
const latestViewerStateRef = useRef(initalViewerState);
|
299074
|
+
const initialRotationPushedRef = useRef(false);
|
298953
299075
|
const ngRotPushAtRef = useRef(0);
|
298954
299076
|
const lastInteractionSource = useRef(null);
|
298955
299077
|
const applyNgUpdateTimeoutRef = useRef(null);
|
@@ -298996,7 +299118,7 @@ function NeuroglancerSubscriber(props) {
|
|
298996
299118
|
return;
|
298997
299119
|
const zRef = Number.isFinite(spatialZoom) ? spatialZoom : 0;
|
298998
299120
|
initialRenderCalibratorRef.current = makeVitNgZoomCalibrator(projectionScale, zRef);
|
298999
|
-
const [px2 = 0, py2 = 0, pz2 = 0] =
|
299121
|
+
const [px2 = 0, py2 = 0, pz2 = 0] = position2;
|
299000
299122
|
const tX = Number.isFinite(spatialTargetX) ? spatialTargetX : 0;
|
299001
299123
|
const tY = Number.isFinite(spatialTargetY) ? spatialTargetY : 0;
|
299002
299124
|
translationOffsetRef.current = [px2 - tX, py2 - tY, pz2];
|
@@ -357324,6 +357446,22 @@ class SpatialDataObsEmbeddingLoader extends ObsEmbeddingAnndataLoader {
|
|
357324
357446
|
this.tablePath = this.options.tablePath;
|
357325
357447
|
}
|
357326
357448
|
}
|
357449
|
+
class PrecomputedMeshSource {
|
357450
|
+
constructor({ url, requestInit: requestInit2 }) {
|
357451
|
+
this.url = url;
|
357452
|
+
this.requestInit = requestInit2;
|
357453
|
+
}
|
357454
|
+
}
|
357455
|
+
class PrecomputedMeshDataLoader extends AbstractTwoStepLoader {
|
357456
|
+
/* eslint-disable class-methods-use-this */
|
357457
|
+
async load(url) {
|
357458
|
+
return new LoaderResult({
|
357459
|
+
obsIndex: null,
|
357460
|
+
obsSegmentations: {},
|
357461
|
+
obsSegmentationsType: "mesh"
|
357462
|
+
}, url);
|
357463
|
+
}
|
357464
|
+
}
|
357327
357465
|
const decoder = new TextDecoder("utf-8");
|
357328
357466
|
const decodeUtf8 = (buffer2) => decoder.decode(buffer2);
|
357329
357467
|
const encoder = new TextEncoder();
|
@@ -379109,6 +379247,7 @@ const baseFileTypes = [
|
|
379109
379247
|
...makeZarrFileTypes(FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR, DataType$3.OBS_EMBEDDING, SpatialDataObsEmbeddingLoader, SpatialDataTableSource, obsEmbeddingSpatialdataSchema),
|
379110
379248
|
...makeZarrFileTypes(FileType$1.FEATURE_LABELS_SPATIALDATA_ZARR, DataType$3.FEATURE_LABELS, FeatureLabelsAnndataLoader, SpatialDataTableSource, featureLabelsAnndataSchema),
|
379111
379249
|
makeFileType(FileType$1.OBS_SEGMENTATIONS_GLB, DataType$3.OBS_SEGMENTATIONS, GlbDataLoader, GlbSource, meshGlbSchema),
|
379250
|
+
makeFileType(FileType$1.OBS_SEGMENTATIONS_NG_PRECOMPUTED, DataType$3.OBS_SEGMENTATIONS, PrecomputedMeshDataLoader, PrecomputedMeshSource, ngSchema),
|
379112
379251
|
// All legacy file types
|
379113
379252
|
makeFileType(FileType$1.OBS_FEATURE_MATRIX_EXPRESSION_MATRIX_ZARR, DataType$3.OBS_FEATURE_MATRIX, MatrixZarrAsObsFeatureMatrixLoader, ZarrDataSource, z.null()),
|
379114
379253
|
makeFileType(FileType$1.IMAGE_RASTER_JSON, DataType$3.IMAGE, RasterJsonAsImageLoader, JsonSource, rasterJsonSchema),
|
@@ -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-BNUI-w49.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-CeIrm0B5.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-C8Q3aJRr.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, ao as jsxRuntimeExports, aE 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, ao as jsxRuntimeExports, aE as GLSL3, am as BackSide } from "./index-BNUI-w49.js";
|
2
2
|
import { useRef, useState, useMemo, useEffect, useCallback } 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-CeIrm0B5.js";
|
4
4
|
const LogLevel = {
|
5
5
|
INFO: "info",
|
6
6
|
WARN: "warn",
|
package/dist/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { bQ, bO, bM, bP, bN, bL, bR } from "./index-
|
1
|
+
import { bQ, bO, bM, bP, bN, bL, bR } from "./index-BNUI-w49.js";
|
2
2
|
import { useComplexCoordination, useComplexCoordinationSecondary, useCoordination, useCoordinationScopes, useCoordinationScopesBy, useGridItemSize, useMultiCoordinationScopesNonNull, useMultiCoordinationScopesSecondaryNonNull, usePageModeView } from "@vitessce/vit-s";
|
3
3
|
export {
|
4
4
|
bQ as PluginAsyncFunction,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-SxljTded.js";
|
2
|
-
import { aF as getDefaultExportFromCjs, aW as BaseDecoder, aX as LercParameters, aY as LercAddCompression } from "./index-
|
2
|
+
import { aF as getDefaultExportFromCjs, aW as BaseDecoder, aX as LercParameters, aY as LercAddCompression } from "./index-BNUI-w49.js";
|
3
3
|
var LercDecode = { exports: {} };
|
4
4
|
var hasRequiredLercDecode;
|
5
5
|
function requireLercDecode() {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { bG as MeshDistanceMaterial, bH as MeshDepthMaterial, bI as RGBADepthPacking, ae as UniformsUtils, bJ 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, bK as InstancedBufferAttribute } from "./index-
|
1
|
+
import { bG as MeshDistanceMaterial, bH as MeshDepthMaterial, bI as RGBADepthPacking, ae as UniformsUtils, bJ 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, bK as InstancedBufferAttribute } from "./index-BNUI-w49.js";
|
2
2
|
function workerBootstrap() {
|
3
3
|
var modules = /* @__PURE__ */ Object.create(null);
|
4
4
|
function registerModule(ref, callback) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"base-plugins.d.ts","sourceRoot":"","sources":["../src/base-plugins.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,CAAC,
|
1
|
+
{"version":3,"file":"base-plugins.d.ts","sourceRoot":"","sources":["../src/base-plugins.ts"],"names":[],"mappings":"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"}
|
package/dist-tsc/base-plugins.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { FileType, DataType, ViewType, CoordinationType, AsyncFunctionType, COMPONENT_COORDINATION_TYPES, ALT_ZARR_STORE_TYPES, } from '@vitessce/constants-internal';
|
2
2
|
import { PluginFileType, PluginJointFileType, PluginViewType, PluginCoordinationType, PluginAsyncFunction, } from '@vitessce/plugins';
|
3
|
-
import { z, obsEmbeddingCsvSchema, obsSetsCsvSchema, obsSpotsCsvSchema, obsPointsCsvSchema, obsLocationsCsvSchema, obsLabelsCsvSchema, featureLabelsCsvSchema, sampleSetsCsvSchema, obsSetsAnndataSchema, sampleSetsAnndataSchema, obsEmbeddingAnndataSchema, obsSpotsAnndataSchema, obsPointsAnndataSchema, obsLocationsAnndataSchema, obsLabelsAnndataSchema, obsFeatureMatrixAnndataSchema, obsFeatureColumnsAnndataSchema, obsSegmentationsAnndataSchema, featureLabelsAnndataSchema, sampleEdgesAnndataSchema, comparisonMetadataAnndataSchema, featureStatsAnndataSchema, featureSetStatsAnndataSchema, obsSetStatsAnndataSchema, rasterJsonSchema, anndataZarrSchema, anndataH5adSchema, spatialdataZarrSchema, anndataCellsZarrSchema, anndataCellSetsZarrSchema, anndataExpressionMatrixZarrSchema, cellsJsonSchema, imageOmeZarrSchema, imageOmeTiffSchema, imageSpatialdataSchema, obsSegmentationsOmeTiffSchema, obsSegmentationsOmeZarrSchema, obsSegmentationsSpatialdataSchema, obsFeatureMatrixSpatialdataSchema, obsSpotsSpatialdataSchema, obsPointsSpatialdataSchema, obsSetsSpatialdataSchema, obsEmbeddingSpatialdataSchema, obsSetPath, rgbArray, obsSetsSchema, imageLayerObj, cellsLayerObj, neighborhoodsLayerObj, moleculesLayerObj, meshGlbSchema, } from '@vitessce/schemas';
|
3
|
+
import { z, obsEmbeddingCsvSchema, obsSetsCsvSchema, obsSpotsCsvSchema, obsPointsCsvSchema, obsLocationsCsvSchema, obsLabelsCsvSchema, featureLabelsCsvSchema, sampleSetsCsvSchema, obsSetsAnndataSchema, sampleSetsAnndataSchema, obsEmbeddingAnndataSchema, obsSpotsAnndataSchema, obsPointsAnndataSchema, obsLocationsAnndataSchema, obsLabelsAnndataSchema, obsFeatureMatrixAnndataSchema, obsFeatureColumnsAnndataSchema, obsSegmentationsAnndataSchema, featureLabelsAnndataSchema, sampleEdgesAnndataSchema, comparisonMetadataAnndataSchema, featureStatsAnndataSchema, featureSetStatsAnndataSchema, obsSetStatsAnndataSchema, rasterJsonSchema, anndataZarrSchema, anndataH5adSchema, spatialdataZarrSchema, anndataCellsZarrSchema, anndataCellSetsZarrSchema, anndataExpressionMatrixZarrSchema, cellsJsonSchema, imageOmeZarrSchema, imageOmeTiffSchema, imageSpatialdataSchema, obsSegmentationsOmeTiffSchema, obsSegmentationsOmeZarrSchema, obsSegmentationsSpatialdataSchema, obsFeatureMatrixSpatialdataSchema, obsSpotsSpatialdataSchema, obsPointsSpatialdataSchema, obsSetsSpatialdataSchema, obsEmbeddingSpatialdataSchema, obsSetPath, rgbArray, obsSetsSchema, imageLayerObj, cellsLayerObj, neighborhoodsLayerObj, moleculesLayerObj, meshGlbSchema, ngSchema, } from '@vitessce/schemas';
|
4
4
|
// Register view type plugins
|
5
5
|
import { DescriptionSubscriber } from '@vitessce/description';
|
6
6
|
import { ObsSetsManagerSubscriber } from '@vitessce/obs-sets-manager';
|
@@ -37,7 +37,9 @@ import {
|
|
37
37
|
// OME
|
38
38
|
OmeZarrLoader, OmeZarrAsObsSegmentationsLoader,
|
39
39
|
// SpatialData
|
40
|
-
SpatialDataTableSource, SpatialDataShapesSource, SpatialDataPointsSource, SpatialDataImageLoader, SpatialDataLabelsLoader, SpatialDataObsSpotsLoader, SpatialDataObsPointsLoader, SpatialDataObsSegmentationsLoader, SpatialDataObsSetsLoader, SpatialDataObsEmbeddingLoader,
|
40
|
+
SpatialDataTableSource, SpatialDataShapesSource, SpatialDataPointsSource, SpatialDataImageLoader, SpatialDataLabelsLoader, SpatialDataObsSpotsLoader, SpatialDataObsPointsLoader, SpatialDataObsSegmentationsLoader, SpatialDataObsSetsLoader, SpatialDataObsEmbeddingLoader,
|
41
|
+
// NG precomputed
|
42
|
+
NgPrecomputedMeshSource, NgPrecomputedMeshLoader, } from '@vitessce/spatial-zarr';
|
41
43
|
import { OmeTiffAsObsSegmentationsLoader, OmeTiffLoader, OmeTiffSource, } from '@vitessce/ome-tiff';
|
42
44
|
import { GlbSource, GlbLoader, } from '@vitessce/glb';
|
43
45
|
// Joint file types
|
@@ -157,6 +159,7 @@ export const baseFileTypes = [
|
|
157
159
|
...makeZarrFileTypes(FileType.OBS_EMBEDDING_SPATIALDATA_ZARR, DataType.OBS_EMBEDDING, SpatialDataObsEmbeddingLoader, SpatialDataTableSource, obsEmbeddingSpatialdataSchema),
|
158
160
|
...makeZarrFileTypes(FileType.FEATURE_LABELS_SPATIALDATA_ZARR, DataType.FEATURE_LABELS, FeatureLabelsAnndataLoader, SpatialDataTableSource, featureLabelsAnndataSchema),
|
159
161
|
makeFileType(FileType.OBS_SEGMENTATIONS_GLB, DataType.OBS_SEGMENTATIONS, GlbLoader, GlbSource, meshGlbSchema),
|
162
|
+
makeFileType(FileType.OBS_SEGMENTATIONS_NG_PRECOMPUTED, DataType.OBS_SEGMENTATIONS, NgPrecomputedMeshLoader, NgPrecomputedMeshSource, ngSchema),
|
160
163
|
// All legacy file types
|
161
164
|
makeFileType(FileType.OBS_FEATURE_MATRIX_EXPRESSION_MATRIX_ZARR, DataType.OBS_FEATURE_MATRIX, MatrixZarrAsObsFeatureMatrixLoader, ZarrDataSource, z.null()),
|
162
165
|
makeFileType(FileType.IMAGE_RASTER_JSON, DataType.IMAGE, RasterJsonAsImageLoader, JsonSource, rasterJsonSchema),
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vitessce/all",
|
3
|
-
"version": "3.8.
|
3
|
+
"version": "3.8.2",
|
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.8.
|
21
|
-
"@vitessce/constants-internal": "3.8.
|
22
|
-
"@vitessce/abstract": "3.8.
|
23
|
-
"@vitessce/error": "3.8.
|
24
|
-
"@vitessce/csv": "3.8.
|
25
|
-
"@vitessce/description": "3.8.
|
26
|
-
"@vitessce/feature-list": "3.8.
|
27
|
-
"@vitessce/genomic-profiles": "3.8.
|
28
|
-
"@vitessce/heatmap": "3.8.
|
29
|
-
"@vitessce/glb": "3.8.
|
30
|
-
"@vitessce/json": "3.8.
|
31
|
-
"@vitessce/layer-controller": "3.8.
|
32
|
-
"@vitessce/layer-controller-beta": "3.8.
|
33
|
-
"@vitessce/link-controller": "3.8.
|
34
|
-
"@vitessce/obs-sets-manager": "3.8.
|
35
|
-
"@vitessce/ome-tiff": "3.8.
|
36
|
-
"@vitessce/plugins": "3.8.
|
37
|
-
"@vitessce/scatterplot-embedding": "3.8.
|
38
|
-
"@vitessce/scatterplot-gating": "3.8.
|
39
|
-
"@vitessce/schemas": "3.8.
|
40
|
-
"@vitessce/spatial": "3.8.
|
41
|
-
"@vitessce/spatial-beta": "3.8.
|
42
|
-
"@vitessce/statistical-plots": "3.8.
|
43
|
-
"@vitessce/status": "3.8.
|
44
|
-
"@vitessce/vit-s": "3.8.
|
45
|
-
"@vitessce/zarr": "3.8.
|
46
|
-
"@vitessce/globals": "3.8.
|
47
|
-
"@vitessce/spatial-zarr": "3.8.
|
48
|
-
"@vitessce/spatial-three": "3.8.
|
49
|
-
"@vitessce/spatial-accelerated": "3.8.
|
50
|
-
"@vitessce/biomarker-select": "3.8.
|
51
|
-
"@vitessce/neuroglancer": "3.8.
|
20
|
+
"@vitessce/styles": "3.8.2",
|
21
|
+
"@vitessce/constants-internal": "3.8.2",
|
22
|
+
"@vitessce/abstract": "3.8.2",
|
23
|
+
"@vitessce/error": "3.8.2",
|
24
|
+
"@vitessce/csv": "3.8.2",
|
25
|
+
"@vitessce/description": "3.8.2",
|
26
|
+
"@vitessce/feature-list": "3.8.2",
|
27
|
+
"@vitessce/genomic-profiles": "3.8.2",
|
28
|
+
"@vitessce/heatmap": "3.8.2",
|
29
|
+
"@vitessce/glb": "3.8.2",
|
30
|
+
"@vitessce/json": "3.8.2",
|
31
|
+
"@vitessce/layer-controller": "3.8.2",
|
32
|
+
"@vitessce/layer-controller-beta": "3.8.2",
|
33
|
+
"@vitessce/link-controller": "3.8.2",
|
34
|
+
"@vitessce/obs-sets-manager": "3.8.2",
|
35
|
+
"@vitessce/ome-tiff": "3.8.2",
|
36
|
+
"@vitessce/plugins": "3.8.2",
|
37
|
+
"@vitessce/scatterplot-embedding": "3.8.2",
|
38
|
+
"@vitessce/scatterplot-gating": "3.8.2",
|
39
|
+
"@vitessce/schemas": "3.8.2",
|
40
|
+
"@vitessce/spatial": "3.8.2",
|
41
|
+
"@vitessce/spatial-beta": "3.8.2",
|
42
|
+
"@vitessce/statistical-plots": "3.8.2",
|
43
|
+
"@vitessce/status": "3.8.2",
|
44
|
+
"@vitessce/vit-s": "3.8.2",
|
45
|
+
"@vitessce/zarr": "3.8.2",
|
46
|
+
"@vitessce/globals": "3.8.2",
|
47
|
+
"@vitessce/spatial-zarr": "3.8.2",
|
48
|
+
"@vitessce/spatial-three": "3.8.2",
|
49
|
+
"@vitessce/spatial-accelerated": "3.8.2",
|
50
|
+
"@vitessce/biomarker-select": "3.8.2",
|
51
|
+
"@vitessce/neuroglancer": "3.8.2"
|
52
52
|
},
|
53
53
|
"devDependencies": {
|
54
54
|
"@types/react": "^18.0.28",
|
package/src/base-plugins.ts
CHANGED
@@ -73,6 +73,7 @@ import {
|
|
73
73
|
neighborhoodsLayerObj,
|
74
74
|
moleculesLayerObj,
|
75
75
|
meshGlbSchema,
|
76
|
+
ngSchema,
|
76
77
|
} from '@vitessce/schemas';
|
77
78
|
|
78
79
|
// Register view type plugins
|
@@ -180,6 +181,9 @@ import {
|
|
180
181
|
SpatialDataObsSegmentationsLoader,
|
181
182
|
SpatialDataObsSetsLoader,
|
182
183
|
SpatialDataObsEmbeddingLoader,
|
184
|
+
// NG precomputed
|
185
|
+
NgPrecomputedMeshSource,
|
186
|
+
NgPrecomputedMeshLoader,
|
183
187
|
} from '@vitessce/spatial-zarr';
|
184
188
|
|
185
189
|
import {
|
@@ -339,6 +343,7 @@ export const baseFileTypes = [
|
|
339
343
|
...makeZarrFileTypes(FileType.FEATURE_LABELS_SPATIALDATA_ZARR, DataType.FEATURE_LABELS, FeatureLabelsAnndataLoader, SpatialDataTableSource, featureLabelsAnndataSchema),
|
340
344
|
|
341
345
|
makeFileType(FileType.OBS_SEGMENTATIONS_GLB, DataType.OBS_SEGMENTATIONS, GlbLoader, GlbSource, meshGlbSchema),
|
346
|
+
makeFileType(FileType.OBS_SEGMENTATIONS_NG_PRECOMPUTED, DataType.OBS_SEGMENTATIONS, NgPrecomputedMeshLoader, NgPrecomputedMeshSource, ngSchema),
|
342
347
|
// All legacy file types
|
343
348
|
makeFileType(FileType.OBS_FEATURE_MATRIX_EXPRESSION_MATRIX_ZARR, DataType.OBS_FEATURE_MATRIX, MatrixZarrAsObsFeatureMatrixLoader, ZarrDataSource, z.null()),
|
344
349
|
makeFileType(FileType.IMAGE_RASTER_JSON, DataType.IMAGE, RasterJsonAsImageLoader, JsonSource, rasterJsonSchema),
|