@lesnoypudge/utils-react
Version:
lesnoypudge's utils-react
23 lines (22 loc) • 776 B
JavaScript
import { useFunction } from "../useFunction/useFunction.js";
import { SharedMutationObserver } from "@lesnoypudge/utils-web";
import { useLayoutEffect } from "react";
import { useMemoDeep } from "../useMemoDeep/useMemoDeep.js";
const observer = new SharedMutationObserver();
const useMutationObserver = (elementRef, callback, options) => {
const _callback = useFunction(callback);
const _options = useMemoDeep(options);
useLayoutEffect(() => {
return elementRef.effect((node) => {
if (!node) return;
observer.observe(node, _callback, _options);
return () => {
observer.unobserve(node, _callback);
};
});
}, [_callback, _options, elementRef]);
};
export {
useMutationObserver
};
//# sourceMappingURL=useMutationObserver.js.map