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 ."); 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 `