ResizeObserverSingleton Class — svelte Architecture
Architecture documentation for the ResizeObserverSingleton class in size.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 7aec7a59_607b_ef2d_909b_d619875d2f84["ResizeObserverSingleton"] fe1dcfc3_17ce_7457_26bc_48c27d79cefc["size.js"] 7aec7a59_607b_ef2d_909b_d619875d2f84 -->|defined in| fe1dcfc3_17ce_7457_26bc_48c27d79cefc 0b1314cf_3229_164f_0186_dda65b61acf8["constructor()"] 7aec7a59_607b_ef2d_909b_d619875d2f84 -->|method| 0b1314cf_3229_164f_0186_dda65b61acf8 d86d4126_6146_ecbe_15fd_fa3db2f84672["observe()"] 7aec7a59_607b_ef2d_909b_d619875d2f84 -->|method| d86d4126_6146_ecbe_15fd_fa3db2f84672 0a17ae89_497b_83d0_8655_a52c5775a66c["ResizeObserver()"] 7aec7a59_607b_ef2d_909b_d619875d2f84 -->|method| 0a17ae89_497b_83d0_8655_a52c5775a66c
Relationship Graph
Source Code
packages/svelte/src/internal/client/dom/elements/bindings/size.js lines 8–63
class ResizeObserverSingleton {
/** */
#listeners = new WeakMap();
/** @type {ResizeObserver | undefined} */
#observer;
/** @type {ResizeObserverOptions} */
#options;
/** @static */
static entries = new WeakMap();
/** @param {ResizeObserverOptions} options */
constructor(options) {
this.#options = options;
}
/**
* @param {Element} element
* @param {(entry: ResizeObserverEntry) => any} listener
*/
observe(element, listener) {
var listeners = this.#listeners.get(element) || new Set();
listeners.add(listener);
this.#listeners.set(element, listeners);
this.#getObserver().observe(element, this.#options);
return () => {
var listeners = this.#listeners.get(element);
listeners.delete(listener);
if (listeners.size === 0) {
this.#listeners.delete(element);
/** @type {ResizeObserver} */ (this.#observer).unobserve(element);
}
};
}
#getObserver() {
return (
this.#observer ??
(this.#observer = new ResizeObserver(
/** @param {any} entries */ (entries) => {
for (var entry of entries) {
ResizeObserverSingleton.entries.set(entry.target, entry);
for (var listener of this.#listeners.get(entry.target) || []) {
listener(entry);
}
}
}
))
);
}
}
Domain
Source
Frequently Asked Questions
What is the ResizeObserverSingleton class?
ResizeObserverSingleton is a class in the svelte codebase, defined in packages/svelte/src/internal/client/dom/elements/bindings/size.js.
Where is ResizeObserverSingleton defined?
ResizeObserverSingleton is defined in packages/svelte/src/internal/client/dom/elements/bindings/size.js at line 8.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free