Skip to content

Commit e479220

Browse files
author
Chance Strickland
committed
Merge branch 'BenoitZugmeyer-sync-update'
2 parents 261fa2e + db09d4c commit e479220

1 file changed

Lines changed: 14 additions & 15 deletions

File tree

src/index.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,26 @@ let observedNodes = new Map<HTMLElement, RectProps>();
1414
let rafId: number;
1515

1616
let run = () => {
17-
observedNodes.forEach(state => {
18-
if (state.hasRectChanged) {
19-
state.callbacks.forEach(cb => cb(state.rect));
20-
state.hasRectChanged = false;
17+
const changedStates: RectProps[] = [];
18+
observedNodes.forEach((state, node) => {
19+
let newRect = node.getBoundingClientRect();
20+
if (rectChanged(newRect, state.rect)) {
21+
state.rect = newRect;
22+
changedStates.push(state);
2123
}
2224
});
2325

24-
window.setTimeout(() => {
25-
observedNodes.forEach((state, node) => {
26-
let newRect = node.getBoundingClientRect();
27-
if (rectChanged(newRect, state.rect)) {
28-
state.hasRectChanged = true;
29-
state.rect = newRect;
30-
}
31-
});
32-
}, 0);
26+
changedStates.forEach(state => {
27+
state.callbacks.forEach(cb => cb(state.rect));
28+
});
3329

3430
rafId = window.requestAnimationFrame(run);
3531
};
3632

37-
export default (node: HTMLElement, cb: Function) => {
33+
export default function observeRect(
34+
node: HTMLElement,
35+
cb: (rect: DOMRect) => void
36+
) {
3837
return {
3938
observe() {
4039
let wasEmpty = observedNodes.size === 0;
@@ -65,7 +64,7 @@ export default (node: HTMLElement, cb: Function) => {
6564
}
6665
}
6766
};
68-
};
67+
}
6968

7069
export type PartialRect = Partial<DOMRect>;
7170

0 commit comments

Comments
 (0)