@overmap-ai/blocks 1.0.40-alpha.4 → 1.0.40-overlay.1
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/ButtonGroup/ButtonGroup.d.ts +2 -1
- package/dist/ButtonGroup/context.d.ts +7 -2
- package/dist/CheckboxGroup/context.d.ts +6 -2
- package/dist/CheckboxGroup/utils.d.ts +1 -0
- package/dist/CheckedIndicator/CheckedIndicator.d.ts +3 -4
- package/dist/CollapsibleTree/CollapsibleTree.d.ts +5 -0
- package/dist/CollapsibleTree/context.d.ts +11 -0
- package/dist/CollapsibleTree/index.d.ts +2 -0
- package/dist/CollapsibleTree/typings.d.ts +58 -0
- package/dist/CommandMenu/CheckboxIndicator.d.ts +4 -2
- package/dist/CommandMenu/SelectedIndicator.d.ts +3 -2
- package/dist/CommandMenu/context.d.ts +3 -2
- package/dist/CommandMenu/utils.d.ts +4 -0
- package/dist/Heading/cva.d.ts +1 -1
- package/dist/HoverUtility/HoverUtility.d.ts +2 -2
- package/dist/Link/cva.d.ts +1 -1
- package/dist/Menu/{CheckboxItem.d.ts → CheckboxItem/CheckboxItem.d.ts} +1 -1
- package/dist/Menu/{CheckboxItemIndicator.d.ts → CheckboxItemIndicator/CheckboxItemIndicator.d.ts} +1 -1
- package/dist/Menu/{ClickTrigger.d.ts → ClickTrigger/ClickTrigger.d.ts} +1 -1
- package/dist/Menu/ClickTrigger/index.d.ts +1 -0
- package/dist/Menu/{Content.d.ts → Content/Content.d.ts} +1 -1
- package/dist/Menu/{menuContentContext.d.ts → Content/context.d.ts} +2 -2
- package/dist/Menu/Content/index.d.ts +2 -0
- package/dist/Menu/{ContextTrigger.d.ts → ContextTrigger/ContextTrigger.d.ts} +1 -1
- package/dist/Menu/ContextTrigger/index.d.ts +1 -0
- package/dist/Menu/{Group.d.ts → Group/Group.d.ts} +1 -1
- package/dist/Menu/Group/index.d.ts +1 -0
- package/dist/Menu/{InputField.d.ts → Input/Field.d.ts} +1 -1
- package/dist/Menu/{InputRoot.d.ts → Input/Root.d.ts} +1 -1
- package/dist/Menu/{InputSlot.d.ts → Input/Slot.d.ts} +1 -1
- package/dist/Menu/Input/index.d.ts +3 -0
- package/dist/Menu/{Item.d.ts → Item/Item.d.ts} +1 -1
- package/dist/Menu/Item/index.d.ts +1 -0
- package/dist/Menu/Label/index.d.ts +1 -0
- package/dist/Menu/{MultiSelectGroup.d.ts → MultiSelectGroup/MultiSelectGroup.d.ts} +1 -1
- package/dist/Menu/MultiSelectGroup/index.d.ts +1 -0
- package/dist/Menu/{MultiSelectItem.d.ts → MultiSelectItem/MultiSelectItem.d.ts} +1 -1
- package/dist/Menu/MultiSelectItem/index.d.ts +1 -0
- package/dist/Menu/PageContent/PageContent.d.ts +3 -0
- package/dist/Menu/PageContent/index.d.ts +1 -0
- package/dist/Menu/{PageTrigger.d.ts → PageTrigger/PageTrigger.d.ts} +1 -1
- package/dist/Menu/PageTrigger/index.d.ts +1 -0
- package/dist/Menu/{Pages.d.ts → Pages/Pages.d.ts} +1 -1
- package/dist/Menu/Pages/index.d.ts +2 -0
- package/dist/Menu/{Scroll.d.ts → Scroll/Scroll.d.ts} +1 -1
- package/dist/Menu/{SelectAllItem.d.ts → SelectAll/SelectAllItem.d.ts} +1 -1
- package/dist/Menu/SelectAll/index.d.ts +1 -0
- package/dist/Menu/{SelectGroup.d.ts → SelectGroup/SelectGroup.d.ts} +1 -1
- package/dist/Menu/SelectGroup/index.d.ts +1 -0
- package/dist/Menu/{SelectItem.d.ts → SelectItem/SelectItem.d.ts} +1 -1
- package/dist/Menu/SelectItem/index.d.ts +1 -0
- package/dist/Menu/SelectedIndicator/SelectedIndicator.d.ts +4 -0
- package/dist/{SelectedIndicator → Menu/SelectedIndicator}/context.d.ts +1 -0
- package/dist/Menu/SelectedIndicator/index.d.ts +2 -0
- package/dist/Menu/{Separator.d.ts → Separator/Separator.d.ts} +1 -1
- package/dist/Menu/Separator/index.d.ts +1 -0
- package/dist/Menu/{Sub.d.ts → Sub/Sub.d.ts} +1 -1
- package/dist/Menu/{subContentContext.d.ts → Sub/context.d.ts} +1 -1
- package/dist/Menu/Sub/index.d.ts +2 -0
- package/dist/Menu/{SubContent.d.ts → SubContent/SubContent.d.ts} +1 -1
- package/dist/Menu/SubContent/index.d.ts +1 -0
- package/dist/Menu/{SubTrigger.d.ts → SubTrigger/SubTrigger.d.ts} +1 -1
- package/dist/Menu/SubTrigger/index.d.ts +1 -0
- package/dist/Menu/{VirtualTrigger.d.ts → VirtualTrigger/VirtualTrigger.d.ts} +1 -1
- package/dist/Menu/VirtualTrigger/index.d.ts +1 -0
- package/dist/Menu/index.d.ts +7 -9
- package/dist/Menu/{Root.d.ts → root/Root.d.ts} +1 -1
- package/dist/Menu/{rootContext.d.ts → root/context.d.ts} +1 -1
- package/dist/Menu/root/index.d.ts +2 -0
- package/dist/Menu/utils.d.ts +6 -0
- package/dist/Overlay/Close.d.ts +5 -0
- package/dist/Overlay/Content.d.ts +6 -0
- package/dist/Overlay/Description.d.ts +5 -0
- package/dist/Overlay/Root.d.ts +5 -0
- package/dist/Overlay/Title.d.ts +5 -0
- package/dist/Overlay/Trigger.d.ts +5 -0
- package/dist/Overlay/cva.d.ts +1 -0
- package/dist/Overlay/index.d.ts +15 -0
- package/dist/SlideOut/SlideOut.d.ts +2 -1
- package/dist/Text/cva.d.ts +1 -1
- package/dist/blocks.js +723 -1002
- package/dist/blocks.js.map +1 -1
- package/dist/blocks.umd.cjs +1051 -1330
- package/dist/blocks.umd.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/typings.d.ts +5 -0
- package/dist/utils.d.ts +30 -7
- package/package.json +1 -1
- package/dist/Menu/PageContent.d.ts +0 -2
- package/dist/Menu/SelectedIndicator.d.ts +0 -4
- package/dist/MenuV2/CheckboxItem.d.ts +0 -6
- package/dist/MenuV2/CheckboxItemIndicator.d.ts +0 -3
- package/dist/MenuV2/Group.d.ts +0 -4
- package/dist/MenuV2/GroupLabel.d.ts +0 -4
- package/dist/MenuV2/Item.d.ts +0 -6
- package/dist/MenuV2/MultiSelectAllItem.d.ts +0 -4
- package/dist/MenuV2/MultiSelectGroup.d.ts +0 -5
- package/dist/MenuV2/MultiSelectItem.d.ts +0 -5
- package/dist/MenuV2/Page.d.ts +0 -5
- package/dist/MenuV2/PageTriggerItem.d.ts +0 -5
- package/dist/MenuV2/Pages.d.ts +0 -7
- package/dist/MenuV2/Root.d.ts +0 -6
- package/dist/MenuV2/SelectGroup.d.ts +0 -4
- package/dist/MenuV2/SelectItem.d.ts +0 -5
- package/dist/MenuV2/SelectedIndicator.d.ts +0 -3
- package/dist/MenuV2/Separator.d.ts +0 -5
- package/dist/MenuV2/constants.d.ts +0 -9
- package/dist/MenuV2/context.d.ts +0 -17
- package/dist/MenuV2/cva.d.ts +0 -14
- package/dist/MenuV2/index.d.ts +0 -36
- package/dist/MenuV2/typings.d.ts +0 -9
- package/dist/MenuV2/utils.d.ts +0 -1
- package/dist/SelectedIndicator/SelectedIndicator.d.ts +0 -5
- package/dist/SelectedIndicator/index.d.ts +0 -2
- package/dist/hooks.d.ts +0 -20
- /package/dist/Menu/{Label.d.ts → Label/Label.d.ts} +0 -0
- /package/dist/Menu/{menuPagesContext.d.ts → Pages/context.d.ts} +0 -0
package/dist/blocks.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as RadixAlertDialog from "@radix-ui/react-alert-dialog";
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { cva, cx } from "class-variance-authority";
|
|
4
|
-
import
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import React__default, { createContext, useContext, memo, useMemo, useState, useCallback, useEffect, useLayoutEffect, use, useRef } from "react";
|
|
5
6
|
import * as RadixAvatar from "@radix-ui/react-avatar";
|
|
6
7
|
import * as RadixCheckbox from "@radix-ui/react-checkbox";
|
|
7
8
|
import { useMediaQuery } from "react-responsive";
|
|
9
|
+
import * as RadixPrimitiveCollapsible from "@radix-ui/react-collapsible";
|
|
8
10
|
import { CommandItem, CommandRoot, CommandEmpty, CommandGroup, CommandInput, useCommandState, CommandList, CommandSeparator } from "cmdk";
|
|
9
11
|
import * as RadixDialog from "@radix-ui/react-dialog";
|
|
10
12
|
import { DialogPortal, DialogContent as DialogContent$1, DialogTitle, DialogDescription, DialogOverlay as DialogOverlay$1, DialogTrigger } from "@radix-ui/react-dialog";
|
|
@@ -14,7 +16,7 @@ import * as RadixHoverCard from "@radix-ui/react-hover-card";
|
|
|
14
16
|
import { CSSTransition } from "react-transition-group";
|
|
15
17
|
import ReactDOM from "react-dom";
|
|
16
18
|
import { Slot } from "@radix-ui/react-slot";
|
|
17
|
-
import {
|
|
19
|
+
import { useFloatingNodeId, useFloating, offset, size, flip, shift, hide, autoUpdate, useRole, useDismiss, useClick, useListNavigation, useInteractions, FloatingTree, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList, useHover, safePolygon, useListItem, useMergeRefs } from "@floating-ui/react";
|
|
18
20
|
import * as RadixSeparator from "@radix-ui/react-separator";
|
|
19
21
|
import * as RadixOneTimePasswordField from "@radix-ui/react-one-time-password-field";
|
|
20
22
|
import { useErrorBoundary, ErrorBoundary } from "react-error-boundary";
|
|
@@ -786,6 +788,82 @@ const Checkbox = {
|
|
|
786
788
|
};
|
|
787
789
|
const SelectContext = createContext({});
|
|
788
790
|
const MultiSelectContext = createContext({});
|
|
791
|
+
const usePassiveLayoutEffect = React__default[typeof document !== "undefined" && document.createElement !== void 0 ? "useLayoutEffect" : "useEffect"];
|
|
792
|
+
const useLatest = (current) => {
|
|
793
|
+
const storedValue = React.useRef(current);
|
|
794
|
+
React.useEffect(() => {
|
|
795
|
+
storedValue.current = current;
|
|
796
|
+
});
|
|
797
|
+
return storedValue;
|
|
798
|
+
};
|
|
799
|
+
function _ref() {
|
|
800
|
+
}
|
|
801
|
+
function useResizeObserver(target, callback, options = {}) {
|
|
802
|
+
const resizeObserver = getResizeObserver(options.polyfill);
|
|
803
|
+
const storedCallback = useLatest(callback);
|
|
804
|
+
usePassiveLayoutEffect(() => {
|
|
805
|
+
let didUnsubscribe = false;
|
|
806
|
+
const targetEl = target && "current" in target ? target.current : target;
|
|
807
|
+
if (!targetEl) return _ref;
|
|
808
|
+
function cb(entry, observer) {
|
|
809
|
+
if (didUnsubscribe) return;
|
|
810
|
+
storedCallback.current(entry, observer);
|
|
811
|
+
}
|
|
812
|
+
resizeObserver.subscribe(targetEl, cb);
|
|
813
|
+
return () => {
|
|
814
|
+
didUnsubscribe = true;
|
|
815
|
+
resizeObserver.unsubscribe(targetEl, cb);
|
|
816
|
+
};
|
|
817
|
+
}, [target, resizeObserver, storedCallback]);
|
|
818
|
+
return resizeObserver.observer;
|
|
819
|
+
}
|
|
820
|
+
function createResizeObserver(polyfill) {
|
|
821
|
+
let ticking = false;
|
|
822
|
+
let allEntries = [];
|
|
823
|
+
const callbacks = /* @__PURE__ */ new Map();
|
|
824
|
+
const observer = new (polyfill || window.ResizeObserver)((entries, obs) => {
|
|
825
|
+
allEntries = allEntries.concat(entries);
|
|
826
|
+
function _ref2() {
|
|
827
|
+
const triggered = /* @__PURE__ */ new Set();
|
|
828
|
+
for (let i = 0; i < allEntries.length; i++) {
|
|
829
|
+
if (triggered.has(allEntries[i].target)) continue;
|
|
830
|
+
triggered.add(allEntries[i].target);
|
|
831
|
+
const cbs = callbacks.get(allEntries[i].target);
|
|
832
|
+
cbs === null || cbs === void 0 ? void 0 : cbs.forEach((cb) => cb(allEntries[i], obs));
|
|
833
|
+
}
|
|
834
|
+
allEntries = [];
|
|
835
|
+
ticking = false;
|
|
836
|
+
}
|
|
837
|
+
if (!ticking) {
|
|
838
|
+
window.requestAnimationFrame(_ref2);
|
|
839
|
+
}
|
|
840
|
+
ticking = true;
|
|
841
|
+
});
|
|
842
|
+
return {
|
|
843
|
+
observer,
|
|
844
|
+
subscribe(target, callback) {
|
|
845
|
+
var _callbacks$get;
|
|
846
|
+
observer.observe(target);
|
|
847
|
+
const cbs = (_callbacks$get = callbacks.get(target)) !== null && _callbacks$get !== void 0 ? _callbacks$get : [];
|
|
848
|
+
cbs.push(callback);
|
|
849
|
+
callbacks.set(target, cbs);
|
|
850
|
+
},
|
|
851
|
+
unsubscribe(target, callback) {
|
|
852
|
+
var _callbacks$get2;
|
|
853
|
+
const cbs = (_callbacks$get2 = callbacks.get(target)) !== null && _callbacks$get2 !== void 0 ? _callbacks$get2 : [];
|
|
854
|
+
if (cbs.length === 1) {
|
|
855
|
+
observer.unobserve(target);
|
|
856
|
+
callbacks.delete(target);
|
|
857
|
+
return;
|
|
858
|
+
}
|
|
859
|
+
const cbIndex = cbs.indexOf(callback);
|
|
860
|
+
if (cbIndex !== -1) cbs.splice(cbIndex, 1);
|
|
861
|
+
callbacks.set(target, cbs);
|
|
862
|
+
}
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
let _resizeObserver;
|
|
866
|
+
const getResizeObserver = (polyfill) => !_resizeObserver ? _resizeObserver = createResizeObserver(polyfill) : _resizeObserver;
|
|
789
867
|
const useViewportSize = (props) => {
|
|
790
868
|
const { xs: xsProps, sm: smProps, md: mdProps, lg: lgProps, xl: xlProps } = props;
|
|
791
869
|
const [prevSize, setPrevSize] = useState("initial");
|
|
@@ -803,14 +881,33 @@ const useViewportSize = (props) => {
|
|
|
803
881
|
}, [lg, md, sm, xl, xs]);
|
|
804
882
|
return { size: size2, prevSize, xs, sm, md, lg, xl };
|
|
805
883
|
};
|
|
806
|
-
|
|
884
|
+
const useStopEventPropagation = () => {
|
|
885
|
+
return useCallback((event) => {
|
|
886
|
+
event.stopPropagation();
|
|
887
|
+
}, []);
|
|
888
|
+
};
|
|
889
|
+
function useTextFilter(values, filterFunction) {
|
|
807
890
|
const [filteredOptions, setFilteredOptions] = useState([]);
|
|
808
891
|
const [filterValue, setFilterValue] = useState("");
|
|
809
892
|
useEffect(() => {
|
|
810
|
-
setFilteredOptions(
|
|
811
|
-
}, [filterFunction, filterValue,
|
|
893
|
+
setFilteredOptions(values.filter((value) => filterFunction(value, filterValue)));
|
|
894
|
+
}, [filterFunction, filterValue, values]);
|
|
812
895
|
return [filteredOptions, filterValue, setFilterValue];
|
|
813
896
|
}
|
|
897
|
+
const useSize = (target) => {
|
|
898
|
+
const [size2, setSize] = useState();
|
|
899
|
+
useLayoutEffect(() => {
|
|
900
|
+
var _a;
|
|
901
|
+
setSize((_a = target.current) == null ? void 0 : _a.getBoundingClientRect());
|
|
902
|
+
}, [target]);
|
|
903
|
+
const handleResize = useCallback((entry) => {
|
|
904
|
+
const rect = entry.contentRect;
|
|
905
|
+
setSize(rect);
|
|
906
|
+
}, []);
|
|
907
|
+
useResizeObserver(target, handleResize);
|
|
908
|
+
return size2;
|
|
909
|
+
};
|
|
910
|
+
const genericMemo = memo;
|
|
814
911
|
function useControlledState(initialState, state, setState) {
|
|
815
912
|
const [uncontrolledState, setUncontrolledState] = useState(initialState);
|
|
816
913
|
const handleStateChange = useCallback(
|
|
@@ -827,34 +924,26 @@ function useControlledState(initialState, state, setState) {
|
|
|
827
924
|
}, [state]);
|
|
828
925
|
return [state ?? uncontrolledState, handleStateChange];
|
|
829
926
|
}
|
|
830
|
-
function useFallbackId(id) {
|
|
831
|
-
const fallbackId = useId();
|
|
832
|
-
return id ?? fallbackId;
|
|
833
|
-
}
|
|
834
|
-
const genericMemo = memo;
|
|
835
927
|
function mergeRefs(refs) {
|
|
836
928
|
return (value) => {
|
|
837
|
-
const cleanups = refs.reduce(
|
|
838
|
-
(
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
} else {
|
|
844
|
-
cleanups2.push(() => {
|
|
845
|
-
ref(null);
|
|
846
|
-
});
|
|
847
|
-
}
|
|
848
|
-
} else if (ref != null) {
|
|
849
|
-
ref.current = value;
|
|
929
|
+
const cleanups = refs.reduce((cleanups2, ref) => {
|
|
930
|
+
if (typeof ref === "function") {
|
|
931
|
+
const cleanup = ref(value);
|
|
932
|
+
if (typeof cleanup === "function") {
|
|
933
|
+
cleanups2.push(cleanup);
|
|
934
|
+
} else {
|
|
850
935
|
cleanups2.push(() => {
|
|
851
|
-
ref
|
|
936
|
+
ref(null);
|
|
852
937
|
});
|
|
853
938
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
939
|
+
} else if (ref != null) {
|
|
940
|
+
ref.current = value;
|
|
941
|
+
cleanups2.push(() => {
|
|
942
|
+
ref.current = null;
|
|
943
|
+
});
|
|
944
|
+
}
|
|
945
|
+
return cleanups2;
|
|
946
|
+
}, []);
|
|
858
947
|
return () => {
|
|
859
948
|
cleanups.forEach((cleanup) => {
|
|
860
949
|
cleanup();
|
|
@@ -865,21 +954,6 @@ function mergeRefs(refs) {
|
|
|
865
954
|
const stopPropagation = (e) => {
|
|
866
955
|
e.stopPropagation();
|
|
867
956
|
};
|
|
868
|
-
function getSelectedState(selected) {
|
|
869
|
-
return selected ? "selected" : "unselected";
|
|
870
|
-
}
|
|
871
|
-
function getCheckedState(checked) {
|
|
872
|
-
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
873
|
-
}
|
|
874
|
-
function getActiveState(active) {
|
|
875
|
-
return active ? "active" : "inactive";
|
|
876
|
-
}
|
|
877
|
-
function getBooleanState(value) {
|
|
878
|
-
return value ? "true" : "false";
|
|
879
|
-
}
|
|
880
|
-
function getOpenState(open) {
|
|
881
|
-
return open ? "open" : "closed";
|
|
882
|
-
}
|
|
883
957
|
const MultiSelectProvider = genericMemo(function MultiSelectProvider2(props) {
|
|
884
958
|
const { children, defaultValues, values: controlledValues, onValuesChange } = props;
|
|
885
959
|
const [itemValueMapping, setItemValueMapping] = useState(/* @__PURE__ */ new Set());
|
|
@@ -962,8 +1036,8 @@ const CheckboxGroupItem = memo((props) => {
|
|
|
962
1036
|
ref,
|
|
963
1037
|
className,
|
|
964
1038
|
value,
|
|
1039
|
+
accentColor,
|
|
965
1040
|
disabled,
|
|
966
|
-
accentColor = groupContext.accentColor,
|
|
967
1041
|
variant = groupContext.variant,
|
|
968
1042
|
size: size2 = groupContext.size,
|
|
969
1043
|
radius = groupContext.radius,
|
|
@@ -1000,6 +1074,9 @@ const CheckboxGroupItemIndicator = memo((props) => {
|
|
|
1000
1074
|
return /* @__PURE__ */ jsx(RadixCheckbox.Indicator, { className: cx("flex items-center justify-center", className), ref, ...rest });
|
|
1001
1075
|
});
|
|
1002
1076
|
CheckboxGroupItemIndicator.displayName = "CheckboxGroupItemIndicator";
|
|
1077
|
+
function getBooleanState$1(value) {
|
|
1078
|
+
return value ? "true" : "false";
|
|
1079
|
+
}
|
|
1003
1080
|
const CheckboxGroupRoot = memo((props) => {
|
|
1004
1081
|
const providerContext = useProvider();
|
|
1005
1082
|
const {
|
|
@@ -1022,22 +1099,20 @@ const CheckboxGroupRoot = memo((props) => {
|
|
|
1022
1099
|
name,
|
|
1023
1100
|
required,
|
|
1024
1101
|
disabled,
|
|
1025
|
-
// style props
|
|
1026
|
-
accentColor,
|
|
1027
1102
|
size: size2,
|
|
1028
1103
|
variant,
|
|
1029
1104
|
radius
|
|
1030
1105
|
}),
|
|
1031
|
-
[
|
|
1106
|
+
[disabled, name, radius, required, size2, variant]
|
|
1032
1107
|
);
|
|
1033
1108
|
return /* @__PURE__ */ jsx(
|
|
1034
1109
|
"div",
|
|
1035
1110
|
{
|
|
1036
1111
|
ref,
|
|
1037
1112
|
role: "group",
|
|
1038
|
-
"data-disabled": getBooleanState(!!disabled),
|
|
1113
|
+
"data-disabled": getBooleanState$1(!!disabled),
|
|
1039
1114
|
"data-accent-color": accentColor,
|
|
1040
|
-
"aria-disabled": getBooleanState(!!disabled),
|
|
1115
|
+
"aria-disabled": getBooleanState$1(!!disabled),
|
|
1041
1116
|
...rest,
|
|
1042
1117
|
children: /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
1043
1118
|
MultiSelectProvider,
|
|
@@ -1057,8 +1132,8 @@ const CheckboxGroupSelectAllItem = memo((props) => {
|
|
|
1057
1132
|
const {
|
|
1058
1133
|
ref,
|
|
1059
1134
|
className,
|
|
1135
|
+
accentColor,
|
|
1060
1136
|
disabled,
|
|
1061
|
-
accentColor = groupContext.accentColor,
|
|
1062
1137
|
variant = groupContext.variant,
|
|
1063
1138
|
size: size2 = groupContext.size,
|
|
1064
1139
|
radius = groupContext.radius,
|
|
@@ -1089,39 +1164,137 @@ const CheckboxGroup = {
|
|
|
1089
1164
|
SelectAllItem: CheckboxGroupSelectAllItem,
|
|
1090
1165
|
ItemIndicator: CheckboxGroupItemIndicator
|
|
1091
1166
|
};
|
|
1092
|
-
const
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1167
|
+
const CollapsibleTreeContext = createContext(
|
|
1168
|
+
{}
|
|
1169
|
+
);
|
|
1170
|
+
function useCollapsibleTreeContext() {
|
|
1171
|
+
return useContext(CollapsibleTreeContext);
|
|
1172
|
+
}
|
|
1173
|
+
const CollapsibleNode = genericMemo(function(props) {
|
|
1174
|
+
const { meta, nodes, level = 0, disabled } = props;
|
|
1175
|
+
const [controlledOpenState, setControlledOpenState] = useState(false);
|
|
1176
|
+
const {
|
|
1177
|
+
nodeRenderer,
|
|
1178
|
+
disabled: disabledFromContext,
|
|
1179
|
+
onNodeOpen,
|
|
1180
|
+
onNodeClose,
|
|
1181
|
+
onNodeClick,
|
|
1182
|
+
nodeStyles,
|
|
1183
|
+
nodeClassName
|
|
1184
|
+
} = useCollapsibleTreeContext();
|
|
1185
|
+
const isDisabled = disabled ?? disabledFromContext;
|
|
1186
|
+
const handleClick = useCallback(() => {
|
|
1187
|
+
if (onNodeClick) onNodeClick(meta);
|
|
1188
|
+
}, [meta, onNodeClick]);
|
|
1189
|
+
const toggleOpenState = useCallback(() => {
|
|
1190
|
+
setControlledOpenState(!controlledOpenState);
|
|
1191
|
+
if (!controlledOpenState && onNodeOpen) onNodeOpen(meta);
|
|
1192
|
+
if (controlledOpenState && onNodeClose) onNodeClose(meta);
|
|
1193
|
+
}, [meta, onNodeClose, onNodeOpen, controlledOpenState]);
|
|
1194
|
+
const { children, style, className } = useMemo(() => {
|
|
1195
|
+
return nodeRenderer({
|
|
1196
|
+
meta,
|
|
1197
|
+
toggleOpen: toggleOpenState,
|
|
1198
|
+
open: controlledOpenState,
|
|
1199
|
+
disabled: isDisabled
|
|
1200
|
+
});
|
|
1201
|
+
}, [isDisabled, meta, nodeRenderer, toggleOpenState, controlledOpenState]);
|
|
1202
|
+
const combinedStyles = useMemo(
|
|
1203
|
+
() => ({
|
|
1204
|
+
// want node specific styles to overwrite and global node styles
|
|
1205
|
+
...nodeStyles,
|
|
1206
|
+
...style
|
|
1207
|
+
}),
|
|
1208
|
+
[nodeStyles, style]
|
|
1209
|
+
);
|
|
1210
|
+
return /* @__PURE__ */ jsx(RadixPrimitiveCollapsible.Root, { asChild: true, open: controlledOpenState, disabled: isDisabled, children: /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col", children: [
|
|
1211
|
+
/* @__PURE__ */ jsx(
|
|
1212
|
+
"div",
|
|
1213
|
+
{
|
|
1214
|
+
onClick: handleClick,
|
|
1215
|
+
className: cx(nodeClassName, "flex w-full shrink-0 items-center", className),
|
|
1216
|
+
style: combinedStyles,
|
|
1217
|
+
"data-state": controlledOpenState ? "open" : "closed",
|
|
1218
|
+
"data-disabled": isDisabled,
|
|
1219
|
+
children
|
|
1220
|
+
}
|
|
1221
|
+
),
|
|
1222
|
+
nodes && nodes.length > 0 && /* @__PURE__ */ jsx(RadixPrimitiveCollapsible.Content, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "flex h-max w-full flex-col pl-2", children: nodes.map((treeNodeProps, index) => /* @__PURE__ */ jsx(
|
|
1223
|
+
CollapsibleNode,
|
|
1224
|
+
{
|
|
1225
|
+
level: level + 1,
|
|
1226
|
+
...treeNodeProps
|
|
1227
|
+
},
|
|
1228
|
+
`${level},${index}`
|
|
1229
|
+
)) }) })
|
|
1230
|
+
] }) });
|
|
1231
|
+
});
|
|
1232
|
+
const CollapsibleTree = genericMemo(function(props) {
|
|
1233
|
+
const {
|
|
1234
|
+
nodes,
|
|
1235
|
+
disabled = false,
|
|
1236
|
+
nodeClassName,
|
|
1237
|
+
nodeStyles,
|
|
1238
|
+
onNodeClick,
|
|
1239
|
+
onNodeClose,
|
|
1240
|
+
onNodeOpen,
|
|
1241
|
+
nodeRenderer,
|
|
1242
|
+
...rest
|
|
1243
|
+
} = props;
|
|
1244
|
+
return /* @__PURE__ */ jsx(
|
|
1245
|
+
CollapsibleTreeContext.Provider,
|
|
1246
|
+
{
|
|
1247
|
+
value: {
|
|
1248
|
+
nodeRenderer,
|
|
1249
|
+
nodeClassName,
|
|
1250
|
+
nodeStyles,
|
|
1251
|
+
disabled,
|
|
1252
|
+
onNodeClick,
|
|
1253
|
+
onNodeClose,
|
|
1254
|
+
onNodeOpen
|
|
1255
|
+
},
|
|
1256
|
+
children: /* @__PURE__ */ jsx("div", { className: "flex h-max w-full flex-col", ...rest, children: nodes.map((treeNodeProps, index) => /* @__PURE__ */ jsx(CollapsibleNode, { ...treeNodeProps }, `${0},${index}`)) })
|
|
1257
|
+
}
|
|
1258
|
+
);
|
|
1259
|
+
});
|
|
1260
|
+
const CommandMenuContext = createContext({});
|
|
1261
|
+
const SelectedIndicatorContext$1 = createContext(false);
|
|
1262
|
+
const CheckboxIndicatorContext = createContext(false);
|
|
1263
|
+
const CommandMenuPageContext = createContext({});
|
|
1264
|
+
const CommandMenuDialogContext = createContext({});
|
|
1265
|
+
function getSelectedState$1(selected) {
|
|
1266
|
+
return selected ? "selected" : "unselected";
|
|
1267
|
+
}
|
|
1268
|
+
function getCheckedState$1(checked) {
|
|
1269
|
+
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
1270
|
+
}
|
|
1271
|
+
function getActiveState(active) {
|
|
1272
|
+
return active ? "active" : "inactive";
|
|
1273
|
+
}
|
|
1274
|
+
const CommandMenuCheckboxIndicator = memo((props) => {
|
|
1275
|
+
const { ref, className, children, ...rest } = props;
|
|
1276
|
+
const checkedState = use(CheckboxIndicatorContext);
|
|
1277
|
+
const computedChildren = useMemo(() => {
|
|
1278
|
+
return typeof children === "function" ? children(checkedState) : children;
|
|
1279
|
+
}, [checkedState, children]);
|
|
1097
1280
|
return /* @__PURE__ */ jsx(
|
|
1098
1281
|
"span",
|
|
1099
1282
|
{
|
|
1100
1283
|
ref,
|
|
1284
|
+
"data-state": getCheckedState$1(checkedState),
|
|
1101
1285
|
className: cx(
|
|
1102
|
-
"
|
|
1286
|
+
"inline-block size-max",
|
|
1103
1287
|
{
|
|
1104
|
-
invisible:
|
|
1288
|
+
invisible: checkedState === false
|
|
1105
1289
|
},
|
|
1106
1290
|
className
|
|
1107
1291
|
),
|
|
1108
|
-
"data-state": getCheckedState(checked),
|
|
1109
1292
|
...rest,
|
|
1110
1293
|
children: computedChildren
|
|
1111
1294
|
}
|
|
1112
1295
|
);
|
|
1113
1296
|
});
|
|
1114
|
-
CheckedIndicator.displayName = "CheckedIndicator";
|
|
1115
|
-
const CommandMenuCheckboxIndicator = memo((props) => {
|
|
1116
|
-
const { ref, children, ...rest } = props;
|
|
1117
|
-
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
1118
|
-
});
|
|
1119
1297
|
CommandMenuCheckboxIndicator.displayName = "CommandMenuCheckboxIndicator";
|
|
1120
|
-
const CommandMenuContext = createContext({});
|
|
1121
|
-
const SelectedIndicatorContext$1 = createContext(false);
|
|
1122
|
-
const CheckboxIndicatorContext = createContext(false);
|
|
1123
|
-
const CommandMenuPageContext = createContext({});
|
|
1124
|
-
const CommandMenuDialogContext = createContext({});
|
|
1125
1298
|
const commandMenuContentCva = cva(
|
|
1126
1299
|
[
|
|
1127
1300
|
"ring",
|
|
@@ -1358,7 +1531,7 @@ const CommandMenuCheckboxItem = memo((props) => {
|
|
|
1358
1531
|
onSelect == null ? void 0 : onSelect();
|
|
1359
1532
|
onCheckedChange(checked !== true);
|
|
1360
1533
|
}, [checked, onCheckedChange, onSelect]);
|
|
1361
|
-
return /* @__PURE__ */ jsx(CheckboxIndicatorContext, { value: checked, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getCheckedState(checked), ...rest, children }) });
|
|
1534
|
+
return /* @__PURE__ */ jsx(CheckboxIndicatorContext, { value: checked, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getCheckedState$1(checked), ...rest, children }) });
|
|
1362
1535
|
});
|
|
1363
1536
|
CommandMenuCheckboxItem.displayName = "CommandMenuCheckboxItem";
|
|
1364
1537
|
const CommandMenuContent = memo((props) => {
|
|
@@ -1385,10 +1558,9 @@ const CommandMenuContent = memo((props) => {
|
|
|
1385
1558
|
return {
|
|
1386
1559
|
variant,
|
|
1387
1560
|
size: size2,
|
|
1388
|
-
radius
|
|
1389
|
-
accentColor
|
|
1561
|
+
radius
|
|
1390
1562
|
};
|
|
1391
|
-
}, [
|
|
1563
|
+
}, [radius, size2, variant]);
|
|
1392
1564
|
return /* @__PURE__ */ jsx(DialogPortal, { children: /* @__PURE__ */ jsx(
|
|
1393
1565
|
DialogContent$1,
|
|
1394
1566
|
{
|
|
@@ -1475,7 +1647,7 @@ const CommandMenuMultiSelectItem = genericMemo(function(props) {
|
|
|
1475
1647
|
{
|
|
1476
1648
|
ref,
|
|
1477
1649
|
onSelect: handleSelect,
|
|
1478
|
-
"data-state": getSelectedState(isSelected),
|
|
1650
|
+
"data-state": getSelectedState$1(isSelected),
|
|
1479
1651
|
"aria-selected": isSelected,
|
|
1480
1652
|
closeOnSelect,
|
|
1481
1653
|
...rest,
|
|
@@ -1549,7 +1721,7 @@ const CommandMenuRadioItem = genericMemo(function(props) {
|
|
|
1549
1721
|
selectValue(value);
|
|
1550
1722
|
}, [onSelect, selectValue, value]);
|
|
1551
1723
|
const isSelected = selected(value);
|
|
1552
|
-
return /* @__PURE__ */ jsx(SelectedIndicatorContext$1, { value: isSelected, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getSelectedState(isSelected), ...rest, children }) });
|
|
1724
|
+
return /* @__PURE__ */ jsx(SelectedIndicatorContext$1, { value: isSelected, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getSelectedState$1(isSelected), ...rest, children }) });
|
|
1553
1725
|
});
|
|
1554
1726
|
const CommandMenuRoot = memo((props) => {
|
|
1555
1727
|
const { children, defaultOpen, open: controlledOpen, onOpenChange, modal } = props;
|
|
@@ -1577,39 +1749,35 @@ const CommandMenuSelectAllItem = genericMemo(function(props) {
|
|
|
1577
1749
|
ref,
|
|
1578
1750
|
role: "menuitemcheckbox",
|
|
1579
1751
|
onSelect: handleSelect,
|
|
1580
|
-
"data-state": getCheckedState(selectedState),
|
|
1752
|
+
"data-state": getCheckedState$1(selectedState),
|
|
1581
1753
|
closeOnSelect,
|
|
1582
1754
|
...rest
|
|
1583
1755
|
}
|
|
1584
1756
|
) });
|
|
1585
1757
|
});
|
|
1586
|
-
const
|
|
1587
|
-
const
|
|
1588
|
-
const
|
|
1589
|
-
const
|
|
1590
|
-
|
|
1758
|
+
const CommandMenuSelectedIndicator = memo((props) => {
|
|
1759
|
+
const { ref, className, children, ...rest } = props;
|
|
1760
|
+
const isSelected = use(SelectedIndicatorContext$1);
|
|
1761
|
+
const computedChildren = useMemo(() => {
|
|
1762
|
+
return typeof children === "function" ? children(isSelected) : children;
|
|
1763
|
+
}, [isSelected, children]);
|
|
1591
1764
|
return /* @__PURE__ */ jsx(
|
|
1592
1765
|
"span",
|
|
1593
1766
|
{
|
|
1594
1767
|
ref,
|
|
1768
|
+
"data-state": getSelectedState$1(isSelected),
|
|
1595
1769
|
className: cx(
|
|
1596
|
-
"
|
|
1770
|
+
"inline-block size-max",
|
|
1597
1771
|
{
|
|
1598
1772
|
invisible: !isSelected
|
|
1599
1773
|
},
|
|
1600
1774
|
className
|
|
1601
1775
|
),
|
|
1602
|
-
"data-state": getSelectedState(isSelected),
|
|
1603
1776
|
...rest,
|
|
1604
1777
|
children: computedChildren
|
|
1605
1778
|
}
|
|
1606
1779
|
);
|
|
1607
1780
|
});
|
|
1608
|
-
SelectedIndicator.displayName = "SelectedIndicator";
|
|
1609
|
-
const CommandMenuSelectedIndicator = memo((props) => {
|
|
1610
|
-
const { ref, children, ...rest } = props;
|
|
1611
|
-
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
1612
|
-
});
|
|
1613
1781
|
CommandMenuSelectedIndicator.displayName = "CommandMenuSelectedIndicator";
|
|
1614
1782
|
const CommandMenuSeparator = memo((props) => {
|
|
1615
1783
|
const { className, ref, spacing = false, ...rest } = props;
|
|
@@ -2086,7 +2254,7 @@ const HoverCard = {
|
|
|
2086
2254
|
Root: RadixHoverCard.Root,
|
|
2087
2255
|
Trigger: RadixHoverCard.Trigger
|
|
2088
2256
|
};
|
|
2089
|
-
const HoverUtility = memo(({ children, forceHover })
|
|
2257
|
+
const HoverUtility = memo(function Root({ children, forceHover }) {
|
|
2090
2258
|
const [isHovered, setIsHovered] = useState(false);
|
|
2091
2259
|
const handlePointerEnter = useCallback(() => {
|
|
2092
2260
|
setIsHovered(true);
|
|
@@ -2100,7 +2268,6 @@ const HoverUtility = memo(({ children, forceHover }) => {
|
|
|
2100
2268
|
onPointerLeave: handlePointerLeave
|
|
2101
2269
|
});
|
|
2102
2270
|
});
|
|
2103
|
-
HoverUtility.displayName = "HoverUtility";
|
|
2104
2271
|
const InputContext = createContext({});
|
|
2105
2272
|
const inputRoot$1 = cva(
|
|
2106
2273
|
[
|
|
@@ -2579,6 +2746,40 @@ const LayoutSlideOutOverlay = memo((props) => {
|
|
|
2579
2746
|
return showOverlay && /* @__PURE__ */ jsx("div", { className: cx("overmap-layout-overlay", "fixed inset-0", className), ref, ...rest, children });
|
|
2580
2747
|
});
|
|
2581
2748
|
LayoutSlideOutOverlay.displayName = "SlideOutOverlay";
|
|
2749
|
+
const MENU_OVERFLOW_PADDING = 20;
|
|
2750
|
+
const MENU_CONTENT_PADDING = 8;
|
|
2751
|
+
const MENU_MINIMUM_MAX_HEIGHT = 250;
|
|
2752
|
+
const computeOffsets = (side, alignment) => {
|
|
2753
|
+
switch (side) {
|
|
2754
|
+
case "right":
|
|
2755
|
+
if (alignment === "start") {
|
|
2756
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
2757
|
+
} else if (alignment === "end") {
|
|
2758
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
2759
|
+
}
|
|
2760
|
+
break;
|
|
2761
|
+
case "left":
|
|
2762
|
+
if (alignment === "start") {
|
|
2763
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
2764
|
+
} else if (alignment === "end") {
|
|
2765
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
2766
|
+
}
|
|
2767
|
+
break;
|
|
2768
|
+
}
|
|
2769
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: 0 };
|
|
2770
|
+
};
|
|
2771
|
+
function getSelectedState(selected) {
|
|
2772
|
+
return selected ? "selected" : "unselected";
|
|
2773
|
+
}
|
|
2774
|
+
function getCheckedState(checked) {
|
|
2775
|
+
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
2776
|
+
}
|
|
2777
|
+
function getBooleanState(value) {
|
|
2778
|
+
return value ? "true" : "false";
|
|
2779
|
+
}
|
|
2780
|
+
function getOpenState(open) {
|
|
2781
|
+
return open ? "open" : "closed";
|
|
2782
|
+
}
|
|
2582
2783
|
function nextStateBasedOnType(open, type) {
|
|
2583
2784
|
switch (type) {
|
|
2584
2785
|
case "toggle":
|
|
@@ -2674,6 +2875,28 @@ const Link = memo((props) => {
|
|
|
2674
2875
|
);
|
|
2675
2876
|
});
|
|
2676
2877
|
Link.displayName = "Link";
|
|
2878
|
+
const CheckedIndicatorContext = createContext({});
|
|
2879
|
+
const CheckedIndicator = (props) => {
|
|
2880
|
+
const { children, ref, className, ...rest } = props;
|
|
2881
|
+
const checked = useContext(CheckedIndicatorContext);
|
|
2882
|
+
const computedChildren = typeof children === "function" ? children(checked === "indeterminate") : children;
|
|
2883
|
+
return /* @__PURE__ */ jsx(
|
|
2884
|
+
"span",
|
|
2885
|
+
{
|
|
2886
|
+
ref,
|
|
2887
|
+
className: cx(
|
|
2888
|
+
"flex size-max items-center",
|
|
2889
|
+
{
|
|
2890
|
+
invisible: checked === false
|
|
2891
|
+
},
|
|
2892
|
+
className
|
|
2893
|
+
),
|
|
2894
|
+
"data-state": getCheckedState$1(checked),
|
|
2895
|
+
...rest,
|
|
2896
|
+
children: computedChildren
|
|
2897
|
+
}
|
|
2898
|
+
);
|
|
2899
|
+
};
|
|
2677
2900
|
const menuItem = cva(
|
|
2678
2901
|
[
|
|
2679
2902
|
"select-none",
|
|
@@ -2819,115 +3042,100 @@ const inputRoot = cva(
|
|
|
2819
3042
|
}
|
|
2820
3043
|
}
|
|
2821
3044
|
);
|
|
2822
|
-
const MenuContentContext = createContext({});
|
|
2823
3045
|
const MenuContext = createContext({});
|
|
2824
|
-
const
|
|
2825
|
-
const
|
|
2826
|
-
const
|
|
2827
|
-
const rootMenuContext = use(MenuContext);
|
|
2828
|
-
const { getItemProps, activeIndex, setOpen, size: size2, variant, radius } = use(MenuContentContext);
|
|
2829
|
-
const { closeRoot } = use(SubContext);
|
|
3046
|
+
const useMenuContext = () => useContext(MenuContext);
|
|
3047
|
+
const DEFAULT_OFFSET = 5;
|
|
3048
|
+
const MenuRoot = memo((props) => {
|
|
2830
3049
|
const {
|
|
2831
|
-
ref: forwardedRef,
|
|
2832
|
-
className,
|
|
2833
3050
|
children,
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
3051
|
+
side = "bottom",
|
|
3052
|
+
align = "center",
|
|
3053
|
+
offset: offset$1,
|
|
3054
|
+
loop = false,
|
|
3055
|
+
modal = false,
|
|
3056
|
+
// open state related props
|
|
3057
|
+
open: controlledOpen,
|
|
3058
|
+
onOpenChange,
|
|
3059
|
+
defaultOpen
|
|
2840
3060
|
} = props;
|
|
2841
|
-
const
|
|
2842
|
-
const
|
|
2843
|
-
const
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
}
|
|
2869
|
-
|
|
2870
|
-
"
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
switch (checked) {
|
|
2894
|
-
case true:
|
|
2895
|
-
onCheckedChange(false);
|
|
2896
|
-
break;
|
|
2897
|
-
case "indeterminate":
|
|
2898
|
-
case false:
|
|
2899
|
-
onCheckedChange(true);
|
|
2900
|
-
break;
|
|
2901
|
-
}
|
|
2902
|
-
}, [checked, onCheckedChange, onSelect]);
|
|
2903
|
-
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, ...rest }) });
|
|
2904
|
-
});
|
|
2905
|
-
MenuCheckboxItem.displayName = "MenuCheckboxItem";
|
|
2906
|
-
const MenuCheckboxItemIndicator = memo((props) => {
|
|
2907
|
-
const { ref, children, ...rest } = props;
|
|
2908
|
-
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
2909
|
-
});
|
|
2910
|
-
MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
2911
|
-
const MenuClickTrigger = memo((props) => {
|
|
2912
|
-
const { ref: forwardedRef, children, disabled = false } = props;
|
|
2913
|
-
const { getReferenceProps, refs, setTriggerType, open } = use(MenuContext);
|
|
2914
|
-
const mergedRefs = useMergeRefs([refs.setReference, forwardedRef]);
|
|
2915
|
-
useEffect(() => {
|
|
2916
|
-
setTriggerType("click");
|
|
2917
|
-
}, [setTriggerType]);
|
|
2918
|
-
return /* @__PURE__ */ jsx(
|
|
2919
|
-
Slot,
|
|
3061
|
+
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3062
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
3063
|
+
const [triggerType, setTriggerType] = useState(null);
|
|
3064
|
+
const elementsRef = useRef([]);
|
|
3065
|
+
const nodeId = useFloatingNodeId();
|
|
3066
|
+
const { refs, floatingStyles, context, middlewareData } = useFloating({
|
|
3067
|
+
nodeId,
|
|
3068
|
+
strategy: "fixed",
|
|
3069
|
+
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3070
|
+
whileElementsMounted: autoUpdate,
|
|
3071
|
+
open,
|
|
3072
|
+
onOpenChange: setOpen,
|
|
3073
|
+
middleware: [
|
|
3074
|
+
offset({ mainAxis: offset$1 ?? DEFAULT_OFFSET }),
|
|
3075
|
+
size({
|
|
3076
|
+
apply({ availableHeight, elements }) {
|
|
3077
|
+
elements.floating.style.setProperty(
|
|
3078
|
+
"--overmap-menu-available-height",
|
|
3079
|
+
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3080
|
+
);
|
|
3081
|
+
},
|
|
3082
|
+
padding: MENU_OVERFLOW_PADDING
|
|
3083
|
+
}),
|
|
3084
|
+
flip({ fallbackStrategy: "initialPlacement" }),
|
|
3085
|
+
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3086
|
+
hide()
|
|
3087
|
+
]
|
|
3088
|
+
});
|
|
3089
|
+
const role = useRole(context, {
|
|
3090
|
+
role: "menu"
|
|
3091
|
+
});
|
|
3092
|
+
const dismiss = useDismiss(context, {
|
|
3093
|
+
capture: true,
|
|
3094
|
+
ancestorScroll: triggerType === "context" || triggerType === "virtual"
|
|
3095
|
+
});
|
|
3096
|
+
const click = useClick(context, {
|
|
3097
|
+
enabled: triggerType === "click"
|
|
3098
|
+
});
|
|
3099
|
+
const listNavigation = useListNavigation(context, {
|
|
3100
|
+
listRef: elementsRef,
|
|
3101
|
+
activeIndex,
|
|
3102
|
+
onNavigate: setActiveIndex,
|
|
3103
|
+
loop
|
|
3104
|
+
});
|
|
3105
|
+
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3106
|
+
dismiss,
|
|
3107
|
+
listNavigation,
|
|
3108
|
+
click,
|
|
3109
|
+
role
|
|
3110
|
+
]);
|
|
3111
|
+
return /* @__PURE__ */ jsx(FloatingTree, { children: /* @__PURE__ */ jsx(
|
|
3112
|
+
MenuContext.Provider,
|
|
2920
3113
|
{
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
3114
|
+
value: {
|
|
3115
|
+
open,
|
|
3116
|
+
setOpen,
|
|
3117
|
+
refs,
|
|
3118
|
+
context,
|
|
3119
|
+
floatingStyles,
|
|
3120
|
+
elementsRef,
|
|
3121
|
+
getFloatingProps,
|
|
3122
|
+
getItemProps,
|
|
3123
|
+
getReferenceProps,
|
|
3124
|
+
nodeId,
|
|
3125
|
+
activeIndex,
|
|
3126
|
+
setActiveIndex,
|
|
3127
|
+
middlewareData,
|
|
3128
|
+
side,
|
|
3129
|
+
modal,
|
|
3130
|
+
setTriggerType
|
|
3131
|
+
},
|
|
2926
3132
|
children
|
|
2927
3133
|
}
|
|
2928
|
-
);
|
|
3134
|
+
) });
|
|
2929
3135
|
});
|
|
2930
|
-
|
|
3136
|
+
MenuRoot.displayName = "Root";
|
|
3137
|
+
const MenuContentContext = createContext({});
|
|
3138
|
+
const useMenuContentContext = () => useContext(MenuContentContext);
|
|
2931
3139
|
const MenuContent = memo((props) => {
|
|
2932
3140
|
var _a;
|
|
2933
3141
|
const providerContext = useProvider();
|
|
@@ -2956,7 +3164,7 @@ const MenuContent = memo((props) => {
|
|
|
2956
3164
|
floatingStyles,
|
|
2957
3165
|
modal,
|
|
2958
3166
|
side
|
|
2959
|
-
} =
|
|
3167
|
+
} = useMenuContext();
|
|
2960
3168
|
const computedFloatingStyles = useMemo(() => {
|
|
2961
3169
|
var _a2;
|
|
2962
3170
|
return {
|
|
@@ -3025,13 +3233,219 @@ const MenuContent = memo((props) => {
|
|
|
3025
3233
|
}
|
|
3026
3234
|
) }) })
|
|
3027
3235
|
}
|
|
3028
|
-
) }) });
|
|
3236
|
+
) }) });
|
|
3237
|
+
});
|
|
3238
|
+
MenuContent.displayName = "Menu.Content";
|
|
3239
|
+
const SubContext = createContext({});
|
|
3240
|
+
const useSubContext = () => useContext(SubContext);
|
|
3241
|
+
const MenuSub = memo((props) => {
|
|
3242
|
+
const {
|
|
3243
|
+
children,
|
|
3244
|
+
disabled = false,
|
|
3245
|
+
side = "right",
|
|
3246
|
+
align = "start",
|
|
3247
|
+
closeRoot = false,
|
|
3248
|
+
loop = false,
|
|
3249
|
+
modal = false,
|
|
3250
|
+
// open state related props
|
|
3251
|
+
open: controlledOpen,
|
|
3252
|
+
onOpenChange,
|
|
3253
|
+
defaultOpen
|
|
3254
|
+
} = props;
|
|
3255
|
+
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3256
|
+
const nodeId = useFloatingNodeId();
|
|
3257
|
+
const { refs, floatingStyles, context } = useFloating({
|
|
3258
|
+
nodeId,
|
|
3259
|
+
strategy: "fixed",
|
|
3260
|
+
whileElementsMounted: autoUpdate,
|
|
3261
|
+
open,
|
|
3262
|
+
onOpenChange: (open2, _event, reason) => {
|
|
3263
|
+
if (reason) setOpen(open2);
|
|
3264
|
+
},
|
|
3265
|
+
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3266
|
+
middleware: [
|
|
3267
|
+
offset({ ...computeOffsets(side, align) }),
|
|
3268
|
+
size({
|
|
3269
|
+
padding: MENU_OVERFLOW_PADDING,
|
|
3270
|
+
apply({ availableHeight, elements }) {
|
|
3271
|
+
elements.floating.style.setProperty(
|
|
3272
|
+
"--overmap-menu-available-height",
|
|
3273
|
+
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3274
|
+
);
|
|
3275
|
+
}
|
|
3276
|
+
}),
|
|
3277
|
+
flip(),
|
|
3278
|
+
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3279
|
+
hide()
|
|
3280
|
+
]
|
|
3281
|
+
});
|
|
3282
|
+
const dismiss = useDismiss(context, {
|
|
3283
|
+
bubbles: closeRoot,
|
|
3284
|
+
outsidePress: closeRoot
|
|
3285
|
+
});
|
|
3286
|
+
const hover = useHover(context, {
|
|
3287
|
+
restMs: 50,
|
|
3288
|
+
handleClose: safePolygon({
|
|
3289
|
+
blockPointerEvents: true,
|
|
3290
|
+
requireIntent: false
|
|
3291
|
+
}),
|
|
3292
|
+
enabled: !disabled
|
|
3293
|
+
});
|
|
3294
|
+
const click = useClick(context, {
|
|
3295
|
+
enabled: !disabled
|
|
3296
|
+
});
|
|
3297
|
+
const elementsRef = useRef([]);
|
|
3298
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
3299
|
+
const listNavigation = useListNavigation(context, {
|
|
3300
|
+
listRef: elementsRef,
|
|
3301
|
+
nested: true,
|
|
3302
|
+
activeIndex,
|
|
3303
|
+
onNavigate: setActiveIndex,
|
|
3304
|
+
loop,
|
|
3305
|
+
rtl: side === "left"
|
|
3306
|
+
});
|
|
3307
|
+
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3308
|
+
listNavigation,
|
|
3309
|
+
dismiss,
|
|
3310
|
+
hover,
|
|
3311
|
+
click
|
|
3312
|
+
]);
|
|
3313
|
+
return /* @__PURE__ */ jsx(
|
|
3314
|
+
SubContext.Provider,
|
|
3315
|
+
{
|
|
3316
|
+
value: {
|
|
3317
|
+
open,
|
|
3318
|
+
setOpen,
|
|
3319
|
+
nodeId,
|
|
3320
|
+
refs,
|
|
3321
|
+
floatingStyles,
|
|
3322
|
+
context,
|
|
3323
|
+
elementsRef,
|
|
3324
|
+
activeIndex,
|
|
3325
|
+
setActiveIndex,
|
|
3326
|
+
getFloatingProps,
|
|
3327
|
+
getItemProps,
|
|
3328
|
+
getReferenceProps,
|
|
3329
|
+
disabled,
|
|
3330
|
+
side,
|
|
3331
|
+
closeRoot,
|
|
3332
|
+
modal
|
|
3333
|
+
},
|
|
3334
|
+
children
|
|
3335
|
+
}
|
|
3336
|
+
);
|
|
3337
|
+
});
|
|
3338
|
+
MenuSub.displayName = "SubMenu";
|
|
3339
|
+
const TRIGGER_SELECT_KEYS = ["Enter", " "];
|
|
3340
|
+
const MenuItem = memo((props) => {
|
|
3341
|
+
const rootMenuContext = useMenuContext();
|
|
3342
|
+
const { getItemProps, activeIndex, setOpen, size: size2, variant, radius } = useMenuContentContext();
|
|
3343
|
+
const { closeRoot } = useSubContext();
|
|
3344
|
+
const {
|
|
3345
|
+
ref: forwardedRef,
|
|
3346
|
+
className,
|
|
3347
|
+
children,
|
|
3348
|
+
onSelect,
|
|
3349
|
+
onClick,
|
|
3350
|
+
onKeyDown,
|
|
3351
|
+
closeOnSelect = true,
|
|
3352
|
+
disabled = false,
|
|
3353
|
+
...rest
|
|
3354
|
+
} = props;
|
|
3355
|
+
const { ref, index } = useListItem();
|
|
3356
|
+
const mergeRefs2 = useMergeRefs([ref, forwardedRef]);
|
|
3357
|
+
const handleClick = useCallback(
|
|
3358
|
+
(e) => {
|
|
3359
|
+
e.stopPropagation();
|
|
3360
|
+
if (disabled) return;
|
|
3361
|
+
onClick == null ? void 0 : onClick(e);
|
|
3362
|
+
onSelect == null ? void 0 : onSelect();
|
|
3363
|
+
if (closeOnSelect) setOpen(false);
|
|
3364
|
+
if (closeRoot) rootMenuContext.setOpen(false);
|
|
3365
|
+
},
|
|
3366
|
+
[closeOnSelect, closeRoot, disabled, rootMenuContext, onClick, onSelect, setOpen]
|
|
3367
|
+
);
|
|
3368
|
+
const handleKeyDown = useCallback(
|
|
3369
|
+
(e) => {
|
|
3370
|
+
if (disabled) return;
|
|
3371
|
+
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
3372
|
+
if (TRIGGER_SELECT_KEYS.includes(e.key)) {
|
|
3373
|
+
onSelect == null ? void 0 : onSelect();
|
|
3374
|
+
if (closeOnSelect) setOpen(false);
|
|
3375
|
+
}
|
|
3376
|
+
},
|
|
3377
|
+
[closeOnSelect, disabled, onKeyDown, onSelect, setOpen]
|
|
3378
|
+
);
|
|
3379
|
+
const isActive = useMemo(() => index === activeIndex, [activeIndex, index]);
|
|
3380
|
+
const computedChildren = useMemo(() => {
|
|
3381
|
+
return typeof children === "function" ? children({ active: isActive, selected: false }) : children;
|
|
3382
|
+
}, [children, isActive]);
|
|
3383
|
+
return /* @__PURE__ */ jsx(
|
|
3384
|
+
"li",
|
|
3385
|
+
{
|
|
3386
|
+
className: cx(menuItem({ size: size2, variant }), radiusCva({ radius, maxLarge: true }), className),
|
|
3387
|
+
ref: mergeRefs2,
|
|
3388
|
+
role: "menuitem",
|
|
3389
|
+
"data-disabled": getBooleanState(disabled),
|
|
3390
|
+
"aria-disabled": disabled,
|
|
3391
|
+
"data-highlighted": isActive ? "" : void 0,
|
|
3392
|
+
...getItemProps({
|
|
3393
|
+
onClick: handleClick,
|
|
3394
|
+
onKeyDown: handleKeyDown,
|
|
3395
|
+
tabIndex: isActive ? 0 : -1,
|
|
3396
|
+
...rest
|
|
3397
|
+
}),
|
|
3398
|
+
children: computedChildren
|
|
3399
|
+
}
|
|
3400
|
+
);
|
|
3401
|
+
});
|
|
3402
|
+
MenuItem.displayName = "MenuItem";
|
|
3403
|
+
const MenuCheckboxItem = memo((props) => {
|
|
3404
|
+
const { ref, checked, onCheckedChange, onSelect, ...rest } = props;
|
|
3405
|
+
const handleSelect = useCallback(() => {
|
|
3406
|
+
onSelect == null ? void 0 : onSelect();
|
|
3407
|
+
switch (checked) {
|
|
3408
|
+
case true:
|
|
3409
|
+
onCheckedChange(false);
|
|
3410
|
+
break;
|
|
3411
|
+
case "indeterminate":
|
|
3412
|
+
case false:
|
|
3413
|
+
onCheckedChange(true);
|
|
3414
|
+
break;
|
|
3415
|
+
}
|
|
3416
|
+
}, [checked, onCheckedChange, onSelect]);
|
|
3417
|
+
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, ...rest }) });
|
|
3418
|
+
});
|
|
3419
|
+
MenuCheckboxItem.displayName = "MenuCheckboxItem";
|
|
3420
|
+
const MenuCheckboxItemIndicator = memo((props) => {
|
|
3421
|
+
const { ref, children, ...rest } = props;
|
|
3422
|
+
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
3423
|
+
});
|
|
3424
|
+
MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
3425
|
+
const MenuClickTrigger = memo((props) => {
|
|
3426
|
+
const { ref: forwardedRef, children, disabled = false } = props;
|
|
3427
|
+
const { getReferenceProps, refs, setTriggerType, open } = useMenuContext();
|
|
3428
|
+
const mergedRefs = useMergeRefs([refs.setReference, forwardedRef]);
|
|
3429
|
+
useEffect(() => {
|
|
3430
|
+
setTriggerType("click");
|
|
3431
|
+
}, [setTriggerType]);
|
|
3432
|
+
return /* @__PURE__ */ jsx(
|
|
3433
|
+
Slot,
|
|
3434
|
+
{
|
|
3435
|
+
ref: mergedRefs,
|
|
3436
|
+
"aria-disabled": disabled,
|
|
3437
|
+
"data-disabled": getBooleanState(disabled),
|
|
3438
|
+
"data-state": getOpenState(open),
|
|
3439
|
+
...getReferenceProps({ disabled }),
|
|
3440
|
+
children
|
|
3441
|
+
}
|
|
3442
|
+
);
|
|
3029
3443
|
});
|
|
3030
|
-
|
|
3444
|
+
MenuClickTrigger.displayName = "MenuClickTrigger";
|
|
3031
3445
|
const MenuContextTrigger = memo((props) => {
|
|
3032
3446
|
const { ref: forwardedRef, children, disabled = false } = props;
|
|
3033
3447
|
const ref = useRef(null);
|
|
3034
|
-
const { setOpen, refs, setTriggerType, open } =
|
|
3448
|
+
const { setOpen, refs, setTriggerType, open } = useMenuContext();
|
|
3035
3449
|
const mergedRefs = useMergeRefs([forwardedRef, ref]);
|
|
3036
3450
|
useEffect(() => {
|
|
3037
3451
|
setTriggerType("context");
|
|
@@ -3082,7 +3496,7 @@ const MenuGroup = memo((props) => {
|
|
|
3082
3496
|
MenuGroup.displayName = "MenuGroup";
|
|
3083
3497
|
const MenuInputField = memo((props) => {
|
|
3084
3498
|
const { ref: forwardedRef, className, onValueChange, onChange, disabled = false, ...rest } = props;
|
|
3085
|
-
const { activeIndex, getItemProps } =
|
|
3499
|
+
const { activeIndex, getItemProps } = useMenuContentContext();
|
|
3086
3500
|
const { index, ref } = useListItem();
|
|
3087
3501
|
const mergedRefs = useMergeRefs([ref, forwardedRef]);
|
|
3088
3502
|
const handleChange = useCallback(
|
|
@@ -3115,7 +3529,7 @@ const MenuInputField = memo((props) => {
|
|
|
3115
3529
|
MenuInputField.displayName = "MenuInputField";
|
|
3116
3530
|
const MenuInputRoot = memo((props) => {
|
|
3117
3531
|
const { ref, className, ...rest } = props;
|
|
3118
|
-
const { size: size2 } =
|
|
3532
|
+
const { size: size2 } = useMenuContentContext();
|
|
3119
3533
|
return /* @__PURE__ */ jsx("div", { className: cx(inputRoot({ size: size2 }), className), ref, ...rest });
|
|
3120
3534
|
});
|
|
3121
3535
|
MenuInputRoot.displayName = "MenuInputRoot";
|
|
@@ -3126,7 +3540,7 @@ const MenuInputSlot = memo((props) => {
|
|
|
3126
3540
|
MenuInputSlot.displayName = "MenuInputSlot";
|
|
3127
3541
|
const MenuLabel = memo((props) => {
|
|
3128
3542
|
const { ref, className, ...rest } = props;
|
|
3129
|
-
const { size: size2 } =
|
|
3543
|
+
const { size: size2 } = useMenuContentContext();
|
|
3130
3544
|
return /* @__PURE__ */ jsx("div", { ref, className: cx(menuLabelCva({ size: size2 }), className), ...rest });
|
|
3131
3545
|
});
|
|
3132
3546
|
MenuLabel.displayName = "MenuLabel";
|
|
@@ -3134,6 +3548,29 @@ const MenuMultiSelectGroup = genericMemo(function MenuMultiSelectGroup2(props) {
|
|
|
3134
3548
|
const { ref, children, defaultValues, values, onValuesChange, ...rest } = props;
|
|
3135
3549
|
return /* @__PURE__ */ jsx(MenuGroup, { ref, ...rest, children: /* @__PURE__ */ jsx(MultiSelectProvider, { defaultValues, values, onValuesChange, children }) });
|
|
3136
3550
|
});
|
|
3551
|
+
const SelectedIndicatorContext = createContext(false);
|
|
3552
|
+
const useSelectedIndicatorContext = () => useContext(SelectedIndicatorContext);
|
|
3553
|
+
const MenuSelectedIndicator = memo((props) => {
|
|
3554
|
+
const { ref, children, className, ...rest } = props;
|
|
3555
|
+
const isSelected = useSelectedIndicatorContext();
|
|
3556
|
+
return /* @__PURE__ */ jsx(
|
|
3557
|
+
"span",
|
|
3558
|
+
{
|
|
3559
|
+
ref,
|
|
3560
|
+
className: cx(
|
|
3561
|
+
"flex size-max items-center",
|
|
3562
|
+
{
|
|
3563
|
+
invisible: !isSelected
|
|
3564
|
+
},
|
|
3565
|
+
className
|
|
3566
|
+
),
|
|
3567
|
+
"data-state": getSelectedState(isSelected),
|
|
3568
|
+
...rest,
|
|
3569
|
+
children
|
|
3570
|
+
}
|
|
3571
|
+
);
|
|
3572
|
+
});
|
|
3573
|
+
MenuSelectedIndicator.displayName = "SelectedIndicator";
|
|
3137
3574
|
const MenuMultiSelectItem = genericMemo(function(props) {
|
|
3138
3575
|
const { ref, onSelect, children, closeOnSelect = false, value, ...rest } = props;
|
|
3139
3576
|
const { selected, selectValue, registerValue } = use(MultiSelectContext);
|
|
@@ -3162,12 +3599,7 @@ const MenuMultiSelectItem = genericMemo(function(props) {
|
|
|
3162
3599
|
) });
|
|
3163
3600
|
});
|
|
3164
3601
|
const PagesContext = createContext({});
|
|
3165
|
-
const
|
|
3166
|
-
const { page, children } = props;
|
|
3167
|
-
const { activePage } = use(PagesContext);
|
|
3168
|
-
return activePage === page ? children : null;
|
|
3169
|
-
});
|
|
3170
|
-
MenuPageContent.displayName = "PageContent";
|
|
3602
|
+
const usePagesContext = () => useContext(PagesContext);
|
|
3171
3603
|
const MenuPages = memo((props) => {
|
|
3172
3604
|
const { children, defaultPage, page, onPageChange } = props;
|
|
3173
3605
|
const [activePage, setActivePage] = useControlledState(defaultPage ?? "", page, onPageChange);
|
|
@@ -3175,10 +3607,16 @@ const MenuPages = memo((props) => {
|
|
|
3175
3607
|
return /* @__PURE__ */ jsx(PagesContext.Provider, { value: contextValue, children });
|
|
3176
3608
|
});
|
|
3177
3609
|
MenuPages.displayName = "MenuPages";
|
|
3610
|
+
const MenuPageContent = (props) => {
|
|
3611
|
+
const { page, children } = props;
|
|
3612
|
+
const { activePage } = usePagesContext();
|
|
3613
|
+
return activePage === page ? children : null;
|
|
3614
|
+
};
|
|
3615
|
+
MenuPageContent.displayName = "PageContent";
|
|
3178
3616
|
const MenuPageTrigger = memo((props) => {
|
|
3179
3617
|
const { ref, onSelect, page, ...rest } = props;
|
|
3180
|
-
const { refs, setActiveIndex } =
|
|
3181
|
-
const { setActivePage } =
|
|
3618
|
+
const { refs, setActiveIndex } = useMenuContentContext();
|
|
3619
|
+
const { setActivePage } = usePagesContext();
|
|
3182
3620
|
const handleSelect = useCallback(() => {
|
|
3183
3621
|
var _a;
|
|
3184
3622
|
onSelect == null ? void 0 : onSelect();
|
|
@@ -3189,100 +3627,6 @@ const MenuPageTrigger = memo((props) => {
|
|
|
3189
3627
|
return /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, closeOnSelect: false, ...rest });
|
|
3190
3628
|
});
|
|
3191
3629
|
MenuPageTrigger.displayName = "MenuPageTrigger";
|
|
3192
|
-
const MENU_OVERFLOW_PADDING = 20;
|
|
3193
|
-
const MENU_CONTENT_PADDING = 8;
|
|
3194
|
-
const MENU_MINIMUM_MAX_HEIGHT = 250;
|
|
3195
|
-
const DEFAULT_OFFSET = 5;
|
|
3196
|
-
const MenuRoot = memo((props) => {
|
|
3197
|
-
const {
|
|
3198
|
-
children,
|
|
3199
|
-
side = "bottom",
|
|
3200
|
-
align = "center",
|
|
3201
|
-
offset: offset$1,
|
|
3202
|
-
loop = false,
|
|
3203
|
-
modal = false,
|
|
3204
|
-
// open state related props
|
|
3205
|
-
open: controlledOpen,
|
|
3206
|
-
onOpenChange,
|
|
3207
|
-
defaultOpen
|
|
3208
|
-
} = props;
|
|
3209
|
-
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3210
|
-
const [activeIndex, setActiveIndex] = useState(null);
|
|
3211
|
-
const [triggerType, setTriggerType] = useState(null);
|
|
3212
|
-
const elementsRef = useRef([]);
|
|
3213
|
-
const nodeId = useFloatingNodeId();
|
|
3214
|
-
const { refs, floatingStyles, context, middlewareData } = useFloating({
|
|
3215
|
-
nodeId,
|
|
3216
|
-
strategy: "fixed",
|
|
3217
|
-
// TODO: probably some way with template string types to not need the "as Placement"
|
|
3218
|
-
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3219
|
-
whileElementsMounted: autoUpdate,
|
|
3220
|
-
open,
|
|
3221
|
-
onOpenChange: setOpen,
|
|
3222
|
-
middleware: [
|
|
3223
|
-
offset({ mainAxis: offset$1 ?? DEFAULT_OFFSET }),
|
|
3224
|
-
size({
|
|
3225
|
-
apply({ availableHeight, elements }) {
|
|
3226
|
-
elements.floating.style.setProperty(
|
|
3227
|
-
"--overmap-menu-available-height",
|
|
3228
|
-
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3229
|
-
);
|
|
3230
|
-
},
|
|
3231
|
-
padding: MENU_OVERFLOW_PADDING
|
|
3232
|
-
}),
|
|
3233
|
-
flip({ fallbackStrategy: "initialPlacement" }),
|
|
3234
|
-
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3235
|
-
hide()
|
|
3236
|
-
]
|
|
3237
|
-
});
|
|
3238
|
-
const role = useRole(context, {
|
|
3239
|
-
role: "menu"
|
|
3240
|
-
});
|
|
3241
|
-
const dismiss = useDismiss(context, {
|
|
3242
|
-
capture: true,
|
|
3243
|
-
ancestorScroll: triggerType === "context" || triggerType === "virtual"
|
|
3244
|
-
});
|
|
3245
|
-
const click = useClick(context, {
|
|
3246
|
-
enabled: triggerType === "click"
|
|
3247
|
-
});
|
|
3248
|
-
const listNavigation = useListNavigation(context, {
|
|
3249
|
-
listRef: elementsRef,
|
|
3250
|
-
activeIndex,
|
|
3251
|
-
onNavigate: setActiveIndex,
|
|
3252
|
-
loop
|
|
3253
|
-
});
|
|
3254
|
-
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3255
|
-
dismiss,
|
|
3256
|
-
listNavigation,
|
|
3257
|
-
click,
|
|
3258
|
-
role
|
|
3259
|
-
]);
|
|
3260
|
-
return /* @__PURE__ */ jsx(FloatingTree, { children: /* @__PURE__ */ jsx(
|
|
3261
|
-
MenuContext.Provider,
|
|
3262
|
-
{
|
|
3263
|
-
value: {
|
|
3264
|
-
open,
|
|
3265
|
-
setOpen,
|
|
3266
|
-
refs,
|
|
3267
|
-
context,
|
|
3268
|
-
floatingStyles,
|
|
3269
|
-
elementsRef,
|
|
3270
|
-
getFloatingProps,
|
|
3271
|
-
getItemProps,
|
|
3272
|
-
getReferenceProps,
|
|
3273
|
-
nodeId,
|
|
3274
|
-
activeIndex,
|
|
3275
|
-
setActiveIndex,
|
|
3276
|
-
middlewareData,
|
|
3277
|
-
side,
|
|
3278
|
-
modal,
|
|
3279
|
-
setTriggerType
|
|
3280
|
-
},
|
|
3281
|
-
children
|
|
3282
|
-
}
|
|
3283
|
-
) });
|
|
3284
|
-
});
|
|
3285
|
-
MenuRoot.displayName = "Root";
|
|
3286
3630
|
const MenuScroll = memo((props) => {
|
|
3287
3631
|
const { ref, className, ...rest } = props;
|
|
3288
3632
|
return /* @__PURE__ */ jsx(
|
|
@@ -3321,11 +3665,6 @@ const MenuSelectAllItem = genericMemo((props) => {
|
|
|
3321
3665
|
}
|
|
3322
3666
|
) });
|
|
3323
3667
|
});
|
|
3324
|
-
const MenuSelectedIndicator = memo((props) => {
|
|
3325
|
-
const { ref, children, ...rest } = props;
|
|
3326
|
-
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
3327
|
-
});
|
|
3328
|
-
MenuSelectedIndicator.displayName = "MenuSelectedIndicator";
|
|
3329
3668
|
const MenuSelectGroup = genericMemo(function MenuSelectGroup2(props) {
|
|
3330
3669
|
const { ref, children, required, defaultValue, value, onValueChange, ...rest } = props;
|
|
3331
3670
|
return /* @__PURE__ */ jsx(MenuGroup, { ref, ...rest, children: required ? /* @__PURE__ */ jsx(SingleSelectRequiredProvider, { defaultValue, value, onValueChange, children }) : /* @__PURE__ */ jsx(
|
|
@@ -3341,7 +3680,7 @@ const MenuSelectGroup = genericMemo(function MenuSelectGroup2(props) {
|
|
|
3341
3680
|
const MenuSelectItem = genericMemo(function(props) {
|
|
3342
3681
|
const { ref, value, onSelect, children, closeOnSelect = true, ...rest } = props;
|
|
3343
3682
|
const { selected, selectValue } = use(SelectContext);
|
|
3344
|
-
const isSelected = selected(value);
|
|
3683
|
+
const isSelected = useMemo(() => selected(value), [selected, value]);
|
|
3345
3684
|
const handleSelect = useCallback(() => {
|
|
3346
3685
|
onSelect == null ? void 0 : onSelect();
|
|
3347
3686
|
selectValue(value);
|
|
@@ -3364,132 +3703,15 @@ const MenuSelectItem = genericMemo(function(props) {
|
|
|
3364
3703
|
});
|
|
3365
3704
|
const MenuSeparator = memo((props) => {
|
|
3366
3705
|
const { ref, className, ...rest } = props;
|
|
3367
|
-
const { size: size2 } =
|
|
3706
|
+
const { size: size2 } = useMenuContentContext();
|
|
3368
3707
|
return /* @__PURE__ */ jsx(RadixSeparator.Root, { className: cx(menuSeparator({ size: size2 }), className), ref, ...rest });
|
|
3369
3708
|
});
|
|
3370
|
-
MenuSeparator.displayName = "MenuSeparator";
|
|
3371
|
-
const computeOffsets = (side, alignment) => {
|
|
3372
|
-
switch (side) {
|
|
3373
|
-
case "right":
|
|
3374
|
-
if (alignment === "start") {
|
|
3375
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
3376
|
-
} else if (alignment === "end") {
|
|
3377
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
3378
|
-
}
|
|
3379
|
-
break;
|
|
3380
|
-
case "left":
|
|
3381
|
-
if (alignment === "start") {
|
|
3382
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
3383
|
-
} else if (alignment === "end") {
|
|
3384
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
3385
|
-
}
|
|
3386
|
-
break;
|
|
3387
|
-
}
|
|
3388
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: 0 };
|
|
3389
|
-
};
|
|
3390
|
-
const MenuSub = memo((props) => {
|
|
3391
|
-
const {
|
|
3392
|
-
children,
|
|
3393
|
-
disabled = false,
|
|
3394
|
-
side = "right",
|
|
3395
|
-
align = "start",
|
|
3396
|
-
closeRoot = false,
|
|
3397
|
-
loop = false,
|
|
3398
|
-
modal = false,
|
|
3399
|
-
// open state related props
|
|
3400
|
-
open: controlledOpen,
|
|
3401
|
-
onOpenChange,
|
|
3402
|
-
defaultOpen
|
|
3403
|
-
} = props;
|
|
3404
|
-
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3405
|
-
const nodeId = useFloatingNodeId();
|
|
3406
|
-
const { refs, floatingStyles, context } = useFloating({
|
|
3407
|
-
nodeId,
|
|
3408
|
-
strategy: "fixed",
|
|
3409
|
-
whileElementsMounted: autoUpdate,
|
|
3410
|
-
open,
|
|
3411
|
-
onOpenChange: (open2, _event, reason) => {
|
|
3412
|
-
if (reason) setOpen(open2);
|
|
3413
|
-
},
|
|
3414
|
-
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3415
|
-
middleware: [
|
|
3416
|
-
offset({ ...computeOffsets(side, align) }),
|
|
3417
|
-
size({
|
|
3418
|
-
padding: MENU_OVERFLOW_PADDING,
|
|
3419
|
-
apply({ availableHeight, elements }) {
|
|
3420
|
-
elements.floating.style.setProperty(
|
|
3421
|
-
"--overmap-menu-available-height",
|
|
3422
|
-
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3423
|
-
);
|
|
3424
|
-
}
|
|
3425
|
-
}),
|
|
3426
|
-
flip(),
|
|
3427
|
-
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3428
|
-
hide()
|
|
3429
|
-
]
|
|
3430
|
-
});
|
|
3431
|
-
const dismiss = useDismiss(context, {
|
|
3432
|
-
bubbles: closeRoot,
|
|
3433
|
-
outsidePress: closeRoot
|
|
3434
|
-
});
|
|
3435
|
-
const hover = useHover(context, {
|
|
3436
|
-
restMs: 50,
|
|
3437
|
-
handleClose: safePolygon({
|
|
3438
|
-
blockPointerEvents: true,
|
|
3439
|
-
requireIntent: false
|
|
3440
|
-
}),
|
|
3441
|
-
enabled: !disabled
|
|
3442
|
-
});
|
|
3443
|
-
const click = useClick(context, {
|
|
3444
|
-
enabled: !disabled
|
|
3445
|
-
});
|
|
3446
|
-
const elementsRef = useRef([]);
|
|
3447
|
-
const [activeIndex, setActiveIndex] = useState(null);
|
|
3448
|
-
const listNavigation = useListNavigation(context, {
|
|
3449
|
-
listRef: elementsRef,
|
|
3450
|
-
nested: true,
|
|
3451
|
-
activeIndex,
|
|
3452
|
-
onNavigate: setActiveIndex,
|
|
3453
|
-
loop,
|
|
3454
|
-
rtl: side === "left"
|
|
3455
|
-
});
|
|
3456
|
-
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3457
|
-
listNavigation,
|
|
3458
|
-
dismiss,
|
|
3459
|
-
hover,
|
|
3460
|
-
click
|
|
3461
|
-
]);
|
|
3462
|
-
return /* @__PURE__ */ jsx(
|
|
3463
|
-
SubContext.Provider,
|
|
3464
|
-
{
|
|
3465
|
-
value: {
|
|
3466
|
-
open,
|
|
3467
|
-
setOpen,
|
|
3468
|
-
nodeId,
|
|
3469
|
-
refs,
|
|
3470
|
-
floatingStyles,
|
|
3471
|
-
context,
|
|
3472
|
-
elementsRef,
|
|
3473
|
-
activeIndex,
|
|
3474
|
-
setActiveIndex,
|
|
3475
|
-
getFloatingProps,
|
|
3476
|
-
getItemProps,
|
|
3477
|
-
getReferenceProps,
|
|
3478
|
-
disabled,
|
|
3479
|
-
side,
|
|
3480
|
-
closeRoot,
|
|
3481
|
-
modal
|
|
3482
|
-
},
|
|
3483
|
-
children
|
|
3484
|
-
}
|
|
3485
|
-
);
|
|
3486
|
-
});
|
|
3487
|
-
MenuSub.displayName = "SubMenu";
|
|
3709
|
+
MenuSeparator.displayName = "MenuSeparator";
|
|
3488
3710
|
const MenuSubContent = memo((props) => {
|
|
3489
3711
|
var _a;
|
|
3490
3712
|
const { ref: forwardedRef, children, ...rest } = props;
|
|
3491
|
-
const { middlewareData } =
|
|
3492
|
-
const { accentColor, radius, variant, size: size2 } =
|
|
3713
|
+
const { middlewareData } = useMenuContext();
|
|
3714
|
+
const { accentColor, radius, variant, size: size2 } = useMenuContentContext();
|
|
3493
3715
|
const {
|
|
3494
3716
|
open,
|
|
3495
3717
|
nodeId,
|
|
@@ -3503,7 +3725,7 @@ const MenuSubContent = memo((props) => {
|
|
|
3503
3725
|
floatingStyles,
|
|
3504
3726
|
setOpen,
|
|
3505
3727
|
side
|
|
3506
|
-
} =
|
|
3728
|
+
} = useSubContext();
|
|
3507
3729
|
const wrapperRef = useRef(null);
|
|
3508
3730
|
const mergeRefs2 = useMergeRefs([refs.setFloating, wrapperRef]);
|
|
3509
3731
|
const computedFloatingStyles = useMemo(() => {
|
|
@@ -3562,7 +3784,7 @@ const MenuSubContent = memo((props) => {
|
|
|
3562
3784
|
MenuSubContent.displayName = "MenuSubContent";
|
|
3563
3785
|
const MenuSubTrigger = memo((props) => {
|
|
3564
3786
|
const { ref: forwardedRef, children, ...rest } = props;
|
|
3565
|
-
const { refs, getReferenceProps, open, disabled } =
|
|
3787
|
+
const { refs, getReferenceProps, open, disabled } = useSubContext();
|
|
3566
3788
|
const mergedRefs = useMergeRefs([forwardedRef, refs.setReference]);
|
|
3567
3789
|
return /* @__PURE__ */ jsx(
|
|
3568
3790
|
MenuItem,
|
|
@@ -3580,7 +3802,7 @@ const MenuSubTrigger = memo((props) => {
|
|
|
3580
3802
|
MenuSubTrigger.displayName = "MenuSubTrigger";
|
|
3581
3803
|
const MenuVirtualTrigger = memo((props) => {
|
|
3582
3804
|
const { virtualElement, disabled } = props;
|
|
3583
|
-
const { refs, setTriggerType, setOpen } =
|
|
3805
|
+
const { refs, setTriggerType, setOpen } = useMenuContext();
|
|
3584
3806
|
useEffect(() => {
|
|
3585
3807
|
setTriggerType("virtual");
|
|
3586
3808
|
}, [setTriggerType]);
|
|
@@ -3633,555 +3855,6 @@ const Menu = {
|
|
|
3633
3855
|
Separator: MenuSeparator,
|
|
3634
3856
|
Scroll: MenuScroll
|
|
3635
3857
|
};
|
|
3636
|
-
const KEY_MAPPING = {
|
|
3637
|
-
next: "ArrowDown",
|
|
3638
|
-
prev: "ArrowUp",
|
|
3639
|
-
first: "PageUp",
|
|
3640
|
-
last: "PageDown",
|
|
3641
|
-
selectItem: "Enter"
|
|
3642
|
-
};
|
|
3643
|
-
const ITEM_SELECTOR = "menu-item";
|
|
3644
|
-
const GROUP_SELECTOR = "menu-group";
|
|
3645
|
-
const MenuRootContext = createContext({});
|
|
3646
|
-
const MenuGroupContext = createContext({});
|
|
3647
|
-
const MenuPageContext = createContext({});
|
|
3648
|
-
const menuRootCva = cva(["w-full", "outline-none"], {
|
|
3649
|
-
variants: {
|
|
3650
|
-
size: {
|
|
3651
|
-
xs: ["p-0.5", "text-xs", "min-w-30"],
|
|
3652
|
-
sm: ["p-0.75", "text-sm", "min-w-35"],
|
|
3653
|
-
md: ["p-1", "text-md", "min-w-40"],
|
|
3654
|
-
lg: ["p-1.25", "text-lg", "min-w-45"],
|
|
3655
|
-
xl: ["p-1.5", "text-xl", "min-w-50"]
|
|
3656
|
-
},
|
|
3657
|
-
radius: {
|
|
3658
|
-
none: ["rounded-none"],
|
|
3659
|
-
xs: ["rounded-xs"],
|
|
3660
|
-
sm: ["rounded-sm"],
|
|
3661
|
-
md: ["rounded-md"],
|
|
3662
|
-
lg: ["rounded-lg"],
|
|
3663
|
-
xl: ["rounded-lg"],
|
|
3664
|
-
full: ["rounded-lg"]
|
|
3665
|
-
}
|
|
3666
|
-
}
|
|
3667
|
-
});
|
|
3668
|
-
const menuItemCva = cva(
|
|
3669
|
-
[
|
|
3670
|
-
"select-none",
|
|
3671
|
-
"relative",
|
|
3672
|
-
"flex",
|
|
3673
|
-
"items-center",
|
|
3674
|
-
"outline-none",
|
|
3675
|
-
"data-[disabled=true]:text-(--base-a8)",
|
|
3676
|
-
"data-[disabled=true]:pointer-events-none",
|
|
3677
|
-
"shrink-0",
|
|
3678
|
-
"py-1",
|
|
3679
|
-
"text-(--base-12)"
|
|
3680
|
-
],
|
|
3681
|
-
{
|
|
3682
|
-
variants: {
|
|
3683
|
-
size: {
|
|
3684
|
-
xs: ["gap-1.5", "px-3"],
|
|
3685
|
-
sm: ["gap-1.75", "px-3.5"],
|
|
3686
|
-
md: ["gap-2", "px-4"],
|
|
3687
|
-
lg: ["gap-2.25", "px-4.5"],
|
|
3688
|
-
xl: ["gap-2.5", "px-5"]
|
|
3689
|
-
},
|
|
3690
|
-
variant: {
|
|
3691
|
-
solid: [
|
|
3692
|
-
"data-[active=true]:not-[data-[disabled=true]]:text-(--accent-contrast)",
|
|
3693
|
-
"data-[active=true]:not-[data-[disabled=true]]:bg-(--accent-a9)",
|
|
3694
|
-
"data-[active=true]:not-[data-[disabled=true]]:active:brightness-110"
|
|
3695
|
-
],
|
|
3696
|
-
soft: [
|
|
3697
|
-
"data-[active=true]:not-[data-[disabled=true]]:bg-(--accent-a3)",
|
|
3698
|
-
"data-[active=true]:not-[data-[disabled=true]]:active:bg-(--accent-a4)"
|
|
3699
|
-
]
|
|
3700
|
-
}
|
|
3701
|
-
}
|
|
3702
|
-
}
|
|
3703
|
-
);
|
|
3704
|
-
const menuGroupLabelCva = cva(["text-(--base-a11)", "flex", "items-center", "select-none", "py-1"], {
|
|
3705
|
-
variants: {
|
|
3706
|
-
size: {
|
|
3707
|
-
xs: ["gap-1.5", "px-3", "text-xs"],
|
|
3708
|
-
sm: ["gap-1.75", "px-3.5", "text-xs"],
|
|
3709
|
-
md: ["gap-2", "px-4", "text-sm"],
|
|
3710
|
-
lg: ["gap-2.25", "px-4.5", "text-base"],
|
|
3711
|
-
xl: ["gap-2.5", "px-5", "text-lg"]
|
|
3712
|
-
}
|
|
3713
|
-
}
|
|
3714
|
-
});
|
|
3715
|
-
const menuSeparatorCva = cva(["h-px", "bg-(--base-a6)", "w-auto", "shrink-0"], {
|
|
3716
|
-
variants: {
|
|
3717
|
-
size: {
|
|
3718
|
-
xs: ["-mx-0.5", "my-0.5"],
|
|
3719
|
-
sm: ["-mx-0.75", "my-0.75"],
|
|
3720
|
-
md: ["-mx-1", "my-1"],
|
|
3721
|
-
lg: ["-mx-1.25", "my-1.25"],
|
|
3722
|
-
xl: ["-mx-1.5", "my-1.5"]
|
|
3723
|
-
}
|
|
3724
|
-
}
|
|
3725
|
-
});
|
|
3726
|
-
const MenuV2Item = memo((props) => {
|
|
3727
|
-
const {
|
|
3728
|
-
ref,
|
|
3729
|
-
children,
|
|
3730
|
-
className,
|
|
3731
|
-
disabled = false,
|
|
3732
|
-
onClick,
|
|
3733
|
-
onSelect,
|
|
3734
|
-
onPointerEnter,
|
|
3735
|
-
onPointerLeave,
|
|
3736
|
-
onPointerMove,
|
|
3737
|
-
...rest
|
|
3738
|
-
} = props;
|
|
3739
|
-
const internalRef = useRef(null);
|
|
3740
|
-
const itemId = useId();
|
|
3741
|
-
const { activeItemId, setActiveItemId, size: size2, variant, radius } = use(MenuRootContext);
|
|
3742
|
-
const isActive = itemId === activeItemId;
|
|
3743
|
-
const handleSelect = useCallback(
|
|
3744
|
-
(e) => {
|
|
3745
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
3746
|
-
},
|
|
3747
|
-
[onSelect]
|
|
3748
|
-
);
|
|
3749
|
-
const handleClick = useCallback(
|
|
3750
|
-
(e) => {
|
|
3751
|
-
onClick == null ? void 0 : onClick(e);
|
|
3752
|
-
handleSelect(new Event("menu-select"));
|
|
3753
|
-
},
|
|
3754
|
-
[handleSelect, onClick]
|
|
3755
|
-
);
|
|
3756
|
-
const handlePointerEnter = useCallback(
|
|
3757
|
-
(e) => {
|
|
3758
|
-
onPointerEnter == null ? void 0 : onPointerEnter(e);
|
|
3759
|
-
if (e.defaultPrevented) return;
|
|
3760
|
-
setActiveItemId(itemId);
|
|
3761
|
-
},
|
|
3762
|
-
[onPointerEnter, setActiveItemId, itemId]
|
|
3763
|
-
);
|
|
3764
|
-
const handlePointerLeave = useCallback(
|
|
3765
|
-
(e) => {
|
|
3766
|
-
onPointerLeave == null ? void 0 : onPointerLeave(e);
|
|
3767
|
-
if (e.defaultPrevented) return;
|
|
3768
|
-
setActiveItemId(null);
|
|
3769
|
-
},
|
|
3770
|
-
[onPointerLeave, setActiveItemId]
|
|
3771
|
-
);
|
|
3772
|
-
const handlePointerMove = useCallback(
|
|
3773
|
-
(e) => {
|
|
3774
|
-
onPointerMove == null ? void 0 : onPointerMove(e);
|
|
3775
|
-
if (e.defaultPrevented) return;
|
|
3776
|
-
setActiveItemId(itemId);
|
|
3777
|
-
},
|
|
3778
|
-
[onPointerMove, itemId, setActiveItemId]
|
|
3779
|
-
);
|
|
3780
|
-
useEffect(() => {
|
|
3781
|
-
if (!internalRef.current) return;
|
|
3782
|
-
const element = internalRef.current;
|
|
3783
|
-
element.addEventListener("menu-select", handleSelect);
|
|
3784
|
-
return () => {
|
|
3785
|
-
element.removeEventListener("menu-select", handleSelect);
|
|
3786
|
-
};
|
|
3787
|
-
}, [handleSelect]);
|
|
3788
|
-
return /* @__PURE__ */ jsx(
|
|
3789
|
-
"div",
|
|
3790
|
-
{
|
|
3791
|
-
ref: mergeRefs([ref, internalRef]),
|
|
3792
|
-
className: cx(menuItemCva({ size: size2, variant }), radiusCva({ radius, maxLarge: true }), className),
|
|
3793
|
-
role: "menuitem",
|
|
3794
|
-
onClick: handleClick,
|
|
3795
|
-
onPointerEnter: handlePointerEnter,
|
|
3796
|
-
onPointerLeave: handlePointerLeave,
|
|
3797
|
-
onPointerMove: handlePointerMove,
|
|
3798
|
-
...{ [ITEM_SELECTOR]: itemId },
|
|
3799
|
-
"data-active": getBooleanState(isActive),
|
|
3800
|
-
"data-disabled": getBooleanState(disabled),
|
|
3801
|
-
"aria-disabled": getBooleanState(disabled),
|
|
3802
|
-
...rest,
|
|
3803
|
-
children
|
|
3804
|
-
}
|
|
3805
|
-
);
|
|
3806
|
-
});
|
|
3807
|
-
MenuV2Item.displayName = "MenuItem";
|
|
3808
|
-
const MenuV2CheckboxItem = memo((props) => {
|
|
3809
|
-
const { ref, checked, onCheckedChange, onSelect, ...rest } = props;
|
|
3810
|
-
const handleSelect = useCallback(
|
|
3811
|
-
(e) => {
|
|
3812
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
3813
|
-
if (e.defaultPrevented) return;
|
|
3814
|
-
switch (checked) {
|
|
3815
|
-
case true:
|
|
3816
|
-
onCheckedChange(false);
|
|
3817
|
-
break;
|
|
3818
|
-
case "indeterminate":
|
|
3819
|
-
onCheckedChange(true);
|
|
3820
|
-
break;
|
|
3821
|
-
case false:
|
|
3822
|
-
onCheckedChange(true);
|
|
3823
|
-
break;
|
|
3824
|
-
}
|
|
3825
|
-
},
|
|
3826
|
-
[checked, onCheckedChange, onSelect]
|
|
3827
|
-
);
|
|
3828
|
-
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuV2Item, { ref, onSelect: handleSelect, ...rest }) });
|
|
3829
|
-
});
|
|
3830
|
-
MenuV2CheckboxItem.displayName = "MenuCheckboxItem";
|
|
3831
|
-
const MenuV2CheckedIndicator = memo((props) => {
|
|
3832
|
-
const { ref, children, ...rest } = props;
|
|
3833
|
-
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
3834
|
-
});
|
|
3835
|
-
MenuV2CheckedIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
3836
|
-
const MenuV2Group = memo((props) => {
|
|
3837
|
-
const { ref, children, ...rest } = props;
|
|
3838
|
-
const groupId = useId();
|
|
3839
|
-
const [labelId, setLabelId] = useState(null);
|
|
3840
|
-
const contextValue = useMemo(
|
|
3841
|
-
() => ({
|
|
3842
|
-
labelId,
|
|
3843
|
-
setLabelId
|
|
3844
|
-
}),
|
|
3845
|
-
[labelId]
|
|
3846
|
-
);
|
|
3847
|
-
return /* @__PURE__ */ jsx("div", { ref, role: "group", ...{ [GROUP_SELECTOR]: groupId }, "aria-labelledby": labelId ?? void 0, ...rest, children: /* @__PURE__ */ jsx(MenuGroupContext, { value: contextValue, children }) });
|
|
3848
|
-
});
|
|
3849
|
-
MenuV2Group.displayName = "MenuGroup";
|
|
3850
|
-
const MenuV2GroupLabel = memo((props) => {
|
|
3851
|
-
const { ref, children, id, className, ...rest } = props;
|
|
3852
|
-
const labelId = useFallbackId(id);
|
|
3853
|
-
const { size: size2 } = use(MenuRootContext);
|
|
3854
|
-
const { setLabelId } = use(MenuGroupContext);
|
|
3855
|
-
useEffect(() => {
|
|
3856
|
-
setLabelId(labelId);
|
|
3857
|
-
}, [labelId, setLabelId]);
|
|
3858
|
-
return /* @__PURE__ */ jsx("div", { ref, id: labelId, className: cx(menuGroupLabelCva({ size: size2 }), className), ...rest, children });
|
|
3859
|
-
});
|
|
3860
|
-
MenuV2GroupLabel.displayName = "MenuGroupLabel";
|
|
3861
|
-
const MenuV2SelectAllItem = genericMemo((props) => {
|
|
3862
|
-
const { ref, children, onSelect, ...rest } = props;
|
|
3863
|
-
const { allSelected, someSelected, toggleSelectAll } = use(MultiSelectContext);
|
|
3864
|
-
const selectedState = allSelected ? true : someSelected ? "indeterminate" : false;
|
|
3865
|
-
const handleSelect = useCallback(
|
|
3866
|
-
(e) => {
|
|
3867
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
3868
|
-
if (e.defaultPrevented) return;
|
|
3869
|
-
toggleSelectAll();
|
|
3870
|
-
},
|
|
3871
|
-
[onSelect, toggleSelectAll]
|
|
3872
|
-
);
|
|
3873
|
-
return /* @__PURE__ */ jsx(MenuV2Item, { onSelect: handleSelect, ref, "data-state": getCheckedState(selectedState), ...rest, children: /* @__PURE__ */ jsx(CheckedIndicatorContext, { value: selectedState, children }) });
|
|
3874
|
-
});
|
|
3875
|
-
const MenuV2MultiSelectGroup = genericMemo(function MenuMultiSelectGroup3(props) {
|
|
3876
|
-
const { ref, children, defaultValues, values, onValuesChange, ...rest } = props;
|
|
3877
|
-
return /* @__PURE__ */ jsx(MenuV2Group, { ref, ...rest, children: /* @__PURE__ */ jsx(MultiSelectProvider, { defaultValues, values, onValuesChange, children }) });
|
|
3878
|
-
});
|
|
3879
|
-
const MenuV2MultiSelectItem = genericMemo(function(props) {
|
|
3880
|
-
const { ref, onSelect, children, value, ...rest } = props;
|
|
3881
|
-
const { selected, selectValue, registerValue } = use(MultiSelectContext);
|
|
3882
|
-
useLayoutEffect(() => {
|
|
3883
|
-
return registerValue(value);
|
|
3884
|
-
}, [registerValue, value]);
|
|
3885
|
-
const isSelected = selected(value);
|
|
3886
|
-
const handleSelect = useCallback(
|
|
3887
|
-
(e) => {
|
|
3888
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
3889
|
-
if (e.defaultPrevented) return;
|
|
3890
|
-
selectValue(value);
|
|
3891
|
-
},
|
|
3892
|
-
[onSelect, selectValue, value]
|
|
3893
|
-
);
|
|
3894
|
-
return /* @__PURE__ */ jsx(
|
|
3895
|
-
MenuV2Item,
|
|
3896
|
-
{
|
|
3897
|
-
ref,
|
|
3898
|
-
role: "menuitemcheckbox",
|
|
3899
|
-
onSelect: handleSelect,
|
|
3900
|
-
"data-state": getSelectedState(isSelected),
|
|
3901
|
-
...rest,
|
|
3902
|
-
children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isSelected, children })
|
|
3903
|
-
}
|
|
3904
|
-
);
|
|
3905
|
-
});
|
|
3906
|
-
const MenuV2Page = memo((props) => {
|
|
3907
|
-
const { children, ref, page, ...rest } = props;
|
|
3908
|
-
const { page: activePage } = use(MenuPageContext);
|
|
3909
|
-
const isActive = page === activePage;
|
|
3910
|
-
return /* @__PURE__ */ jsx("div", { ref, "data-active": getActiveState(isActive), hidden: !isActive, ...rest, children: isActive ? children : null });
|
|
3911
|
-
});
|
|
3912
|
-
MenuV2Page.displayName = "MenuPage";
|
|
3913
|
-
const MenuV2Pages = memo((props) => {
|
|
3914
|
-
const { children, defaultPage = "", page: controlledPage, onPageChange } = props;
|
|
3915
|
-
const [page, setPage] = useControlledState(defaultPage, controlledPage, onPageChange);
|
|
3916
|
-
const contextValue = useMemo(
|
|
3917
|
-
() => ({
|
|
3918
|
-
page,
|
|
3919
|
-
setPage
|
|
3920
|
-
}),
|
|
3921
|
-
[page, setPage]
|
|
3922
|
-
);
|
|
3923
|
-
return /* @__PURE__ */ jsx(MenuPageContext, { value: contextValue, children });
|
|
3924
|
-
});
|
|
3925
|
-
MenuV2Pages.displayName = "MenuPages";
|
|
3926
|
-
const MenuV2PageTriggerItem = memo((props) => {
|
|
3927
|
-
const { ref, children, page, onSelect, ...rest } = props;
|
|
3928
|
-
const { page: activePage, setPage } = use(MenuPageContext);
|
|
3929
|
-
const isActive = page === activePage;
|
|
3930
|
-
const handleSelect = useCallback(
|
|
3931
|
-
(e) => {
|
|
3932
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
3933
|
-
if (e.defaultPrevented) return;
|
|
3934
|
-
setPage(page);
|
|
3935
|
-
},
|
|
3936
|
-
[onSelect, page, setPage]
|
|
3937
|
-
);
|
|
3938
|
-
return /* @__PURE__ */ jsx(MenuV2Item, { ref, onSelect: handleSelect, "data-state": getActiveState(isActive), ...rest, children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isActive, children }) });
|
|
3939
|
-
});
|
|
3940
|
-
MenuV2PageTriggerItem.displayName = "CommandMenuPageTriggerItem";
|
|
3941
|
-
const computeNextIndex = (index, length, direction, loop) => {
|
|
3942
|
-
switch (direction) {
|
|
3943
|
-
case "next":
|
|
3944
|
-
return index === length - 1 ? loop ? 0 : index : index + 1;
|
|
3945
|
-
case "prev":
|
|
3946
|
-
return index === 0 ? loop ? length - 1 : index : index - 1;
|
|
3947
|
-
}
|
|
3948
|
-
};
|
|
3949
|
-
const MenuV2Root = memo((props) => {
|
|
3950
|
-
const providerContext = useProvider();
|
|
3951
|
-
const {
|
|
3952
|
-
ref,
|
|
3953
|
-
children,
|
|
3954
|
-
className,
|
|
3955
|
-
onKeyDown,
|
|
3956
|
-
loop = false,
|
|
3957
|
-
// style props
|
|
3958
|
-
radius = providerContext.radius,
|
|
3959
|
-
accentColor = "base",
|
|
3960
|
-
size: size2 = "md",
|
|
3961
|
-
variant = "soft",
|
|
3962
|
-
...rest
|
|
3963
|
-
} = props;
|
|
3964
|
-
const internalRef = useRef(null);
|
|
3965
|
-
const [activeItemId, setActiveItemId] = useState(null);
|
|
3966
|
-
const getItems = useCallback((element) => {
|
|
3967
|
-
return Array.from(element.querySelectorAll(`[${ITEM_SELECTOR}]:not([data-disabled=true]`));
|
|
3968
|
-
}, []);
|
|
3969
|
-
const getFirstItem = useCallback(
|
|
3970
|
-
(element) => {
|
|
3971
|
-
return getItems(element).at(0);
|
|
3972
|
-
},
|
|
3973
|
-
[getItems]
|
|
3974
|
-
);
|
|
3975
|
-
const getLastItem = useCallback(
|
|
3976
|
-
(element) => {
|
|
3977
|
-
return getItems(element).at(-1);
|
|
3978
|
-
},
|
|
3979
|
-
[getItems]
|
|
3980
|
-
);
|
|
3981
|
-
const getActiveItem = useCallback(
|
|
3982
|
-
(element) => {
|
|
3983
|
-
return getItems(element).find((itemEle) => itemEle.getAttribute(ITEM_SELECTOR) === activeItemId);
|
|
3984
|
-
},
|
|
3985
|
-
[activeItemId, getItems]
|
|
3986
|
-
);
|
|
3987
|
-
const getNextItem = useCallback(
|
|
3988
|
-
(element, direction) => {
|
|
3989
|
-
const items = getItems(element);
|
|
3990
|
-
const activeItem = getActiveItem(element);
|
|
3991
|
-
const activeItemIndex = items.findIndex((itemEle) => itemEle === activeItem);
|
|
3992
|
-
const nextItemIndex = computeNextIndex(activeItemIndex, items.length, direction, loop);
|
|
3993
|
-
return items[nextItemIndex];
|
|
3994
|
-
},
|
|
3995
|
-
[getActiveItem, getItems, loop]
|
|
3996
|
-
);
|
|
3997
|
-
const getGroups = useCallback(() => {
|
|
3998
|
-
if (!internalRef.current) return [];
|
|
3999
|
-
return Array.from(internalRef.current.querySelectorAll(`[${GROUP_SELECTOR}]`));
|
|
4000
|
-
}, []);
|
|
4001
|
-
const getActiveGroup = useCallback(() => {
|
|
4002
|
-
var _a;
|
|
4003
|
-
return ((_a = getActiveItem(internalRef.current)) == null ? void 0 : _a.closest(`[${GROUP_SELECTOR}]`)) ?? void 0;
|
|
4004
|
-
}, [getActiveItem]);
|
|
4005
|
-
const getNextGroup = useCallback(
|
|
4006
|
-
(direction) => {
|
|
4007
|
-
const groups = getGroups();
|
|
4008
|
-
const activeGroup = getActiveGroup();
|
|
4009
|
-
const activeGroupIndex = groups.findIndex((groupEle) => groupEle === activeGroup);
|
|
4010
|
-
const nextGroupIndex = computeNextIndex(activeGroupIndex, groups.length, direction, loop);
|
|
4011
|
-
return groups[nextGroupIndex];
|
|
4012
|
-
},
|
|
4013
|
-
[getActiveGroup, getGroups, loop]
|
|
4014
|
-
);
|
|
4015
|
-
const getFirstGroup = useCallback(() => {
|
|
4016
|
-
return getGroups().at(0);
|
|
4017
|
-
}, [getGroups]);
|
|
4018
|
-
const getLastGroup = useCallback(() => {
|
|
4019
|
-
return getGroups().at(-1);
|
|
4020
|
-
}, [getGroups]);
|
|
4021
|
-
const handleKeyDown = useCallback(
|
|
4022
|
-
(e) => {
|
|
4023
|
-
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
4024
|
-
if (e.defaultPrevented) return;
|
|
4025
|
-
switch (e.code) {
|
|
4026
|
-
case KEY_MAPPING.selectItem: {
|
|
4027
|
-
const activeItem = getActiveItem(internalRef.current);
|
|
4028
|
-
if (activeItem) activeItem.dispatchEvent(new Event("menu-select"));
|
|
4029
|
-
break;
|
|
4030
|
-
}
|
|
4031
|
-
case KEY_MAPPING.next: {
|
|
4032
|
-
let nextItem;
|
|
4033
|
-
if (e.shiftKey) {
|
|
4034
|
-
const nextGroup = getNextGroup("next");
|
|
4035
|
-
if (!nextGroup) return;
|
|
4036
|
-
nextItem = getFirstItem(nextGroup);
|
|
4037
|
-
} else {
|
|
4038
|
-
nextItem = getNextItem(internalRef.current, "next");
|
|
4039
|
-
}
|
|
4040
|
-
if (!nextItem) return;
|
|
4041
|
-
setActiveItemId(nextItem.getAttribute(ITEM_SELECTOR));
|
|
4042
|
-
break;
|
|
4043
|
-
}
|
|
4044
|
-
case KEY_MAPPING.prev: {
|
|
4045
|
-
let prevItem;
|
|
4046
|
-
if (e.shiftKey) {
|
|
4047
|
-
const prevGroup = getNextGroup("prev");
|
|
4048
|
-
if (!prevGroup) return;
|
|
4049
|
-
prevItem = getFirstItem(prevGroup);
|
|
4050
|
-
} else {
|
|
4051
|
-
prevItem = getNextItem(internalRef.current, "prev");
|
|
4052
|
-
}
|
|
4053
|
-
if (!prevItem) return;
|
|
4054
|
-
setActiveItemId(prevItem.getAttribute(ITEM_SELECTOR));
|
|
4055
|
-
break;
|
|
4056
|
-
}
|
|
4057
|
-
case KEY_MAPPING.first: {
|
|
4058
|
-
let firstItem;
|
|
4059
|
-
if (e.shiftKey) {
|
|
4060
|
-
const firstGroup = getFirstGroup();
|
|
4061
|
-
if (!firstGroup) return;
|
|
4062
|
-
firstItem = getFirstItem(firstGroup);
|
|
4063
|
-
} else {
|
|
4064
|
-
firstItem = getFirstItem(internalRef.current);
|
|
4065
|
-
}
|
|
4066
|
-
if (!firstItem) return;
|
|
4067
|
-
setActiveItemId(firstItem.getAttribute(ITEM_SELECTOR));
|
|
4068
|
-
break;
|
|
4069
|
-
}
|
|
4070
|
-
case KEY_MAPPING.last: {
|
|
4071
|
-
let lastItem;
|
|
4072
|
-
if (e.shiftKey) {
|
|
4073
|
-
const lastGroup = getLastGroup();
|
|
4074
|
-
if (!lastGroup) return;
|
|
4075
|
-
lastItem = getFirstItem(lastGroup);
|
|
4076
|
-
} else {
|
|
4077
|
-
lastItem = getLastItem(internalRef.current);
|
|
4078
|
-
}
|
|
4079
|
-
if (!lastItem) return;
|
|
4080
|
-
setActiveItemId(lastItem.getAttribute(ITEM_SELECTOR));
|
|
4081
|
-
break;
|
|
4082
|
-
}
|
|
4083
|
-
}
|
|
4084
|
-
},
|
|
4085
|
-
[getActiveItem, getFirstGroup, getFirstItem, getLastGroup, getLastItem, getNextGroup, getNextItem, onKeyDown]
|
|
4086
|
-
);
|
|
4087
|
-
useEffect(() => {
|
|
4088
|
-
const firstItem = getFirstItem(internalRef.current);
|
|
4089
|
-
if (!firstItem) return;
|
|
4090
|
-
setActiveItemId(firstItem.getAttribute(ITEM_SELECTOR));
|
|
4091
|
-
}, [getFirstItem]);
|
|
4092
|
-
const contextValue = useMemo(
|
|
4093
|
-
() => ({
|
|
4094
|
-
activeItemId,
|
|
4095
|
-
setActiveItemId,
|
|
4096
|
-
// style props
|
|
4097
|
-
accentColor,
|
|
4098
|
-
radius,
|
|
4099
|
-
variant,
|
|
4100
|
-
size: size2
|
|
4101
|
-
}),
|
|
4102
|
-
[accentColor, activeItemId, radius, size2, variant]
|
|
4103
|
-
);
|
|
4104
|
-
return /* @__PURE__ */ jsx(
|
|
4105
|
-
"div",
|
|
4106
|
-
{
|
|
4107
|
-
ref: mergeRefs([ref, internalRef]),
|
|
4108
|
-
className: cx(menuRootCva({ size: size2 }), radiusCva({ radius, maxLarge: true }), className),
|
|
4109
|
-
role: "menu",
|
|
4110
|
-
onKeyDown: handleKeyDown,
|
|
4111
|
-
tabIndex: 0,
|
|
4112
|
-
"aria-activedescendant": activeItemId ?? void 0,
|
|
4113
|
-
"data-accent-color": accentColor,
|
|
4114
|
-
...rest,
|
|
4115
|
-
children: /* @__PURE__ */ jsx(MenuRootContext, { value: contextValue, children })
|
|
4116
|
-
}
|
|
4117
|
-
);
|
|
4118
|
-
});
|
|
4119
|
-
MenuV2Root.displayName = "MenuRoot";
|
|
4120
|
-
const MenuV2SelectedIndicator = memo((props) => {
|
|
4121
|
-
const { ref, children, ...rest } = props;
|
|
4122
|
-
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
4123
|
-
});
|
|
4124
|
-
MenuV2SelectedIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
4125
|
-
const MenuV2SelectGroup = genericMemo(function MenuSelectGroup3(props) {
|
|
4126
|
-
const { ref, children, required, defaultValue, value, onValueChange, ...rest } = props;
|
|
4127
|
-
return /* @__PURE__ */ jsx(MenuV2Group, { ref, ...rest, children: required ? /* @__PURE__ */ jsx(SingleSelectRequiredProvider, { defaultValue, value, onValueChange, children }) : /* @__PURE__ */ jsx(
|
|
4128
|
-
SingleSelectNotRequiredProvider,
|
|
4129
|
-
{
|
|
4130
|
-
defaultValue,
|
|
4131
|
-
value,
|
|
4132
|
-
onValueChange,
|
|
4133
|
-
children
|
|
4134
|
-
}
|
|
4135
|
-
) });
|
|
4136
|
-
});
|
|
4137
|
-
const MenuV2SelectItem = genericMemo(function(props) {
|
|
4138
|
-
const { ref, value, onSelect, children, ...rest } = props;
|
|
4139
|
-
const { selected, selectValue } = use(SelectContext);
|
|
4140
|
-
const isSelected = selected(value);
|
|
4141
|
-
const handleSelect = useCallback(
|
|
4142
|
-
(e) => {
|
|
4143
|
-
onSelect == null ? void 0 : onSelect(e);
|
|
4144
|
-
if (e.defaultPrevented) return;
|
|
4145
|
-
selectValue(value);
|
|
4146
|
-
},
|
|
4147
|
-
[onSelect, selectValue, value]
|
|
4148
|
-
);
|
|
4149
|
-
return /* @__PURE__ */ jsx(
|
|
4150
|
-
MenuV2Item,
|
|
4151
|
-
{
|
|
4152
|
-
ref,
|
|
4153
|
-
role: "menuitemcheckbox",
|
|
4154
|
-
onSelect: handleSelect,
|
|
4155
|
-
"data-state": getSelectedState(isSelected),
|
|
4156
|
-
...rest,
|
|
4157
|
-
children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isSelected, children })
|
|
4158
|
-
}
|
|
4159
|
-
);
|
|
4160
|
-
});
|
|
4161
|
-
const MenuV2Separator = memo((props) => {
|
|
4162
|
-
const { ref, className, ...rest } = props;
|
|
4163
|
-
const { size: size2 } = use(MenuRootContext);
|
|
4164
|
-
return /* @__PURE__ */ jsx(RadixSeparator.Root, { className: cx(menuSeparatorCva({ size: size2 }), className), ref, ...rest });
|
|
4165
|
-
});
|
|
4166
|
-
MenuV2Separator.displayName = "MenuSeparator";
|
|
4167
|
-
const MenuV2 = {
|
|
4168
|
-
Root: MenuV2Root,
|
|
4169
|
-
Group: MenuV2Group,
|
|
4170
|
-
GroupLabel: MenuV2GroupLabel,
|
|
4171
|
-
Item: MenuV2Item,
|
|
4172
|
-
Separator: MenuV2Separator,
|
|
4173
|
-
SelectGroup: MenuV2SelectGroup,
|
|
4174
|
-
SelectItem: MenuV2SelectItem,
|
|
4175
|
-
MultiSelectGroup: MenuV2MultiSelectGroup,
|
|
4176
|
-
MultiSelectItem: MenuV2MultiSelectItem,
|
|
4177
|
-
SelectAllItem: MenuV2SelectAllItem,
|
|
4178
|
-
SelectedIndicator: MenuV2SelectedIndicator,
|
|
4179
|
-
CheckboxItem: MenuV2CheckboxItem,
|
|
4180
|
-
CheckedIndicator: MenuV2CheckedIndicator,
|
|
4181
|
-
Pages: MenuV2Pages,
|
|
4182
|
-
Page: MenuV2Page,
|
|
4183
|
-
PageTriggerItem: MenuV2PageTriggerItem
|
|
4184
|
-
};
|
|
4185
3858
|
const OneTimePasswordFieldHiddenInput = memo((props) => {
|
|
4186
3859
|
return /* @__PURE__ */ jsx(RadixOneTimePasswordField.HiddenInput, { ...props });
|
|
4187
3860
|
});
|
|
@@ -4281,6 +3954,62 @@ const OneTimePasswordField = {
|
|
|
4281
3954
|
Input: OneTimePasswordFieldInput,
|
|
4282
3955
|
Root: OneTimePasswordFieldRoot
|
|
4283
3956
|
};
|
|
3957
|
+
const OverlayClose = memo((props) => {
|
|
3958
|
+
const { ref, ...rest } = props;
|
|
3959
|
+
return /* @__PURE__ */ jsx(RadixDialog.Close, { ref, ...rest });
|
|
3960
|
+
});
|
|
3961
|
+
OverlayClose.displayName = "OverlayClose";
|
|
3962
|
+
const overlayContentCva = cva([
|
|
3963
|
+
"fixed",
|
|
3964
|
+
"inset-0",
|
|
3965
|
+
"bg-(--color-background)",
|
|
3966
|
+
"data-[state='closed']:animate-out",
|
|
3967
|
+
"data-[state='closed']:fade-out-0",
|
|
3968
|
+
"data-[state='closed']:zoom-out-95",
|
|
3969
|
+
"data-[state='open']:animate-in",
|
|
3970
|
+
"data-[state='open']:fade-in-0",
|
|
3971
|
+
"data-[state='open']:zoom-in-95"
|
|
3972
|
+
]);
|
|
3973
|
+
const OverlayContent = memo((props) => {
|
|
3974
|
+
const { ref, container, className, ...rest } = props;
|
|
3975
|
+
return /* @__PURE__ */ jsx(RadixDialog.Portal, { container, children: /* @__PURE__ */ jsx(
|
|
3976
|
+
RadixDialog.Content,
|
|
3977
|
+
{
|
|
3978
|
+
className: cx(overlayContentCva(), className),
|
|
3979
|
+
ref,
|
|
3980
|
+
"data-floating-content": "",
|
|
3981
|
+
...rest
|
|
3982
|
+
}
|
|
3983
|
+
) });
|
|
3984
|
+
});
|
|
3985
|
+
OverlayContent.displayName = "OverlayContent";
|
|
3986
|
+
const OverlayDescription = memo((props) => {
|
|
3987
|
+
const { ref, ...rest } = props;
|
|
3988
|
+
return /* @__PURE__ */ jsx(RadixDialog.Description, { ref, ...rest });
|
|
3989
|
+
});
|
|
3990
|
+
OverlayDescription.displayName = "OverlayDescription";
|
|
3991
|
+
const OverlayRoot = memo((props) => {
|
|
3992
|
+
return /* @__PURE__ */ jsx(RadixDialog.Root, { ...props });
|
|
3993
|
+
});
|
|
3994
|
+
OverlayRoot.displayName = "OverlayRoot";
|
|
3995
|
+
const OverlayTitle = memo((props) => {
|
|
3996
|
+
const { ref, ...rest } = props;
|
|
3997
|
+
return /* @__PURE__ */ jsx(RadixDialog.Title, { ref, ...rest });
|
|
3998
|
+
});
|
|
3999
|
+
OverlayTitle.displayName = "OverlayTitle";
|
|
4000
|
+
const OverlayTrigger = memo((props) => {
|
|
4001
|
+
const { ref, ...rest } = props;
|
|
4002
|
+
return /* @__PURE__ */ jsx(RadixDialog.Trigger, { ref, ...rest });
|
|
4003
|
+
});
|
|
4004
|
+
OverlayTrigger.displayName = "OverlayTrigger";
|
|
4005
|
+
const Overlay = {
|
|
4006
|
+
Root: OverlayRoot,
|
|
4007
|
+
Content: OverlayContent,
|
|
4008
|
+
Title: OverlayTitle,
|
|
4009
|
+
Description: OverlayDescription,
|
|
4010
|
+
Trigger: OverlayTrigger,
|
|
4011
|
+
Close: OverlayClose
|
|
4012
|
+
};
|
|
4284
4013
|
const centerStyles = { placeSelf: "center" };
|
|
4285
4014
|
const ErrorFallback = memo((props) => {
|
|
4286
4015
|
const { absoluteCentering, message = "Something went wrong", onRetry } = props;
|
|
@@ -6421,6 +6150,7 @@ export {
|
|
|
6421
6150
|
CheckboxGroupSelectAllItem,
|
|
6422
6151
|
CheckboxIndicator,
|
|
6423
6152
|
CheckboxRoot,
|
|
6153
|
+
CollapsibleTree,
|
|
6424
6154
|
CommandMenu,
|
|
6425
6155
|
CommandMenuCheckboxIndicator,
|
|
6426
6156
|
CommandMenuCheckboxItem,
|
|
@@ -6495,28 +6225,18 @@ export {
|
|
|
6495
6225
|
MenuSub,
|
|
6496
6226
|
MenuSubContent,
|
|
6497
6227
|
MenuSubTrigger,
|
|
6498
|
-
MenuV2,
|
|
6499
|
-
MenuV2CheckboxItem,
|
|
6500
|
-
MenuV2CheckedIndicator,
|
|
6501
|
-
MenuV2Group,
|
|
6502
|
-
MenuV2GroupLabel,
|
|
6503
|
-
MenuV2Item,
|
|
6504
|
-
MenuV2MultiSelectGroup,
|
|
6505
|
-
MenuV2MultiSelectItem,
|
|
6506
|
-
MenuV2Page,
|
|
6507
|
-
MenuV2PageTriggerItem,
|
|
6508
|
-
MenuV2Pages,
|
|
6509
|
-
MenuV2Root,
|
|
6510
|
-
MenuV2SelectAllItem,
|
|
6511
|
-
MenuV2SelectGroup,
|
|
6512
|
-
MenuV2SelectItem,
|
|
6513
|
-
MenuV2SelectedIndicator,
|
|
6514
|
-
MenuV2Separator,
|
|
6515
6228
|
MenuVirtualTrigger,
|
|
6516
6229
|
OneTimePasswordField,
|
|
6517
6230
|
OneTimePasswordFieldHiddenInput,
|
|
6518
6231
|
OneTimePasswordFieldInput,
|
|
6519
6232
|
OneTimePasswordFieldRoot,
|
|
6233
|
+
Overlay,
|
|
6234
|
+
OverlayClose,
|
|
6235
|
+
OverlayContent,
|
|
6236
|
+
OverlayDescription,
|
|
6237
|
+
OverlayRoot,
|
|
6238
|
+
OverlayTitle,
|
|
6239
|
+
OverlayTrigger,
|
|
6520
6240
|
OvermapErrorBoundary,
|
|
6521
6241
|
Popover,
|
|
6522
6242
|
PopoverArrow,
|
|
@@ -6537,6 +6257,7 @@ export {
|
|
|
6537
6257
|
SegmentedTabsList,
|
|
6538
6258
|
SegmentedTabsRoot,
|
|
6539
6259
|
SegmentedTabsTrigger,
|
|
6260
|
+
SelectedIndicatorContext,
|
|
6540
6261
|
Separator,
|
|
6541
6262
|
SlideOut,
|
|
6542
6263
|
Slider,
|
|
@@ -6573,12 +6294,6 @@ export {
|
|
|
6573
6294
|
badge,
|
|
6574
6295
|
buttonCva,
|
|
6575
6296
|
floating,
|
|
6576
|
-
genericMemo,
|
|
6577
|
-
getActiveState,
|
|
6578
|
-
getBooleanState,
|
|
6579
|
-
getCheckedState,
|
|
6580
|
-
getOpenState,
|
|
6581
|
-
getSelectedState,
|
|
6582
6297
|
mergeRefs,
|
|
6583
6298
|
radiusCva,
|
|
6584
6299
|
stopPropagation,
|
|
@@ -6586,9 +6301,15 @@ export {
|
|
|
6586
6301
|
useAlertDialog,
|
|
6587
6302
|
useButtonGroup,
|
|
6588
6303
|
useControlledState,
|
|
6589
|
-
useFallbackId,
|
|
6590
6304
|
useLayoutContext,
|
|
6305
|
+
useMenuContentContext,
|
|
6306
|
+
useMenuContext,
|
|
6307
|
+
usePagesContext,
|
|
6591
6308
|
useProvider,
|
|
6309
|
+
useSelectedIndicatorContext,
|
|
6310
|
+
useSize,
|
|
6311
|
+
useStopEventPropagation,
|
|
6312
|
+
useSubContext,
|
|
6592
6313
|
useTextFilter,
|
|
6593
6314
|
useToast,
|
|
6594
6315
|
useViewportSize
|