PageSourceSearch

https://erotik.com/blog/wp-content/cache/min/1/blog/wp-content/plu…/header-builder.js?ver=1790807509

js erotik.com collected 2026-10-02 14:44:52 UTC 4,159 bytes, 30 lines download raw bytes

1(function(){class BreakdanceHeaderBuilder{element=null;stickyScrollHideAfter=!1;stickyHideUntilScrollDistance=!1;stickyRevealOnScrollUp=!1;isBuilder=!1;lastScroll=0;timeout=null;initialHiddenClass="bde-header-builder--sticky-scroll-start-off-hidden";hiddenClass="bde-header-builder--sticky-scroll-hide";stylesClass="bde-header-builder--sticky-styles";constructor(selector,id,isBuilder){this.handleScroll=this.handleScroll.bind(this);this.isBuilder=isBuilder;this.element=document.querySelector(selector);this.stickyScrollHideAfter=this.getProp("stickyScrollHideAfter");this.stickyHideUntilScrollDistance=this.getProp("stickyHideUntilScrollDistance");this.stickyRevealOnScrollUp=this.getBooleanProp("stickyRevealOnScrollUp");this.handleScroll();this.setupListeners();this.createMarkers()}
2refresh(){this.handleSticky()}
3destroy(){this.unbindListeners();document.querySelectorAll(".bde-header-builder-marker").forEach((marker)=>marker.remove())}
4getProp(key){return parseInt(this.element.dataset[key])||!1}
5getBooleanProp(key){return!!this.element.dataset[key]}
6setupListeners(){if(!this.isSticky()){this.clearStickyStyles();return}
7window.addEventListener("scroll",this.handleScroll,{passive:!0})}
8unbindListeners(){window.removeEventListener("scroll",this.handleScroll)}
9clearStickyStyles(){this.removeClass(this.initialHiddenClass);this.removeClass(this.hiddenClass);this.removeClass("bde-header-builder--sticky-styles");this.removeClass("is-animating");this.removeClass("is-before")}
10addClass(x){this.element.classList.add(x)}
11hasClass(x){return this.element.classList.contains(x)}
12removeClass(x){this.element.classList.remove(x)}
13isSticky(){return this.hasClass("bde-header-builder--sticky")}
14isHidden(){return this.hasClass(this.hiddenClass)}
15shouldHide(scrollTop){const hideAfterDistance=this.stickyScrollHideAfter!=!1&&scrollTop>this.stickyScrollHideAfter;const hideUntilDistance=this.stickyHideUntilScrollDistance!=!1&&scrollTop<this.stickyHideUntilScrollDistance;return hideAfterDistance||hideUntilDistance}
16shouldShowAfterACertainDistance(scrollTop){return(this.stickyHideUntilScrollDistance!=!1&&scrollTop>this.stickyHideUntilScrollDistance)}
17shouldShowOnScrollUp(scrollTop){if(!this.stickyRevealOnScrollUp){return!1}
18if(this.stickyHideUntilScrollDistance>scrollTop)return!1;return scrollTop<this.lastScroll}
19handleScroll(){this.removeClass(this.initialHiddenClass);this.handleSticky();this.handleBuilderBehaviorOnScroll()}
20handleSticky(){const scrollTop=document.documentElement.scrollTop;if(scrollTop>0){this.addClass(this.stylesClass)}else if(this.stickyHideUntilScrollDistance==!1){this.removeClass(this.stylesClass)}
21if(this.shouldShowAfterACertainDistance(scrollTop)){this.removeClass(this.hiddenClass)}
22if(this.shouldHide(scrollTop)){this.addClass(this.hiddenClass)}else if(this.isHidden()){this.removeClass(this.hiddenClass)}
23if(this.shouldShowOnScrollUp(scrollTop)){this.removeClass(this.hiddenClass)}
24this.lastScroll=scrollTop}
25handleBuilderBehaviorOnScroll(){const scrollTop=document.documentElement.scrollTop;if(!this.isBuilder)return;if(this.shouldHide(scrollTop)){this.addClass("is-before");this.removeClass("is-animating")}else{this.addClass("is-animating");this.removeClass("is-before")}
26window.clearTimeout(this.timeout);this.timeout=setTimeout(()=>{this.removeClass("is-animating")},200)}
27createMarkers(){if(!this.isBuilder)return;if(this.stickyScrollHideAfter&&this.stickyHideUntilScrollDistance&&this.stickyScrollHideAfter<this.stickyHideUntilScrollDistance){this.createMarker(this.stickyScrollHideAfter,`Error: 'Hide' must be higher than 'Show'`)}else if(this.stickyScrollHideAfter){this.createMarker(this.stickyScrollHideAfter,`Hide (${this.stickyScrollHideAfter}px)`)}
28if(this.stickyHideUntilScrollDistance){this.createMarker(this.stickyHideUntilScrollDistance,`Show (${this.stickyHideUntilScrollDistance}px)`)}}
29createMarker(position,text){const marker=document.createElement("span");marker.style.top=`${position}px`;marker.classList.add("bde-header-builder-marker");const textNode=document.createTextNode(text);marker.append(textNode);document.body.append(marker)}}
30window.BreakdanceHeaderBuilder=BreakdanceHeaderBuilder})()

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.