UNPKG

@ariakit/react-core

Version:

Ariakit React core

85 lines (83 loc) 2.56 kB
"use client"; import { usePopoverDisclosure } from "../__chunks/WMYDSCNQ.js"; import "../__chunks/OMU7RWRV.js"; import "../__chunks/NTITENHD.js"; import "../__chunks/F5MUBM3I.js"; import { useCompositeItem } from "../__chunks/6VRAQV3D.js"; import "../__chunks/5VQZOHHZ.js"; import "../__chunks/RZ4GPYOB.js"; import "../__chunks/MTZPJQMC.js"; import "../__chunks/RS7LB2H4.js"; import "../__chunks/S6EF7IVO.js"; import "../__chunks/P7GR5CS5.js"; import "../__chunks/PCKO3OQ5.js"; import "../__chunks/2RSXSRCN.js"; import "../__chunks/PFRGBC2K.js"; import "../__chunks/SWN3JYXT.js"; import "../__chunks/YV4JVR4I.js"; import "../__chunks/VDHZ5F7K.js"; import { createElement, createHook, forwardRef } from "../__chunks/LMDWO4NN.js"; import { useEvent, useMergeRefs } from "../__chunks/ABQUS43J.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 };