@vitessce/all 3.7.1 → 3.8.0

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.
@@ -8963,6 +8963,7 @@ const ViewType$1 = {
8963
8963
  SCATTERPLOT: "scatterplot",
8964
8964
  SPATIAL: "spatial",
8965
8965
  SPATIAL_BETA: "spatialBeta",
8966
+ SPATIAL_ACCELERATED: "spatialAccelerated",
8966
8967
  HEATMAP: "heatmap",
8967
8968
  LAYER_CONTROLLER: "layerController",
8968
8969
  LAYER_CONTROLLER_BETA: "layerControllerBeta",
@@ -9266,6 +9267,8 @@ const CoordinationType$1 = {
9266
9267
  // Could be per-image-layer
9267
9268
  SPATIAL_TARGET_RESOLUTION: "spatialTargetResolution",
9268
9269
  // Per-spatial-layer
9270
+ SPATIAL_MAX_RESOLUTION: "spatialMaxResolution",
9271
+ // Per-image-channel (for spatial-accelerated)
9269
9272
  // For clipping plane sliders
9270
9273
  SPATIAL_SLICE_X: "spatialSliceX",
9271
9274
  SPATIAL_SLICE_Y: "spatialSliceY",
@@ -9841,6 +9844,7 @@ const COMPONENT_COORDINATION_TYPES = {
9841
9844
  CoordinationType$1.SPATIAL_RENDERING_MODE,
9842
9845
  CoordinationType$1.VOLUMETRIC_RENDERING_ALGORITHM,
9843
9846
  CoordinationType$1.SPATIAL_TARGET_RESOLUTION,
9847
+ CoordinationType$1.SPATIAL_MAX_RESOLUTION,
9844
9848
  CoordinationType$1.SPATIAL_SLICE_X,
9845
9849
  CoordinationType$1.SPATIAL_SLICE_Y,
9846
9850
  CoordinationType$1.SPATIAL_SLICE_Z,
@@ -10014,6 +10018,7 @@ const COMPONENT_COORDINATION_TYPES = {
10014
10018
  CoordinationType$1.SPATIAL_RENDERING_MODE,
10015
10019
  CoordinationType$1.VOLUMETRIC_RENDERING_ALGORITHM,
10016
10020
  CoordinationType$1.SPATIAL_TARGET_RESOLUTION,
10021
+ CoordinationType$1.SPATIAL_MAX_RESOLUTION,
10017
10022
  CoordinationType$1.SPATIAL_SLICE_X,
10018
10023
  CoordinationType$1.SPATIAL_SLICE_Y,
10019
10024
  CoordinationType$1.SPATIAL_SLICE_Z,
@@ -209298,22 +209303,22 @@ async function getDecoder(fileDirectory) {
209298
209303
  const Decoder = await importFn();
209299
209304
  return new Decoder(fileDirectory);
209300
209305
  }
209301
- addDecoder([void 0, 1], () => import("./raw-Day99mnL.js").then((m2) => m2.default));
209302
- addDecoder(5, () => import("./lzw-CR9bmrUA.js").then((m2) => m2.default));
209306
+ addDecoder([void 0, 1], () => import("./raw-CRoXFKXe.js").then((m2) => m2.default));
209307
+ addDecoder(5, () => import("./lzw-C8NEd7Y4.js").then((m2) => m2.default));
209303
209308
  addDecoder(6, () => {
209304
209309
  throw new Error("old style JPEG compression is not supported.");
209305
209310
  });
209306
- addDecoder(7, () => import("./jpeg-23ExE8ad.js").then((m2) => m2.default));
209307
- addDecoder([8, 32946], () => import("./deflate-D7qntYPm.js").then((m2) => m2.default));
209308
- addDecoder(32773, () => import("./packbits-yEwcRYhH.js").then((m2) => m2.default));
209311
+ addDecoder(7, () => import("./jpeg-Sl7J-6mO.js").then((m2) => m2.default));
209312
+ addDecoder([8, 32946], () => import("./deflate-BZqpc-jk.js").then((m2) => m2.default));
209313
+ addDecoder(32773, () => import("./packbits-BRJrVgsM.js").then((m2) => m2.default));
209309
209314
  addDecoder(
209310
209315
  34887,
209311
- () => import("./lerc-BPNFjya5.js").then(async (m2) => {
209316
+ () => import("./lerc-z_QbiC-f.js").then(async (m2) => {
209312
209317
  await m2.zstd.init();
209313
209318
  return m2;
209314
209319
  }).then((m2) => m2.default)
209315
209320
  );
209316
- addDecoder(50001, () => import("./webimage-CmvCEz7r.js").then((m2) => m2.default));
209321
+ addDecoder(50001, () => import("./webimage-C6WknL6k.js").then((m2) => m2.default));
209317
209322
  function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
209318
209323
  return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
209319
209324
  }
@@ -227439,11 +227444,11 @@ function TooltipContent(props) {
227439
227444
  return jsxRuntimeExports.jsx("table", { children: jsxRuntimeExports.jsx("tbody", { children: Object.entries(mappedInfo).map(([key2, value2]) => jsxRuntimeExports.jsxs("tr", { children: [jsxRuntimeExports.jsx("th", { children: key2 }), jsxRuntimeExports.jsx("td", { children: value2 })] }, key2)) }) });
227440
227445
  }
227441
227446
  function ScatterplotTooltipSubscriber(props) {
227442
- const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo: getObsInfo2, featureType, featureLabelsMap } = props;
227447
+ const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo, featureType, featureLabelsMap } = props;
227443
227448
  const sourceUuid = useComponentHover();
227444
227449
  const viewInfo = useComponentViewInfo(parentUuid);
227445
- const [cellInfo, x2, y2] = obsHighlight && getObsInfo2 ? [
227446
- getObsInfo2(obsHighlight),
227450
+ const [cellInfo, x2, y2] = obsHighlight && getObsInfo ? [
227451
+ getObsInfo(obsHighlight),
227447
227452
  ...viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsHighlight) : [null, null]
227448
227453
  ] : [null, null, null];
227449
227454
  return cellInfo ? jsxRuntimeExports.jsx(Tooltip2D, { x: x2, y: y2, parentUuid, sourceUuid, parentWidth: width2, parentHeight: height2, children: jsxRuntimeExports.jsx(TooltipContent, { info: cellInfo, featureType, featureLabelsMap }) }) : null;
@@ -231853,7 +231858,7 @@ function EmbeddingScatterplotSubscriber(props) {
231853
231858
  initialTargetY,
231854
231859
  averageFillDensity
231855
231860
  ]);
231856
- const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
231861
+ const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
231857
231862
  const cellSelectionSet = useMemo$1(() => new Set(cellSelection), [cellSelection]);
231858
231863
  const getCellIsSelected = useCallback((object2, { index: index2 }) => (cellSelectionSet || /* @__PURE__ */ new Set([])).has(obsEmbeddingIndex[index2]) ? 1 : 0, [cellSelectionSet, obsEmbeddingIndex]);
231859
231864
  const cellRadius = cellRadiusMode === "manual" ? cellRadiusFixed : dynamicCellRadius;
@@ -232010,7 +232015,7 @@ function EmbeddingScatterplotSubscriber(props) {
232010
232015
  embeddingContoursVisible,
232011
232016
  circleInfo,
232012
232017
  featureSelection: geneSelection
232013
- }), tooltipsVisible && width2 && height2 ? jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo: getObsInfo2, featureType, featureLabelsMap }) : null, jsxRuntimeExports.jsx(Legend, {
232018
+ }), tooltipsVisible && width2 && height2 ? jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo, featureType, featureLabelsMap }) : null, jsxRuntimeExports.jsx(Legend, {
232014
232019
  visible: true,
232015
232020
  theme,
232016
232021
  featureType,
@@ -232284,7 +232289,7 @@ function GatingSubscriber(props) {
232284
232289
  matrixObsIndex: obsIndex,
232285
232290
  expressionData: uint8ExpressionData
232286
232291
  });
232287
- const getObsInfo2 = useCallback((obsId) => {
232292
+ const getObsInfo = useCallback((obsId) => {
232288
232293
  const selectedTransformName = VALUE_TRANSFORM_OPTIONS.find((o2) => o2.value === featureValueTransform)?.name;
232289
232294
  const genePrefix = featureValueTransform ? `${selectedTransformName} ` : "";
232290
232295
  const obsIdx = obsIndex?.indexOf(obsId);
@@ -232314,7 +232319,7 @@ function GatingSubscriber(props) {
232314
232319
  setTargetZ(target2[2] || 0);
232315
232320
  }, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter, cellSelection, cellHighlight, cellColors, cellSetPolygons, cellSetLabelSize, cellSetLabelsVisible, cellSetPolygonsVisible, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, cellRadius, cellOpacity, cellColorEncoding, geneExpressionColormap, geneExpressionColormapRange, setComponentHover: () => {
232316
232321
  setComponentHover(uuid2);
232317
- }, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo: getObsInfo2 })] });
232322
+ }, updateViewInfo: setComponentViewInfo, getExpressionValue, getCellIsSelected }), !disableTooltip && jsxRuntimeExports.jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight, width: width2, height: height2, getObsInfo })] });
232318
232323
  }
