remove clientRectManager
This commit is contained in:
parent
e079a7a866
commit
c556153fab
|
|
@ -191,55 +191,3 @@ export class ClientRectObserver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ClientRectObserverEntryCallback = (entry: ClientRectObserverEntry) => void;
|
|
||||||
|
|
||||||
export class ClientRectObserverManager {
|
|
||||||
static #instance: ClientRectObserverManager | null = null;
|
|
||||||
|
|
||||||
// singleton so we only observe elements once
|
|
||||||
constructor() {
|
|
||||||
if (ClientRectObserverManager.#instance === null) {
|
|
||||||
ClientRectObserverManager.#instance = this;
|
|
||||||
}
|
|
||||||
return ClientRectObserverManager.#instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
#elementMap = new WeakMap<Element, Set<ClientRectObserverEntryCallback>>();
|
|
||||||
|
|
||||||
#vo = new ClientRectObserver((entries) => {
|
|
||||||
for (const entry of entries) {
|
|
||||||
const callbacks = this.#elementMap.get(entry.target);
|
|
||||||
|
|
||||||
if (callbacks) {
|
|
||||||
callbacks.forEach((callback) => callback(entry));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
observe(target: Element, callback: ClientRectObserverEntryCallback): void {
|
|
||||||
let callbacks = this.#elementMap.get(target);
|
|
||||||
|
|
||||||
if (callbacks === undefined) {
|
|
||||||
this.#vo.observe(target);
|
|
||||||
this.#elementMap.set(target, (callbacks = new Set()));
|
|
||||||
} else {
|
|
||||||
callback({ target, contentRect: target.getBoundingClientRect() });
|
|
||||||
}
|
|
||||||
|
|
||||||
callbacks.add(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
unobserve(target: Element, callback: ClientRectObserverEntryCallback): void {
|
|
||||||
let callbacks = this.#elementMap.get(target);
|
|
||||||
|
|
||||||
if (callbacks === undefined) return;
|
|
||||||
|
|
||||||
callbacks.delete(callback);
|
|
||||||
|
|
||||||
if (callbacks.size === 0) {
|
|
||||||
this.#vo.unobserve(target);
|
|
||||||
this.#elementMap.delete(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue