Calculate percentage every update (as opposed to every page change)

This commit is contained in:
CloudHill 2020-10-20 22:56:19 +07:00
parent 980528699e
commit 1e4d0e077a

View File

@ -67,6 +67,8 @@ module.exports = {
}) })
let queue = []; let queue = [];
let scroller = document.querySelector('.notion-frame > .notion-scroller');
const observer = new MutationObserver((list, observer) => { const observer = new MutationObserver((list, observer) => {
if (!queue.length) requestAnimationFrame(() => process(queue)); if (!queue.length) requestAnimationFrame(() => process(queue));
queue.push(...list); queue.push(...list);
@ -77,6 +79,14 @@ module.exports = {
}); });
function process(list) { function process(list) {
queue = []; queue = [];
let top = scroller.topDistance = store().top;
if (top > 0 && store().percent) {
let pageContent = document.querySelector('.notion-page-content');
if (pageContent)
scroller.topDistance *= pageContent.offsetHeight / 100;
}
for (let { addedNodes } of list) { for (let { addedNodes } of list) {
if ( if (
addedNodes[0] && ( addedNodes[0] && (
@ -84,22 +94,16 @@ module.exports = {
addedNodes[0].className === 'notion-scroller' addedNodes[0].className === 'notion-scroller'
) )
) { ) {
let top = store().top;
if (top> 0) { if (top> 0) {
scroll.classList.add('hidden'); scroll.classList.add('hidden');
if (store().percent) {
top *= document.querySelector('.notion-page-content').offsetHeight / 100;
}
document scroller = document.querySelector('.notion-frame > .notion-scroller');
.querySelector('.notion-frame > .notion-scroller') scroller.addEventListener('scroll', (event) => {
.addEventListener('scroll', (event) => { if (event.target.scrollTop < scroller.topDistance)
if (event.target.scrollTop < top) scroll.classList.add('hidden');
scroll.classList.add('hidden'); else
else scroll.classList.remove('hidden');
scroll.classList.remove('hidden'); })
})
} }
} }
} }