232319
232324
  var DEFAULT_CONFIG = {
232320
232325
  // minimum relative difference between two compared values,
@@ -247297,13 +247302,16 @@ const getStatsForResolution = (loader2, resolution) => {
247297
247302
  const height2 = shape2[labels2.indexOf("y")];
247298
247303
  const width2 = shape2[labels2.indexOf("x")];
247299
247304
  const depth = shape2[labels2.indexOf("z")];
247305
+ const dims = Object.fromEntries(labels2.map((label2, i2) => [label2, shape2[i2]]));
247300
247306
  const depthDownsampled = Math.max(1, depth >> resolution);
247301
247307
  const totalBytes = 4 * height2 * width2 * depthDownsampled;
247302
247308
  return {
247303
247309
  height: height2,
247304
247310
  width: width2,
247311
+ depth,
247305
247312
  depthDownsampled,
247306
- totalBytes
247313
+ totalBytes,
247314
+ dims
247307
247315
  };
247308
247316
  };
247309
247317
  const canLoadResolution = (loader2, resolution) => {
@@ -251384,8 +251392,8 @@ function SpatialOptions(props) {
251384
251392
  return `${labelPrefix} for spatial gene expression colormap range`;
251385
251393
  }, id: `gene-expression-colormap-range-${spatialOptionsId}`, valueLabelDisplay: "auto", step: 5e-3, min: 0, max: 1 }) })] })] }) : null] });
251386
251394
  }
251387
- function SpatialTooltipSubscriber$1(props) {
251388
- const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo: getObsInfo2, hoverData, hoverCoord, hoverMode, useHoverInfoForTooltip, getObsIdFromHoverData, featureType, featureLabelsMap } = props;
251395
+ function SpatialTooltipSubscriber(props) {
251396
+ const { parentUuid, obsHighlight, width: width2, height: height2, getObsInfo, hoverData, hoverCoord, hoverMode, useHoverInfoForTooltip, getObsIdFromHoverData, featureType, featureLabelsMap } = props;
251389
251397
  const sourceUuid = useComponentHover();
251390
251398
  const viewInfo = useComponentViewInfo(parentUuid);
251391
251399
  let [cellInfo, x2, y2] = [null, null, null];
@@ -251393,7 +251401,7 @@ function SpatialTooltipSubscriber$1(props) {
251393
251401
  const obsId = getObsIdFromHoverData(hoverData);
251394
251402
  if (obsId) {
251395
251403
  [cellInfo, x2, y2] = [
251396
- getObsInfo2(obsId, hoverMode),
251404
+ getObsInfo(obsId, hoverMode),
251397
251405
  ...hoverCoord || [null, null]
251398
251406
  ];
251399
251407
  }
@@ -251401,14 +251409,14 @@ function SpatialTooltipSubscriber$1(props) {
251401
251409
  const obsId = getObsIdFromHoverData(hoverData);
251402
251410
  if (obsId) {
251403
251411
  [cellInfo, x2, y2] = [
251404
- getObsInfo2(obsId, hoverMode),
251412
+ getObsInfo(obsId, hoverMode),
251405
251413
  ...hoverCoord || [null, null]
251406
251414
  ];
251407
251415
  }
251408
- } else if (!useHoverInfoForTooltip && getObsInfo2 && obsHighlight) {
251416
+ } else if (!useHoverInfoForTooltip && getObsInfo && obsHighlight) {
251409
251417
  const obsId = obsHighlight;
251410
251418
  [cellInfo, x2, y2] = [
251411
- getObsInfo2(obsId, hoverMode),
251419
+ getObsInfo(obsId, hoverMode),
251412
251420
  ...viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsId) : [null, null]
251413
251421
  ];
251414
251422
  }
@@ -251582,7 +251590,7 @@ function SpatialSubscriber$1(props) {
251582
251590
  matrixObsIndex
251583
251591
  ]);
251584
251592
  const cellSelection = useMemo$1(() => Array.from(cellColors.keys()), [cellColors]);
251585
- const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
251593
+ const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
251586
251594
  const getTooltipObsInfo = useCallback((tooltipObsId, tooltipObsType) => {
251587
251595
  if (tooltipObsType === HOVER_MODE.MOLECULE_LAYER) {
251588
251596
  return {
@@ -251590,8 +251598,8 @@ function SpatialSubscriber$1(props) {
251590
251598
  "Molecule Name": obsLocationsLabels[tooltipObsId]
251591
251599
  };
251592
251600
  }
251593
- return getObsInfo2(tooltipObsId);
251594
- }, [getObsInfo2, obsLocationsLabels]);
251601
+ return getObsInfo(tooltipObsId);
251602
+ }, [getObsInfo, obsLocationsLabels]);
251595
251603
  const [hoverData, setHoverData] = useState(null);
251596
251604
  const [hoverCoord, setHoverCoord] = useState(null);
251597
251605
  const [hoverMode, setHoverMode] = useState(null);
