@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
29 lines (28 loc) • 700 B
JavaScript
import ResizeObserver from "resize-observer-polyfill";
import { isFunction } from "../_utils/is.js";
const useResizeObserver = ({
elementRef,
onResize
}) => {
let resizeObserver;
const createResizeObserver = () => {
if (!elementRef.value)
return;
resizeObserver = new ResizeObserver((entries) => {
const entry = entries[0];
isFunction(onResize) && onResize(entry);
});
resizeObserver.observe(elementRef.value);
};
const destroyResizeObserver = () => {
if (resizeObserver) {
resizeObserver.disconnect();
resizeObserver = null;
}
};
return {
createResizeObserver,
destroyResizeObserver
};
};
export { useResizeObserver };