PageSourceSearch

https://hashai.co.uk/wp-content/plugins/nextbricks/elements/js/bc_letter_launcher.min.js?ver=2.2.7

js hashai.co.uk collected 2026-09-29 11:50:37 UTC 2,983 bytes, 8 lines download raw bytes

1function letter_launcher(){let t={};var e=window.location.href.includes("brickspreview");document.querySelectorAll(".bc-letter-launcher__inner").forEach((r,a)=>{r.classList.remove("bc-letter-launcher__inner--to-hide");var i=r.getAttribute("data-disable-builder"),n=!1;if((e&&"1"==i&&(n=!0),!n)){let o=new SplitText(r,{type:"words, chars",wordsClass:"word",charsClass:"char"}).chars,c=r.getAttribute("data-duration"),l=r.getAttribute("data-staggervar"),u=r.getAttribute("data-delayvar"),s=r.getAttribute("data-start"),g=r.getAttribute("data-letterrotation"),d=r.getAttribute("data-letteraltitude"),b=r.getAttribute("data-end"),f=r.getAttribute("data-trigger");(animationType=r.getAttribute("data-animationtype")),(classTriggerClick=r.getAttribute("data-classtriggerclick")),(classTriggerHover=r.getAttribute("data-classtriggerhover")),(toggleact=r.getAttribute("data-toggleActions")),"this"==f&&(f=r),(varscrub="true"==(varscrub=r.getAttribute("data-scrub"))||("false"!=varscrub&&parseFloat(varscrub)));var varContainerAnimation=isInsideHorizontalScrollElement(r);t[`g${a}`]=gsap.timeline({scrollTrigger:{trigger:f,containerAnimation:varContainerAnimation?window[varContainerAnimation]:undefined,start:s,end:b,scrub:varscrub,toggleActions:toggleact}}).fromTo(o,{y:parseFloat(d),rotation:parseFloat(g),opacity:0},{delay:u,y:0,rotation:0,opacity:1,stagger:l,duration:c});if(r.getAttribute("data-remove-scroll")=="1"){t[`g${a}`].progress(1)}
2var A=r.closest(".bc-core-menu");if(A&&A.contains(r)){var v=A.querySelector(".bc-core-burguer").querySelector("button");t[`g${a}`].kill(),new MutationObserver(function(t){for(var e of t)"attributes"===e.type&&("true"===v.getAttribute("aria-expanded")?y():h())}).observe(v,{attributes:!0})}
3function y(){t[`g${a}`].isActive()?t[`g${a}`].play():t[`g${a}`].restart()}
4function h(){gsap.delayedCall(u,()=>t[`g${a}`].restart())}
5function toggleAnimation(){t[`g${a}`].restart()}
6"Click"==animationType&&0!=parseFloat(classTriggerClick)&&document.querySelectorAll(classTriggerClick).forEach(function(e){e.addEventListener("click",function(){toggleAnimation()})}),"Hover"==animationType&&0!=parseFloat(classTriggerHover)&&document.querySelectorAll(classTriggerHover).forEach(function(e){e.addEventListener("mouseenter",function(){toggleAnimation()})})}})}
7function isInsideHorizontalScrollElement(element){let containerName=null;document.querySelectorAll(".next-horizontal-scroll").forEach((horizontalScroll,index)=>{if(horizontalScroll.contains(element)){containerName=`NextHorizontalScroll${index}`}});return containerName}
8document.addEventListener("DOMContentLoaded",function(t){if(!document.querySelector(".nb-site-loader")){document.fonts.ready.then(function(){bricksIsFrontend&&letter_launcher()})}else{document.querySelectorAll(".bc-letter-launcher__inner").forEach((r)=>{if(r.getAttribute("data-remove-scroll")=="1"||isInsideHorizontalScrollElement(r)||r.closest(".bc-core-menu")){r.classList.remove("bc-letter-launcher__inner--to-hide")}})}})

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.