Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
export class DOMWatcher {
  constructor(root, element, callback) {
    this.root = root;
    this.element = element.getRegionElement();
    this.callback = callback;
 
    this.handleUpdate();
  }
 
  handleResize() {
    window.addEventListener("resize", this.onUpdate);
  }
 
  handleUpdate() {
    if (!this.element) return;
 
    this.observer = new MutationObserver(this.onUpdate);
 
    this.observer.observe(this.element, { attributes: true });
  }
 
  onUpdate = () => {
    this.callback();
  };
 
  destroy() {
    window.removeEventListener("resize", this.onUpdate);
    this.observer.disconnect();
  }
}