@@ -10,11 +10,13 @@ const Observer = {
10
10
} ,
11
11
12
12
restart ( ) {
13
- this . observe ( true )
13
+ this . _observers . forEach ( observer => observer . disconnect ( ) )
14
+ this . _observers = [ ]
15
+
14
16
this . observe ( )
15
17
} ,
16
18
17
- observe ( unobserve = false ) {
19
+ observe ( ) {
18
20
const selectors = [
19
21
'[class*=" intersect:"]' ,
20
22
'[class*=":intersect:"]' ,
@@ -28,12 +30,6 @@ const Observer = {
28
30
document . querySelectorAll ( selectors . join ( ',' ) ) . forEach ( element => {
29
31
const observer = new IntersectionObserver ( entries => {
30
32
entries . forEach ( entry => {
31
-
32
- if ( unobserve ) {
33
- observer . disconnect ( )
34
- return
35
- }
36
-
37
33
if ( ! entry . isIntersecting ) {
38
34
element . setAttribute ( 'no-intersect' , '' )
39
35
@@ -45,14 +41,16 @@ const Observer = {
45
41
element . classList . contains ( 'intersect-once' ) && observer . disconnect ( )
46
42
} )
47
43
} , {
48
- threshold : this . getThreshold ( element ) ,
44
+ threshold : this . _getThreshold ( element ) ,
49
45
} )
50
46
51
47
observer . observe ( element )
48
+
49
+ this . _observers . push ( observer )
52
50
} )
53
51
} ,
54
52
55
- getThreshold ( element ) {
53
+ _getThreshold ( element ) {
56
54
if ( element . classList . contains ( 'intersect-full' ) ) {
57
55
return 0.99
58
56
}
@@ -63,6 +61,8 @@ const Observer = {
63
61
64
62
return 0
65
63
} ,
64
+
65
+ _observers : [ ] ,
66
66
}
67
67
68
68
export default Observer
0 commit comments