@vitessce/all 4.0.3 → 4.0.4
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/{GeometryAndMeshXR-DngaDWBF.js → GeometryAndMeshXR-CvjW5GGO.js} +1 -1
- package/dist/{ReactNeuroglancer-DSiLDSuM.js → ReactNeuroglancer-D4iTpbeC.js} +1 -1
- package/dist/{XREnterButton-Beha7PBD.js → XREnterButton-pTH1jk6g.js} +1 -1
- package/dist/{XRSceneComponents-CNuqVsYi.js → XRSceneComponents-DEj-tQkm.js} +1 -1
- package/dist/{XRWrapper-BsV3wgJG.js → XRWrapper-DIEbbPAq.js} +2 -2
- package/dist/{deflate-BnG3V84V.js → deflate-BtdFXYzo.js} +1 -1
- package/dist/{higlass-4OKx7mdy.js → higlass-BnXDiYjj.js} +1 -1
- package/dist/{index-B8FH88N6.js → index-BnKmchw3.js} +167 -77
- package/dist/{index-B9h9IQaz.js → index-CMYlENbA.js} +3 -2
- package/dist/{index-CwGBUQIk.js → index-JE2SuNrQ.js} +7 -6
- package/dist/index.js +1 -1
- package/dist/{jpeg-9VJS3-Bw.js → jpeg-DOW9md97.js} +1 -1
- package/dist/{lerc-D1J26SPX.js → lerc-udUVD1VM.js} +1 -1
- package/dist/{lzw-xVcb3-tK.js → lzw-B1XPe-af.js} +1 -1
- package/dist/{packbits-Dm4fdK8S.js → packbits-DI5XXjyK.js} +1 -1
- package/dist/{raw-UWcztCkw.js → raw-Y5j8FDrQ.js} +1 -1
- package/dist/{webimage-C-QWVV-f.js → webimage-C8U2Oy62.js} +1 -1
- package/dist/{xrStore-Dhi1LSJi.js → xrStore-D2rxhSUn.js} +1 -1
- package/package.json +33 -33
|
@@ -3,7 +3,7 @@ import { useRef, useEffect, useState } from "react";
|
|
|
3
3
|
import { useThree, useFrame } from "@react-three/fiber";
|
|
4
4
|
import { Bvh } from "@react-three/drei";
|
|
5
5
|
import { Matrix4, Vector3, Box3, FrontSide } from "three";
|
|
6
|
-
import { g as getXRModule, i as isValidGeometrySize, M as MeasureLine, s as stringifyLineData } from "./index-
|
|
6
|
+
import { g as getXRModule, i as isValidGeometrySize, M as MeasureLine, s as stringifyLineData } from "./index-JE2SuNrQ.js";
|
|
7
7
|
const { useXR, useXRInputSourceState } = getXRModule();
|
|
8
8
|
function getHandJoint(hand, jointName) {
|
|
9
9
|
return hand.get(jointName);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React__default from "react";
|
|
3
|
-
import { a as getDefaultExportFromCjs, d as requireAssign, f as require_export, h as require_core, j as require_fails, k as require_toObject, m as require_objectKeys, n as require_cof, o as require_wks, p as require_iterators, q as requireWeb_dom_iterable, s as requireEs6_string_iterator, t as require_anObject, v as require_hide, w as require_ctx, x as require_toLength, y as require_global, z as require_objectDp, A as require_descriptors, D as require_isObject, E as require_objectCreate, F as require_iterDefine, G as require_iterStep, H as require_meta, I as require_isArray, J as require_iobject, K as require_setToStringTag, M as require_aFunction, N as requireIterator, O as require_propertyDesc, c as commonjsGlobal, P as requireEs6_symbol, Q as requireDefineProperty, R as require_toIobject, S as require_objectGopd, T as require_html, U as require_domCreate, V as require_library, W as requireSymbol, X as require_objectPie, Y as require_has, Z as require_redefine, _ as require_objectAssign, $ as GREY_HEX, a0 as diffCameraState } from "./index-
|
|
3
|
+
import { a as getDefaultExportFromCjs, d as requireAssign, f as require_export, h as require_core, j as require_fails, k as require_toObject, m as require_objectKeys, n as require_cof, o as require_wks, p as require_iterators, q as requireWeb_dom_iterable, s as requireEs6_string_iterator, t as require_anObject, v as require_hide, w as require_ctx, x as require_toLength, y as require_global, z as require_objectDp, A as require_descriptors, D as require_isObject, E as require_objectCreate, F as require_iterDefine, G as require_iterStep, H as require_meta, I as require_isArray, J as require_iobject, K as require_setToStringTag, M as require_aFunction, N as requireIterator, O as require_propertyDesc, c as commonjsGlobal, P as requireEs6_symbol, Q as requireDefineProperty, R as require_toIobject, S as require_objectGopd, T as require_html, U as require_domCreate, V as require_library, W as requireSymbol, X as require_objectPie, Y as require_has, Z as require_redefine, _ as require_objectAssign, $ as GREY_HEX, a0 as diffCameraState } from "./index-BnKmchw3.js";
|
|
4
4
|
var assignExports = requireAssign();
|
|
5
5
|
const _Object$assign = /* @__PURE__ */ getDefaultExportFromCjs(assignExports);
|
|
6
6
|
var es6_object_keys = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect } from "react";
|
|
3
|
-
import { x as xrStore } from "./xrStore-
|
|
3
|
+
import { x as xrStore } from "./xrStore-D2rxhSUn.js";
|
|
4
4
|
function XREnterButton() {
|
|
5
5
|
const [supported, setSupported] = useState(false);
|
|
6
6
|
const [entered, setEntered] = useState(false);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useRef } from "react";
|
|
3
3
|
import { useThree, useFrame } from "@react-three/fiber";
|
|
4
|
-
import { g as getXRModule } from "./index-
|
|
4
|
+
import { g as getXRModule } from "./index-JE2SuNrQ.js";
|
|
5
5
|
const { useXRInputSourceState } = getXRModule();
|
|
6
6
|
function getHandJoint(hand, jointName) {
|
|
7
7
|
return hand.get(jointName);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { g as getXRModule } from "./index-
|
|
3
|
-
import { x as xrStore } from "./xrStore-
|
|
2
|
+
import { g as getXRModule } from "./index-JE2SuNrQ.js";
|
|
3
|
+
import { x as xrStore } from "./xrStore-D2rxhSUn.js";
|
|
4
4
|
const { XR } = getXRModule();
|
|
5
5
|
function XRWrapper({ children }) {
|
|
6
6
|
return jsx(XR, { store: xrStore, children });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-SxljTded.js";
|
|
2
|
-
import { B as BaseDecoder } from "./index-
|
|
2
|
+
import { B as BaseDecoder } from "./index-BnKmchw3.js";
|
|
3
3
|
class DeflateDecoder extends BaseDecoder {
|
|
4
4
|
decodeBlock(buffer) {
|
|
5
5
|
return inflate_1(new Uint8Array(buffer)).buffer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import React__default, { createContext, isValidElement, PureComponent, Component, useMemo, useState, useRef, useEffect, useCallback, memo, useContext, useReducer, useLayoutEffect } from "react";
|
|
3
|
-
import { r as requireObjectAssign, a as getDefaultExportFromCjs$1, c as commonjsGlobal, e as earcut } from "./index-
|
|
3
|
+
import { r as requireObjectAssign, a as getDefaultExportFromCjs$1, c as commonjsGlobal, e as earcut } from "./index-BnKmchw3.js";
|
|
4
4
|
import ReactDOM__default, { unstable_batchedUpdates, createPortal } from "react-dom";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
function finallyConstructor(callback) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import React__default, { useContext, forwardRef as forwardRef$1, useRef, useMemo as useMemo$1, createContext, createElement, isValidElement, cloneElement, Children, PureComponent, useEffect, useState, version as version$6, useLayoutEffect as useLayoutEffect$1, useImperativeHandle, Component as Component$1, useCallback, Suspense, useReducer } from "react";
|
|
3
|
-
import { useLoaders, useCoordinationScopes, useCoordination, useDescription, useImageData, useReady, TitleInfo, useVitessceContainer, useSetWarning, useObsSetsData, useUrls, usePlotOptionsStyles, OptionsContainer, CellColorEncodingOption, OptionSelect, useComponentHover, useComponentViewInfo, useSetComponentHover, useSetComponentViewInfo, useInitialCoordination, useDeckCanvasSize, useMultiObsLabels, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useFeatureLabelsData, useExpandedFeatureLabelsMap, useSampleSetsData, useSampleEdgesData, useGetObsInfo, useUint8FeatureSelection, useExpressionValueGetter, useAuxiliaryCoordination, useHasLoader, useObsLocationsData, useObsLabelsData, useObsSegmentationsData, useNeighborhoodsData, useMergeCoordination, useCoordinationScopesBy, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationScopesNonNull, useComplexCoordination, useComplexCoordinationSecondary, useGridItemSize, useMultiObsPoints, usePointMultiObsLabels, usePointMultiObsFeatureMatrixIndices, useMultiObsSpots, useSpotMultiObsSets, useSpotMultiFeatureLabels, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useMultiObsSegmentations, useSegmentationMultiObsSets, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useMultiImages, useObsFeatureMatrixData, useUint8ObsFeatureMatrix, useGetObsMembership, PopperMenu, useComponentLayout, useClosestVitessceContainerSize, useWindowDimensions, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes, useViewConfigStoreApi, useViewConfig, useSetViewConfig, createLoaders, useWarning, useGenomicProfilesData, useMatchingLoader, useColumnNameMapping, useFeatureStatsData, useObsSetStatsData, useAsyncFunction, useFeatureSetStatsData, useComparisonMetadata, logConfig, VitSContainer } from "@vitessce/vit-s";
|
|
3
|
+
import { useLoaders, useCoordinationScopes, useCoordination, useDescription, useImageData, useReady, TitleInfo, useVitessceContainer, useSetWarning, useObsSetsData, useUrls, usePlotOptionsStyles, OptionsContainer, CellColorEncodingOption, OptionSelect, useComponentHover, useComponentViewInfo, useSetComponentHover, useSetComponentViewInfo, useInitialCoordination, useDeckCanvasSize, useMultiObsLabels, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useFeatureLabelsData, useExpandedFeatureLabelsMap, useSampleSetsData, useSampleEdgesData, useGetObsInfo, useUint8FeatureSelection, useExpressionValueGetter, useAuxiliaryCoordination, useHasLoader, useObsLocationsData, useObsLabelsData, useObsSegmentationsData, useNeighborhoodsData, useMergeCoordination, useCoordinationScopesBy, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationScopesNonNull, useComplexCoordination, useComplexCoordinationSecondary, useGridItemSize, useMultiObsPoints, usePointMultiObsLabels, usePointMultiObsFeatureMatrixIndices, useMultiObsSpots, useSpotMultiObsSets, useSpotMultiFeatureLabels, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useMultiObsSegmentations, useSegmentationMultiObsSets, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useMultiImages, useObsFeatureMatrixData, useUint8ObsFeatureMatrix, useGetObsMembership, PopperMenu, useComponentLayout, useClosestVitessceContainerSize, useWindowDimensions, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes, useViewConfigStoreApi, useViewConfig, useSetViewConfig, createLoaders, useWarning, useGenomicProfilesData, shallowDiff, shallowDiffByChannelWithKeys, shallowDiffByChannelCoordinationWithKeys, shallowDiffByChannel, shallowDiffByLayer, shallowDiffByLayerCoordinationWithKeys, useMemoCustomComparison, useMatchingLoader, useColumnNameMapping, useFeatureStatsData, useObsSetStatsData, useAsyncFunction, useFeatureSetStatsData, useComparisonMetadata, logConfig, VitSContainer } from "@vitessce/vit-s";
|
|
4
4
|
import { jsx as jsx$1, jsxs, Fragment } from "react/jsx-runtime";
|
|
5
5
|
import * as ReactDOM from "react-dom";
|
|
6
6
|
import ReactDOM__default, { createPortal } from "react-dom";
|
|
@@ -18376,7 +18376,7 @@ const { tss } = createTss({
|
|
|
18376
18376
|
},
|
|
18377
18377
|
"usePlugin": useMuiThemeStyleOverridesPlugin
|
|
18378
18378
|
});
|
|
18379
|
-
const useStyles$
|
|
18379
|
+
const useStyles$z = tss.create({});
|
|
18380
18380
|
function createChainedFunction$1(...funcs) {
|
|
18381
18381
|
return funcs.reduce((acc, func) => {
|
|
18382
18382
|
if (func == null) {
|
|
@@ -72664,7 +72664,7 @@ const Popper = React.forwardRef((props, ref2) => {
|
|
|
72664
72664
|
}, [handlePopperRef]);
|
|
72665
72665
|
React.useImperativeHandle(popperRefProp, () => popperRef.current, []);
|
|
72666
72666
|
const [exited, setExited] = React.useState(true);
|
|
72667
|
-
const { theme } = useStyles$
|
|
72667
|
+
const { theme } = useStyles$z();
|
|
72668
72668
|
const rtlPlacement = flipPlacement(initialPlacement, theme);
|
|
72669
72669
|
const [placement, setPlacement] = React.useState(rtlPlacement);
|
|
72670
72670
|
React.useEffect(() => {
|
|
@@ -73398,7 +73398,7 @@ var VariableSizeList$1 = /* @__PURE__ */ createListComponent({
|
|
|
73398
73398
|
});
|
|
73399
73399
|
const VariableSizeList = VariableSizeList$1;
|
|
73400
73400
|
const LIST_ROW_HEIGHT$1 = 48;
|
|
73401
|
-
const useStyles$
|
|
73401
|
+
const useStyles$y = makeStyles()(() => ({
|
|
73402
73402
|
searchInput: {
|
|
73403
73403
|
lineHeight: "initial",
|
|
73404
73404
|
height: "auto !important"
|
|
@@ -73438,7 +73438,7 @@ const ListboxComponent$1 = React__default.forwardRef((props, ref2) => {
|
|
|
73438
73438
|
});
|
|
73439
73439
|
function SimpleAutocomplete(props) {
|
|
73440
73440
|
const { getMatches, onChange, textInputLabel = "Enter a gene", getItemLabel = (option) => option.label } = props;
|
|
73441
|
-
const { classes: classes2 } = useStyles$
|
|
73441
|
+
const { classes: classes2 } = useStyles$y();
|
|
73442
73442
|
const [potentialItems, setPotentialItems] = useState([]);
|
|
73443
73443
|
const handleInputChange = async (_event, value2) => {
|
|
73444
73444
|
if (!value2) {
|
|
@@ -82988,7 +82988,7 @@ function defaultUrlTransform(value2) {
|
|
|
82988
82988
|
}
|
|
82989
82989
|
return "";
|
|
82990
82990
|
}
|
|
82991
|
-
const useStyles$
|
|
82991
|
+
const useStyles$x = makeStyles()((theme) => ({
|
|
82992
82992
|
description: {
|
|
82993
82993
|
"& p, details, table": {
|
|
82994
82994
|
fontSize: "80%",
|
|
@@ -83025,7 +83025,7 @@ const useStyles$w = makeStyles()((theme) => ({
|
|
|
83025
83025
|
}));
|
|
83026
83026
|
function Description(props) {
|
|
83027
83027
|
const { description: description2, metadata: metadata2, descriptionType } = props;
|
|
83028
|
-
const { classes: classes2 } = useStyles$
|
|
83028
|
+
const { classes: classes2 } = useStyles$x();
|
|
83029
83029
|
return jsxs("div", { className: classes2.description, children: [descriptionType && descriptionType === DescriptionType.MARKDOWN ? jsx$1(Markdown, { children: description2 }) : jsx$1("p", { children: description2 }), metadata2 && Array.from(metadata2.entries()).map(([layerIndex, { name: layerName, metadata: metadataRecord }]) => metadataRecord && Object.entries(metadataRecord).length > 0 ? jsxs("details", { children: [jsx$1("summary", { children: layerName }), jsx$1("div", { className: classes2.metadataContainer, children: jsx$1("table", { children: jsx$1("tbody", { children: Object.entries(metadataRecord).map(([key2, value2]) => jsxs("tr", { children: [jsx$1("th", { title: key2, children: key2 }), jsx$1("td", { title: value2, children: value2 })] }, key2)) }) }) })] }, layerIndex) : null)] });
|
|
83030
83030
|
}
|
|
83031
83031
|
function DescriptionSubscriber(props) {
|
|
@@ -98135,7 +98135,7 @@ const Tooltip$2 = /* @__PURE__ */ React.forwardRef((props, ref2) => {
|
|
|
98135
98135
|
}, extraProps), getChildren());
|
|
98136
98136
|
});
|
|
98137
98137
|
const nodeHeight = 32;
|
|
98138
|
-
const useStyles$
|
|
98138
|
+
const useStyles$w = makeStyles()((theme) => ({
|
|
98139
98139
|
setsManager: {
|
|
98140
98140
|
position: "relative",
|
|
98141
98141
|
width: "100%",
|
|
@@ -98302,7 +98302,7 @@ const useStyles$v = makeStyles()((theme) => ({
|
|
|
98302
98302
|
}));
|
|
98303
98303
|
function SetsManagerTreeGlobalStyles(props) {
|
|
98304
98304
|
const { classes: classes2 } = props;
|
|
98305
|
-
const { theme } = useStyles$
|
|
98305
|
+
const { theme } = useStyles$z();
|
|
98306
98306
|
return jsx$1(ScopedGlobalStyles, { parentClassName: classes2.setsManagerTree, styles: {
|
|
98307
98307
|
".rc-tree": {
|
|
98308
98308
|
paddingLeft: "0",
|
|
@@ -98643,7 +98643,7 @@ function HelpTooltipGlobalStyles(props) {
|
|
|
98643
98643
|
}
|
|
98644
98644
|
function PopoverGlobalStyles(props) {
|
|
98645
98645
|
const { classes: classes2 } = props;
|
|
98646
|
-
const { theme } = useStyles$
|
|
98646
|
+
const { theme } = useStyles$z();
|
|
98647
98647
|
return jsx$1(ScopedGlobalStyles, { parentClassName: classes2.popover, styles: {
|
|
98648
98648
|
".rc-tooltip-inner": {
|
|
98649
98649
|
boxSizing: "border-box",
|
|
@@ -103327,7 +103327,7 @@ function NamedSetNodeStatic(props) {
|
|
|
103327
103327
|
const onClick = level === 0 && !expanded ? () => onCheckLevel(nodeKey, nextLevelToCheck) : () => onNodeView(path2);
|
|
103328
103328
|
const tooltipProps = disableTooltip ? { visible: false } : {};
|
|
103329
103329
|
const popoverMenuConfig = makeNodeViewMenuConfig(props);
|
|
103330
|
-
const { classes: classes2 } = useStyles$
|
|
103330
|
+
const { classes: classes2 } = useStyles$w();
|
|
103331
103331
|
return jsxs("span", { children: [jsx$1(HelpTooltip, { title: tooltipText, ...tooltipProps, children: jsx$1("button", { type: "button", onClick, onKeyPress: (e3) => callbackOnKeyPress(e3, "v", () => onNodeView(path2)), className: classes2.titleButton, children: title2 }) }), popoverMenuConfig.length > 0 ? jsx$1(PopoverMenu, { menuConfig: makeNodeViewMenuConfig(props), color: level > 0 && editable ? color2 || getDefaultColor(theme) : null, setColor: (c2) => onNodeSetColor(path2, c2), children: jsx$1("span", { children: jsx$1(SvgMenu, { className: classes2.nodeMenuIcon, "aria-label": "Open Node View Menu" }) }) }) : null, level > 0 && isChecking ? checkbox2 : null, level > 0 && jsx$1("span", { className: classes2.nodeSizeLabel, children: niceSize })] });
|
|
103332
103332
|
}
|
|
103333
103333
|
function NamedSetNodeEditing(props) {
|
|
@@ -103339,7 +103339,7 @@ function NamedSetNodeEditing(props) {
|
|
|
103339
103339
|
onNodeSetName(path2, currentTitle, true);
|
|
103340
103340
|
}
|
|
103341
103341
|
}
|
|
103342
|
-
const { classes: classes2 } = useStyles$
|
|
103342
|
+
const { classes: classes2 } = useStyles$w();
|
|
103343
103343
|
return jsxs("span", { className: classes2.titleButtonWithInput, children: [jsx$1("input", {
|
|
103344
103344
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
103345
103345
|
autoFocus: true,
|
|
@@ -103365,7 +103365,7 @@ function LevelsButtons(props) {
|
|
|
103365
103365
|
onCheckLevel(nodeKey, newLevel);
|
|
103366
103366
|
}
|
|
103367
103367
|
}
|
|
103368
|
-
const { classes: classes2 } = useStyles$
|
|
103368
|
+
const { classes: classes2 } = useStyles$w();
|
|
103369
103369
|
return jsx$1("div", { className: classes2.levelButtonsContainer, children: range$e(1, height2 + 1).map((i2) => {
|
|
103370
103370
|
const isChecked = isEqual$3(path2, checkedLevelPath) && i2 === checkedLevelIndex;
|
|
103371
103371
|
return jsx$1("div", { children: jsx$1(HelpTooltip, { title: getLevelTooltipText(i2), children: jsx$1("input", { className: clsx(classes2.levelRadioButton, { [classes2.levelRadioButtonChecked]: isChecked && !hasColorEncoding }), type: "checkbox", value: i2, checked: isChecked && hasColorEncoding, onChange: onCheck }) }) }, i2);
|
|
@@ -103449,7 +103449,7 @@ let TreeNode$1 = class TreeNode extends TreeNode$2 {
|
|
|
103449
103449
|
};
|
|
103450
103450
|
function PlusButton(props) {
|
|
103451
103451
|
const { datatype, onError, onImportTree, onCreateLevelZeroNode, importable, editable } = props;
|
|
103452
|
-
const { classes: classes2 } = useStyles$
|
|
103452
|
+
const { classes: classes2 } = useStyles$w();
|
|
103453
103453
|
const onImport = useCallback((importHandler, mimeType) => () => {
|
|
103454
103454
|
const uploadInputNode = document.createElement("input");
|
|
103455
103455
|
uploadInputNode.setAttribute("type", "file");
|
|
@@ -103566,7 +103566,7 @@ function SetsManager(props) {
|
|
|
103566
103566
|
}, onNodeCheckNewName, onNodeSetIsEditing: setIsEditingNodeName, onNodeRemove, onExportLevelZeroNodeJSON, onExportLevelZeroNodeTabular, onExportSetJSON, disableTooltip: isDragging, onDragStart: () => setIsDragging(true), onDragEnd: () => setIsDragging(false), children: renderTreeNodes(node2.children, readOnly, newPath) }, pathToKey(newPath));
|
|
103567
103567
|
});
|
|
103568
103568
|
}
|
|
103569
|
-
const { classes: classes2 } = useStyles$
|
|
103569
|
+
const { classes: classes2 } = useStyles$w();
|
|
103570
103570
|
return jsxs("div", { className: classes2.setsManager, children: [jsx$1(SetsManagerTreeGlobalStyles, { classes: classes2 }), jsxs("div", { className: classes2.setsManagerTree, children: [jsx$1(Tree$1, { draggable: false, checkable, checkedKeys: setSelectionKeys, expandedKeys: setExpansionKeys, autoExpandParent, onCheck: (checkedKeys, info2) => onCheckNode(info2.node.props.nodeKey, info2.checked), onExpand: (expandedKeys, info2) => onExpandNode(expandedKeys, info2.node.props.nodeKey, info2.expanded), children: renderTreeNodes(processedSets.tree, true, []) }), jsx$1(Tree$1, { draggable: true, checkable, checkedKeys: additionalSetSelectionKeys, expandedKeys: additionalSetExpansionKeys, autoExpandParent, onCheck: (checkedKeys, info2) => onCheckNode(info2.node.props.nodeKey, info2.checked), onExpand: (expandedKeys, info2) => onExpandNode(expandedKeys, info2.node.props.nodeKey, info2.expanded), onDrop: (info2) => {
|
|
103571
103571
|
const { eventKey: dropKey } = info2.node.props;
|
|
103572
103572
|
const { eventKey: dragKey } = info2.dragNode.props;
|
|
@@ -209531,22 +209531,22 @@ async function getDecoder(fileDirectory) {
|
|
|
209531
209531
|
const Decoder = await importFn();
|
|
209532
209532
|
return new Decoder(fileDirectory);
|
|
209533
209533
|
}
|
|
209534
|
-
addDecoder([void 0, 1], () => import("./raw-
|
|
209535
|
-
addDecoder(5, () => import("./lzw-
|
|
209534
|
+
addDecoder([void 0, 1], () => import("./raw-Y5j8FDrQ.js").then((m2) => m2.default));
|
|
209535
|
+
addDecoder(5, () => import("./lzw-B1XPe-af.js").then((m2) => m2.default));
|
|
209536
209536
|
addDecoder(6, () => {
|
|
209537
209537
|
throw new Error("old style JPEG compression is not supported.");
|
|
209538
209538
|
});
|
|
209539
|
-
addDecoder(7, () => import("./jpeg-
|
|
209540
|
-
addDecoder([8, 32946], () => import("./deflate-
|
|
209541
|
-
addDecoder(32773, () => import("./packbits-
|
|
209539
|
+
addDecoder(7, () => import("./jpeg-DOW9md97.js").then((m2) => m2.default));
|
|
209540
|
+
addDecoder([8, 32946], () => import("./deflate-BtdFXYzo.js").then((m2) => m2.default));
|
|
209541
|
+
addDecoder(32773, () => import("./packbits-DI5XXjyK.js").then((m2) => m2.default));
|
|
209542
209542
|
addDecoder(
|
|
209543
209543
|
34887,
|
|
209544
|
-
() => import("./lerc-
|
|
209544
|
+
() => import("./lerc-udUVD1VM.js").then(async (m2) => {
|
|
209545
209545
|
await m2.zstd.init();
|
|
209546
209546
|
return m2;
|
|
209547
209547
|
}).then((m2) => m2.default)
|
|
209548
209548
|
);
|
|
209549
|
-
addDecoder(50001, () => import("./webimage-
|
|
209549
|
+
addDecoder(50001, () => import("./webimage-C8U2Oy62.js").then((m2) => m2.default));
|
|
209550
209550
|
function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
|
|
209551
209551
|
return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
|
|
209552
209552
|
}
|
|
@@ -226320,7 +226320,7 @@ class ContourLayerWithText extends ContourLayer {
|
|
|
226320
226320
|
}
|
|
226321
226321
|
ContourLayerWithText.layerName = "ContourLayerWithText";
|
|
226322
226322
|
ContourLayerWithText.defaultProps = defaultProps;
|
|
226323
|
-
const useStyles$
|
|
226323
|
+
const useStyles$v = makeStyles()(() => ({
|
|
226324
226324
|
toolButton: {
|
|
226325
226325
|
display: "inline-flex",
|
|
226326
226326
|
"&:active": {
|
|
@@ -226382,12 +226382,12 @@ const useStyles$u = makeStyles()(() => ({
|
|
|
226382
226382
|
}));
|
|
226383
226383
|
function IconTool(props) {
|
|
226384
226384
|
const { alt, onClick, isActive: isActive2, children: children3 } = props;
|
|
226385
|
-
const { classes: classes2 } = useStyles$
|
|
226385
|
+
const { classes: classes2 } = useStyles$v();
|
|
226386
226386
|
return jsx$1("button", { className: clsx(classes2.toolIcon, { [classes2.toolActive]: isActive2 }), onClick, type: "button", title: alt, children: children3 });
|
|
226387
226387
|
}
|
|
226388
226388
|
function IconButton(props) {
|
|
226389
226389
|
const { alt, onClick, children: children3 } = props;
|
|
226390
|
-
const { classes: classes2 } = useStyles$
|
|
226390
|
+
const { classes: classes2 } = useStyles$v();
|
|
226391
226391
|
return jsx$1("button", { className: clsx(classes2.toolIcon, classes2.toolButton), onClick, type: "button", title: alt, children: children3 });
|
|
226392
226392
|
}
|
|
226393
226393
|
function ToolMenu(props) {
|
|
@@ -226395,7 +226395,7 @@ function ToolMenu(props) {
|
|
|
226395
226395
|
const lassoIconAltText = "Select lasso";
|
|
226396
226396
|
const { setActiveTool, activeTool, visibleTools = { pan: true, selectLasso: true, recenter: true }, recenterOnClick = () => {
|
|
226397
226397
|
} } = props;
|
|
226398
|
-
const { classes: classes2 } = useStyles$
|
|
226398
|
+
const { classes: classes2 } = useStyles$v();
|
|
226399
226399
|
const onRecenterButtonCLick = () => {
|
|
226400
226400
|
recenterOnClick();
|
|
226401
226401
|
};
|
|
@@ -227552,7 +227552,7 @@ function ScatterplotOptions(props) {
|
|
|
227552
227552
|
id: `feature-aggregation-strategy-${scatterplotOptionsId}`
|
|
227553
227553
|
}, children: FEATURE_AGGREGATION_STRATEGIES$2.map((opt) => jsx$1("option", { value: opt, children: capitalize$3(opt) }, opt)) }) })] }) : null] });
|
|
227554
227554
|
}
|
|
227555
|
-
const useStyles$
|
|
227555
|
+
const useStyles$u = makeStyles()((theme) => ({
|
|
227556
227556
|
tooltipAnchor: {
|
|
227557
227557
|
position: "relative",
|
|
227558
227558
|
width: "0px",
|
|
@@ -227583,7 +227583,7 @@ const useStyles$t = makeStyles()((theme) => ({
|
|
|
227583
227583
|
function Tooltip3(props) {
|
|
227584
227584
|
const { x: x2, y: y2, parentWidth, parentHeight, children: children3 } = props;
|
|
227585
227585
|
const ref2 = useRef();
|
|
227586
|
-
const { classes: classes2 } = useStyles$
|
|
227586
|
+
const { classes: classes2 } = useStyles$u();
|
|
227587
227587
|
const [placementX, setPlacementX] = useState("start");
|
|
227588
227588
|
const [placementY, setPlacementY] = useState("bottom");
|
|
227589
227589
|
const getTooltipContainer = useVitessceContainer(ref2);
|
|
@@ -227599,7 +227599,7 @@ function Tooltip3(props) {
|
|
|
227599
227599
|
}, [x2, y2, parentWidth, parentHeight]);
|
|
227600
227600
|
return jsx$1("div", { ref: ref2, className: classes2.tooltipAnchor, children: ref2 && ref2.current ? jsx$1(Popper, { open: true, anchorEl: ref2.current, container: getTooltipContainer, transition: true, placement: `${placementY}-${placementX}`, children: jsx$1(Paper, { elevation: 8, className: classes2.tooltipContent, children: children3 }) }) : null });
|
|
227601
227601
|
}
|
|
227602
|
-
const useStyles$
|
|
227602
|
+
const useStyles$t = makeStyles()((theme) => ({
|
|
227603
227603
|
cellEmphasisCrosshair: {
|
|
227604
227604
|
zIndex: 50,
|
|
227605
227605
|
position: "absolute",
|
|
@@ -227610,7 +227610,7 @@ const useStyles$s = makeStyles()((theme) => ({
|
|
|
227610
227610
|
}));
|
|
227611
227611
|
function Tooltip2D(props) {
|
|
227612
227612
|
const { parentUuid, sourceUuid, x: x2, y: y2, parentWidth, parentHeight, children: children3 } = props;
|
|
227613
|
-
const { classes: classes2 } = useStyles$
|
|
227613
|
+
const { classes: classes2 } = useStyles$t();
|
|
227614
227614
|
if (x2 < 0 || x2 > parentWidth || y2 < 0 || y2 > parentHeight) {
|
|
227615
227615
|
return null;
|
|
227616
227616
|
}
|
|
@@ -231522,7 +231522,7 @@ function getXlinkHref(cmap) {
|
|
|
231522
231522
|
const xlinkHref = ramp(color2.copy().domain(quantize$3(interpolate$1$1(0, 1), n3))).toDataURL();
|
|
231523
231523
|
return xlinkHref;
|
|
231524
231524
|
}
|
|
231525
|
-
const useStyles$
|
|
231525
|
+
const useStyles$s = makeStyles()(() => ({
|
|
231526
231526
|
legend: {
|
|
231527
231527
|
position: "relative",
|
|
231528
231528
|
// Needed for absolute positioning of slider overlay
|
|
@@ -231719,7 +231719,7 @@ function Legend(props) {
|
|
|
231719
231719
|
contourThresholds
|
|
231720
231720
|
} = props;
|
|
231721
231721
|
const svgRef = useRef(null);
|
|
231722
|
-
const { classes: classes2 } = useStyles$
|
|
231722
|
+
const { classes: classes2 } = useStyles$s();
|
|
231723
231723
|
const [localRange, setLocalRange] = useState(featureValueColormapRange);
|
|
231724
231724
|
useEffect(() => {
|
|
231725
231725
|
setLocalRange(featureValueColormapRange);
|
|
@@ -232053,7 +232053,7 @@ function Legend(props) {
|
|
|
232053
232053
|
}
|
|
232054
232054
|
} })] })] });
|
|
232055
232055
|
}
|
|
232056
|
-
const useStyles$
|
|
232056
|
+
const useStyles$r = makeStyles()(() => ({
|
|
232057
232057
|
multiLegend: {
|
|
232058
232058
|
position: "absolute",
|
|
232059
232059
|
top: "0px",
|
|
@@ -232080,7 +232080,7 @@ function MultiLegend(props) {
|
|
|
232080
232080
|
pointLayerCoordination,
|
|
232081
232081
|
pointMultiIndicesData
|
|
232082
232082
|
} = props;
|
|
232083
|
-
const { classes: classes2 } = useStyles$
|
|
232083
|
+
const { classes: classes2 } = useStyles$r();
|
|
232084
232084
|
const reversedSegmentationLayerScopes = useMemo$1(() => [...segmentationLayerScopes || []].reverse(), [segmentationLayerScopes]);
|
|
232085
232085
|
const reversedSpotLayerScopes = useMemo$1(() => [...spotLayerScopes || []].reverse(), [spotLayerScopes]);
|
|
232086
232086
|
const reversedPointLayerScopes = useMemo$1(() => [...pointLayerScopes || []].reverse(), [pointLayerScopes]);
|
|
@@ -232173,7 +232173,7 @@ function MultiLegend(props) {
|
|
|
232173
232173
|
}) : null;
|
|
232174
232174
|
}) : null] });
|
|
232175
232175
|
}
|
|
232176
|
-
const useStyles$
|
|
232176
|
+
const useStyles$q = makeStyles()(() => ({
|
|
232177
232177
|
channelNamesLegendContainer: {
|
|
232178
232178
|
position: "absolute",
|
|
232179
232179
|
bottom: "0px",
|
|
@@ -232196,7 +232196,7 @@ const useStyles$p = makeStyles()(() => ({
|
|
|
232196
232196
|
}));
|
|
232197
232197
|
function ChannelNamesLegend(props) {
|
|
232198
232198
|
const { images, imageLayerScopes, imageLayerCoordination, imageChannelScopesByLayer, imageChannelCoordination } = props;
|
|
232199
|
-
const { classes: classes2 } = useStyles$
|
|
232199
|
+
const { classes: classes2 } = useStyles$q();
|
|
232200
232200
|
const reversedImageLayerScopes = useMemo$1(() => [...imageLayerScopes || []].reverse(), [imageLayerScopes]);
|
|
232201
232201
|
return jsx$1("div", { className: classes2.channelNamesLegendContainer, children: imageLayerScopes ? reversedImageLayerScopes.map((layerScope) => {
|
|
232202
232202
|
const layerCoordination = imageLayerCoordination[0][layerScope];
|
|
@@ -252002,7 +252002,7 @@ const ToggleFixedAxisButton = ({ setSpatialAxisFixed, spatialAxisFixed, use3d })
|
|
|
252002
252002
|
id: `spatial-camera-axis-${toggleAxisId}`
|
|
252003
252003
|
} } }) })] });
|
|
252004
252004
|
};
|
|
252005
|
-
function SpatialOptions(props) {
|
|
252005
|
+
function SpatialOptions$1(props) {
|
|
252006
252006
|
const { observationsLabel, cellColorEncoding, setCellColorEncoding, setSpatialAxisFixed, spatialAxisFixed, use3d, tooltipsVisible, setTooltipsVisible, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, canShowExpressionOptions, canShowColorEncodingOption, canShow3DOptions, featureAggregationStrategy, setFeatureAggregationStrategy } = props;
|
|
252007
252007
|
const spatialOptionsId = $bdb11010cef70236$export$f680877a34711e37();
|
|
252008
252008
|
function handleGeneExpressionColormapChange(event2) {
|
|
@@ -252316,7 +252316,7 @@ function SpatialSubscriber$1(props) {
|
|
|
252316
252316
|
const canShow3DOptions = canLoad3DLayers && !(disable3d?.length === imageLayerLoaders.length) && !globalDisable3d;
|
|
252317
252317
|
const options = useMemo$1(() => {
|
|
252318
252318
|
if (canShow3DOptions || hasExpressionData) {
|
|
252319
|
-
return jsx$1(SpatialOptions, { observationsLabel, cellColorEncoding, setCellColorEncoding, setSpatialAxisFixed, spatialAxisFixed, use3d, tooltipsVisible, setTooltipsVisible, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, canShowExpressionOptions: hasExpressionData, canShowColorEncodingOption: (hasLocationsData || hasSegmentationsData) && hasExpressionData, canShow3DOptions, featureSelection: geneSelection, featureAggregationStrategy, setFeatureAggregationStrategy });
|
|
252319
|
+
return jsx$1(SpatialOptions$1, { observationsLabel, cellColorEncoding, setCellColorEncoding, setSpatialAxisFixed, spatialAxisFixed, use3d, tooltipsVisible, setTooltipsVisible, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, canShowExpressionOptions: hasExpressionData, canShowColorEncodingOption: (hasLocationsData || hasSegmentationsData) && hasExpressionData, canShow3DOptions, featureSelection: geneSelection, featureAggregationStrategy, setFeatureAggregationStrategy });
|
|
252320
252320
|
}
|
|
252321
252321
|
return null;
|
|
252322
252322
|
}, [
|
|
@@ -252405,6 +252405,12 @@ function SpatialSubscriber$1(props) {
|
|
|
252405
252405
|
featureAggregationStrategy: featureAggregationStrategyToUse
|
|
252406
252406
|
})] });
|
|
252407
252407
|
}
|
|
252408
|
+
function getVolumeModelMatrix(data2, modelMatrix2) {
|
|
252409
|
+
const source2 = Array.isArray(data2) ? data2[0] : data2;
|
|
252410
|
+
const vivPhysicalSizeScalingMatrix = getPhysicalSizeScalingMatrix(source2);
|
|
252411
|
+
const base2 = Array.isArray(modelMatrix2) && modelMatrix2.length === 16 ? new Matrix4(modelMatrix2) : new Matrix4().identity();
|
|
252412
|
+
return base2.multiplyRight(vivPhysicalSizeScalingMatrix.invert());
|
|
252413
|
+
}
|
|
252408
252414
|
function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, obsSpots, obsSegmentations, obsSegmentationsLocations, segmentationChannelScopesByLayer, images, is3dMode: use3d, isReady }) {
|
|
252409
252415
|
let globalXMin = null;
|
|
252410
252416
|
let globalXMax = null;
|
|
@@ -252418,7 +252424,8 @@ function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, o
|
|
|
252418
252424
|
const modelMatrix2 = layerData?.image?.instance.getModelMatrix();
|
|
252419
252425
|
if (imageLayerLoader) {
|
|
252420
252426
|
const viewSize = { height: height2, width: width2 };
|
|
252421
|
-
const
|
|
252427
|
+
const viewStateModelMatrix = use3d ? getVolumeModelMatrix(imageLayerLoader, modelMatrix2) : new Matrix4(modelMatrix2);
|
|
252428
|
+
const { target: target2, zoom: newViewStateZoom } = getDefaultInitialViewState(imageLayerLoader, viewSize, zoomBackoff, use3d, viewStateModelMatrix);
|
|
252422
252429
|
const maxExtent = Math.max(width2 / 2 ** newViewStateZoom, height2 / 2 ** newViewStateZoom);
|
|
252423
252430
|
const xMin = target2[0] - maxExtent / 2;
|
|
252424
252431
|
const xMax = target2[0] + maxExtent / 2;
|
|
@@ -252523,6 +252530,9 @@ function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, o
|
|
|
252523
252530
|
initialTargetZ
|
|
252524
252531
|
};
|
|
252525
252532
|
}
|
|
252533
|
+
function isLayerVisible(spatialLayerVisible) {
|
|
252534
|
+
return spatialLayerVisible !== false;
|
|
252535
|
+
}
|
|
252526
252536
|
function getLayerLoaderTuple(data2, use3d) {
|
|
252527
252537
|
const loader2 = Array.isArray(data2) && data2.length > 1 || !Array.isArray(data2) ? data2 : data2[0];
|
|
252528
252538
|
if (use3d) {
|
|
@@ -253265,6 +253275,9 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
|
|
|
253265
253275
|
const visible = layerCoordination[CoordinationType$1.SPATIAL_LAYER_VISIBLE];
|
|
253266
253276
|
const transparentColor = layerCoordination[CoordinationType$1.SPATIAL_LAYER_TRANSPARENT_COLOR];
|
|
253267
253277
|
const useTransparentColor = Array.isArray(transparentColor) && transparentColor.length === 3;
|
|
253278
|
+
if (is3dMode && !isLayerVisible(visible)) {
|
|
253279
|
+
return null;
|
|
253280
|
+
}
|
|
253268
253281
|
const extensions = getVivLayerExtensions(is3dMode, colormap, renderingMode);
|
|
253269
253282
|
const rgbInterleavedProps = {};
|
|
253270
253283
|
if (imageWrapperInstance.isInterleaved()) {
|
|
@@ -254054,15 +254067,32 @@ class ErrorBoundary extends React__default.Component {
|
|
|
254054
254067
|
}
|
|
254055
254068
|
}
|
|
254056
254069
|
const LazySpatialThree = React__default.lazy(async () => {
|
|
254057
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
254070
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-JE2SuNrQ.js").then((n3) => n3.a);
|
|
254058
254071
|
return { default: SpatialWrapper2 };
|
|
254059
254072
|
});
|
|
254060
254073
|
const SpatialThreeAdapter = React__default.forwardRef((props, ref2) => jsx$1("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsx$1(ErrorBoundary, { fallback: jsx$1("div", { children: "3D spatial view is not available in this environment." }), children: jsx$1(Suspense, { fallback: jsx$1("div", { children: "Loading..." }), children: jsx$1(LazySpatialThree, { ...props }) }) }) }));
|
|
254061
254074
|
const LazySpatialAccelerated = React__default.lazy(async () => {
|
|
254062
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
254075
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-CMYlENbA.js");
|
|
254063
254076
|
return { default: SpatialWrapper2 };
|
|
254064
254077
|
});
|
|
254065
254078
|
const SpatialAcceleratedAdapter = React__default.forwardRef((props, ref2) => jsx$1("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsx$1(ErrorBoundary, { fallback: jsx$1("div", { children: "3D spatial view is not available in this environment." }), children: jsx$1(Suspense, { fallback: jsx$1("div", { children: "Loading..." }), children: jsx$1(LazySpatialAccelerated, { ...props }) }) }) }));
|
|
254079
|
+
const useStyles$p = makeStyles()(() => ({
|
|
254080
|
+
spatialBetaCameraLabel: {
|
|
254081
|
+
padding: "0px 0px 0px 16px"
|
|
254082
|
+
},
|
|
254083
|
+
spatialBetaToggleBox: {
|
|
254084
|
+
padding: "0px"
|
|
254085
|
+
}
|
|
254086
|
+
}));
|
|
254087
|
+
function SpatialOptions(props) {
|
|
254088
|
+
const { spatialAxisFixed, setSpatialAxisFixed, use3d } = props;
|
|
254089
|
+
const toggleAxisId = $bdb11010cef70236$export$f680877a34711e37();
|
|
254090
|
+
const { classes: classes2 } = useStyles$p();
|
|
254091
|
+
return jsx$1(OptionsContainer, { children: jsxs(TableRow, { children: [jsx$1(TableCell, { className: classes2.spatialBetaCameraLabel, variant: "head", scope: "row", children: jsx$1("label", { htmlFor: `spatial-camera-axis-${toggleAxisId}`, children: "Fix Camera Axis" }) }), jsx$1(TableCell, { className: classes2.spatialBetaToggleBox, variant: "body", children: jsx$1(Checkbox$1, { onClick: () => setSpatialAxisFixed(!spatialAxisFixed), disabled: !use3d, checked: Boolean(spatialAxisFixed), slotProps: { input: {
|
|
254092
|
+
"aria-label": "Fix or not fix spatial camera axis",
|
|
254093
|
+
id: `spatial-camera-axis-${toggleAxisId}`
|
|
254094
|
+
} } }) })] }) });
|
|
254095
|
+
}
|
|
254066
254096
|
const DEFAULT_FEATURE_AGGREGATION_STRATEGY$1 = "first";
|
|
254067
254097
|
function useAggregatedNormalizedExpressionDataForLayers({ multiExpressionData: spotMultiExpressionData, layerScopes: spotLayerScopes, layerCoordination: spotLayerCoordination }) {
|
|
254068
254098
|
const [spotMultiExpressionNormDataAggregated, spotMultiExpressionExtentsAggregated] = useMemo$1(() => {
|
|
@@ -254276,6 +254306,8 @@ function SpatialSubscriber(props) {
|
|
|
254276
254306
|
setSpatialRotationY: setRotationY,
|
|
254277
254307
|
setSpatialRotationZ: setRotationZ,
|
|
254278
254308
|
setSpatialRotationOrbit: setRotationOrbit,
|
|
254309
|
+
setSpatialOrbitAxis: setOrbitAxis,
|
|
254310
|
+
setSpatialAxisFixed,
|
|
254279
254311
|
// TODO: get obsSets per-layer or per-channel
|
|
254280
254312
|
setAdditionalObsSets,
|
|
254281
254313
|
setObsSetColor,
|
|
@@ -254531,7 +254563,23 @@ function SpatialSubscriber(props) {
|
|
|
254531
254563
|
initialTargetZ,
|
|
254532
254564
|
initialZoom
|
|
254533
254565
|
]);
|
|
254534
|
-
const
|
|
254566
|
+
const prevIs3dMode = useRef(is3dMode);
|
|
254567
|
+
useEffect(() => {
|
|
254568
|
+
if (prevIs3dMode.current === is3dMode) {
|
|
254569
|
+
return;
|
|
254570
|
+
}
|
|
254571
|
+
if (typeof defaultTargetX !== "number" || typeof defaultTargetY !== "number") {
|
|
254572
|
+
return;
|
|
254573
|
+
}
|
|
254574
|
+
prevIs3dMode.current = is3dMode;
|
|
254575
|
+
setTargetX(defaultTargetX);
|
|
254576
|
+
setTargetY(defaultTargetY);
|
|
254577
|
+
setTargetZ(defaultTargetZ);
|
|
254578
|
+
setZoom(defaultZoom);
|
|
254579
|
+
setRotationX(is3dMode ? 0 : null);
|
|
254580
|
+
setRotationOrbit(is3dMode ? 0 : null);
|
|
254581
|
+
}, [is3dMode, defaultTargetX, defaultTargetY, defaultTargetZ, defaultZoom]);
|
|
254582
|
+
const setViewState = ({ zoom: newZoom, target: target2, rotationX: newRotationX, rotationOrbit: newRotationOrbit, orbitAxis: newOrbitAxis }) => {
|
|
254535
254583
|
setZoom(newZoom);
|
|
254536
254584
|
setTargetX(target2[0]);
|
|
254537
254585
|
setTargetY(target2[1]);
|
|
@@ -254541,6 +254589,9 @@ function SpatialSubscriber(props) {
|
|
|
254541
254589
|
}
|
|
254542
254590
|
setRotationX(newRotationX);
|
|
254543
254591
|
setRotationOrbit(newRotationOrbit);
|
|
254592
|
+
if (newOrbitAxis !== void 0) {
|
|
254593
|
+
setOrbitAxis(newOrbitAxis);
|
|
254594
|
+
}
|
|
254544
254595
|
}
|
|
254545
254596
|
};
|
|
254546
254597
|
const subtitle = useMemo$1(() => {
|
|
@@ -254681,7 +254732,7 @@ function SpatialSubscriber(props) {
|
|
|
254681
254732
|
}
|
|
254682
254733
|
}
|
|
254683
254734
|
};
|
|
254684
|
-
return jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, helpText, children: [shouldUseThree ? acceleratedFor3d ? jsx$1(SpatialAcceleratedAdapter, { ref: threeRef, uuid: uuid2, width: width2, height: height2, theme, hideTools: !isSelectable, rotation: [rotationX, rotationY, rotationZ], setRotationX, setRotationY, setRotationZ, targetT, targetZ, viewState: isValidViewState ? {
|
|
254735
|
+
return jsxs(TitleInfo, { title: title2, info: subtitle, isSpatial: true, urls: urls2, theme, closeButtonVisible, downloadButtonVisible, removeGridComponent, isReady, errors, helpText, options: jsx$1(SpatialOptions, { spatialAxisFixed, setSpatialAxisFixed, use3d: is3dMode }), children: [shouldUseThree ? acceleratedFor3d ? jsx$1(SpatialAcceleratedAdapter, { ref: threeRef, uuid: uuid2, width: width2, height: height2, theme, hideTools: !isSelectable, rotation: [rotationX, rotationY, rotationZ], setRotationX, setRotationY, setRotationZ, targetT, targetZ, viewState: isValidViewState ? {
|
|
254685
254736
|
zoom: zoom2,
|
|
254686
254737
|
target: [targetX2, targetY2, targetZ],
|
|
254687
254738
|
rotationX,
|
|
@@ -263533,7 +263584,12 @@ const useEllipsisMenuStyles = makeStyles()(() => ({
|
|
|
263533
263584
|
padding: 0,
|
|
263534
263585
|
marginBottom: "0 !important",
|
|
263535
263586
|
marginLeft: "4px",
|
|
263536
|
-
marginTop: "12px !important"
|
|
263587
|
+
marginTop: "12px !important",
|
|
263588
|
+
// Truncate rather than widening the row's label cell, which would push the
|
|
263589
|
+
// options menu and layer type icon onto a second line in narrow containers.
|
|
263590
|
+
overflow: "hidden",
|
|
263591
|
+
textOverflow: "ellipsis",
|
|
263592
|
+
whiteSpace: "nowrap"
|
|
263537
263593
|
},
|
|
263538
263594
|
imageLayerOpacitySlider: {
|
|
263539
263595
|
marginTop: "7px"
|
|
@@ -263546,6 +263602,31 @@ const useEllipsisMenuStyles = makeStyles()(() => ({
|
|
|
263546
263602
|
padding: "4px"
|
|
263547
263603
|
}
|
|
263548
263604
|
}));
|
|
263605
|
+
const CHANNEL_ROW_WRAP_WIDTH = 450;
|
|
263606
|
+
const wrapQuery = `@container (max-width: ${CHANNEL_ROW_WRAP_WIDTH}px)`;
|
|
263607
|
+
const channelRowContainerSx = { containerType: "inline-size" };
|
|
263608
|
+
const channelSliderCellSx = {
|
|
263609
|
+
[wrapQuery]: {
|
|
263610
|
+
width: "100%",
|
|
263611
|
+
order: 1,
|
|
263612
|
+
paddingLeft: "12px",
|
|
263613
|
+
paddingRight: "12px"
|
|
263614
|
+
}
|
|
263615
|
+
};
|
|
263616
|
+
const channelSelectorCellSx = {
|
|
263617
|
+
[wrapQuery]: {
|
|
263618
|
+
flexBasis: 0,
|
|
263619
|
+
flexGrow: 1
|
|
263620
|
+
}
|
|
263621
|
+
};
|
|
263622
|
+
const channelControlCellSx = {
|
|
263623
|
+
[wrapQuery]: {
|
|
263624
|
+
width: "auto",
|
|
263625
|
+
flexGrow: 0,
|
|
263626
|
+
flexShrink: 0
|
|
263627
|
+
}
|
|
263628
|
+
};
|
|
263629
|
+
const channelSpacerCellSx = { flexShrink: 0, minWidth: "44px" };
|
|
263549
263630
|
const useStyles$i = makeStyles()(() => ({
|
|
263550
263631
|
colorPickerPaper: {
|
|
263551
263632
|
overflow: "hidden",
|
|
@@ -263781,7 +263862,7 @@ const useStyles$f = makeStyles()(() => ({
|
|
|
263781
263862
|
fill: "currentColor",
|
|
263782
263863
|
fontSize: "14px",
|
|
263783
263864
|
width: "50%",
|
|
263784
|
-
maxWidth: "
|
|
263865
|
+
maxWidth: "20px"
|
|
263785
263866
|
}
|
|
263786
263867
|
}));
|
|
263787
263868
|
function PointLayerEllipsisMenu(props) {
|
|
@@ -263900,15 +263981,21 @@ function PointLayerController(props) {
|
|
|
263900
263981
|
setFeatureColor(nextFeatureColor);
|
|
263901
263982
|
}
|
|
263902
263983
|
}, [featureSelection, obsColorEncoding, featureIndex, featureColor]);
|
|
263903
|
-
return jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsx$1(Grid$1, { size: 6, children: jsx$1(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsx$1(Grid$1, { size: 2, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode, featureValueColormap, setFeatureValueColormap }) }), jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsx$1(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsx$1(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsx$1(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), layerPerFeatureForPoints && hasSelectedFeatures ? jsxs(Fragment, { children: [featureSelection.map((featureName) => jsx$1(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsx$1(VisibilityOffIcon, {}) : jsx$1(VisibilityIcon, {}) }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsx$1(Grid$1, { size: 6, children: jsx$1(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsx$1(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
|
|
263984
|
+
return jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", sx: channelRowContainerSx, children: [jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsx$1(Grid$1, { size: 6, sx: channelSelectorCellSx, children: jsx$1(Typography, { className: menuClasses.imageLayerName, title: label2, children: label2 }) }), jsx$1(Grid$1, { size: 2, sx: channelSliderCellSx, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode, featureValueColormap, setFeatureValueColormap }) }), jsxs(Grid$1, { size: 1, container: true, direction: "row", sx: channelControlCellSx, children: [jsx$1(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsx$1(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsx$1(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), layerPerFeatureForPoints && hasSelectedFeatures ? jsxs(Fragment, { children: [featureSelection.map((featureName) => jsx$1(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsx$1(VisibilityOffIcon, {}) : jsx$1(VisibilityIcon, {}) }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsx$1(Grid$1, { size: 6, children: jsx$1(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsx$1(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
|
|
263904
263985
|
}
|
|
263905
263986
|
const useStyles$e = makeStyles()(() => ({
|
|
263987
|
+
// Cap the channel name's width; imageLayerName ellipsizes the overflow.
|
|
263988
|
+
channelName: {
|
|
263989
|
+
overflow: "hidden",
|
|
263990
|
+
textOverflow: "ellipsis",
|
|
263991
|
+
whiteSpace: "nowrap"
|
|
263992
|
+
},
|
|
263906
263993
|
layerTypeSegmentationIcon: {
|
|
263907
263994
|
height: "100%",
|
|
263908
263995
|
marginLeft: "1px",
|
|
263909
263996
|
fill: "currentColor",
|
|
263910
263997
|
fontSize: "24px",
|
|
263911
|
-
width: "
|
|
263998
|
+
width: "24px",
|
|
263912
263999
|
maxWidth: "24px"
|
|
263913
264000
|
}
|
|
263914
264001
|
}));
|
|
@@ -263942,7 +264029,7 @@ function SegmentationChannelController(props) {
|
|
|
263942
264029
|
setVisible(nextVisible);
|
|
263943
264030
|
}, [visible, setVisible]);
|
|
263944
264031
|
const handleOpacityChange = useCallback((e3, v) => setOpacity2(v), [setOpacity2]);
|
|
263945
|
-
return jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle channel visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsx$1(Grid$1, { size: 6, children: jsx$1(Typography, { className: menuClasses.imageLayerName, children: capitalize$3(label2) }) }), jsx$1(Grid$1, { size: 2, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(SegmentationChannelEllipsisMenu, { obsType, featureType, featureValueType, strokeWidth, setStrokeWidth, filled, setFilled, featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormap, setFeatureValueColormap, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(SvgVector, { className: classes2.layerTypeSegmentationIcon }) })] }) }) });
|
|
264032
|
+
return jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", sx: channelRowContainerSx, children: [jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle channel visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsx$1(Grid$1, { size: 6, sx: channelSelectorCellSx, children: jsx$1(Typography, { className: clsx(menuClasses.imageLayerName, classes2.channelName), title: capitalize$3(label2), children: capitalize$3(label2) }) }), jsx$1(Grid$1, { size: 2, sx: channelSliderCellSx, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(SegmentationChannelEllipsisMenu, { obsType, featureType, featureValueType, strokeWidth, setStrokeWidth, filled, setFilled, featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormap, setFeatureValueColormap, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(SvgVector, { className: classes2.layerTypeSegmentationIcon }) })] }) }) });
|
|
263946
264033
|
}
|
|
263947
264034
|
function SegmentationLayerController(props) {
|
|
263948
264035
|
const { theme, layerScope, layerCoordination, setLayerCoordination, channelScopes, channelCoordination, setChannelCoordination } = props;
|
|
@@ -265334,7 +265421,7 @@ function ImageChannelController(props) {
|
|
|
265334
265421
|
setWindow2(minMaxDomain);
|
|
265335
265422
|
}
|
|
265336
265423
|
}
|
|
265337
|
-
return jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelVisibilityCheckbox, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, colormapOn }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelColorPickerMenu, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, isStaticColor: !colormapOn, palette: VIEWER_PALETTE }) }), jsx$1(Grid$1, { size: 6, children: jsx$1(ChannelSelectionDropdown, { featureIndex, targetC, setTargetC, setWindow: setWindow2, disabled: isLoading, channelsSortOrder }) }), jsx$1(Grid$1, { size: 3, children: jsx$1(ChannelSlider, { image: image2, targetT, targetZ, targetC, window: window2, setWindow: setWindow2, disabled, color: color2, theme, colormapOn, showValueExtent, minMaxDomain }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ChannelOptions, { onRemove: onRemove2, showValueExtent, setShowValueExtent, onResetWindowUsingIQR: handleResetWindowUsingIQR, numResolutions, spatialMaxResolution, setSpatialMaxResolution }) })] });
|
|
265424
|
+
return jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", sx: channelRowContainerSx, children: [jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ChannelVisibilityCheckbox, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, colormapOn }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ChannelColorPickerMenu, { color: color2, setColor: setColor2, visible, setVisible, disabled: isLoading, theme, isStaticColor: !colormapOn, palette: VIEWER_PALETTE }) }), jsx$1(Grid$1, { size: 6, sx: channelSelectorCellSx, children: jsx$1(ChannelSelectionDropdown, { featureIndex, targetC, setTargetC, setWindow: setWindow2, disabled: isLoading, channelsSortOrder }) }), jsx$1(Grid$1, { size: 3, sx: channelSliderCellSx, children: jsx$1(ChannelSlider, { image: image2, targetT, targetZ, targetC, window: window2, setWindow: setWindow2, disabled, color: color2, theme, colormapOn, showValueExtent, minMaxDomain }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ChannelOptions, { onRemove: onRemove2, showValueExtent, setShowValueExtent, onResetWindowUsingIQR: handleResetWindowUsingIQR, numResolutions, spatialMaxResolution, setSpatialMaxResolution }) })] });
|
|
265338
265425
|
}
|
|
265339
265426
|
function DimensionSlider(props) {
|
|
265340
265427
|
const { boundingSlice, sliceValue, setSliceValue, label: label2 } = props;
|
|
@@ -265535,7 +265622,7 @@ function ImageLayerController(props) {
|
|
|
265535
265622
|
const { classes: menuClasses } = useEllipsisMenuStyles();
|
|
265536
265623
|
const { classes: controllerSectionClasses } = useControllerSectionStyles();
|
|
265537
265624
|
const isMultiChannel = photometricInterpretation !== "RGB";
|
|
265538
|
-
return jsx$1(Grid$1, { className: controllerSectionClasses.layerControllerGrid, children: jsxs(Paper, { elevation: 4, className: controllerSectionClasses.layerControllerRoot, children: [jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(Button, { className: menuClasses.imageLayerVisibleButton, onClick: handleVisibleChange, "aria-label": "Toggle layer visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1 }), jsx$1(Grid$1, { size: 6, children: jsx$1(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsx$1(Grid$1, { size: 2, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(ImageLayerEllipsisMenu, { colormap, setColormap, photometricInterpretation, setPhotometricInterpretation, spatialTargetResolution, setSpatialTargetResolution, spatialLodFactor, setSpatialLodFactor, volumetricRenderingAlgorithm, setVolumetricRenderingAlgorithm, spatialLayerTransparentColor, setSpatialLayerTransparentColor, spatialRenderingMode, image: image2, channelScopes, tooltipsVisible, setTooltipsVisible, channelLabelsVisible, setChannelLabelsVisible, channelLabelsOrientation, setChannelLabelsOrientation, channelLabelSize, setChannelLabelSize, channelsSortOrder, setChannelsSortOrder }) }), jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsx$1(ImageIcon, { className: classes2.layerTypeImageIcon }), isMultiChannel ? jsx$1(Button, { onClick: handleOpenChange, className: classes2.channelExpansionButton, "aria-label": "Expand or collapse channel controls", children: open2 ? jsx$1(ExpandLess, {}) : jsx$1(ExpandMoreIcon, {}) }) : null] })] }), isMultiChannel && open2 ? jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [channelScopes.map((cScope) => {
|
|
265625
|
+
return jsx$1(Grid$1, { className: controllerSectionClasses.layerControllerGrid, children: jsxs(Paper, { elevation: 4, className: controllerSectionClasses.layerControllerRoot, children: [jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", sx: channelRowContainerSx, children: [jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(Button, { className: menuClasses.imageLayerVisibleButton, onClick: handleVisibleChange, "aria-label": "Toggle layer visibility", children: jsx$1(Visibility, {}) }) }), jsx$1(Grid$1, { size: 1, sx: channelSpacerCellSx }), jsx$1(Grid$1, { size: 6, sx: channelSelectorCellSx, children: jsx$1(Typography, { className: menuClasses.imageLayerName, title: label2, children: label2 }) }), jsx$1(Grid$1, { size: 2, sx: channelSliderCellSx, children: jsx$1(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(ImageLayerEllipsisMenu, { colormap, setColormap, photometricInterpretation, setPhotometricInterpretation, spatialTargetResolution, setSpatialTargetResolution, spatialLodFactor, setSpatialLodFactor, volumetricRenderingAlgorithm, setVolumetricRenderingAlgorithm, spatialLayerTransparentColor, setSpatialLayerTransparentColor, spatialRenderingMode, image: image2, channelScopes, tooltipsVisible, setTooltipsVisible, channelLabelsVisible, setChannelLabelsVisible, channelLabelsOrientation, setChannelLabelsOrientation, channelLabelSize, setChannelLabelSize, channelsSortOrder, setChannelsSortOrder }) }), jsxs(Grid$1, { size: 1, container: true, direction: "row", sx: channelControlCellSx, children: [jsx$1(ImageIcon, { className: classes2.layerTypeImageIcon }), isMultiChannel ? jsx$1(Button, { onClick: handleOpenChange, className: classes2.channelExpansionButton, "aria-label": "Expand or collapse channel controls", children: open2 ? jsx$1(ExpandLess, {}) : jsx$1(ExpandMoreIcon, {}) }) : null] })] }), isMultiChannel && open2 ? jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [channelScopes.map((cScope) => {
|
|
265539
265626
|
const { spatialTargetC, spatialChannelVisible, spatialChannelOpacity, spatialChannelColor, spatialChannelWindow, spatialMaxResolution } = channelCoordination[cScope];
|
|
265540
265627
|
const { setSpatialTargetC, setSpatialChannelVisible, setSpatialChannelOpacity, setSpatialChannelColor, setSpatialChannelWindow, setSpatialMaxResolution } = setChannelCoordination[cScope];
|
|
265541
265628
|
const channelIndex = image2?.getChannelIndex(spatialTargetC);
|
|
@@ -265565,7 +265652,7 @@ const useStyles$8 = makeStyles()((theme) => ({
|
|
|
265565
265652
|
}
|
|
265566
265653
|
}));
|
|
265567
265654
|
function GlobalDimensionSlider(props) {
|
|
265568
|
-
const { label: label2, targetValue, setTargetValue, min: min2 = 0, max: max2 = 0, spatialRenderingMode = null, setSpatialRenderingMode = null } = props;
|
|
265655
|
+
const { label: label2, targetValue, setTargetValue, min: min2 = 0, max: max2 = 0, spatialRenderingMode = null, setSpatialRenderingMode = null, enable3d = true } = props;
|
|
265569
265656
|
const { classes: lcClasses } = useControllerSectionStyles();
|
|
265570
265657
|
const { classes: classes2 } = useStyles$8();
|
|
265571
265658
|
const isForZ = spatialRenderingMode !== null;
|
|
@@ -265576,7 +265663,7 @@ function GlobalDimensionSlider(props) {
|
|
|
265576
265663
|
setTargetValue(Math.floor(targetValue));
|
|
265577
265664
|
}
|
|
265578
265665
|
}
|
|
265579
|
-
return jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsx$1(Grid$1, { size: 1, children: jsx$1(SvgDimensions, { className: classes2.dimensionsIcon }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(Typography, { className: classes2.dimensionLabel, children: label2 }) }), jsx$1(Grid$1, { size: 8, children: !is3dMode ? jsx$1(Slider, { value: targetValue, min: min2, max: max2, step: 1, onChange: (e3, v) => setTargetValue(v), className: classes2.dimensionSlider, valueLabelDisplay: "auto", orientation: "horizontal", disabled: spatialRenderingMode === "3D", "aria-label": `${label2}-slice slider` }) : null }), jsx$1(Grid$1, { size: 2, children: isForZ ? jsx$1(FormGroup, { row: true, className: classes2.switchFormGroup, children: jsx$1(FormControlLabel$1, { control: jsx$1(Switch, { color: "primary", checked: spatialRenderingMode === "3D", onChange: handleRenderingModeChange, name: "is3dMode" }), label: "3D" }) }) : null })] }) }) });
|
|
265666
|
+
return jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", sx: channelRowContainerSx, children: [jsx$1(Grid$1, { size: 1, sx: channelControlCellSx, children: jsx$1(SvgDimensions, { className: classes2.dimensionsIcon }) }), jsx$1(Grid$1, { size: 1, sx: channelSelectorCellSx, children: jsx$1(Typography, { className: classes2.dimensionLabel, children: label2 }) }), jsx$1(Grid$1, { size: 8, sx: channelSliderCellSx, children: !is3dMode ? jsx$1(Slider, { value: targetValue, min: min2, max: max2, step: 1, onChange: (e3, v) => setTargetValue(v), className: classes2.dimensionSlider, valueLabelDisplay: "auto", orientation: "horizontal", disabled: spatialRenderingMode === "3D", "aria-label": `${label2}-slice slider` }) : null }), jsx$1(Grid$1, { size: 2, sx: channelControlCellSx, children: isForZ && enable3d ? jsx$1(FormGroup, { row: true, className: classes2.switchFormGroup, children: jsx$1(FormControlLabel$1, { control: jsx$1(Switch, { color: "primary", checked: spatialRenderingMode === "3D", onChange: handleRenderingModeChange, name: "is3dMode" }), label: "3D" }) }) : null })] }) }) });
|
|
265580
265667
|
}
|
|
265581
265668
|
const useStyles$7 = makeStyles()(() => ({
|
|
265582
265669
|
layerTypeCentroidSegmentationIcon: {
|
|
@@ -265674,7 +265761,7 @@ function SegmentationCentroidsController(props) {
|
|
|
265674
265761
|
return jsx$1(Grid$1, { className: lcClasses.layerControllerGrid, children: jsx$1(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", alignItems: "center", children: [jsxs(Grid$1, { size: "grow", style: { display: "flex", alignItems: "center", minWidth: 0 }, children: [jsx$1(Button, { onClick: handleSegVisibleChange, className: menuClasses.imageLayerVisibleButton, getAriaLabel: () => "Toggle mesh visibility", children: jsx$1(SegVisibility, {}) }), jsx$1(ChannelColorPickerMenu, { theme, color: segColor, setColor: setSegColor, isStaticColor, isColormap, featureValueColormap, visible: segVisibleSetting }), jsx$1(Typography, { className: `${menuClasses.imageLayerName} ${classes2.inlineLabel}`, children: "Cell" }), jsx$1("div", { className: classes2.divider }), jsx$1(Button, { onClick: handlePointVisibleChange, className: menuClasses.imageLayerVisibleButton, getAriaLabel: () => "Toggle centroid visibility", children: jsx$1(PointVisibility, {}) }), jsx$1(ChannelColorPickerMenu, { theme, color: pointColor, setColor: setPointColor, isStaticColor: pointIsStaticColor, isColormap: pointIsColormap, featureValueColormap: pointFeatureValueColormap, visible: pointVisibleSetting }), jsx$1(Typography, { className: `${menuClasses.imageLayerName} ${classes2.inlineLabel}`, children: "Point" })] }), jsx$1(Grid$1, { size: 2, children: jsx$1(Slider, { value: sharedOpacity, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", getAriaLabel: () => "Adjust shared opacity" }) }), jsx$1(Grid$1, { size: 1, children: jsx$1(CombinedEllipsisMenu, { obsType, featureType, featureValueType, filled, setFilled, strokeWidth, setStrokeWidth, obsColorEncoding, setObsColorEncoding, featureValueColormap, setFeatureValueColormap, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, setPointObsColorEncoding, setPointFeatureValueColormap, setPointFeatureValueColormapRange, onColorEncodingChange: handleColorEncodingChange }) }), jsx$1(Grid$1, { size: 1, className: classes2.iconCell, children: jsx$1(SvgVector, { className: classes2.layerTypeCentroidSegmentationIcon }) })] }) }) });
|
|
265675
265762
|
}
|
|
265676
265763
|
function LayerController(props) {
|
|
265677
|
-
const { theme, coordinationScopesRaw, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, images, imageLayerScopes, imageLayerCoordination, targetT, targetZ, setTargetT, setTargetZ, spatialRenderingMode, setSpatialRenderingMode, imageChannelScopesByLayer, imageChannelCoordination, spotLayerScopes, spotLayerCoordination, pointLayerScopes, pointLayerCoordination, pointMultiIndicesData, volumeLoadingStatus, tiledPointsLoadingProgress, layerPerFeatureForPoints, centroidSegmentationPairs = [], pairedSegScopes = /* @__PURE__ */ new Set(), pairedPointScopes = /* @__PURE__ */ new Set() } = props;
|
|
265764
|
+
const { theme, coordinationScopesRaw, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, images, imageLayerScopes, imageLayerCoordination, targetT, targetZ, setTargetT, setTargetZ, spatialRenderingMode, setSpatialRenderingMode, imageChannelScopesByLayer, imageChannelCoordination, spotLayerScopes, spotLayerCoordination, pointLayerScopes, pointLayerCoordination, pointMultiIndicesData, volumeLoadingStatus, tiledPointsLoadingProgress, layerPerFeatureForPoints, globalDisable3d, centroidSegmentationPairs = [], pairedSegScopes = /* @__PURE__ */ new Set(), pairedPointScopes = /* @__PURE__ */ new Set() } = props;
|
|
265678
265765
|
const anyLayerHasT = Object.values(images || {}).some((image2) => image2?.image?.instance.hasTStack());
|
|
265679
265766
|
const anyLayerHasZ = Object.values(images || {}).some((image2) => image2?.image?.instance.hasZStack());
|
|
265680
265767
|
const maxT = Object.values(images || {}).reduce((a2, h2) => Math.max(a2, h2?.image?.instance.getNumT()), 1) - 1;
|
|
@@ -265683,10 +265770,10 @@ function LayerController(props) {
|
|
|
265683
265770
|
const reversedSpotLayerScopes = useMemo$1(() => [...spotLayerScopes || []].reverse(), [spotLayerScopes]);
|
|
265684
265771
|
const reversedPointLayerScopes = useMemo$1(() => [...pointLayerScopes || []].filter((scope) => !pairedPointScopes.has(scope)).reverse(), [pointLayerScopes, pairedPointScopes]);
|
|
265685
265772
|
const reversedSegmentationLayerScopes = useMemo$1(() => [...segmentationLayerScopes || []].filter((scope) => !pairedSegScopes.has(scope)).reverse(), [segmentationLayerScopes, pairedSegScopes]);
|
|
265686
|
-
return jsxs("div", { children: [anyLayerHasZ ? jsx$1(GlobalDimensionSlider, { label: "Z", targetValue: targetZ, setTargetValue: setTargetZ, max: maxZ, spatialRenderingMode, setSpatialRenderingMode }) : null, anyLayerHasT ? jsx$1(GlobalDimensionSlider, { label: "T", targetValue: targetT, setTargetValue: setTargetT, max: maxT }) : null, centroidSegmentationPairs.map(({ pointScope, segScope }) => jsx$1(SegmentationCentroidsController, { theme, segScope, segLayerCoordination: segmentationLayerCoordination, segChannelScopesByLayer: segmentationChannelScopesByLayer, segChannelCoordination: segmentationChannelCoordination, pointScope, pointLayerCoordination }, `combined-${segScope}-${pointScope}`)), pointLayerScopes && reversedPointLayerScopes.map((layerScope) => jsx$1(PointLayerController, { theme, layerScope, layerCoordination: pointLayerCoordination[0][layerScope], setLayerCoordination: pointLayerCoordination[1][layerScope], pointMatrixIndicesData: pointMultiIndicesData?.[layerScope], tiledPointsLoadingProgress, layerPerFeatureForPoints }, layerScope)), spotLayerScopes && reversedSpotLayerScopes.map((layerScope) => jsx$1(SpotLayerController, { theme, layerScope, layerCoordination: spotLayerCoordination[0][layerScope], setLayerCoordination: spotLayerCoordination[1][layerScope] }, layerScope)), segmentationLayerScopes && reversedSegmentationLayerScopes.map((layerScope) => jsx$1(SegmentationLayerController, { theme, layerScope, layerCoordination: segmentationLayerCoordination[0][layerScope], setLayerCoordination: segmentationLayerCoordination[1][layerScope], channelScopes: segmentationChannelScopesByLayer[layerScope], channelCoordination: segmentationChannelCoordination[0][layerScope], setChannelCoordination: segmentationChannelCoordination[1][layerScope] }, layerScope)), imageLayerScopes && reversedImageLayerScopes.map((layerScope) => jsx$1(ImageLayerController, { theme, coordinationScopesRaw, layerScope, layerCoordination: imageLayerCoordination[0][layerScope], setLayerCoordination: imageLayerCoordination[1][layerScope], channelScopes: imageChannelScopesByLayer[layerScope], channelCoordination: imageChannelCoordination[0][layerScope], setChannelCoordination: imageChannelCoordination[1][layerScope], image: images[layerScope]?.image?.instance, featureIndex: images[layerScope]?.featureIndex, targetT, targetZ, spatialRenderingMode, volumeLoadingProgress: volumeLoadingStatus?.loadingProgress, onStopVolumeLoading: volumeLoadingStatus?.onStopLoading, onRestartVolumeLoading: volumeLoadingStatus?.onRestartLoading, volumeStillRef: volumeLoadingStatus?.stillRef }, layerScope))] });
|
|
265773
|
+
return jsxs("div", { children: [anyLayerHasZ ? jsx$1(GlobalDimensionSlider, { label: "Z", targetValue: targetZ, setTargetValue: setTargetZ, max: maxZ, spatialRenderingMode, setSpatialRenderingMode, enable3d: !globalDisable3d }) : null, anyLayerHasT ? jsx$1(GlobalDimensionSlider, { label: "T", targetValue: targetT, setTargetValue: setTargetT, max: maxT }) : null, centroidSegmentationPairs.map(({ pointScope, segScope }) => jsx$1(SegmentationCentroidsController, { theme, segScope, segLayerCoordination: segmentationLayerCoordination, segChannelScopesByLayer: segmentationChannelScopesByLayer, segChannelCoordination: segmentationChannelCoordination, pointScope, pointLayerCoordination }, `combined-${segScope}-${pointScope}`)), pointLayerScopes && reversedPointLayerScopes.map((layerScope) => jsx$1(PointLayerController, { theme, layerScope, layerCoordination: pointLayerCoordination[0][layerScope], setLayerCoordination: pointLayerCoordination[1][layerScope], pointMatrixIndicesData: pointMultiIndicesData?.[layerScope], tiledPointsLoadingProgress, layerPerFeatureForPoints }, layerScope)), spotLayerScopes && reversedSpotLayerScopes.map((layerScope) => jsx$1(SpotLayerController, { theme, layerScope, layerCoordination: spotLayerCoordination[0][layerScope], setLayerCoordination: spotLayerCoordination[1][layerScope] }, layerScope)), segmentationLayerScopes && reversedSegmentationLayerScopes.map((layerScope) => jsx$1(SegmentationLayerController, { theme, layerScope, layerCoordination: segmentationLayerCoordination[0][layerScope], setLayerCoordination: segmentationLayerCoordination[1][layerScope], channelScopes: segmentationChannelScopesByLayer[layerScope], channelCoordination: segmentationChannelCoordination[0][layerScope], setChannelCoordination: segmentationChannelCoordination[1][layerScope] }, layerScope)), imageLayerScopes && reversedImageLayerScopes.map((layerScope) => jsx$1(ImageLayerController, { theme, coordinationScopesRaw, layerScope, layerCoordination: imageLayerCoordination[0][layerScope], setLayerCoordination: imageLayerCoordination[1][layerScope], channelScopes: imageChannelScopesByLayer[layerScope], channelCoordination: imageChannelCoordination[0][layerScope], setChannelCoordination: imageChannelCoordination[1][layerScope], image: images[layerScope]?.image?.instance, featureIndex: images[layerScope]?.featureIndex, targetT, targetZ, spatialRenderingMode, volumeLoadingProgress: volumeLoadingStatus?.loadingProgress, onStopVolumeLoading: volumeLoadingStatus?.onStopLoading, onRestartVolumeLoading: volumeLoadingStatus?.onRestartLoading, volumeStillRef: volumeLoadingStatus?.stillRef }, layerScope))] });
|
|
265687
265774
|
}
|
|
265688
265775
|
function LayerControllerSubscriber(props) {
|
|
265689
|
-
const { coordinationScopes: coordinationScopesRaw, coordinationScopesBy: coordinationScopesByRaw, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Spatial Layers", uuid: uuid2, layerPerFeatureForPoints = false, cameraPresets, helpText = ViewHelpMapping.LAYER_CONTROLLER_BETA } = props;
|
|
265776
|
+
const { coordinationScopes: coordinationScopesRaw, coordinationScopesBy: coordinationScopesByRaw, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Spatial Layers", uuid: uuid2, layerPerFeatureForPoints = false, globalDisable3d = false, cameraPresets, helpText = ViewHelpMapping.LAYER_CONTROLLER_BETA } = props;
|
|
265690
265777
|
const loaders = useLoaders();
|
|
265691
265778
|
const mergeCoordination = useMergeCoordination();
|
|
265692
265779
|
const coordinationScopes = useCoordinationScopes(coordinationScopesRaw);
|
|
@@ -265877,7 +265964,7 @@ function LayerControllerSubscriber(props) {
|
|
|
265877
265964
|
imageDataStatus,
|
|
265878
265965
|
pointMultiIndicesDataStatus
|
|
265879
265966
|
]);
|
|
265880
|
-
return jsx$1(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, errors, helpText, children: jsx$1(LayerController, { theme, coordinationScopesRaw, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, images: imageData, imageLayerScopes, imageLayerCoordination, targetT, targetZ, setTargetT, setTargetZ, spatialRenderingMode, setSpatialRenderingMode, imageChannelScopesByLayer, imageChannelCoordination, spotLayerScopes, spotLayerCoordination, pointLayerScopes, pointLayerCoordination, pointMultiIndicesData, layerPerFeatureForPoints, volumeLoadingStatus, tiledPointsLoadingProgress, centroidSegmentationPairs: centroidSegmentationPairs.pairs, pairedSegScopes: centroidSegmentationPairs.pairedSegScopes, pairedPointScopes: centroidSegmentationPairs.pairedPointScopes }) });
|
|
265967
|
+
return jsx$1(TitleInfo, { title: title2, isScroll: true, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, isReady, errors, helpText, children: jsx$1(LayerController, { theme, coordinationScopesRaw, segmentationLayerScopes, segmentationLayerCoordination, segmentationChannelScopesByLayer, segmentationChannelCoordination, images: imageData, imageLayerScopes, imageLayerCoordination, targetT, targetZ, setTargetT, setTargetZ, spatialRenderingMode, setSpatialRenderingMode, imageChannelScopesByLayer, imageChannelCoordination, spotLayerScopes, spotLayerCoordination, pointLayerScopes, pointLayerCoordination, pointMultiIndicesData, layerPerFeatureForPoints, globalDisable3d, volumeLoadingStatus, tiledPointsLoadingProgress, centroidSegmentationPairs: centroidSegmentationPairs.pairs, pairedSegScopes: centroidSegmentationPairs.pairedSegScopes, pairedPointScopes: centroidSegmentationPairs.pairedPointScopes }) });
|
|
265881
265968
|
}
|
|
265882
265969
|
const isIterable$2 = (obj) => Symbol.iterator in obj;
|
|
265883
265970
|
const hasIterableEntries = (value2) => (
|
|
@@ -267792,7 +267879,7 @@ function HiglassGlobalStyles(props) {
|
|
|
267792
267879
|
}
|
|
267793
267880
|
register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
|
|
267794
267881
|
const LazyHiGlassComponent = React__default.lazy(async () => {
|
|
267795
|
-
const { HiGlassComponent } = await import("./higlass-
|
|
267882
|
+
const { HiGlassComponent } = await import("./higlass-BnXDiYjj.js");
|
|
267796
267883
|
return { default: HiGlassComponent };
|
|
267797
267884
|
});
|
|
267798
267885
|
const HG_SIZE = 800;
|
|
@@ -270749,7 +270836,7 @@ function NeuroglancerGlobalStyles(props) {
|
|
|
270749
270836
|
const { classes: classes2 } = props;
|
|
270750
270837
|
return jsxs(Fragment, { children: [jsx$1(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsx$1(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
|
|
270751
270838
|
}
|
|
270752
|
-
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-
|
|
270839
|
+
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-D4iTpbeC.js"));
|
|
270753
270840
|
function createWorker() {
|
|
270754
270841
|
const worker = new WorkerFactory$1();
|
|
270755
270842
|
worker.AsyncComputationWorker = WorkerFactory;
|
|
@@ -270843,22 +270930,6 @@ class NeuroglancerComp extends PureComponent {
|
|
|
270843
270930
|
return jsxs(Fragment, { children: [jsx$1(NeuroglancerGlobalStyles, { classes: classes2 }), jsx$1("div", { className: classes2.neuroglancerWrapper, children: jsx$1(Suspense, { fallback: jsx$1("div", { children: "Loading..." }), children: jsx$1(LazyReactNeuroglancer, { brainMapsClientId: "NOT_A_VALID_ID", viewerState, onViewerStateChanged: this.onViewerStateChanged, onLayerLoadingChange, bundleRoot: this.bundleRoot, cellColorMapping, ref: this.onRef, onAnnotationSourceReady, onViewerReady, meshOpacity }) }) })] });
|
|
270844
270931
|
}
|
|
270845
270932
|
}
|
|
270846
|
-
function useMemoCustomComparison(factory2, dependencies2, customIsEqual) {
|
|
270847
|
-
const ref2 = useRef(
|
|
270848
|
-
/** @type {{ deps: any; value: T } | undefined} */
|
|
270849
|
-
void 0
|
|
270850
|
-
);
|
|
270851
|
-
if (ref2.current === void 0 || !customIsEqual(ref2.current.deps, dependencies2)) {
|
|
270852
|
-
ref2.current = { deps: dependencies2, value: factory2() };
|
|
270853
|
-
}
|
|
270854
|
-
return ref2.current.value;
|
|
270855
|
-
}
|
|
270856
|
-
const shallowDiff = (prevDeps, nextDeps, depName) => prevDeps[depName] !== nextDeps[depName];
|
|
270857
|
-
const shallowDiffByLayer = (prevDeps, nextDeps, depName, scopeName) => prevDeps?.[depName]?.[scopeName] !== nextDeps?.[depName]?.[scopeName];
|
|
270858
|
-
const shallowDiffByChannel = (prevDeps, nextDeps, depName, firstName, secondName) => prevDeps?.[depName]?.[firstName]?.[secondName] !== nextDeps?.[depName]?.[firstName]?.[secondName];
|
|
270859
|
-
const shallowDiffByChannelWithKeys = (prevDeps, nextDeps, depName, firstName, secondName, keys2) => keys2.some((k) => prevDeps?.[depName]?.[firstName]?.[secondName]?.[k] !== nextDeps?.[depName]?.[firstName]?.[secondName]?.[k]);
|
|
270860
|
-
const shallowDiffByLayerCoordinationWithKeys = (prevDeps, nextDeps, depName, layerScope, keys2) => keys2.some((k) => prevDeps?.[depName]?.[0]?.[layerScope]?.[k] !== nextDeps?.[depName]?.[0]?.[layerScope]?.[k]);
|
|
270861
|
-
const shallowDiffByChannelCoordinationWithKeys = (prevDeps, nextDeps, depName, layerScope, channelScope, keys2) => keys2.some((k) => prevDeps?.[depName]?.[0]?.[layerScope]?.[channelScope]?.[k] !== nextDeps?.[depName]?.[0]?.[layerScope]?.[channelScope]?.[k]);
|
|
270862
270933
|
function customIsEqualForCellColors(prevDeps, nextDeps) {
|
|
270863
270934
|
let forceUpdate = false;
|
|
270864
270935
|
const curriedShallowDiff = (depName) => shallowDiff(prevDeps, nextDeps, depName);
|
|
@@ -325005,7 +325076,7 @@ const VEGA_THEMES = {
|
|
|
325005
325076
|
};
|
|
325006
325077
|
const DATASET_NAME = "table";
|
|
325007
325078
|
function VegaGlobalStyles() {
|
|
325008
|
-
const { theme } = useStyles$
|
|
325079
|
+
const { theme } = useStyles$z();
|
|
325009
325080
|
return jsx$1(GlobalStyles$3, { styles: {
|
|
325010
325081
|
"#vg-tooltip-element.vg-tooltip.custom-theme": {
|
|
325011
325082
|
boxShadow: "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)",
|
|
@@ -325039,7 +325110,7 @@ function renderTooltipContents(tooltipText) {
|
|
|
325039
325110
|
}
|
|
325040
325111
|
function VegaPlot(props) {
|
|
325041
325112
|
const { spec: partialSpec, data: data2, getTooltipText, signalListeners, renderer = "svg", onNewView } = props;
|
|
325042
|
-
const { classes: tooltipClasses2 } = useStyles$
|
|
325113
|
+
const { classes: tooltipClasses2 } = useStyles$u();
|
|
325043
325114
|
const tooltipHandler = useMemo$1(() => {
|
|
325044
325115
|
if (typeof getTooltipText === "function") {
|
|
325045
325116
|
const tooltipConfig = {
|
|
@@ -329777,7 +329848,26 @@ class ImageWrapper {
|
|
|
329777
329848
|
}
|
|
329778
329849
|
return true;
|
|
329779
329850
|
}
|
|
329780
|
-
|
|
329851
|
+
// TODO: make stripPhysicalSizes the default behavior,
|
|
329852
|
+
// and remove it as a parameter, once it is no longer
|
|
329853
|
+
// used by spatial-accelerated and spatial-three.
|
|
329854
|
+
getData(stripPhysicalSizes = true) {
|
|
329855
|
+
if (stripPhysicalSizes) {
|
|
329856
|
+
const { data: data2 } = this.vivLoader;
|
|
329857
|
+
const newData = data2.map((d) => {
|
|
329858
|
+
if ("meta" in d) {
|
|
329859
|
+
const { meta } = d;
|
|
329860
|
+
if (meta && "physicalSizes" in meta) {
|
|
329861
|
+
const newMeta = { ...meta, physicalSizes: void 0 };
|
|
329862
|
+
const clone2 = Object.create(Object.getPrototypeOf(d));
|
|
329863
|
+
Object.assign(clone2, d, { meta: newMeta });
|
|
329864
|
+
return clone2;
|
|
329865
|
+
}
|
|
329866
|
+
}
|
|
329867
|
+
return d;
|
|
329868
|
+
});
|
|
329869
|
+
return newData;
|
|
329870
|
+
}
|
|
329781
329871
|
return this.vivLoader.data;
|
|
329782
329872
|
}
|
|
329783
329873
|
getModelMatrix() {
|
|
@@ -4,7 +4,7 @@ import { useThree, useFrame, Canvas } from "@react-three/fiber";
|
|
|
4
4
|
import { OrbitControls } from "@react-three/drei";
|
|
5
5
|
import * as THREE from "three";
|
|
6
6
|
import { Data3DTexture, RedFormat, UnsignedByteType, LinearFilter, RedIntegerFormat, UnsignedIntType, NearestFilter, Vector3, Vector2, Vector4, UniformsUtils } from "three";
|
|
7
|
-
import { l as log, i as isEqual, C as CoordinationType, u as useEventCallback } from "./index-
|
|
7
|
+
import { l as log, i as isEqual, C as CoordinationType, u as useEventCallback } from "./index-BnKmchw3.js";
|
|
8
8
|
const LogLevel = {
|
|
9
9
|
INFO: "info",
|
|
10
10
|
WARN: "warn",
|
|
@@ -537,7 +537,8 @@ class VolumeDataManager {
|
|
|
537
537
|
const shapes = _resolutionStatsToShapes(multiResolutionStats);
|
|
538
538
|
const resolutions = multiResolutionStats.length;
|
|
539
539
|
this.zarrStore.resolutions = resolutions;
|
|
540
|
-
const
|
|
540
|
+
const stripPhysicalSizes = false;
|
|
541
|
+
const vivData = imageWrapper.getData(stripPhysicalSizes);
|
|
541
542
|
if (!Array.isArray(vivData) || vivData.length < 1) {
|
|
542
543
|
throw new Error("Not a multiresolution loader");
|
|
543
544
|
}
|
|
@@ -3,7 +3,7 @@ import React__default, { useRef, useState, useEffect, Suspense, forwardRef } fro
|
|
|
3
3
|
import { Canvas } from "@react-three/fiber";
|
|
4
4
|
import { Center, Text, Line, Bvh, OrbitControls } from "@react-three/drei";
|
|
5
5
|
import { Matrix3, Matrix4, Vector3, Vector2, UniformsUtils, Data3DTexture, RedFormat, FloatType, LinearFilter, FrontSide, Scene, Group, MeshPhysicalMaterial, MeshBasicMaterial, MeshStandardMaterial, BackSide } from "three";
|
|
6
|
-
import { C as CoordinationType, g as getImageSize } from "./index-
|
|
6
|
+
import { C as CoordinationType, g as getImageSize } from "./index-BnKmchw3.js";
|
|
7
7
|
function MeasureLine({ currentLine, scale }) {
|
|
8
8
|
const textRef = useRef(null);
|
|
9
9
|
return jsxs("group", { children: [jsx(Center, { bottom: true, right: true, position: [currentLine.midPoint.x, currentLine.midPoint.y, currentLine.midPoint.z], rotation: [0, 0, 0], children: jsx(Text, { color: "gray", scale: 0.05, ref: textRef, children: `${(currentLine.startPoint.distanceTo(currentLine.endPoint) * scale).toFixed(2)} µm` }) }), jsx(Line, {
|
|
@@ -581,7 +581,8 @@ const renderingModeMap = {
|
|
|
581
581
|
};
|
|
582
582
|
function extractInformationFromProps(layerScope, layerCoordination, channelScopes, channelCoordination, image, props) {
|
|
583
583
|
const { spatialRenderingMode } = props;
|
|
584
|
-
const
|
|
584
|
+
const stripPhysicalSizes = false;
|
|
585
|
+
const data = image?.image?.instance?.getData(stripPhysicalSizes);
|
|
585
586
|
if (!data) {
|
|
586
587
|
return {
|
|
587
588
|
channelsVisible: null,
|
|
@@ -944,8 +945,8 @@ function GeometryAndMesh(props) {
|
|
|
944
945
|
setObsHighlight(e.object.name);
|
|
945
946
|
}, onPointerOut: () => setObsHighlight(null) }) })] }) : null, renderingSettings.uniforms && renderingSettings.shader && renderingSettings.meshScale && renderingSettings.geometrySize ? jsx("group", { children: jsxs("mesh", { scale: renderingSettings.meshScale, ref: materialRef, children: [jsx("boxGeometry", { args: renderingSettings.geometrySize }), jsx("shaderMaterial", { customProgramCacheKey: () => "1", side: FrontSide, uniforms: renderingSettings.uniforms, needsUpdate: true, transparent: true, vertexShader: renderingSettings.shader.vertexShader, fragmentShader: renderingSettings.shader.fragmentShader })] }) }) : null] }), jsx("group", { name: "lines", children: lines.map((object) => jsx(MeasureLine, { currentLine: object, scale: 1 }, stringifyLineData(object))) })] });
|
|
946
947
|
}
|
|
947
|
-
const LazyGeometryAndMeshXR = React__default.lazy(() => import("./GeometryAndMeshXR-
|
|
948
|
-
const LazyXRSceneComponents = React__default.lazy(() => import("./XRSceneComponents-
|
|
948
|
+
const LazyGeometryAndMeshXR = React__default.lazy(() => import("./GeometryAndMeshXR-CvjW5GGO.js").catch(() => ({ default: GeometryAndMesh })));
|
|
949
|
+
const LazyXRSceneComponents = React__default.lazy(() => import("./XRSceneComponents-DEj-tQkm.js").catch(() => ({ default: () => null })));
|
|
949
950
|
function SpatialThree(props) {
|
|
950
951
|
const materialRef = useRef(null);
|
|
951
952
|
const orbitRef = useRef(null);
|
|
@@ -1302,13 +1303,13 @@ function getXRModule() {
|
|
|
1302
1303
|
}
|
|
1303
1304
|
const LazyXRWrapper = React__default.lazy(
|
|
1304
1305
|
// eslint-disable-next-line implicit-arrow-linebreak, function-paren-newline
|
|
1305
|
-
() => import("./XRWrapper-
|
|
1306
|
+
() => import("./XRWrapper-DIEbbPAq.js").catch(() => ({
|
|
1306
1307
|
default: ({ children }) => children
|
|
1307
1308
|
}))
|
|
1308
1309
|
);
|
|
1309
1310
|
const LazyXREnterButton = React__default.lazy(
|
|
1310
1311
|
// eslint-disable-next-line implicit-arrow-linebreak, function-paren-newline
|
|
1311
|
-
() => import("./XREnterButton-
|
|
1312
|
+
() => import("./XREnterButton-pTH1jk6g.js").catch(() => ({
|
|
1312
1313
|
default: () => null
|
|
1313
1314
|
}))
|
|
1314
1315
|
);
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a6, a4, a2, a5, a3, a1, a7 } from "./index-
|
|
1
|
+
import { a6, a4, a2, a5, a3, a1, a7 } from "./index-BnKmchw3.js";
|
|
2
2
|
import { useComplexCoordination, useComplexCoordinationSecondary, useCoordination, useCoordinationScopes, useCoordinationScopesBy, useGridItemSize, useMultiCoordinationScopesNonNull, useMultiCoordinationScopesSecondaryNonNull, usePageModeView } from "@vitessce/vit-s";
|
|
3
3
|
export {
|
|
4
4
|
a6 as PluginAsyncFunction,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-SxljTded.js";
|
|
2
|
-
import { a as getDefaultExportFromCjs, B as BaseDecoder, L as LercParameters, b as LercAddCompression } from "./index-
|
|
2
|
+
import { a as getDefaultExportFromCjs, B as BaseDecoder, L as LercParameters, b as LercAddCompression } from "./index-BnKmchw3.js";
|
|
3
3
|
var LercDecode = { exports: {} };
|
|
4
4
|
var hasRequiredLercDecode;
|
|
5
5
|
function requireLercDecode() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitessce/all",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.4",
|
|
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": "4.0.
|
|
21
|
-
"@vitessce/
|
|
22
|
-
"@vitessce/
|
|
23
|
-
"@vitessce/description": "4.0.
|
|
24
|
-
"@vitessce/
|
|
25
|
-
"@vitessce/feature-list": "4.0.
|
|
26
|
-
"@vitessce/
|
|
27
|
-
"@vitessce/
|
|
28
|
-
"@vitessce/
|
|
29
|
-
"@vitessce/
|
|
30
|
-
"@vitessce/json": "4.0.
|
|
31
|
-
"@vitessce/layer-controller": "4.0.
|
|
32
|
-
"@vitessce/
|
|
33
|
-
"@vitessce/
|
|
34
|
-
"@vitessce/
|
|
35
|
-
"@vitessce/
|
|
36
|
-
"@vitessce/
|
|
37
|
-
"@vitessce/scatterplot-gating": "4.0.
|
|
38
|
-
"@vitessce/
|
|
39
|
-
"@vitessce/spatial": "4.0.
|
|
40
|
-
"@vitessce/
|
|
41
|
-
"@vitessce/
|
|
42
|
-
"@vitessce/statistical-plots": "4.0.
|
|
43
|
-
"@vitessce/
|
|
44
|
-
"@vitessce/globals": "4.0.
|
|
45
|
-
"@vitessce/zarr": "4.0.
|
|
46
|
-
"@vitessce/
|
|
47
|
-
"@vitessce/
|
|
48
|
-
"@vitessce/spatial-
|
|
49
|
-
"@vitessce/
|
|
50
|
-
"@vitessce/
|
|
51
|
-
"@vitessce/
|
|
20
|
+
"@vitessce/styles": "4.0.4",
|
|
21
|
+
"@vitessce/constants-internal": "4.0.4",
|
|
22
|
+
"@vitessce/abstract": "4.0.4",
|
|
23
|
+
"@vitessce/description": "4.0.4",
|
|
24
|
+
"@vitessce/csv": "4.0.4",
|
|
25
|
+
"@vitessce/feature-list": "4.0.4",
|
|
26
|
+
"@vitessce/heatmap": "4.0.4",
|
|
27
|
+
"@vitessce/glb": "4.0.4",
|
|
28
|
+
"@vitessce/genomic-profiles": "4.0.4",
|
|
29
|
+
"@vitessce/error": "4.0.4",
|
|
30
|
+
"@vitessce/json": "4.0.4",
|
|
31
|
+
"@vitessce/layer-controller": "4.0.4",
|
|
32
|
+
"@vitessce/layer-controller-beta": "4.0.4",
|
|
33
|
+
"@vitessce/ome-tiff": "4.0.4",
|
|
34
|
+
"@vitessce/link-controller": "4.0.4",
|
|
35
|
+
"@vitessce/scatterplot-embedding": "4.0.4",
|
|
36
|
+
"@vitessce/obs-sets-manager": "4.0.4",
|
|
37
|
+
"@vitessce/scatterplot-gating": "4.0.4",
|
|
38
|
+
"@vitessce/spatial": "4.0.4",
|
|
39
|
+
"@vitessce/spatial-beta": "4.0.4",
|
|
40
|
+
"@vitessce/plugins": "4.0.4",
|
|
41
|
+
"@vitessce/schemas": "4.0.4",
|
|
42
|
+
"@vitessce/statistical-plots": "4.0.4",
|
|
43
|
+
"@vitessce/status": "4.0.4",
|
|
44
|
+
"@vitessce/globals": "4.0.4",
|
|
45
|
+
"@vitessce/spatial-zarr": "4.0.4",
|
|
46
|
+
"@vitessce/zarr": "4.0.4",
|
|
47
|
+
"@vitessce/vit-s": "4.0.4",
|
|
48
|
+
"@vitessce/spatial-accelerated": "4.0.4",
|
|
49
|
+
"@vitessce/spatial-three": "4.0.4",
|
|
50
|
+
"@vitessce/biomarker-select": "4.0.4",
|
|
51
|
+
"@vitessce/neuroglancer": "4.0.4"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/react": "^19.0.0",
|