UNPKG

@ariakit/react-core

Version:

Ariakit React core

79 lines (77 loc) 2.35 kB
"use client"; import { usePopoverDisclosure } from "../__chunks/VZ7LL2SH.js"; import "../__chunks/CTFM4U6G.js"; import "../__chunks/UBWVN2JP.js"; import "../__chunks/W3FWC72U.js"; import { useCompositeItem } from "../__chunks/JT5CKSP7.js"; import "../__chunks/7NJRHOSP.js"; import "../__chunks/4WQSNMEM.js"; import "../__chunks/467XRHWL.js"; import "../__chunks/2LVHRIRC.js"; import "../__chunks/FYYAZUDI.js"; import "../__chunks/NO3UEYQ2.js"; import "../__chunks/XTCKRCGH.js"; import "../__chunks/EZ4UPVW6.js"; import "../__chunks/3F6D4KUU.js"; import "../__chunks/SWN3JYXT.js"; import "../__chunks/SOQQIDO4.js"; import "../__chunks/CTVD4XJH.js"; import { createElement, createHook, forwardRef } from "../__chunks/L4OUMOCQ.js"; import { useEvent, useMergeRefs } from "../__chunks/W2TDKEPX.js"; import "../__chunks/AZVQSWGA.js"; // src/composite/composite-overflow-disclosure.ts import { sync } from "@ariakit/core/utils/store"; import { useEffect, useRef, useState } from "react"; var TagName = "button"; var useCompositeOverflowDisclosure = createHook(function useCompositeOverflowDisclosure2({ store, ...props }) { const ref = useRef(null); const [shouldRegisterItem, setShouldRegisterItem] = useState(false); useEffect(() => { return sync(store, ["disclosureElement"], () => { store.setDisclosureElement(ref.current); }); }, [store]); const onFocusProp = props.onFocus; const onFocus = useEvent((event) => { onFocusProp == null ? void 0 : onFocusProp(event); if (event.defaultPrevented) return; setShouldRegisterItem(true); }); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { onBlurProp == null ? void 0 : onBlurProp(event); if (event.defaultPrevented) return; setShouldRegisterItem(false); }); props = { "aria-hidden": !shouldRegisterItem, ...props, ref: useMergeRefs(props.ref, ref), onFocus, onBlur }; props = useCompositeItem({ ...props, shouldRegisterItem }); props = usePopoverDisclosure({ store, ...props }); return props; }); var CompositeOverflowDisclosure = forwardRef( function CompositeOverflowDisclosure2(props) { const htmlProps = useCompositeOverflowDisclosure(props); return createElement(TagName, htmlProps); } ); export { CompositeOverflowDisclosure, useCompositeOverflowDisclosure };