@ariakit/react-core
Version:
Ariakit React core
85 lines (83 loc) • 2.56 kB
JavaScript
"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
};