PageSourceSearch

https://parimalanath-bean-lab-qa.hf.space/assets/size-CuuZBRle.js

js parimalanath-bean-lab-qa.hf.space collected 2026-10-03 17:13:05 UTC 2,656 bytes, 103 lines download raw bytes

1import { A as effect, B as teardown, z as untrack } from './index-CDZuCcOm.js';
2
3/**
4 * Resize observer singleton.
5 * One listener per element only!
6 * https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ
7 */
8class ResizeObserverSingleton {
9	/** */
10	#listeners = new WeakMap();
11
12	/** @type {ResizeObserver | undefined} */
13	#observer;
14
15	/** @type {ResizeObserverOptions} */
16	#options;
17
18	/** @static */
19	static entries = new WeakMap();
20
21	/** @param {ResizeObserverOptions} options */
22	constructor(options) {
23		this.#options = options;
24	}
25
26	/**
27	 * @param {Element} element
28	 * @param {(entry: ResizeObserverEntry) => any} listener
29	 */
30	observe(element, listener) {
31		var listeners = this.#listeners.get(element) || new Set();
32		listeners.add(listener);
33
34		this.#listeners.set(element, listeners);
35		this.#getObserver().observe(element, this.#options);
36
37		return () => {
38			var listeners = this.#listeners.get(element);
39			listeners.delete(listener);
40
41			if (listeners.size === 0) {
42				this.#listeners.delete(element);
43				/** @type {ResizeObserver} */ (this.#observer).unobserve(element);
44			}
45		};
46	}
47
48	#getObserver() {
49		return (
50			this.#observer ??
51			(this.#observer = new ResizeObserver(
52				/** @param {any} entries */ (entries) => {
53					for (var entry of entries) {
54						ResizeObserverSingleton.entries.set(entry.target, entry);
55						for (var listener of this.#listeners.get(entry.target) || []) {
56							listener(entry);
57						}
58					}
59				}
60			))
61		);
62	}
63}
64
65var resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({
66	box: 'content-box'
67});
68
69var resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({
70	box: 'border-box'
71});
72
73/**
74 * @param {Element} element
75 * @param {'contentRect' | 'contentBoxSize' | 'borderBoxSize' | 'devicePixelContentBoxSize'} type
76 * @param {(entry: keyof ResizeObserverEntry) => void} set
77 */
78function bind_resize_observer(element, type, set) {
79	var observer =
80		resize_observer_content_box
81			;
82
83	var unsub = observer.observe(element, /** @param {any} entry */ (entry) => set(entry[type]));
84	teardown(unsub);
85}
86
87/**
88 * @param {HTMLElement} element
89 * @param {'clientWidth' | 'clientHeight' | 'offsetWidth' | 'offsetHeight'} type
90 * @param {(size: number) => void} set
91 */
92function bind_element_size(element, type, set) {
93	var unsub = resize_observer_border_box.observe(element, () => set(element[type]));
94
95	effect(() => {
96		// The update could contain reads which should be ignored
97		untrack(() => set(element[type]));
98		return unsub;
99	});
100}
101
102export { bind_resize_observer as a, bind_element_size as b };
103//# sourceMappingURL=size-CuuZBRle.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.