@@ -6,22 +6,21 @@ import ResizeObserver from "resize-observer-polyfill";
6
6
import MutationObserver from "mutation-observer" ;
7
7
import raf from "raf" ;
8
8
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" ;
11
10
12
11
const resizeObserver : ResizeObserver = new ResizeObserver ( entries => {
13
12
if ( ! Array . isArray ( entries ) ) {
14
13
return ;
15
14
}
16
15
17
16
entries . forEach ( entry => {
18
- const container = containerRegistry . get ( entry . target ) ;
17
+ const data : RegistryData = containerRegistry . get ( entry . target ) ;
19
18
20
19
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"
25
24
) {
26
25
console . warn (
27
26
"Could not find Container instance for element:" ,
@@ -30,24 +29,27 @@ const resizeObserver: ResizeObserver = new ResizeObserver(entries => {
30
29
return ;
31
30
}
32
31
33
- container . instance . adjust ( {
32
+ const container : Container = data . instance ;
33
+
34
+ container . adjust ( {
34
35
width : entry . contentRect . width ,
35
36
height : entry . contentRect . height
36
37
} ) ;
37
38
} ) ;
38
39
} ) ;
39
40
40
- const mutationObserver = new MutationObserver ( mutationsRecords => {
41
- mutationsRecords . forEach ( mutationsRecord => {
41
+ const mutationObserver = new MutationObserver ( mutationRecords => {
42
+ mutationRecords . forEach ( mutationRecord => {
42
43
// 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 ] ;
47
47
48
- resizeObserver . unobserve ( node ) ;
49
- containerRegistry . delete ( node ) ;
50
- } ) ;
48
+ if ( containerRegistry . has ( node ) ) {
49
+ resizeObserver . unobserve ( node ) ;
50
+ containerRegistry . delete ( node ) ;
51
+ }
52
+ }
51
53
} ) ;
52
54
} ) ;
53
55
0 commit comments