UNPKG

scroll-tracking-walkeros

Version:

Custom scroll tracking used as an additional source for WalkerOS.

35 lines (34 loc) 1.14 kB
// src/functions.ts var scrollMaximum = 0; var prevScrollPercent = null; function scrollReport() { const article = document.querySelector("#articlebody") || document.body; const articleLength = article.offsetHeight; const scrollDepth = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop; let scrollPercent = Math.round(scrollDepth / articleLength * 100) / 100; if (scrollPercent < 1) { scrollMaximum = scrollPercent > scrollMaximum ? scrollPercent : scrollMaximum; } else { scrollMaximum = 1; } return { scrollPercent, scrollMaximum }; } function initScrollTracking(callback) { function handleScroll() { const { scrollPercent, scrollMaximum: scrollMaximum2 } = scrollReport(); if (scrollPercent !== prevScrollPercent) { callback({ scrollPercent, scrollMaximum: scrollMaximum2, previousPercent: prevScrollPercent }); prevScrollPercent = scrollPercent; } } window.addEventListener("scroll", handleScroll); return () => window.removeEventListener("scroll", handleScroll); } export { initScrollTracking, scrollReport };