Files
NapCatQQ/.pnpm-store/v3/files/24/cb1dc72f17d9132ddfe41926a02d25802e8fc8d0e384d82ef25ed6e0f7b63b49344745c32a9a33244fdf28372653ac1b6b9739afabc560dc9a233bbab6fa14
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

49 lines
1.1 KiB
Plaintext

import {RefObject} from '@react-types/shared';
import {useEffect} from 'react';
function hasResizeObserver() {
return typeof window.ResizeObserver !== 'undefined';
}
type useResizeObserverOptionsType<T> = {
ref: RefObject<T | undefined | null> | undefined,
box?: ResizeObserverBoxOptions,
onResize: () => void
}
export function useResizeObserver<T extends Element>(options: useResizeObserverOptionsType<T>): void {
const {ref, box, onResize} = options;
useEffect(() => {
let element = ref?.current;
if (!element) {
return;
}
if (!hasResizeObserver()) {
window.addEventListener('resize', onResize, false);
return () => {
window.removeEventListener('resize', onResize, false);
};
} else {
const resizeObserverInstance = new window.ResizeObserver((entries) => {
if (!entries.length) {
return;
}
onResize();
});
resizeObserverInstance.observe(element, {box});
return () => {
if (element) {
resizeObserverInstance.unobserve(element);
}
};
}
}, [onResize, ref, box]);
}