UNPKG

scrollmoo

Version:

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

15 lines (13 loc) 36.2 kB
/** * ScrollMoo v1.1.11 * 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,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).ScrollMoo=r()}(this,function(){"use strict";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,f,p,g,m,h="undefined"!=typeof window?window:null,c=!1,d=null,v=/^--scrollmoo-.+/,y=0,k=0,b=[],w=0,x=0,E=[],M=!1,P={},S=["indicator","trigger"],O=["transform","filter","backdropFilter"],j=["width","height"],F=["width","height","color","background-color","opacity"],L=["ease","markers","render3D"],T=null,C=null,I=!1,N=0,q=0,D=null,V=["onEnter","onEnterReverse","onLeave","onLeaveReverse","onProgress","onAnimationComplete","onToggle"],z=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A=e=>Math.round(1e4*e)/1e4,R=1.70158,Q=1.525*R,X=R+1,Y={},B={sync:.35,duration:!1,ease:"none",markers:!1,markerId:"",triggerStartElement:"",triggerEndElement:"",triggerStart:0,triggerEnd:0,indicatorStart:0,indicatorEnd:0,render3D:!1,keyframes:Y,onEnter:Y,onEnterReverse:Y,onLeave:Y,onLeaveReverse:Y,onProgress:Y,onAnimationComplete:Y,onToggle:Y},Z=e=>h.getComputedStyle(e),$=h.screen.width,H=h.screen.height,U=Math.sqrt($*$+H*H)/h.devicePixelRatio/96,W=Math.sqrt($*$+H*H)/U,G=()=>{o=l=h.innerWidth,s=u=h.innerHeight},J=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},K={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*X-R),outBack:e=>{var r=e-1;return 1+r*r*(r*X+R)},inOutBack:e=>{var r=e-1,t=2*e;return e<.5?e*t*(t*(Q+1)-Q):1+2*r*r*(2*r*(Q+1)+Q)},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-J(1-e),outBounce:J,inOutBounce:e=>e<.5?(1-J(1-2*e))/2:(1+J(2*e-1))/2},_={vw:e=>l*(e/100),vh:e=>u*(e/100),vmax:e=>g*(e/100),vmin:e=>m*(e/100),ch:e=>p*e,ex:e=>7.15625*e,rem:e=>p*e,in:e=>W*e,cm:e=>W/2.54*e,mm:e=>W/25.4*e,Q:e=>W/25400*e,pt:e=>W/72*e,pc:e=>W/6*e,px:e=>e},ee=e=>{var r=parseFloat(e);return e=e.match(/[a-z%]+/i)[0],_[e](r)||r},re=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,te=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ae=e=>a.querySelectorAll(e),ne=e=>Array.isArray(e),ie=e=>Object.keys(e),oe=()=>h.scrollY||n.scrollTop||i.scrollTop||0,se=(e,r,t)=>{"function"==typeof E[r.id][e]&&E[r.id][e](r.elements,t)},le=(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"),p=1===t&&e.value>f||2===t&&"end"===e.which,g="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;",m="display:block;margin: 0;position: absolute;top: "+(p?-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+S[n]+" "+e.which;1===t&&(l.className="scrollmoo-indicator");var c="";return c=p?"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=g,u.style.cssText=m,u.innerText=h,u.appendChild(s),l.appendChild(u),l},ue=function(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e=parseFloat(e),isNaN(e)?r||0:e},fe=e=>{var r="px"!==String(e).slice(-2);return{isPercent:r,value:ue(e),unit:r?"%":"px"}},pe=e=>y+(e.isPercent?u*(e.value/100):e.value),ge=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),me=e=>e.replace(/-([a-z])/gi,(e,r)=>r.toUpperCase()),he=function(e){var r=ue(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}},ce=e=>{var r=e[1],t=!0,a=[],n=e[0],i=ge(n),o=String(r).trim().replace(/\s+/g," ").toLowerCase();return v.test(n)?r=o:F.includes(i)?CSS.supports(i,o)?r=o:t=!1:te(Ie.transform,n)?(a=o.split(","),r="("+o+")",CSS.supports("transform",n+r)||(t=!1)):te(Ie.filter,me(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}},de=e=>{var r=e[0],t=e[1],a=ge(r),n=e[2];if(Ie.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=me(a.replace(/(filter)-.*/,"$1"));o in n?n[o].push(i+t):n[o]=[i+t]}else n[a]=t;return n},ve=(e,r)=>{for(var t=new RegExp("(?:^|\\s)"+ge(r)+":\\s*([^;}]+)"),a=0;a<e.length;a++){var n=e[a].match(t);if(n)return n[1].trim()}return null},ye=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=me(a);if(O.includes(i)){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},ke=e=>e.getBoundingClientRect(),be=(e,r)=>{var t=r||Z(e),a=ke(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)}},we=(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])},xe=e=>{var r,t=e.type,n=e.elementName,i=e.element,o=e.options;return""!==o[t]&&o[t]!==n?null===(r=i.parentElement.closest(o[t]))&&null===(r=a.querySelector(o[t]))&&(r=i):r=i,r},Ee=e=>(e.isTriggerStart?0:e.height)+(e.triggerObj.isPercent?e.height*(e.triggerObj.value/100):e.triggerObj.value),Me=e=>Math.round(e.top+(e.hasFix?0:y)),Pe=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},Se=(e,r)=>{for(var t=e,a=!1;e;)"fixed"===(t===e?r:Z(e).getPropertyValue("position"))?(a=!0,e=null):e=e.parentElement;return a},Oe=(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,Fe=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},Le=(e,r,t,a,n)=>je(r,t,e(Math.min(Math.max(0,n/a),1))),Te=e=>{var r=Math.abs(e.targetDistance-e.lastDistance),t=r/e.distance*e.duration;return t<e.range&&(t=e.range*(2-.8*Math.min(Math.max(r,0),1.7)/1.7)),t},Ce=(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:f}=a[i+1],p=(t-s)/(u-s),g=l.length,m=0;m<g;m++)o.push(A(je(l[m],f[m],p)));return o},Ie={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,1,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]}},Ne={multiplyMatrices:(e,r)=>{var[t,a,n,i,o,s,l,u,f,p,g,m,h,c,d,v]=e,[y,k,b,w,x,E,M,P,S,O,j,F,L,T,C,I]=r;return z[0]=y*t+k*o+b*f+w*h,z[1]=y*a+k*s+b*p+w*c,z[2]=y*n+k*l+b*g+w*d,z[3]=y*i+k*u+b*m+w*v,z[4]=x*t+E*o+M*f+P*h,z[5]=x*a+E*s+M*p+P*c,z[6]=x*n+E*l+M*g+P*d,z[7]=x*i+E*u+M*m+P*v,z[8]=S*t+O*o+j*f+F*h,z[9]=S*a+O*s+j*p+F*c,z[10]=S*n+O*l+j*g+F*d,z[11]=S*i+O*u+j*m+F*v,z[12]=L*t+T*o+C*f+I*h,z[13]=L*a+T*s+C*p+I*c,z[14]=L*n+T*l+C*g+I*d,z[15]=L*i+T*u+C*m+I*v,z},multiply:e=>e.reduce(Ne.multiplyMatrices),prespective:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=-1/e,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),rotate:e=>Ne.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)),z[0]=e*e*o+i,z[1]=r*e*o+t*n,z[2]=t*e*o-r*n,z[3]=0,z[4]=e*r*o-t*n,z[5]=r*r*o+i,z[6]=t*r*o+e*n,z[7]=0,z[8]=e*t*o+r*n,z[9]=r*t*o-e*n,z[10]=t*t*o+i,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z)},rotateX:e=>{var r=Math.cos(e),t=Math.sin(e);return z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=r,z[6]=t,z[7]=0,z[8]=0,z[9]=-t,z[10]=r,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z},rotateY:e=>{var r=Math.cos(e),t=Math.sin(e);return z[0]=r,z[1]=0,z[2]=-t,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=t,z[9]=0,z[10]=r,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z},rotateZ:e=>{var r=Math.cos(e),t=Math.sin(e);return z[0]=r,z[1]=t,z[2]=0,z[3]=0,z[4]=-t,z[5]=r,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z},scale:(e,r)=>(z[0]=e,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=r,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),scale3d:(e,r,t)=>(Ne.scale(e,r),z[10]=t,z),scaleX:e=>(z[0]=e,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),scaleY:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=e,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),scaleZ:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=e,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),skew:(e,r)=>(z[0]=1,z[1]=Math.tan(r),z[2]=0,z[3]=0,z[4]=Math.tan(e),z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),skewX:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=Math.tan(e),z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),skewY:e=>(z[0]=1,z[1]=Math.tan(e),z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=0,z[15]=1,z),translate:(e,r)=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=e,z[13]=r,z[14]=0,z[15]=1,z),translate3d:(e,r,t)=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=e,z[13]=r,z[14]=t,z[15]=1,z),translateX:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=e,z[13]=0,z[14]=0,z[15]=1,z),translateY:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=e,z[14]=0,z[15]=1,z),translateZ:e=>(z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=0,z[5]=1,z[6]=0,z[7]=0,z[8]=0,z[9]=0,z[10]=1,z[11]=0,z[12]=0,z[13]=0,z[14]=e,z[15]=1,z)},qe=(e,r)=>{for(var t=0;t<e.length;t++)e[t].style.cssText=r[t]},De=e=>{I&&(C=requestAnimationFrame(De));var r=[],t=e-q,a=y!==k;q=e,k=y,N=e;for(var n=0;n<x;n++){var{callbackIndex:i,elements:o,originalCssText:s,interpolation:l,interpolationLength:u,render3d:f,trigger:{start:{converted:p},end:{converted:g}},indicator:{start:m,end:h},smooth:c,sync:d,duration:{total:v,last:w},ease:E,distance:{total:M,target:P,last:S},time:O,controller:{running:j,start:F,end:L},tag:T}=b[n],D=j,V=S,R=e-O,Q=!1===v?d:w,X=!1,Y=0,B={elements:o,id:i},Z=Oe(pe(m),pe(h),p,g,M);if(!I||Z!==V||P!==V){if(a)if(0===S&&Z===M||S===M&&0===Z||Z>0&&Z<M||0===Z&&P>0||Z===M&&P<M){var $=Le(c.func,S,P,Q,R),H=!1!==v?Te({duration:v,distance:M,targetDistance:Z,lastDistance:$,range:t}):null;Fe(n,$,Z,e,H),Y=$}else Y=Le(c.func,S,P,Q,R);else Y=Le(c.func,S,P,Q,R);if(R>Q?j&&(b[n].controller.running=!1,D=!0):j||(b[n].controller.running=!0,D=!0),!I||D){var U={},W=Y/M;if(!1===c.isSmooth&&(W=E(W)),0===W)qe(o,s);else{for(var G=0;G<u;G++){var{interpolate:J,type:K,propertyType:_,propertyName:ee,keyframes:re,keyframesLength:te,unit:ae}=l[G];if(J){var ne=Ce(re,te,W);0===K?U[ee]=/rgb/i.test(ae)?ae+"("+ne.map(Math.round).join(", ")+")":ne.join(ae+" ")+ae:(U[_]=U[_]||[]).push(1===K?!1===f?[ee+"("+("rotate3d"!==ee?ne.join(ae+", ")+ae:ne.join(", ")+ae)+")"]:[...Ne[ee](...ne)]:ee+"("+ne[0]+ae+")")}else K>0&&(U[_]=U[_]||[]).push(ee+re)}U.transform&&(!1===f?U.transform=T+" "+U.transform.join(" "):(Ne.multiply(U.transform),U.transform="matrix3d("+z+")")),U.filter&&(U.filter=U.filter.join(" ")),U["backdrop-filter"]&&(U["backdrop-filter"]=U["backdrop-filter"].join(" ")),r.push([n,U])}!F&&P>0&&(b[n].controller.start=F=!0,b[n].controller.end=L=!0,se("onEnter",B),se("onToggle",B,!0),P!==M&&(X=!0,se("onProgress",B,A(Z/M)))),!L&&P<M&&S>0&&(b[n].controller.end=!0,se("onEnterReverse",B),se("onToggle",B,!0)),F&&S>0&&0===P&&(b[n].controller.start=F=!1,se("onProgress",B,0),se("onLeaveReverse",B),se("onToggle",B,!1)),L&&P===M&&(b[n].controller.end=!1,se("onProgress",B,1),se("onLeave",B),se("onToggle",B,!1)),!X&&F&&L&&a&&Z>0&&Z<M&&se("onProgress",B,A(Z/M)),I&&R>Q&&se("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)},Ve=()=>{C=requestAnimationFrame(De)},ze=()=>{M||(y=oe(),I||(I=!0,Ve()))},Ae=()=>{clearTimeout(T),M=!0,C&&cancelAnimationFrame(C),D||(D=performance.now()),T=setTimeout(Re,250)},Re=()=>{G(),y=oe();var e=performance.now();I&&(e-=D),N+=e,I||(I=!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:f},time:p}=b[r],g=t.start,m=t.end,h=g.element,c=m.element,d=!1===s?o:l,v=void 0,k=void 0;if(1===t.isEqual){var w=Pe(h),E=h.offsetHeight+g.heightDiff,P=Ee({isTriggerStart:!0,triggerObj:g,height:E}),S=Ee({isTriggerStart:!1,triggerObj:m,height:E});v=w+g.diff+P,k=w+m.diff+S,v=Math.round(v),k=Math.round(k)}else if(2===t.isEqual){var O=ke(h),j=O.height,F=Ee({isTriggerStart:!0,triggerObj:g,height:j}),L=Ee({isTriggerStart:!1,triggerObj:m,height:j});v=Me({top:O.top+F,hasFix:g.hasFix}),k=Me({top:O.top+L,hasFix:m.hasFix})}else{if(g.isEqual){v=Pe(h);var T=Ee({isTriggerStart:!0,triggerObj:g,height:h.offsetHeight+g.heightDiff});v=v+g.diff+T,v=Math.round(v)}else{var C=ke(h),q=Ee({isTriggerStart:!0,triggerObj:g,height:C.height});v=Me({top:C.top+q,hasFix:g.hasFix})}if(m.isEqual){k=Pe(c);var V=Ee({isTriggerStart:!1,triggerObj:m,height:c.offsetHeight+m.heightDiff});k=k+m.diff+V,k=Math.round(k)}else{var z=ke(c),A=Ee({isTriggerStart:!1,triggerObj:m,height:z.height});k=Me({top:z.top+A,hasFix:m.hasFix})}}var R=Math.max(0,k-v),Q=N-(p+e),X=Oe(pe(a),pe(n),v,k,R),Y=Le(i,f,u,d,Q),B=!1!==s?Te({duration:s,distance:R,targetDistance:X,lastDistance:Y,range:250}):null;b[r].trigger.start.converted=v,b[r].trigger.end.converted=k,b[r].distance.total=R,b[r].controller.running=!0,Fe(r,Y,X,N,B)}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");Ve(),D=null,M=!1},Qe=(e,r,t)=>{for(var a=0;a<t;a++)if(e[a]!==r[a])return!1;return!0},Xe=e=>{if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(Xe);var r={};for(var t in e)if(te(e,t)){var a=e[t];r[t]="function"==typeof a?a:Xe(a)}return r};return e=>{if(!h)throw new Error("ScrollMoo requires a browser environment.");if("matchMedia"in h&&h.matchMedia("(prefers-reduced-motion)").matches)throw new Error("Reduce motion is turned on, ScrollMoo can not be initialized.");if(!(!!e&&e.constructor===Object&&0!==ie(e).length))throw new Error("Invalid input. Please provide a non-empty object.");var r=ie(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=()=>{G(),p=parseFloat(Z(n).getPropertyValue("font-size")),g=Math.max(o,s),m=Math.min(o,s),f=s/2,i=a.body;var l=a.createDocumentFragment();if(y=oe(),k=y,r.forEach((r,n)=>{var o=r,s=ae(o),f=s.length;0===f&&console.warn("No element has found in "+o+" selector text.");var p=e[o],g="function"==typeof p,m={},h=[];if(g){var c=p(0)||{};L.forEach(e=>{m[e]=void 0!==c[e]?c[e]:B[e]}),h[0]=c}else L.forEach(e=>{m[e]=void 0!==p[e]?p[e]:B[e]});for(var d,k=function(){var e;e=g?0===x?h[0]:p(x)||{}:Xe(p),L.forEach(r=>{e[r]=m[r]});var r=t(t({},B),e),f={},c=fe(r.indicatorStart),d=fe(r.indicatorEnd),k=pe(c),M=pe(d);E[n]={};for(var S=0;S<7;S++)E[n][V[S]]=r[V[S]];r.sync="number"!=typeof r.sync||isNaN(r.sync)?350:1e3*Math.abs(r.sync),r.sync=Math.max(50,r.sync),r.duration="number"==typeof r.duration&&!isNaN(r.duration)&&1e3*Math.abs(r.duration),r.render3D=!0===r.render3D&&r.render3D;var F=te(K,r.ease),T=!F||"none"===r.ease,C=K[T?"none":"linear"];if(r.ease=K[F?r.ease:"none"],r.triggerStartElement=String(r.triggerStartElement),r.triggerEndElement=String(r.triggerEndElement),r.markers&&(r.markerId=String(r.markerId.replace(/[^A-Za-z0-9\s]/g,"")+" "),r.markers.constructor!==Object&&0===ie(r.markers).length&&(r.markers={}),r.markers.color=te(r.markers,"color")?r.markers.color:"white",r.markers.backgroundColor=te(r.markers,"backgroundColor")?r.markers.backgroundColor:"black",r.markers.fontSize=te(r.markers,"fontSize")?r.markers.fontSize:"0.8em"),r.markers){var I=le({which:"start",id:r.markerId,value:c.isPercent?c.value:(k-y)/u*100},r.markers),N=le({which:"end",id:r.markerId,value:d.isPercent?d.value:(M-y)/u*100},r.markers);l.appendChild(I),l.appendChild(N)}for(var q=0;q<3;q++){var D=O[q];if(te(r.keyframes,D)){if("filter"===D||"backdropFilter"===D)for(var z in r.keyframes[D])te(r.keyframes[D],z)&&(r.keyframes[me(D+"-"+z)]=r.keyframes[D][z]);else r.keyframes=t(t({},r.keyframes[D]),r.keyframes);delete r.keyframes[D]}}var R,Q=function(){var e={},t=!1;if(te(r.keyframes,X)){var a=r.keyframes[X];if(!a||a.constructor!==Object||0===ie(a).length||X.match(/^-(webkit|moz|ms|o)-/i))return console.warn("Invalid "+X+" keyframe value."),delete r.keyframes[X],0;if(te(a,"from")&&delete Object.assign(a,{0:a.from}).from,te(a,"to")&&delete Object.assign(a,{100:a.to}).to,v.test(X)&&te(a,"unit")){var n=a.unit;for(var i in delete a.unit,a)te(a,i)&&(a[i]=a[i]+n)}for(var s=ie(a).sort((e,r)=>parseFloat(ue(e).toFixed(6))-parseFloat(ue(r).toFixed(6))),l=s.length,u=0;u<l;u++){var p=s[u],g=p.match(/^(\d+(?:\.\d+)?)(%)?$/);if(null===g)return console.warn("Dropped "+X+" property: In the "+o+" selector of "+X+" property has an invalid keyframe format. Supported keyframe formats: between from/0/0% ...40/40%...80/80%... to/100/100%"),t=!0,{v:{v:void 0}};g=ue(g[1]),g=parseFloat(g.toFixed(6));var m=ce([X,a[p]]);if(!(g>=0&&g<=100&&m.supported))return t=!0,m.supported?console.warn("Dropped "+X+" property: In the "+o+" selector one of the keyframe was not between from/0/0% ...40/40%...80/80%... to/100/100%."):console.warn("Dropped "+X+" property: In the "+o+" selector, the "+X+" property name or its keyframe value is not supported."),{v:{v:void 0}};e[Math.abs(g/100)]={value:m.value,valueLength:m.valueLength}}if(t)return delete r.keyframes[X],0;var h=Object.values(e).map(e=>e.valueLength),c=h[0],d=h.every(e=>e===c);if(!(ie(e).length>0&&d))return console.warn("Dropped "+X+" property: In the "+o+" selector of "+X+" property's value length is not equal as the rest of the values"),delete r.keyframes[X],0;for(var y in r.keyframes[X]={},e)if(te(e,y)){var k=Object.keys(e),b=e[y].value;if(0===Number(y)&&(f=de([X,b,f])),r.keyframes[X][y]=b,(1!==k.length||"0"!==k[0])&&!e.hasOwnProperty("1")){var w=k[k.length-1];r.keyframes[X][1]=r.keyframes[X][w]}}}};for(var X in r.keyframes)if(0!==(R=Q())&&R)return R.v;var Y=ie(r.keyframes),$=s[x],H=$.style,U=Object.assign({},f),W=(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 f=a[o].cssText||a[o].style.cssText||"";i.push(f)}}}catch(e){}},s=n.length-1;s>=0;s--)o();return i})($),G={},J=[];if(!i.contains($))throw new Error("Invalid arguments. Element must be inside of the body.");for(var _ in ie(Ie).forEach(e=>{G[e]={},ie(Ie[e]).forEach(r=>{G[e][r]=0})}),U){var ae=void 0;if(Array.isArray(U[_]))if(null!==(ae=0!==H[_].length?H[_]:ve(W,_))){for(var oe=0;oe<U[_].length;oe++){var se=U[_][oe],ke=se.replace(/\([^()]*\)/,"");ae.match(new RegExp(ke+"\\(.+?\\)","gi"))?ae=ae.replace(new RegExp(ke+"\\(.+?\\)","gi"),se):1===U[_].length||0===oe?(null!==ae&&(ae+=" "),ae+=se):ae+=" "+se}H[_]=ae}else H[_]=U[_].join(" ");else H.setProperty(_,U[_])}for(var je=H.cssText,Fe=je,Le=ye(je),Te={},Ce=function(){var e=O[Ne],r=ge(e),t=Y.some(r=>"transform"===e&&r in Ie[e]||"filter"===e&&/filter/.test(r)||"backdropFilter"===e&&/backdropFilter/.test(r));if(ne(Le[e])||!t||""!==H[r]&&"none"!==H[r])Te[r]=H[r];else{var a=ve(W,r);null!==a&&(Fe+=" "+r+": "+a+";"),Te[r]=null!==a?a:""}},Ne=0;Ne<3;Ne++)Ce();for(var qe=ye(Fe),De=qe.length,Ve=function(){var e=qe[De][0],t=qe[De][1],a="transform"===e;(ne(t)&&Y.filter(e=>a?e in Ie.transform:e.includes(qe[De][0])).every(e=>1===ie(r.keyframes[e]).length&&te(r.keyframes[e],"0"))||!ne(t)&&te(r.keyframes,e)&&te(r.keyframes[e],"0")&&1===ie(r.keyframes[e]).length||!te(r.keyframes,e)&&!ne(t))&&qe.splice(De,1)};De--;)Ve();for(var ze=0;ze<qe.length;ze++){var[Ae,Re]=qe[ze],Ye=ge(Ae);if(ne(Re))for(var Be=function(){var e="filter"===Ae||"backdropFilter"===Ae?me(Ae+"-"+Re[Ze][0]):Re[Ze][0],t=te(r.keyframes,e)&&Y.find(r=>r===e)&&ie(r.keyframes[e]).some(e=>Number(e)>0)&&ie(r.keyframes[e]).length>=1,a=!1;"transform"===Ae&&(t||(a=!0),t=!0),J.push({interpolate:t,type:{filter:2,"backdrop-filter":3}[Ye]||1,propertyType:Ye,propertyName:Re[Ze][0],keyframes:t?a?{0:Re[Ze][1],1:Re[Ze][1]}:r.keyframes[e]:Re[Ze][1],unit:"",valueLength:null})},Ze=0;Ze<Re.length;Ze++)Be();else J.push({interpolate:!0,type:0,propertyType:null,propertyName:Ae,keyframes:r.keyframes[Ae],unit:"",valueLength:null})}var $e=function(){if(te(r.keyframes,He)){var e,t=0,a=/filter/i.test(He)?ge(He).replace(/.*filter-/,""):He;/filter/.test(He)?t=2:/backdropFilter/.test(He)?t=3:He in Ie.transform&&(t=1),e=J.find(e=>e.propertyName===a&&e.type===t),!e&&ie(r.keyframes[He]).some(e=>Number(e)>0)&&J.push({interpolate:!0,type:t,propertyType:{0:null,1:"transform",2:"filter",3:"backdrop-filter"}[t],propertyName:a,keyframes:r.keyframes[He],unit:"",valueLength:null})}};for(var He in r.keyframes)$e();for(var Ue=H.width,We=H.height,Ge=$.parentElement||$,Je=Z(Ge),Ke=Z($),_e=be($,Ke),er={},rr=function(){var e=j[tr],r=J.find(r=>r.propertyName===e);if(r&&ie(r.keyframes).some(e=>Number(e)>0)){for(var t in er[e]={},er[e][0]=parseFloat(Ke.getPropertyValue(e)),r.keyframes)if(te(r.keyframes,t)&&Number(t)>0){var a=he(r.keyframes[t]);"%"===a.unit?er[e][t]=A(parseFloat(Je.getPropertyValue(e))*(a.number/100)):er[e][t]=ee(a.value)}H[e]="width"===e?Ue:We}else er[e]={},er[e][0]=parseFloat(Ke.getPropertyValue(e))},tr=0;tr<2;tr++)rr();for(var ar=ie(er.width).map(Number).sort((e,r)=>e-r),nr=ie(er.height).map(Number).sort((e,r)=>e-r),ir=function(){var e=J[or];if(!e.interpolate)return 1;var r=ie(e.keyframes).map(Number).sort((e,r)=>e-r),t=r.length,a=!1,n=e.propertyType,i=e.propertyName,o=ge(i),s=me(i);if(te(e.keyframes,"0")||(r.unshift(0),t++),0===e.type)if(["color","background-color"].includes(o)){for(var l=[],u=0;u<t;u++){var f=r[u],p=void 0;f>0&&!te(P,e.keyframes[f])&&(H[o]=e.keyframes[f]),te(P,e.keyframes[f])?p=P[e.keyframes[f]]:(p=Ke.getPropertyValue(o).match(/[\d\.]+/g).map(Number),P[e.keyframes[f]]=p),l.push({keyframe:f,value:p})}var g=l.some(e=>4===e.value.length);if(g)for(var m=0;m<l.length;m++)4!==l[m].value.length&&l[m].value.push(1);e.propertyName=o,e.keyframes=l,e.keyframesLength=l.length,e.unit=g?"rgba":"rgb",e.valueLength=l[0].value.length}else if(["width","height"].includes(i)){for(var h=[],c=0;c<t;c++){var d=r[c];h.push({keyframe:d,value:[er[i][d]]})}e.keyframes=h,e.keyframesLength=h.length,e.unit="px",e.valueLength=1}else if("opacity"===i){var v=[];if(!te(e.keyframes,"0")){var y={0:Ke.getPropertyValue(i)};e.keyframes=Object.assign(y,e.keyframes)}for(var k=0;k<t;k++){var b=r[k],w=e.keyframes[b],x=w.slice(-1);w=parseFloat(w),"%"===x&&(w/=100),w=Math.min(1,Math.max(0,w)),v.push({keyframe:b,value:[w]})}e.keyframes=v,e.keyframesLength=v.length,e.valueLength=1}else{var E=[];if(!te(e.keyframes,"0")){var M={0:Ke.getPropertyValue(i)||0};e.keyframes=Object.assign(M,e.keyframes)}var S=e.keyframes[r[t-1]];S=he(S).unit;for(var O=0;O<t;O++){var j=r[O],F=e.keyframes[j];F=parseFloat(F),E.push({keyframe:j,value:[F]})}e.keyframes=E,e.keyframesLength=E.length,e.valueLength=1,e.unit=S}else{var L=me(n),T=Te[n].match(new RegExp(i+"\\(([^)]+)\\)","gi"));if(null===T?((T=[null])[1]=Ie[L][s].join(", "),a=!0):T.length>1?(T=T[G[n][i]].match(new RegExp(i+"\\(([^)]+)\\)","i")),G[n][i]++):T=Te[n].match(new RegExp(i+"\\(([^)]+)\\)","i")),1===e.type){var C=[];if("perspective"===i){if(!te(e.keyframes,"0")){var I={0:a?T[1]+"px":T[1]};e.keyframes=Object.assign(I,e.keyframes)}for(var N=0;N<t;N++){var q=r[N],D=e.keyframes[q].replace(/[()\s]/g,"");"none"!==D&&0!==D||(console.warn("Dropped "+i+' property: "none" or "0" value can not be animated at '+q+" keyframe."),J.splice(or,1)),C.push({keyframe:q,value:[ee(D)]})}e.keyframes=C,e.keyframesLength=C.length,e.unit="px",e.valueLength=1}else if(/translate/.test(i)){te(e.keyframes,"0")||(e.keyframes=Object.assign({0:T[1]},e.keyframes));for(var V=0;V<t;V++){var z=r[V],R=e.keyframes[z].replace(/[()\s]/g,"").split(",").map(e=>0==e?e+"px":e);"translate"===i&&1===R.length&&R.push("0px");var[Q,X,Y]=R;if("%"===Q.slice(-1)){var B=void 0;B="translateY"===i?we(z,nr,er.height):we(z,ar,er.width),Q=A(B*(parseFloat(Q)/100))}else Q=ee(Q);if(R[0]=Q,void 0!==X){if("%"===X.slice(-1)){var Z=we(z,nr,er.height);X=A(Z*(parseFloat(X)/100))}else X=ee(X);R[1]=X}void 0!==Y&&(R[2]=ee(Y)),C.push({keyframe:z,value:R})}e.keyframes=C,e.keyframesLength=C.length,e.unit="px",e.valueLength=C[0].value.length}else if(/scale/.test(i)){if(!te(e.keyframes,"0")){var $={0:T[1]};e.keyframes=Object.assign($,e.keyframes)}for(var U=0;U<t;U++){var W=r[U],K=e.keyframes[W].replace(/[()\s]/g,"").split(",");"scale"===i&&1===K.length&&K.push(K[0]);var[_,ae,ne]=K,oe=_.slice(-1);if(_=parseFloat(_),"%"===oe&&(_/=100),K[0]=_,void 0!==ae){var se=ae.slice(-1);ae=parseFloat(ae),"%"===se&&(ae/=100),K[1]=ae}if(void 0!==ne){var le=ne.slice(-1);ne=parseFloat(ne),"%"===le&&(ne/=100),K[2]=ne}C.push({keyframe:W,value:K})}e.keyframes=C,e.keyframesLength=C.length,e.valueLength=C[0].value.length}else if(/skew/.test(i)){if(!te(e.keyframes,"0")){var ue={0:T[1]};e.keyframes=Object.assign(ue,e.keyframes)}for(var fe=0;fe<t;fe++){var pe=r[fe],ce=e.keyframes[pe].replace(/[()\s]/g,"").split(",").map(e=>0==e?e+"rad":e).map(re);"skew"===i&&1===ce.length&&ce.push(0),C.push({keyframe:pe,value:ce})}e.keyframes=C,e.keyframesLength=C.length,e.unit="rad",e.valueLength=C[0].value.length}else if(/rotate/.test(i)){if(!te(e.keyframes,"0")){var de={0:T[1]};e.keyframes=Object.assign(de,e.keyframes)}for(var ve=0;ve<t;ve++){var ye=r[ve],ke=e.keyframes[ye].replace(/[()\s]/g,"").split(",").map((e,r)=>"rotate3d"===i?3===r?re("0"==e?e+"rad":e):Number(e):re(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"===i){if(!te(e.keyframes,"0")){var xe={0:a?T[1]+"px":T[1]};e.keyframes=Object.assign(xe,e.keyframes)}for(var Ee=0;Ee<t;Ee++){var Me=r[Ee],Pe=e.keyframes[Me].replace(/[()\s]/g,"");be.push({keyframe:Me,value:[ee(Pe)]})}e.keyframes=be,e.keyframesLength=be.length,e.unit="px",e.valueLength=1}else if("brightness"===i||"contrast"===i||"grayscale"===i||"invert"===i||"opacity"===i||"saturate"===i||"sepia"===i){if(!te(e.keyframes,"0")){var Se={0:T[1]};e.keyframes=Object.assign(Se,e.keyframes)}for(var Oe=0;Oe<t;Oe++){var je=r[Oe],Fe=e.keyframes[je].replace(/[()\s]/g,""),Le=Fe.slice(-1);Fe=parseFloat(Fe),"%"===Le&&(Fe/=100),Fe=Fe>0?Fe:0,be.push({keyframe:je,value:[Fe]})}e.keyframes=be,e.keyframesLength=be.length,e.valueLength=1}else if("hue-rotate"===i){if(!te(e.keyframes,"0")){var Ce={0:T[1]};e.keyframes=Object.assign(Ce,e.keyframes)}for(var Ne=0;Ne<t;Ne++){var qe=r[Ne],De=e.keyframes[qe].replace(/[()\s]/g,"");De=re(0==De?De+"rad":De),be.push({keyframe:qe,value:[De]})}e.keyframes=be,e.keyframesLength=be.length,e.unit="rad",e.valueLength=1}}}},or=0;or<J.length;or++)ir();var sr="";if(!r.render3D){var lr=J.filter(e=>1===e.type);lr.length>0&&(sr="rotate3d(1, 1, 1, 0rad) scale3d(1, 1, 1) translate3d(0px, 0px, 0px)",lr.some(e=>"rotate3d"===e.propertyName)?sr=sr.replace("rotate3d(1, 1, 1, 0rad)",""):lr.some(e=>"scale3d"===e.propertyName)?sr=sr.replace("scale3d(1, 1, 1)",""):lr.some(e=>"translate3d"===e.propertyName)&&(sr=sr.replace("translate3d(0px, 0px, 0px)","")),sr=sr.trim())}je!==H.cssText&&(H.cssText=je);var ur,fr,pr,gr,mr,hr=["border-top-width","padding-top","height","padding-bottom","border-bottom-width"].map(e=>parseInt(Ke.getPropertyValue(e),10)).reduce((e,r)=>e+r,0),cr=fe(r.triggerStart),dr=fe(r.triggerEnd),vr=xe({type:"triggerStartElement",elementName:o,element:$,options:r}),yr=xe({type:"triggerEndElement",elementName:o,element:$,options:r}),kr=((e,r,t,a)=>{var n,i,o=1,s=!1,l=!1,u=e.isEqualNode(r),f=e.isEqualNode(t);return u&&f?(n=a,i=a,s=!0,l=!0):r.isEqualNode(t)?(i=n=be(r),o=2):(o=0,u?(n=a,s=!0):n=be(r),f?(i=a,l=!0):i=be(t)),{start:n,end:i,equality:o,triggerStartEqual:s,triggerEndEqual:l}})($,vr,yr,_e),br=Se(vr,kr.start.position),wr=Me({top:kr.start.top,hasFix:br}),xr=0,Er=0,Mr=0,Pr=0;1===kr.equality?(mr=wr,gr=br,ur=Pe(vr),Er=xr=wr-ur,Pr=Mr=kr.start.height-hr):2===kr.equality?(mr=wr,gr=br):(gr=Se(yr,kr.end.position),mr=Me({top:kr.end.top,hasFix:gr}),kr.triggerStartEqual&&(xr=wr-(ur=Pe(vr)),Mr=kr.start.height-hr),kr.triggerEndEqual&&(Er=mr-Pe(yr),Pr=kr.end.height-hr));var Sr=wr+Ee({isTriggerStart:!0,triggerObj:cr,height:kr.start.height}),Or=mr+Ee({isTriggerStart:!1,triggerObj:dr,height:kr.end.height}),jr=Math.max(0,Or-Sr),Fr=Oe(k,M,Sr,Or,jr),Lr=b[w-1],Tr=J.length,Cr=void 0!==Lr&&Lr.callbackIndex===n,Ir=Cr&&((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.keyframes.length;o++){var s=n.keyframes[o],l=i.keyframes[o];if(!s||!l||!Qe(s.value,l.value,n.valueLength))return!1}}return!0})(Lr.interpolation,J,{previousLength:Lr.interpolationLength,currentLength:Tr});!1!==r.duration&&r.duration/jr<3.5&&console.warn("Based on the visual experience, the "+o+" selector at index "+x+" 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."),Cr&&(Lr.duration===r.duration||Lr.sync===r.sync)&&Ir&&Lr.trigger.start.converted===Sr&&Lr.trigger.end.converted===Or&&(Lr.trigger.isSame||Lr.trigger.start.element===vr&&Lr.trigger.end.element===yr)?(Lr.elements.push($),Lr.originalCssText.push(je),Lr.trigger.isSame||(Lr.trigger.isSame=!0)):(w++,r.markers&&(fr=le({type:2,which:"start",id:r.markerId,value:Sr},r.markers),l.appendChild(fr),pr=le({type:2,which:"end",id:r.markerId,value:Or},r.markers),l.appendChild(pr)),b.push({callbackIndex:n,elements:[$],originalCssText:[je],interpolation:J,interpolationLength:Tr,markers:!!r.markers,render3d:r.render3D,trigger:{isSame:!1,isEqual:kr.equality,start:{isEqual:kr.triggerStartEqual,element:vr,isPercent:cr.isPercent,value:cr.value,hasFix:br,diff:xr,heightDiff:Mr,converted:Sr,unit:cr.unit,marker:void 0!==fr?fr:null},end:{isEqual:kr.triggerEndEqual,element:yr,isPercent:dr.isPercent,value:dr.value,hasFix:gr,diff:Er,heightDiff:Pr,converted:Or,unit:dr.unit,marker:void 0!==pr?pr:null}},indicator:{start:{isPercent:c.isPercent,value:c.value},end:{isPercent:d.isPercent,value:d.value}},smooth:{isSmooth:T,func:C},sync:r.sync,duration:{total:r.duration,last:r.duration},ease:r.ease,distance:{total:jr,target:Fr,last:Fr},time:0,controller:{running:!1,start:!1,end:!1},tag:sr}))},x=0;x<f;x++)if(d=k())return d.v}),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(()=>{De(performance.now()),a.addEventListener("scroll",ze,{passive:!0}),h.addEventListener("resize",Ae,!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",ze),h.removeEventListener("resize",Ae),cancelAnimationFrame(C),c=!1,E=[],M=!1,w=0,P={},T=null,C=null,I=!1,N=0,q=0,D=null;for(var r=0;r<x;r++)!0===e&&qe(b[r].elements,b[r].originalCssText),b[r].markers&&(b[r].trigger.start.marker.remove(),b[r].trigger.end.marker.remove());ae(".scrollmoo-indicator").forEach(e=>e.remove()),b=[],x=0,i=null},refresh:()=>{h.dispatchEvent(new Event("resize"))}},d}});