Files
acrib.es/wp-content/plugins/kadence-blocks/includes/assets/js/kb-header-block.min.js

1 line
13 KiB
JavaScript
Raw Normal View History

class KBHeader{components={};_state;root;rootID;autoTransparentSpacing;sticky;stickyTablet;stickyMobile;transparent;transparentTablet;transparentMobile;stickySection;stickySectionTablet;stickySectionMobile;activeSize="mobile";lastScrollTop=0;activeOffsetTop=0;shrinkMain=!1;shrinkMainHeight=0;shrinkMainHeightTablet=0;shrinkMainHeightMobile=0;shrinkStartHeight=0;mobileBreakpoint=0;currentTopPosition=0;anchorOffset=0;_heightObserver=null;placeholderWrapper;stickyWrapper;isSticking=!1;isTransparent=!1;activeHeaderContainer;constructor(a,b={}){this.root="string"==typeof a?document.querySelector(a):a,this.activeHeaderContainer=this.root.querySelector(".wp-block-kadence-header-desktop"),this.rootID="aaa",this.autoTransparentSpacing="1"===this.root.dataset?.autoTransparentSpacing,this.sticky="1"==this.root.dataset?.sticky,this.stickyTablet="1"==this.root.dataset?.stickyTablet,this.stickyMobile="1"==this.root.dataset?.stickyMobile,this.transparent="1"==this.root.dataset?.transparent,this.transparentTablet="1"==this.root.dataset?.transparentTablet,this.transparentMobile="1"==this.root.dataset?.transparentMobile,this.stickySection=this.root.dataset?.stickySection,this.stickySectionTablet=this.root.dataset?.stickySectionTablet,this.stickySectionMobile=this.root.dataset?.stickySectionMobile,this.shrinkMain="1"===this.root.dataset?.shrinkMain,this.shrinkMainHeight=this.root.dataset?.shrinkMainHeight,this.shrinkMainHeightTablet=this.root.dataset?.shrinkMainHeightTablet,this.shrinkMainHeightMobile=this.root.dataset?.shrinkMainHeightMobile,this.revealScrollUp="1"===this.root.dataset?.revealScrollUp,this.mobileBreakpoint=this.root.dataset?.mobileBreakpoint,this._state="CREATED",this.transparent&&this.autoTransparentSpacing&&this.initAutoTransparentSpacing(),(this.sticky||this.stickyTablet||this.stickyMobile)&&this.initStickyHeader(),this.mobileBreakpoint&&0!==this.mobileBreakpoint&&this.initMobileBreakpoint(),this.initHeaderHeightExports();var c=new Event("MOUNTED",{bubbles:!0});c.ID=this.rootID,this.root.dispatchEvent(c),this._state="IDLE"}updateHeaderHeightExports(){if(this.activeHeaderContainer){const a=this.getHeight();document.documentElement.style.setProperty("--kb-header-height",a+"px"),window.kbHeaderHeight=a}}initHeaderHeightExports(){const a=this;this.updateHeaderHeightExports(),this._heightObserver=new ResizeObserver(function(){a.updateHeaderHeightExports()}),this._heightObserver.observe(this.root)}initAutoTransparentSpacing(){this.setAutoTransparentSpacing()}setAutoTransparentSpacing(){const a=this.root.nextElementSibling;a.style.paddingTop="var(--kb-header-height)"}getHeight(){return this.activeHeaderContainer.clientHeight}initMobileBreakpoint(){this.mobileBreakpoint&&0!==this.mobileBreakpoint&&(window.addEventListener("resize",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("hashchange",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("scroll",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("load",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("orientationchange",this.updateMobileBreakpoint.bind(this)))}updateMobileBreakpoint(){this.setActiveSize(),"desktop"==this.activeSize?(this.root.querySelector(".wp-block-kadence-header-tablet").style.display="none",this.root.querySelector(".wp-block-kadence-header-desktop").style.display="block"):(this.root.querySelector(".wp-block-kadence-header-desktop").style.display="none",this.root.querySelector(".wp-block-kadence-header-tablet").style.display="block"),this.updateHeaderHeightExports()}initStickyHeader(){this.sticky&&this.createAndSetPlaceholderAndStickyWrappers("desktop"),(this.stickyTablet||this.stickyMobile)&&this.createAndSetPlaceholderAndStickyWrappers("tablet"),this.placeholderWrapper&&this.stickyWrapper&&(this.setActiveSize(),this.updatePlaceholderAndStickyWrappers(),"desktop"==this.activeSize?this.sticky&&(this.activeOffsetTop=this.getOffset(this.placeholderWrapper).top):"tablet"==this.activeSize?this.stickyTablet&&(this.activeOffsetTop=this.getOffset(this.placeholderWrapper).top):this.stickyMobile