hexo-theme-redefine
Version:
Redefine your writing with Hexo Theme Redefine.
2 lines • 2.13 kB
JavaScript
const t={isNavigating:!1,navbarHeight:0};let a=!1;const handleScroll=()=>{if(t.isNavigating)return;const a=(document.documentElement.scrollTop||document.body.scrollTop)>t.navbarHeight;document.body.classList.toggle("navbar-shrink",a)},handleSubmenuToggle=t=>{const a=t.target.closest("[navbar-data-toggle]");if(!a)return!1;const e=document.querySelector(`[data-target="${a.getAttribute("navbar-data-toggle")}"]`);if(!e)return!0;const n=e.children,r=a.querySelector(".fa-chevron-right"),s=!e.classList.contains("hidden");return r&&r.classList.toggle("icon-rotated",!s),"undefined"==typeof anime?(e.classList.toggle("hidden",s),!0):(s?anime({targets:n,opacity:0,translateY:-10,duration:300,easing:"easeInQuart",delay:anime.stagger(80,{start:20,direction:"reverse"}),complete:function(){e.classList.add("hidden")}}):(e.classList.remove("hidden"),anime({targets:n,opacity:[0,1],translateY:[10,0],duration:300,easing:"easeOutQuart",delay:anime.stagger(80,{start:20})})),!0)},handleDrawerClose=t=>!!t.target.closest(".navbar-container .navbar-content .logo-title")&&(document.body.classList.remove("navbar-drawer-show"),!0),handleDrawerToggle=t=>!!t.target.closest(".window-mask, .navbar-bar, .navbar-drawer .drawer-navbar-list .drawer-navbar-item, .navbar-drawer .tag-count-item")&&(document.body.classList.toggle("navbar-drawer-show"),!0),registerGlobalHandlers=t=>{a||(a=!0,t?(window.addEventListener("scroll",handleScroll,{signal:t}),document.addEventListener("click",(t=>{handleSubmenuToggle(t)||handleDrawerClose(t)||handleDrawerToggle(t)}),{signal:t})):(window.addEventListener("scroll",handleScroll),document.addEventListener("click",(t=>{handleSubmenuToggle(t)||handleDrawerClose(t)||handleDrawerToggle(t)}))))};export const navbarShrink={navbarDom:null,initGlobals({signal:t}={}){t?registerGlobalHandlers(t):registerGlobalHandlers()},refresh(){this.navbarDom=document.querySelector(".navbar-container"),this.navbarDom&&(t.navbarHeight=this.navbarDom.getBoundingClientRect().height,handleScroll())},setNavigating(a){t.isNavigating=a,a&&document.body.classList.remove("navbar-shrink")}};
//# sourceMappingURL=navbarShrink.js.map