@@ -251719,7 +251727,7 @@ function SpatialSubscriber$1(props) {
251719
251727
  orbitAxis
251720
251728
  }, setViewState, originalViewState, imageLayerDefs: imageLayers, obsSegmentationsLayerDefs: cellsLayer, obsLocationsLayerDefs: moleculesLayer, neighborhoodLayerDefs: neighborhoodsLayer, obsLocationsIndex, obsSegmentationsIndex, obsLocations, obsLocationsLabels, obsLocationsFeatureIndex, hasSegmentations: hasSegmentationsData, obsSegmentations, obsSegmentationsType, obsCentroids, obsCentroidsIndex, cellFilter, cellSelection, cellHighlight, cellColors, neighborhoods, imageLayerLoaders: resolutionFilteredImageLayerLoaders, setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight, setHoverInfo, setMoleculeHighlight, setComponentHover: () => {
251721
251729
  setComponentHover(uuid2);
251722
- }, updateViewInfo: setComponentViewInfo, imageLayerCallbacks, segmentationLayerCallbacks, spatialAxisFixed, geneExpressionColormap, geneExpressionColormapRange, expressionData: shiftedExpressionDataForBitmask, cellColorEncoding, getExpressionValue, theme, useFullResolutionImage, photometricInterpretation }), tooltipsVisible && jsxRuntimeExports.jsx(SpatialTooltipSubscriber$1, { parentUuid: uuid2, obsHighlight: cellHighlight || moleculeHighlight, width: width2, height: height2, getObsInfo: getTooltipObsInfo, useHoverInfoForTooltip, hoverData, hoverCoord, hoverMode, getObsIdFromHoverData, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, {
251730
+ }, updateViewInfo: setComponentViewInfo, imageLayerCallbacks, segmentationLayerCallbacks, spatialAxisFixed, geneExpressionColormap, geneExpressionColormapRange, expressionData: shiftedExpressionDataForBitmask, cellColorEncoding, getExpressionValue, theme, useFullResolutionImage, photometricInterpretation }), tooltipsVisible && jsxRuntimeExports.jsx(SpatialTooltipSubscriber, { parentUuid: uuid2, obsHighlight: cellHighlight || moleculeHighlight, width: width2, height: height2, getObsInfo: getTooltipObsInfo, useHoverInfoForTooltip, hoverData, hoverCoord, hoverMode, getObsIdFromHoverData, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, {
251723
251731
  visible: true,
251724
251732
  // Fix to dark theme due to black background of spatial plot.
251725
251733
  theme: "dark",
@@ -252980,117 +252988,6 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
252980
252988
  }
252981
252989
  }
252982
252990
  const SpatialWrapper = forwardRef$1((props, deckRef) => jsxRuntimeExports.jsx(Spatial2, { ...props, deckRef }));
252983
- function TooltipChild(props) {
252984
- const { x: x2, y: y2, parentUuid, sourceUuid, width: width2, height: height2, info: info2, tooltipsVisible, tooltipCrosshairsVisible, featureType, featureLabelsMap } = props;
252985
- const visible = parentUuid === sourceUuid ? tooltipsVisible : tooltipCrosshairsVisible;
252986
- return visible ? jsxRuntimeExports.jsx(Tooltip2D, { x: x2, y: y2, parentUuid, sourceUuid, parentWidth: width2, parentHeight: height2, children: jsxRuntimeExports.jsx(TooltipContent, { info: info2, featureType, featureLabelsMap }) }) : null;
252987
- }
252988
- function getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTooltip, projectedHoverCoord) {
252989
- const hasObsCoordinates = useHoverInfoForTooltip ? true : obsIndex && obsLocations;
252990
- if (!hasObsCoordinates)
252991
- return null;
252992
- const obsI = obsIndex?.indexOf(obsHighlight);
252993
- if (obsI < 0)
252994
- return null;
252995
- if (useHoverInfoForTooltip) {
252996
- return [projectedHoverCoord?.[0], projectedHoverCoord?.[1]];
252997
- }
252998
- const obsCoord = [obsLocations?.data[0][obsI] || 0, obsLocations?.data[1][obsI] || 0, 0];
252999
- const projectedObsCoord = viewInfo?.project(obsCoord);
253000
- return [projectedObsCoord?.[0], projectedObsCoord?.[1]];
253001
- }
253002
- function getObsInfo(obsSetsData, obsType, obsId) {
253003
- let result = {
253004
- [`${capitalize$3(obsType)} ID`]: obsId
253005
- };
253006
- if (obsSetsData?.obsSetsMembership) {
253007
- const obsMembership = obsSetsData.obsSetsMembership.get(obsId) || [];
253008
- if (obsMembership) {
253009
- result = {
253010
- ...result,
253011
- ...Object.fromEntries(obsMembership.flatMap((path2) => path2.slice(1).map((pathEl, elLevel) => [
253012
- `${path2[0]}${path2.length > 2 ? ` L${elLevel + 1}` : ""}`,
253013
- pathEl
253014
- ])))
253015
- };
253016
- }
253017
- }
253018
- return result;
253019
- }
253020
- function SpatialTooltipSubscriber(props) {
253021
- const {
253022
- parentUuid,
253023
- width: width2,
253024
- height: height2,
253025
- hoverCoord,
253026
- featureType,
253027
- featureLabelsMap,
253028
- // Points
253029
- obsPoints,
253030
- pointLayerScopes,
253031
- pointLayerCoordination,
253032
- // Spots
253033
- obsSpots,
253034
- spotLayerScopes,
253035
- spotLayerCoordination,
253036
- // Segmentations
253037
- obsSegmentationsLocations,
253038
- segmentationLayerScopes,
253039
- segmentationChannelScopesByLayer,
253040
- segmentationChannelCoordination,
253041
- obsSegmentationsSetsData,
253042
- // Images
253043
- imageLayerScopes,
253044
- imageLayerCoordination
253045
- } = props;
253046
- const sourceUuid = useComponentHover();
253047
- const viewInfo = useComponentViewInfo(parentUuid);
253048
- const useHoverInfoForTooltip = sourceUuid === parentUuid && hoverCoord;
253049
- const projectedHoverCoord = useHoverInfoForTooltip ? viewInfo?.project(hoverCoord) : null;
253050
- let yOffset = -30;
253051
- return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [projectedHoverCoord && imageLayerScopes?.map((layerScope) => {
253052
- const { pixelHighlight, tooltipsVisible, spatialLayerVisible } = imageLayerCoordination?.[0]?.[layerScope] || {};
253053
- return tooltipsVisible && pixelHighlight && spatialLayerVisible ? jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, width: width2, height: height2, info: {
253054
- "Pixel Value": JSON.stringify(pixelHighlight)
253055
- }, x: projectedHoverCoord?.[0], y: projectedHoverCoord?.[1] + (yOffset += 30), featureType, featureLabelsMap }, layerScope) : null;
253056
- }), segmentationLayerScopes?.flatMap((layerScope) => segmentationChannelScopesByLayer?.[layerScope]?.map((channelScope) => {
253057
- const { obsType, obsHighlight, tooltipsVisible, tooltipCrosshairsVisible, spatialChannelVisible } = segmentationChannelCoordination?.[0]?.[layerScope]?.[channelScope] || {};
253058
- const obsSetsData = obsSegmentationsSetsData?.[layerScope]?.[channelScope];
253059
- const obsInfo = getObsInfo(obsSetsData, obsType, obsHighlight);
253060
- if (!obsHighlight || !spatialChannelVisible || !tooltipsVisible && !tooltipCrosshairsVisible)
253061
- return null;
253062
- const { obsIndex, obsLocations } = obsSegmentationsLocations?.[layerScope]?.[channelScope] || {};
253063
- const xy = getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTooltip, projectedHoverCoord);
253064
- if (!xy)
253065
- return null;
253066
- const [x2, y2] = xy;
253067
- return jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, tooltipsVisible, tooltipCrosshairsVisible, width: width2, height: height2, info: obsInfo, x: x2, y: y2 + (yOffset += 20 + 15 * Object.keys(obsInfo).length), featureType, featureLabelsMap }, `${layerScope}-${channelScope}`);
253068
- })), spotLayerScopes?.map((layerScope) => {
253069
- const { obsType, obsHighlight, tooltipsVisible, tooltipCrosshairsVisible, spatialLayerVisible } = spotLayerCoordination?.[0]?.[layerScope] || {};
253070
- if (!obsHighlight || !spatialLayerVisible || !tooltipsVisible && !tooltipCrosshairsVisible)
253071
- return null;
253072
- const { obsIndex, obsSpots: obsLocations } = obsSpots?.[layerScope] || {};
253073
- const xy = getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTooltip, projectedHoverCoord);
253074
- if (!xy)
253075
- return null;
253076
- const [x2, y2] = xy;
253077
- return jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, tooltipsVisible, tooltipCrosshairsVisible, width: width2, height: height2, info: {
253078
- [`${capitalize$3(obsType)} ID`]: obsHighlight
253079
- }, x: x2, y: y2 + (yOffset += 30), featureType, featureLabelsMap }, layerScope);
253080
- }), pointLayerScopes?.map((layerScope) => {
253081
- const { obsType, obsHighlight, tooltipsVisible, tooltipCrosshairsVisible, spatialLayerVisible } = pointLayerCoordination?.[0]?.[layerScope] || {};
253082
- if (!obsHighlight || !spatialLayerVisible || !tooltipsVisible && !tooltipCrosshairsVisible)
253083
- return null;
253084
- const { obsIndex, obsPoints: obsLocations } = obsPoints?.[layerScope] || {};
253085
- const xy = getXY(obsHighlight, viewInfo, obsIndex, obsLocations, useHoverInfoForTooltip, projectedHoverCoord);
253086
- if (!xy)
253087
- return null;
253088
- const [x2, y2] = xy;
253089
- return jsxRuntimeExports.jsx(TooltipChild, { parentUuid, sourceUuid, tooltipsVisible, tooltipCrosshairsVisible, width: width2, height: height2, info: {
253090
- [`${capitalize$3(obsType)} ID`]: obsHighlight
253091
- }, x: x2, y: y2 + (yOffset += 30), featureType, featureLabelsMap }, layerScope);
253092
- })] });
253093
- }
253094
252991
  class ErrorBoundary extends React__default.Component {
253095
252992
  constructor(props) {
253096
252993
  super(props);
@@ -253109,10 +253006,15 @@ class ErrorBoundary extends React__default.Component {
253109
253006
  }
253110
253007
  }
253111
253008
  const LazySpatialThree = React__default.lazy(async () => {
253112
- const { SpatialWrapper: SpatialWrapper2 } = await import("./index-DqDDC59y.js");
253009
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-CpB0CdZl.js");
253113
253010
  return { default: SpatialWrapper2 };
253114
253011
  });
253115
253012
  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
+ const LazySpatialAccelerated = React__default.lazy(async () => {
253014
+ const { SpatialWrapper: SpatialWrapper2 } = await import("./index-BVFjJIoQ.js");
253015
+ return { default: SpatialWrapper2 };
253016
+ });
253017
+ 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 }) }) }) }));
253116
253018
  const DEFAULT_VIEW_STATE = {
253117
253019
  zoom: 0,
253118
253020
  target: [0, 0, 0],
@@ -253173,7 +253075,8 @@ function SpatialSubscriber(props) {
253173
253075
  title: title2 = "Spatial",
253174
253076
  bitmaskValueIsIndex = false,
253175
253077
  // TODO: move to coordination type
253176
- three: threeFor3d = false
253078
+ three: threeFor3d = false,
253079
+ accelerated: acceleratedFor3d = false
253177
253080
  } = props;
253178
253081
  const loaders = useLoaders();
253179
253082
  const setComponentHover = useSetComponentHover();
@@ -253274,7 +253177,8 @@ function SpatialSubscriber(props) {
253274
253177
  CoordinationType$1.SPATIAL_TARGET_C,
253275
253178
  CoordinationType$1.SPATIAL_CHANNEL_VISIBLE,
253276
253179
  CoordinationType$1.SPATIAL_CHANNEL_COLOR,
253277
- CoordinationType$1.SPATIAL_CHANNEL_WINDOW
253180
+ CoordinationType$1.SPATIAL_CHANNEL_WINDOW,
253181
+ CoordinationType$1.SPATIAL_MAX_RESOLUTION
253278
253182
  ], coordinationScopes, coordinationScopesBy, CoordinationType$1.IMAGE_LAYER, CoordinationType$1.IMAGE_CHANNEL);
253279
253183
  const spotLayerCoordination = useComplexCoordination([
253280
253184
  CoordinationType$1.OBS_TYPE,
@@ -253312,7 +253216,6 @@ function SpatialSubscriber(props) {
253312
253216
  CoordinationType$1.LEGEND_VISIBLE
253313
253217
  ], coordinationScopes, coordinationScopesBy, CoordinationType$1.POINT_LAYER);
253314
253218
  const is3dMode = spatialRenderingMode === "3D";
253315
- const shouldUseThree = threeFor3d && is3dMode;
253316
253219
  const [deckWidth, deckHeight, deckRef] = useDeckCanvasSize();
253317
253220
  const [threeWidth, threeHeight, threeRef] = useGridItemSize();
253318
253221
  const width2 = threeFor3d && deckWidth === void 0 ? threeWidth : deckWidth;
@@ -253581,138 +253484,22 @@ function SpatialSubscriber(props) {
253581
253484
  }
253582
253485
  }
