jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
29 lines • 846 B
JavaScript
export class LayoutObserver {
connected = false;
constructor(observer = () => {}) {
this.resizeObserver = new ResizeObserver(() => observer());
this.performanceObserver = new PerformanceObserver(() => {
observer();
});
this.mutationObserver = new MutationObserver(() => observer());
}
observe = target => {
this.resizeObserver.observe(target);
this.performanceObserver.observe({
entryTypes: ['paint', 'element', 'layout-shift', 'event']
});
this.mutationObserver.observe(target, {
attributeFilter: ['style'],
attributes: true
});
this.connected = true;
};
disconnect = () => {
if (this.connected) {
this.resizeObserver.disconnect();
this.performanceObserver.disconnect();
this.mutationObserver.disconnect();
}
this.connected = false;
};
}