@vitessce/vit-s 3.8.10 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -8616,11 +8616,6 @@ const { tss } = createTss({
8616
8616
  "usePlugin": useMuiThemeStyleOverridesPlugin
8617
8617
  });
8618
8618
  const useStyles$5 = tss.create({});
8619
- function chainPropTypes(propType1, propType2) {
8620
- return function validate(...args) {
8621
- return propType1(...args) || propType2(...args);
8622
- };
8623
- }
8624
8619
  function GlobalStyles(props) {
8625
8620
  return /* @__PURE__ */ jsxRuntimeExports.jsx(GlobalStyles$1, {
8626
8621
  ...props,
@@ -8672,6 +8667,365 @@ const memoTheme = unstable_memoTheme;
8672
8667
  function useDefaultProps(params) {
8673
8668
  return useDefaultProps$1(params);
8674
8669
  }
8670
+ function getSvgIconUtilityClass(slot) {
8671
+ return generateUtilityClass("MuiSvgIcon", slot);
8672
+ }
8673
+ generateUtilityClasses("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]);
8674
+ const useUtilityClasses$j = (ownerState) => {
8675
+ const {
8676
+ color: color2,
8677
+ fontSize,
8678
+ classes
8679
+ } = ownerState;
8680
+ const slots = {
8681
+ root: ["root", color2 !== "inherit" && `color${capitalize$1(color2)}`, `fontSize${capitalize$1(fontSize)}`]
8682
+ };
8683
+ return composeClasses(slots, getSvgIconUtilityClass, classes);
8684
+ };
8685
+ const SvgIconRoot = styled("svg", {
8686
+ name: "MuiSvgIcon",
8687
+ slot: "Root",
8688
+ overridesResolver: (props, styles2) => {
8689
+ const {
8690
+ ownerState
8691
+ } = props;
8692
+ return [styles2.root, ownerState.color !== "inherit" && styles2[`color${capitalize$1(ownerState.color)}`], styles2[`fontSize${capitalize$1(ownerState.fontSize)}`]];
8693
+ }
8694
+ })(memoTheme(({
8695
+ theme
8696
+ }) => {
8697
+ var _a3, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l, _m, _n;
8698
+ return {
8699
+ userSelect: "none",
8700
+ width: "1em",
8701
+ height: "1em",
8702
+ display: "inline-block",
8703
+ flexShrink: 0,
8704
+ transition: (_d2 = (_a3 = theme.transitions) == null ? void 0 : _a3.create) == null ? void 0 : _d2.call(_a3, "fill", {
8705
+ duration: (_c2 = (_b2 = (theme.vars ?? theme).transitions) == null ? void 0 : _b2.duration) == null ? void 0 : _c2.shorter
8706
+ }),
8707
+ variants: [
8708
+ {
8709
+ props: (props) => !props.hasSvgAsChild,
8710
+ style: {
8711
+ // the <svg> will define the property that has `currentColor`
8712
+ // for example heroicons uses fill="none" and stroke="currentColor"
8713
+ fill: "currentColor"
8714
+ }
8715
+ },
8716
+ {
8717
+ props: {
8718
+ fontSize: "inherit"
8719
+ },
8720
+ style: {
8721
+ fontSize: "inherit"
8722
+ }
8723
+ },
8724
+ {
8725
+ props: {
8726
+ fontSize: "small"
8727
+ },
8728
+ style: {
8729
+ fontSize: ((_f2 = (_e2 = theme.typography) == null ? void 0 : _e2.pxToRem) == null ? void 0 : _f2.call(_e2, 20)) || "1.25rem"
8730
+ }
8731
+ },
8732
+ {
8733
+ props: {
8734
+ fontSize: "medium"
8735
+ },
8736
+ style: {
8737
+ fontSize: ((_h2 = (_g2 = theme.typography) == null ? void 0 : _g2.pxToRem) == null ? void 0 : _h2.call(_g2, 24)) || "1.5rem"
8738
+ }
8739
+ },
8740
+ {
8741
+ props: {
8742
+ fontSize: "large"
8743
+ },
8744
+ style: {
8745
+ fontSize: ((_j2 = (_i2 = theme.typography) == null ? void 0 : _i2.pxToRem) == null ? void 0 : _j2.call(_i2, 35)) || "2.1875rem"
8746
+ }
8747
+ },
8748
+ // TODO v5 deprecate color prop, v6 remove for sx
8749
+ ...Object.entries((theme.vars ?? theme).palette).filter(([, value]) => value && value.main).map(([color2]) => {
8750
+ var _a4, _b3;
8751
+ return {
8752
+ props: {
8753
+ color: color2
8754
+ },
8755
+ style: {
8756
+ color: (_b3 = (_a4 = (theme.vars ?? theme).palette) == null ? void 0 : _a4[color2]) == null ? void 0 : _b3.main
8757
+ }
8758
+ };
8759
+ }),
8760
+ {
8761
+ props: {
8762
+ color: "action"
8763
+ },
8764
+ style: {
8765
+ color: (_l = (_k2 = (theme.vars ?? theme).palette) == null ? void 0 : _k2.action) == null ? void 0 : _l.active
8766
+ }
8767
+ },
8768
+ {
8769
+ props: {
8770
+ color: "disabled"
8771
+ },
8772
+ style: {
8773
+ color: (_n = (_m = (theme.vars ?? theme).palette) == null ? void 0 : _m.action) == null ? void 0 : _n.disabled
8774
+ }
8775
+ },
8776
+ {
8777
+ props: {
8778
+ color: "inherit"
8779
+ },
8780
+ style: {
8781
+ color: void 0
8782
+ }
8783
+ }
8784
+ ]
8785
+ };
8786
+ }));
8787
+ const SvgIcon = /* @__PURE__ */ React$1.forwardRef(function SvgIcon2(inProps, ref) {
8788
+ const props = useDefaultProps({
8789
+ props: inProps,
8790
+ name: "MuiSvgIcon"
8791
+ });
8792
+ const {
8793
+ children,
8794
+ className,
8795
+ color: color2 = "inherit",
8796
+ component = "svg",
8797
+ fontSize = "medium",
8798
+ htmlColor,
8799
+ inheritViewBox = false,
8800
+ titleAccess,
8801
+ viewBox = "0 0 24 24",
8802
+ ...other
8803
+ } = props;
8804
+ const hasSvgAsChild = /* @__PURE__ */ React$1.isValidElement(children) && children.type === "svg";
8805
+ const ownerState = {
8806
+ ...props,
8807
+ color: color2,
8808
+ component,
8809
+ fontSize,
8810
+ instanceFontSize: inProps.fontSize,
8811
+ inheritViewBox,
8812
+ viewBox,
8813
+ hasSvgAsChild
8814
+ };
8815
+ const more = {};
8816
+ if (!inheritViewBox) {
8817
+ more.viewBox = viewBox;
8818
+ }
8819
+ const classes = useUtilityClasses$j(ownerState);
8820
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(SvgIconRoot, {
8821
+ as: component,
8822
+ className: clsx$1(classes.root, className),
8823
+ focusable: "false",
8824
+ color: htmlColor,
8825
+ "aria-hidden": titleAccess ? void 0 : true,
8826
+ role: titleAccess ? "img" : void 0,
8827
+ ref,
8828
+ ...more,
8829
+ ...other,
8830
+ ...hasSvgAsChild && children.props,
8831
+ ownerState,
8832
+ children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /* @__PURE__ */ jsxRuntimeExports.jsx("title", {
8833
+ children: titleAccess
8834
+ }) : null]
8835
+ });
8836
+ });
8837
+ SvgIcon.propTypes = {
8838
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
8839
+ // │ These PropTypes are generated from the TypeScript type definitions. │
8840
+ // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
8841
+ // └─────────────────────────────────────────────────────────────────────┘
8842
+ /**
8843
+ * Node passed into the SVG element.
8844
+ */
8845
+ children: PropTypes.node,
8846
+ /**
8847
+ * Override or extend the styles applied to the component.
8848
+ */
8849
+ classes: PropTypes.object,
8850
+ /**
8851
+ * @ignore
8852
+ */
8853
+ className: PropTypes.string,
8854
+ /**
8855
+ * The color of the component.
8856
+ * It supports both default and custom theme colors, which can be added as shown in the
8857
+ * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
8858
+ * You can use the `htmlColor` prop to apply a color attribute to the SVG element.
8859
+ * @default 'inherit'
8860
+ */
8861
+ color: PropTypes.oneOfType([PropTypes.oneOf(["inherit", "action", "disabled", "primary", "secondary", "error", "info", "success", "warning"]), PropTypes.string]),
8862
+ /**
8863
+ * The component used for the root node.
8864
+ * Either a string to use a HTML element or a component.
8865
+ */
8866
+ component: PropTypes.elementType,
8867
+ /**
8868
+ * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.
8869
+ * @default 'medium'
8870
+ */
8871
+ fontSize: PropTypes.oneOfType([PropTypes.oneOf(["inherit", "large", "medium", "small"]), PropTypes.string]),
8872
+ /**
8873
+ * Applies a color attribute to the SVG element.
8874
+ */
8875
+ htmlColor: PropTypes.string,
8876
+ /**
8877
+ * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`
8878
+ * prop will be ignored.
8879
+ * Useful when you want to reference a custom `component` and have `SvgIcon` pass that
8880
+ * `component`'s viewBox to the root node.
8881
+ * @default false
8882
+ */
8883
+ inheritViewBox: PropTypes.bool,
8884
+ /**
8885
+ * The shape-rendering attribute. The behavior of the different options is described on the
8886
+ * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/shape-rendering).
8887
+ * If you are having issues with blurry icons you should investigate this prop.
8888
+ */
8889
+ shapeRendering: PropTypes.string,
8890
+ /**
8891
+ * The system prop that allows defining system overrides as well as additional CSS styles.
8892
+ */
8893
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
8894
+ /**
8895
+ * Provides a human-readable title for the element that contains it.
8896
+ * https://www.w3.org/TR/SVG-access/#Equivalent
8897
+ */
8898
+ titleAccess: PropTypes.string,
8899
+ /**
8900
+ * Allows you to redefine what the coordinates without units mean inside an SVG element.
8901
+ * For example, if the SVG element is 500 (width) by 200 (height),
8902
+ * and you pass viewBox="0 0 50 20",
8903
+ * this means that the coordinates inside the SVG will go from the top left corner (0,0)
8904
+ * to bottom right (50,20) and each unit will be worth 10px.
8905
+ * @default '0 0 24 24'
8906
+ */
8907
+ viewBox: PropTypes.string
8908
+ };
8909
+ SvgIcon.muiName = "SvgIcon";
8910
+ function createSvgIcon(path, displayName) {
8911
+ function Component2(props, ref) {
8912
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SvgIcon, {
8913
+ "data-testid": `${displayName}Icon`,
8914
+ ref,
8915
+ ...props,
8916
+ children: path
8917
+ });
8918
+ }
8919
+ {
8920
+ Component2.displayName = `${displayName}Icon`;
8921
+ }
8922
+ Component2.muiName = SvgIcon.muiName;
8923
+ return /* @__PURE__ */ React$1.memo(/* @__PURE__ */ React$1.forwardRef(Component2));
8924
+ }
8925
+ function debounce$3(func, wait = 166) {
8926
+ let timeout2;
8927
+ function debounced(...args) {
8928
+ const later = () => {
8929
+ func.apply(this, args);
8930
+ };
8931
+ clearTimeout(timeout2);
8932
+ timeout2 = setTimeout(later, wait);
8933
+ }
8934
+ debounced.clear = () => {
8935
+ clearTimeout(timeout2);
8936
+ };
8937
+ return debounced;
8938
+ }
8939
+ function ownerDocument(node2) {
8940
+ return node2 && node2.ownerDocument || document;
8941
+ }
8942
+ function ownerWindow(node2) {
8943
+ const doc = ownerDocument(node2);
8944
+ return doc.defaultView || window;
8945
+ }
8946
+ function setRef$1(ref, value) {
8947
+ if (typeof ref === "function") {
8948
+ ref(value);
8949
+ } else if (ref) {
8950
+ ref.current = value;
8951
+ }
8952
+ }
8953
+ let globalId = 0;
8954
+ function useGlobalId(idOverride) {
8955
+ const [defaultId, setDefaultId] = React$1.useState(idOverride);
8956
+ const id = idOverride || defaultId;
8957
+ React$1.useEffect(() => {
8958
+ if (defaultId == null) {
8959
+ globalId += 1;
8960
+ setDefaultId(`mui-${globalId}`);
8961
+ }
8962
+ }, [defaultId]);
8963
+ return id;
8964
+ }
8965
+ const safeReact = {
8966
+ ...React$1
8967
+ };
8968
+ const maybeReactUseId = safeReact.useId;
8969
+ function useId(idOverride) {
8970
+ if (maybeReactUseId !== void 0) {
8971
+ const reactId = maybeReactUseId();
8972
+ return idOverride ?? reactId;
8973
+ }
8974
+ return useGlobalId(idOverride);
8975
+ }
8976
+ function useEventCallback(fn2) {
8977
+ const ref = React$1.useRef(fn2);
8978
+ useEnhancedEffect$1(() => {
8979
+ ref.current = fn2;
8980
+ });
8981
+ return React$1.useRef((...args) => (
8982
+ // @ts-expect-error hide `this`
8983
+ (0, ref.current)(...args)
8984
+ )).current;
8985
+ }
8986
+ function useForkRef$1(...refs) {
8987
+ const cleanupRef = React$1.useRef(void 0);
8988
+ const refEffect = React$1.useCallback((instance) => {
8989
+ const cleanups = refs.map((ref) => {
8990
+ if (ref == null) {
8991
+ return null;
8992
+ }
8993
+ if (typeof ref === "function") {
8994
+ const refCallback = ref;
8995
+ const refCleanup = refCallback(instance);
8996
+ return typeof refCleanup === "function" ? refCleanup : () => {
8997
+ refCallback(null);
8998
+ };
8999
+ }
9000
+ ref.current = instance;
9001
+ return () => {
9002
+ ref.current = null;
9003
+ };
9004
+ });
9005
+ return () => {
9006
+ cleanups.forEach((refCleanup) => refCleanup == null ? void 0 : refCleanup());
9007
+ };
9008
+ }, refs);
9009
+ return React$1.useMemo(() => {
9010
+ if (refs.every((ref) => ref == null)) {
9011
+ return null;
9012
+ }
9013
+ return (value) => {
9014
+ if (cleanupRef.current) {
9015
+ cleanupRef.current();
9016
+ cleanupRef.current = void 0;
9017
+ }
9018
+ if (value != null) {
9019
+ cleanupRef.current = refEffect(value);
9020
+ }
9021
+ };
9022
+ }, refs);
9023
+ }
9024
+ function chainPropTypes(propType1, propType2) {
9025
+ return function validate(...args) {
9026
+ return propType1(...args) || propType2(...args);
9027
+ };
9028
+ }
8675
9029
  function _extends$1() {
8676
9030
  return _extends$1 = Object.assign ? Object.assign.bind() : function(n2) {
8677
9031
  for (var e2 = 1; e2 < arguments.length; e2++) {
@@ -9456,360 +9810,6 @@ function getTransitionProps(props, options) {
9456
9810
  delay: style2.transitionDelay
9457
9811
  };
9458
9812
  }
9459
- function getSvgIconUtilityClass(slot) {
9460
- return generateUtilityClass("MuiSvgIcon", slot);
9461
- }
9462
- generateUtilityClasses("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]);
9463
- const useUtilityClasses$j = (ownerState) => {
9464
- const {
9465
- color: color2,
9466
- fontSize,
9467
- classes
9468
- } = ownerState;
9469
- const slots = {
9470
- root: ["root", color2 !== "inherit" && `color${capitalize$1(color2)}`, `fontSize${capitalize$1(fontSize)}`]
9471
- };
9472
- return composeClasses(slots, getSvgIconUtilityClass, classes);
9473
- };
9474
- const SvgIconRoot = styled("svg", {
9475
- name: "MuiSvgIcon",
9476
- slot: "Root",
9477
- overridesResolver: (props, styles2) => {
9478
- const {
9479
- ownerState
9480
- } = props;
9481
- return [styles2.root, ownerState.color !== "inherit" && styles2[`color${capitalize$1(ownerState.color)}`], styles2[`fontSize${capitalize$1(ownerState.fontSize)}`]];
9482
- }
9483
- })(memoTheme(({
9484
- theme
9485
- }) => {
9486
- var _a3, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l, _m, _n;
9487
- return {
9488
- userSelect: "none",
9489
- width: "1em",
9490
- height: "1em",
9491
- display: "inline-block",
9492
- flexShrink: 0,
9493
- transition: (_d2 = (_a3 = theme.transitions) == null ? void 0 : _a3.create) == null ? void 0 : _d2.call(_a3, "fill", {
9494
- duration: (_c2 = (_b2 = (theme.vars ?? theme).transitions) == null ? void 0 : _b2.duration) == null ? void 0 : _c2.shorter
9495
- }),
9496
- variants: [
9497
- {
9498
- props: (props) => !props.hasSvgAsChild,
9499
- style: {
9500
- // the <svg> will define the property that has `currentColor`
9501
- // for example heroicons uses fill="none" and stroke="currentColor"
9502
- fill: "currentColor"
9503
- }
9504
- },
9505
- {
9506
- props: {
9507
- fontSize: "inherit"
9508
- },
9509
- style: {
9510
- fontSize: "inherit"
9511
- }
9512
- },
9513
- {
9514
- props: {
9515
- fontSize: "small"
9516
- },
9517
- style: {
9518
- fontSize: ((_f2 = (_e2 = theme.typography) == null ? void 0 : _e2.pxToRem) == null ? void 0 : _f2.call(_e2, 20)) || "1.25rem"
9519
- }
9520
- },
9521
- {
9522
- props: {
9523
- fontSize: "medium"
9524
- },
9525
- style: {
9526
- fontSize: ((_h2 = (_g2 = theme.typography) == null ? void 0 : _g2.pxToRem) == null ? void 0 : _h2.call(_g2, 24)) || "1.5rem"
9527
- }
9528
- },
9529
- {
9530
- props: {
9531
- fontSize: "large"
9532
- },
9533
- style: {
9534
- fontSize: ((_j2 = (_i2 = theme.typography) == null ? void 0 : _i2.pxToRem) == null ? void 0 : _j2.call(_i2, 35)) || "2.1875rem"
9535
- }
9536
- },
9537
- // TODO v5 deprecate color prop, v6 remove for sx
9538
- ...Object.entries((theme.vars ?? theme).palette).filter(([, value]) => value && value.main).map(([color2]) => {
9539
- var _a4, _b3;
9540
- return {
9541
- props: {
9542
- color: color2
9543
- },
9544
- style: {
9545
- color: (_b3 = (_a4 = (theme.vars ?? theme).palette) == null ? void 0 : _a4[color2]) == null ? void 0 : _b3.main
9546
- }
9547
- };
9548
- }),
9549
- {
9550
- props: {
9551
- color: "action"
9552
- },
9553
- style: {
9554
- color: (_l = (_k2 = (theme.vars ?? theme).palette) == null ? void 0 : _k2.action) == null ? void 0 : _l.active
9555
- }
9556
- },
9557
- {
9558
- props: {
9559
- color: "disabled"
9560
- },
9561
- style: {
9562
- color: (_n = (_m = (theme.vars ?? theme).palette) == null ? void 0 : _m.action) == null ? void 0 : _n.disabled
9563
- }
9564
- },
9565
- {
9566
- props: {
9567
- color: "inherit"
9568
- },
9569
- style: {
9570
- color: void 0
9571
- }
9572
- }
9573
- ]
9574
- };
9575
- }));
9576
- const SvgIcon = /* @__PURE__ */ React$1.forwardRef(function SvgIcon2(inProps, ref) {
9577
- const props = useDefaultProps({
9578
- props: inProps,
9579
- name: "MuiSvgIcon"
9580
- });
9581
- const {
9582
- children,
9583
- className,
9584
- color: color2 = "inherit",
9585
- component = "svg",
9586
- fontSize = "medium",
9587
- htmlColor,
9588
- inheritViewBox = false,
9589
- titleAccess,
9590
- viewBox = "0 0 24 24",
9591
- ...other
9592
- } = props;
9593
- const hasSvgAsChild = /* @__PURE__ */ React$1.isValidElement(children) && children.type === "svg";
9594
- const ownerState = {
9595
- ...props,
9596
- color: color2,
9597
- component,
9598
- fontSize,
9599
- instanceFontSize: inProps.fontSize,
9600
- inheritViewBox,
9601
- viewBox,
9602
- hasSvgAsChild
9603
- };
9604
- const more = {};
9605
- if (!inheritViewBox) {
9606
- more.viewBox = viewBox;
9607
- }
9608
- const classes = useUtilityClasses$j(ownerState);
9609
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(SvgIconRoot, {
9610
- as: component,
9611
- className: clsx$1(classes.root, className),
9612
- focusable: "false",
9613
- color: htmlColor,
9614
- "aria-hidden": titleAccess ? void 0 : true,
9615
- role: titleAccess ? "img" : void 0,
9616
- ref,
9617
- ...more,
9618
- ...other,
9619
- ...hasSvgAsChild && children.props,
9620
- ownerState,
9621
- children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /* @__PURE__ */ jsxRuntimeExports.jsx("title", {
9622
- children: titleAccess
9623
- }) : null]
9624
- });
9625
- });
9626
- SvgIcon.propTypes = {
9627
- // ┌────────────────────────────── Warning ──────────────────────────────┐
9628
- // │ These PropTypes are generated from the TypeScript type definitions. │
9629
- // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
9630
- // └─────────────────────────────────────────────────────────────────────┘
9631
- /**
9632
- * Node passed into the SVG element.
9633
- */
9634
- children: PropTypes.node,
9635
- /**
9636
- * Override or extend the styles applied to the component.
9637
- */
9638
- classes: PropTypes.object,
9639
- /**
9640
- * @ignore
9641
- */
9642
- className: PropTypes.string,
9643
- /**
9644
- * The color of the component.
9645
- * It supports both default and custom theme colors, which can be added as shown in the
9646
- * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
9647
- * You can use the `htmlColor` prop to apply a color attribute to the SVG element.
9648
- * @default 'inherit'
9649
- */
9650
- color: PropTypes.oneOfType([PropTypes.oneOf(["inherit", "action", "disabled", "primary", "secondary", "error", "info", "success", "warning"]), PropTypes.string]),
9651
- /**
9652
- * The component used for the root node.
9653
- * Either a string to use a HTML element or a component.
9654
- */
9655
- component: PropTypes.elementType,
9656
- /**
9657
- * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.
9658
- * @default 'medium'
9659
- */
9660
- fontSize: PropTypes.oneOfType([PropTypes.oneOf(["inherit", "large", "medium", "small"]), PropTypes.string]),
9661
- /**
9662
- * Applies a color attribute to the SVG element.
9663
- */
9664
- htmlColor: PropTypes.string,
9665
- /**
9666
- * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`
9667
- * prop will be ignored.
9668
- * Useful when you want to reference a custom `component` and have `SvgIcon` pass that
9669
- * `component`'s viewBox to the root node.
9670
- * @default false
9671
- */
9672
- inheritViewBox: PropTypes.bool,
9673
- /**
9674
- * The shape-rendering attribute. The behavior of the different options is described on the
9675
- * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/shape-rendering).
9676
- * If you are having issues with blurry icons you should investigate this prop.
9677
- */
9678
- shapeRendering: PropTypes.string,
9679
- /**
9680
- * The system prop that allows defining system overrides as well as additional CSS styles.
9681
- */
9682
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
9683
- /**
9684
- * Provides a human-readable title for the element that contains it.
9685
- * https://www.w3.org/TR/SVG-access/#Equivalent
9686
- */
9687
- titleAccess: PropTypes.string,
9688
- /**
9689
- * Allows you to redefine what the coordinates without units mean inside an SVG element.
9690
- * For example, if the SVG element is 500 (width) by 200 (height),
9691
- * and you pass viewBox="0 0 50 20",
9692
- * this means that the coordinates inside the SVG will go from the top left corner (0,0)
9693
- * to bottom right (50,20) and each unit will be worth 10px.
9694
- * @default '0 0 24 24'
9695
- */
9696
- viewBox: PropTypes.string
9697
- };
9698
- SvgIcon.muiName = "SvgIcon";
9699
- function createSvgIcon(path, displayName) {
9700
- function Component2(props, ref) {
9701
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SvgIcon, {
9702
- "data-testid": `${displayName}Icon`,
9703
- ref,
9704
- ...props,
9705
- children: path
9706
- });
9707
- }
9708
- {
9709
- Component2.displayName = `${displayName}Icon`;
9710
- }
9711
- Component2.muiName = SvgIcon.muiName;
9712
- return /* @__PURE__ */ React$1.memo(/* @__PURE__ */ React$1.forwardRef(Component2));
9713
- }
9714
- function debounce$3(func, wait = 166) {
9715
- let timeout2;
9716
- function debounced(...args) {
9717
- const later = () => {
9718
- func.apply(this, args);
9719
- };
9720
- clearTimeout(timeout2);
9721
- timeout2 = setTimeout(later, wait);
9722
- }
9723
- debounced.clear = () => {
9724
- clearTimeout(timeout2);
9725
- };
9726
- return debounced;
9727
- }
9728
- function ownerDocument(node2) {
9729
- return node2 && node2.ownerDocument || document;
9730
- }
9731
- function ownerWindow(node2) {
9732
- const doc = ownerDocument(node2);
9733
- return doc.defaultView || window;
9734
- }
9735
- function setRef$1(ref, value) {
9736
- if (typeof ref === "function") {
9737
- ref(value);
9738
- } else if (ref) {
9739
- ref.current = value;
9740
- }
9741
- }
9742
- let globalId = 0;
9743
- function useGlobalId(idOverride) {
9744
- const [defaultId, setDefaultId] = React$1.useState(idOverride);
9745
- const id = idOverride || defaultId;
9746
- React$1.useEffect(() => {
9747
- if (defaultId == null) {
9748
- globalId += 1;
9749
- setDefaultId(`mui-${globalId}`);
9750
- }
9751
- }, [defaultId]);
9752
- return id;
9753
- }
9754
- const safeReact = {
9755
- ...React$1
9756
- };
9757
- const maybeReactUseId = safeReact.useId;
9758
- function useId(idOverride) {
9759
- if (maybeReactUseId !== void 0) {
9760
- const reactId = maybeReactUseId();
9761
- return idOverride ?? reactId;
9762
- }
9763
- return useGlobalId(idOverride);
9764
- }
9765
- function useEventCallback(fn2) {
9766
- const ref = React$1.useRef(fn2);
9767
- useEnhancedEffect$1(() => {
9768
- ref.current = fn2;
9769
- });
9770
- return React$1.useRef((...args) => (
9771
- // @ts-expect-error hide `this`
9772
- (0, ref.current)(...args)
9773
- )).current;
9774
- }
9775
- function useForkRef$1(...refs) {
9776
- const cleanupRef = React$1.useRef(void 0);
9777
- const refEffect = React$1.useCallback((instance) => {
9778
- const cleanups = refs.map((ref) => {
9779
- if (ref == null) {
9780
- return null;
9781
- }
9782
- if (typeof ref === "function") {
9783
- const refCallback = ref;
9784
- const refCleanup = refCallback(instance);
9785
- return typeof refCleanup === "function" ? refCleanup : () => {
9786
- refCallback(null);
9787
- };
9788
- }
9789
- ref.current = instance;
9790
- return () => {
9791
- ref.current = null;
9792
- };
9793
- });
9794
- return () => {
9795
- cleanups.forEach((refCleanup) => refCleanup == null ? void 0 : refCleanup());
9796
- };
9797
- }, refs);
9798
- return React$1.useMemo(() => {
9799
- if (refs.every((ref) => ref == null)) {
9800
- return null;
9801
- }
9802
- return (value) => {
9803
- if (cleanupRef.current) {
9804
- cleanupRef.current();
9805
- cleanupRef.current = void 0;
9806
- }
9807
- if (value != null) {
9808
- cleanupRef.current = refEffect(value);
9809
- }
9810
- };
9811
- }, refs);
9812
- }
9813
9813
  function getTypeByValue(value) {
9814
9814
  const valueType = typeof value;
9815
9815
  switch (valueType) {
@@ -15989,6 +15989,7 @@ List.propTypes = {
15989
15989
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
15990
15990
  };
15991
15991
  const listItemTextClasses = generateUtilityClasses("MuiListItemText", ["root", "multiline", "dense", "inset", "primary", "secondary"]);
15992
+ const listItemIconClasses = generateUtilityClasses("MuiListItemIcon", ["root", "alignItemsFlexStart"]);
15992
15993
  function getScrollbarSize(win = window) {
15993
15994
  const documentWidth = win.document.documentElement.clientWidth;
15994
15995
  return win.innerWidth - documentWidth;
@@ -16237,7 +16238,6 @@ MenuList.propTypes = {
16237
16238
  variant: PropTypes.oneOf(["menu", "selectedMenu"])
16238
16239
  };
16239
16240
  const dividerClasses = generateUtilityClasses("MuiDivider", ["root", "absolute", "fullWidth", "inset", "middle", "flexItem", "light", "vertical", "withChildren", "withChildrenVertical", "textAlignRight", "textAlignLeft", "wrapper", "wrapperVertical"]);
16240
- const listItemIconClasses = generateUtilityClasses("MuiListItemIcon", ["root", "alignItemsFlexStart"]);
16241
16241
  function getMenuItemUtilityClass(slot) {
16242
16242
  return generateUtilityClass("MuiMenuItem", slot);
16243
16243
  }
@@ -28516,6 +28516,23 @@ function atLeastLogLevel(someLevel) {
28516
28516
  const numericTarget = OrderedLogLevels.indexOf(someLevel);
28517
28517
  return currLevel <= numericTarget;
28518
28518
  }
28519
+ function extent(values2, valueof) {
28520
+ let min2;
28521
+ let max2;
28522
+ {
28523
+ for (const value of values2) {
28524
+ if (value != null) {
28525
+ if (min2 === void 0) {
28526
+ if (value >= value) min2 = max2 = value;
28527
+ } else {
28528
+ if (min2 > value) min2 = value;
28529
+ if (max2 < value) max2 = value;
28530
+ }
28531
+ }
28532
+ }
28533
+ }
28534
+ return [min2, max2];
28535
+ }
28519
28536
  configSchema1_0_0.shape.coordinationSpace.unwrap();
28520
28537
  configSchema1_0_0.shape.layout.element.shape.coordinationScopes.unwrap();
28521
28538
  function upgradeReplaceViewProp(prefix2, view, coordinationSpace) {
@@ -31241,6 +31258,7 @@ const CoordinationType$1 = {
31241
31258
  OBS_SET_HIGHLIGHT: "obsSetHighlight",
31242
31259
  OBS_SET_EXPANSION: "obsSetExpansion",
31243
31260
  OBS_SET_COLOR: "obsSetColor",
31261
+ FEATURE_COLOR: "featureColor",
31244
31262
  FEATURE_HIGHLIGHT: "featureHighlight",
31245
31263
  FEATURE_SELECTION: "featureSelection",
31246
31264
  FEATURE_SET_SELECTION: "featureSetSelection",
@@ -31296,6 +31314,8 @@ const CoordinationType$1 = {
31296
31314
  // Per-spatial-layer
31297
31315
  SPATIAL_MAX_RESOLUTION: "spatialMaxResolution",
31298
31316
  // Per-image-channel (for spatial-accelerated)
31317
+ SPATIAL_LOD_FACTOR: "spatialLodFactor",
31318
+ // LOD factor for 3D volume rendering
31299
31319
  // For clipping plane sliders
31300
31320
  SPATIAL_SLICE_X: "spatialSliceX",
31301
31321
  SPATIAL_SLICE_Y: "spatialSliceY",
@@ -31818,6 +31838,8 @@ const AUTO_INDEPENDENT_COORDINATION_TYPES = [
31818
31838
  CoordinationType$1.OBS_SET_FILTER,
31819
31839
  CoordinationType$1.OBS_SET_HIGHLIGHT,
31820
31840
  CoordinationType$1.OBS_SET_COLOR,
31841
+ CoordinationType$1.FEATURE_COLOR,
31842
+ CoordinationType$1.FEATURE_FILTER_MODE,
31821
31843
  CoordinationType$1.FEATURE_HIGHLIGHT,
31822
31844
  CoordinationType$1.FEATURE_SELECTION,
31823
31845
  CoordinationType$1.FEATURE_VALUE_COLORMAP,
@@ -32032,6 +32054,8 @@ const AUTO_INDEPENDENT_COORDINATION_TYPES = [
32032
32054
  CoordinationType$1.SPATIAL_SPOT_STROKE_WIDTH,
32033
32055
  CoordinationType$1.SPATIAL_LAYER_COLOR,
32034
32056
  CoordinationType$1.OBS_COLOR_ENCODING,
32057
+ CoordinationType$1.FEATURE_COLOR,
32058
+ CoordinationType$1.FEATURE_FILTER_MODE,
32035
32059
  CoordinationType$1.FEATURE_VALUE_COLORMAP,
32036
32060
  CoordinationType$1.FEATURE_VALUE_COLORMAP_RANGE,
32037
32061
  CoordinationType$1.FEATURE_SELECTION,
@@ -32251,7 +32275,7 @@ const AUTO_INDEPENDENT_COORDINATION_TYPES = [
32251
32275
  CoordinationType$1.HIERARCHY_LEVELS
32252
32276
  ]
32253
32277
  });
32254
- const version = "3.8.10";
32278
+ const version = "3.9.0";
32255
32279
  const META_VERSION = {
32256
32280
  version
32257
32281
  };
@@ -37274,7 +37298,9 @@ function useMultiDatasetCoordination(parameters, coordinationScopes, coordinatio
37274
37298
  }
37275
37299
  const AUXILIARY_COORDINATION_TYPES_MAP = {
37276
37300
  spatialImageLayer: ["imageLayerCallbacks", "areLoadingImageChannels"],
37277
- spatialSegmentationLayer: ["segmentationLayerCallbacks", "areLoadingSegmentationChannels"]
37301
+ spatialSegmentationLayer: ["segmentationLayerCallbacks", "areLoadingSegmentationChannels"],
37302
+ spatialAcceleratedVolumeLoadingProgress: ["volumeLoadingProgress"],
37303
+ spatialTiledPointsLoadingProgress: ["tiledPointsLoadingProgress"]
37278
37304
  };
37279
37305
  const mapCoordinationScopes = (coordinationScopes) => {
37280
37306
  const newCoordinationScopes = {};
@@ -44333,23 +44359,6 @@ function createLoaders(datasets, configDescription, fileTypes, coordinationTypes
44333
44359
  });
44334
44360
  return result;
44335
44361
  }
44336
- function extent(values2, valueof) {
44337
- let min2;
44338
- let max2;
44339
- {
44340
- for (const value of values2) {
44341
- if (value != null) {
44342
- if (min2 === void 0) {
44343
- if (value >= value) min2 = max2 = value;
44344
- } else {
44345
- if (min2 > value) min2 = value;
44346
- if (max2 < value) max2 = value;
44347
- }
44348
- }
44349
- }
44350
- }
44351
- return [min2, max2];
44352
- }
44353
44362
  function getWindowDimensions() {
44354
44363
  const { innerWidth: width2, innerHeight: height2 } = window;
44355
44364
  return {
@@ -45548,7 +45557,10 @@ function LoadingIndicator() {
45548
45557
  const useStyles$2 = makeStyles()(() => ({
45549
45558
  paper: {
45550
45559
  maxHeight: 200,
45551
- overflow: "auto"
45560
+ overflowX: "hidden",
45561
+ overflowY: "auto",
45562
+ paddingLeft: "4px",
45563
+ paddingRight: "4px"
45552
45564
  },
45553
45565
  container: {
45554
45566
  position: "relative",
@@ -47040,7 +47052,7 @@ function useSpotMultiFeatureSelection(coordinationScopes, coordinationScopesBy,
47040
47052
  [
47041
47053
  coordinationScopes,
47042
47054
  coordinationScopesBy,
47043
- ...Object.values(featureSelectionCoordination[0] || {}).flatMap((layerVal) => layerVal.featureSelection)
47055
+ JSON.stringify(Object.values(featureSelectionCoordination[0] || {}).flatMap((layerVal) => layerVal.featureSelection))
47044
47056
  ]
47045
47057
  );
47046
47058
  const [
@@ -47141,6 +47153,34 @@ function usePointMultiObsLabels(coordinationScopes, coordinationScopesBy, loader
47141
47153
  );
47142
47154
  return [indicesData, indicesDataStatus, indicesDataErrors];
47143
47155
  }
47156
+ function usePointMultiObsFeatureMatrixIndices(coordinationScopes, coordinationScopesBy, loaders, dataset) {
47157
+ const obsFeatureMatrixCoordination = useComplexCoordination(
47158
+ [
47159
+ // We currently do not specify obsType or featureValueType here,
47160
+ // since for points we are only interested in the var table
47161
+ // to get the info about each feature (gene).
47162
+ CoordinationType$1.FEATURE_TYPE
47163
+ ],
47164
+ coordinationScopes,
47165
+ coordinationScopesBy,
47166
+ CoordinationType$1.POINT_LAYER
47167
+ );
47168
+ const matchOnObj = useMemo(
47169
+ () => obsFeatureMatrixCoordination[0],
47170
+ // imageCoordination reference changes each render,
47171
+ // use coordinationScopes and coordinationScopesBy which are
47172
+ // indirect dependencies here.
47173
+ [coordinationScopes, coordinationScopesBy]
47174
+ );
47175
+ const [indicesData, indicesDataStatus, indicesDataErrors] = useObsFeatureMatrixIndicesMultiLevel(
47176
+ loaders,
47177
+ dataset,
47178
+ false,
47179
+ matchOnObj,
47180
+ 1
47181
+ );
47182
+ return [indicesData, indicesDataStatus, indicesDataErrors];
47183
+ }
47144
47184
  function useSegmentationMultiObsLocations(coordinationScopes, coordinationScopesBy, loaders, dataset) {
47145
47185
  const obsTypeCoordination = useComplexCoordinationSecondary(
47146
47186
  [
@@ -47759,6 +47799,7 @@ export {
47759
47799
  useObsSpotsData,
47760
47800
  usePageModeView,
47761
47801
  useStyles as usePlotOptionsStyles,
47802
+ usePointMultiObsFeatureMatrixIndices,
47762
47803
  usePointMultiObsLabels,
47763
47804
  useReady,
47764
47805
  useRemoveImageChannelInMetaCoordinationScopes,
@@ -43,6 +43,15 @@ export function useSpotMultiObsFeatureMatrixIndices(coordinationScopes: object,
43
43
  * @returns {array} [data, status, errors]
44
44
  */
45
45
  export function usePointMultiObsLabels(coordinationScopes: object, coordinationScopesBy: object, loaders: object, dataset: string): array;
46
+ /**
47
+ * Wrapper around useObsFeatureMatrixIndicesMultiLevel.
48
+ * @param {object} coordinationScopes
49
+ * @param {object} coordinationScopesBy
50
+ * @param {object} loaders
51
+ * @param {string} dataset
52
+ * @returns {array} [indicesData, status, errors]
53
+ */
54
+ export function usePointMultiObsFeatureMatrixIndices(coordinationScopes: object, coordinationScopesBy: object, loaders: object, dataset: string): array;
46
55
  /**
47
56
  * Wrapper around useObsLocationsMultiLevel.
48
57
  * @param {object} coordinationScopes
@@ -1 +1 @@
1
- {"version":3,"file":"data-hooks-multilevel.d.ts","sourceRoot":"","sources":["../src/data-hooks-multilevel.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,yEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAsDjB;AAED;;;;;;;GAOG;AACH,iEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CA8CjB;AAED;;;;;;;GAOG;AACH,gFANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAyBjB;AAED;;;;;;;GAOG;AACH,wEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAwBjB;AAED;;;;;;;GAOG;AACH,2DANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB;AAED;;;;;;;GAOG;AACH,qEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB;AAED;;;;;;;GAOG;AACH,gEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB"}
1
+ {"version":3,"file":"data-hooks-multilevel.d.ts","sourceRoot":"","sources":["../src/data-hooks-multilevel.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,yEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAsDjB;AAED;;;;;;;GAOG;AACH,iEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CA8CjB;AAED;;;;;;;GAOG;AACH,gFANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAyBjB;AAED;;;;;;;GAOG;AACH,wEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAwBjB;AAED;;;;;;;GAOG;AACH,2DANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB;AAED;;;;;;;GAOG;AACH,yEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAyBjB;AAED;;;;;;;GAOG;AACH,qEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB;AAED;;;;;;;GAOG;AACH,gEANW,MAAM,wBACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,KAAK,CAuBjB"}
@@ -70,8 +70,8 @@ export function useSpotMultiFeatureSelection(coordinationScopes, coordinationSco
70
70
  ]))),
71
71
  // Need to execute this more frequently, whenever the featureSelections update.
72
72
  [coordinationScopes, coordinationScopesBy,
73
- ...Object.values(featureSelectionCoordination[0] || {})
74
- .flatMap(layerVal => layerVal.featureSelection),
73
+ JSON.stringify(Object.values(featureSelectionCoordination[0] || {})
74
+ .flatMap(layerVal => layerVal.featureSelection)),
75
75
  ]);
76
76
  const [featureData, loadedSelections, extents, normData, featureStatus, errors,] = useFeatureSelectionMultiLevel(loaders, dataset, false, matchOnObj, selections, 1);
77
77
  return [featureData, loadedSelections, extents, normData, featureStatus, errors];
@@ -141,6 +141,29 @@ export function usePointMultiObsLabels(coordinationScopes, coordinationScopesBy,
141
141
  const [indicesData, indicesDataStatus, indicesDataErrors] = useObsLabelsMultiLevel(loaders, dataset, false, matchOnObj, 1);
142
142
  return [indicesData, indicesDataStatus, indicesDataErrors];
143
143
  }
144
+ /**
145
+ * Wrapper around useObsFeatureMatrixIndicesMultiLevel.
146
+ * @param {object} coordinationScopes
147
+ * @param {object} coordinationScopesBy
148
+ * @param {object} loaders
149
+ * @param {string} dataset
150
+ * @returns {array} [indicesData, status, errors]
151
+ */
152
+ export function usePointMultiObsFeatureMatrixIndices(coordinationScopes, coordinationScopesBy, loaders, dataset) {
153
+ const obsFeatureMatrixCoordination = useComplexCoordination([
154
+ // We currently do not specify obsType or featureValueType here,
155
+ // since for points we are only interested in the var table
156
+ // to get the info about each feature (gene).
157
+ CoordinationType.FEATURE_TYPE,
158
+ ], coordinationScopes, coordinationScopesBy, CoordinationType.POINT_LAYER);
159
+ const matchOnObj = useMemo(() => obsFeatureMatrixCoordination[0],
160
+ // imageCoordination reference changes each render,
161
+ // use coordinationScopes and coordinationScopesBy which are
162
+ // indirect dependencies here.
163
+ [coordinationScopes, coordinationScopesBy]);
164
+ const [indicesData, indicesDataStatus, indicesDataErrors] = useObsFeatureMatrixIndicesMultiLevel(loaders, dataset, false, matchOnObj, 1);
165
+ return [indicesData, indicesDataStatus, indicesDataErrors];
166
+ }
144
167
  /**
145
168
  * Wrapper around useObsLocationsMultiLevel.
146
169
  * @param {object} coordinationScopes
@@ -9,7 +9,7 @@ export { createOnDrop } from "./on-drop.js";
9
9
  export { useReady, useUrls, useVitessceContainer, useDeckCanvasSize, useUint8ObsFeatureMatrix, useUint8FeatureSelection, useExpressionValueGetter, useGetObsMembership, useGetObsInfo, useClosestVitessceContainerSize, useWindowDimensions, useGridItemSize, useExpandedFeatureLabelsMap, useColumnNameMapping } from "./hooks.js";
10
10
  export { useCoordinationScopes, useCoordinationScopesBy, useInitialCoordination, useCoordination, useComplexCoordination, useComplexCoordinationSecondary, useMultiCoordinationScopes, useMultiCoordinationScopesNonNull, useMultiCoordinationScopesSecondary, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationValues, useMultiDatasetCoordination, useDatasetUids, useLoaders, useMergeCoordination, useMatchingLoader, useViewConfigStore, useViewConfigStoreApi, useViewConfig, useSetViewConfig, useComponentHover, useSetComponentHover, useComponentViewInfo, useSetComponentViewInfo, useWarning, useSetWarning, useAuxiliaryCoordination, useComponentLayout, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes } from "./state/hooks.js";
11
11
  export { useDescription, useImageData, useObsSetsData, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useSampleSetsData, useSampleEdgesData, useMultiObsLabels, useMultiObsSpots, useMultiObsPoints, useSpotMultiObsSets, useSpotMultiFeatureLabels, useMultiObsSegmentations, useMultiImages, useObsSpotsData, useObsPointsData, useObsLocationsData, useObsSegmentationsData, useNeighborhoodsData, useObsLabelsData, useObsFeatureMatrixData, useFeatureLabelsData, useGenomicProfilesData, useComparisonMetadata, useFeatureStatsData, useFeatureSetStatsData, useObsSetStatsData } from "./data-hooks.js";
12
- export { usePointMultiObsLabels, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useSegmentationMultiObsSets } from "./data-hooks-multilevel.js";
12
+ export { usePointMultiObsLabels, usePointMultiObsFeatureMatrixIndices, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useSegmentationMultiObsSets } from "./data-hooks-multilevel.js";
13
13
  export { CellColorEncodingOption, OptionsContainer, OptionSelect, usePlotOptionsStyles } from "./shared-plot-options/index.js";
14
14
  export { useAsyncFunction, usePageModeView } from "./contexts.js";
15
15
  //# sourceMappingURL=index.d.ts.map
package/dist-tsc/index.js CHANGED
@@ -6,7 +6,7 @@ export { PopperMenu } from './shared-mui/components.js';
6
6
  export { useReady, useUrls, useVitessceContainer, useDeckCanvasSize, useUint8ObsFeatureMatrix, useUint8FeatureSelection, useExpressionValueGetter, useGetObsMembership, useGetObsInfo, useClosestVitessceContainerSize, useWindowDimensions, useGridItemSize, useExpandedFeatureLabelsMap, useColumnNameMapping, } from './hooks.js';
7
7
  export { useCoordinationScopes, useCoordinationScopesBy, useInitialCoordination, useCoordination, useComplexCoordination, useComplexCoordinationSecondary, useMultiCoordinationScopes, useMultiCoordinationScopesNonNull, useMultiCoordinationScopesSecondary, useMultiCoordinationScopesSecondaryNonNull, useMultiCoordinationValues, useMultiDatasetCoordination, useDatasetUids, useLoaders, useMergeCoordination, useMatchingLoader, useViewConfigStore, useViewConfigStoreApi, useViewConfig, useSetViewConfig, useComponentHover, useSetComponentHover, useComponentViewInfo, useSetComponentViewInfo, useWarning, useSetWarning, useAuxiliaryCoordination, useComponentLayout, useRemoveImageChannelInMetaCoordinationScopes, useAddImageChannelInMetaCoordinationScopes, } from './state/hooks.js';
8
8
  export { useDescription, useImageData, useObsSetsData, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useSampleSetsData, useSampleEdgesData, useMultiObsLabels, useMultiObsSpots, useMultiObsPoints, useSpotMultiObsSets, useSpotMultiFeatureLabels, useMultiObsSegmentations, useMultiImages, useObsSpotsData, useObsPointsData, useObsLocationsData, useObsSegmentationsData, useNeighborhoodsData, useObsLabelsData, useObsFeatureMatrixData, useFeatureLabelsData, useGenomicProfilesData, useComparisonMetadata, useFeatureStatsData, useFeatureSetStatsData, useObsSetStatsData, } from './data-hooks.js';
9
- export { usePointMultiObsLabels, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useSegmentationMultiObsSets, } from './data-hooks-multilevel.js';
9
+ export { usePointMultiObsLabels, usePointMultiObsFeatureMatrixIndices, useSpotMultiFeatureSelection, useSpotMultiObsFeatureMatrixIndices, useSegmentationMultiFeatureSelection, useSegmentationMultiObsFeatureMatrixIndices, useSegmentationMultiObsLocations, useSegmentationMultiObsSets, } from './data-hooks-multilevel.js';
10
10
  export { useHasLoader, } from './data-hook-utils.js';
11
11
  export { CellColorEncodingOption, OptionsContainer, OptionSelect, usePlotOptionsStyles, } from './shared-plot-options/index.js';
12
12
  export { logConfig } from './view-config-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/shared-mui/components.js"],"names":[],"mappings":"AAyBA,oDAkEC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/shared-mui/components.js"],"names":[],"mappings":"AA4BA,oDAkEC"}
@@ -6,7 +6,10 @@ import { useVitessceContainer } from '../hooks.js';
6
6
  const useStyles = makeStyles()(() => ({
7
7
  paper: {
8
8
  maxHeight: 200,
9
- overflow: 'auto',
9
+ overflowX: 'hidden',
10
+ overflowY: 'auto',
11
+ paddingLeft: '4px',
12
+ paddingRight: '4px',
10
13
  },
11
14
  container: {
12
15
  position: 'relative',
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/state/hooks.js"],"names":[],"mappings":"AA8BA,4DAiBC;AAED,6CAMC;AACD,uDAOC;AAED,8DAEC;AAGD,2DAiBC;AAED,4CAMC;AACD,sDAOC;AAED,6DAEC;AAID;;;;;;GAMG;AACH,8CAJW,GAAC,mBAEC,MAAM,GAAC,SAAS,CA4B5B;AAED;;;;;;;GAOG;AACH,gDALW,GAAC,wBACD,GAAC,qBAEC,MAAM,GAAC,SAAS,CA0C5B;AAED;;;;;GAKG;AACH,6CAJW,MAAM,sBACN,GAAC,GACC,MAAM,GAAC,SAAS,CAI5B;AAED;;;;;;GAMG;AACH,+CALW,MAAM,mDACN,GAAC,wBACD,GAAC,GACC,MAAM,GAAC,SAAS,CAc5B;AAySD;;;;;;;;;GASG;AACH,mDALW,MAAM,EAAE,sBACR,MAAM,GAEJ,MAAM,CAclB;AAED;;;;;;;;;;;;;;;GAeG;AACH,4CATW,MAAM,EAAE,sBACR,MAAM,GAEJ,KAAK,CAmCjB;AAED,yFAKC;AAED,gGAqBC;AAED,0IA4BC;AAED,iJAkEC;AAED,yFAmBC;AAED;;;;GAIG;AACH,mDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;;;;GAaG;AACH,mDAXW,MAAM,EAAE,sBACR,MAAM,wBACN,MAAM,UAEN,MAAM,GAEJ,KAAK,CA2EjB;AAED;;;;;GAKG;AACH,0DAHW,MAAM,GACJ,MAAM,CAiBlB;AAED;;;;;;GAMG;AACH,4DAJW,MAAM,wBACN,MAAM,GACJ,MAAM,CAgBlB;AAED;;;;;;;GAOG;AACH,4DANW,MAAM,EAAE,iDACR,MAAM,eACN,MAAM,iBACN,MAAM,SAuEhB;AAGD;;;;;;;;;;;GAWG;AACH,wDATW,MAAM,EAAE,sBACR,MAAM,wBACN,MAAM,GAEJ,KAAK,CAUjB;AA6BD;;;;;;;;;;;;;;;GAeG;AACH,qDATW,MAAM,EAAE,sBACR,MAAM,GAEJ,KAAK,CAgCjB;AAED;;;;;GAKG;AACH,8BAHa,MAAM,CAKlB;AAGD;;;;;;;;;;;;GAYG;AACH,2CARW,MAAM,WACN,MAAM,YACN,MAAM,0BACN,MAAM,OAoBhB;AAED;;;;;;;;;;;;GAYG;AACH,2CARW,MAAM,WACN,MAAM,YACN,MAAM,0BACN,MAAM,OAShB;AAED;;;;;GAKG;AACH,6BAHa,MAAM,EAAE,CAKpB;AAED;;;;;GAKG;AACH,+CAEC;AAED;;;;;GAKG;AACH,0EAEC;AAED;;;;;GAKG;AACH,uEAEC;AAED;;;;;GAKG;AACH,4CAEC;AAED;;;;;GAKG;AACH,0CAEC;AAED;;;;;GAKG;AACH,iDAEC;AAED;;;;;GAKG;AACH,iCAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,oEAIC;AAGD;;;;;GAKG;AACH,qCAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,iDAEC;AAED;;;;;GAKG;AACH,8BAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,0CAEC;AAED;;;;;GAKG;AACH,iDAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,6DAOC;AAED;;;;GAIG;AACH,iCAFa,MAAM,CAIlB;AAED;;;;;GAKG;AACH,8CAEC;AAzhCM,yFA4LH;AAOG,0FAFM,MAAM,CAOlB;AAcM,iDAUJ"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/state/hooks.js"],"names":[],"mappings":"AA8BA,4DAiBC;AAED,6CAMC;AACD,uDAOC;AAED,8DAEC;AAGD,2DAiBC;AAED,4CAMC;AACD,sDAOC;AAED,6DAEC;AAID;;;;;;GAMG;AACH,8CAJW,GAAC,mBAEC,MAAM,GAAC,SAAS,CA4B5B;AAED;;;;;;;GAOG;AACH,gDALW,GAAC,wBACD,GAAC,qBAEC,MAAM,GAAC,SAAS,CA0C5B;AAED;;;;;GAKG;AACH,6CAJW,MAAM,sBACN,GAAC,GACC,MAAM,GAAC,SAAS,CAI5B;AAED;;;;;;GAMG;AACH,+CALW,MAAM,mDACN,GAAC,wBACD,GAAC,GACC,MAAM,GAAC,SAAS,CAc5B;AAySD;;;;;;;;;GASG;AACH,mDALW,MAAM,EAAE,sBACR,MAAM,GAEJ,MAAM,CAclB;AAED;;;;;;;;;;;;;;;GAeG;AACH,4CATW,MAAM,EAAE,sBACR,MAAM,GAEJ,KAAK,CAmCjB;AAED,yFAKC;AAED,gGAqBC;AAED,0IA4BC;AAED,iJAkEC;AAED,yFAmBC;AAED;;;;GAIG;AACH,mDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;;;;GAaG;AACH,mDAXW,MAAM,EAAE,sBACR,MAAM,wBACN,MAAM,UAEN,MAAM,GAEJ,KAAK,CA2EjB;AAED;;;;;GAKG;AACH,0DAHW,MAAM,GACJ,MAAM,CAiBlB;AAED;;;;;;GAMG;AACH,4DAJW,MAAM,wBACN,MAAM,GACJ,MAAM,CAgBlB;AAED;;;;;;;GAOG;AACH,4DANW,MAAM,EAAE,iDACR,MAAM,eACN,MAAM,iBACN,MAAM,SAuEhB;AAGD;;;;;;;;;;;GAWG;AACH,wDATW,MAAM,EAAE,sBACR,MAAM,wBACN,MAAM,GAEJ,KAAK,CAUjB;AA+BD;;;;;;;;;;;;;;;GAeG;AACH,qDATW,MAAM,EAAE,sBACR,MAAM,GAEJ,KAAK,CAiCjB;AAED;;;;;GAKG;AACH,8BAHa,MAAM,CAKlB;AAGD;;;;;;;;;;;;GAYG;AACH,2CARW,MAAM,WACN,MAAM,YACN,MAAM,0BACN,MAAM,OAoBhB;AAED;;;;;;;;;;;;GAYG;AACH,2CARW,MAAM,WACN,MAAM,YACN,MAAM,0BACN,MAAM,OAShB;AAED;;;;;GAKG;AACH,6BAHa,MAAM,EAAE,CAKpB;AAED;;;;;GAKG;AACH,+CAEC;AAED;;;;;GAKG;AACH,0EAEC;AAED;;;;;GAKG;AACH,uEAEC;AAED;;;;;GAKG;AACH,4CAEC;AAED;;;;;GAKG;AACH,0CAEC;AAED;;;;;GAKG;AACH,iDAEC;AAED;;;;;GAKG;AACH,iCAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,oEAIC;AAGD;;;;;GAKG;AACH,qCAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,iDAEC;AAED;;;;;GAKG;AACH,8BAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,0CAEC;AAED;;;;;GAKG;AACH,iDAHa,MAAM,CAKlB;AAED;;;;;GAKG;AACH,6DAOC;AAED;;;;GAIG;AACH,iCAFa,MAAM,CAIlB;AAED;;;;;GAKG;AACH,8CAEC;AA5hCM,yFA4LH;AAOG,0FAFM,MAAM,CAOlB;AAcM,iDAUJ"}
@@ -861,6 +861,8 @@ export function useMultiDatasetCoordination(parameters, coordinationScopes, coor
861
861
  const AUXILIARY_COORDINATION_TYPES_MAP = {
862
862
  spatialImageLayer: ['imageLayerCallbacks', 'areLoadingImageChannels'],
863
863
  spatialSegmentationLayer: ['segmentationLayerCallbacks', 'areLoadingSegmentationChannels'],
864
+ spatialAcceleratedVolumeLoadingProgress: ['volumeLoadingProgress'],
865
+ spatialTiledPointsLoadingProgress: ['tiledPointsLoadingProgress'],
864
866
  };
865
867
  /**
866
868
  * The maps the coordination types of incoming scopes to new types
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/vit-s",
3
- "version": "3.8.10",
3
+ "version": "3.9.0",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -30,16 +30,16 @@
30
30
  "react-error-boundary": "^5.0.0",
31
31
  "@placemarkio/flat-drop-files": "^1.0.2",
32
32
  "zarrita": "0.5.4",
33
- "@vitessce/styles": "3.8.10",
34
- "@vitessce/abstract": "3.8.10",
35
- "@vitessce/error": "3.8.10",
36
- "@vitessce/constants-internal": "3.8.10",
37
- "@vitessce/plugins": "3.8.10",
38
- "@vitessce/schemas": "3.8.10",
39
- "@vitessce/utils": "3.8.10",
40
- "@vitessce/sets-utils": "3.8.10",
41
- "@vitessce/config": "3.8.10",
42
- "@vitessce/globals": "3.8.10"
33
+ "@vitessce/styles": "3.9.0",
34
+ "@vitessce/error": "3.9.0",
35
+ "@vitessce/constants-internal": "3.9.0",
36
+ "@vitessce/abstract": "3.9.0",
37
+ "@vitessce/utils": "3.9.0",
38
+ "@vitessce/schemas": "3.9.0",
39
+ "@vitessce/sets-utils": "3.9.0",
40
+ "@vitessce/plugins": "3.9.0",
41
+ "@vitessce/config": "3.9.0",
42
+ "@vitessce/globals": "3.9.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@testing-library/jest-dom": "^6.6.3",
@@ -48,7 +48,7 @@
48
48
  "react-dom": "18.3.1",
49
49
  "vite": "^7.0.0",
50
50
  "vitest": "^3.1.4",
51
- "@vitessce/types": "3.8.10"
51
+ "@vitessce/types": "3.9.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -118,8 +118,8 @@ export function useSpotMultiFeatureSelection(
118
118
  ),
119
119
  // Need to execute this more frequently, whenever the featureSelections update.
120
120
  [coordinationScopes, coordinationScopesBy,
121
- ...Object.values(featureSelectionCoordination[0] || {})
122
- .flatMap(layerVal => layerVal.featureSelection),
121
+ JSON.stringify(Object.values(featureSelectionCoordination[0] || {})
122
+ .flatMap(layerVal => layerVal.featureSelection)),
123
123
  ]);
124
124
  const [
125
125
  featureData, loadedSelections, extents, normData, featureStatus, errors,
@@ -225,6 +225,39 @@ export function usePointMultiObsLabels(
225
225
  return [indicesData, indicesDataStatus, indicesDataErrors];
226
226
  }
227
227
 
228
+ /**
229
+ * Wrapper around useObsFeatureMatrixIndicesMultiLevel.
230
+ * @param {object} coordinationScopes
231
+ * @param {object} coordinationScopesBy
232
+ * @param {object} loaders
233
+ * @param {string} dataset
234
+ * @returns {array} [indicesData, status, errors]
235
+ */
236
+ export function usePointMultiObsFeatureMatrixIndices(
237
+ coordinationScopes, coordinationScopesBy, loaders, dataset,
238
+ ) {
239
+ const obsFeatureMatrixCoordination = useComplexCoordination(
240
+ [
241
+ // We currently do not specify obsType or featureValueType here,
242
+ // since for points we are only interested in the var table
243
+ // to get the info about each feature (gene).
244
+ CoordinationType.FEATURE_TYPE,
245
+ ],
246
+ coordinationScopes,
247
+ coordinationScopesBy,
248
+ CoordinationType.POINT_LAYER,
249
+ );
250
+ const matchOnObj = useMemo(() => obsFeatureMatrixCoordination[0],
251
+ // imageCoordination reference changes each render,
252
+ // use coordinationScopes and coordinationScopesBy which are
253
+ // indirect dependencies here.
254
+ [coordinationScopes, coordinationScopesBy]);
255
+ const [indicesData, indicesDataStatus, indicesDataErrors] = useObsFeatureMatrixIndicesMultiLevel(
256
+ loaders, dataset, false, matchOnObj, 1,
257
+ );
258
+ return [indicesData, indicesDataStatus, indicesDataErrors];
259
+ }
260
+
228
261
  /**
229
262
  * Wrapper around useObsLocationsMultiLevel.
230
263
  * @param {object} coordinationScopes
package/src/index.js CHANGED
@@ -86,6 +86,7 @@ export {
86
86
  } from './data-hooks.js';
87
87
  export {
88
88
  usePointMultiObsLabels,
89
+ usePointMultiObsFeatureMatrixIndices,
89
90
  useSpotMultiFeatureSelection,
90
91
  useSpotMultiObsFeatureMatrixIndices,
91
92
  useSegmentationMultiFeatureSelection,
@@ -14,7 +14,10 @@ import { useVitessceContainer } from '../hooks.js';
14
14
  const useStyles = makeStyles()(() => ({
15
15
  paper: {
16
16
  maxHeight: 200,
17
- overflow: 'auto',
17
+ overflowX: 'hidden',
18
+ overflowY: 'auto',
19
+ paddingLeft: '4px',
20
+ paddingRight: '4px',
18
21
  },
19
22
  container: {
20
23
  position: 'relative',
@@ -982,6 +982,8 @@ export function useMultiDatasetCoordination(parameters, coordinationScopes, coor
982
982
  const AUXILIARY_COORDINATION_TYPES_MAP = {
983
983
  spatialImageLayer: ['imageLayerCallbacks', 'areLoadingImageChannels'],
984
984
  spatialSegmentationLayer: ['segmentationLayerCallbacks', 'areLoadingSegmentationChannels'],
985
+ spatialAcceleratedVolumeLoadingProgress: ['volumeLoadingProgress'],
986
+ spatialTiledPointsLoadingProgress: ['tiledPointsLoadingProgress'],
985
987
  };
986
988
 
987
989
  /**
@@ -1047,6 +1049,7 @@ export function useAuxiliaryCoordination(parameters, coordinationScopes) {
1047
1049
  // eslint-disable-next-line react-hooks/exhaustive-deps
1048
1050
  })), [parameters, coordinationScopes]);
1049
1051
 
1052
+
1050
1053
  return [values, setters];
1051
1054
  }
1052
1055