@ariakit/react-core
Version:
Ariakit React core
60 lines (57 loc) • 1.61 kB
JavaScript
"use client";
import {
usePopoverAnchor
} from "./DTOLNWNF.js";
import {
useDialogDisclosure
} from "./GYHYTZZN.js";
import {
PopoverScopedContextProvider,
usePopoverProviderContext
} from "./MWF5B7KS.js";
import {
createElement,
createHook,
forwardRef
} from "./ILRXHV7V.js";
import {
useEvent,
useWrapElement
} from "./K2XTQB3X.js";
// src/popover/popover-disclosure.tsx
import { invariant } from "@ariakit/core/utils/misc";
import { jsx } from "react/jsx-runtime";
var TagName = "button";
var usePopoverDisclosure = createHook(function usePopoverDisclosure2({ store, ...props }) {
const context = usePopoverProviderContext();
store = store || context;
invariant(
store,
process.env.NODE_ENV !== "production" && "PopoverDisclosure must receive a `store` prop or be wrapped in a PopoverProvider component."
);
const onClickProp = props.onClick;
const onClick = useEvent((event) => {
store == null ? void 0 : store.setAnchorElement(event.currentTarget);
onClickProp == null ? void 0 : onClickProp(event);
});
props = useWrapElement(
props,
(element) => /* @__PURE__ */ jsx(PopoverScopedContextProvider, { value: store, children: element }),
[store]
);
props = {
...props,
onClick
};
props = usePopoverAnchor({ store, ...props });
props = useDialogDisclosure({ store, ...props });
return props;
});
var PopoverDisclosure = forwardRef(function PopoverDisclosure2(props) {
const htmlProps = usePopoverDisclosure(props);
return createElement(TagName, htmlProps);
});
export {
usePopoverDisclosure,
PopoverDisclosure
};