@vitessce/launcher 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-DsObDSMF.js → GeometryAndMeshXR-CkzTsWCM.js} +1 -1
- package/dist/{ReactNeuroglancer-C2C-vEVu.js → ReactNeuroglancer-BIKD9asK.js} +1 -1
- package/dist/{XREnterButton-B6j_tE1d.js → XREnterButton-BW9c-kaX.js} +1 -1
- package/dist/{XRSceneComponents-BgZ4J_JS.js → XRSceneComponents-BXLKYaoc.js} +1 -1
- package/dist/{XRWrapper-BLKqjWwm.js → XRWrapper-Bn2BWlKq.js} +2 -2
- package/dist/{deflate-38TS7div.js → deflate-D151aqHi.js} +1 -1
- package/dist/{higlass-CKuPDg4y.js → higlass-BAzAjF0O.js} +1 -1
- package/dist/{index-D-cJewP-.js → index-BMSAuguS.js} +167 -77
- package/dist/{index-CA6Y_Dls.js → index-CHThyhx2.js} +7 -6
- package/dist/{index-gStG4FEQ.js → index-D3nIHwEl.js} +3 -2
- package/dist/index.js +1 -1
- package/dist/{jpeg-BGB-_EKG.js → jpeg-CYCae93J.js} +1 -1
- package/dist/{lerc-Db0ZEZ3c.js → lerc-Hctfsv2W.js} +1 -1
- package/dist/{lzw-BmHVONBc.js → lzw-D9h9_zZT.js} +1 -1
- package/dist/{packbits-DKF2IGBX.js → packbits-DRjLsg7B.js} +1 -1
- package/dist/{raw-DMNeLVd7.js → raw-ChPsOdRa.js} +1 -1
- package/dist/{webimage-BTp31_-j.js → webimage-COV6Flgm.js} +1 -1
- package/dist/{xrStore-CDyKy5UF.js → xrStore-KQZ5nMcp.js} +1 -1
- package/package.json +9 -9
|
@@ -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-CHThyhx2.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-BMSAuguS.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-KQZ5nMcp.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-CHThyhx2.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-CHThyhx2.js";
|
|
3
|
+
import { x as xrStore } from "./xrStore-KQZ5nMcp.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-BMSAuguS.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-BMSAuguS.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,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import React__default, { useState, useEffect, useCallback, useContext, forwardRef as forwardRef$1, useRef, useMemo as useMemo$1, createContext, createElement, isValidElement, cloneElement, Children, PureComponent, version as version$6, useLayoutEffect as useLayoutEffect$1, useImperativeHandle, Component as Component$1, Suspense, useReducer } from "react";
|
|
3
3
|
import { jsx as jsx$1, jsxs, Fragment } from "react/jsx-runtime";
|
|
4
|
-
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, createOnDrop } from "@vitessce/vit-s";
|
|
4
|
+
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, createOnDrop } from "@vitessce/vit-s";
|
|
5
5
|
import * as ReactDOM from "react-dom";
|
|
6
6
|
import ReactDOM__default, { createPortal } from "react-dom";
|
|
7
7
|
function _mergeNamespaces(n3, m2) {
|
|
@@ -19322,7 +19322,7 @@ const { tss } = createTss({
|
|
|
19322
19322
|
},
|
|
19323
19323
|
"usePlugin": useMuiThemeStyleOverridesPlugin
|
|
19324
19324
|
});
|
|
19325
|
-
const useStyles$
|
|
19325
|
+
const useStyles$A = tss.create({});
|
|
19326
19326
|
function createChainedFunction$1(...funcs) {
|
|
19327
19327
|
return funcs.reduce((acc, func) => {
|
|
19328
19328
|
if (func == null) {
|
|
@@ -74132,7 +74132,7 @@ const Popper = React.forwardRef((props, ref2) => {
|
|
|
74132
74132
|
}, [handlePopperRef]);
|
|
74133
74133
|
React.useImperativeHandle(popperRefProp, () => popperRef.current, []);
|
|
74134
74134
|
const [exited, setExited] = React.useState(true);
|
|
74135
|
-
const { theme } = useStyles$
|
|
74135
|
+
const { theme } = useStyles$A();
|
|
74136
74136
|
const rtlPlacement = flipPlacement(initialPlacement, theme);
|
|
74137
74137
|
const [placement, setPlacement] = React.useState(rtlPlacement);
|
|
74138
74138
|
React.useEffect(() => {
|
|
@@ -74866,7 +74866,7 @@ var VariableSizeList$1 = /* @__PURE__ */ createListComponent({
|
|
|
74866
74866
|
});
|
|
74867
74867
|
const VariableSizeList = VariableSizeList$1;
|
|
74868
74868
|
const LIST_ROW_HEIGHT$1 = 48;
|
|
74869
|
-
const useStyles$
|
|
74869
|
+
const useStyles$z = makeStyles()(() => ({
|
|
74870
74870
|
searchInput: {
|
|
74871
74871
|
lineHeight: "initial",
|
|
74872
74872
|
height: "auto !important"
|
|
@@ -74906,7 +74906,7 @@ const ListboxComponent$1 = React__default.forwardRef((props, ref2) => {
|
|
|
74906
74906
|
});
|
|
74907
74907
|
function SimpleAutocomplete(props) {
|
|
74908
74908
|
const { getMatches, onChange, textInputLabel = "Enter a gene", getItemLabel = (option) => option.label } = props;
|
|
74909
|
-
const { classes: classes2 } = useStyles$
|
|
74909
|
+
const { classes: classes2 } = useStyles$z();
|
|
74910
74910
|
const [potentialItems, setPotentialItems] = useState([]);
|
|
74911
74911
|
const handleInputChange = async (_event, value2) => {
|
|
74912
74912
|
if (!value2) {
|
|
@@ -84456,7 +84456,7 @@ function defaultUrlTransform(value2) {
|
|
|
84456
84456
|
}
|
|
84457
84457
|
return "";
|
|
84458
84458
|
}
|
|
84459
|
-
const useStyles$
|
|
84459
|
+
const useStyles$y = makeStyles()((theme) => ({
|
|
84460
84460
|
description: {
|
|
84461
84461
|
"& p, details, table": {
|
|
84462
84462
|
fontSize: "80%",
|
|
@@ -84493,7 +84493,7 @@ const useStyles$x = makeStyles()((theme) => ({
|
|
|
84493
84493
|
}));
|
|
84494
84494
|
function Description(props) {
|
|
84495
84495
|
const { description: description2, metadata: metadata2, descriptionType } = props;
|
|
84496
|
-
const { classes: classes2 } = useStyles$
|
|
84496
|
+
const { classes: classes2 } = useStyles$y();
|
|
84497
84497
|
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)] });
|
|
84498
84498
|
}
|
|
84499
84499
|
function DescriptionSubscriber(props) {
|
|
@@ -99603,7 +99603,7 @@ const Tooltip$2 = /* @__PURE__ */ React.forwardRef((props, ref2) => {
|
|
|
99603
99603
|
}, extraProps), getChildren());
|
|
99604
99604
|
});
|
|
99605
99605
|
const nodeHeight = 32;
|
|
99606
|
-
const useStyles$
|
|
99606
|
+
const useStyles$x = makeStyles()((theme) => ({
|
|
99607
99607
|
setsManager: {
|
|
99608
99608
|
position: "relative",
|
|
99609
99609
|
width: "100%",
|
|
@@ -99770,7 +99770,7 @@ const useStyles$w = makeStyles()((theme) => ({
|
|
|
99770
99770
|
}));
|
|
99771
99771
|
function SetsManagerTreeGlobalStyles(props) {
|
|
99772
99772
|
const { classes: classes2 } = props;
|
|
99773
|
-
const { theme } = useStyles$
|
|
99773
|
+
const { theme } = useStyles$A();
|
|
99774
99774
|
return jsx$1(ScopedGlobalStyles, { parentClassName: classes2.setsManagerTree, styles: {
|
|
99775
99775
|
".rc-tree": {
|
|
99776
99776
|
paddingLeft: "0",
|
|
@@ -100111,7 +100111,7 @@ function HelpTooltipGlobalStyles(props) {
|
|
|
100111
100111
|
}
|
|
100112
100112
|
function PopoverGlobalStyles(props) {
|
|
100113
100113
|
const { classes: classes2 } = props;
|
|
100114
|
-
const { theme } = useStyles$
|
|
100114
|
+
const { theme } = useStyles$A();
|
|
100115
100115
|
return jsx$1(ScopedGlobalStyles, { parentClassName: classes2.popover, styles: {
|
|
100116
100116
|
".rc-tooltip-inner": {
|
|
100117
100117
|
boxSizing: "border-box",
|
|
@@ -104795,7 +104795,7 @@ function NamedSetNodeStatic(props) {
|
|
|
104795
104795
|
const onClick = level === 0 && !expanded ? () => onCheckLevel(nodeKey, nextLevelToCheck) : () => onNodeView(path2);
|
|
104796
104796
|
const tooltipProps = disableTooltip ? { visible: false } : {};
|
|
104797
104797
|
const popoverMenuConfig = makeNodeViewMenuConfig(props);
|
|
104798
|
-
const { classes: classes2 } = useStyles$
|
|
104798
|
+
const { classes: classes2 } = useStyles$x();
|
|
104799
104799
|
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 })] });
|
|
104800
104800
|
}
|
|
104801
104801
|
function NamedSetNodeEditing(props) {
|
|
@@ -104807,7 +104807,7 @@ function NamedSetNodeEditing(props) {
|
|
|
104807
104807
|
onNodeSetName(path2, currentTitle, true);
|
|
104808
104808
|
}
|
|
104809
104809
|
}
|
|
104810
|
-
const { classes: classes2 } = useStyles$
|
|
104810
|
+
const { classes: classes2 } = useStyles$x();
|
|
104811
104811
|
return jsxs("span", { className: classes2.titleButtonWithInput, children: [jsx$1("input", {
|
|
104812
104812
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
104813
104813
|
autoFocus: true,
|
|
@@ -104833,7 +104833,7 @@ function LevelsButtons(props) {
|
|
|
104833
104833
|
onCheckLevel(nodeKey, newLevel);
|
|
104834
104834
|
}
|
|
104835
104835
|
}
|
|
104836
|
-
const { classes: classes2 } = useStyles$
|
|
104836
|
+
const { classes: classes2 } = useStyles$x();
|
|
104837
104837
|
return jsx$1("div", { className: classes2.levelButtonsContainer, children: range$e(1, height2 + 1).map((i2) => {
|
|
104838
104838
|
const isChecked = isEqual$3(path2, checkedLevelPath) && i2 === checkedLevelIndex;
|
|
104839
104839
|
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);
|
|
@@ -104917,7 +104917,7 @@ let TreeNode$1 = class TreeNode extends TreeNode$2 {
|
|
|
104917
104917
|
};
|
|
104918
104918
|
function PlusButton(props) {
|
|
104919
104919
|
const { datatype, onError, onImportTree, onCreateLevelZeroNode, importable, editable } = props;
|
|
104920
|
-
const { classes: classes2 } = useStyles$
|
|
104920
|
+
const { classes: classes2 } = useStyles$x();
|
|
104921
104921
|
const onImport = useCallback((importHandler, mimeType) => () => {
|
|
104922
104922
|
const uploadInputNode = document.createElement("input");
|
|
104923
104923
|
uploadInputNode.setAttribute("type", "file");
|
|
@@ -105034,7 +105034,7 @@ function SetsManager(props) {
|
|
|
105034
105034
|
}, onNodeCheckNewName, onNodeSetIsEditing: setIsEditingNodeName, onNodeRemove, onExportLevelZeroNodeJSON, onExportLevelZeroNodeTabular, onExportSetJSON, disableTooltip: isDragging, onDragStart: () => setIsDragging(true), onDragEnd: () => setIsDragging(false), children: renderTreeNodes(node2.children, readOnly, newPath) }, pathToKey(newPath));
|
|
105035
105035
|
});
|
|
105036
105036
|
}
|
|
105037
|
-
const { classes: classes2 } = useStyles$
|
|
105037
|
+
const { classes: classes2 } = useStyles$x();
|
|
105038
105038
|
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) => {
|
|
105039
105039
|
const { eventKey: dropKey } = info2.node.props;
|
|
105040
105040
|
const { eventKey: dragKey } = info2.dragNode.props;
|
|
@@ -210999,22 +210999,22 @@ async function getDecoder(fileDirectory) {
|
|
|
210999
210999
|
const Decoder = await importFn();
|
|
211000
211000
|
return new Decoder(fileDirectory);
|
|
211001
211001
|
}
|
|
211002
|
-
addDecoder([void 0, 1], () => import("./raw-
|
|
211003
|
-
addDecoder(5, () => import("./lzw-
|
|
211002
|
+
addDecoder([void 0, 1], () => import("./raw-ChPsOdRa.js").then((m2) => m2.default));
|
|
211003
|
+
addDecoder(5, () => import("./lzw-D9h9_zZT.js").then((m2) => m2.default));
|
|
211004
211004
|
addDecoder(6, () => {
|
|
211005
211005
|
throw new Error("old style JPEG compression is not supported.");
|
|
211006
211006
|
});
|
|
211007
|
-
addDecoder(7, () => import("./jpeg-
|
|
211008
|
-
addDecoder([8, 32946], () => import("./deflate-
|
|
211009
|
-
addDecoder(32773, () => import("./packbits-
|
|
211007
|
+
addDecoder(7, () => import("./jpeg-CYCae93J.js").then((m2) => m2.default));
|
|
211008
|
+
addDecoder([8, 32946], () => import("./deflate-D151aqHi.js").then((m2) => m2.default));
|
|
211009
|
+
addDecoder(32773, () => import("./packbits-DRjLsg7B.js").then((m2) => m2.default));
|
|
211010
211010
|
addDecoder(
|
|
211011
211011
|
34887,
|
|
211012
|
-
() => import("./lerc-
|
|
211012
|
+
() => import("./lerc-Hctfsv2W.js").then(async (m2) => {
|
|
211013
211013
|
await m2.zstd.init();
|
|
211014
211014
|
return m2;
|
|
211015
211015
|
}).then((m2) => m2.default)
|
|
211016
211016
|
);
|
|
211017
|
-
addDecoder(50001, () => import("./webimage-
|
|
211017
|
+
addDecoder(50001, () => import("./webimage-COV6Flgm.js").then((m2) => m2.default));
|
|
211018
211018
|
function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
|
|
211019
211019
|
return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
|
|
211020
211020
|
}
|
|
@@ -227788,7 +227788,7 @@ class ContourLayerWithText extends ContourLayer {
|
|
|
227788
227788
|
}
|
|
227789
227789
|
ContourLayerWithText.layerName = "ContourLayerWithText";
|
|
227790
227790
|
ContourLayerWithText.defaultProps = defaultProps;
|
|
227791
|
-
const useStyles$
|
|
227791
|
+
const useStyles$w = makeStyles()(() => ({
|
|
227792
227792
|
toolButton: {
|
|
227793
227793
|
display: "inline-flex",
|
|
227794
227794
|
"&:active": {
|
|
@@ -227850,12 +227850,12 @@ const useStyles$v = makeStyles()(() => ({
|
|
|
227850
227850
|
}));
|
|
227851
227851
|
function IconTool(props) {
|
|
227852
227852
|
const { alt, onClick, isActive: isActive2, children: children3 } = props;
|
|
227853
|
-
const { classes: classes2 } = useStyles$
|
|
227853
|
+
const { classes: classes2 } = useStyles$w();
|
|
227854
227854
|
return jsx$1("button", { className: clsx(classes2.toolIcon, { [classes2.toolActive]: isActive2 }), onClick, type: "button", title: alt, children: children3 });
|
|
227855
227855
|
}
|
|
227856
227856
|
function IconButton(props) {
|
|
227857
227857
|
const { alt, onClick, children: children3 } = props;
|
|
227858
|
-
const { classes: classes2 } = useStyles$
|
|
227858
|
+
const { classes: classes2 } = useStyles$w();
|
|
227859
227859
|
return jsx$1("button", { className: clsx(classes2.toolIcon, classes2.toolButton), onClick, type: "button", title: alt, children: children3 });
|
|
227860
227860
|
}
|
|
227861
227861
|
function ToolMenu(props) {
|
|
@@ -227863,7 +227863,7 @@ function ToolMenu(props) {
|
|
|
227863
227863
|
const lassoIconAltText = "Select lasso";
|
|
227864
227864
|
const { setActiveTool, activeTool, visibleTools = { pan: true, selectLasso: true, recenter: true }, recenterOnClick = () => {
|
|
227865
227865
|
} } = props;
|
|
227866
|
-
const { classes: classes2 } = useStyles$
|
|
227866
|
+
const { classes: classes2 } = useStyles$w();
|
|
227867
227867
|
const onRecenterButtonCLick = () => {
|
|
227868
227868
|
recenterOnClick();
|
|
227869
227869
|
};
|
|
@@ -229020,7 +229020,7 @@ function ScatterplotOptions(props) {
|
|
|
229020
229020
|
id: `feature-aggregation-strategy-${scatterplotOptionsId}`
|
|
229021
229021
|
}, children: FEATURE_AGGREGATION_STRATEGIES$2.map((opt) => jsx$1("option", { value: opt, children: capitalize$3(opt) }, opt)) }) })] }) : null] });
|
|
229022
229022
|
}
|
|
229023
|
-
const useStyles$
|
|
229023
|
+
const useStyles$v = makeStyles()((theme) => ({
|
|
229024
229024
|
tooltipAnchor: {
|
|
229025
229025
|
position: "relative",
|
|
229026
229026
|
width: "0px",
|
|
@@ -229051,7 +229051,7 @@ const useStyles$u = makeStyles()((theme) => ({
|
|
|
229051
229051
|
function Tooltip3(props) {
|
|
229052
229052
|
const { x: x2, y: y2, parentWidth, parentHeight, children: children3 } = props;
|
|
229053
229053
|
const ref2 = useRef();
|
|
229054
|
-
const { classes: classes2 } = useStyles$
|
|
229054
|
+
const { classes: classes2 } = useStyles$v();
|
|
229055
229055
|
const [placementX, setPlacementX] = useState("start");
|
|
229056
229056
|
const [placementY, setPlacementY] = useState("bottom");
|
|
229057
229057
|
const getTooltipContainer = useVitessceContainer(ref2);
|
|
@@ -229067,7 +229067,7 @@ function Tooltip3(props) {
|
|
|
229067
229067
|
}, [x2, y2, parentWidth, parentHeight]);
|
|
229068
229068
|
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 });
|
|
229069
229069
|
}
|
|
229070
|
-
const useStyles$
|
|
229070
|
+
const useStyles$u = makeStyles()((theme) => ({
|
|
229071
229071
|
cellEmphasisCrosshair: {
|
|
229072
229072
|
zIndex: 50,
|
|
229073
229073
|
position: "absolute",
|
|
@@ -229078,7 +229078,7 @@ const useStyles$t = makeStyles()((theme) => ({
|
|
|
229078
229078
|
}));
|
|
229079
229079
|
function Tooltip2D(props) {
|
|
229080
229080
|
const { parentUuid, sourceUuid, x: x2, y: y2, parentWidth, parentHeight, children: children3 } = props;
|
|
229081
|
-
const { classes: classes2 } = useStyles$
|
|
229081
|
+
const { classes: classes2 } = useStyles$u();
|
|
229082
229082
|
if (x2 < 0 || x2 > parentWidth || y2 < 0 || y2 > parentHeight) {
|
|
229083
229083
|
return null;
|
|
229084
229084
|
}
|
|
@@ -232990,7 +232990,7 @@ function getXlinkHref(cmap) {
|
|
|
232990
232990
|
const xlinkHref = ramp(color2.copy().domain(quantize$3(interpolate$1$1(0, 1), n3))).toDataURL();
|
|
232991
232991
|
return xlinkHref;
|
|
232992
232992
|
}
|
|
232993
|
-
const useStyles$
|
|
232993
|
+
const useStyles$t = makeStyles()(() => ({
|
|
232994
232994
|
legend: {
|
|
232995
232995
|
position: "relative",
|
|
232996
232996
|
// Needed for absolute positioning of slider overlay
|
|
@@ -233187,7 +233187,7 @@ function Legend(props) {
|
|
|
233187
233187
|
contourThresholds
|
|
233188
233188
|
} = props;
|
|
233189
233189
|
const svgRef = useRef(null);
|
|
233190
|
-
const { classes: classes2 } = useStyles$
|
|
233190
|
+
const { classes: classes2 } = useStyles$t();
|
|
233191
233191
|
const [localRange, setLocalRange] = useState(featureValueColormapRange);
|
|
233192
233192
|
useEffect(() => {
|
|
233193
233193
|
setLocalRange(featureValueColormapRange);
|
|
@@ -233521,7 +233521,7 @@ function Legend(props) {
|
|
|
233521
233521
|
}
|
|
233522
233522
|
} })] })] });
|
|
233523
233523
|
}
|
|
233524
|
-
const useStyles$
|
|
233524
|
+
const useStyles$s = makeStyles()(() => ({
|
|
233525
233525
|
multiLegend: {
|
|
233526
233526
|
position: "absolute",
|
|
233527
233527
|
top: "0px",
|
|
@@ -233548,7 +233548,7 @@ function MultiLegend(props) {
|
|
|
233548
233548
|
pointLayerCoordination,
|
|
233549
233549
|
pointMultiIndicesData
|
|
233550
233550
|
} = props;
|
|
233551
|
-
const { classes: classes2 } = useStyles$
|
|
233551
|
+
const { classes: classes2 } = useStyles$s();
|
|
233552
233552
|
const reversedSegmentationLayerScopes = useMemo$1(() => [...segmentationLayerScopes || []].reverse(), [segmentationLayerScopes]);
|
|
233553
233553
|
const reversedSpotLayerScopes = useMemo$1(() => [...spotLayerScopes || []].reverse(), [spotLayerScopes]);
|
|
233554
233554
|
const reversedPointLayerScopes = useMemo$1(() => [...pointLayerScopes || []].reverse(), [pointLayerScopes]);
|
|
@@ -233641,7 +233641,7 @@ function MultiLegend(props) {
|
|
|
233641
233641
|
}) : null;
|
|
233642
233642
|
}) : null] });
|
|
233643
233643
|
}
|
|
233644
|
-
const useStyles$
|
|
233644
|
+
const useStyles$r = makeStyles()(() => ({
|
|
233645
233645
|
channelNamesLegendContainer: {
|
|
233646
233646
|
position: "absolute",
|
|
233647
233647
|
bottom: "0px",
|
|
@@ -233664,7 +233664,7 @@ const useStyles$q = makeStyles()(() => ({
|
|
|
233664
233664
|
}));
|
|
233665
233665
|
function ChannelNamesLegend(props) {
|
|
233666
233666
|
const { images, imageLayerScopes, imageLayerCoordination, imageChannelScopesByLayer, imageChannelCoordination } = props;
|
|
233667
|
-
const { classes: classes2 } = useStyles$
|
|
233667
|
+
const { classes: classes2 } = useStyles$r();
|
|
233668
233668
|
const reversedImageLayerScopes = useMemo$1(() => [...imageLayerScopes || []].reverse(), [imageLayerScopes]);
|
|
233669
233669
|
return jsx$1("div", { className: classes2.channelNamesLegendContainer, children: imageLayerScopes ? reversedImageLayerScopes.map((layerScope) => {
|
|
233670
233670
|
const layerCoordination = imageLayerCoordination[0][layerScope];
|
|
@@ -253533,7 +253533,7 @@ const ToggleFixedAxisButton = ({ setSpatialAxisFixed, spatialAxisFixed, use3d })
|
|
|
253533
253533
|
id: `spatial-camera-axis-${toggleAxisId}`
|
|
253534
253534
|
} } }) })] });
|
|
253535
253535
|
};
|
|
253536
|
-
function SpatialOptions(props) {
|
|
253536
|
+
function SpatialOptions$1(props) {
|
|
253537
253537
|
const { observationsLabel, cellColorEncoding, setCellColorEncoding, setSpatialAxisFixed, spatialAxisFixed, use3d, tooltipsVisible, setTooltipsVisible, geneExpressionColormap, setGeneExpressionColormap, geneExpressionColormapRange, setGeneExpressionColormapRange, canShowExpressionOptions, canShowColorEncodingOption, canShow3DOptions, featureAggregationStrategy, setFeatureAggregationStrategy } = props;
|
|
253538
253538
|
const spatialOptionsId = $bdb11010cef70236$export$f680877a34711e37();
|
|
253539
253539
|
function handleGeneExpressionColormapChange(event2) {
|
|
@@ -253847,7 +253847,7 @@ function SpatialSubscriber$1(props) {
|
|
|
253847
253847
|
const canShow3DOptions = canLoad3DLayers && !(disable3d?.length === imageLayerLoaders.length) && !globalDisable3d;
|
|
253848
253848
|
const options = useMemo$1(() => {
|
|
253849
253849
|
if (canShow3DOptions || hasExpressionData) {
|
|
253850
|
-
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 });
|
|
253850
|
+
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 });
|
|
253851
253851
|
}
|
|
253852
253852
|
return null;
|
|
253853
253853
|
}, [
|
|
@@ -253936,6 +253936,12 @@ function SpatialSubscriber$1(props) {
|
|
|
253936
253936
|
featureAggregationStrategy: featureAggregationStrategyToUse
|
|
253937
253937
|
})] });
|
|
253938
253938
|
}
|
|
253939
|
+
function getVolumeModelMatrix(data2, modelMatrix2) {
|
|
253940
|
+
const source2 = Array.isArray(data2) ? data2[0] : data2;
|
|
253941
|
+
const vivPhysicalSizeScalingMatrix = getPhysicalSizeScalingMatrix(source2);
|
|
253942
|
+
const base2 = Array.isArray(modelMatrix2) && modelMatrix2.length === 16 ? new Matrix4(modelMatrix2) : new Matrix4().identity();
|
|
253943
|
+
return base2.multiplyRight(vivPhysicalSizeScalingMatrix.invert());
|
|
253944
|
+
}
|
|
253939
253945
|
function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, obsSpots, obsSegmentations, obsSegmentationsLocations, segmentationChannelScopesByLayer, images, is3dMode: use3d, isReady }) {
|
|
253940
253946
|
let globalXMin = null;
|
|
253941
253947
|
let globalXMax = null;
|
|
@@ -253949,7 +253955,8 @@ function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, o
|
|
|
253949
253955
|
const modelMatrix2 = layerData?.image?.instance.getModelMatrix();
|
|
253950
253956
|
if (imageLayerLoader) {
|
|
253951
253957
|
const viewSize = { height: height2, width: width2 };
|
|
253952
|
-
const
|
|
253958
|
+
const viewStateModelMatrix = use3d ? getVolumeModelMatrix(imageLayerLoader, modelMatrix2) : new Matrix4(modelMatrix2);
|
|
253959
|
+
const { target: target2, zoom: newViewStateZoom } = getDefaultInitialViewState(imageLayerLoader, viewSize, zoomBackoff, use3d, viewStateModelMatrix);
|
|
253953
253960
|
const maxExtent = Math.max(width2 / 2 ** newViewStateZoom, height2 / 2 ** newViewStateZoom);
|
|
253954
253961
|
const xMin = target2[0] - maxExtent / 2;
|
|
253955
253962
|
const xMax = target2[0] + maxExtent / 2;
|
|
@@ -254054,6 +254061,9 @@ function getInitialSpatialTargets({ width: width2, height: height2, obsPoints, o
|
|
|
254054
254061
|
initialTargetZ
|
|
254055
254062
|
};
|
|
254056
254063
|
}
|
|
254064
|
+
function isLayerVisible(spatialLayerVisible) {
|
|
254065
|
+
return spatialLayerVisible !== false;
|
|
254066
|
+
}
|
|
254057
254067
|
function getLayerLoaderTuple(data2, use3d) {
|
|
254058
254068
|
const loader2 = Array.isArray(data2) && data2.length > 1 || !Array.isArray(data2) ? data2 : data2[0];
|
|
254059
254069
|
if (use3d) {
|
|
@@ -254796,6 +254806,9 @@ class Spatial2 extends AbstractSpatialOrScatterplot {
|
|
|
254796
254806
|
const visible = layerCoordination[CoordinationType$1.SPATIAL_LAYER_VISIBLE];
|
|
254797
254807
|
const transparentColor = layerCoordination[CoordinationType$1.SPATIAL_LAYER_TRANSPARENT_COLOR];
|
|
254798
254808
|
const useTransparentColor = Array.isArray(transparentColor) && transparentColor.length === 3;
|
|
254809
|
+
if (is3dMode && !isLayerVisible(visible)) {
|
|
254810
|
+
return null;
|
|
254811
|
+
}
|
|
254799
254812
|
const extensions = getVivLayerExtensions(is3dMode, colormap, renderingMode);
|
|
254800
254813
|
const rgbInterleavedProps = {};
|
|
254801
254814
|
if (imageWrapperInstance.isInterleaved()) {
|
|
@@ -255585,15 +255598,32 @@ class ErrorBoundary extends React__default.Component {
|
|
|
255585
255598
|
}
|
|
255586
255599
|
}
|
|
255587
255600
|
const LazySpatialThree = React__default.lazy(async () => {
|
|
255588
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
255601
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-CHThyhx2.js").then((n3) => n3.a);
|
|
255589
255602
|
return { default: SpatialWrapper2 };
|
|
255590
255603
|
});
|
|
255591
255604
|
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 }) }) }) }));
|
|
255592
255605
|
const LazySpatialAccelerated = React__default.lazy(async () => {
|
|
255593
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
255606
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-D3nIHwEl.js");
|
|
255594
255607
|
return { default: SpatialWrapper2 };
|
|
255595
255608
|
});
|
|
255596
255609
|
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 }) }) }) }));
|
|
255610
|
+
const useStyles$q = makeStyles()(() => ({
|
|
255611
|
+
spatialBetaCameraLabel: {
|
|
255612
|
+
padding: "0px 0px 0px 16px"
|
|
255613
|
+
},
|
|
255614
|
+
spatialBetaToggleBox: {
|
|
255615
|
+
padding: "0px"
|
|
255616
|
+
}
|
|
255617
|
+
}));
|
|
255618
|
+
function SpatialOptions(props) {
|
|
255619
|
+
const { spatialAxisFixed, setSpatialAxisFixed, use3d } = props;
|
|
255620
|
+
const toggleAxisId = $bdb11010cef70236$export$f680877a34711e37();
|
|
255621
|
+
const { classes: classes2 } = useStyles$q();
|
|
255622
|
+
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: {
|
|
255623
|
+
"aria-label": "Fix or not fix spatial camera axis",
|
|
255624
|
+
id: `spatial-camera-axis-${toggleAxisId}`
|
|
255625
|
+
} } }) })] }) });
|
|
255626
|
+
}
|
|
255597
255627
|
const DEFAULT_FEATURE_AGGREGATION_STRATEGY$1 = "first";
|
|
255598
255628
|
function useAggregatedNormalizedExpressionDataForLayers({ multiExpressionData: spotMultiExpressionData, layerScopes: spotLayerScopes, layerCoordination: spotLayerCoordination }) {
|
|
255599
255629
|
const [spotMultiExpressionNormDataAggregated, spotMultiExpressionExtentsAggregated] = useMemo$1(() => {
|
|
@@ -255807,6 +255837,8 @@ function SpatialSubscriber(props) {
|
|
|
255807
255837
|
setSpatialRotationY: setRotationY,
|
|
255808
255838
|
setSpatialRotationZ: setRotationZ,
|
|
255809
255839
|
setSpatialRotationOrbit: setRotationOrbit,
|
|
255840
|
+
setSpatialOrbitAxis: setOrbitAxis,
|
|
255841
|
+
setSpatialAxisFixed,
|
|
255810
255842
|
// TODO: get obsSets per-layer or per-channel
|
|
255811
255843
|
setAdditionalObsSets,
|
|
255812
255844
|
setObsSetColor,
|
|
@@ -256062,7 +256094,23 @@ function SpatialSubscriber(props) {
|
|
|
256062
256094
|
initialTargetZ,
|
|
256063
256095
|
initialZoom
|
|
256064
256096
|
]);
|
|
256065
|
-
const
|
|
256097
|
+
const prevIs3dMode = useRef(is3dMode);
|
|
256098
|
+
useEffect(() => {
|
|
256099
|
+
if (prevIs3dMode.current === is3dMode) {
|
|
256100
|
+
return;
|
|
256101
|
+
}
|
|
256102
|
+
if (typeof defaultTargetX !== "number" || typeof defaultTargetY !== "number") {
|
|
256103
|
+
return;
|
|
256104
|
+
}
|
|
256105
|
+
prevIs3dMode.current = is3dMode;
|
|
256106
|
+
setTargetX(defaultTargetX);
|
|
256107
|
+
setTargetY(defaultTargetY);
|
|
256108
|
+
setTargetZ(defaultTargetZ);
|
|
256109
|
+
setZoom(defaultZoom);
|
|
256110
|
+
setRotationX(is3dMode ? 0 : null);
|
|
256111
|
+
setRotationOrbit(is3dMode ? 0 : null);
|
|
256112
|
+
}, [is3dMode, defaultTargetX, defaultTargetY, defaultTargetZ, defaultZoom]);
|
|
256113
|
+
const setViewState = ({ zoom: newZoom, target: target2, rotationX: newRotationX, rotationOrbit: newRotationOrbit, orbitAxis: newOrbitAxis }) => {
|
|
256066
256114
|
setZoom(newZoom);
|
|
256067
256115
|
setTargetX(target2[0]);
|
|
256068
256116
|
setTargetY(target2[1]);
|
|
@@ -256072,6 +256120,9 @@ function SpatialSubscriber(props) {
|
|
|
256072
256120
|
}
|
|
256073
256121
|
setRotationX(newRotationX);
|
|
256074
256122
|
setRotationOrbit(newRotationOrbit);
|
|
256123
|
+
if (newOrbitAxis !== void 0) {
|
|
256124
|
+
setOrbitAxis(newOrbitAxis);
|
|
256125
|
+
}
|
|
256075
256126
|
}
|
|
256076
256127
|
};
|
|
256077
256128
|
const subtitle = useMemo$1(() => {
|
|
@@ -256212,7 +256263,7 @@ function SpatialSubscriber(props) {
|
|
|
256212
256263
|
}
|
|
256213
256264
|
}
|
|
256214
256265
|
};
|
|
256215
|
-
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 ? {
|
|
256266
|
+
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 ? {
|
|
256216
256267
|
zoom: zoom2,
|
|
256217
256268
|
target: [targetX2, targetY2, targetZ],
|
|
256218
256269
|
rotationX,
|
|
@@ -265064,7 +265115,12 @@ const useEllipsisMenuStyles = makeStyles()(() => ({
|
|
|
265064
265115
|
padding: 0,
|
|
265065
265116
|
marginBottom: "0 !important",
|
|
265066
265117
|
marginLeft: "4px",
|
|
265067
|
-
marginTop: "12px !important"
|
|
265118
|
+
marginTop: "12px !important",
|
|
265119
|
+
// Truncate rather than widening the row's label cell, which would push the
|
|
265120
|
+
// options menu and layer type icon onto a second line in narrow containers.
|
|
265121
|
+
overflow: "hidden",
|
|
265122
|
+
textOverflow: "ellipsis",
|
|
265123
|
+
whiteSpace: "nowrap"
|
|
265068
265124
|
},
|
|
265069
265125
|
imageLayerOpacitySlider: {
|
|
265070
265126
|
marginTop: "7px"
|
|
@@ -265077,6 +265133,31 @@ const useEllipsisMenuStyles = makeStyles()(() => ({
|
|
|
265077
265133
|
padding: "4px"
|
|
265078
265134
|
}
|
|
265079
265135
|
}));
|
|
265136
|
+
const CHANNEL_ROW_WRAP_WIDTH = 450;
|
|
265137
|
+
const wrapQuery = `@container (max-width: ${CHANNEL_ROW_WRAP_WIDTH}px)`;
|
|
265138
|
+
const channelRowContainerSx = { containerType: "inline-size" };
|
|
265139
|
+
const channelSliderCellSx = {
|
|
265140
|
+
[wrapQuery]: {
|
|
265141
|
+
width: "100%",
|
|
265142
|
+
order: 1,
|
|
265143
|
+
paddingLeft: "12px",
|
|
265144
|
+
paddingRight: "12px"
|
|
265145
|
+
}
|
|
265146
|
+
};
|
|
265147
|
+
const channelSelectorCellSx = {
|
|
265148
|
+
[wrapQuery]: {
|
|
265149
|
+
flexBasis: 0,
|
|
265150
|
+
flexGrow: 1
|
|
265151
|
+
}
|
|
265152
|
+
};
|
|
265153
|
+
const channelControlCellSx = {
|
|
265154
|
+
[wrapQuery]: {
|
|
265155
|
+
width: "auto",
|
|
265156
|
+
flexGrow: 0,
|
|
265157
|
+
flexShrink: 0
|
|
265158
|
+
}
|
|
265159
|
+
};
|
|
265160
|
+
const channelSpacerCellSx = { flexShrink: 0, minWidth: "44px" };
|
|
265080
265161
|
const useStyles$j = makeStyles()(() => ({
|
|
265081
265162
|
colorPickerPaper: {
|
|
265082
265163
|
overflow: "hidden",
|
|
@@ -265312,7 +265393,7 @@ const useStyles$g = makeStyles()(() => ({
|
|
|
265312
265393
|
fill: "currentColor",
|
|
265313
265394
|
fontSize: "14px",
|
|
265314
265395
|
width: "50%",
|
|
265315
|
-
maxWidth: "
|
|
265396
|
+
maxWidth: "20px"
|
|
265316
265397
|
}
|
|
265317
265398
|
}));
|
|
265318
265399
|
function PointLayerEllipsisMenu(props) {
|
|
@@ -265431,15 +265512,21 @@ function PointLayerController(props) {
|
|
|
265431
265512
|
setFeatureColor(nextFeatureColor);
|
|
265432
265513
|
}
|
|
265433
265514
|
}, [featureSelection, obsColorEncoding, featureIndex, featureColor]);
|
|
265434
|
-
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] });
|
|
265515
|
+
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] });
|
|
265435
265516
|
}
|
|
265436
265517
|
const useStyles$f = makeStyles()(() => ({
|
|
265518
|
+
// Cap the channel name's width; imageLayerName ellipsizes the overflow.
|
|
265519
|
+
channelName: {
|
|
265520
|
+
overflow: "hidden",
|
|
265521
|
+
textOverflow: "ellipsis",
|
|
265522
|
+
whiteSpace: "nowrap"
|
|
265523
|
+
},
|
|
265437
265524
|
layerTypeSegmentationIcon: {
|
|
265438
265525
|
height: "100%",
|
|
265439
265526
|
marginLeft: "1px",
|
|
265440
265527
|
fill: "currentColor",
|
|
265441
265528
|
fontSize: "24px",
|
|
265442
|
-
width: "
|
|
265529
|
+
width: "24px",
|
|
265443
265530
|
maxWidth: "24px"
|
|
265444
265531
|
}
|
|
265445
265532
|
}));
|
|
@@ -265473,7 +265560,7 @@ function SegmentationChannelController(props) {
|
|
|
265473
265560
|
setVisible(nextVisible);
|
|
265474
265561
|
}, [visible, setVisible]);
|
|
265475
265562
|
const handleOpacityChange = useCallback((e3, v) => setOpacity2(v), [setOpacity2]);
|
|
265476
|
-
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 }) })] }) }) });
|
|
265563
|
+
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 }) })] }) }) });
|
|
265477
265564
|
}
|
|
265478
265565
|
function SegmentationLayerController(props) {
|
|
265479
265566
|
const { theme, layerScope, layerCoordination, setLayerCoordination, channelScopes, channelCoordination, setChannelCoordination } = props;
|
|
@@ -268342,7 +268429,7 @@ function ImageChannelController(props) {
|
|
|
268342
268429
|
setWindow2(minMaxDomain);
|
|
268343
268430
|
}
|
|
268344
268431
|
}
|
|
268345
|
-
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 }) })] });
|
|
268432
|
+
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 }) })] });
|
|
268346
268433
|
}
|
|
268347
268434
|
function DimensionSlider(props) {
|
|
268348
268435
|
const { boundingSlice, sliceValue, setSliceValue, label: label2 } = props;
|
|
@@ -268543,7 +268630,7 @@ function ImageLayerController(props) {
|
|
|
268543
268630
|
const { classes: menuClasses } = useEllipsisMenuStyles();
|
|
268544
268631
|
const { classes: controllerSectionClasses } = useControllerSectionStyles();
|
|
268545
268632
|
const isMultiChannel = photometricInterpretation !== "RGB";
|
|
268546
|
-
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(ExpandMore, {}) }) : null] })] }), isMultiChannel && open2 ? jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [channelScopes.map((cScope) => {
|
|
268633
|
+
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(ExpandMore, {}) }) : null] })] }), isMultiChannel && open2 ? jsxs(Grid$1, { container: true, direction: "column", justifyContent: "space-between", className: classes2.imageChannelControllerGrid, children: [channelScopes.map((cScope) => {
|
|
268547
268634
|
const { spatialTargetC, spatialChannelVisible, spatialChannelOpacity, spatialChannelColor, spatialChannelWindow, spatialMaxResolution } = channelCoordination[cScope];
|
|
268548
268635
|
const { setSpatialTargetC, setSpatialChannelVisible, setSpatialChannelOpacity, setSpatialChannelColor, setSpatialChannelWindow, setSpatialMaxResolution } = setChannelCoordination[cScope];
|
|
268549
268636
|
const channelIndex = image2?.getChannelIndex(spatialTargetC);
|
|
@@ -268573,7 +268660,7 @@ const useStyles$9 = makeStyles()((theme) => ({
|
|
|
268573
268660
|
}
|
|
268574
268661
|
}));
|
|
268575
268662
|
function GlobalDimensionSlider(props) {
|
|
268576
|
-
const { label: label2, targetValue, setTargetValue, min: min2 = 0, max: max2 = 0, spatialRenderingMode = null, setSpatialRenderingMode = null } = props;
|
|
268663
|
+
const { label: label2, targetValue, setTargetValue, min: min2 = 0, max: max2 = 0, spatialRenderingMode = null, setSpatialRenderingMode = null, enable3d = true } = props;
|
|
268577
268664
|
const { classes: lcClasses } = useControllerSectionStyles();
|
|
268578
268665
|
const { classes: classes2 } = useStyles$9();
|
|
268579
268666
|
const isForZ = spatialRenderingMode !== null;
|
|
@@ -268584,7 +268671,7 @@ function GlobalDimensionSlider(props) {
|
|
|
268584
268671
|
setTargetValue(Math.floor(targetValue));
|
|
268585
268672
|
}
|
|
268586
268673
|
}
|
|
268587
|
-
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 })] }) }) });
|
|
268674
|
+
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 })] }) }) });
|
|
268588
268675
|
}
|
|
268589
268676
|
const useStyles$8 = makeStyles()(() => ({
|
|
268590
268677
|
layerTypeCentroidSegmentationIcon: {
|
|
@@ -268682,7 +268769,7 @@ function SegmentationCentroidsController(props) {
|
|
|
268682
268769
|
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 }) })] }) }) });
|
|
268683
268770
|
}
|
|
268684
268771
|
function LayerController(props) {
|
|
268685
|
-
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;
|
|
268772
|
+
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;
|
|
268686
268773
|
const anyLayerHasT = Object.values(images || {}).some((image2) => image2?.image?.instance.hasTStack());
|
|
268687
268774
|
const anyLayerHasZ = Object.values(images || {}).some((image2) => image2?.image?.instance.hasZStack());
|
|
268688
268775
|
const maxT = Object.values(images || {}).reduce((a2, h2) => Math.max(a2, h2?.image?.instance.getNumT()), 1) - 1;
|
|
@@ -268691,10 +268778,10 @@ function LayerController(props) {
|
|
|
268691
268778
|
const reversedSpotLayerScopes = useMemo$1(() => [...spotLayerScopes || []].reverse(), [spotLayerScopes]);
|
|
268692
268779
|
const reversedPointLayerScopes = useMemo$1(() => [...pointLayerScopes || []].filter((scope) => !pairedPointScopes.has(scope)).reverse(), [pointLayerScopes, pairedPointScopes]);
|
|
268693
268780
|
const reversedSegmentationLayerScopes = useMemo$1(() => [...segmentationLayerScopes || []].filter((scope) => !pairedSegScopes.has(scope)).reverse(), [segmentationLayerScopes, pairedSegScopes]);
|
|
268694
|
-
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))] });
|
|
268781
|
+
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))] });
|
|
268695
268782
|
}
|
|
268696
268783
|
function LayerControllerSubscriber(props) {
|
|
268697
|
-
const { coordinationScopes: coordinationScopesRaw, coordinationScopesBy: coordinationScopesByRaw, closeButtonVisible, downloadButtonVisible, removeGridComponent, theme, title: title2 = "Spatial Layers", uuid: uuid2, layerPerFeatureForPoints = false, cameraPresets, helpText = ViewHelpMapping.LAYER_CONTROLLER_BETA } = props;
|
|
268784
|
+
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;
|
|
268698
268785
|
const loaders = useLoaders();
|
|
268699
268786
|
const mergeCoordination = useMergeCoordination();
|
|
268700
268787
|
const coordinationScopes = useCoordinationScopes(coordinationScopesRaw);
|
|
@@ -268885,7 +268972,7 @@ function LayerControllerSubscriber(props) {
|
|
|
268885
268972
|
imageDataStatus,
|
|
268886
268973
|
pointMultiIndicesDataStatus
|
|
268887
268974
|
]);
|
|
268888
|
-
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 }) });
|
|
268975
|
+
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 }) });
|
|
268889
268976
|
}
|
|
268890
268977
|
const isIterable$2 = (obj) => Symbol.iterator in obj;
|
|
268891
268978
|
const hasIterableEntries = (value2) => (
|
|
@@ -270800,7 +270887,7 @@ function HiglassGlobalStyles(props) {
|
|
|
270800
270887
|
}
|
|
270801
270888
|
register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
|
|
270802
270889
|
const LazyHiGlassComponent = React__default.lazy(async () => {
|
|
270803
|
-
const { HiGlassComponent } = await import("./higlass-
|
|
270890
|
+
const { HiGlassComponent } = await import("./higlass-BAzAjF0O.js");
|
|
270804
270891
|
return { default: HiGlassComponent };
|
|
270805
270892
|
});
|
|
270806
270893
|
const HG_SIZE = 800;
|
|
@@ -273757,7 +273844,7 @@ function NeuroglancerGlobalStyles(props) {
|
|
|
273757
273844
|
const { classes: classes2 } = props;
|
|
273758
273845
|
return jsxs(Fragment, { children: [jsx$1(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsx$1(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
|
|
273759
273846
|
}
|
|
273760
|
-
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-
|
|
273847
|
+
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-BIKD9asK.js"));
|
|
273761
273848
|
function createWorker() {
|
|
273762
273849
|
const worker = new WorkerFactory$1();
|
|
273763
273850
|
worker.AsyncComputationWorker = WorkerFactory;
|
|
@@ -273851,22 +273938,6 @@ class NeuroglancerComp extends PureComponent {
|
|
|
273851
273938
|
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 }) }) })] });
|
|
273852
273939
|
}
|
|
273853
273940
|
}
|
|
273854
|
-
function useMemoCustomComparison(factory2, dependencies2, customIsEqual) {
|
|
273855
|
-
const ref2 = useRef(
|
|
273856
|
-
/** @type {{ deps: any; value: T } | undefined} */
|
|
273857
|
-
void 0
|
|
273858
|
-
);
|
|
273859
|
-
if (ref2.current === void 0 || !customIsEqual(ref2.current.deps, dependencies2)) {
|
|
273860
|
-
ref2.current = { deps: dependencies2, value: factory2() };
|
|
273861
|
-
}
|
|
273862
|
-
return ref2.current.value;
|
|
273863
|
-
}
|
|
273864
|
-
const shallowDiff = (prevDeps, nextDeps, depName) => prevDeps[depName] !== nextDeps[depName];
|
|
273865
|
-
const shallowDiffByLayer = (prevDeps, nextDeps, depName, scopeName) => prevDeps?.[depName]?.[scopeName] !== nextDeps?.[depName]?.[scopeName];
|
|
273866
|
-
const shallowDiffByChannel = (prevDeps, nextDeps, depName, firstName, secondName) => prevDeps?.[depName]?.[firstName]?.[secondName] !== nextDeps?.[depName]?.[firstName]?.[secondName];
|
|
273867
|
-
const shallowDiffByChannelWithKeys = (prevDeps, nextDeps, depName, firstName, secondName, keys2) => keys2.some((k) => prevDeps?.[depName]?.[firstName]?.[secondName]?.[k] !== nextDeps?.[depName]?.[firstName]?.[secondName]?.[k]);
|
|
273868
|
-
const shallowDiffByLayerCoordinationWithKeys = (prevDeps, nextDeps, depName, layerScope, keys2) => keys2.some((k) => prevDeps?.[depName]?.[0]?.[layerScope]?.[k] !== nextDeps?.[depName]?.[0]?.[layerScope]?.[k]);
|
|
273869
|
-
const shallowDiffByChannelCoordinationWithKeys = (prevDeps, nextDeps, depName, layerScope, channelScope, keys2) => keys2.some((k) => prevDeps?.[depName]?.[0]?.[layerScope]?.[channelScope]?.[k] !== nextDeps?.[depName]?.[0]?.[layerScope]?.[channelScope]?.[k]);
|
|
273870
273941
|
function customIsEqualForCellColors(prevDeps, nextDeps) {
|
|
273871
273942
|
let forceUpdate = false;
|
|
273872
273943
|
const curriedShallowDiff = (depName) => shallowDiff(prevDeps, nextDeps, depName);
|
|
@@ -328013,7 +328084,7 @@ const VEGA_THEMES = {
|
|
|
328013
328084
|
};
|
|
328014
328085
|
const DATASET_NAME = "table";
|
|
328015
328086
|
function VegaGlobalStyles() {
|
|
328016
|
-
const { theme } = useStyles$
|
|
328087
|
+
const { theme } = useStyles$A();
|
|
328017
328088
|
return jsx$1(GlobalStyles$3, { styles: {
|
|
328018
328089
|
"#vg-tooltip-element.vg-tooltip.custom-theme": {
|
|
328019
328090
|
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)",
|
|
@@ -328047,7 +328118,7 @@ function renderTooltipContents(tooltipText) {
|
|
|
328047
328118
|
}
|
|
328048
328119
|
function VegaPlot(props) {
|
|
328049
328120
|
const { spec: partialSpec, data: data2, getTooltipText, signalListeners, renderer = "svg", onNewView } = props;
|
|
328050
|
-
const { classes: tooltipClasses2 } = useStyles$
|
|
328121
|
+
const { classes: tooltipClasses2 } = useStyles$v();
|
|
328051
328122
|
const tooltipHandler = useMemo$1(() => {
|
|
328052
328123
|
if (typeof getTooltipText === "function") {
|
|
328053
328124
|
const tooltipConfig = {
|
|
@@ -333626,7 +333697,26 @@ class ImageWrapper {
|
|
|
333626
333697
|
}
|
|
333627
333698
|
return true;
|
|
333628
333699
|
}
|
|
333629
|
-
|
|
333700
|
+
// TODO: make stripPhysicalSizes the default behavior,
|
|
333701
|
+
// and remove it as a parameter, once it is no longer
|
|
333702
|
+
// used by spatial-accelerated and spatial-three.
|
|
333703
|
+
getData(stripPhysicalSizes = true) {
|
|
333704
|
+
if (stripPhysicalSizes) {
|
|
333705
|
+
const { data: data2 } = this.vivLoader;
|
|
333706
|
+
const newData = data2.map((d) => {
|
|
333707
|
+
if ("meta" in d) {
|
|
333708
|
+
const { meta } = d;
|
|
333709
|
+
if (meta && "physicalSizes" in meta) {
|
|
333710
|
+
const newMeta = { ...meta, physicalSizes: void 0 };
|
|
333711
|
+
const clone2 = Object.create(Object.getPrototypeOf(d));
|
|
333712
|
+
Object.assign(clone2, d, { meta: newMeta });
|
|
333713
|
+
return clone2;
|
|
333714
|
+
}
|
|
333715
|
+
}
|
|
333716
|
+
return d;
|
|
333717
|
+
});
|
|
333718
|
+
return newData;
|
|
333719
|
+
}
|
|
333630
333720
|
return this.vivLoader.data;
|
|
333631
333721
|
}
|
|
333632
333722
|
getModelMatrix() {
|
|
@@ -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-BMSAuguS.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-CkzTsWCM.js").catch(() => ({ default: GeometryAndMesh })));
|
|
949
|
+
const LazyXRSceneComponents = React__default.lazy(() => import("./XRSceneComponents-BXLKYaoc.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-Bn2BWlKq.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-BW9c-kaX.js").catch(() => ({
|
|
1312
1313
|
default: () => null
|
|
1313
1314
|
}))
|
|
1314
1315
|
);
|
|
@@ -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-BMSAuguS.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
|
}
|
package/dist/index.js
CHANGED
|
@@ -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-BMSAuguS.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/launcher",
|
|
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": {
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
"use-query-params": "^1.1.9",
|
|
21
21
|
"react-dropzone": "^14.3.8",
|
|
22
22
|
"@tanstack/react-query": "^5.80.2",
|
|
23
|
-
"@vitessce/all": "4.0.
|
|
24
|
-
"@vitessce/
|
|
25
|
-
"@vitessce/example-
|
|
26
|
-
"@vitessce/globals": "4.0.
|
|
27
|
-
"@vitessce/
|
|
28
|
-
"@vitessce/
|
|
29
|
-
"@vitessce/
|
|
30
|
-
"@vitessce/config": "4.0.
|
|
23
|
+
"@vitessce/all": "4.0.4",
|
|
24
|
+
"@vitessce/constants-internal": "4.0.4",
|
|
25
|
+
"@vitessce/example-configs": "4.0.4",
|
|
26
|
+
"@vitessce/globals": "4.0.4",
|
|
27
|
+
"@vitessce/example-plugins": "4.0.4",
|
|
28
|
+
"@vitessce/styles": "4.0.4",
|
|
29
|
+
"@vitessce/vit-s": "4.0.4",
|
|
30
|
+
"@vitessce/config": "4.0.4"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"react": "19.2.6",
|