37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
|
/**
|
||
|
* A tool for smooth scrolling and topbar switcher
|
||
|
*/
|
||
|
const ScrollHelper = (function () {
|
||
|
const $body = $("body");
|
||
|
const ATTR_TOPBAR_VISIBLE = "topbar-visible";
|
||
|
const topbarHeight = $("#topbar-wrapper").outerHeight();
|
||
|
|
||
|
let scrollUpCount = 0; // the number of times the scroll up was triggered by ToC or anchor
|
||
|
let topbarLocked = false;
|
||
|
let orientationLocked = false;
|
||
|
|
||
|
return {
|
||
|
hideTopbar: () => $body.attr(ATTR_TOPBAR_VISIBLE, false),
|
||
|
showTopbar: () => $body.attr(ATTR_TOPBAR_VISIBLE, true),
|
||
|
|
||
|
// scroll up
|
||
|
|
||
|
addScrollUpTask: () => {
|
||
|
scrollUpCount += 1;
|
||
|
if (!topbarLocked) { topbarLocked = true; }
|
||
|
},
|
||
|
popScrollUpTask: () => scrollUpCount -= 1,
|
||
|
hasScrollUpTask: () => scrollUpCount > 0,
|
||
|
topbarLocked: () => topbarLocked === true,
|
||
|
unlockTopbar: () => topbarLocked = false,
|
||
|
getTopbarHeight: () => topbarHeight,
|
||
|
|
||
|
// orientation change
|
||
|
|
||
|
orientationLocked: () => orientationLocked === true,
|
||
|
lockOrientation: () => orientationLocked = true,
|
||
|
unLockOrientation: () => orientationLocked = false
|
||
|
};
|
||
|
|
||
|
}());
|