Skip to content

Commit 233d026

Browse files
committed
small adjustments for observer restart
1 parent ef169b5 commit 233d026

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/index.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ declare const Observer: {
66
start(): void,
77
restart(): void,
88
observe(): void,
9-
getThreshold(element: HTMLElement): number,
9+
_getThreshold(element: HTMLElement): number,
10+
_observers: IntersectionObserver[],
1011
}
1112

1213
export default intersect

src/observer/index.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ const Observer = {
1010
},
1111

1212
restart() {
13-
this.observe(true)
13+
this._observers.forEach(observer => observer.disconnect())
14+
this._observers = []
15+
1416
this.observe()
1517
},
1618

17-
observe(unobserve = false) {
19+
observe() {
1820
const selectors = [
1921
'[class*=" intersect:"]',
2022
'[class*=":intersect:"]',
@@ -28,12 +30,6 @@ const Observer = {
2830
document.querySelectorAll(selectors.join(',')).forEach(element => {
2931
const observer = new IntersectionObserver(entries => {
3032
entries.forEach(entry => {
31-
32-
if(unobserve) {
33-
observer.disconnect()
34-
return
35-
}
36-
3733
if (! entry.isIntersecting) {
3834
element.setAttribute('no-intersect', '')
3935

@@ -45,14 +41,16 @@ const Observer = {
4541
element.classList.contains('intersect-once') && observer.disconnect()
4642
})
4743
}, {
48-
threshold: this.getThreshold(element),
44+
threshold: this._getThreshold(element),
4945
})
5046

5147
observer.observe(element)
48+
49+
this._observers.push(observer)
5250
})
5351
},
5452

55-
getThreshold(element) {
53+
_getThreshold(element) {
5654
if (element.classList.contains('intersect-full')) {
5755
return 0.99
5856
}
@@ -63,6 +61,8 @@ const Observer = {
6361

6462
return 0
6563
},
64+
65+
_observers: [],
6666
}
6767

6868
export default Observer

0 commit comments

Comments
 (0)