UNPKG

scrollmoo

Version:

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

15 lines (13 loc) 36.1 kB
/** * ScrollMoo v1.1.3 * 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,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,P=[],O={},S=["indicator","trigger"],j=["transform","filter","backdropFilter"],F=["transform","filter","backdrop-filter"],L=["width","height"],T=["width","height","color","background-color","opacity"],C=["ease","markers","render3D"],N=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),U=h.screen.width,W=h.screen.height,G=Math.sqrt(U*U+W*W)/h.devicePixelRatio/96,J=Math.sqrt(U*U+W*W)/G,K=()=>{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=>J*e,cm:e=>J/2.54*e,mm:e=>J/25.4*e,Q:e=>J/25400*e,pt:e=>J/72*e,pc:e=>J/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+S[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(F.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=P.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],P.push([t,a,0,r])):(r=r[o],P.push([t,a,o,r])):r=n):r=n,r)},Pe=e=>(e.isTriggerStart?0:e.height)+(e.triggerObj.isPercent?e.height*(e.triggerObj.value/100):e.triggerObj.value),Oe=e=>Math.round(e.top+(e.hasFix?0:y)),Se=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},je=(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},Fe=(e,r,t,a,n)=>n*Math.min(Math.max(0,(e-t)/(e-r-(t-a))),1),Le=(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},Ce=(e,r,t,a,n)=>Le(r,t,e(Math.min(Math.max(0,n/a),1))),Ne=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(Le(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,P,O,S,j,F,L,T,C,N]=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+P*h,A[5]=x*a+E*s+M*f+P*c,A[6]=x*n+E*l+M*m+P*d,A[7]=x*i+E*u+M*g+P*v,A[8]=O*t+S*o+j*p+F*h,A[9]=O*a+S*s+j*f+F*c,A[10]=O*n+S*l+j*m+F*d,A[11]=O*i+S*u+j*g+F*v,A[12]=L*t+T*o+C*p+N*h,A[13]=L*a+T*s+C*f+N*c,A[14]=L*n+T*l+C*m+N*d,A[15]=L*i+T*u+C*g+N*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:P,last:O},time:S,controller:{running:F,start:L,end:T},tag:C}=b[n],N=F,z=O,R=e-S,Y=!1===v?d:w,Z=!1,Q=0,B={elements:o,id:i},$=Fe(ge(g),ge(h),f,m,M);if(!q||$!==z||P!==z){if(a)if(0===O&&$===M||O===M&&0===$||$>0&&$<M||0===$&&P>0||$===M&&P<M){var H=Ce(c.func,O,P,Y,R),U=!1!==v?Ne({duration:v,distance:M,targetDistance:$,lastDistance:H,range:t}):null;Te(n,H,$,e,U),Q=H}else Q=Ce(c.func,O,P,Y,R);else Q=Ce(c.func,O,P,Y,R);if(R>Y?F&&(b[n].controller.running=!1,N=!0):F||(b[n].controller.running=!0,N=!0),!q||N){var W={},G=Q/M;if(!1===c.isSmooth&&(G=E(G)),0===G)Ve(o,s);else{for(var J=0;J<u;J++){var{interpolate:K,type:_,propertyType:ee,propertyName:re,keyframes:te,keyframesLength:ae,unit:ne}=l[J];if(K){var ie=Ie(te,ae,G);0===_?W[re]=/rgb/i.test(ne)?ne+"("+ie.map(Math.round).join(", ")+")":ie.join(ne+" ")+ne:(W[ee]=W[ee]||[]).push(1===_?!1===p?[re+"("+("rotate3d"!==re?ie.join(ne+", ")+ne:ie.join(", ")+ne)+")"]:[...De[re](...ie)]:re+"("+ie[0]+ne+")")}else _>0&&(W[ee]=W[ee]||[]).push(re+te)}for(var oe=0;oe<3;oe++){var se=j[oe],le=W[se];le&&("transform"===se?!1===p?W[se]=C+" "+le.join(" "):(De.multiply(le),W[se]="matrix3d("+A+")"):W[se]=le.join(" "))}r.push([n,W])}!L&&P>0&&(b[n].controller.start=L=!0,b[n].controller.end=T=!0,ue("onEnter",B),P!==M&&(Z=!0,ue("onProgress",B,X($/M)))),!T&&P<M&&O>0&&(b[n].controller.end=!0,ue("onEnterReverse",B)),L&&O>0&&0===P&&(b[n].controller.start=L=!1,ue("onProgress",B,0),ue("onLeaveReverse",B)),T&&P===M&&(b[n].controller.end=!1,ue("onProgress",B,1),ue("onLeave",B)),!Z&&L&&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(N),M=!0,I&&cancelAnimationFrame(I),z||(z=performance.now()),N=setTimeout(Ye,250)},Ye=()=>{K(),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=Se(h),E=h.offsetHeight+m.heightDiff,P=Pe({isTriggerStart:!0,triggerObj:m,height:E}),O=Pe({isTriggerStart:!1,triggerObj:g,height:E});v=w+m.diff+P,k=w+g.diff+O,v=Math.round(v),k=Math.round(k)}else if(2===t.isEqual){var S=we(h),j=S.height,F=Pe({isTriggerStart:!0,triggerObj:m,height:j}),L=Pe({isTriggerStart:!1,triggerObj:g,height:j});v=Oe({top:S.top+F,hasFix:m.hasFix}),k=Oe({top:S.top+L,hasFix:g.hasFix})}else{if(m.isEqual){v=Se(h);var T=Pe({isTriggerStart:!0,triggerObj:m,height:h.offsetHeight+m.heightDiff});v=v+m.diff+T,v=Math.round(v)}else{var C=we(h),N=Pe({isTriggerStart:!0,triggerObj:m,height:C.height});v=Oe({top:C.top+N,hasFix:m.hasFix})}if(g.isEqual){k=Se(c);var I=Pe({isTriggerStart:!1,triggerObj:g,height:c.offsetHeight+g.heightDiff});k=k+g.diff+I,k=Math.round(k)}else{var V=we(c),R=Pe({isTriggerStart:!1,triggerObj:g,height:V.height});k=Oe({top:V.top+R,hasFix:g.hasFix})}}var A=Math.max(0,k-v),X=D-(f+e),Y=Fe(ge(a),ge(n),v,k,A),Z=Ce(i,p,u,d,X),Q=!1!==s?Ne({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,t)=>{for(var a=0;a<t;a++)if(e[a]!==r[a])return!1;return!0};return 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=()=>{K(),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),p=s.length;0===p&&console.warn("No element has found in "+o+" selector text.");var f=e[o],m="function"==typeof f,g={},h=[];if(m){var c=f(0)||{};C.forEach(e=>{g[e]=void 0!==c[e]?c[e]:$[e]}),h[0]=c}else C.forEach(e=>{g[e]=void 0!==f[e]?f[e]:$[e]});for(var d,k=function(){var e;e=m?0===x?h[0]:f(x)||{}:f,C.forEach(r=>{e[r]=g[r]});var r=t(t({},$),e),c={},d=me(r.indicatorStart),k=me(r.indicatorEnd),M=ge(d),P=ge(k);E[n]={};for(var S=0;S<6;S++)E[n][R[S]]=r[R[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=ne(ee,r.ease),T=!F||"none"===r.ease,N=ee[T?"none":"linear"];if(r.ease=ee[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===se(r.markers).length&&(r.markers={}),r.markers.color=ne(r.markers,"color")?r.markers.color:"white",r.markers.backgroundColor=ne(r.markers,"backgroundColor")?r.markers.backgroundColor:"black",r.markers.fontSize=ne(r.markers,"fontSize")?r.markers.fontSize:"0.8em"),r.markers){var I=pe({which:"start",id:r.markerId,value:d.isPercent?d.value:(M-y)/u*100},r.markers),q=pe({which:"end",id:r.markerId,value:k.isPercent?k.value:(P-y)/u*100},r.markers);l.appendChild(I),l.appendChild(q)}for(var D=0;D<3;D++){var V=j[D];if(ne(r.keyframes,V)){if("filter"===V||"backdropFilter"===V)for(var z in r.keyframes[V])ne(r.keyframes[V],z)&&(r.keyframes[ce(V+"-"+z)]=r.keyframes[V][z]);else r.keyframes=t(t({},r.keyframes[V]),r.keyframes);delete r.keyframes[V]}}var A,Y=function(){var e={},t=!1;if(ne(r.keyframes,Z)){var a=r.keyframes[Z];if(!a||a.constructor!==Object||0===se(a).length||Z.match(/^-(webkit|moz|ms|o)-/i))return console.warn("Invalid "+Z+" keyframe value."),delete r.keyframes[Z],0;if(ne(a,"from")&&delete Object.assign(a,{0:a.from}).from,ne(a,"to")&&delete Object.assign(a,{100:a.to}).to,v.test(Z)&&ne(a,"unit")){var n=a.unit;for(var i in delete a.unit,a)ne(a,i)&&(a[i]=a[i]+n)}for(var s=se(a).sort((e,r)=>parseFloat(fe(e).toFixed(6))-parseFloat(fe(r).toFixed(6))),l=s.length,u=0;u<l;u++){var p=s[u],f=p.match(/^(\d+(?:\.\d+)?)(%)?$/);if(null===f)return console.warn("Dropped "+Z+" property: In the "+o+" selector of "+Z+" 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}};f=fe(f[1]),f=parseFloat(f.toFixed(6));var m=ve([Z,a[p]]);if(!(f>=0&&f<=100&&m.supported))return t=!0,m.supported?console.warn("Dropped "+Z+" 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 "+Z+" property: In the "+o+" selector, the "+Z+" property name or its keyframe value is not supported."),{v:{v:void 0}};e[Math.abs(f/100)]={value:m.value,valueLength:m.valueLength}}if(t)return delete r.keyframes[Z],0;var g=Object.values(e).map(e=>e.valueLength),h=g[0],d=g.every(e=>e===h);if(!(se(e).length>0&&d))return console.warn("Dropped "+Z+" property: In the "+o+" selector of "+Z+" property's value length is not equal as the rest of the values"),delete r.keyframes[Z],0;for(var y in r.keyframes[Z]={},e)if(ne(e,y)){var k=Object.keys(e),b=e[y].value;if(0===Number(y)&&(c=ye([Z,b,c])),r.keyframes[Z][y]=b,(1!==k.length||"0"!==k[0])&&!e.hasOwnProperty("1")){var w=k[k.length-1];r.keyframes[Z][1]=r.keyframes[Z][w]}}}};for(var Z in r.keyframes)if(0!==(A=Y())&&A)return A.v;var Q=se(r.keyframes),B=s[x],U=B.style,W=Object.assign({},c),G=(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})(B),J={},K=[];if(!i.contains(B))throw new Error("Invalid arguments. Element must be inside of the body.");for(var _ in se(qe).forEach(e=>{J[e]={},se(qe[e]).forEach(r=>{J[e][r]=0})}),W){var re=void 0;if(Array.isArray(W[_]))if(null!==(re=0!==U[_].length?U[_]:ke(G,_))){for(var ie=0;ie<W[_].length;ie++){var le=W[_][ie],ue=le.replace(/\([^()]*\)/,"");re.match(new RegExp(ue+"\\(.+?\\)","gi"))?re=re.replace(new RegExp(ue+"\\(.+?\\)","gi"),le):1===W[_].length||0===ie?(null!==re&&(re+=" "),re+=le):re+=" "+le}U[_]=re}else U[_]=W[_].join(" ");else U.setProperty(_,W[_])}for(var we=U.cssText,Le=we,Te=be(we),Ce={},Ne=function(){var e=j[Ie],r=he(e),t=Q.some(r=>"transform"===e&&r in qe[e]||"filter"===e&&/filter/.test(r)||"backdropFilter"===e&&/backdropFilter/.test(r));if(oe(Te[e])||!t||""!==U[r]&&"none"!==U[r])Ce[r]=U[r];else{var a=ke(G,r);null!==a&&(Le+=" "+r+": "+a+";"),Ce[r]=null!==a?a:""}},Ie=0;Ie<3;Ie++)Ne();for(var De=be(Le),Ve=De.length,ze=function(){var e=De[Ve][0],t=De[Ve][1],a="transform"===e;(oe(t)&&Q.filter(e=>a?e in qe.transform:e.includes(De[Ve][0])).every(e=>1===se(r.keyframes[e]).length&&ne(r.keyframes[e],"0"))||!oe(t)&&ne(r.keyframes,e)&&ne(r.keyframes[e],"0")&&1===se(r.keyframes[e]).length||!ne(r.keyframes,e)&&!oe(t))&&De.splice(Ve,1)};Ve--;)ze();for(var Re=0;Re<De.length;Re++){var[Ae,Xe]=De[Re],Ye=he(Ae);if(oe(Xe))for(var Qe=function(){var e="filter"===Ae||"backdropFilter"===Ae?ce(Ae+"-"+Xe[Be][0]):Xe[Be][0],t=ne(r.keyframes,e)&&Q.find(r=>r===e)&&se(r.keyframes[e]).some(e=>Number(e)>0)&&se(r.keyframes[e]).length>=1,a=!1;"transform"===Ae&&(t||(a=!0),t=!0),K.push({interpolate:t,type:{filter:2,"backdrop-filter":3}[Ye]||1,propertyType:Ye,propertyName:Xe[Be][0],keyframes:t?a?{0:Xe[Be][1],1:Xe[Be][1]}:r.keyframes[e]:Xe[Be][1],unit:"",valueLength:null})},Be=0;Be<Xe.length;Be++)Qe();else K.push({interpolate:!0,type:0,propertyType:null,propertyName:Ae,keyframes:r.keyframes[Ae],unit:"",valueLength:null})}var $e=function(){if(ne(r.keyframes,He)){var e,t=0,a=/filter/i.test(He)?he(He).replace(/.*filter-/,""):He;/filter/.test(He)?t=2:/backdropFilter/.test(He)?t=3:He in qe.transform&&(t=1),e=K.find(e=>e.propertyName===a&&e.type===t),!e&&se(r.keyframes[He]).some(e=>Number(e)>0)&&K.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=U.width,We=U.height,Ge=B.parentElement||B,Je=H(Ge),Ke=H(B),_e=xe(B,Ke),er={},rr=function(){var e=L[tr],r=K.find(r=>r.propertyName===e);if(r&&se(r.keyframes).some(e=>Number(e)>0)){for(var t in er[e]={},er[e][0]=parseFloat(Ke.getPropertyValue(e)),r.keyframes)if(ne(r.keyframes,t)&&Number(t)>0){var a=de(r.keyframes[t]);"%"===a.unit?er[e][t]=X(parseFloat(Je.getPropertyValue(e))*(a.number/100)):er[e][t]=te(a.value)}U[e]="width"===e?Ue:We}else er[e]={},er[e][0]=parseFloat(Ke.getPropertyValue(e))},tr=0;tr<2;tr++)rr();for(var ar=se(er.width).map(Number).sort((e,r)=>e-r),nr=se(er.height).map(Number).sort((e,r)=>e-r),ir=function(){var e=K[or];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(O,e.keyframes[l])&&(U[i]=e.keyframes[l]),ne(O,e.keyframes[l])?u=O[e.keyframes[l]]:(u=Ke.getPropertyValue(i).match(/[\d\.]+/g).map(Number),O[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:[er[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:Ke.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:Ke.getPropertyValue(n)||0};e.keyframes=Object.assign(x,e.keyframes)}var E=e.keyframes[r[t-1]];E=de(E).unit;for(var M=0;M<t;M++){var P=r[M],S=e.keyframes[P];S=parseFloat(S),w.push({keyframe:P,value:[S]})}e.keyframes=w,e.keyframesLength=w.length,e.valueLength=1,e.unit=E}else{var j=he(e.propertyType),F=Ce[j].match(new RegExp(n+"\\(([^)]+)\\)","gi"));if(null===F?((F=[null])[1]=qe[e.propertyType][n].join(", "),a=!0):F.length>1?(F=F[J[e.propertyType][n]].match(new RegExp(n+"\\(([^)]+)\\)","i")),J[e.propertyType][n]++):F=Ce[j].match(new RegExp(n+"\\(([^)]+)\\)","i")),1===e.type){var L=[];if("perspective"===n){if(!ne(e.keyframes,"0")){var T={0:a?F[1]+"px":F[1]};e.keyframes=Object.assign(T,e.keyframes)}for(var C=0;C<t;C++){var N=r[C],I=e.keyframes[N].replace(/[()]/g,"");"none"!==I&&0!==I||(console.warn("Dropped "+n+' property: "none" or "0" value can not be animated at '+N+" keyframe."),K.splice(or,1)),L.push({keyframe:N,value:[te(I)]})}e.keyframes=L,e.keyframesLength=L.length,e.unit="px",e.valueLength=1}else if(/translate/.test(n)){ne(e.keyframes,"0")||(e.keyframes=Object.assign({0:F[1]},e.keyframes));for(var q=0;q<t;q++){var D=r[q],V=e.keyframes[D].replace(/[()]/g,"").split(",").map(e=>0==e?e+"px":e);"translate"===n&&1===V.length&&V.push("0px");var[z,R,A]=V;if("%"===z.slice(-1)){var Y=void 0;Y="translateY"===n?Ee(D,nr,er.height):Ee(D,ar,er.width),z=X(Y*(parseFloat(z)/100))}else z=te(z);if(V[0]=z,void 0!==R){if("%"===R.slice(-1)){var Z=Ee(D,nr,er.height);R=X(Z*(parseFloat(R)/100))}else R=te(R);V[1]=R}void 0!==A&&(V[2]=te(A)),L.push({keyframe:D,value:V})}e.keyframes=L,e.keyframesLength=L.length,e.unit="px",e.valueLength=L[0].value.length}else if(/scale/.test(n)){if(!ne(e.keyframes,"0")){var Q={0:F[1]};e.keyframes=Object.assign(Q,e.keyframes)}for(var B=0;B<t;B++){var $=r[B],H=e.keyframes[$].replace(/[()]/g,"").split(",");"scale"===n&&1===H.length&&H.push(H[0]);var[W,G,_]=H,ee=W.slice(-1);if(W=parseFloat(W),"%"===ee&&(W/=100),H[0]=W,void 0!==G){var re=G.slice(-1);G=parseFloat(G),"%"===re&&(G/=100),H[1]=G}if(void 0!==_){var ie=_.slice(-1);_=parseFloat(_),"%"===ie&&(_/=100),H[2]=_}L.push({keyframe:$,value:H})}e.keyframes=L,e.keyframesLength=L.length,e.valueLength=L[0].value.length}else if(/skew/.test(n)){if(!ne(e.keyframes,"0")){var oe={0:F[1]};e.keyframes=Object.assign(oe,e.keyframes)}for(var le=0;le<t;le++){var ue=r[le],pe=e.keyframes[ue].replace(/[()]/g,"").split(",").map(e=>0==e?e+"rad":e).map(ae);"skew"===n&&1===pe.length&&pe.push(0),L.push({keyframe:ue,value:pe})}e.keyframes=L,e.keyframesLength=L.length,e.unit="rad",e.valueLength=L[0].value.length}else if(/rotate/.test(n)){if(!ne(e.keyframes,"0")){var fe={0:F[1]};e.keyframes=Object.assign(fe,e.keyframes)}for(var me=0;me<t;me++){var ge=r[me],ce=e.keyframes[ge].replace(/[()]/g,"").split(",").map((e,r)=>"rotate3d"===n?3===r?ae("0"==e?e+"rad":e):Number(e):ae(0==e?e+"rad":e));L.push({keyframe:ge,value:ce})}e.keyframes=L,e.keyframesLength=L.length,e.unit="rad",e.valueLength=L[0].value.length}}else if(e.type>1){var ve=[];if("blur"===n){if(!ne(e.keyframes,"0")){var ye={0:a?F[1]+"px":F[1]};e.keyframes=Object.assign(ye,e.keyframes)}for(var ke=0;ke<t;ke++){var be=r[ke],we=e.keyframes[be].replace(/[()]/g,"");ve.push({keyframe:be,value:[te(we)]})}3===e.type&&(e.propertyType="backdrop-filter"),e.keyframes=ve,e.keyframesLength=ve.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 xe={0:F[1]};e.keyframes=Object.assign(xe,e.keyframes)}for(var Me=0;Me<t;Me++){var Pe=r[Me],Oe=e.keyframes[Pe].replace(/[()]/g,"");"%"===Oe.slice(-1)&&(Oe=parseFloat(Oe)/100),Oe=Oe>0?Oe:0,ve.push({keyframe:Pe,value:[Oe]})}e.keyframes=ve,e.keyframesLength=ve.length,e.valueLength=1}else if("hue-rotate"===n){if(!ne(e.keyframes,"0")){var Se={0:F[1]};e.keyframes=Object.assign(Se,e.keyframes)}for(var je=0;je<t;je++){var Fe=r[je],Le=e.keyframes[Fe].replace(/[()]/g,"");Le=ae(0==Le?Le+"rad":Le),ve.push({keyframe:Fe,value:[Le]})}e.keyframes=ve,e.keyframesLength=ve.length,e.unit="rad",e.valueLength=1}}}},or=0;or<K.length;or++)ir();var sr="";if(!r.render3D){var lr=K.filter(e=>1===e.type),ur=lr.length;1===ur?ne(lr[0],"rotate")||ne(lr[0],"rotateZ")?sr="translate3d(0px, 0px, 0px)":(ne(lr[0],"scale")||ne(lr[0],"scaleX")||ne(lr[0],"scaleY"))&&(sr="rotate(0deg)"):2===ur&&(lr.some(e=>"translate"===e.propertyName)||lr.some(e=>"translateX"===e.propertyName)||lr.some(e=>"translateY"===e.propertyName))&&(lr.some(e=>"rotate"===e.propertyName)||lr.some(e=>"rotateZ"===e.propertyName))&&(sr="translate3d(0px, 0px, 0px)")}we!==U.cssText&&(U.cssText=we);var pr,fr,mr,gr,hr,cr=["border-top-width","padding-top","height","padding-bottom","border-bottom-width"].map(e=>parseInt(Ke.getPropertyValue(e),10)).reduce((e,r)=>e+r,0),dr=me(r.triggerStart),vr=me(r.triggerEnd),yr=Me({type:"triggerStartElement",elementName:o,element:B,total:p,options:r,index:x}),kr=Me({type:"triggerEndElement",elementName:o,element:B,total:p,options:r,index:x}),br=((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}})(B,yr,kr,_e),wr=je(yr,br.start.position),xr=Oe({top:br.start.top,hasFix:wr}),Er=0,Mr=0,Pr=0,Or=0;1===br.equality?(hr=xr,gr=wr,pr=Se(yr),Mr=Er=xr-pr,Or=Pr=br.start.height-cr):2===br.equality?(hr=xr,gr=wr):(gr=je(kr,br.end.position),hr=Oe({top:br.end.top,hasFix:gr}),br.triggerStartEqual&&(Er=xr-(pr=Se(yr)),Pr=br.start.height-cr),br.triggerEndEqual&&(Mr=hr-Se(kr),Or=br.end.height-cr));var Sr=xr+Pe({isTriggerStart:!0,triggerObj:dr,height:br.start.height}),jr=hr+Pe({isTriggerStart:!1,triggerObj:vr,height:br.end.height}),Fr=Math.max(0,jr-Sr),Lr=Fe(M,P,Sr,jr,Fr),Tr=b[w-1],Cr=K.length,Nr=void 0!==Tr&&Tr.callbackIndex===n,Ir=Nr&&((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||!Ze(s.value,l.value,n.valueLength))return!1}}return!0})(Tr.interpolation,K,{previousLength:Tr.interpolationLength,currentLength:Cr});!1!==r.duration&&r.duration/Fr<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."),Nr&&(Tr.duration===r.duration||Tr.sync===r.sync)&&Ir&&Tr.trigger.start.converted===Sr&&Tr.trigger.end.converted===jr&&(Tr.trigger.isSame||Tr.trigger.start.element===yr&&Tr.trigger.end.element===kr)?(Tr.elements.push(B),Tr.originalCssText.push(we),Tr.trigger.isSame||(Tr.trigger.isSame=!0)):(w++,r.markers&&(fr=pe({type:2,which:"start",id:r.markerId,value:Sr},r.markers),l.appendChild(fr),mr=pe({type:2,which:"end",id:r.markerId,value:jr},r.markers),l.appendChild(mr)),b.push({callbackIndex:n,elements:[B],originalCssText:[we],interpolation:K,interpolationLength:Cr,markers:!!r.markers,render3d:r.render3D,trigger:{isSame:!1,isEqual:br.equality,start:{isEqual:br.triggerStartEqual,element:yr,isPercent:dr.isPercent,value:dr.value,hasFix:wr,diff:Er,heightDiff:Pr,converted:Sr,unit:dr.unit,marker:void 0!==fr?fr:null},end:{isEqual:br.triggerEndEqual,element:kr,isPercent:vr.isPercent,value:vr.value,hasFix:gr,diff:Mr,heightDiff:Or,converted:jr,unit:vr.unit,marker:void 0!==mr?mr:null}},indicator:{start:{isPercent:d.isPercent,value:d.value},end:{isPercent:k.isPercent,value:k.value}},smooth:{isSmooth:T,func:N},sync:r.sync,duration:{total:r.duration,last:r.duration},ease:r.ease,distance:{total:Fr,target:Lr,last:Lr},time:0,controller:{running:!1,start:!1,end:!1},tag:sr}))},x=0;x<p;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),O={},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,P=[],O={},N=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"))}},d}}});