FreeLLMAPI / client /node_modules /.vite /deps /@base-ui_react_popover.js
Nryn215's picture
Upload folder using huggingface_hub
077865a verified
Raw
History Blame Contribute Delete
33.1 kB
import { i as __toESM, r as __exportAll, t as require_react } from "./react-DMmEJb6B.js";
import { t as require_react_dom } from "./react-dom.js";
import { t as require_jsx_runtime } from "./react_jsx-runtime.js";
import { E as isHTMLElement, f as useStableCallback, l as mergeProps, r as EMPTY_OBJECT, t as useRenderElement, u as useIsoLayoutEffect } from "./useRenderElement-3Cwvu1gO.js";
import { t as useButton } from "./useButton-CBy-cFDk.js";
import { _ as useBaseUiId, o as imperativeAction, p as triggerHover, r as closePress, t as createChangeEventDetails } from "./createBaseUIEventDetails-CJxlTiBH.js";
import { B as useFloatingNodeId, C as usePopupStore, F as useDismiss, G as CLICK_TRIGGER_IDENTIFIER, I as useClick, L as FloatingFocusManager, N as createSelector, O as ReactStore, R as FloatingNode, S as usePopupRootSync, V as useFloatingParentNodeId, W as FloatingPortal, X as FocusGuard, _ as FOCUSABLE_POPUP_PROPS, a as useAnchoredPopupScrollLock, at as useAnimationsFinished, b as useOpenStateTransitions, c as useAnchorPositioning, ct as Timeout, d as inertValue, et as popupStateMapping, f as getDisabledMountTransitionStyles, g as PopupTriggerMap, i as useOnFirstRender, it as useOpenChangeComplete, l as adaptiveOrigin, m as useToolbarRootContext, nt as triggerOpenStateMapping, o as usePositioner, ot as transitionStatusMapping, p as COMPOSITE_KEYS, q as POPUP_COLLISION_AVOIDANCE, r as useOpenMethodTriggerProps, s as InternalBackdrop, tt as pressableTriggerOpenStateMapping, v as setOpenTriggerState, w as useTriggerDataForwarding, x as usePopupInteractionProps, y as useImplicitActiveTrigger, z as FloatingTree } from "./usePreviousValue-rDCHxn0g.js";
import { a as useHoverFloatingInteraction, c as popupStoreSelectors, i as useHoverReferenceInteraction, n as useTriggerFocusGuards, o as createInitialPopupStoreState, r as safePolygon, s as createPopupFloatingRootContext, t as usePopupViewport } from "./usePopupViewport-DbUbXryh.js";
//#region ../node_modules/@base-ui/react/esm/popover/root/PopoverRootContext.js
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
var PopoverRootContext = /* @__PURE__ */ import_react.createContext(void 0);
PopoverRootContext.displayName = "PopoverRootContext";
function usePopoverRootContext(optional) {
const context = import_react.useContext(PopoverRootContext);
if (context === void 0 && !optional) throw new Error("Base UI: PopoverRootContext is missing. Popover parts must be placed within <Popover.Root>.");
return context;
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/store/PopoverStore.js
var import_react_dom = /* @__PURE__ */ __toESM(require_react_dom(), 1);
function createInitialState() {
return {
...createInitialPopupStoreState(),
disabled: false,
modal: false,
focusManagerModal: false,
instantType: void 0,
openMethod: null,
openChangeReason: null,
titleElementId: void 0,
descriptionElementId: void 0,
stickIfOpen: true,
nested: false,
openOnHover: false,
closeDelay: 0,
hasViewport: false
};
}
var selectors = {
...popupStoreSelectors,
disabled: createSelector((state) => state.disabled),
instantType: createSelector((state) => state.instantType),
openMethod: createSelector((state) => state.openMethod),
openChangeReason: createSelector((state) => state.openChangeReason),
modal: createSelector((state) => state.modal),
focusManagerModal: createSelector((state) => state.focusManagerModal),
stickIfOpen: createSelector((state) => state.stickIfOpen),
titleElementId: createSelector((state) => state.titleElementId),
descriptionElementId: createSelector((state) => state.descriptionElementId),
openOnHover: createSelector((state) => state.openOnHover),
closeDelay: createSelector((state) => state.closeDelay),
hasViewport: createSelector((state) => state.hasViewport)
};
var PopoverStore = class PopoverStore extends ReactStore {
constructor(initialState, floatingId, nested = false) {
const initial = {
...createInitialState(),
...initialState
};
const triggerElements = new PopupTriggerMap();
if (initial.open && initialState?.mounted === void 0) initial.mounted = true;
initial.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);
super(initial, {
popupRef: /* @__PURE__ */ import_react.createRef(),
backdropRef: /* @__PURE__ */ import_react.createRef(),
internalBackdropRef: /* @__PURE__ */ import_react.createRef(),
onOpenChange: void 0,
onOpenChangeComplete: void 0,
triggerFocusTargetRef: /* @__PURE__ */ import_react.createRef(),
beforeContentFocusGuardRef: /* @__PURE__ */ import_react.createRef(),
stickIfOpenTimeout: new Timeout(),
triggerElements
}, selectors);
}
setOpen = (nextOpen, eventDetails) => {
const isHover = eventDetails.reason === triggerHover;
const isKeyboardClick = eventDetails.reason === "trigger-press" && eventDetails.event.detail === 0;
const isDismissClose = !nextOpen && (eventDetails.reason === "escape-key" || eventDetails.reason == null);
eventDetails.preventUnmountOnClose = () => {
this.set("preventUnmountingOnClose", true);
};
const activeTriggerId = this.select("activeTriggerId");
if (!nextOpen && eventDetails.reason === "close-press" && eventDetails.trigger == null && activeTriggerId != null) eventDetails.trigger = this.context.triggerElements.getById(activeTriggerId) ?? this.select("activeTriggerElement") ?? void 0;
this.context.onOpenChange?.(nextOpen, eventDetails);
if (eventDetails.isCanceled) return;
this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
const changeState = () => {
const updatedState = {
open: nextOpen,
openChangeReason: eventDetails.reason
};
setOpenTriggerState(updatedState, nextOpen, eventDetails.trigger);
this.update(updatedState);
};
if (isHover) {
this.set("stickIfOpen", true);
this.context.stickIfOpenTimeout.start(500, () => {
this.set("stickIfOpen", false);
});
import_react_dom.flushSync(changeState);
} else changeState();
if (isKeyboardClick || isDismissClose) this.set("instantType", isKeyboardClick ? "click" : "dismiss");
else if (eventDetails.reason === "focus-out") this.set("instantType", "focus");
else this.set("instantType", void 0);
};
static useStore(externalStore, initialState) {
const { store, internalStore } = usePopupStore(externalStore, (floatingId, nested) => new PopoverStore(initialState, floatingId, nested));
import_react.useEffect(() => internalStore?.disposeEffect(), [internalStore]);
return store;
}
disposeEffect = () => {
return this.context.stickIfOpenTimeout.disposeEffect();
};
};
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/root/PopoverRoot.js
var import_jsx_runtime = require_jsx_runtime();
function PopoverRootComponent({ props }) {
const { children, open: openProp, defaultOpen = false, onOpenChange, onOpenChangeComplete, modal = false, handle, triggerId: triggerIdProp, defaultTriggerId: defaultTriggerIdProp = null } = props;
const store = PopoverStore.useStore(handle?.store, {
modal,
open: defaultOpen,
openProp,
activeTriggerId: defaultTriggerIdProp,
triggerIdProp
});
useOnFirstRender(() => {
if (openProp === void 0 && store.state.open === false && defaultOpen === true) store.update({
open: true,
activeTriggerId: defaultTriggerIdProp
});
});
store.useControlledProp("openProp", openProp);
store.useControlledProp("triggerIdProp", triggerIdProp);
const open = store.useState("open");
const mounted = store.useState("mounted");
const payload = store.useState("payload");
const nested = useFloatingParentNodeId() != null;
store.useContextCallback("onOpenChange", onOpenChange);
store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
usePopupRootSync(store, open);
useImplicitActiveTrigger(store);
const { forceUnmount } = useOpenStateTransitions(open, store, () => {
store.update({
stickIfOpen: true,
openChangeReason: null
});
});
store.useSyncedValues({
modal,
nested
});
import_react.useEffect(() => {
if (!open) store.context.stickIfOpenTimeout.clear();
}, [store, open]);
const handleImperativeClose = import_react.useCallback(() => {
store.setOpen(false, createChangeEventDetails(imperativeAction));
}, [store]);
import_react.useImperativeHandle(props.actionsRef, () => ({
unmount: forceUnmount,
close: handleImperativeClose
}), [forceUnmount, handleImperativeClose]);
const shouldRenderInteractions = open || mounted;
const popoverContext = import_react.useMemo(() => ({ store }), [store]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PopoverRootContext.Provider, {
value: popoverContext,
children: [shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverInteractions, {
store,
modal
}), typeof children === "function" ? children({ payload }) : children]
});
}
/**
* Groups all parts of the popover.
* Doesn't render its own HTML element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
function PopoverRoot(props) {
if (usePopoverRootContext(true)) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverRootComponent, { props });
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingTree, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverRootComponent, { props }) });
}
function PopoverInteractions({ store, modal }) {
const dismiss = useDismiss(store.useState("floatingRootContext"), { outsidePressEvent: {
mouse: modal === "trap-focus" ? "sloppy" : "intentional",
touch: "sloppy"
} });
usePopupInteractionProps(store, {
activeTriggerProps: dismiss.reference ?? EMPTY_OBJECT,
inactiveTriggerProps: dismiss.trigger ?? EMPTY_OBJECT,
popupProps: import_react.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, dismiss.floating), [dismiss.floating])
});
return null;
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/trigger/PopoverTrigger.js
/**
* A button that opens the popover.
* Renders a `<button>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverTrigger = /* @__PURE__ */ import_react.forwardRef(function PopoverTrigger(componentProps, forwardedRef) {
const { render, className, style, disabled = false, nativeButton = true, handle, payload, openOnHover = false, delay = 300, closeDelay = 0, id: idProp, ...elementProps } = componentProps;
const rootContext = usePopoverRootContext(true);
const store = handle?.store ?? rootContext?.store;
if (!store) throw new Error("Base UI: <Popover.Trigger> must be either used within a <Popover.Root> component or provided with a handle.");
const thisTriggerId = useBaseUiId(idProp);
const isTriggerActive = store.useState("isTriggerActive", thisTriggerId);
const floatingContext = store.useState("floatingRootContext");
const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId);
const popupId = store.useState("triggerPopupId", thisTriggerId);
const triggerElementRef = import_react.useRef(null);
const { registerTrigger, isMountedByThisTrigger } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
payload,
disabled,
openOnHover,
closeDelay
});
const openReason = store.useState("openChangeReason");
const stickIfOpen = store.useState("stickIfOpen");
const openMethod = store.useState("openMethod");
const focusManagerModal = store.useState("focusManagerModal");
const hoverProps = useHoverReferenceInteraction(floatingContext, {
enabled: floatingContext != null && openOnHover && (openMethod !== "touch" || openReason !== "trigger-press"),
mouseOnly: true,
move: false,
handleClose: safePolygon(),
restMs: delay,
delay: { close: closeDelay },
triggerElementRef,
isActiveTrigger: isTriggerActive,
isClosing: () => store.select("transitionStatus") === "ending"
});
const click = useClick(floatingContext, {
enabled: floatingContext != null,
stickIfOpen
});
const interactionTypeProps = useOpenMethodTriggerProps(() => store.select("open"), (interactionType) => {
store.set("openMethod", interactionType);
});
const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger);
const { getButtonProps, buttonRef } = useButton({
disabled,
native: nativeButton
});
const stateAttributesMapping = { open(value) {
if (value && openReason === "trigger-press") return pressableTriggerOpenStateMapping.open(value);
return triggerOpenStateMapping.open(value);
} };
const { preFocusGuardRef, handlePreFocusGuardFocus, handleFocusTargetFocus } = useTriggerFocusGuards(store, triggerElementRef);
const element = useRenderElement("button", componentProps, {
state: {
disabled,
open: isOpenedByThisTrigger
},
ref: [
buttonRef,
forwardedRef,
registerTrigger,
triggerElementRef
],
props: [
click.reference,
hoverProps,
rootTriggerProps,
interactionTypeProps,
{
[CLICK_TRIGGER_IDENTIFIER]: "",
id: thisTriggerId,
"aria-haspopup": "dialog",
"aria-expanded": isOpenedByThisTrigger,
"aria-controls": popupId
},
elementProps,
getButtonProps
],
stateAttributesMapping
});
if (isMountedByThisTrigger && !focusManagerModal) return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FocusGuard, {
ref: preFocusGuardRef,
onFocus: handlePreFocusGuardFocus
}),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Fragment, { children: element }, thisTriggerId),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FocusGuard, {
ref: store.context.triggerFocusTargetRef,
onFocus: handleFocusTargetFocus
})
] });
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Fragment, { children: element }, thisTriggerId);
});
PopoverTrigger.displayName = "PopoverTrigger";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/portal/PopoverPortalContext.js
var PopoverPortalContext = /* @__PURE__ */ import_react.createContext(void 0);
PopoverPortalContext.displayName = "PopoverPortalContext";
function usePopoverPortalContext() {
const value = import_react.useContext(PopoverPortalContext);
if (value === void 0) throw new Error("Base UI: <Popover.Portal> is missing.");
return value;
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/portal/PopoverPortal.js
/**
* A portal element that moves the popup to a different part of the DOM.
* By default, the portal element is appended to `<body>`.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverPortal = /* @__PURE__ */ import_react.forwardRef(function PopoverPortal(props, forwardedRef) {
const { keepMounted = false, ...portalProps } = props;
const { store } = usePopoverRootContext();
if (!(store.useState("mounted") || keepMounted)) return null;
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverPortalContext.Provider, {
value: keepMounted,
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingPortal, {
ref: forwardedRef,
...portalProps
})
});
});
PopoverPortal.displayName = "PopoverPortal";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/positioner/PopoverPositionerContext.js
var PopoverPositionerContext = /* @__PURE__ */ import_react.createContext(void 0);
PopoverPositionerContext.displayName = "PopoverPositionerContext";
function usePopoverPositionerContext() {
const context = import_react.useContext(PopoverPositionerContext);
if (!context) throw new Error("Base UI: PopoverPositionerContext is missing. PopoverPositioner parts must be placed within <Popover.Positioner>.");
return context;
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/positioner/PopoverPositioner.js
/**
* Positions the popover against the trigger.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverPositioner = /* @__PURE__ */ import_react.forwardRef(function PopoverPositioner(componentProps, forwardedRef) {
const { render, className, style, anchor, positionMethod = "absolute", side = "bottom", align = "center", sideOffset = 0, alignOffset = 0, collisionBoundary = "clipping-ancestors", collisionPadding = 5, arrowPadding = 5, sticky = false, disableAnchorTracking = false, collisionAvoidance = POPUP_COLLISION_AVOIDANCE, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const keepMounted = usePopoverPortalContext();
const nodeId = useFloatingNodeId();
const floatingRootContext = store.useState("floatingRootContext");
const mounted = store.useState("mounted");
const open = store.useState("open");
const openReason = store.useState("openChangeReason");
const triggerElement = store.useState("activeTriggerElement");
const modal = store.useState("modal");
const openMethod = store.useState("openMethod");
const positionerElement = store.useState("positionerElement");
const instantType = store.useState("instantType");
const transitionStatus = store.useState("transitionStatus");
const hasViewport = store.useState("hasViewport");
const prevTriggerElementRef = import_react.useRef(null);
const runOnceAnimationsFinish = useAnimationsFinished(positionerElement, false, false);
const positioning = useAnchorPositioning({
anchor,
floatingRootContext,
positionMethod,
mounted,
side,
sideOffset,
align,
alignOffset,
arrowPadding,
collisionBoundary,
collisionPadding,
sticky,
disableAnchorTracking,
keepMounted,
nodeId,
collisionAvoidance,
adaptiveOrigin: hasViewport ? adaptiveOrigin : void 0
});
const domReference = floatingRootContext.useState("domReferenceElement");
useIsoLayoutEffect(() => {
const currentTriggerElement = domReference;
const prevTriggerElement = prevTriggerElementRef.current;
if (currentTriggerElement) prevTriggerElementRef.current = currentTriggerElement;
if (prevTriggerElement && currentTriggerElement && currentTriggerElement !== prevTriggerElement) {
store.set("instantType", void 0);
const ac = new AbortController();
runOnceAnimationsFinish(() => {
store.set("instantType", "trigger-change");
}, ac.signal);
return () => {
ac.abort();
};
}
}, [
domReference,
runOnceAnimationsFinish,
store
]);
useAnchoredPopupScrollLock(open && modal === true && openReason !== "trigger-hover", openMethod === "touch", positionerElement, triggerElement);
const setPositionerElement = import_react.useCallback((element) => {
store.set("positionerElement", element);
}, [store]);
const element = usePositioner(componentProps, {
open,
side: positioning.side,
align: positioning.align,
anchorHidden: positioning.anchorHidden,
instant: instantType
}, {
styles: positioning.positionerStyles,
transitionStatus,
props: elementProps,
refs: [forwardedRef, setPositionerElement],
hidden: !mounted,
inert: !open
});
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PopoverPositionerContext.Provider, {
value: positioning,
children: [mounted && modal === true && openReason !== "trigger-hover" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InternalBackdrop, {
ref: store.context.internalBackdropRef,
inert: inertValue(!open),
cutout: triggerElement
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingNode, {
id: nodeId,
children: element
})]
});
});
PopoverPositioner.displayName = "PopoverPositioner";
//#endregion
//#region ../node_modules/@base-ui/react/esm/utils/closePart.js
var ClosePartContext = /* @__PURE__ */ import_react.createContext(void 0);
ClosePartContext.displayName = "ClosePartContext";
function useClosePartCount() {
const [closePartCount, setClosePartCount] = import_react.useState(0);
const register = useStableCallback(() => {
setClosePartCount((count) => count + 1);
return () => {
setClosePartCount((count) => Math.max(0, count - 1));
};
});
return {
context: import_react.useMemo(() => ({ register }), [register]),
hasClosePart: closePartCount > 0
};
}
function ClosePartProvider(props) {
const { value, children } = props;
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClosePartContext.Provider, {
value,
children
});
}
function useClosePartRegistration() {
const context = import_react.useContext(ClosePartContext);
useIsoLayoutEffect(() => {
return context?.register();
}, [context]);
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/popup/PopoverPopup.js
var stateAttributesMapping$2 = {
...popupStateMapping,
...transitionStatusMapping
};
/**
* A container for the popover contents.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverPopup = /* @__PURE__ */ import_react.forwardRef(function PopoverPopup(componentProps, forwardedRef) {
const { render, className, style, initialFocus, finalFocus, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const positioner = usePopoverPositionerContext();
const insideToolbar = useToolbarRootContext(true) != null;
const { context: closePartContext, hasClosePart } = useClosePartCount();
const open = store.useState("open");
const openMethod = store.useState("openMethod");
const instantType = store.useState("instantType");
const transitionStatus = store.useState("transitionStatus");
const popupProps = store.useState("popupProps");
const titleId = store.useState("titleElementId");
const descriptionId = store.useState("descriptionElementId");
const modal = store.useState("modal");
const mounted = store.useState("mounted");
const openReason = store.useState("openChangeReason");
const activeTriggerElement = store.useState("activeTriggerElement");
const floatingContext = store.useState("floatingRootContext");
const floatingId = floatingContext.useState("floatingId");
const disabled = store.useState("disabled");
const openOnHover = store.useState("openOnHover");
const closeDelay = store.useState("closeDelay");
const popupId = elementProps.id ?? floatingId;
useOpenChangeComplete({
open,
ref: store.context.popupRef,
onComplete() {
if (open) store.context.onOpenChangeComplete?.(true);
}
});
useHoverFloatingInteraction(floatingContext, {
enabled: openOnHover && !disabled,
closeDelay
});
function defaultInitialFocus(interactionType) {
if (interactionType === "touch") return store.context.popupRef.current;
return true;
}
const resolvedInitialFocus = initialFocus === void 0 ? defaultInitialFocus : initialFocus;
const focusManagerModal = modal !== false && hasClosePart;
store.useSyncedValue("focusManagerModal", focusManagerModal);
const setPopupElement = import_react.useCallback((element) => {
store.set("popupElement", element);
}, [store]);
const element = useRenderElement("div", componentProps, {
state: {
open,
side: positioner.side,
align: positioner.align,
instant: instantType,
transitionStatus
},
ref: [
forwardedRef,
store.context.popupRef,
setPopupElement
],
props: [
popupProps,
{
id: popupId,
role: "dialog",
...FOCUSABLE_POPUP_PROPS,
"aria-labelledby": titleId,
"aria-describedby": descriptionId,
onKeyDown(event) {
if (insideToolbar && COMPOSITE_KEYS.has(event.key)) event.stopPropagation();
}
},
getDisabledMountTransitionStyles(transitionStatus),
elementProps
],
stateAttributesMapping: stateAttributesMapping$2
});
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingFocusManager, {
context: floatingContext,
openInteractionType: openMethod,
modal: focusManagerModal,
disabled: !mounted || openReason === "trigger-hover",
initialFocus: resolvedInitialFocus,
returnFocus: finalFocus,
restoreFocus: "popup",
previousFocusableElement: isHTMLElement(activeTriggerElement) ? activeTriggerElement : void 0,
nextFocusableElement: store.context.triggerFocusTargetRef,
beforeContentFocusGuardRef: store.context.beforeContentFocusGuardRef,
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClosePartProvider, {
value: closePartContext,
children: element
})
});
});
PopoverPopup.displayName = "PopoverPopup";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/arrow/PopoverArrow.js
/**
* Displays an element positioned against the popover anchor.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverArrow = /* @__PURE__ */ import_react.forwardRef(function PopoverArrow(componentProps, forwardedRef) {
const { render, className, style, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const open = store.useState("open");
const { arrowRef, side, align, arrowUncentered, arrowStyles } = usePopoverPositionerContext();
return useRenderElement("div", componentProps, {
state: {
open,
side,
align,
uncentered: arrowUncentered
},
ref: [forwardedRef, arrowRef],
props: [{
style: arrowStyles,
"aria-hidden": true
}, elementProps],
stateAttributesMapping: popupStateMapping
});
});
PopoverArrow.displayName = "PopoverArrow";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/backdrop/PopoverBackdrop.js
var stateAttributesMapping$1 = {
...popupStateMapping,
...transitionStatusMapping
};
/**
* An overlay displayed beneath the popover.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverBackdrop = /* @__PURE__ */ import_react.forwardRef(function PopoverBackdrop(props, forwardedRef) {
const { render, className, style, ...elementProps } = props;
const { store } = usePopoverRootContext();
const open = store.useState("open");
const mounted = store.useState("mounted");
const transitionStatus = store.useState("transitionStatus");
const openReason = store.useState("openChangeReason");
return useRenderElement("div", props, {
state: {
open,
transitionStatus
},
ref: [store.context.backdropRef, forwardedRef],
props: [{
role: "presentation",
hidden: !mounted,
style: {
pointerEvents: openReason === "trigger-hover" ? "none" : void 0,
userSelect: "none",
WebkitUserSelect: "none"
}
}, elementProps],
stateAttributesMapping: stateAttributesMapping$1
});
});
PopoverBackdrop.displayName = "PopoverBackdrop";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/title/PopoverTitle.js
/**
* A heading that labels the popover.
* Renders an `<h2>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverTitle = /* @__PURE__ */ import_react.forwardRef(function PopoverTitle(componentProps, forwardedRef) {
const { render, className, style, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const id = useBaseUiId(elementProps.id);
store.useSyncedValueWithCleanup("titleElementId", id);
return useRenderElement("h2", componentProps, {
ref: forwardedRef,
props: [{ id }, elementProps]
});
});
PopoverTitle.displayName = "PopoverTitle";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/description/PopoverDescription.js
/**
* A paragraph with additional information about the popover.
* Renders a `<p>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverDescription = /* @__PURE__ */ import_react.forwardRef(function PopoverDescription(componentProps, forwardedRef) {
const { render, className, style, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const id = useBaseUiId(elementProps.id);
store.useSyncedValueWithCleanup("descriptionElementId", id);
return useRenderElement("p", componentProps, {
ref: forwardedRef,
props: [{ id }, elementProps]
});
});
PopoverDescription.displayName = "PopoverDescription";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/close/PopoverClose.js
/**
* A button that closes the popover.
* Renders a `<button>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverClose = /* @__PURE__ */ import_react.forwardRef(function PopoverClose(componentProps, forwardedRef) {
const { render, className, style, disabled = false, nativeButton = true, ...elementProps } = componentProps;
const { buttonRef, getButtonProps } = useButton({
disabled,
focusableWhenDisabled: false,
native: nativeButton
});
const { store } = usePopoverRootContext();
useClosePartRegistration();
return useRenderElement("button", componentProps, {
ref: [forwardedRef, buttonRef],
props: [
{ onClick(event) {
store.setOpen(false, createChangeEventDetails(closePress, event.nativeEvent));
} },
elementProps,
getButtonProps
]
});
});
PopoverClose.displayName = "PopoverClose";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/viewport/PopoverViewportCssVars.js
var PopoverViewportCssVars = /* @__PURE__ */ function(PopoverViewportCssVars) {
/**
* The width of the parent popup.
* This variable is placed on the 'previous' container and stores the width of the popup when the previous content was rendered.
* It can be used to freeze the dimensions of the popup when animating between different content.
*/
PopoverViewportCssVars["popupWidth"] = "--popup-width";
/**
* The height of the parent popup.
* This variable is placed on the 'previous' container and stores the height of the popup when the previous content was rendered.
* It can be used to freeze the dimensions of the popup when animating between different content.
*/
PopoverViewportCssVars["popupHeight"] = "--popup-height";
return PopoverViewportCssVars;
}({});
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/viewport/PopoverViewport.js
var stateAttributesMapping = { activationDirection: (value) => value ? { "data-activation-direction": value } : null };
/**
* A viewport for displaying content transitions.
* This component is only required if one popup can be opened by multiple triggers, its content
* changes based on the trigger, and switching between them is animated.
* Renders a `<div>` element.
*
* Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
*/
var PopoverViewport = /* @__PURE__ */ import_react.forwardRef(function PopoverViewport(componentProps, forwardedRef) {
const { render, className, style, children, ...elementProps } = componentProps;
const { store } = usePopoverRootContext();
const { side } = usePopoverPositionerContext();
const instantType = store.useState("instantType");
const { children: childrenToRender, state: viewportState } = usePopupViewport({
store,
side,
cssVars: PopoverViewportCssVars,
children
});
return useRenderElement("div", componentProps, {
state: {
activationDirection: viewportState.activationDirection,
transitioning: viewportState.transitioning,
instant: instantType
},
ref: forwardedRef,
props: [elementProps, { children: childrenToRender }],
stateAttributesMapping
});
});
PopoverViewport.displayName = "PopoverViewport";
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/store/PopoverHandle.js
var PopoverHandle = class {
/**
* Internal store holding the popover's state.
* @internal
*/
constructor() {
this.store = new PopoverStore();
}
/**
* Opens the popover and associates it with the trigger with the given id.
* The trigger must be a Popover.Trigger component with this handle passed as a prop.
*
* @param triggerId ID of the trigger to associate with the popover.
*/
open(triggerId) {
const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) ?? void 0 : void 0;
if (triggerId && !triggerElement) throw new Error(`Base UI: PopoverHandle.open: No trigger found with id "${triggerId}".`);
this.store.setOpen(true, createChangeEventDetails(imperativeAction, void 0, triggerElement));
}
/**
* Closes the popover.
*/
close() {
this.store.setOpen(false, createChangeEventDetails(imperativeAction, void 0, void 0));
}
/**
* Indicates whether the popover is currently open.
*/
get isOpen() {
return this.store.select("open");
}
};
/**
* Creates a new handle to connect a Popover.Root with detached Popover.Trigger components.
*/
function createPopoverHandle() {
return new PopoverHandle();
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/popover/index.parts.js
var index_parts_exports = /* @__PURE__ */ __exportAll({
Arrow: () => PopoverArrow,
Backdrop: () => PopoverBackdrop,
Close: () => PopoverClose,
Description: () => PopoverDescription,
Handle: () => PopoverHandle,
Popup: () => PopoverPopup,
Portal: () => PopoverPortal,
Positioner: () => PopoverPositioner,
Root: () => PopoverRoot,
Title: () => PopoverTitle,
Trigger: () => PopoverTrigger,
Viewport: () => PopoverViewport,
createHandle: () => createPopoverHandle
});
//#endregion
export { index_parts_exports as Popover };
//# sourceMappingURL=@base-ui_react_popover.js.map