UNPKG

react-box-overflow

Version:

Headless UI for automatically collapsing boxes when overflow in React.

34 lines (33 loc) 1.12 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const boxOverflowCore = require("box-overflow-core"); const React = require("react"); const useRefFn = require("./useRefFn.cjs"); const useIsomorphicLayoutEffect = typeof document !== "undefined" ? React.useLayoutEffect : React.useEffect; function useOverflow(options) { const [, forceRenderer] = React.useReducer(() => { return []; }, []); const onDisplayChange = useRefFn.useRefFn((items) => { var _a; forceRenderer(); (_a = options.onDisplayChange) == null ? void 0 : _a.call(options, items); }); const mergedOptions = { ...options, onDisplayChange }; const instance = React.useRef(new boxOverflowCore.BoxOverflow(mergedOptions)); React.useEffect(() => { return instance.current.onMount(); }, []); useIsomorphicLayoutEffect(() => { return instance.current.onUpdate(); }); React.useLayoutEffect(() => { instance.current.setOptions(mergedOptions); }, [options]); return instance.current; } exports.useOverflow = useOverflow; //# sourceMappingURL=useOverflow.cjs.map