MCPcopy Create free account
hub / github.com/bvaughn/react-window / MockResizeObserver

Class MockResizeObserver

lib/utils/test/mockResizeObserver.ts:73–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73class MockResizeObserver implements ResizeObserver {
74 readonly #callback: ResizeObserverCallback;
75 #disconnected: boolean = false;
76 #elements: Set<HTMLElement> = new Set();
77
78 constructor(callback: ResizeObserverCallback) {
79 this.#callback = callback;
80
81 emitter.addListener("change", this.#onChange);
82 }
83
84 observe(element: HTMLElement) {
85 if (this.#disconnected) {
86 return;
87 }
88
89 this.#elements.add(element);
90 this.#notify([element]);
91 }
92
93 unobserve(element: HTMLElement) {
94 this.#elements.delete(element);
95 }
96
97 disconnect() {
98 this.#disconnected = true;
99 this.#elements.clear();
100
101 emitter.removeListener("change", this.#onChange);
102 }
103
104 #notify(elements: HTMLElement[]) {
105 if (disabled) {
106 return;
107 }
108
109 const entries = elements.map((element) => {
110 const computedStyle = window.getComputedStyle(element);
111 const writingMode = computedStyle.writingMode;
112
113 let contentRect: DOMRectReadOnly =
114 elementToDOMRect.get(element) ?? defaultDomRect;
115
116 if (getDOMRect) {
117 const contentRectOverride = getDOMRect(element);
118 if (contentRectOverride) {
119 contentRect = contentRectOverride;
120 }
121 }
122
123 let blockSize = 0;
124 let inlineSize = 0;
125 if (writingMode.includes("vertical")) {
126 blockSize = contentRect.width;
127 inlineSize = contentRect.height;
128 } else {
129 blockSize = contentRect.height;
130 inlineSize = contentRect.width;

Callers

nothing calls this directly

Calls 1

#notifyMethod · 0.95

Tested by

no test coverage detected