253583
253486
  };
253584
- return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, children: [shouldUseThree ? jsxRuntimeExports.jsx(SpatialThreeAdapter, {
253585
- ref: threeRef,
253586
- uuid: uuid2,
253587
- width: width2,
253588
- height: height2,
253589
- theme,
253590
- hideTools: !isSelectable,
253591
- rotation: [rotationX, rotationY, rotationZ],
253592
- setRotationX,
253593
- setRotationY,
253594
- setRotationZ,
253595
- // Global view state
253596
- targetT,
253597
- targetZ,
253598
- viewState: isValidViewState ? {
253599
- zoom: zoom2,
253600
- target: [targetX2, targetY2, targetZ],
253601
- rotationX,
253602
- rotationOrbit
253603
- } : DEFAULT_VIEW_STATE,
253604
- orbitAxis,
253605
- spatialAxisFixed,
253606
- setViewState: isValidViewState ? setViewState : SET_VIEW_STATE_NOOP,
253607
- originalViewState,
253608
- spatialRenderingMode,
253609
- updateViewInfo: setComponentViewInfo,
253610
- delegateHover,
253611
- onEntitySelected,
253612
- // Points
253613
- obsPoints: obsPointsData,
253614
- pointLayerScopes,
253615
- pointLayerCoordination,
253616
- pointMultiObsLabels: pointMultiObsLabelsData,
253617
- // Spots
253618
- obsSpots: obsSpotsData,
253619
- spotLayerScopes,
253620
- spotLayerCoordination,
253621
- obsSpotsSets: obsSpotsSetsData,
253622
- spotMatrixIndices: spotMultiIndicesData,
253623
- spotMultiExpressionData: spotMultiExpressionNormData,
253624
- // Segmentations
253625
- segmentationLayerScopes,
253626
- segmentationLayerCoordination,
253627
- segmentationChannelScopesByLayer,
253628
- segmentationChannelCoordination,
253629
- obsSegmentations: obsSegmentationsData,
253630
- obsSegmentationsLocations: obsSegmentationsLocationsData,
253631
- obsSegmentationsSets: obsSegmentationsSetsData,
253632
- segmentationMatrixIndices: segmentationMultiIndicesData,
253633
- segmentationMultiExpressionData: segmentationMultiExpressionNormData,
253634
- bitmaskValueIsIndex,
253635
- // Images
253636
- images: imageData,
253637
- imageLayerScopes,
253638
- imageLayerCoordination,
253639
- imageChannelScopesByLayer,
253640
- imageChannelCoordination
253641
- }) : jsxRuntimeExports.jsx(SpatialWrapper, {
253642
- ref: deckRef,
253643
- uuid: uuid2,
253644
- width: width2,
253645
- height: height2,
253646
- theme,
253647
- hideTools: !isSelectable,
253648
- // Global view state
253649
- targetT,
253650
- targetZ,
253651
- viewState: isValidViewState ? {
253652
- zoom: zoom2,
253653
- target: [targetX2, targetY2, targetZ],
253654
- rotationX,
253655
- rotationOrbit
253656
- } : DEFAULT_VIEW_STATE,
253657
- orbitAxis,
253658
- spatialAxisFixed,
253659
- setViewState: isValidViewState ? setViewState : SET_VIEW_STATE_NOOP,
253660
- originalViewState,
253661
- spatialRenderingMode,
253662
- updateViewInfo: setComponentViewInfo,
253663
- delegateHover,
253664
- // Points
253665
- obsPoints: obsPointsData,
253666
- pointLayerScopes,
253667
- pointLayerCoordination,
253668
- pointMultiObsLabels: pointMultiObsLabelsData,
253669
- // Spots
253670
- obsSpots: obsSpotsData,
253671
- spotLayerScopes,
253672
- spotLayerCoordination,
253673
- obsSpotsSets: obsSpotsSetsData,
253674
- spotMatrixIndices: spotMultiIndicesData,
253675
- spotMultiExpressionData: spotMultiExpressionNormData,
253676
- // Segmentations
253677
- segmentationLayerScopes,
253678
- segmentationLayerCoordination,
253679
- segmentationChannelScopesByLayer,
253680
- segmentationChannelCoordination,
253681
- obsSegmentations: obsSegmentationsData,
253682
- obsSegmentationsLocations: obsSegmentationsLocationsData,
253683
- obsSegmentationsSets: obsSegmentationsSetsData,
253684
- segmentationMatrixIndices: segmentationMultiIndicesData,
253685
- segmentationMultiExpressionData: segmentationMultiExpressionNormData,
253686
- bitmaskValueIsIndex,
253687
- // Images
253688
- images: imageData,
253689
- imageLayerScopes,
253690
- imageLayerCoordination,
253691
- imageChannelScopesByLayer,
253692
- imageChannelCoordination
253693
- }), !disableTooltip && jsxRuntimeExports.jsx(SpatialTooltipSubscriber, {
253694
- parentUuid: uuid2,
253695
- width: width2,
253696
- height: height2,
253697
- hoverCoord,
253698
- // Points
253699
- obsPoints: obsPointsData,
253700
- pointLayerScopes,
253701
- pointLayerCoordination,
253702
- // Spots
253703
- obsSpots: obsSpotsData,
253704
- spotLayerScopes,
253705
- spotLayerCoordination,
253706
- // Segmentations
253707
- obsSegmentationsLocations: obsSegmentationsLocationsData,
253708
- segmentationLayerScopes,
253709
- segmentationChannelScopesByLayer,
253710
- segmentationChannelCoordination,
253711
- obsSegmentationsSetsData,
253712
- // Images
253713
- imageLayerScopes,
253714
- imageLayerCoordination
253715
- }), jsxRuntimeExports.jsx(
253487
+ return jsxRuntimeExports.jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, children: [is3dMode ? 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
+ zoom: zoom2,
253489
+ target: [targetX2, targetY2, targetZ],
253490
+ rotationX,
253491
+ rotationOrbit
253492
+ } : DEFAULT_VIEW_STATE, orbitAxis, spatialAxisFixed, setViewState: isValidViewState ? setViewState : SET_VIEW_STATE_NOOP, originalViewState, spatialRenderingMode, updateViewInfo: setComponentViewInfo, delegateHover, onEntitySelected, obsPoints: obsPointsData, pointLayerScopes, pointLayerCoordination, pointMultiObsLabels: pointMultiObsLabelsData, obsSpots: obsSpotsData, spotLayerScopes, spotLayerCoordination, obsSpotsSets: obsSpotsSetsData, spotMatrixIndices: spotMultiIndicesData, spotMultiExpressionData: spotMultiExpressionNormData, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, obsSegmentations: obsSegmentationsData, obsSegmentationsLocations: obsSegmentationsLocationsData, obsSegmentationsSets: obsSegmentationsSetsData, segmentationMatrixIndices: segmentationMultiIndicesData, segmentationMultiExpressionData: segmentationMultiExpressionNormData, bitmaskValueIsIndex, images: imageData, imageLayerScopes, imageLayerCoordination, imageChannelScopesByLayer, imageChannelCoordination }) : jsxRuntimeExports.jsx(SpatialThreeAdapter, { ref: threeRef, uuid: uuid2, width: width2, height: height2, theme, hideTools: !isSelectable, rotation: [rotationX, rotationY, rotationZ], setRotationX, setRotationY, setRotationZ, targetT, targetZ, viewState: isValidViewState ? {
253493
+ zoom: zoom2,
253494
+ target: [targetX2, targetY2, targetZ],
253495
+ rotationX,
253496
+ rotationOrbit
253497
+ } : DEFAULT_VIEW_STATE, orbitAxis, spatialAxisFixed, setViewState: isValidViewState ? setViewState : SET_VIEW_STATE_NOOP, originalViewState, spatialRenderingMode, updateViewInfo: setComponentViewInfo, delegateHover, onEntitySelected, obsPoints: obsPointsData, pointLayerScopes, pointLayerCoordination, pointMultiObsLabels: pointMultiObsLabelsData, obsSpots: obsSpotsData, spotLayerScopes, spotLayerCoordination, obsSpotsSets: obsSpotsSetsData, spotMatrixIndices: spotMultiIndicesData, spotMultiExpressionData: spotMultiExpressionNormData, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, obsSegmentations: obsSegmentationsData, obsSegmentationsLocations: obsSegmentationsLocationsData, obsSegmentationsSets: obsSegmentationsSetsData, segmentationMatrixIndices: segmentationMultiIndicesData, segmentationMultiExpressionData: segmentationMultiExpressionNormData, bitmaskValueIsIndex, images: imageData, imageLayerScopes, imageLayerCoordination, imageChannelScopesByLayer, imageChannelCoordination }) : jsxRuntimeExports.jsx(SpatialWrapper, { ref: deckRef, uuid: uuid2, width: width2, height: height2, theme, hideTools: !isSelectable, targetT, targetZ, viewState: isValidViewState ? {
253498
+ zoom: zoom2,
253499
+ target: [targetX2, targetY2, targetZ],
253500
+ rotationX,
253501
+ rotationOrbit
253502
+ } : DEFAULT_VIEW_STATE, orbitAxis, spatialAxisFixed, setViewState: isValidViewState ? setViewState : SET_VIEW_STATE_NOOP, originalViewState, spatialRenderingMode, updateViewInfo: setComponentViewInfo, delegateHover, obsPoints: obsPointsData, pointLayerScopes, pointLayerCoordination, pointMultiObsLabels: pointMultiObsLabelsData, obsSpots: obsSpotsData, spotLayerScopes, spotLayerCoordination, obsSpotsSets: obsSpotsSetsData, spotMatrixIndices: spotMultiIndicesData, spotMultiExpressionData: spotMultiExpressionNormData, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, obsSegmentations: obsSegmentationsData, obsSegmentationsLocations: obsSegmentationsLocationsData, obsSegmentationsSets: obsSegmentationsSetsData, segmentationMatrixIndices: segmentationMultiIndicesData, segmentationMultiExpressionData: segmentationMultiExpressionNormData, bitmaskValueIsIndex, images: imageData, imageLayerScopes, imageLayerCoordination, imageChannelScopesByLayer, imageChannelCoordination }), jsxRuntimeExports.jsx(
253716
253503
  MultiLegend,
253717
253504
  {
253718
253505
  // Fix to dark theme due to black background of spatial plot.
@@ -254547,11 +254334,11 @@ const Heatmap$1 = forwardRef$1((props, deckRef) => {
254547
254334
  });
254548
254335
  Heatmap$1.displayName = "Heatmap";
254549
254336
  function HeatmapTooltipSubscriber(props) {
254550
- const { parentUuid, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight, featureHighlight, featureType, featureLabelsMap } = props;
254337
+ const { parentUuid, width: width2, height: height2, transpose: transpose2, getObsInfo, getFeatureInfo, obsHighlight, featureHighlight, featureType, featureLabelsMap } = props;
254551
254338
  const sourceUuid = useComponentHover();
254552
254339
  const viewInfo = useComponentViewInfo(parentUuid);
254553
- const [cellInfo, cellCoord] = obsHighlight && getObsInfo2 ? [
254554
- getObsInfo2(obsHighlight),
254340
+ const [cellInfo, cellCoord] = obsHighlight && getObsInfo ? [
254341
+ getObsInfo(obsHighlight),
254555
254342
  viewInfo && viewInfo.projectFromId ? viewInfo.projectFromId(obsHighlight, null)[transpose2 ? 0 : 1] : null
254556
254343
  ] : [null, null];
254557
254344
  const [geneInfo, geneCoord] = featureHighlight && getFeatureInfo ? [
@@ -254659,7 +254446,7 @@ function HeatmapSubscriber(props) {
254659
254446
  cellSetSelection,
254660
254447
  obsIndex
254661
254448
  ]);
254662
- const getObsInfo2 = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
254449
+ const getObsInfo = useGetObsInfo(observationsLabel, obsLabelsTypes, obsLabelsData, obsSetsMembership);
254663
254450
  const getObsMembership = useGetObsMembership(obsSetsMembership);
254664
254451
  const getFeatureInfo = useCallback((featureId2) => {
254665
254452
  if (featureId2) {
@@ -254699,7 +254486,7 @@ function HeatmapSubscriber(props) {
254699
254486
  setTargetY(target2[1]);
254700
254487
  }, colormapRange: geneExpressionColormapRange, setColormapRange: setGeneExpressionColormapRange, height: height2, width: width2, theme, uuid: uuid2, uint8ObsFeatureMatrix: uint8ObsFeatureMatrix?.data, cellColors, colormap: geneExpressionColormap, setIsRendering, setCellHighlight, setGeneHighlight, featureLabelsMap, obsIndex, featureIndex, setTrackHighlight, setComponentHover: () => {
254701
254488
  setComponentHover(uuid2);
254702
- }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid2, width: width2, height: height2, transpose: transpose2, getObsInfo: getObsInfo2, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
254489
+ }, updateViewInfo: setComponentViewInfo, observationsTitle, variablesTitle, variablesDashes: false, observationsDashes: false, cellColorLabels, useDevicePixels: true, onHeatmapClick, setColorEncoding: setHoveredColorEncoding }), tooltipsVisible && jsxRuntimeExports.jsx(HeatmapTooltipSubscriber, { parentUuid: uuid2, width: width2, height: height2, transpose: transpose2, getObsInfo, getFeatureInfo, obsHighlight: cellHighlight, featureHighlight: geneHighlight, featureType, featureLabelsMap }), jsxRuntimeExports.jsx(Legend, { visible: true, theme, featureType, featureValueType, obsColorEncoding: "geneExpression", considerSelections: false, featureSelection: geneSelection, obsSetSelection: cellSetSelection, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, extent: obsFeatureMatrixExtent })] });
254703
254490
  }
