/**
* 监听 dom size 变化
* @param {*} target HTMLElement
* @param {*} callback 参数 rect
* @param {*} times n次后注销
* @returns 销毁函数
*/
export function onceObserver(target, callback, times = 2) {
let index = 1;
const resizeObserve = new ResizeObserver(function ([{ target }]) {
callback?.(target.getBoundingClientRect());
if (index++ > times - 1) this.disconnect();
});
resizeObserve.observe(target);
function destroyObserver() {
resizeObserve.disconnect();
}
if (typeof this.$once === "function") {
this.$once("hook:beforeDestroy", destroyObserver);
}
return destroyObserver;
}