scrollmoo
Version:
ScrollMoo is a pure JavaScript-based tool that lets you create high-performance, scroll-triggered/scroll-driven, keyframed web animations.
15 lines (13 loc) • 35.1 kB
JavaScript
/**
* ScrollMoo v1.0.7
* 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||"default");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,s,o,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=[],S={},O=["indicator","trigger"],j=["transform","filter","backdropFilter"],F=["transform","filter","backdrop-filter"],L=["width","height"],T=["width","height","color","background-color","opacity"],C=null,N=null,I=!1,q=0,D=0,V=null,z=["onEnter","onEnterReverse","onLeave","onLeaveReverse","onProgress","onAnimationComplete"],R=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A=e=>Math.round(1e4*e)/1e4,X=1.70158,Y=1.525*X,Z=X+1,Q={},B={sync:.35,duration:!1,ease:"none",markers:!1,markerId:"",triggerStartElement:"",triggerEndElement:"",triggerStart:0,triggerEnd:0,indicatorStart:0,indicatorEnd:0,render3D:!1,keyframes:Q,onEnter:Q,onEnterReverse:Q,onLeave:Q,onLeaveReverse:Q,onProgress:Q,onAnimationComplete:Q},$=e=>h.getComputedStyle(e),H=h.screen.width,U=h.screen.height,W=Math.sqrt(H*H+U*U)/h.devicePixelRatio/96,G=Math.sqrt(H*H+U*U)/W,J=()=>{s=l=h.innerWidth,o=u=h.innerHeight},K=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},_={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*Z-X),outBack:e=>{var r=e-1;return 1+r*r*(r*Z+X)},inOutBack:e=>{var r=e-1,t=2*e;return e<.5?e*t*(t*(Y+1)-Y):1+2*r*r*(2*r*(Y+1)+Y)},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-K(1-e),outBounce:K,inOutBounce:e=>e<.5?(1-K(1-2*e))/2:(1+K(2*e-1))/2},ee={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},re=e=>{var r=parseFloat(e);return e=e.match(/[a-z%]+/i)[0],ee[e](r)||r},te=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,ae=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ne=e=>a.querySelectorAll(e),ie=e=>Array.isArray(e),se=e=>Object.keys(e),oe=()=>h.scrollY||n.scrollTop||i.scrollTop||0,le=(e,r,t)=>{"function"==typeof E[r.id][e]&&E[r.id][e](r.elements,t)},ue=(e,r)=>{var t=e.type||1,n=t-1,i=1===t?"fixed":"absolute",s=1===t?"%":"px",o=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+s+";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+";",o.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(o),l.appendChild(u),l},pe=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:pe(e),unit:r?"%":"px"}},me=e=>y+(e.isPercent?u*(e.value/100):e.value),ge=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),he=e=>e.replace(/-([a-z])/gi,((e,r)=>r.toUpperCase())),ce=function(e){var r=pe(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}},de=e=>{var r=e[1],t=!0,a=[],n=e[0],i=ge(n),s=String(r).trim().replace(/\s+/g," ").toLowerCase();return v.test(n)?r=s:T.includes(i)?CSS.supports(i,s)?r=s:t=!1:ae(Ne.transform,n)?(a=s.split(","),r="("+s+")",CSS.supports("transform",n+r)||(t=!1)):ae(Ne.filter,he(i.replace(/.*filter-/,"")))?(r="("+s+")",CSS.supports(i.replace(/(filter)-.*/,"$1"),i.replace(/.*filter-/,"")+r)||(t=!1)):t=!1,{supported:t,value:r,valueLength:a.length}},ve=e=>{var r=e[0],t=e[1],a=ge(r),n=e[2];if(Ne.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-/,""),s=he(a.replace(/(filter)-.*/,"$1"));s in n?n[s].push(i+t):n[s]=[i+t]}else n[a]=t;return n},ye=(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},ke=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=he(a);if(F.includes(a)){for(var s=[],o=n.replace(/, /g,",").split(" "),l=0;l<o.length;l++){var u=o[l].replace(/\((.+?)\)/i,":($1)").split(":");s.push([u[0],u[1]])}r.push([i,s])}else r.push([i,n])}}return r},be=e=>e.getBoundingClientRect(),we=(e,r)=>{var t=r||$(e),a=be(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)}},xe=(e,r,t)=>{if(1===r.length&&0===r[0])return t[0];for(var a,n,i=0,s=r.length-1;i<=s;){var o=Math.floor((i+s)/2);if(r[o]<e)a=r[o],i=o+1;else{if(!(r[o]>e))return parseFloat(t[e]);n=r[o],s=o-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])},Ee=e=>{var r,t=e.type,a=e.elementName,n=e.element,i=e.options,s=e.index,o=P.find((e=>e[0]===t&&e[1]===a&&e[2]===s));return o?o[3]:(""!==i[t]&&i[t]!==a?0===(r=n.parentElement.closest(i[t])||"").length&&(0!==(r=ne(i[t])||"").length?e.total>1?(r=r[0],P.push([t,a,0,r])):(r=r[s],P.push([t,a,s,r])):r=n):r=n,r)},Me=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)),Se=e=>{for(var r=e,t=0;r;)if(r===i){var a=getComputedStyle(r);r=n;var s=a.getPropertyValue("position");!0===/relative|absolute|fixed/i.test(s)&&(a=getComputedStyle(r),"fixed"===s&&"fixed"===a.getPropertyValue("position")?t-=parseInt(a.getPropertyValue("top"),10)+parseInt(a.getPropertyValue("margin-top"),10):t+="fixed"===s?parseInt(getComputedStyle(e).getPropertyValue("margin-top"),10)-parseInt(a.getPropertyValue("margin-top"),10):"relative"===s?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},Oe=(e,r)=>{for(var t=e,a=!1;e;)"fixed"===(t===e?r:$(e).getPropertyValue("position"))?(a=!0,e=null):e=e.parentElement;return a},je=(e,r,t,a,n)=>n*Math.min(Math.max(0,(e-t)/(e-r-(t-a))),1),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)=>{return i=r,s=t,(1-(o=e(Math.min(Math.max(0,n/a),1))))*i+o*s;var i,s,o},Te=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},Ce=(e,r,t)=>{var a=e,n=r-1;if(t>=a[n].keyframe)return a[n].value;for(var i=0;i<n&&a[i+1].keyframe<=t;)i++;var{keyframe:s,value:o}=a[i],{keyframe:l,value:u}=a[i+1];return o.map(((e,r)=>{var a=(u[r]-e)/(l-s);return A(e+a*(t-s))}))},Ne={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]}},Ie={multiplyMatrices:(e,r)=>{var[t,a,n,i,s,o,l,u,p,f,m,g,h,c,d,v]=e,[y,k,b,w,x,E,M,P,S,O,j,F,L,T,C,N]=r;return R[0]=y*t+k*s+b*p+w*h,R[1]=y*a+k*o+b*f+w*c,R[2]=y*n+k*l+b*m+w*d,R[3]=y*i+k*u+b*g+w*v,R[4]=x*t+E*s+M*p+P*h,R[5]=x*a+E*o+M*f+P*c,R[6]=x*n+E*l+M*m+P*d,R[7]=x*i+E*u+M*g+P*v,R[8]=S*t+O*s+j*p+F*h,R[9]=S*a+O*o+j*f+F*c,R[10]=S*n+O*l+j*m+F*d,R[11]=S*i+O*u+j*g+F*v,R[12]=L*t+T*s+C*p+N*h,R[13]=L*a+T*o+C*f+N*c,R[14]=L*n+T*l+C*m+N*d,R[15]=L*i+T*u+C*g+N*v,R},multiply:e=>e.reduce(Ie.multiplyMatrices),prespective:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=-1/e,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),rotate:e=>Ie.rotateZ(e),rotate3d:(e,r,t,a)=>{var n,i,s,o=Math.hypot(e,r,t);return o<1e-6?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:(e*=o=1/o,r*=o,t*=o,n=Math.sin(a),s=1-(i=Math.cos(a)),R[0]=e*e*s+i,R[1]=r*e*s+t*n,R[2]=t*e*s-r*n,R[3]=0,R[4]=e*r*s-t*n,R[5]=r*r*s+i,R[6]=t*r*s+e*n,R[7]=0,R[8]=e*t*s+r*n,R[9]=r*t*s-e*n,R[10]=t*t*s+i,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R)},rotateX:e=>{var r=Math.cos(e),t=Math.sin(e);return R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=r,R[6]=t,R[7]=0,R[8]=0,R[9]=-t,R[10]=r,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},rotateY:e=>{var r=Math.cos(e),t=Math.sin(e);return R[0]=r,R[1]=0,R[2]=-t,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=t,R[9]=0,R[10]=r,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},rotateZ:e=>{var r=Math.cos(e),t=Math.sin(e);return R[0]=r,R[1]=t,R[2]=0,R[3]=0,R[4]=-t,R[5]=r,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},scale:(e,r)=>(R[0]=e,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=r,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),scale3d:(e,r,t)=>(Ie.scale(e,r),R[10]=t,R),scaleX:e=>(R[0]=e,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),scaleY:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=e,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),scaleZ:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=e,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),skew:(e,r)=>(R[0]=1,R[1]=Math.tan(r),R[2]=0,R[3]=0,R[4]=Math.tan(e),R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),skewX:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=Math.tan(e),R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),skewY:e=>(R[0]=1,R[1]=Math.tan(e),R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R),translate:(e,r)=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=e,R[13]=r,R[14]=0,R[15]=1,R),translate3d:(e,r,t)=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=e,R[13]=r,R[14]=t,R[15]=1,R),translateX:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=e,R[13]=0,R[14]=0,R[15]=1,R),translateY:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=e,R[14]=0,R[15]=1,R),translateZ:e=>(R[0]=1,R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=1,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=1,R[11]=0,R[12]=0,R[13]=0,R[14]=e,R[15]=1,R)},qe=(e,r)=>{for(var t=0;t<e.length;t++)e[t].style.cssText=r[t]},De=e=>{I&&(N=requestAnimationFrame(De));var r=[],t=e-D,a=y!==k;D=e,k=y,q=e;for(var n=0;n<x;n++){var{callbackIndex:i,elements:s,originalCssText:o,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:S},time:O,controller:{running:F,start:L,end:T},tag:C}=b[n],V=F,z=S,X=e-O,Y=!1===v?d:w,Z=!1,Q=0,B={elements:s,id:i},$=je(me(g),me(h),f,m,M);if(!I||$!==z||P!==z){if(a)if(0===S&&$===M||S===M&&0===$||$>0&&$<M||0===$&&P>0||$===M&&P<M){var H=Le(c.func,S,P,Y,X),U=!1!==v?Te({duration:v,distance:M,targetDistance:$,lastDistance:H,range:t}):null;Fe(n,H,$,e,U),Q=H}else Q=Le(c.func,S,P,Y,X);else Q=Le(c.func,S,P,Y,X);if(X>Y?F&&(b[n].controller.running=!1,V=!0):F||(b[n].controller.running=!0,V=!0),!I||V){var W={},G=Q/M;if(!1===c.isSmooth&&(G=E(G)),0===G)qe(s,o);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=Ce(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)+")"]:[...Ie[re](...ie)]:re+"("+ie[0]+ne+")")}else _>0&&(W[ee]=W[ee]||[]).push(re+te)}for(var se=0;se<3;se++){var oe=j[se],ue=W[oe];ue&&("transform"===oe?!1===p?W[oe]=C+" "+ue.join(" "):(Ie.multiply(ue),W[oe]="matrix3d("+R+")"):W[oe]=ue.join(" "))}r.push([n,W])}!L&&P>0&&(b[n].controller.start=L=!0,b[n].controller.end=T=!0,le("onEnter",B),P!==M&&(Z=!0,le("onProgress",B,A($/M)))),!T&&P<M&&S>0&&(b[n].controller.end=!0,le("onEnterReverse",B)),L&&S>0&&0===P&&(b[n].controller.start=L=!1,le("onProgress",B,0),le("onLeaveReverse",B)),T&&P===M&&(b[n].controller.end=!1,le("onProgress",B,1),le("onLeave",B)),!Z&&L&&T&&a&&$>0&&$<M&&le("onProgress",B,A($/M)),I&&X>Y&&le("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 s in a)i.setProperty(s,a[s])}})(r)},Ve=()=>{N=requestAnimationFrame(De)},ze=()=>{M||(y=oe(),I||(I=!0,Ve()))},Re=()=>{clearTimeout(C),M=!0,N&&cancelAnimationFrame(N),V||(V=performance.now()),C=setTimeout(Ae,250)},Ae=()=>{J(),y=oe();var e=performance.now();I&&(e-=V),q+=e,I||(I=!0);for(var r=0;r<x;r++){var{trigger:t,indicator:{start:a,end:n},smooth:{func:i},sync:s,duration:{total:o,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===o?s:l,v=void 0,k=void 0;if(1===t.isEqual){var w=Se(h),E=h.offsetHeight+m.heightDiff,P=Me({isTriggerStart:!0,triggerObj:m,height:E}),S=Me({isTriggerStart:!1,triggerObj:g,height:E});v=w+m.diff+P,k=w+g.diff+S,v=Math.round(v),k=Math.round(k)}else if(2===t.isEqual){var O=be(h),j=O.height,F=Me({isTriggerStart:!0,triggerObj:m,height:j}),L=Me({isTriggerStart:!1,triggerObj:g,height:j});v=Pe({top:O.top+F,hasFix:m.hasFix}),k=Pe({top:O.top+L,hasFix:g.hasFix})}else{if(m.isEqual){v=Se(h);var T=Me({isTriggerStart:!0,triggerObj:m,height:h.offsetHeight+m.heightDiff});v=v+m.diff+T,v=Math.round(v)}else{var C=be(h),N=Me({isTriggerStart:!0,triggerObj:m,height:C.height});v=Pe({top:C.top+N,hasFix:m.hasFix})}if(g.isEqual){k=Se(c);var D=Me({isTriggerStart:!1,triggerObj:g,height:c.offsetHeight+g.heightDiff});k=k+g.diff+D,k=Math.round(k)}else{var z=be(c),R=Me({isTriggerStart:!1,triggerObj:g,height:z.height});k=Pe({top:z.top+R,hasFix:g.hasFix})}}var A=Math.max(0,k-v),X=q-(f+e),Y=je(me(a),me(n),v,k,A),Z=Le(i,p,u,d,X),Q=!1!==o?Te({duration:o,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,Fe(r,Z,Y,q,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");Ve(),V=null,M=!1};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=()=>{J(),f=parseFloat($(n).getPropertyValue("font-size")),m=Math.max(s,o),g=Math.min(s,o),p=o/2,i=a.body;var l=a.createDocumentFragment();if(y=oe(),k=y,r.forEach(((r,n)=>{var s=r,o=ne(s),p=o.length;0===p&&console.warn("No element has found in "+s+" selector text.");var f=t(t({},B),e[s]),m={},g=fe(f.indicatorStart),h=fe(f.indicatorEnd),c=me(g),d=me(h);E[n]={};for(var k=0;k<6;k++)E[n][z[k]]=f[z[k]];f.sync="number"!=typeof f.sync||isNaN(f.sync)?350:1e3*Math.abs(f.sync),f.sync=Math.max(50,f.sync),f.duration="number"==typeof f.duration&&!isNaN(f.duration)&&1e3*Math.abs(f.duration),f.render3D=!0===f.render3D&&f.render3D;var x=ae(_,f.ease),M=!x||"none"===f.ease,P=_[M?"none":"linear"];if(f.ease=_[x?f.ease:"none"],f.triggerStartElement=String(f.triggerStartElement),f.triggerEndElement=String(f.triggerEndElement),f.markers&&(f.markerId=String(f.markerId.replace(/[^A-Za-z0-9\s]/g,"")+" "),f.markers.constructor!==Object&&0===se(f.markers).length&&(f.markers={}),f.markers.color=ae(f.markers,"color")?f.markers.color:"white",f.markers.backgroundColor=ae(f.markers,"backgroundColor")?f.markers.backgroundColor:"black",f.markers.fontSize=ae(f.markers,"fontSize")?f.markers.fontSize:"0.8em"),f.markers){var O=ue({which:"start",id:f.markerId,value:g.isPercent?g.value:(c-y)/u*100},f.markers),F=ue({which:"end",id:f.markerId,value:h.isPercent?h.value:(d-y)/u*100},f.markers);l.appendChild(O),l.appendChild(F)}for(var T=0;T<3;T++){var C=j[T];if(ae(f.keyframes,C)){if("filter"===C||"backdropFilter"===C)for(var N in f.keyframes[C])ae(f.keyframes[C],N)&&(f.keyframes[he(C+"-"+N)]=f.keyframes[C][N]);else f.keyframes=t(t({},f.keyframes[C]),f.keyframes);delete f.keyframes[C]}}var I,q=function(){var e={},r=!1;if(ae(f.keyframes,D)){var t=f.keyframes[D];if(!t||t.constructor!==Object||0===se(t).length||D.match(/^-(webkit|moz|ms|o)-/i))return console.warn("Invalid "+D+" keyframe value."),delete f.keyframes[D],0;if(ae(t,"from")&&delete Object.assign(t,{0:t.from}).from,ae(t,"to")&&delete Object.assign(t,{100:t.to}).to,v.test(D)&&ae(t,"unit")){var a=t.unit;for(var n in delete t.unit,t)ae(t,n)&&(t[n]=t[n]+a)}for(var i=se(t).sort(((e,r)=>parseFloat(pe(e).toFixed(6))-parseFloat(pe(r).toFixed(6)))),o=i.length,l=0;l<o;l++){var u=i[l],p=u.match(/^(\d+(?:\.\d+)?)(%)?$/);if(null===p)return console.warn("Dropped "+D+" property: In the "+s+" selector of "+D+" 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};p=pe(p[1]),p=parseFloat(p.toFixed(6));var g=de([D,t[u]]);if(!(p>=0&&p<=100&&g.supported))return r=!0,g.supported?console.warn("Dropped "+D+" property: In the "+s+" selector one of the keyframe was not between from/0/0% ...40/40%...80/80%... to/100/100%."):console.warn("Dropped "+D+" property: In the "+s+" selector, the "+D+" property name or its keyframe value is not supported."),{v:void 0};e[Math.abs(p/100)]={value:g.value,valueLength:g.valueLength}}if(r)return delete f.keyframes[D],0;var h=Object.values(e).map((e=>e.valueLength)),c=h[0],d=h.every((e=>e===c));if(!(se(e).length>0&&d))return console.warn("Dropped "+D+" property: In the "+s+" selector of "+D+" property's value length is not equal as the rest of the values"),delete f.keyframes[D],0;for(var y in f.keyframes[D]={},e)if(ae(e,y)){var k=e[y].value;0===Number(y)&&(m=ve([D,k,m])),f.keyframes[D][y]=k}}};for(var D in f.keyframes)if(0!==(I=q())&&I)return I.v;for(var V=se(f.keyframes),R=function(){var e=o[X],r=e.style,t=Object.assign({},m),u=(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 s=function(){for(var e=n[o],t=r.length-1;t>=0;t--)try{var a=r[t].cssRules||r[t].rules;if(a&&a.length)for(var s=a.length-1;s>=0;s--){var l=a[s].selectorText,u=l.split(", ").some((r=>r===e));if(l&&u){var p=a[s].cssText||a[s].style.cssText||"";i.push(p)}}}catch(e){}},o=n.length-1;o>=0;o--)s();return i})(e),v={},y=[];if(!i.contains(e))throw new Error("Invalid arguments. Element must be inside of the body.");for(var k in se(Ne).forEach((e=>{v[e]={},se(Ne[e]).forEach((r=>{v[e][r]=0}))})),t){var x=void 0;if(Array.isArray(t[k]))if(null!==(x=0!==r[k].length?r[k]:ye(u,k))){for(var E=0;E<t[k].length;E++){var O=t[k][E],F=O.replace(/\([^()]*\)/,"");x.match(new RegExp(F+"\\(.+?\\)","gi"))?x=x.replace(new RegExp(F+"\\(.+?\\)","gi"),O):1===t[k].length||0===E?(null!==x&&(x+=" "),x+=O):x+=" "+O}r[k]=x}else r[k]=t[k].join(" ");else r.setProperty(k,t[k])}for(var T=r.cssText,C=T,N=ke(T),I={},q=function(){var e=j[D],t=ge(e),a=V.some((r=>"transform"===e&&r in Ne[e]||"filter"===e&&/filter/.test(r)||"backdropFilter"===e&&/backdropFilter/.test(r)));if(ie(N[e])||!a||""!==r[t]&&"none"!==r[t])I[t]=r[t];else{var n=ye(u,t);null!==n&&(C+=" "+t+": "+n+";"),I[t]=null!==n?n:""}},D=0;D<3;D++)q();for(var z=ke(C),R=z.length,Y=function(){var e=z[R][0],r=z[R][1],t="transform"===e;(ie(r)&&V.filter((e=>t?e in Ne.transform:e.includes(z[R][0]))).every((e=>1===se(f.keyframes[e]).length&&ae(f.keyframes[e],"0")))||!ie(r)&&ae(f.keyframes,e)&&ae(f.keyframes[e],"0")&&1===se(f.keyframes[e]).length||!ae(f.keyframes,e)&&!ie(r))&&z.splice(R,1)};R--;)Y();for(var Z=0;Z<z.length;Z++){var[Q,B]=z[Z],H=ge(Q);if(ie(B))for(var U=function(){var e="filter"===Q||"backdropFilter"===Q?he(Q+"-"+B[W][0]):B[W][0],r=ae(f.keyframes,e)&&V.find((r=>r===e))&&se(f.keyframes[e]).some((e=>Number(e)>0))&&se(f.keyframes[e]).length>=1,t=!1;"transform"===Q&&(r||(t=!0),r=!0),y.push({interpolate:r,type:{filter:2,"backdrop-filter":3}[H]||1,propertyType:H,propertyName:B[W][0],keyframes:r?t?{0:B[W][1],1:B[W][1]}:f.keyframes[e]:B[W][1],unit:"",valueLength:null})},W=0;W<B.length;W++)U();else y.push({interpolate:!0,type:0,propertyType:null,propertyName:Q,keyframes:f.keyframes[Q],unit:"",valueLength:null})}var G=function(){if(ae(f.keyframes,J)){var e,r=0,t=/filter/i.test(J)?ge(J).replace(/.*filter-/,""):J;/filter/.test(J)?r=2:/backdropFilter/.test(J)?r=3:J in Ne.transform&&(r=1),e=y.find((e=>e.propertyName===t&&e.type===r)),!e&&se(f.keyframes[J]).some((e=>Number(e)>0))&&y.push({interpolate:!0,type:r,propertyType:{0:null,1:"transform",2:"filter",3:"backdrop-filter"}[r],propertyName:t,keyframes:f.keyframes[J],unit:"",valueLength:null})}};for(var J in f.keyframes)G();for(var K=r.width,_=r.height,ee=e.parentElement||e,ne=$(ee),oe=$(e),le=we(e,oe),pe={},me=function(){var e=L[de],t=y.find((r=>r.propertyName===e));if(t&&se(t.keyframes).some((e=>Number(e)>0))){for(var a in pe[e]={},pe[e][0]=parseFloat(oe.getPropertyValue(e)),t.keyframes)if(ae(t.keyframes,a)&&Number(a)>0){var n=ce(t.keyframes[a]);"%"===n.unit?pe[e][a]=A(parseFloat(ne.getPropertyValue(e))*(n.number/100)):pe[e][a]=re(n.value)}r[e]="width"===e?K:_}else pe[e]={},pe[e][0]=parseFloat(oe.getPropertyValue(e))},de=0;de<2;de++)me();for(var ve=se(pe.width).map(Number).sort(((e,r)=>e-r)),be=se(pe.height).map(Number).sort(((e,r)=>e-r)),Fe=function(){var e=y[Le];if(!e.interpolate)return 1;var t=se(e.keyframes).map(Number).sort(((e,r)=>e-r)),a=t.length,n=!1,i=e.propertyName,s=ge(i);if(ae(e.keyframes,"0")||(t.unshift(0),a++),0===e.type)if(["color","background-color"].includes(s)){for(var o=[],l=0;l<a;l++){var u=t[l],p=void 0;u>0&&!ae(S,e.keyframes[u])&&(r[s]=e.keyframes[u]),ae(S,e.keyframes[u])?p=S[e.keyframes[u]]:(p=oe.getPropertyValue(s).match(/[\d\.]+/g).map(Number),S[e.keyframes[u]]=p),o.push({keyframe:u,value:p})}var f=o.some((e=>4===e.value.length));if(f)for(var m=0;m<o.length;m++)4!==o[m].value.length&&o[m].value.push(1);e.propertyName=s,e.keyframes=o,e.keyframesLength=o.length,e.unit=f?"rgba":"rgb",e.valueLength=o[0].value.length}else if(["width","height"].includes(i)){for(var g=[],h=0;h<a;h++){var c=t[h];g.push({keyframe:c,value:[pe[i][c]]})}e.keyframes=g,e.keyframesLength=g.length,e.unit="px",e.valueLength=1}else if("opacity"===i){var d=[];if(!ae(e.keyframes,"0")){var k={0:oe.getPropertyValue(i)};e.keyframes=Object.assign(k,e.keyframes)}for(var b=0;b<a;b++){var w=t[b],x=e.keyframes[w],E=x.slice(-1);x=parseFloat(x),"%"===E&&(x/=100),x=Math.min(1,Math.max(0,x)),d.push({keyframe:w,value:[x]})}e.keyframes=d,e.keyframesLength=d.length,e.valueLength=1}else{var M=[];if(!ae(e.keyframes,"0")){var P={0:oe.getPropertyValue(i)||0};e.keyframes=Object.assign(P,e.keyframes)}var O=e.keyframes[t[a-1]];O=ce(O).unit;for(var j=0;j<a;j++){var F=t[j],L=e.keyframes[F];L=parseFloat(L),M.push({keyframe:F,value:[L]})}e.keyframes=M,e.keyframesLength=M.length,e.valueLength=1,e.unit=O}else{var T=ge(e.propertyType),C=I[T].match(new RegExp(i+"\\(([^)]+)\\)","gi"));if(null===C?((C=[null])[1]=Ne[e.propertyType][i].join(", "),n=!0):C.length>1?(C=C[v[e.propertyType][i]].match(new RegExp(i+"\\(([^)]+)\\)","i")),v[e.propertyType][i]++):C=I[T].match(new RegExp(i+"\\(([^)]+)\\)","i")),1===e.type){var N=[];if("perspective"===i){if(!ae(e.keyframes,"0")){var q={0:n?C[1]+"px":C[1]};e.keyframes=Object.assign(q,e.keyframes)}for(var D=0;D<a;D++){var V=t[D],z=e.keyframes[V].replace(/[()]/g,"");"none"!==z&&0!==z||(console.warn("Dropped "+i+' property: "none" or "0" value can not be animated at '+V+" keyframe."),y.splice(Le,1)),N.push({keyframe:V,value:[re(z)]})}e.keyframes=N,e.keyframesLength=N.length,e.unit="px",e.valueLength=1}else if(/translate/.test(i)){ae(e.keyframes,"0")||(e.keyframes=Object.assign({0:C[1]},e.keyframes));for(var R=0;R<a;R++){var X=t[R],Y=e.keyframes[X].replace(/[()]/g,"").split(",").map((e=>0==e?e+"px":e));"translate"===i&&1===Y.length&&Y.push("0px");var[Z,Q,B]=Y;if("%"===Z.slice(-1)){var $=void 0;$="translateY"===i?xe(X,be,pe.height):xe(X,ve,pe.width),Z=A($*(parseFloat(Z)/100))}else Z=re(Z);if(Y[0]=Z,void 0!==Q){if("%"===Q.slice(-1)){var H=xe(X,be,pe.height);Q=A(H*(parseFloat(Q)/100))}else Q=re(Q);Y[1]=Q}void 0!==B&&(Y[2]=re(B)),N.push({keyframe:X,value:Y})}e.keyframes=N,e.keyframesLength=N.length,e.unit="px",e.valueLength=N[0].value.length}else if(/scale/.test(i)){if(!ae(e.keyframes,"0")){var U={0:C[1]};e.keyframes=Object.assign(U,e.keyframes)}for(var W=0;W<a;W++){var G=t[W],J=e.keyframes[G].replace(/[()]/g,"").split(",");"scale"===i&&1===J.length&&J.push(J[0]);var[K,_,ee]=J,ne=K.slice(-1);if(K=parseFloat(K),"%"===ne&&(K/=100),J[0]=K,void 0!==_){var ie=_.slice(-1);_=parseFloat(_),"%"===ie&&(_/=100),J[1]=_}if(void 0!==ee){var le=ee.slice(-1);ee=parseFloat(ee),"%"===le&&(ee/=100),J[2]=ee}N.push({keyframe:G,value:J})}e.keyframes=N,e.keyframesLength=N.length,e.valueLength=N[0].value.length}else if(/skew/.test(i)){if(!ae(e.keyframes,"0")){var ue={0:C[1]};e.keyframes=Object.assign(ue,e.keyframes)}for(var fe=0;fe<a;fe++){var me=t[fe],he=e.keyframes[me].replace(/[()]/g,"").split(",").map((e=>0==e?e+"rad":e)).map(te);"skew"===i&&1===he.length&&he.push(0),N.push({keyframe:me,value:he})}e.keyframes=N,e.keyframesLength=N.length,e.unit="rad",e.valueLength=N[0].value.length}else if(/rotate/.test(i)){if(!ae(e.keyframes,"0")){var de={0:C[1]};e.keyframes=Object.assign(de,e.keyframes)}for(var ye=0;ye<a;ye++){var ke=t[ye],we=e.keyframes[ke].replace(/[()]/g,"").split(",").map(((e,r)=>"rotate3d"===i?3===r?te("0"==e?e+"rad":e):Number(e):te(0==e?e+"rad":e)));N.push({keyframe:ke,value:we})}e.keyframes=N,e.keyframesLength=N.length,e.unit="rad",e.valueLength=N[0].value.length}}else if(e.type>1){var Ee=[];if("blur"===i){if(!ae(e.keyframes,"0")){var Me={0:n?C[1]+"px":C[1]};e.keyframes=Object.assign(Me,e.keyframes)}for(var Pe=0;Pe<a;Pe++){var Se=t[Pe],Oe=e.keyframes[Se].replace(/[()]/g,"");Ee.push({keyframe:Se,value:[re(Oe)]})}3===e.type&&(e.propertyType="backdrop-filter"),e.keyframes=Ee,e.keyframesLength=Ee.length,e.unit="px",e.valueLength=1}else if("brightness"===i||"contrast"===i||"grayscale"===i||"invert"===i||"opacity"===i||"saturate"===i||"sepia"===i){if(!ae(e.keyframes,"0")){var je={0:C[1]};e.keyframes=Object.assign(je,e.keyframes)}for(var Fe=0;Fe<a;Fe++){var Te=t[Fe],Ce=e.keyframes[Te].replace(/[()]/g,"");"%"===Ce.slice(-1)&&(Ce=parseFloat(Ce)/100),Ce=Ce>0?Ce:0,Ee.push({keyframe:Te,value:[Ce]})}e.keyframes=Ee,e.keyframesLength=Ee.length,e.valueLength=1}else if("hue-rotate"===i){if(!ae(e.keyframes,"0")){var Ie={0:C[1]};e.keyframes=Object.assign(Ie,e.keyframes)}for(var qe=0;qe<a;qe++){var De=t[qe],Ve=e.keyframes[De].replace(/[()]/g,"");Ve=te(0==Ve?Ve+"rad":Ve),Ee.push({keyframe:De,value:[Ve]})}e.keyframes=Ee,e.keyframesLength=Ee.length,e.unit="rad",e.valueLength=1}}}},Le=0;Le<y.length;Le++)Fe();var Te="";if(!f.render3D){var Ce=y.filter((e=>1===e.type)),Ie=Ce.length;1===Ie?ae(Ce[0],"rotate")||ae(Ce[0],"rotateZ")?Te="translate3d(0px, 0px, 0px)":(ae(Ce[0],"scale")||ae(Ce[0],"scaleX")||ae(Ce[0],"scaleY"))&&(Te="rotate(0deg)"):2===Ie&&(Ce.some((e=>"translate"===e.propertyName))||Ce.some((e=>"translateX"===e.propertyName))||Ce.some((e=>"translateY"===e.propertyName)))&&(Ce.some((e=>"rotate"===e.propertyName))||Ce.some((e=>"rotateZ"===e.propertyName)))&&(Te="translate3d(0px, 0px, 0px)")}T!==r.cssText&&(r.cssText=T);var qe,De,Ve,ze,Re,Ae=["border-top-width","padding-top","height","padding-bottom","border-bottom-width"].map((e=>parseInt(oe.getPropertyValue(e),10))).reduce(((e,r)=>e+r),0),Xe=fe(f.triggerStart),Ye=fe(f.triggerEnd),Ze=Ee({type:"triggerStartElement",elementName:s,element:e,total:p,options:f,index:X}),Qe=Ee({type:"triggerEndElement",elementName:s,element:e,total:p,options:f,index:X}),Be=((e,r,t,a)=>{var n,i,s=1,o=!1,l=!1,u=e.isEqualNode(r),p=e.isEqualNode(t);return u&&p?(n=a,i=a,o=!0,l=!0):r.isEqualNode(t)?(i=n=we(r),s=2):(s=0,u?(n=a,o=!0):n=we(r),p?(i=a,l=!0):i=we(t)),{start:n,end:i,equality:s,triggerStartEqual:o,triggerEndEqual:l}})(e,Ze,Qe,le),$e=Oe(Ze,Be.start.position),He=Pe({top:Be.start.top,hasFix:$e}),Ue=0,We=0,Ge=0,Je=0;1===Be.equality?(Re=He,ze=$e,qe=Se(Ze),We=Ue=He-qe,Je=Ge=Be.start.height-Ae):2===Be.equality?(Re=He,ze=$e):(ze=Oe(Qe,Be.end.position),Re=Pe({top:Be.end.top,hasFix:ze}),Be.triggerStartEqual&&(Ue=He-(qe=Se(Ze)),Ge=Be.start.height-Ae),Be.triggerEndEqual&&(We=Re-Se(Qe),Je=Be.end.height-Ae));var Ke=He+Me({isTriggerStart:!0,triggerObj:Xe,height:Be.start.height}),_e=Re+Me({isTriggerStart:!1,triggerObj:Ye,height:Be.end.height}),er=Math.max(0,_e-Ke),rr=je(c,d,Ke,_e,er),tr=b[w-1],ar=y.length,nr=void 0!==tr&&tr.callbackIndex===n;!1!==f.duration&&f.duration/er<3.5&&console.warn("Based on the visual experience, the "+s+" 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.trigger.isSame||tr.trigger.start.element===Ze&&tr.trigger.end.element===Qe)?(tr.elements.push(e),tr.originalCssText.push(T),tr.trigger.isSame||(tr.trigger.isSame=!0)):(w++,f.markers&&(De=ue({type:2,which:"start",id:f.markerId,value:Ke},f.markers),l.appendChild(De),Ve=ue({type:2,which:"end",id:f.markerId,value:_e},f.markers),l.appendChild(Ve)),b.push({callbackIndex:n,elements:[e],originalCssText:[T],interpolation:y,interpolationLength:ar,markers:!!f.markers,render3d:f.render3D,trigger:{isSame:!1,isEqual:Be.equality,start:{isEqual:Be.triggerStartEqual,element:Ze,isPercent:Xe.isPercent,value:Xe.value,hasFix:$e,diff:Ue,heightDiff:Ge,converted:Ke,unit:Xe.unit,marker:void 0!==De?De:null},end:{isEqual:Be.triggerEndEqual,element:Qe,isPercent:Ye.isPercent,value:Ye.value,hasFix:ze,diff:We,heightDiff:Je,converted:_e,unit:Ye.unit,marker:void 0!==Ve?Ve:null}},indicator:{start:{isPercent:g.isPercent,value:g.value},end:{isPercent:h.isPercent,value:h.value}},smooth:{isSmooth:M,func:P},sync:f.sync,duration:{total:f.duration,last:f.duration},ease:f.ease,distance:{total:er,target:rr,last:rr},time:0,controller:{running:!1,start:!1,end:!1},tag:Te}))},X=0;X<p;X++)R()})),0===(x=b.length))throw new Error("There is no initializable values.");b.sort(((e,r)=>e.trigger.start.converted-r.trigger.start.converted)),S={},e=null,i.insertBefore(l,i.firstChild),l=null,requestAnimationFrame((()=>{De(performance.now()),a.addEventListener("scroll",ze,{passive:!0}),h.addEventListener("resize",Re,!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",Re),cancelAnimationFrame(N),c=!1,E=[],M=!1,w=0,P=[],S={},C=null,N=null,I=!1,q=0,D=0,V=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());ne(".scrollmoo-indicator").forEach((e=>e.remove())),b=[],x=0,i=null},refresh:()=>{h.dispatchEvent(new Event("resize"))}},d}}}));