shopperman
Version:
shopping cart ui for shopify stores
45 lines (34 loc) • 824 B
text/typescript
import {observable, action} from "mobx"
import {getScrollTop} from "../toolbox"
const scrollEvents = ["scroll", "resize"]
export class ScrollTracker {
scroll: number = 0
tracking: boolean = false
updateScroll() {
if (this.tracking) {
const scroll = getScrollTop()
this.setScroll(scroll)
}
}
setScroll(scroll: number) {
this.scroll = scroll
}
setTracking(tracking: boolean) {
this.tracking = tracking
this.updateScroll()
}
private handleScrollUpdate = () => {
this.updateScroll()
}
mount() {
for (const event of scrollEvents) {
window.addEventListener(event, this.handleScrollUpdate)
}
this.handleScrollUpdate()
}
unmount() {
for (const event of scrollEvents) {
window.removeEventListener(event, this.handleScrollUpdate)
}
}
}