remove clientRectManager

This commit is contained in:
“chrisshank” 2024-12-19 00:08:55 -08:00
parent e079a7a866
commit c556153fab
1 changed files with 0 additions and 52 deletions

View File

@ -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);
}
}
}