254704
254491
  function _classCallCheck(a2, n3) {
254705
254492
  if (!(a2 instanceof n3)) throw new TypeError("Cannot call a class as a function");
@@ -264021,7 +263808,7 @@ const useStyles$c = makeStyles()(() => ({
264021
263808
  }
264022
263809
  }));
264023
263810
  function ChannelOptions(props) {
264024
- const { onRemove: onRemove2, onResetWindowUsingIQR, showValueExtent, setShowValueExtent } = props;
263811
+ const { onRemove: onRemove2, onResetWindowUsingIQR, showValueExtent, setShowValueExtent, numResolutions, spatialMaxResolution, setSpatialMaxResolution } = props;
264025
263812
  const [open2, setOpen] = useState(false);
264026
263813
  const { classes: classes2 } = useStyles$c();
264027
263814
  const { classes: selectClasses2 } = useSelectStyles();
@@ -264034,7 +263821,7 @@ function ChannelOptions(props) {
264034
263821
  setShowValueExtent(event2.target.value === "Value Min/Max");
264035
263822
  }
264036
263823
  const domainTypeId = $bdb11010cef70236$export$f680877a34711e37();
264037
- return jsxRuntimeExports.jsxs(PopperMenu, { open: open2, setOpen, buttonIcon: jsxRuntimeExports.jsx(MoreVertIcon, { fontSize: "small" }), buttonClassName: classes2.channelMenuButton, containerClassName: menuClasses.imageLayerPopperContainer, placement: "bottom-end", withPaper: true, "aria-label": "Open channel options menu", children: [jsxRuntimeExports.jsxs(MenuItem, { dense: true, disableGutters: true, children: [jsxRuntimeExports.jsx("label", { className: menuClasses.imageLayerMenuLabel, htmlFor: domainTypeId, children: "Slider Extent: " }), jsxRuntimeExports.jsxs(NativeSelect, { onChange: handleDomainTypeChange, value: showValueExtent ? "Value Min/Max" : "Dtype Min/Max", inputProps: { id: domainTypeId, "aria-label": "Slider extent selector" }, classes: { root: selectClasses2.selectRoot }, children: [jsxRuntimeExports.jsx("option", { value: "Value Min/Max", children: "Value Min/Max" }), jsxRuntimeExports.jsx("option", { value: "Dtype Min/Max", children: "Dtype Min/Max" })] })] }), jsxRuntimeExports.jsx(MenuItem, { dense: true, disableGutters: true, component: "button", onClick: onResetWindowUsingIQR, className: classes2.menuItemButton, "aria-label": "Click to use IQR for channel", children: "Reset window using IQR" }), jsxRuntimeExports.jsx(MenuItem, { dense: true, disableGutters: true, component: "button", onClick: handleRemove, className: classes2.menuItemButton, "aria-label": "Click to remove channel", children: "Remove channel" })] });
263824
+ return jsxRuntimeExports.jsxs(PopperMenu, { open: open2, setOpen, buttonIcon: jsxRuntimeExports.jsx(MoreVertIcon, { fontSize: "small" }), buttonClassName: classes2.channelMenuButton, containerClassName: menuClasses.imageLayerPopperContainer, placement: "bottom-end", withPaper: true, "aria-label": "Open channel options menu", children: [jsxRuntimeExports.jsxs(MenuItem, { dense: true, disableGutters: true, children: [jsxRuntimeExports.jsx("label", { className: menuClasses.imageLayerMenuLabel, htmlFor: domainTypeId, children: "Best Resolution: " }), jsxRuntimeExports.jsx(Slider, { value: spatialMaxResolution || 1, valueLabelDisplay: "auto", onChange: (e3, v) => setSpatialMaxResolution(v), min: 1, max: numResolutions - 1, step: 1, orientation: "horizontal" })] }), jsxRuntimeExports.jsxs(MenuItem, { dense: true, disableGutters: true, children: [jsxRuntimeExports.jsx("label", { className: menuClasses.imageLayerMenuLabel, htmlFor: domainTypeId, children: "Slider Extent: " }), jsxRuntimeExports.jsxs(NativeSelect, { onChange: handleDomainTypeChange, value: showValueExtent ? "Value Min/Max" : "Dtype Min/Max", inputProps: { id: domainTypeId, "aria-label": "Slider extent selector" }, classes: { root: selectClasses2.selectRoot }, children: [jsxRuntimeExports.jsx("option", { value: "Value Min/Max", children: "Value Min/Max" }), jsxRuntimeExports.jsx("option", { value: "Dtype Min/Max", children: "Dtype Min/Max" })] })] }), jsxRuntimeExports.jsx(MenuItem, { dense: true, disableGutters: true, component: "button", onClick: onResetWindowUsingIQR, className: classes2.menuItemButton, "aria-label": "Click to use IQR for channel", children: "Reset window using IQR" }), jsxRuntimeExports.jsx(MenuItem, { dense: true, disableGutters: true, component: "button", onClick: handleRemove, className: classes2.menuItemButton, "aria-label": "Click to remove channel", children: "Remove channel" })] });
264038
263825
  }
