UNPKG

scrollmoo

Version:

ScrollMoo is a pure JavaScript-based tool that lets you create high-performance, keyframed scroll animations.

15 lines (13 loc) 36 kB
/** * ScrollMoo v1.1.0 * Copyright (c) 2025 Marci Czebe * Released under the MIT license * https://scrollmoo.com/license * * Optimized Easing Functions by Michael "Code Poet" Pohoreski, aka Michaelangel007 * https://github.com/Michaelangel007/easing * * Easing equations based on Robert Penner's work * Reference: http://www.robertpenner.com/easing */ function e(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,r);if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function r(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,a)}return t}function t(t){for(var a=1;a<arguments.length;a++){var n=null!=arguments[a]?arguments[a]:{};a%2?r(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var a,n,i,o,s,l,u,p,f,m,g,h="undefined"!=typeof window?window:null,c=!1,d=null,v=/^--scrollmoo-.+/,y=0,k=0,b=[],w=0,x=0,E=[],M=!1,S=[],P={},O=["indicator","trigger"],F=["transform","filter","backdropFilter"],L=["transform","filter","backdrop-filter"],j=["width","height"],T=["width","height","color","background-color","opacity"],N=["ease","markers","render3D"],C=null,I=null,q=!1,D=0,V=0,z=null,R=["onEnter","onEnterReverse","onLeave","onLeaveReverse","onProgress","onAnimationComplete"],A=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],X=e=>Math.round(1e4*e)/1e4,Y=1.70158,Z=1.525*Y,Q=Y+1,B={},$={sync:.35,duration:!1,ease:"none",markers:!1,markerId:"",triggerStartElement:"",triggerEndElement:"",triggerStart:0,triggerEnd:0,indicatorStart:0,indicatorEnd:0,render3D:!1,keyframes:B,onEnter:B,onEnterReverse:B,onLeave:B,onLeaveReverse:B,onProgress:B,onAnimationComplete:B},H=e=>h.getComputedStyle(e),K=h.screen.width,U=h.screen.height,W=Math.sqrt(K*K+U*U)/h.devicePixelRatio/96,G=Math.sqrt(K*K+U*U)/W,J=()=>{o=l=h.innerWidth,s=u=h.innerHeight},_=e=>{var r=7.5625,t=2.75;return e<1/t?r*e*e:e<2/t?r*(e-=1.5/t)*e+.75:e<2.5/t?r*(e-=2.25/t)*e+.9375:r*(e-=2.625/t)*e+.984375},ee={none:e=>e*(2-e),linear:e=>e,inQuad:e=>e*e,outQuad:e=>e*(2-e),inOutQuad:e=>(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1),inCubic:e=>e*e*e,outCubic:e=>--e*e*e+1,inOutCubic:e=>(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2),inQuart:e=>e*e*e*e,outQuart:e=>1- --e*e*e*e,inOutQuart:e=>(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),inQuint:e=>e*e*e*e*e,outQuint:e=>--e*e*e*e*e+1,inOutQuint:e=>(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),inSine:e=>1-Math.cos(e*Math.PI*.5),outSine:e=>Math.sin(e*Math.PI*.5),inOutSine:e=>.5*(1-Math.cos(e*Math.PI)),inExpo:e=>0===e?0:Math.pow(2,10*e-10),outExpo:e=>1===e?e:1-Math.pow(2,-10*e),inOutExpo:e=>0===e?0:1===e?1:e<.5?Math.pow(2,10*(2*e-1)-1):1-Math.pow(2,-10*(2*e-1)-1),inCirc:e=>1-Math.sqrt(1-e*e),outCirc:e=>Math.sqrt(1- --e*e),inOutCirc:e=>{var r=e-1,t=2*e;return t<1?.5*(1-Math.sqrt(1-t*t)):.5*(Math.sqrt(1-4*r*r)+1)},inBack:e=>e*e*(e*Q-Y),outBack:e=>{var r=e-1;return 1+r*r*(r*Q+Y)},inOutBack:e=>{var r=e-1,t=2*e;return e<.5?e*t*(t*(Z+1)-Z):1+2*r*r*(2*r*(Z+1)+Z)},inElastic:e=>{var r=e-1;return-Math.pow(2,10*r)*Math.sin((40*r-3)*Math.PI/6)},outElastic:e=>1+Math.pow(2,10*-e)*Math.sin((40*-e-3)*Math.PI/6),inOutElastic:e=>{var r=2*e-1,t=(80*r-9)*Math.PI/18;return r<0?-.5*Math.pow(2,10*r)*Math.sin(t):1+.5*Math.pow(2,-10*r)*Math.sin(t)},inBounce:e=>1-_(1-e),outBounce:_,inOutBounce:e=>e<.5?(1-_(1-2*e))/2:(1+_(2*e-1))/2},re={vw:e=>l*(e/100),vh:e=>u*(e/100),vmax:e=>m*(e/100),vmin:e=>g*(e/100),ch:e=>f*e,ex:e=>7.15625*e,rem:e=>f*e,in:e=>G*e,cm:e=>G/2.54*e,mm:e=>G/25.4*e,Q:e=>G/25400*e,pt:e=>G/72*e,pc:e=>G/6*e,px:e=>e},te=e=>{var r=parseFloat(e);return e=e.match(/[a-z%]+/i)[0],re[e](r)||r},ae=e=>e.includes("deg")?parseFloat(e)*Math.PI/180:e.includes("turn")?parseFloat(e)*(2*Math.PI):e.includes("grad")?parseFloat(e)*Math.PI/200:e.includes("rad")?parseFloat(e):void 0,ne=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ie=e=>a.querySelectorAll(e),oe=e=>Array.isArray(e),se=e=>Object.keys(e),le=()=>h.scrollY||n.scrollTop||i.scrollTop||0,ue=(e,r,t)=>{"function"==typeof E[r.id][e]&&E[r.id][e](r.elements,t)},pe=(e,r)=>{var t=e.type||1,n=t-1,i=1===t?"fixed":"absolute",o=1===t?"%":"px",s=a.createElement("div"),l=a.createElement("div"),u=a.createElement("div"),f=1===t&&e.value>p||2===t&&"end"===e.which,m="font-size:16px;display:block;width:"+(2===t?"90vw":"100%")+";height:1px;position:"+i+";top:"+e.value+o+";left:"+(2===t?"50vw;transform: translateX(-50%)":"0")+";background:"+r.backgroundColor+";pointer-events:none;z-index:99999;",g="display:block;margin: 0;position: absolute;top: "+(f?-2.5:.5)+"em;"+(2===t?"left":"right")+": "+(2===t?"50%;transform: translateX(-50%)":"start"===e.which?"10em":"1em")+";padding:0.5em 1em;background:"+r.backgroundColor+";color:"+r.color+";font-size: "+r.fontSize+";font-family: verdana;font-weight:normal;border-radius:0.3em;",h=e.id+O[n]+" "+e.which;1===t&&(l.className="scrollmoo-indicator");var c="";return c=f?"top: 2.1em;border-left: 0.5em solid transparent;border-right: 0.5em solid transparent;border-top: 0.5em solid "+r.backgroundColor+";":"top: -0.4em;border-left: 0.5em solid transparent;border-right: 0.5em solid transparent;border-bottom: 0.5em solid "+r.backgroundColor+";",s.style.cssText="display:block;margin:0;padding:0;width: 0;height: 0;position: absolute;left: calc(50% - 0.5em);"+c,l.style.cssText=m,u.style.cssText=g,u.innerText=h,u.appendChild(s),l.appendChild(u),l},fe=function(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e=parseFloat(e),isNaN(e)?r||0:e},me=e=>{var r="px"!==String(e).slice(-2);return{isPercent:r,value:fe(e),unit:r?"%":"px"}},ge=e=>y+(e.isPercent?u*(e.value/100):e.value),he=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),ce=e=>e.replace(/-([a-z])/gi,(e,r)=>r.toUpperCase()),de=function(e){var r=fe(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1]),t=String(e).match(/[a-z%]+/i);return{value:r+(t=null!==t?t[0]:""),number:r,unit:t}},ve=e=>{var r=e[1],t=!0,a=[],n=e[0],i=he(n),o=String(r).trim().replace(/\s+/g," ").toLowerCase();return v.test(n)?r=o:T.includes(i)?CSS.supports(i,o)?r=o:t=!1:ne(qe.transform,n)?(a=o.split(","),r="("+o+")",CSS.supports("transform",n+r)||(t=!1)):ne(qe.filter,ce(i.replace(/.*filter-/,"")))?(r="("+o+")",CSS.supports(i.replace(/(filter)-.*/,"$1"),i.replace(/.*filter-/,"")+r)||(t=!1)):t=!1,{supported:t,value:r,valueLength:a.length}},ye=e=>{var r=e[0],t=e[1],a=he(r),n=e[2];if(qe.transform.hasOwnProperty(r))"transform"in n?n.transform.push(r+t):n.transform=[r+t];else if(/.*filter-/.test(a)){var i=a.replace(/.*filter-/,""),o=ce(a.replace(/(filter)-.*/,"$1"));o in n?n[o].push(i+t):n[o]=[i+t]}else n[a]=t;return n},ke=(e,r)=>{for(var t=new RegExp("(?:^|\\s)"+he(r)+":\\s*([^;}]+)"),a=0;a<e.length;a++){var n=e[a].match(t);if(n)return n[1].trim()}return null},be=e=>{var r=[];if(""!==e.trim()){e=e.slice(0,-1).split(";");for(var t=0;t<e.length;t++){var[a,n]=e[t].trim().split(": "),i=ce(a);if(L.includes(a)){for(var o=[],s=n.replace(/, /g,",").split(" "),l=0;l<s.length;l++){var u=s[l].replace(/\((.+?)\)/i,":($1)").split(":");o.push([u[0],u[1]])}r.push([i,o])}else r.push([i,n])}}return r},we=e=>e.getBoundingClientRect(),xe=(e,r)=>{var t=r||H(e),a=we(e);return{width:Math.round(a.width),height:Math.round(a.height),top:a.top,position:t.getPropertyValue("position"),paddingTop:parseInt(t.getPropertyValue("padding-top"),10)}},Ee=(e,r,t)=>{if(1===r.length&&0===r[0])return t[0];for(var a,n,i=0,o=r.length-1;i<=o;){var s=Math.floor((i+o)/2);if(r[s]<e)a=r[s],i=s+1;else{if(!(r[s]>e))return parseFloat(t[e]);n=r[s],o=s-1}}if(a){if(n){var l=parseFloat(t[a]);return l+(e-a)/(n-a)*(parseFloat(t[n])-l)}return parseFloat(t[a])}return parseFloat(t[n])},Me=e=>{var r,t=e.type,a=e.elementName,n=e.element,i=e.options,o=e.index,s=S.find(e=>e[0]===t&&e[1]===a&&e[2]===o);return s?s[3]:(""!==i[t]&&i[t]!==a?0===(r=n.parentElement.closest(i[t])||"").length&&(0!==(r=ie(i[t])||"").length?e.total>1?(r=r[0],S.push([t,a,0,r])):(r=r[o],S.push([t,a,o,r])):r=n):r=n,r)},Se=e=>(e.isTriggerStart?0:e.height)+(e.triggerObj.isPercent?e.height*(e.triggerObj.value/100):e.triggerObj.value),Pe=e=>Math.round(e.top+(e.hasFix?0:y)),Oe=e=>{for(var r=e,t=0;r;)if(r===i){var a=getComputedStyle(r);r=n;var o=a.getPropertyValue("position");!0===/relative|absolute|fixed/i.test(o)&&(a=getComputedStyle(r),"fixed"===o&&"fixed"===a.getPropertyValue("position")?t-=parseInt(a.getPropertyValue("top"),10)+parseInt(a.getPropertyValue("margin-top"),10):t+="fixed"===o?parseInt(getComputedStyle(e).getPropertyValue("margin-top"),10)-parseInt(a.getPropertyValue("margin-top"),10):"relative"===o?parseInt(a.getPropertyValue("padding-top"),10):parseInt(a.getPropertyValue("top"),10)+parseInt(a.getPropertyValue("margin-top"),10)+parseInt(a.getPropertyValue("border-top-width"),10))}else t+=r.offsetTop,r=r.offsetParent;return t},Fe=(e,r)=>{for(var t=e,a=!1;e;)"fixed"===(t===e?r:H(e).getPropertyValue("position"))?(a=!0,e=null):e=e.parentElement;return a},Le=(e,r,t,a,n)=>n*Math.min(Math.max(0,(e-t)/(e-r-(t-a))),1),je=(e,r,t)=>(1-t)*e+t*r,Te=function(e,r,t,a){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;null!==n&&(b[e].duration.last=n),b[e].distance.last=r,b[e].distance.target=t,b[e].time=a},Ne=(e,r,t,a,n)=>je(r,t,e(Math.min(Math.max(0,n/a),1))),Ce=e=>{var r=Math.abs(e.targetDistance-e.lastDistance),t=r/e.distance*e.duration;return t<e.range&&(t=e.range*(2+(Math.max(Math.min(r,1.7),0)-0)/1.7*-.8)),t},Ie=(e,r,t)=>{var a=e,n=r-1,i=0;if(t<=a[0].keyframe)i=0;else if(t>=a[n].keyframe)i=n-1;else for(;i<n&&a[i+1].keyframe<=t;)i++;for(var o=[],{keyframe:s,value:l}=a[i],{keyframe:u,value:p}=a[i+1],f=(t-s)/(u-s),m=l.length,g=0;g<m;g++)o.push(X(je(l[g],p[g],f)));return o},qe={transform:{translateX:[0],translateY:[0],translateZ:[0],translate:[0,0],translate3d:[0,0,0],scale:[1,1],scale3d:[1,1,1],scaleX:[1],scaleY:[1],scaleZ:[1],rotate:[0],rotate3d:[0,0,0,0],rotateX:[0],rotateY:[0],rotateZ:[0],skewX:[0],skewY:[0],skew:[0,0],perspective:[0]},filter:{blur:[0],brightness:[1],contrast:[1],grayscale:[0],hueRotate:[0],invert:[0],opacity:[1],saturate:[1],sepia:[0]},backdropFilter:{blur:[0],brightness:[1],contrast:[1],grayscale:[0],hueRotate:[0],invert:[0],opacity:[1],saturate:[1],sepia:[0]}},De={multiplyMatrices:(e,r)=>{var[t,a,n,i,o,s,l,u,p,f,m,g,h,c,d,v]=e,[y,k,b,w,x,E,M,S,P,O,F,L,j,T,N,C]=r;return A[0]=y*t+k*o+b*p+w*h,A[1]=y*a+k*s+b*f+w*c,A[2]=y*n+k*l+b*m+w*d,A[3]=y*i+k*u+b*g+w*v,A[4]=x*t+E*o+M*p+S*h,A[5]=x*a+E*s+M*f+S*c,A[6]=x*n+E*l+M*m+S*d,A[7]=x*i+E*u+M*g+S*v,A[8]=P*t+O*o+F*p+L*h,A[9]=P*a+O*s+F*f+L*c,A[10]=P*n+O*l+F*m+L*d,A[11]=P*i+O*u+F*g+L*v,A[12]=j*t+T*o+N*p+C*h,A[13]=j*a+T*s+N*f+C*c,A[14]=j*n+T*l+N*m+C*d,A[15]=j*i+T*u+N*g+C*v,A},multiply:e=>e.reduce(De.multiplyMatrices),prespective:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=-1/e,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),rotate:e=>De.rotateZ(e),rotate3d:(e,r,t,a)=>{var n,i,o,s=Math.hypot(e,r,t);return s<1e-6?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:(e*=s=1/s,r*=s,t*=s,n=Math.sin(a),o=1-(i=Math.cos(a)),A[0]=e*e*o+i,A[1]=r*e*o+t*n,A[2]=t*e*o-r*n,A[3]=0,A[4]=e*r*o-t*n,A[5]=r*r*o+i,A[6]=t*r*o+e*n,A[7]=0,A[8]=e*t*o+r*n,A[9]=r*t*o-e*n,A[10]=t*t*o+i,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A)},rotateX:e=>{var r=Math.cos(e),t=Math.sin(e);return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=r,A[6]=t,A[7]=0,A[8]=0,A[9]=-t,A[10]=r,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A},rotateY:e=>{var r=Math.cos(e),t=Math.sin(e);return A[0]=r,A[1]=0,A[2]=-t,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=t,A[9]=0,A[10]=r,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A},rotateZ:e=>{var r=Math.cos(e),t=Math.sin(e);return A[0]=r,A[1]=t,A[2]=0,A[3]=0,A[4]=-t,A[5]=r,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A},scale:(e,r)=>(A[0]=e,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=r,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),scale3d:(e,r,t)=>(De.scale(e,r),A[10]=t,A),scaleX:e=>(A[0]=e,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),scaleY:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=e,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),scaleZ:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=e,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),skew:(e,r)=>(A[0]=1,A[1]=Math.tan(r),A[2]=0,A[3]=0,A[4]=Math.tan(e),A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),skewX:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=Math.tan(e),A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),skewY:e=>(A[0]=1,A[1]=Math.tan(e),A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A),translate:(e,r)=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=e,A[13]=r,A[14]=0,A[15]=1,A),translate3d:(e,r,t)=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=e,A[13]=r,A[14]=t,A[15]=1,A),translateX:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=e,A[13]=0,A[14]=0,A[15]=1,A),translateY:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=e,A[14]=0,A[15]=1,A),translateZ:e=>(A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=e,A[15]=1,A)},Ve=(e,r)=>{for(var t=0;t<e.length;t++)e[t].style.cssText=r[t]},ze=e=>{q&&(I=requestAnimationFrame(ze));var r=[],t=e-V,a=y!==k;V=e,k=y,D=e;for(var n=0;n<x;n++){var{callbackIndex:i,elements:o,originalCssText:s,interpolation:l,interpolationLength:u,render3d:p,trigger:{start:{converted:f},end:{converted:m}},indicator:{start:g,end:h},smooth:c,sync:d,duration:{total:v,last:w},ease:E,distance:{total:M,target:S,last:P},time:O,controller:{running:L,start:j,end:T},tag:N}=b[n],C=L,z=P,R=e-O,Y=!1===v?d:w,Z=!1,Q=0,B={elements:o,id:i},$=Le(ge(g),ge(h),f,m,M);if(!q||$!==z||S!==z){if(a)if(0===P&&$===M||P===M&&0===$||$>0&&$<M||0===$&&S>0||$===M&&S<M){var H=Ne(c.func,P,S,Y,R),K=!1!==v?Ce({duration:v,distance:M,targetDistance:$,lastDistance:H,range:t}):null;Te(n,H,$,e,K),Q=H}else Q=Ne(c.func,P,S,Y,R);else Q=Ne(c.func,P,S,Y,R);if(R>Y?L&&(b[n].controller.running=!1,C=!0):L||(b[n].controller.running=!0,C=!0),!q||C){var U={},W=Q/M;if(!1===c.isSmooth&&(W=E(W)),0===W)Ve(o,s);else{for(var G=0;G<u;G++){var{interpolate:J,type:_,propertyType:ee,propertyName:re,keyframes:te,keyframesLength:ae,unit:ne}=l[G];if(J){var ie=Ie(te,ae,W);0===_?U[re]=/rgb/i.test(ne)?ne+"("+ie.map(Math.round).join(", ")+")":ie.join(ne+" ")+ne:(U[ee]=U[ee]||[]).push(1===_?!1===p?[re+"("+("rotate3d"!==re?ie.join(ne+", ")+ne:ie.join(", ")+ne)+")"]:[...De[re](...ie)]:re+"("+ie[0]+ne+")")}else _>0&&(U[ee]=U[ee]||[]).push(re+te)}for(var oe=0;oe<3;oe++){var se=F[oe],le=U[se];le&&("transform"===se?!1===p?U[se]=N+" "+le.join(" "):(De.multiply(le),U[se]="matrix3d("+A+")"):U[se]=le.join(" "))}r.push([n,U])}!j&&S>0&&(b[n].controller.start=j=!0,b[n].controller.end=T=!0,ue("onEnter",B),S!==M&&(Z=!0,ue("onProgress",B,X($/M)))),!T&&S<M&&P>0&&(b[n].controller.end=!0,ue("onEnterReverse",B)),j&&P>0&&0===S&&(b[n].controller.start=j=!1,ue("onProgress",B,0),ue("onLeaveReverse",B)),T&&S===M&&(b[n].controller.end=!1,ue("onProgress",B,1),ue("onLeave",B)),!Z&&j&&T&&a&&$>0&&$<M&&ue("onProgress",B,X($/M)),q&&R>Y&&ue("onAnimationComplete",B)}}}(e=>{for(var r=0;r<e.length;r++)for(var t=b[e[r][0]].elements,a=e[r][1],n=0;n<t.length;n++){var i=t[n].style;for(var o in a)i.setProperty(o,a[o])}})(r)},Re=()=>{I=requestAnimationFrame(ze)},Ae=()=>{M||(y=le(),q||(q=!0,Re()))},Xe=()=>{clearTimeout(C),M=!0,I&&cancelAnimationFrame(I),z||(z=performance.now()),C=setTimeout(Ye,250)},Ye=()=>{J(),y=le();var e=performance.now();q&&(e-=z),D+=e,q||(q=!0);for(var r=0;r<x;r++){var{trigger:t,indicator:{start:a,end:n},smooth:{func:i},sync:o,duration:{total:s,last:l},distance:{target:u,last:p},time:f}=b[r],m=t.start,g=t.end,h=m.element,c=g.element,d=!1===s?o:l,v=void 0,k=void 0;if(1===t.isEqual){var w=Oe(h),E=h.offsetHeight+m.heightDiff,S=Se({isTriggerStart:!0,triggerObj:m,height:E}),P=Se({isTriggerStart:!1,triggerObj:g,height:E});v=w+m.diff+S,k=w+g.diff+P,v=Math.round(v),k=Math.round(k)}else if(2===t.isEqual){var O=we(h),F=O.height,L=Se({isTriggerStart:!0,triggerObj:m,height:F}),j=Se({isTriggerStart:!1,triggerObj:g,height:F});v=Pe({top:O.top+L,hasFix:m.hasFix}),k=Pe({top:O.top+j,hasFix:g.hasFix})}else{if(m.isEqual){v=Oe(h);var T=Se({isTriggerStart:!0,triggerObj:m,height:h.offsetHeight+m.heightDiff});v=v+m.diff+T,v=Math.round(v)}else{var N=we(h),C=Se({isTriggerStart:!0,triggerObj:m,height:N.height});v=Pe({top:N.top+C,hasFix:m.hasFix})}if(g.isEqual){k=Oe(c);var I=Se({isTriggerStart:!1,triggerObj:g,height:c.offsetHeight+g.heightDiff});k=k+g.diff+I,k=Math.round(k)}else{var V=we(c),R=Se({isTriggerStart:!1,triggerObj:g,height:V.height});k=Pe({top:V.top+R,hasFix:g.hasFix})}}var A=Math.max(0,k-v),X=D-(f+e),Y=Le(ge(a),ge(n),v,k,A),Z=Ne(i,p,u,d,X),Q=!1!==s?Ce({duration:s,distance:A,targetDistance:Y,lastDistance:Z,range:250}):null;b[r].trigger.start.converted=v,b[r].trigger.end.converted=k,b[r].distance.total=A,b[r].controller.running=!0,Te(r,Z,Y,D,Q)}for(r=0;r<x;r++)b[r].markers&&(b[r].trigger.start.marker.style.top=b[r].trigger.start.converted+"px",b[r].trigger.end.marker.style.top=b[r].trigger.end.converted+"px");Re(),z=null,M=!1},Ze=(e,r,a,n)=>{var i="function"==typeof e?e(a):e,o=t(t({},$),i),s={},l=me(o.indicatorStart),p=me(o.indicatorEnd),f=ge(l),m=ge(p);E[r]={};for(var g=0;g<6;g++)E[r][R[g]]=o[R[g]];o.sync="number"!=typeof o.sync||isNaN(o.sync)?350:1e3*Math.abs(o.sync),o.sync=Math.max(50,o.sync),o.duration="number"==typeof o.duration&&!isNaN(o.duration)&&1e3*Math.abs(o.duration),o.render3D=!0===o.render3D&&o.render3D;var h=ne(ee,o.ease),c=!h||"none"===o.ease,d=ee[c?"none":"linear"];if(o.ease=ee[h?o.ease:"none"],o.triggerStartElement=String(o.triggerStartElement),o.triggerEndElement=String(o.triggerEndElement),o.markers&&(o.markerId=String(o.markerId.replace(/[^A-Za-z0-9\s]/g,"")+" "),o.markers.constructor!==Object&&0===se(o.markers).length&&(o.markers={}),o.markers.color=ne(o.markers,"color")?o.markers.color:"white",o.markers.backgroundColor=ne(o.markers,"backgroundColor")?o.markers.backgroundColor:"black",o.markers.fontSize=ne(o.markers,"fontSize")?o.markers.fontSize:"0.8em"),o.markers){var k=pe({which:"start",id:o.markerId,value:l.isPercent?l.value:(f-y)/u*100},o.markers),b=pe({which:"end",id:o.markerId,value:p.isPercent?p.value:(m-y)/u*100},o.markers);n.appendChild(k),n.appendChild(b)}for(var w=0;w<3;w++){var x=F[w];if(ne(o.keyframes,x)){if("filter"===x||"backdropFilter"===x)for(var M in o.keyframes[x])ne(o.keyframes[x],M)&&(o.keyframes[ce(x+"-"+M)]=o.keyframes[x][M]);else o.keyframes=t(t({},o.keyframes[x]),o.keyframes);delete o.keyframes[x]}}var S,P=function(){var e={},r=!1;if(ne(o.keyframes,O)){var t=o.keyframes[O];if(!t||t.constructor!==Object||0===se(t).length||O.match(/^-(webkit|moz|ms|o)-/i))return console.warn("Invalid "+O+" keyframe value."),delete o.keyframes[O],0;if(ne(t,"from")&&delete Object.assign(t,{0:t.from}).from,ne(t,"to")&&delete Object.assign(t,{100:t.to}).to,v.test(O)&&ne(t,"unit")){var a=t.unit;for(var n in delete t.unit,t)ne(t,n)&&(t[n]=t[n]+a)}for(var i=se(t).sort((e,r)=>parseFloat(fe(e).toFixed(6))-parseFloat(fe(r).toFixed(6))),l=i.length,u=0;u<l;u++){var p=i[u],f=p.match(/^(\d+(?:\.\d+)?)(%)?$/);if(null===f)return console.warn("Dropped "+O+" property: In the "+elementName+" selector of "+O+" property has an invalid keyframe format. Supported keyframe formats: between from/0/0% ...40/40%...80/80%... to/100/100%"),r=!0,{v:void 0};f=fe(f[1]),f=parseFloat(f.toFixed(6));var m=ve([O,t[p]]);if(!(f>=0&&f<=100&&m.supported))return r=!0,m.supported?console.warn("Dropped "+O+" property: In the "+elementName+" selector one of the keyframe was not between from/0/0% ...40/40%...80/80%... to/100/100%."):console.warn("Dropped "+O+" property: In the "+elementName+" selector, the "+O+" property name or its keyframe value is not supported."),{v:void 0};e[Math.abs(f/100)]={value:m.value,valueLength:m.valueLength}}if(r)return delete o.keyframes[O],0;var g=Object.values(e).map(e=>e.valueLength),h=g[0],c=g.every(e=>e===h);if(!(se(e).length>0&&c))return console.warn("Dropped "+O+" property: In the "+elementName+" selector of "+O+" property's value length is not equal as the rest of the values"),delete o.keyframes[O],0;for(var d in o.keyframes[O]={},e)if(ne(e,d)){var y=e[d].value;0===Number(d)&&(s=ye([O,y,s])),o.keyframes[O][d]=y}}};for(var O in o.keyframes)if(0!==(S=P())&&S)return S.v;return{options:o,firstKeyframe:s,isSmooth:c,isSmoothFunc:d,indicatorStart:l,indicatorEnd:p,indicatorStartValue:f,indicatorEndValue:m}},Qe=(e,r,t)=>{for(var a=0;a<t;a++)if(e[a]!==r[a])return!1;return!0},ScrollMoo=e=>{if(!h)throw new Error("ScrollMoo requires a browser environment.");if(!("matchMedia"in h)||!h.matchMedia("(prefers-reduced-motion)").matches){if(!(!!e&&e.constructor===Object&&0!==se(e).length))throw new Error("Invalid input. Please provide a non-empty object.");var r=se(e);if(0===r.length)throw new Error("Invalid input. Please provide a non-empty object.");if(c)return console.warn("ScrollMoo is already initialized."),d;c=!0,a=h.document,n=a.documentElement;var l=()=>{J(),f=parseFloat(H(n).getPropertyValue("font-size")),m=Math.max(o,s),g=Math.min(o,s),p=s/2,i=a.body;var l=a.createDocumentFragment();if(y=le(),k=y,r.forEach((r,n)=>{var o=r,s=ie(o),u=s.length;0===u&&console.warn("No element has found in "+o+" selector text.");var p,f=e[o],m="function"==typeof f,g=m?f(0):f,h=N.reduce((e,r)=>(e[r]=g&&void 0!==g[r]?g[r]:$[r],e),{}),c=m?e=>{var r=f(e);return N.forEach(e=>{r[e]=h[e]}),r}:t(t({},g),h);e[o]=c,m||(p=Ze(c,n,0,l));for(var d=function(){var{options:e,firstKeyframe:r,isSmooth:t,isSmoothFunc:f,indicatorStart:g,indicatorEnd:h,indicatorStartValue:d,indicatorEndValue:y}=m?Ze(c,n,v,l):p,k=se(e.keyframes),x=s[v],E=x.style,M=Object.assign({},r),S=(e=>{var r=a.styleSheets,t=e.id||null,n=e.classList.value.split(" ").map(e=>"."+e),i=[];null!==t&&n.push("#"+t);for(var o=function(){for(var e=n[s],t=r.length-1;t>=0;t--)try{var a=r[t].cssRules||r[t].rules;if(a&&a.length)for(var o=a.length-1;o>=0;o--){var l=a[o].selectorText,u=l.split(", ").some(r=>r===e);if(l&&u){var p=a[o].cssText||a[o].style.cssText||"";i.push(p)}}}catch(e){}},s=n.length-1;s>=0;s--)o();return i})(x),O={},L=[];if(!i.contains(x))throw new Error("Invalid arguments. Element must be inside of the body.");for(var T in se(qe).forEach(e=>{O[e]={},se(qe[e]).forEach(r=>{O[e][r]=0})}),M){var N=void 0;if(Array.isArray(M[T]))if(null!==(N=0!==E[T].length?E[T]:ke(S,T))){for(var C=0;C<M[T].length;C++){var I=M[T][C],q=I.replace(/\([^()]*\)/,"");N.match(new RegExp(q+"\\(.+?\\)","gi"))?N=N.replace(new RegExp(q+"\\(.+?\\)","gi"),I):1===M[T].length||0===C?(null!==N&&(N+=" "),N+=I):N+=" "+I}E[T]=N}else E[T]=M[T].join(" ");else E.setProperty(T,M[T])}for(var D=E.cssText,V=D,z=be(D),R={},A=function(){var e=F[Y],r=he(e),t=k.some(r=>"transform"===e&&r in qe[e]||"filter"===e&&/filter/.test(r)||"backdropFilter"===e&&/backdropFilter/.test(r));if(oe(z[e])||!t||""!==E[r]&&"none"!==E[r])R[r]=E[r];else{var a=ke(S,r);null!==a&&(V+=" "+r+": "+a+";"),R[r]=null!==a?a:""}},Y=0;Y<3;Y++)A();for(var Z=be(V),Q=Z.length,B=function(){var r=Z[Q][0],t=Z[Q][1],a="transform"===r;(oe(t)&&k.filter(e=>a?e in qe.transform:e.includes(Z[Q][0])).every(r=>1===se(e.keyframes[r]).length&&ne(e.keyframes[r],"0"))||!oe(t)&&ne(e.keyframes,r)&&ne(e.keyframes[r],"0")&&1===se(e.keyframes[r]).length||!ne(e.keyframes,r)&&!oe(t))&&Z.splice(Q,1)};Q--;)B();for(var $=0;$<Z.length;$++){var[K,U]=Z[$],W=he(K);if(oe(U))for(var G=function(){var r="filter"===K||"backdropFilter"===K?ce(K+"-"+U[J][0]):U[J][0],t=ne(e.keyframes,r)&&k.find(e=>e===r)&&se(e.keyframes[r]).some(e=>Number(e)>0)&&se(e.keyframes[r]).length>=1,a=!1;"transform"===K&&(t||(a=!0),t=!0),L.push({interpolate:t,type:{filter:2,"backdrop-filter":3}[W]||1,propertyType:W,propertyName:U[J][0],keyframes:t?a?{0:U[J][1],1:U[J][1]}:e.keyframes[r]:U[J][1],unit:"",valueLength:null})},J=0;J<U.length;J++)G();else L.push({interpolate:!0,type:0,propertyType:null,propertyName:K,keyframes:e.keyframes[K],unit:"",valueLength:null})}var _=function(){if(ne(e.keyframes,ee)){var r,t=0,a=/filter/i.test(ee)?he(ee).replace(/.*filter-/,""):ee;/filter/.test(ee)?t=2:/backdropFilter/.test(ee)?t=3:ee in qe.transform&&(t=1),r=L.find(e=>e.propertyName===a&&e.type===t),!r&&se(e.keyframes[ee]).some(e=>Number(e)>0)&&L.push({interpolate:!0,type:t,propertyType:{0:null,1:"transform",2:"filter",3:"backdrop-filter"}[t],propertyName:a,keyframes:e.keyframes[ee],unit:"",valueLength:null})}};for(var ee in e.keyframes)_();for(var re=E.width,ie=E.height,le=x.parentElement||x,ue=H(le),fe=H(x),ge=xe(x,fe),ve={},ye=function(){var e=j[we],r=L.find(r=>r.propertyName===e);if(r&&se(r.keyframes).some(e=>Number(e)>0)){for(var t in ve[e]={},ve[e][0]=parseFloat(fe.getPropertyValue(e)),r.keyframes)if(ne(r.keyframes,t)&&Number(t)>0){var a=de(r.keyframes[t]);"%"===a.unit?ve[e][t]=X(parseFloat(ue.getPropertyValue(e))*(a.number/100)):ve[e][t]=te(a.value)}E[e]="width"===e?re:ie}else ve[e]={},ve[e][0]=parseFloat(fe.getPropertyValue(e))},we=0;we<2;we++)ye();for(var je=se(ve.width).map(Number).sort((e,r)=>e-r),Te=se(ve.height).map(Number).sort((e,r)=>e-r),Ne=function(){var e=L[Ce];if(!e.interpolate)return 1;var r=se(e.keyframes).map(Number).sort((e,r)=>e-r),t=r.length,a=!1,n=e.propertyName,i=he(n);if(ne(e.keyframes,"0")||(r.unshift(0),t++),0===e.type)if(["color","background-color"].includes(i)){for(var o=[],s=0;s<t;s++){var l=r[s],u=void 0;l>0&&!ne(P,e.keyframes[l])&&(E[i]=e.keyframes[l]),ne(P,e.keyframes[l])?u=P[e.keyframes[l]]:(u=fe.getPropertyValue(i).match(/[\d\.]+/g).map(Number),P[e.keyframes[l]]=u),o.push({keyframe:l,value:u})}var p=o.some(e=>4===e.value.length);if(p)for(var f=0;f<o.length;f++)4!==o[f].value.length&&o[f].value.push(1);e.propertyName=i,e.keyframes=o,e.keyframesLength=o.length,e.unit=p?"rgba":"rgb",e.valueLength=o[0].value.length}else if(["width","height"].includes(n)){for(var m=[],g=0;g<t;g++){var h=r[g];m.push({keyframe:h,value:[ve[n][h]]})}e.keyframes=m,e.keyframesLength=m.length,e.unit="px",e.valueLength=1}else if("opacity"===n){var c=[];if(!ne(e.keyframes,"0")){var d={0:fe.getPropertyValue(n)};e.keyframes=Object.assign(d,e.keyframes)}for(var v=0;v<t;v++){var y=r[v],k=e.keyframes[y],b=k.slice(-1);k=parseFloat(k),"%"===b&&(k/=100),k=Math.min(1,Math.max(0,k)),c.push({keyframe:y,value:[k]})}e.keyframes=c,e.keyframesLength=c.length,e.valueLength=1}else{var w=[];if(!ne(e.keyframes,"0")){var x={0:fe.getPropertyValue(n)||0};e.keyframes=Object.assign(x,e.keyframes)}var M=e.keyframes[r[t-1]];M=de(M).unit;for(var S=0;S<t;S++){var F=r[S],j=e.keyframes[F];j=parseFloat(j),w.push({keyframe:F,value:[j]})}e.keyframes=w,e.keyframesLength=w.length,e.valueLength=1,e.unit=M}else{var T=he(e.propertyType),N=R[T].match(new RegExp(n+"\\(([^)]+)\\)","gi"));if(null===N?((N=[null])[1]=qe[e.propertyType][n].join(", "),a=!0):N.length>1?(N=N[O[e.propertyType][n]].match(new RegExp(n+"\\(([^)]+)\\)","i")),O[e.propertyType][n]++):N=R[T].match(new RegExp(n+"\\(([^)]+)\\)","i")),1===e.type){var C=[];if("perspective"===n){if(!ne(e.keyframes,"0")){var I={0:a?N[1]+"px":N[1]};e.keyframes=Object.assign(I,e.keyframes)}for(var q=0;q<t;q++){var D=r[q],V=e.keyframes[D].replace(/[()]/g,"");"none"!==V&&0!==V||(console.warn("Dropped "+n+' property: "none" or "0" value can not be animated at '+D+" keyframe."),L.splice(Ce,1)),C.push({keyframe:D,value:[te(V)]})}e.keyframes=C,e.keyframesLength=C.length,e.unit="px",e.valueLength=1}else if(/translate/.test(n)){ne(e.keyframes,"0")||(e.keyframes=Object.assign({0:N[1]},e.keyframes));for(var z=0;z<t;z++){var A=r[z],Y=e.keyframes[A].replace(/[()]/g,"").split(",").map(e=>0==e?e+"px":e);"translate"===n&&1===Y.length&&Y.push("0px");var[Z,Q,B]=Y;if("%"===Z.slice(-1)){var $=void 0;$="translateY"===n?Ee(A,Te,ve.height):Ee(A,je,ve.width),Z=X($*(parseFloat(Z)/100))}else Z=te(Z);if(Y[0]=Z,void 0!==Q){if("%"===Q.slice(-1)){var H=Ee(A,Te,ve.height);Q=X(H*(parseFloat(Q)/100))}else Q=te(Q);Y[1]=Q}void 0!==B&&(Y[2]=te(B)),C.push({keyframe:A,value:Y})}e.keyframes=C,e.keyframesLength=C.length,e.unit="px",e.valueLength=C[0].value.length}else if(/scale/.test(n)){if(!ne(e.keyframes,"0")){var K={0:N[1]};e.keyframes=Object.assign(K,e.keyframes)}for(var U=0;U<t;U++){var W=r[U],G=e.keyframes[W].replace(/[()]/g,"").split(",");"scale"===n&&1===G.length&&G.push(G[0]);var[J,_,ee]=G,re=J.slice(-1);if(J=parseFloat(J),"%"===re&&(J/=100),G[0]=J,void 0!==_){var ie=_.slice(-1);_=parseFloat(_),"%"===ie&&(_/=100),G[1]=_}if(void 0!==ee){var oe=ee.slice(-1);ee=parseFloat(ee),"%"===oe&&(ee/=100),G[2]=ee}C.push({keyframe:W,value:G})}e.keyframes=C,e.keyframesLength=C.length,e.valueLength=C[0].value.length}else if(/skew/.test(n)){if(!ne(e.keyframes,"0")){var le={0:N[1]};e.keyframes=Object.assign(le,e.keyframes)}for(var ue=0;ue<t;ue++){var pe=r[ue],me=e.keyframes[pe].replace(/[()]/g,"").split(",").map(e=>0==e?e+"rad":e).map(ae);"skew"===n&&1===me.length&&me.push(0),C.push({keyframe:pe,value:me})}e.keyframes=C,e.keyframesLength=C.length,e.unit="rad",e.valueLength=C[0].value.length}else if(/rotate/.test(n)){if(!ne(e.keyframes,"0")){var ge={0:N[1]};e.keyframes=Object.assign(ge,e.keyframes)}for(var ce=0;ce<t;ce++){var ye=r[ce],ke=e.keyframes[ye].replace(/[()]/g,"").split(",").map((e,r)=>"rotate3d"===n?3===r?ae("0"==e?e+"rad":e):Number(e):ae(0==e?e+"rad":e));C.push({keyframe:ye,value:ke})}e.keyframes=C,e.keyframesLength=C.length,e.unit="rad",e.valueLength=C[0].value.length}}else if(e.type>1){var be=[];if("blur"===n){if(!ne(e.keyframes,"0")){var we={0:a?N[1]+"px":N[1]};e.keyframes=Object.assign(we,e.keyframes)}for(var xe=0;xe<t;xe++){var Me=r[xe],Se=e.keyframes[Me].replace(/[()]/g,"");be.push({keyframe:Me,value:[te(Se)]})}3===e.type&&(e.propertyType="backdrop-filter"),e.keyframes=be,e.keyframesLength=be.length,e.unit="px",e.valueLength=1}else if("brightness"===n||"contrast"===n||"grayscale"===n||"invert"===n||"opacity"===n||"saturate"===n||"sepia"===n){if(!ne(e.keyframes,"0")){var Pe={0:N[1]};e.keyframes=Object.assign(Pe,e.keyframes)}for(var Oe=0;Oe<t;Oe++){var Fe=r[Oe],Le=e.keyframes[Fe].replace(/[()]/g,"");"%"===Le.slice(-1)&&(Le=parseFloat(Le)/100),Le=Le>0?Le:0,be.push({keyframe:Fe,value:[Le]})}e.keyframes=be,e.keyframesLength=be.length,e.valueLength=1}else if("hue-rotate"===n){if(!ne(e.keyframes,"0")){var Ne={0:N[1]};e.keyframes=Object.assign(Ne,e.keyframes)}for(var Ie=0;Ie<t;Ie++){var De=r[Ie],Ve=e.keyframes[De].replace(/[()]/g,"");Ve=ae(0==Ve?Ve+"rad":Ve),be.push({keyframe:De,value:[Ve]})}e.keyframes=be,e.keyframesLength=be.length,e.unit="rad",e.valueLength=1}}}},Ce=0;Ce<L.length;Ce++)Ne();var Ie="";if(!e.render3D){var De=L.filter(e=>1===e.type),Ve=De.length;1===Ve?ne(De[0],"rotate")||ne(De[0],"rotateZ")?Ie="translate3d(0px, 0px, 0px)":(ne(De[0],"scale")||ne(De[0],"scaleX")||ne(De[0],"scaleY"))&&(Ie="rotate(0deg)"):2===Ve&&(De.some(e=>"translate"===e.propertyName)||De.some(e=>"translateX"===e.propertyName)||De.some(e=>"translateY"===e.propertyName))&&(De.some(e=>"rotate"===e.propertyName)||De.some(e=>"rotateZ"===e.propertyName))&&(Ie="translate3d(0px, 0px, 0px)")}D!==E.cssText&&(E.cssText=D);var ze,Re,Ae,Xe,Ye,Be=["border-top-width","padding-top","height","padding-bottom","border-bottom-width"].map(e=>parseInt(fe.getPropertyValue(e),10)).reduce((e,r)=>e+r,0),$e=me(e.triggerStart),He=me(e.triggerEnd),Ke=Me({type:"triggerStartElement",elementName:o,element:x,total:u,options:e,index:v}),Ue=Me({type:"triggerEndElement",elementName:o,element:x,total:u,options:e,index:v}),We=((e,r,t,a)=>{var n,i,o=1,s=!1,l=!1,u=e.isEqualNode(r),p=e.isEqualNode(t);return u&&p?(n=a,i=a,s=!0,l=!0):r.isEqualNode(t)?(i=n=xe(r),o=2):(o=0,u?(n=a,s=!0):n=xe(r),p?(i=a,l=!0):i=xe(t)),{start:n,end:i,equality:o,triggerStartEqual:s,triggerEndEqual:l}})(x,Ke,Ue,ge),Ge=Fe(Ke,We.start.position),Je=Pe({top:We.start.top,hasFix:Ge}),_e=0,er=0,rr=0,tr=0;1===We.equality?(Ye=Je,Xe=Ge,ze=Oe(Ke),er=_e=Je-ze,tr=rr=We.start.height-Be):2===We.equality?(Ye=Je,Xe=Ge):(Xe=Fe(Ue,We.end.position),Ye=Pe({top:We.end.top,hasFix:Xe}),We.triggerStartEqual&&(_e=Je-(ze=Oe(Ke)),rr=We.start.height-Be),We.triggerEndEqual&&(er=Ye-Oe(Ue),tr=We.end.height-Be));var ar=Je+Se({isTriggerStart:!0,triggerObj:$e,height:We.start.height}),nr=Ye+Se({isTriggerStart:!1,triggerObj:He,height:We.end.height}),ir=Math.max(0,nr-ar),or=Le(d,y,ar,nr,ir),sr=b[w-1],lr=L.length,ur=void 0!==sr&&sr.callbackIndex===n,pr=ur&&((e,r,t)=>{if(t.previousLength!==t.currentLength)return!1;for(var a=0;a<t.previousLength;a++){var n=e[a],i=r[a];if(n.interpolate&&i.interpolate)for(var o=0;o<n.keyframesLength;o++){var s=n.keyframes[o],l=i.keyframes[o];if(!Qe(s.value,l.value,n.valueLength))return!1}}return!0})(sr.interpolation,L,{previousLength:sr.interpolationLength,currentLength:lr});!1!==e.duration&&e.duration/ir<3.5&&console.warn("Based on the visual experience, the "+o+" selector at index "+v+" has a duration that is too low compare to its distance between triggerStart and triggerEnd. As a suggestion, consider increasing the duration for better visual result."),ur&&(sr.duration===e.duration||sr.sync===e.sync)&&pr&&sr.trigger.start.converted===ar&&sr.trigger.end.converted===nr&&(sr.trigger.isSame||sr.trigger.start.element===Ke&&sr.trigger.end.element===Ue)?(sr.elements.push(x),sr.originalCssText.push(D),sr.trigger.isSame||(sr.trigger.isSame=!0)):(w++,e.markers&&(Re=pe({type:2,which:"start",id:e.markerId,value:ar},e.markers),l.appendChild(Re),Ae=pe({type:2,which:"end",id:e.markerId,value:nr},e.markers),l.appendChild(Ae)),b.push({callbackIndex:n,elements:[x],elementsLength:null,originalCssText:[D],interpolation:L,interpolationLength:lr,markers:!!e.markers,render3d:e.render3D,trigger:{isSame:!1,isEqual:We.equality,start:{isEqual:We.triggerStartEqual,element:Ke,isPercent:$e.isPercent,value:$e.value,hasFix:Ge,diff:_e,heightDiff:rr,converted:ar,unit:$e.unit,marker:void 0!==Re?Re:null},end:{isEqual:We.triggerEndEqual,element:Ue,isPercent:He.isPercent,value:He.value,hasFix:Xe,diff:er,heightDiff:tr,converted:nr,unit:He.unit,marker:void 0!==Ae?Ae:null}},indicator:{start:{isPercent:g.isPercent,value:g.value},end:{isPercent:h.isPercent,value:h.value}},smooth:{isSmooth:t,func:f},sync:e.sync,duration:{total:e.duration,last:e.duration},ease:e.ease,distance:{total:ir,target:or,last:or},time:0,controller:{running:!1,start:!1,end:!1},tag:Ie}))},v=0;v<u;v++)d()}),0===(x=b.length))throw new Error("There is no initializable values.");b.sort((e,r)=>e.trigger.start.converted-r.trigger.start.converted),P={},e=null,i.insertBefore(l,i.firstChild),l=null,requestAnimationFrame(()=>{ze(performance.now()),a.addEventListener("scroll",Ae,{passive:!0}),h.addEventListener("resize",Xe,!1)})};return/complete|loaded/.test(a.readyState)?l():a.addEventListener("readystatechange",e=>{/complete|loaded/.test(e.target.readyState)&&l()}),d={destroy:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];a.removeEventListener("scroll",Ae),h.removeEventListener("resize",Xe),cancelAnimationFrame(I),c=!1,E=[],M=!1,w=0,S=[],P={},C=null,I=null,q=!1,D=0,V=0,z=null;for(var r=0;r<x;r++)!0===e&&Ve(b[r].elements,b[r].originalCssText),b[r].markers&&(b[r].trigger.start.marker.remove(),b[r].trigger.end.marker.remove());ie(".scrollmoo-indicator").forEach(e=>e.remove()),b=[],x=0,i=null},refresh:()=>{h.dispatchEvent(new Event("resize"))}}}};export{ScrollMoo as default};