@assistant-ui/react
Version:
React components for AI chat.
44 lines • 1.35 kB
JavaScript
// src/utils/hooks/useOnResizeContent.tsx
import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
import { useCallback } from "react";
import { useManagedRef } from "./useManagedRef.mjs";
var useOnResizeContent = (callback) => {
const callbackRef = useCallbackRef(callback);
const refCallback = useCallback(
(el) => {
const resizeObserver = new ResizeObserver(() => {
callbackRef();
});
const mutationObserver = new MutationObserver((mutations) => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (node instanceof Element) {
resizeObserver.observe(node);
}
}
for (const node of mutation.removedNodes) {
if (node instanceof Element) {
resizeObserver.unobserve(node);
}
}
}
callbackRef();
});
resizeObserver.observe(el);
mutationObserver.observe(el, { childList: true });
for (const child of el.children) {
resizeObserver.observe(child);
}
return () => {
resizeObserver.disconnect();
mutationObserver.disconnect();
};
},
[callbackRef]
);
return useManagedRef(refCallback);
};
export {
useOnResizeContent
};
//# sourceMappingURL=useOnResizeContent.mjs.map