alrdy-animate
Version:
A library to handle animations on scroll with GSAP integration.
1 lines • 2.19 kB
JavaScript
;(this.webpackChunkAlrdyAnimate=this.webpackChunkAlrdyAnimate||[]).push([[890],{690(e,t,i){function o(e,t){return{parallax:(t,i,o)=>{!function(e,t,i,o,l){const n=e.querySelector("[aa-parallax-target]")||e,a=l&&l.includes("horizontal")?"xPercent":"yPercent",r=!o||parseFloat(o),c=e.getAttribute("aa-parallax-start"),s=null!==c?parseFloat(c):10,p=e.getAttribute("aa-parallax-end"),d=null!==p?parseFloat(p):-10,u=`clamp(${e.getAttribute("aa-scroll-start")||"top bottom"})`,m=`clamp(${e.getAttribute("aa-scroll-end")||"bottom top"})`;t.fromTo(n,{[a]:s},{[a]:d,ease:"none",scrollTrigger:{trigger:e,start:u,end:m,scrub:r}})}(t,e,0,i,o)},glide:(i,o,l,n)=>{!function(e,t,i,o,l,n=!1){if(window.innerWidth<1080)return void(n&&console.log("Glide animation disabled on mobile for better performance"));const a=o||.9;let r=.1*window.innerHeight;const c={previousScroll:window.pageYOffset||document.documentElement.scrollTop,displacement:0,acceleration:0,velocityMultiplier:1,previousVelocitySign:0,isActive:!1};e._glideState=c;const s=()=>{if(!c.isActive)return;const i=window.pageYOffset||document.documentElement.scrollTop,o=i-c.previousScroll;c.previousScroll=i;const n=-.01*o,s=Math.sign(n);0!==s&&0!==c.previousVelocitySign&&s!==c.previousVelocitySign?c.velocityMultiplier=1.5:c.velocityMultiplier=Math.max(1,.95*c.velocityMultiplier),c.previousVelocitySign=s;const p=n*c.velocityMultiplier;c.acceleration=Math.min(1,c.acceleration+.1*Math.abs(p)),c.displacement+=p*c.acceleration,c.displacement*=a,c.displacement=Math.max(-3,Math.min(3,c.displacement)),Math.abs(c.displacement)<.01&&(c.displacement=0);const d=c.displacement*r*l;t.set(e,{y:d})};t.ticker.add(s);const p=i.create({trigger:e,start:"top bottom+=10%",end:"bottom top-=10%",onToggle:i=>{c.isActive=i.isActive,i.isActive?c.previousScroll=window.pageYOffset||document.documentElement.scrollTop:t.to(e,{y:0,duration:.6,ease:"power2.out",onComplete:()=>{c.acceleration=0,c.displacement=0}})},markers:n}),d=()=>{r=.1*window.innerHeight};window.addEventListener("resize",d),e._glideCleanup=()=>{t.ticker.remove(s),window.removeEventListener("resize",d),p&&p.kill()}}(i,e,t,o,l,n)}}}i.r(t),i.d(t,{createParallaxAnimations:()=>o})}}]);