UNPKG

@ariakit/react-core

Version:

Ariakit React core

85 lines (83 loc) 2.56 kB
"use client"; import { usePopoverDisclosure } from "../__chunks/4I4MLMKD.js"; import "../__chunks/HMCFFQCB.js"; import "../__chunks/ZTXFEM5L.js"; import "../__chunks/NMGNQVTG.js"; import { useCompositeItem } from "../__chunks/SBSPVDDI.js"; import "../__chunks/5VQZOHHZ.js"; import "../__chunks/Y62RTBST.js"; import "../__chunks/Y67KZUMI.js"; import "../__chunks/T2AZQXQU.js"; import "../__chunks/ABN76PSX.js"; import "../__chunks/APTFW6PT.js"; import "../__chunks/XCKGTAUF.js"; import "../__chunks/2W3RN7C5.js"; import "../__chunks/OE2EFRVA.js"; import "../__chunks/SWN3JYXT.js"; import "../__chunks/RTNCFSKZ.js"; import "../__chunks/5CPL3B7G.js"; import { createElement, createHook, forwardRef } from "../__chunks/VOQWLFSQ.js"; import { useEvent, useMergeRefs } from "../__chunks/5GGHRIN3.js"; import "../__chunks/SK3NAZA3.js"; import { __objRest, __spreadProps, __spreadValues } from "../__chunks/3YLGPPWQ.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(_a) { var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); 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 = __spreadProps(__spreadValues({ "aria-hidden": !shouldRegisterItem }, props), { ref: useMergeRefs(props.ref, ref), onFocus, onBlur }); props = useCompositeItem(__spreadProps(__spreadValues({}, props), { shouldRegisterItem })); props = usePopoverDisclosure(__spreadValues({ store }, props)); return props; }); var CompositeOverflowDisclosure = forwardRef( function CompositeOverflowDisclosure2(props) { const htmlProps = useCompositeOverflowDisclosure(props); return createElement(TagName, htmlProps); } ); export { CompositeOverflowDisclosure, useCompositeOverflowDisclosure };