Skip to content

Commit 4ec3832

Browse files
committed
NodeList.forEach is no longer polyfilled
1 parent ee13692 commit 4ec3832

File tree

3 files changed

+25
-26
lines changed

3 files changed

+25
-26
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
77

88
## [Unreleased]
99

10+
### Fixed
11+
12+
* `container-query`
13+
* `Node.forEach` is no longer globally polyfilled. (using a simple for loop
14+
instead internally)
15+
1016
## [2.3.0]
1117

1218
### Fixed

packages/container-query/src/Container.js

+19-17
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,21 @@ import ResizeObserver from "resize-observer-polyfill";
66
import MutationObserver from "mutation-observer";
77
import raf from "raf";
88
import containerRegistry from "./containerRegistry";
9-
import type { ContainerSize, QueryStats } from "../flow/types";
10-
import "./NodeList.forEach.polyfill"; // Issue#72
9+
import type { ContainerSize, QueryStats, RegistryData } from "../flow/types";
1110

1211
const resizeObserver: ResizeObserver = new ResizeObserver(entries => {
1312
if (!Array.isArray(entries)) {
1413
return;
1514
}
1615

1716
entries.forEach(entry => {
18-
const container = containerRegistry.get(entry.target);
17+
const data: RegistryData = containerRegistry.get(entry.target);
1918

2019
if (
21-
typeof container === "undefined" ||
22-
typeof container !== "object" ||
23-
typeof container.instance !== "object" ||
24-
typeof container.instance.adjust !== "function"
20+
typeof data === "undefined" ||
21+
typeof data !== "object" ||
22+
typeof data.instance !== "object" ||
23+
typeof data.instance.adjust !== "function"
2524
) {
2625
console.warn(
2726
"Could not find Container instance for element:",
@@ -30,24 +29,27 @@ const resizeObserver: ResizeObserver = new ResizeObserver(entries => {
3029
return;
3130
}
3231

33-
container.instance.adjust({
32+
const container: Container = data.instance;
33+
34+
container.adjust({
3435
width: entry.contentRect.width,
3536
height: entry.contentRect.height
3637
});
3738
});
3839
});
3940

40-
const mutationObserver = new MutationObserver(mutationsRecords => {
41-
mutationsRecords.forEach(mutationsRecord => {
41+
const mutationObserver = new MutationObserver(mutationRecords => {
42+
mutationRecords.forEach(mutationRecord => {
4243
// Remove container element from registry and unobserve resize changes
43-
mutationsRecord.removedNodes.forEach(node => {
44-
if (containerRegistry.has(node) === false) {
45-
return;
46-
}
44+
const removedNodesLength = mutationRecord.removedNodes.length;
45+
for (let i = 0; i < removedNodesLength; i++) {
46+
const node: Node = mutationRecord.removedNodes[i];
4747

48-
resizeObserver.unobserve(node);
49-
containerRegistry.delete(node);
50-
});
48+
if (containerRegistry.has(node)) {
49+
resizeObserver.unobserve(node);
50+
containerRegistry.delete(node);
51+
}
52+
}
5153
});
5254
});
5355

packages/container-query/src/NodeList.forEach.polyfill.js

-9
This file was deleted.

0 commit comments

Comments
 (0)