264039
263826
  const useStyles$b = makeStyles()(() => ({
264040
263827
  channelSlider: {
@@ -264121,7 +263908,10 @@ function ImageChannelController(props) {
264121
263908
  // The channel names.
264122
263909
  image: image2,
264123
263910
  // To get the channel window extent using image metadata.
264124
- spatialRenderingMode
263911
+ spatialRenderingMode,
263912
+ numResolutions,
263913
+ spatialMaxResolution,
263914
+ setSpatialMaxResolution
264125
263915
  } = props;
264126
263916
  const removeChannel = useRemoveImageChannelInMetaCoordinationScopes();
264127
263917
  const [showValueExtent, setShowValueExtent] = useState(true);
@@ -264158,7 +263948,7 @@ function ImageChannelController(props) {
264158
263948
  setWindow2(minMaxDomain);
264159
263949
  }
264160
263950
  }
264161
- return jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelVisibilityCheckbox, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, colormapOn }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, isStaticColor: !colormapOn, palette: VIEWER_PALETTE }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(ChannelSelectionDropdown, { featureIndex, targetC, setTargetC, setWindow: setWindow2, disabled: isLoading }) }), jsxRuntimeExports.jsx(Grid$1, { size: 3, children: jsxRuntimeExports.jsx(ChannelSlider, { image: image2, targetT, targetZ, targetC, window: window2, setWindow: setWindow2, disabled, color: color2, theme, colormapOn, showValueExtent, minMaxDomain }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelOptions, { onRemove: onRemove2, showValueExtent, setShowValueExtent, onResetWindowUsingIQR: handleResetWindowUsingIQR }) })] });
263951
+ return jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelVisibilityCheckbox, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, colormapOn }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, isStaticColor: !colormapOn, palette: VIEWER_PALETTE }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(ChannelSelectionDropdown, { featureIndex, targetC, setTargetC, setWindow: setWindow2, disabled: isLoading }) }), jsxRuntimeExports.jsx(Grid$1, { size: 3, children: jsxRuntimeExports.jsx(ChannelSlider, { image: image2, targetT, targetZ, targetC, window: window2, setWindow: setWindow2, disabled, color: color2, theme, colormapOn, showValueExtent, minMaxDomain }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelOptions, { onRemove: onRemove2, showValueExtent, setShowValueExtent, onResetWindowUsingIQR: handleResetWindowUsingIQR, numResolutions, spatialMaxResolution, setSpatialMaxResolution }) })] });
264162
263952
  }
264163
263953
  function DimensionSlider(props) {
264164
263954
  const { boundingSlice, sliceValue, setSliceValue, label: label2 } = props;
@@ -264261,10 +264051,11 @@ function ImageLayerController(props) {
264261
264051
  const { classes: controllerSectionClasses } = useControllerSectionStyles();
264262
264052
  const isMultiChannel = photometricInterpretation !== "RGB";
264263
264053
  return jsxRuntimeExports.jsx(Grid$1, { className: controllerSectionClasses.layerControllerGrid, children: jsxRuntimeExports.jsxs(Paper, { elevation: 4, className: controllerSectionClasses.layerControllerRoot, children: [jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { className: menuClasses.imageLayerVisibleButton, onClick: handleVisibleChange, "aria-label": "Toggle layer visibility", children: jsxRuntimeExports.jsx(Visibility, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1 }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ImageLayerEllipsisMenu, { colormap, setColormap, photometricInterpretation, setPhotometricInterpretation, spatialTargetResolution, setSpatialTargetResolution, volumetricRenderingAlgorithm, setVolumetricRenderingAlgorithm, spatialLayerTransparentColor, setSpatialLayerTransparentColor, spatialRenderingMode, image: image2, channelScopes, tooltipsVisible, setTooltipsVisible, channelLabelsVisible, setChannelLabelsVisible, channelLabelsOrientation, setChannelLabelsOrientation, channelLabelSize, setChannelLabelSize }) }), jsxRuntimeExports.jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsxRuntimeExports.jsx(ImageIcon, { className: classes2.layerTypeImageIcon }), isMultiChannel ? jsxRuntimeExports.jsx(Button, { onClick: handleOpenChange, className: classes2.channelExpansionButton, "aria-label": "Expand or collapse channel controls", children: open2 ? jsxRuntimeExports.jsx(ExpandLess, {}) : jsxRuntimeExports.jsx(ExpandMoreIcon, {}) }) : null] })] }), isMultiChannel && open2 ? jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [channelScopes.map((cScope) => {
264264
- const { spatialTargetC, spatialChannelVisible, spatialChannelOpacity, spatialChannelColor, spatialChannelWindow } = channelCoordination[cScope];
264265
- const { setSpatialTargetC, setSpatialChannelVisible, setSpatialChannelOpacity, setSpatialChannelColor, setSpatialChannelWindow } = setChannelCoordination[cScope];
264054
+ const { spatialTargetC, spatialChannelVisible, spatialChannelOpacity, spatialChannelColor, spatialChannelWindow, spatialMaxResolution } = channelCoordination[cScope];
264055
+ const { setSpatialTargetC, setSpatialChannelVisible, setSpatialChannelOpacity, setSpatialChannelColor, setSpatialChannelWindow, setSpatialMaxResolution } = setChannelCoordination[cScope];
264266
264056
  const channelIndex = image2?.getChannelIndex(spatialTargetC);
264267
- return jsxRuntimeExports.jsx(ImageChannelController, { theme, coordinationScopesRaw, layerScope, channelScope: cScope, targetT, targetZ, targetC: channelIndex, setTargetC: setSpatialTargetC, visible: spatialChannelVisible, setVisible: setSpatialChannelVisible, opacity: spatialChannelOpacity, setOpacity: setSpatialChannelOpacity, color: spatialChannelColor, setColor: setSpatialChannelColor, window: spatialChannelWindow, setWindow: setSpatialChannelWindow, colormapOn: colormap !== null, featureIndex, image: image2, spatialRenderingMode }, cScope);
264057
+ const numResolutions = image2?.getNumResolutions();
264058
+ return jsxRuntimeExports.jsx(ImageChannelController, { theme, coordinationScopesRaw, layerScope, channelScope: cScope, targetT, targetZ, targetC: channelIndex, setTargetC: setSpatialTargetC, visible: spatialChannelVisible, setVisible: setSpatialChannelVisible, opacity: spatialChannelOpacity, setOpacity: setSpatialChannelOpacity, color: spatialChannelColor, setColor: setSpatialChannelColor, window: spatialChannelWindow, setWindow: setSpatialChannelWindow, colormapOn: colormap !== null, featureIndex, image: image2, spatialRenderingMode, numResolutions, spatialMaxResolution, setSpatialMaxResolution }, cScope);
264268
264059
  }), jsxRuntimeExports.jsx(Button, { disabled: channelScopes.length === MAX_CHANNELS$1 || channelScopes.length === imageNumChannels, onClick: handleChannelAdd, fullWidth: true, variant: "outlined", className: classes2.imageLayerButton, startIcon: jsxRuntimeExports.jsx(AddIcon, {}), size: "small", "aria-label": "Add a channel to this layer", children: "Add Channel" })] }) : null, is3dMode && image2 ? jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [jsxRuntimeExports.jsx(Typography, { className: classes2.clippingPanesLabel, children: "Clipping planes:" }), jsxRuntimeExports.jsx(Grid$1, { size: 12, className: classes2.clippingSliders, children: jsxRuntimeExports.jsx(ClippingSliders, { image: image2, spatialSliceX, spatialSliceY, spatialSliceZ, setSpatialSliceX, setSpatialSliceY, setSpatialSliceZ }) })] }) : null] }) });
264269
264060
  }
