UNPKG

@assistant-ui/react

Version:

Open-source TypeScript/React library for building production-grade AI chat experiences

41 lines (40 loc) • 1.25 kB
"use client"; import { useManagedRef } from "./useManagedRef.js"; import { c } from "@assistant-ui/tap/react-shim/compiler-runtime"; import "@assistant-ui/tap/react-shim"; // src/utils/hooks/useSizeHandle.ts /** * Hook that creates a ref for tracking element size via a SizeHandle. * Automatically sets up ResizeObserver and reports height changes. * * @param register - Function that returns a SizeHandle (e.g., registerContentInset) * @param getHeight - Optional function to compute height (defaults to el.offsetHeight) * @returns A ref callback to attach to the element */ const useSizeHandle = (register, getHeight) => { const $ = c(3); let t0; if ($[0] !== getHeight || $[1] !== register) { t0 = (el) => { if (!register) return; const sizeHandle = register(); const updateHeight = () => { const height = getHeight ? getHeight(el) : el.offsetHeight; sizeHandle.setHeight(height); }; const ro = new ResizeObserver(updateHeight); ro.observe(el); updateHeight(); return () => { ro.disconnect(); sizeHandle.unregister(); }; }; $[0] = getHeight; $[1] = register; $[2] = t0; } else t0 = $[2]; return useManagedRef(t0); }; export { useSizeHandle }; //# sourceMappingURL=useSizeHandle.js.map