@ariakit/react-core
Version:
Ariakit React core
79 lines (77 loc) • 2.35 kB
JavaScript
"use client";
import {
usePopoverDisclosure
} from "../__chunks/NG75I6FS.js";
import "../__chunks/DTOLNWNF.js";
import "../__chunks/GYHYTZZN.js";
import "../__chunks/NJZUP4KO.js";
import {
useCompositeItem
} from "../__chunks/FIT2LC3L.js";
import "../__chunks/5VQZOHHZ.js";
import "../__chunks/DTXGDDAC.js";
import "../__chunks/MWF5B7KS.js";
import "../__chunks/63N3TCQX.js";
import "../__chunks/FFSBKSAM.js";
import "../__chunks/72IB6YNO.js";
import "../__chunks/J4DPQC5Y.js";
import "../__chunks/WJ7PHYH7.js";
import "../__chunks/US3TW2XI.js";
import "../__chunks/SWN3JYXT.js";
import "../__chunks/Q3KUZPD7.js";
import "../__chunks/45YOMIF3.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/ILRXHV7V.js";
import {
useEvent,
useMergeRefs
} from "../__chunks/K2XTQB3X.js";
import "../__chunks/YXGXYGQX.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
};