264270
264061
  const useStyles$7 = makeStyles()((theme) => ({
@@ -264369,7 +264160,8 @@ function LayerControllerSubscriber(props) {
264369
264160
  CoordinationType$1.SPATIAL_TARGET_C,
264370
264161
  CoordinationType$1.SPATIAL_CHANNEL_VISIBLE,
264371
264162
  CoordinationType$1.SPATIAL_CHANNEL_COLOR,
264372
- CoordinationType$1.SPATIAL_CHANNEL_WINDOW
264163
+ CoordinationType$1.SPATIAL_CHANNEL_WINDOW,
264164
+ CoordinationType$1.SPATIAL_MAX_RESOLUTION
264373
264165
  ], coordinationScopes, coordinationScopesBy, CoordinationType$1.IMAGE_LAYER, CoordinationType$1.IMAGE_CHANNEL);
264374
264166
  const spotLayerCoordination = useComplexCoordination([
264375
264167
  CoordinationType$1.OBS_TYPE,
@@ -266419,7 +266211,7 @@ function HiglassGlobalStyles(props) {
266419
266211
  }
266420
266212
  register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
266421
266213
  const LazyHiGlassComponent = React__default.lazy(async () => {
266422
- const { HiGlassComponent } = await import("./higlass-B5Yf-THY.js");
266214
+ const { HiGlassComponent } = await import("./higlass-DEBJRTUn.js");
266423
266215
  return { default: HiGlassComponent };
266424
266216
  });
266425
266217
  const HG_SIZE = 800;
@@ -269366,7 +269158,7 @@ function NeuroglancerGlobalStyles(props) {
269366
269158
  const { classes: classes2 } = props;
269367
269159
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
269368
269160
  }
269369
- const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-CNzkD33k.js"));
269161
+ const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-CbIsUGfp.js"));
269370
269162
  function createWorker() {
269371
269163
  return new WorkerFactory();
269372
269164
  }
@@ -356890,6 +356682,10 @@ class ImageWrapper {
356890
356682
  const { labels: labels2, shape: shape2 } = Array.isArray(loader2.data) ? loader2.data[0] : loader2.data;
356891
356683
  return shape2[labels2.indexOf("c")];
356892
356684
  }
356685
+ getNumResolutions() {
356686
+ const loader2 = this.vivLoader;
356687
+ return Array.isArray(loader2.data) ? loader2.data.length : 1;
356688
+ }
356893
356689
  isMultiResolution() {
356894
356690
  const loader2 = this.vivLoader;
356895
356691
  const hasViewableResolutions = Boolean(Array.from({
@@ -356900,13 +356696,21 @@ class ImageWrapper {
356900
356696
  getMultiResolutionStats() {
356901
356697
  const loader2 = this.vivLoader;
356902
356698
  return Array.from({ length: loader2.data.length }).fill(0).map((_, resolution) => {
356903
- const { height: height2, width: width2, depthDownsampled, totalBytes } = getStatsForResolution(loader2.data, resolution);
356699
+ const { height: height2, width: width2, depth, depthDownsampled, totalBytes, dims } = getStatsForResolution(loader2.data, resolution);
356904
356700
  return {
356905
356701
  canLoad: canLoadResolution(loader2.data, resolution),
356906
356702
  height: height2,
356907
356703
  width: width2,
356704
+ depth,
356908
356705
  depthDownsampled,
356909
- totalBytes
356706
+ totalBytes,
356707
+ dims
356708
+ // chunkHeight
356709
+ // chunkWidth
356710
+ // chunkDepth
356711
+ // physicalSizeVoxel
356712
+ // eslint-disable-next-line max-len
356713
+ // physicalSizeTotal (physicalSizeVoxel * highest-resolution numPixels, for each dimension)
356910
356714
  };
356911
356715
  });
356912
356716
  }
@@ -373104,7 +372908,11 @@ class SpatialDataShapesSource extends SpatialDataTableSource {
373104
372908
  */
373105
372909
  // eslint-disable-next-line class-methods-use-this
373106
372910
  _isWkbColumn(arrowTable, columnName) {
373107
- return arrowTable.schema.fields.find((field2) => field2.name === columnName)?.metadata?.get("ARROW:extension:name") === "geoarrow.wkb";
372911
+ const geometryEncodingValue = arrowTable.schema.fields.find((field2) => field2.name === columnName)?.metadata?.get("ARROW:extension:name");
372912
+ if (!geometryEncodingValue) {
372913
+ return true;
372914
+ }
372915
+ return geometryEncodingValue === "geoarrow.wkb";
373108
372916
  }
373109
372917
  /**
373110
372918
  * Helper to decode WKB geometry column as flat coordinates (for points).
@@ -379539,6 +379347,7 @@ const baseCoordinationTypes = [
379539
379347
  new PluginCoordinationType(CoordinationType$1.SPATIAL_RENDERING_MODE, "2D", z.enum(["2D", "3D"]).nullable()),
379540
379348
  new PluginCoordinationType(CoordinationType$1.VOLUMETRIC_RENDERING_ALGORITHM, "additive", z.enum(["maximumIntensityProjection", "additive"])),
379541
379349
  new PluginCoordinationType(CoordinationType$1.SPATIAL_TARGET_RESOLUTION, 0, z.number().nullable()),
379350
+ new PluginCoordinationType(CoordinationType$1.SPATIAL_MAX_RESOLUTION, null, z.number().nullable()),
379542
379351
  new PluginCoordinationType(CoordinationType$1.SPATIAL_SLICE_X, null, z.array(z.number()).length(2).nullable()),
379543
379352
  new PluginCoordinationType(CoordinationType$1.SPATIAL_SLICE_Y, null, z.array(z.number()).length(2).nullable()),
379544
379353
  new PluginCoordinationType(CoordinationType$1.SPATIAL_SLICE_Z, null, z.array(z.number()).length(2).nullable()),
@@ -379653,170 +379462,176 @@ function Vitessce(props) {
379653
379462
  );
379654
379463
  }
379655
379464
  export {
379656
- LinearMipmapNearestFilter as $,
379657
- ACESFilmicToneMapping as A,
379658
- BasicShadowMap as B,
379659
- Clock as C,
379465
+ Bone as $,
379466
+ LineSegments as A,
379467
+ BufferAttribute as B,
379468
+ Color as C,
379660
379469
  DirectionalLight2 as D,
379661
- EventDispatcher as E,
379470
+ Line as E,
379662
379471
  FileLoader as F,
379663
379472
  Group$1 as G,
379664
- TextureLoader as H,
379473
+ LineLoop as H,
379665
379474
  InstancedMesh as I,
379666
- ImageBitmapLoader as J,
379667
- BufferAttribute as K,
379668
- Layers as L,
379669
- Material as M,
379670
- NoToneMapping as N,
379671
- OrthographicCamera as O,
379672
- PerspectiveCamera as P,
379475
+ Points as J,
379476
+ PerspectiveCamera as K,
379477
+ Loader as L,
379478
+ Matrix42 as M,
379479
+ NearestMipmapLinearFilter as N,
379480
+ Object3D as O,
379481
+ PointLight2 as P,
379673
379482
  Quaternion2 as Q,
379674
- Raycaster as R,
379675
- Scene as S,
379676
- Texture2 as T,
379677
- UnsignedByteType as U,
379678
- VSMShadowMap as V,
379679
- WebGLRenderer as W,
379680
- InterleavedBuffer as X,
379681
- LinearMipmapLinearFilter as Y,
379682
- NearestMipmapLinearFilter as Z,
379683
- _extends$c as _,
379684
- PCFSoftShadowMap as a,
379685
- require_cof as a$,
379686
- NearestMipmapNearestFilter as a0,
379687
- LinearFilter as a1,
379688
- NearestFilter as a2,
379689
- RepeatWrapping as a3,
379690
- MirroredRepeatWrapping as a4,
379691
- ClampToEdgeWrapping as a5,
379692
- PointsMaterial as a6,
379693
- LineBasicMaterial as a7,
379694
- MeshStandardMaterial as a8,
379695
- DoubleSide as a9,
379696
- ShaderMaterial as aA,
379697
- UniformsUtils as aB,
379698
- UniformsLib as aC,
379699
- Vector42 as aD,
379700
- Line3 as aE,
379701
- SphereGeometry2 as aF,
379702
- Triangle as aG,
379703
- BackSide as aH,
379704
- jsxRuntimeExports as aI,
379705
- Matrix32 as aJ,
379706
- CoordinationType$1 as aK,
379707
- Data3DTexture as aL,
379708
- RedFormat as aM,
379709
- FloatType as aN,
379710
- getImageSize as aO,
379711
- BaseDecoder as aP,
379712
- LercParameters as aQ,
379713
- LercAddCompression as aR,
379714
- commonjsGlobal$1 as aS,
379715
- requireObjectAssign$1 as aT,
379716
- earcut as aU,
379717
- requireAssign as aV,
379718
- require_export as aW,
379719
- require_core as aX,
379720
- require_fails as aY,
379721
- require_toObject as aZ,
379722
- require_objectKeys as a_,
379723
- MeshBasicMaterial as aa,
379724
- PropertyBinding as ab,
379725
- SkinnedMesh as ac,
379726
- Mesh as ad,
379727
- LineSegments as ae,
379728
- Line as af,
379729
- LineLoop as ag,
379730
- Points as ah,
379731
- MathUtils as ai,
379732
- Skeleton as aj,
379733
- InterpolateDiscrete as ak,
379734
- InterpolateLinear as al,
379735
- AnimationClip as am,
379736
- Bone as an,
379737
- InterleavedBufferAttribute as ao,
379738
- VectorKeyframeTrack as ap,
379739
- QuaternionKeyframeTrack as aq,
379740
- NumberKeyframeTrack as ar,
379741
- FrontSide as as,
379742
- Interpolant as at,
379743
- Box3 as au,
379744
- Sphere as av,
379745
- InstancedBufferGeometry as aw,
379746
- Float32BufferAttribute as ax,
379747
- InstancedInterleavedBuffer as ay,
379748
- WireframeGeometry as az,
379749
- PCFShadowMap as b,
379750
- require_wks as b0,
379751
- require_iterators as b1,
379752
- requireWeb_dom_iterable as b2,
379753
- requireEs6_string_iterator as b3,
379754
- require_anObject as b4,
379755
- require_hide as b5,
379756
- require_ctx as b6,
379757
- require_toLength as b7,
379758
- require_global as b8,
379759
- require_objectDp as b9,
379760
- MeshDepthMaterial as bA,
379761
- RGBADepthPacking as bB,
379762
- ShaderChunk as bC,
379763
- PlaneGeometry2 as bD,
379764
- InstancedBufferAttribute as bE,
379765
- Vitessce as bF,
379766
- PluginFileType as bG,
379767
- PluginViewType as bH,
379768
- PluginCoordinationType as bI,
379769
- PluginJointFileType as bJ,
379770
- PluginAsyncFunction as bK,
379771
- z as bL,
379772
- require_descriptors as ba,
379773
- require_isObject as bb,
379774
- require_objectCreate as bc,
379775
- require_iterDefine as bd,
379776
- require_iterStep as be,
379777
- require_meta as bf,
379778
- require_isArray as bg,
379779
- require_iobject as bh,
379780
- require_setToStringTag as bi,
379781
- require_aFunction as bj,
379782
- requireIterator as bk,
379783
- require_propertyDesc as bl,
379784
- requireEs6_symbol as bm,
379785
- requireDefineProperty$1 as bn,
379786
- require_toIobject as bo,
379787
- require_objectGopd as bp,
379788
- require_html as bq,
379789
- require_domCreate as br,
379790
- require_library as bs,
379791
- requireSymbol as bt,
379792
- require_objectPie as bu,
379793
- require_has as bv,
379794
- require_redefine as bw,
379795
- require_objectAssign as bx,
379796
- diffCameraState as by,
379797
- MeshDistanceMaterial as bz,
379798
- Vector32 as c,
379799
- Vector22 as d,
379800
- Camera as e,
379801
- BufferGeometry as f,
379802
- getDefaultExportFromCjs$1 as g,
379803
- RGBAFormat as h,
379804
- Color as i,
379805
- THREE as j,
379806
- Matrix42 as k,
379807
- TrianglesDrawMode as l,
379808
- TriangleFanDrawMode as m,
379809
- TriangleStripDrawMode as n,
379810
- REVISION as o,
379811
- MOUSE as p,
379812
- TOUCH as q,
379813
- Spherical as r,
379814
- Ray as s,
379815
- Plane2 as t,
379816
- Loader as u,
379817
- LoaderUtils as v,
379818
- MeshPhysicalMaterial as w,
379819
- SpotLight as x,
379820
- PointLight2 as y,
379821
- Object3D as z
379483
+ REVISION as R,
379484
+ SpotLight as S,
379485
+ TrianglesDrawMode as T,
379486
+ MathUtils as U,
379487
+ Vector22 as V,
379488
+ OrthographicCamera as W,
379489
+ Skeleton as X,
379490
+ InterpolateDiscrete as Y,
379491
+ InterpolateLinear as Z,
379492
+ AnimationClip as _,
379493
+ TriangleFanDrawMode as a,
379494
+ earcut as a$,
379495
+ InterleavedBufferAttribute as a0,
379496
+ Texture2 as a1,
379497
+ VectorKeyframeTrack as a2,
379498
+ QuaternionKeyframeTrack as a3,
379499
+ NumberKeyframeTrack as a4,
379500
+ FrontSide as a5,
379501
+ Interpolant as a6,
379502
+ Box3 as a7,
379503
+ Sphere as a8,
379504
+ InstancedBufferGeometry as a9,
379505
+ UnsignedIntType as aA,
379506
+ WebGLMultipleRenderTargets as aB,
379507
+ RGBAFormat as aC,
379508
+ PlaneGeometry2 as aD,
379509
+ GLSL3 as aE,
379510
+ getDefaultExportFromCjs$1 as aF,
379511
+ Raycaster as aG,
379512
+ PCFSoftShadowMap as aH,
379513
+ VSMShadowMap as aI,
379514
+ PCFShadowMap as aJ,
379515
+ BasicShadowMap as aK,
379516
+ NoToneMapping as aL,
379517
+ ACESFilmicToneMapping as aM,
379518
+ Clock as aN,
379519
+ WebGLRenderer as aO,
379520
+ Camera as aP,
379521
+ Layers as aQ,
379522
+ THREE as aR,
379523
+ EventDispatcher as aS,
379524
+ MOUSE as aT,
379525
+ TOUCH as aU,
379526
+ Spherical as aV,
379527
+ BaseDecoder as aW,
379528
+ LercParameters as aX,
379529
+ LercAddCompression as aY,
379530
+ commonjsGlobal$1 as aZ,
379531
+ requireObjectAssign$1 as a_,
379532
+ Float32BufferAttribute as aa,
379533
+ InstancedInterleavedBuffer as ab,
379534
+ WireframeGeometry as ac,
379535
+ ShaderMaterial as ad,
379536
+ UniformsUtils as ae,
379537
+ UniformsLib as af,
379538
+ Vector42 as ag,
379539
+ Line3 as ah,
379540
+ SphereGeometry2 as ai,
379541
+ _extends$c as aj,
379542
+ Plane2 as ak,
379543
+ Triangle as al,
379544
+ BackSide as am,
379545
+ Ray as an,
379546
+ jsxRuntimeExports as ao,
379547
+ Matrix32 as ap,
379548
+ CoordinationType$1 as aq,
379549
+ Data3DTexture as ar,
379550
+ RedFormat as as,
379551
+ FloatType as at,
379552
+ getImageSize as au,
379553
+ Scene as av,
379554
+ log$b as aw,
379555
+ isEqual$3 as ax,
379556
+ UnsignedByteType as ay,
379557
+ RedIntegerFormat as az,
379558
+ TriangleStripDrawMode as b,
379559
+ requireAssign as b0,
379560
+ require_export as b1,
379561
+ require_core as b2,
379562
+ require_fails as b3,
379563
+ require_toObject as b4,
379564
+ require_objectKeys as b5,
379565
+ require_cof as b6,
379566
+ require_wks as b7,
379567
+ require_iterators as b8,
379568
+ requireWeb_dom_iterable as b9,
379569
+ requireSymbol as bA,
379570
+ require_objectPie as bB,
379571
+ require_has as bC,
379572
+ require_redefine as bD,
379573
+ require_objectAssign as bE,
379574
+ diffCameraState as bF,
379575
+ MeshDistanceMaterial as bG,
379576
+ MeshDepthMaterial as bH,
379577
+ RGBADepthPacking as bI,
379578
+ ShaderChunk as bJ,
379579
+ InstancedBufferAttribute as bK,
379580
+ Vitessce as bL,
379581
+ PluginFileType as bM,
379582
+ PluginViewType as bN,
379583
+ PluginCoordinationType as bO,
379584
+ PluginJointFileType as bP,
379585
+ PluginAsyncFunction as bQ,
379586
+ z as bR,
379587
+ requireEs6_string_iterator as ba,
379588
+ require_anObject as bb,
379589
+ require_hide as bc,
379590
+ require_ctx as bd,
379591
+ require_toLength as be,
379592
+ require_global as bf,
379593
+ require_objectDp as bg,
379594
+ require_descriptors as bh,
379595
+ require_isObject as bi,
379596
+ require_objectCreate as bj,
379597
+ require_iterDefine as bk,
379598
+ require_iterStep as bl,
379599
+ require_meta as bm,
379600
+ require_isArray as bn,
379601
+ require_iobject as bo,
379602
+ require_setToStringTag as bp,
379603
+ require_aFunction as bq,
379604
+ requireIterator as br,
379605
+ require_propertyDesc as bs,
379606
+ requireEs6_symbol as bt,
379607
+ requireDefineProperty$1 as bu,
379608
+ require_toIobject as bv,
379609
+ require_objectGopd as bw,
379610
+ require_html as bx,
379611
+ require_domCreate as by,
379612
+ require_library as bz,
379613
+ LoaderUtils as c,
379614
+ MeshPhysicalMaterial as d,
379615
+ Vector32 as e,
379616
+ TextureLoader as f,
379617
+ ImageBitmapLoader as g,
379618
+ InterleavedBuffer as h,
379619
+ LinearMipmapLinearFilter as i,
379620
+ LinearMipmapNearestFilter as j,
379621
+ NearestMipmapNearestFilter as k,
379622
+ LinearFilter as l,
379623
+ NearestFilter as m,
379624
+ RepeatWrapping as n,
379625
+ MirroredRepeatWrapping as o,
379626
+ ClampToEdgeWrapping as p,
379627
+ PointsMaterial as q,
379628
+ Material as r,
379629
+ LineBasicMaterial as s,
379630
+ MeshStandardMaterial as t,
379631
+ DoubleSide as u,
379632
+ MeshBasicMaterial as v,
379633
+ PropertyBinding as w,
379634
+ BufferGeometry as x,
379635
+ SkinnedMesh as y,
379636
+ Mesh as z
379822
379637
  };