@fiddle-digital/string-tune 0.0.50 → 0.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.StringTune=s():t.StringTune=s()}(this,(()=>(()=>{"use strict";var t={d:(s,e)=>{for(var i in e)t.o(e,i)&&!t.o(s,i)&&Object.defineProperty(s,i,{enumerable:!0,get:e[i]})},o:(t,s)=>Object.prototype.hasOwnProperty.call(t,s),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},s={};t.r(s),t.d(s,{StringAnchor:()=>w,StringCursor:()=>a,StringDelayLerpTracker:()=>W,StringFPSTracker:()=>j,StringGlide:()=>M,StringLazy:()=>i,StringLerp:()=>x,StringLerpTracker:()=>Y,StringLoading:()=>n,StringMagnetic:()=>l,StringParallax:()=>C,StringPositionTracker:()=>k,StringProgress:()=>P,StringResponsive:()=>f,StringScrollbar:()=>E,StringSplit:()=>H,StringTune:()=>$,StringVideoAutoplay:()=>o,default:()=>$});class e{get type(){return this._type}constructor(t,s=null){this.settings=null,this.objectsMap=new Map,this.objects=new Array,this.htmlKey="",this._type=1,this.data=t.data,this.lerp=t.lerp,this.attribute=t.attribute,this.boundingClientRect=t.boundingClientRect,this.position=t.position,this.virtualCursor=t.virtualCursor,this.events=t.events,this.loop=t.loop,this.settings=s}initObject(t,s){}onScrollStart(){}onScrollStop(){}onChangeDirection(){}destructor(){this.objects=new Array,this.objectsMap=new Map}onChangeScrollParams(){}tryConnect(t){return t.keys.includes(this.htmlKey)}connect(t){t.connect(this),this.onConnect(t)}addObject(t,s){this.objectsMap.has(t)||(this.objectsMap.set(t,s),this.objects.push(s))}removeObject(t){const s=this.objectsMap.get(t);if(s){this.objectsMap.delete(t);const e=this.objects.indexOf(s);-1!==e&&this.objects.splice(e,1)}}onStart(){}onUpdate(t){}onResize(){}onConnect(t){}onRebuild(){}onScroll(t){}onMouseMove(t){}onWheel(t){}onChangeDevice(){}onChangeScrollDirection(){}onMutationObserver(t,s){}}class i extends e{constructor(t){super(t),this.isStartLoaded=!1,this.imageLoadingCount=0,this.htmlKey="lazy"}onStart(){document.querySelectorAll("img[string-lazy]").forEach((t=>{this.load(t)})),this.isStartLoaded=!0}onConnect(t){if(this.imageLoadingCount++,this.isStartLoaded){let s=t.el;this.load(s)}}load(t){this.getImageSize(t,t.getAttribute("string-lazy")),t.classList.add("lazyLoad"),t.src=t.getAttribute("string-lazy"),t.addEventListener("load",(()=>{t.classList.add("-loaded")}))}getImageSize(t,s){return new Promise(((e,i)=>{const n=new XMLHttpRequest;n.open("GET",s,!0),n.responseType="arraybuffer",n.onload=()=>{if(206===n.status||200===n.status){const s=n.response,o=new Blob([s]),r=new Image;r.onload=()=>{t.style.aspectRatio=`${r.width} / ${r.height}`,e({width:r.width,height:r.height}),URL.revokeObjectURL(r.src),this.imageLoadingCount--,this.imageLoadingCount<=0&&(this.events.emit("all-image-loaded",null),this.imageLoadingCount=0)},r.onerror=()=>{i(new Error("Failed to load image"))},r.src=URL.createObjectURL(o)}else i(new Error("Failed to load image"))},n.onerror=()=>{i(new Error("Network error"))},n.setRequestHeader("Range","bytes=0-"),n.send()}))}}class n extends e{constructor(t,s=null){super(t),this.loadingTimeout=0,this._type=2,null!=s&&null!=s.timeout&&(this.loadingTimeout=s.timeout)}onStart(){setTimeout((()=>{document.documentElement.classList.add("-loaded")}),this.loadingTimeout)}}class o extends e{constructor(t){super(t),this.htmlKey="autoplay"}onConnect(t){const s=t.el,e=this.attribute.process(s,"string-src",""),i=null!=this.attribute.process(s,"string-started",null);"video"===s.tagName.toLowerCase()&&e&&0==i?(s.setAttribute("muted","muted"),s.setAttribute("playsinline",""),s.setAttribute("loop",""),s.setAttribute("autoplay",""),s.src=e,s.muted=!0,s.addEventListener("canplaythrough",(()=>{0==(null!=this.attribute.process(s,"string-started",null))&&this.tryPlay(t,s)}),{once:!0}),s.load()):console.warn("StringVideoAutoplay: Element is not a <video> tag or string-src is missing.",t.el)}tryPlay(t,s){s.play().catch((s=>{console.warn("Autoplay failed:",s),t.started=!1})).then((()=>{t.started=!0,s.setAttribute("string-started","")}))}}function r(t,s=.1,e=1,i=.05,n=.65){return t<s?1:(t>1&&(t=1),t<=e?n-(t-s)/(e-s)*(n-i):i)}class a extends e{constructor(t,s=null){super(t,s),this.oldX=0,this.oldY=0,this.enterObjectsMap=new Map,this.enterObjects=new Array,this.overCount=0,this.htmlKey="cursor",this.cursor=document.querySelector("[string-cursor]"),this.cursorContent=document.querySelector("[string-cursor-content]")}onStart(){null!=this.settings?null!=this.settings["string-lerp-cursor"]&&(this.virtualCursor.mouseLerp=r(this.settings["string-lerp-cursor"])):this.virtualCursor.mouseLerp=r(.5)}initObject(t,s){let e=this.attribute.process(s,"string-lerp",.5);null!=this.settings&&null!=this.settings["string-lerp-target"]&&(e=this.attribute.process(s,"string-lerp",this.settings["string-lerp-target"])),t.lerp=r(e)}onUpdate(t){requestAnimationFrame((()=>{if(this.objects.forEach((t=>{if(t.isMouseOver&&!t.cursorTargetDisabled){let s=t.el.getBoundingClientRect();const e=this.virtualCursor.x-s.left,i=this.virtualCursor.y-s.top,n=t.mousePixelFloatX-e,o=t.mousePixelFloatY-i;if(n*n+o*o>1e-4){0==t.isMouseMove&&(t.isMouseMove=!0,t.mousePixelFloatX=e,t.mousePixelFloatY=i,this.events.emit(`mousemove_start_${t.id}`,null));let n=this.lerp.process(t.mousePixelFloatX,e,t.lerp),o=this.lerp.process(t.mousePixelFloatY,i,t.lerp);t.mousePixelFloatX=t.mousePixelFloatX+n,t.mousePixelFloatY=t.mousePixelFloatY+o;const r=this.calculateOffset(t.alignment,t.mousePixelFloatX,s.width),a=this.calculateOffset(t.alignment,t.mousePixelFloatY,s.height);t.mouseX=r,t.mouseY=a,this.setMouseCoordinates(t,t.mouseX,t.mouseY),this.events.emit(`mousemove_${t.id}`,{x:t.mouseX,y:t.mouseY}),this.events.emit(`mousemove_pixel_${t.id}`,{x:t.mousePixelFloatX,y:t.mousePixelFloatY})}else t.mousePixelFloatX=e,t.mousePixelFloatY=i,this.events.emit(`mousemove_end_${t.id}`,null)}else if(0!=t.mouseX||0!=t.mouseY){t.isMouseMove=!1;let s=t.el.getBoundingClientRect();const e=this.calculateOffset("center",t.halfWidth,s.width),i=this.calculateOffset("center",t.halfHeight,s.height);t.mouseX+=this.lerp.process(t.mouseX,e,t.lerp),t.mouseY+=this.lerp.process(t.mouseY,i,t.lerp),Math.abs(t.mouseX)<.001&&Math.abs(t.mouseY)<.001&&(t.mouseX=0,t.mouseY=0,t.mousePixelFloatX=0,t.mousePixelFloatY=0),this.setMouseCoordinates(t,t.mouseX,t.mouseY)}})),0!=this.virtualCursor.lerpX||0!=this.virtualCursor.lerpY){let t={lerpX:this.virtualCursor.lerpX,lerpY:this.virtualCursor.lerpY,x:this.virtualCursor.smoothX,y:this.virtualCursor.smoothY};this.events.emit("cursor",t),this.oldX=this.virtualCursor.smoothX,this.oldY=this.virtualCursor.smoothY,this.cursor.style.setProperty("--x",this.virtualCursor.smoothX),this.cursor.style.setProperty("--y",this.virtualCursor.smoothY),this.cursor.style.setProperty("--x-lerp",this.virtualCursor.lerpX),this.cursor.style.setProperty("--y-lerp",this.virtualCursor.lerpY)}}))}onConnect(t){let s=t.el,e=null,i=()=>{this.overCount++,s.addEventListener("mouseleave",n),t.isMouseOver=!0,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&this.cursor.classList.add(t.cursorTargetClass),this.cursor.classList.add("-showing"),e=setTimeout((()=>{this.cursor.classList.remove("-showing"),this.cursor.classList.add("-show")}),1200)},n=()=>{this.overCount--,null!=e&&clearTimeout(e),s.removeEventListener("mouseleave",n),t.isMouseOver=!1,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&this.cursor.classList.remove(t.cursorTargetClass),this.cursor.classList.remove("-showing"),this.cursor.classList.remove("-show")};t.onEnter=()=>{s.addEventListener("mouseenter",i)},t.onLeave=()=>{s.removeEventListener("mouseenter",i),s.removeEventListener("mouseleave",n)}}setMouseCoordinates(t,s,e){t.cursorTargetStyleDisabled||(0==t.selfDisable&&(t.el.style.setProperty("--x",s.toFixed(2)),t.el.style.setProperty("--y",e.toFixed(2))),t.connects.forEach((t=>{t.style.setProperty("--x",s.toFixed(2)),t.style.setProperty("--y",e.toFixed(2))})))}calculateOffset(t,s,e){switch(t){case"start":return s/e;case"end":return(s-e)/e;default:return(s-e/2)/(e/2)}}}class l extends e{constructor(t){super(t),this.htmlKey="magnetic"}onConnect(t){t.el,null!=this.settings&&(null!=this.settings["string-strength"]&&(t.strength=this.settings["string-strength"]),null!=this.settings["string-radius"]&&(t.radius=this.settings["string-radius"]),null!=this.settings["string-lerp"]&&(t.lerp=this.settings["string-lerp"]))}onMouseMove(t){this.objects.forEach((s=>{const e=s.el.getBoundingClientRect(),i=e.left+s.halfWidth,n=e.top+s.halfHeight,o=t.clientX-i,r=t.clientY-n,a=Math.sqrt(o**2+r**2);a<s.radius?(s.magneticTargetX=o*s.strength*((s.radius-a)/s.radius),s.magneticTargetY=r*s.strength*((s.radius-a)/s.radius),s.isMagneting=!0):(s.magneticTargetX=0,s.magneticTargetY=0)}))}onUpdate(t){this.objects.forEach((t=>{if(t.isMagneting){let s=this.lerp.process(t.magneticX,t.magneticTargetX,t.lerp),e=this.lerp.process(t.magneticY,t.magneticTargetY,t.lerp);s>-.01&&s<.01&&(s=0,t.magneticX=t.magneticTargetX),e>-.01&&e<.01&&(e=0,t.magneticY=t.magneticTargetY),t.magneticX+=s,t.magneticY+=e,t.el.style.setProperty("--magnetic-x",t.magneticX.toString()),t.el.style.setProperty("--magnetic-y",t.magneticY.toString()),t.magneticTargetX!=t.magneticX&&t.magneticTargetY!=t.magneticY||(t.isMagneting=!1)}}))}}class h{process(t,s,e){return(s-t)*e}}class d{get x(){return this.targetX}get y(){return this.targetY}get smoothX(){return this._x}get smoothY(){return this._y}get lerpX(){return this._lerpX}get lerpY(){return this._lerpY}set mouseLerp(t){this._lF=t}constructor(t=.1){this._lF=.1,this.lerp=new h,this._x=0,this._y=0,this._lerpX=0,this._lerpY=0,this.targetX=0,this.targetY=0,this._lF=t}onMouseMove(t){this.targetX=t.clientX,this.targetY=t.clientY}onUpdate(){this._lerpX=this.lerp.process(this._x,this.targetX,this._lF),this._lerpY=this.lerp.process(this._y,this.targetY,this._lF),Math.sqrt(Math.pow(this._lerpX,2)+Math.pow(this._lerpY,2))<.1?(this._lerpX=0,this._lerpY=0,this._x=this.targetX,this._y=this.targetY):(this._x=this._x+this._lerpX,this._y=this._y+this._lerpY)}}const c="top",u="bottom",p="left",m="right";class g{constructor(t){this.id="",this.keys="",this.oStart=0,this.oEnd=0,this.size=0,this.startPos=0,this.endPos=0,this.differencePos=0,this.factor=1,this.inviewTop=1,this.inviewBottom=1,this.sElPos="",this.sScrPos="",this.eElPos="",this.eScrPos="",this.halfWidth=0,this.halfHeight=0,this.start=0,this.end=0,this.mouseX=0,this.mouseY=0,this.magneticTargetX=0,this.magneticTargetY=0,this.magneticX=0,this.magneticY=0,this.lerp=0,this.mousePixelFloatX=0,this.mousePixelFloatY=0,this.glide=0,this.strength=0,this.weight=0,this.radius=0,this.parallaxPositionStart=0,this.parallaxPositionEnd=0,this.progress=0,this.connects=new Array,this.cursorTargetClass="",this.key="--progress",this.alignment="center",this.showObserver=null,this.progressObserver=null,this.inviewObserver=null,this.repeat=!1,this.selfDisable=!1,this.active=!1,this.abs=!1,this.started=!1,this.isMagneting=!1,this.cursorTargetDisabled=!1,this.cursorTargetStyleDisabled=!1,this.isMouseOver=!1,this.isMouseMove=!1,this.onEnter=()=>{},this.onLeave=()=>{},this.modules=new Array,this.anchor="center center",this.intensity3D=10,this.distance3D=10,this.decay3D=1,this.type3D="box",this.material3D="basic",this.color3D="#ffffff",this.model3D="",this.animations3D=new Array,this.el=t}enter(){this.active=!0,this.modules.forEach((t=>{t.addObject(this.id,this)})),this.onEnter()}leave(){this.active=!1,this.modules.forEach((t=>{t.removeObject(this.id)})),this.onLeave()}show(){this.el.classList.add("-inview")}hide(){this.repeat&&this.el.classList.remove("-inview")}connect(t){this.modules.push(t)}calculatePositions(t){this.sElPos===c&&this.sScrPos===c||this.sElPos===p&&this.sScrPos===p?this.startPos=this.start-this.oEnd:this.sElPos===c&&this.sScrPos===u||this.sElPos===p&&this.sScrPos===m?this.startPos=this.start-t-this.oEnd:this.sElPos===u&&this.sScrPos===c||this.sElPos===m&&this.sScrPos===p?this.startPos=this.start+this.size-this.oEnd:(this.sElPos===u&&this.sScrPos===u||this.sElPos===m&&this.sScrPos===m)&&(this.startPos=this.start-t-this.oEnd+this.size),this.eElPos===c&&this.eScrPos===c||this.eElPos===p&&this.eScrPos===p?this.endPos=this.start+this.oStart:this.eElPos===c&&this.eScrPos===u||this.eElPos===p&&this.eScrPos===m?this.endPos=this.start-t+this.oStart:this.eElPos===u&&this.eScrPos===c||this.eElPos===m&&this.eScrPos===p?this.endPos=this.start+this.size+this.oStart:(this.eElPos===u&&this.eScrPos===u||this.eElPos===m&&this.eScrPos===m)&&(this.endPos=this.start-t+this.size+this.oStart),this.differencePos=this.endPos-this.startPos}}var v;!function(t){t[t.Mobile=0]="Mobile",t[t.Tablet=1]="Tablet",t[t.Laptop=2]="Laptop",t[t.Desktop=3]="Desktop"}(v||(v={}));class b{constructor(t){var s;this.min=void 0,this.max=void 0,this.enable=!0,this.min=null==t?void 0:t.min,this.max=null==t?void 0:t.max,this.enable=null===(s=null==t?void 0:t.enable)||void 0===s||s}setEnable(t=!0){this.enable=t}setRange(t,s){this.min=null!=t?t:void 0,this.max=null!=s?s:void 0}get mediaQuery(){let t="screen";return this.min&&(t+=` and (min-width: ${this.min}px)`),this.max&&(t+=` and (max-width: ${this.max}px)`),t}}class f extends e{constructor(t,s){super(t,s),this.queries={[v.Mobile]:new b({max:359}),[v.Tablet]:new b({min:360,max:1079}),[v.Laptop]:new b({min:1080,max:1365}),[v.Desktop]:new b({min:1366})},this.matchMedias={[v.Mobile]:window.matchMedia(this.queries[v.Mobile].mediaQuery),[v.Tablet]:window.matchMedia(this.queries[v.Tablet].mediaQuery),[v.Laptop]:window.matchMedia(this.queries[v.Laptop].mediaQuery),[v.Desktop]:window.matchMedia(this.queries[v.Desktop].mediaQuery)},this._type=2}onConnect(){}onStart(){var t,s,e,i;if(null!=this.settings&&null!=this.settings.settings){let n=this.settings.settings;n.mobile?(this.queries[v.Mobile].enable=!0,this.queries[v.Mobile].setRange(null==n.mobile.min?null:n.mobile.min,null!==(t=n.mobile.max)&&void 0!==t?t:null),this.matchMedias[v.Mobile]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Mobile].enable=!1,n.tablet?(this.queries[v.Tablet].enable=!0,this.queries[v.Tablet].setRange(null==n.mobile.min?null:n.mobile.min,null!==(s=n.mobile.max)&&void 0!==s?s:null),this.matchMedias[v.Tablet]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Tablet].enable=!1,n.laptop?(this.queries[v.Laptop].enable=!0,this.queries[v.Laptop].setRange(null==n.mobile.min?null:n.mobile.min,null!==(e=n.mobile.max)&&void 0!==e?e:null),this.matchMedias[v.Laptop]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Laptop].enable=!1,n.desktop?(this.queries[v.Desktop].enable=!0,this.queries[v.Desktop].setRange(null==n.mobile.min?null:n.mobile.min,null!==(i=n.mobile.max)&&void 0!==i?i:null),this.matchMedias[v.Desktop]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Desktop].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){const t=this.matchMedias[v.Mobile].matches&&this.queries[v.Mobile].enable,s=this.matchMedias[v.Tablet].matches&&this.queries[v.Tablet].enable,e=this.matchMedias[v.Laptop].matches&&this.queries[v.Laptop].enable,i=this.matchMedias[v.Desktop].matches&&this.queries[v.Desktop].enable;document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach((n=>{let o=!1;n.hasAttribute("string-mobile")&&t&&(o=!0),n.hasAttribute("string-tablet")&&s&&(o=!0),n.hasAttribute("string-laptop")&&e&&(o=!0),n.hasAttribute("string-desktop")&&i&&(o=!0),n.style.display=o?null:"none"}))}}class y{constructor(t,s,e){this.isDragging=!1,this.startY=0,this.startScrollPosition=0,this.data=t,this.scrollbar=s,this.thumb=e}onResize(){const t=this.data.psH,s=this.data.wS,e=s/t*s;this.thumb.style.setProperty("--size",e+"px"),t<=s?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){const t=this.data.psH,s=this.data.wS;this.thumb.style.setProperty("--position",this.data.c/t*s+"px")}mouseDownEvent(t){this.startY=t.clientY,this.startScrollPosition=this.data.c}mouseMoveEvent(t){const s=t.clientY-this.startY,e=this.startScrollPosition+s/this.data.wS*this.data.psH;this.data.c=e,this.data.t=e,window.scrollTo(0,e),this.updateThumb()}}class S{constructor(t,s,e){this.isDragging=!1,this.startCoordinate=0,this.startScrollPosition=0,this.data=t,this.scrollbar=s,this.thumb=e}onResize(){const t=this.data.psW,s=this.data.wS,e=s/t*s;this.thumb.style.setProperty("--size",e+"px"),t<=s?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){const t=this.data.psW,s=this.data.wS;this.thumb.style.setProperty("--position",this.data.c/t*s+"px")}mouseDownEvent(t){this.startCoordinate=t.clientX,this.startScrollPosition=this.data.c}mouseMoveEvent(t){const s=t.clientX-this.startCoordinate,e=this.startScrollPosition+s/this.data.wS*this.data.psW;this.data.c=e,this.data.t=e,window.scrollTo(0,e),this.updateThumb()}}class E extends e{constructor(t){super(t),this.isDragging=!1,this.scrollMode="smooth",this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this)}destructor(){document.removeEventListener("mouseup",this.mouseUpEventBind),this.thumb.removeEventListener("mousedown",this.mouseDownEventBind),document.removeEventListener("mousemove",this.mouseMoveEventBind)}onStart(){this.createScrollbar(),this.updateThumb(),this.addCustomStyles(),document.addEventListener("mouseup",this.mouseUpEventBind),this.thumb.addEventListener("mousedown",this.mouseDownEventBind),document.addEventListener("mousemove",this.mouseMoveEventBind),document.documentElement.classList.add("-no-scrollbar")}onScroll(t){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}onChangeScrollParams(){"disable"==this.data.sM&&"disable"!=this.scrollMode&&this.scrollbar.classList.add("-hide"),("smooth"==this.data.sM&&"disable"==this.scrollMode||"default"==this.data.sM&&"disable"==this.scrollMode)&&this.scrollbar.classList.remove("-hide"),this.scrollMode=this.data.sM}onChangeScrollDirection(){"horizontal"==this.data.sD?this.scrollbarState=this.scrollbarStateVertical:this.scrollbarState=this.scrollbarStateHorizontal,this.scrollbarState.onResize()}addCustomStyles(){const t=document.createElement("style");t.textContent="\n ::-webkit-scrollbar {\n display: none;\n width: 0;\n height: 0;\n -webkit-appearance: none;\n }\n body {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .-without-scrollbar::-webkit-scrollbar {\n display: none;\n }\n .-without-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ",document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new y(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new S(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateHorizontal}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout((()=>{this.scrollbar.classList.remove("-scroll")}),1e3)}}class w extends e{constructor(t){super(t),this.oldLerp=0,this.htmlKey="anchor"}initObject(t,s){t.anchor=this.attribute.process(s,"string-anchor","center center")}onConnect(t){null!=t.anchor&&""!=t.anchor||(t.anchor="center center");const s=t.anchor.split(" "),e=this.parseOrig(s[0]),i=this.parseOrig(s[1]||s[0]);t.el.style.transformOrigin=`${e} ${i}`}parseOrig(t){if((t=t.trim()).startsWith("random")){const s=t.slice(7,-1).split(",").map((t=>t.trim()));return s[Math.floor(Math.random()*s.length)]}return t}}class M extends e{constructor(t,s=null){if(super(t),this.previousLerp=0,this.displacement=0,this.acceleration=0,this.velocityMultiplier=.00125,this.isInitialScroll=!0,this.baseVelocityMultiplier=.00125,this.reducedVelocityMultiplier=this.baseVelocityMultiplier/20,this.negativeVelocityMultiplier=-1e-4,this.ACCELERATION_STEP=.05,this.MIN_DISPLACEMENT=.01,this.MAX_DISPLACEMENT=1,this.MIN_VELOCITY=-1,this.MAX_VELOCITY=1,this.maxDisplacementValue=0,this.setupItem=t=>{const s=`translate3d(0, ${-this.data.dV*this.maxDisplacementValue*t.glide}px, 0)`;t.el.style.transform=s},this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++){let s=this.objects[t];this.setupItem(s)}},this.onUpdateMobileEvent=()=>{},this.onUpdateEvent=this.onUpdateDesktopEvent,this.htmlKey="glide",s){const{baseVelocityMultiplier:t,reducedVelocityMultiplier:e,negativeVelocityMultiplier:i}=s;this.baseVelocityMultiplier=null!=t?t:this.baseVelocityMultiplier,this.reducedVelocityMultiplier=null!=e?e:this.reducedVelocityMultiplier,this.negativeVelocityMultiplier=null!=i?i:this.negativeVelocityMultiplier}}calcExpanderFactor(t){const s=t?this.data.v<this.previousLerp:this.data.v>this.previousLerp;this.velocityMultiplier=s?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,s||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=.1*this.data.wS}onResize(){window.innerWidth>1080?(this.maxDisplacementValue=.1*this.data.wS,this.onUpdateEvent=this.onUpdateDesktopEvent):(this.onUpdateEvent=this.onUpdateMobileEvent,this.resetState(),this.objects.forEach((t=>{this.setupItem(t)})))}resetState(){this.displacement=0,this.acceleration=0,this.isInitialScroll=!0,this.velocityMultiplier=this.baseVelocityMultiplier}onScrollStart(){this.resetState()}onScrollStop(){this.resetState(),this.previousLerp=0,document.documentElement.style.setProperty("--glide","0");for(let t=0;t<this.objects.length;t++){const s="translate3d(0, 0px, 0)";this.objects[t].el.style.transform=s}}onUpdate(t){this.calcExpanderFactor(!1===this.data.sDB),this.acceleration=Math.min(this.MAX_DISPLACEMENT,this.acceleration+this.ACCELERATION_STEP),this.displacement=Math.max(this.MIN_DISPLACEMENT,Math.min(this.MAX_DISPLACEMENT,this.displacement+this.velocityMultiplier)),this.data.dV=Math.min(this.MAX_VELOCITY,Math.max(this.MIN_VELOCITY,this.data.v*this.displacement*this.acceleration)),this.objects.forEach((t=>{t.el.style.setProperty("--glide",this.data.dV.toString())})),this.previousLerp=this.data.v,this.onUpdateEvent()}}class x extends e{constructor(t){super(t),this.htmlKey="lerp"}onScrollStop(){this.objects.forEach((t=>{t.el.style.setProperty("--lerp","0")}))}onScroll(t){this.objects.forEach((t=>{t.el.style.setProperty("--lerp",this.data.v.toString())}))}}class C extends e{constructor(t){super(t),this.setupParallax=(t,s)=>{let e=`translate3d(0, ${t.factor*this.data.wS*t.parallaxPositionStart+s*t.factor*this.data.wS*t.parallaxPositionEnd}px, 0)`;t.el.style.transform=e,t.connects.forEach((t=>{t.style.transform=e}))},this.onScrollDesktopEvent=()=>{this.objects.forEach((t=>{let s=Math.min(1,Math.max(0,(this.data.c-t.startPos)/t.differencePos));t.el.style.setProperty(t.key,s.toString()),this.setupParallax(t,s)}))},this.onScrollMobileEvent=()=>{},this.onScrollEvent=this.onScrollDesktopEvent,this.htmlKey="parallax"}onConnect(t){if(null!=this.settings){if(null!=this.settings["string-parallax-bias"]){let s=this.attribute.process(t.el,"string-parallax-bias",this.settings["string-parallax-bias"]);t.parallaxPositionStart=.5*s-.5,t.parallaxPositionEnd=.5+.5*(1-s)}null!=this.settings["string-parallax"]&&(t.factor=this.settings["string-parallax"])}}onScroll(t){this.onScrollEvent()}onChangeScrollDirection(){"vertical"==this.data.sD?this.setupParallax=(t,s)=>{let e=`translate3d(0, ${t.factor*this.data.wS*t.parallaxPositionStart+s*t.factor*this.data.wS*t.parallaxPositionEnd}px, 0)`;t.el.style.transform=e,t.connects.forEach((t=>{t.style.transform=e}))}:this.setupParallax=(t,s)=>{let e=`translate3d(${t.factor*this.data.wS*t.parallaxPositionStart+s*t.factor*this.data.wS*t.parallaxPositionEnd}px, 0, 0)`;t.el.style.transform=e,t.connects.forEach((t=>{t.style.transform=e}))}}onResize(){window.innerWidth>1080?this.onScrollEvent=this.onScrollDesktopEvent:(this.onScrollEvent=this.onScrollMobileEvent,this.objects.forEach((t=>{this.setupParallax(t,.5)})))}}class P extends e{constructor(t){super(t),this.oldLerp=0,this.htmlKey="progress"}onScroll(t){this.objects.forEach((t=>{this.setUpObject(t)}))}onConnect(t){t.onEnter=()=>{this.setUpObject(t)}}setUpObject(t){const s=Math.min(1,Math.max(0,(this.data.c-t.startPos)/t.differencePos));t.progress!==s&&(t.progress=s,this.applyProgress(t))}applyProgress(t){const s=t.progress.toString();this.events.emit(`progress_${t.id}`,t.progress),t.el.style.setProperty(t.key,s),t.connects.length>0&&t.connects.forEach((e=>{e.style.setProperty(t.key,s)}))}}class L{constructor(t,s,e){this.isProg=!1,this.isParallaxEnabled=!1,this.name="",this.v=0,this.vT=0,this.onScrollStart=()=>{},this.onScrollStop=()=>{},this.onChangeDirection=()=>{},this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(0,this.data.c)},this._scrollDirection="vertical",this.d=t,this.settings=s,this.data=e,this.scrollContainer=window}onUpdate(){}onWheel(t){}onScroll(t){}set scrollDirection(t){this._scrollDirection=t,"vertical"==this._scrollDirection?this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(0,this.data.c)}:"horizontal"==this._scrollDirection&&(this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(this.data.c,0)})}}class D extends L{constructor(t,s,e){super(t,s,e),this.name="mobile"}onUpdate(){if(0!=this.data.d){let t=this.data.d*this.settings.speedAccelerate;this.data.d-=t,this.data.v=t,Math.abs(this.data.v)<.1&&(this.data.d=0,this.data.v=0,this.onScrollStop())}}onScroll(t){this.data.c=this.d.documentElement.scrollTop,this.data.t=this.d.documentElement.scrollTop}onWheel(t){if(0!=t.deltaY){0==this.data.d&&this.onScrollStart();let s=t.deltaY;0==this.data.t&&(this.data.d+=Math.max(0,t.deltaY)),this.data.d+=s}}}class T extends L{constructor(t,s,e){super(t,s,e),this.name="disable"}onUpdate(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}}const A="-scroll-forward",_="-scroll-back";class O extends L{constructor(t,s,e){super(t,s,e),this.name="desktop",this.isScrollbarManipulation=!1,this.isBottomScrollDirection=!1,this.velocityThreshold=.1,this.plusDelta=0,this.previousCurrent=0,this.delta=0}updateScrollDirection(t){if(this.isBottomScrollDirection===t)return;this.isBottomScrollDirection=t,this.data.sDB=t,this.onChangeDirection();const s=t;document.documentElement.classList.toggle(A,s),document.documentElement.classList.toggle(_,!s)}stopScroll(){this.data.v=0,this.data.d=0,this.data.t=this.data.c,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(_,A)}onUpdate(){var t,s;if(this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,this.data.t=null!==(s=null===(t=this.scrollContainer)||void 0===t?void 0:t.scrollTop)&&void 0!==s?s:document.documentElement.scrollTop,void(this.data.c=this.data.t);if(0!=this.data.d){this.delta=this.data.d*this.settings.speedAccelerate,this.data.t=Math.min(Math.max(0,this.data.t+this.delta),this.data.bS),this.data.d-=this.delta,this.data.v=(this.data.t-this.data.c)*this.settings.speed;const t=Math.abs(this.data.v);this.data.v>0?(this.data.c=Math.ceil(this.data.c+this.data.v),this.updateScrollDirection(!0)):(this.data.c=Math.floor(this.data.c+this.data.v),this.updateScrollDirection(!1)),t<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!=this.data.c&&(this.previousCurrent=this.data.c,this.onCalcUpdate()))}}onWheel(t){if(t.preventDefault(),this.plusDelta=t.deltaY,0===this.plusDelta)return;0===this.data.d&&this.onScrollStart();let s=Math.sign(this.plusDelta);0===this.data.t&&s<0||this.data.t===this.data.bS&&s>0||(this.data.d+=this.plusDelta)}onScroll(t){this.isProg||(this.isScrollbarManipulation=!0)}}class I{constructor(){this.sC=.1,this.sA=.25}get speed(){return this.sC}get speedAccelerate(){return this.sA}set speedAccelerate(t){this.sA=t}set speed(t){this.sC=t}}class H extends e{constructor(t){super(t),this.htmlKey="split"}onStart(){}onResize(){document.querySelectorAll('[string="split"].-splited').forEach((t=>{const s=this.parseSplitOptions(t.getAttribute("string-split"));t.innerHTML!=this.split(s,t).html&&(t.innerHTML=this.split(s,t).html)}))}onConnect(t){let s=t.el;if(!s.classList.contains("-splited")){s.classList.add("-splited"),s.setAttribute("string-split-original",s.innerHTML);const t=this.parseSplitOptions(s.getAttribute("string-split"));s.innerHTML!=this.split(t,s).html&&(s.innerHTML=this.split(t,s).html)}}parseSplitOptions(t){const s={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return t&&t.split("|").forEach((t=>{const e=t.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(e){const t=e[1]||"",i=e[2],n=e[4]?e[4].split(","):[];switch(t+i){case"char-line":s.charLine.push(this.parseParam(n));break;case"char-word":s.charWord.push(this.parseParam(n));break;case"word-line":s.wordLine.push(this.parseParam(n));break;case"line":s.line.push(this.parseParam(n));break;case"word":s.word.push(this.parseParam(n));break;case"char":s.char.push(this.parseParam(n))}}})),s}parseParam(t){const s={align:"start"};return t.forEach((t=>{if("abs"===t)s.abs=!0;else if(t.startsWith("random")){const e=t.match(/random\((\d+),(\d+)\)/);e?(s.random={min:parseInt(e[1]),max:parseInt(e[2])},s.align="random"):s.align="random"}else["start","center","end"].includes(t)?s.align=t:s.align="start"})),s}split(t,s){let e=s.getAttribute("string-split-original");if(0===e.length)return"";e=this.decodeHtmlEntity(e);const i=document.createElement("span"),n=e.split(/\s+/);let o=0,r=0;const a=e.replace(/\s/g,"").length,l=document.createElement("span"),h=window.getComputedStyle(s);l.style.fontFamily=h.fontFamily,l.style.fontSize=h.fontSize,l.style.letterSpacing=h.letterSpacing,l.style.lineHeight=h.lineHeight,l.style.fontWeight=h.fontWeight,l.classList.add("-s-char"),document.body.appendChild(l);let d=[],c=[],u=0;n.forEach(((t,e)=>{l.textContent=t,t.length>0&&(l.textContent+=" ");const i=l.offsetWidth,n={text:t,width:i,chars:new Array};Array.from(t).forEach(((t,s)=>{const e={text:t};n.chars.push(e)})),u+i>s.offsetWidth&&(d.push(c),c=[],u=0,o+=c.length),c.push(n),u+=i})),d.push(c);let p=!1;null!=t.line&&t.line.length>0&&(p=!0),null!=t.wordLine&&t.wordLine.length>0&&(p=!0),null!=t.charLine&&t.charLine.length>0&&(p=!0);let m=0;if(p)for(let s=0;s<d.length;s++)this.appendVirtualLineToDOM(s,d.length,n.length,i,d[s],t,o,a,m),m+=d[s].length;else for(let s=0;s<d.length;s++)d[s].forEach(((s,e)=>{var l,h;if(s.chars.length>0){const d=document.createElement("span");d.classList.add("-s-word"),null!=t.char&&(null===(l=t.char)||void 0===l?void 0:l.length)>0||null!=t.charWord&&(null===(h=t.charWord)||void 0===h?void 0:h.length)>0?s.chars.forEach(((e,i)=>{const n=document.createElement("span");n.classList.add("-s-char"),n.textContent=e.text,this.applyOptions(n,t.char,o,"char",i,a),this.applyOptions(n,t.charWord,i,"char-word",i,s.text.length),d.appendChild(n),o++})):d.textContent=s.text,this.applyOptions(d,t.word,r,"word",e,n.length),s.chars.length>0&&(d.innerHTML+=" "),i.appendChild(d),r++}}));return document.body.removeChild(l),{html:i.innerHTML}}appendVirtualLineToDOM(t,s,e,i,n,o,r,a,l){const h=document.createElement("span");h.classList.add("-s-line"),this.applyOptions(h,o.line,t,"line",0,s);let d=0,c=0,u=0;n.forEach(((t,s)=>{u+=t.text.length})),n.forEach(((t,s)=>{if(t.chars.length>0){const i=document.createElement("span");i.classList.add("-s-word"),t.chars.forEach(((s,e)=>{const n=document.createElement("span");n.classList.add("-s-char"),n.textContent=s.text,this.applyOptions(n,o.char,r,"char",e,a),this.applyOptions(n,o.charLine,d,"char-line",e,u),this.applyOptions(n,o.charWord,e,"char-word",e,t.text.length),i.appendChild(n),r++,d++})),this.applyOptions(i,o.word,l+c,"word",l+c,e-1),this.applyOptions(i,o.wordLine,s,"word-line",s,n.length),s<n.length-1&&(i.innerHTML+=" "),h.appendChild(i),c++}})),i.appendChild(h)}applyOptions(t,s,e,i,n,o){s&&s.forEach(((s,r)=>{let a=this.calculateIndex(s,e,n,o);const l=this.generateVariableName(i,s,r);t.style.setProperty(l,String(a))}))}createSpaceSpan(){const t=document.createElement("span");return t.innerHTML=" ",t}decodeHtmlEntity(t){return t.replace(/&amp;/g,"&")}calculateIndex(t,s,e,i){let n=s;if("random"===t.align){void 0===t.random&&(t.random={min:0,max:i});const s=t.random.min||0,e=t.random.max||i;n=Math.floor(Math.random()*(e-s+1))+s}return"end"===t.align?n=i-n-1:"center"===t.align&&(n-=Math.floor(i/2)),t.abs&&(n=Math.abs(n)),n}generateVariableName(t,s,e){let i=`--${t}`;return s.align&&(i+=`-${s.align}`),i}}class U{constructor(){this.isAnimationStarted=!1,this.fpsInterval=0,this.then=0,this.requestAnimationId=0,this.onFrameCallback=()=>{},this.animate=()=>{}}start(t){this.isAnimationStarted||(this.fpsInterval=1e3/t,this.then=performance.now(),this.isAnimationStarted=!0,this.animate=0==t?()=>{this.requestAnimationId=requestAnimationFrame((()=>this.animate())),this.onFrameCallback()}:()=>{this.requestAnimationId=requestAnimationFrame((()=>this.animate()));const t=performance.now(),s=t-this.then;s>this.fpsInterval&&(this.then=t-s%this.fpsInterval,this.onFrameCallback())},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(t){this.onFrameCallback=t}}class W extends e{constructor(t){super(t),this.canvasHeight=0,this._type=2}onStart(){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=.5*window.innerWidth,this.canvas.height=window.innerHeight/15-20,this.canvasHeight=window.innerHeight/15-20,this.canvas.style.position="fixed",this.canvas.style.bottom=window.innerHeight/20+10+"px",this.canvas.style.left="50%",this.canvas.style.transform="translateX(-50%)",this.canvas.style.backgroundColor="#000000",this.canvas.style.border="1px solid rgba(255, 255, 255, 0.2)",this.canvas.style.zIndex="1000",document.body.appendChild(this.canvas),this.positionHistory=[],this.maxHistory=this.canvas.width,this.currentPosition=0,this.targetPosition=0}onScroll(t){this.currentPosition=Math.abs(this.data.dV),this.positionHistory.push(this.currentPosition),this.positionHistory.length>this.maxHistory&&this.positionHistory.shift(),this.drawGraph()}drawGraph(){const t=this.context;t.clearRect(0,0,this.canvas.width,this.canvas.height),t.strokeStyle="#e0e0e0",t.lineWidth=1,t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.positionHistory.forEach(((s,e)=>{const i=e,n=this.canvas.height-s*this.canvasHeight;0===e?t.moveTo(i,n):t.lineTo(i,n)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class j extends e{constructor(t){super(t),this.callCount=0,this.rafId=null,this.displayElement=null,this.lastUpdateTime=0,this.updateLoop=t=>{this.lastUpdateTime||(this.lastUpdateTime=t),t-this.lastUpdateTime>=1e3&&(this.displayElement.setAttribute("data-fps",this.callCount),this.callCount=0,this.lastUpdateTime=t),this.rafId=requestAnimationFrame(this.updateLoop)},this._type=2}createDisplayElement(){this.displayElement=document.createElement("div"),this.displayElement.style.position="fixed",this.displayElement.style.bottom="10px",this.displayElement.style.right="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.style.color="#ffffff",this.displayElement.setAttribute("data-fps","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-fps]::after {\n content: 'FPS: ' attr(data-fps);\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement(),this.lastUpdateTime=0}onUpdate(t){this.callCount++,this.updateLoop(this.lastUpdateTime)}destructor(){document.body.removeChild(this.displayElement)}}class Y extends e{constructor(t){super(t),this._type=2}onStart(){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=.5*window.innerWidth,this.canvas.height=window.innerHeight/15-20,this.canvas.style.position="fixed",this.canvas.style.bottom="10px",this.canvas.style.left="50%",this.canvas.style.transform="translateX(-50%)",this.canvas.style.backgroundColor="#000000",this.canvas.style.border="1px solid rgba(255, 255, 255, 0.2)",this.canvas.style.zIndex="1000",document.body.appendChild(this.canvas),this.positionHistory=[],this.maxHistory=this.canvas.width,this.currentPosition=0,this.targetPosition=0}onScroll(t){this.currentPosition=Math.abs(this.data.v),this.positionHistory.push(this.currentPosition),this.positionHistory.length>this.maxHistory&&this.positionHistory.shift(),this.drawGraph()}drawGraph(){const t=this.context;t.clearRect(0,0,this.canvas.width,this.canvas.height),t.strokeStyle="#e0e0e0",t.lineWidth=1,t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.positionHistory.forEach(((s,e)=>{const i=e,n=this.canvas.height-s/2;0===e?t.moveTo(i,n):t.lineTo(i,n)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class k extends e{constructor(t){super(t),this.callCount=0,this._type=2}createDisplayElement(){this.displayElement=document.createElement("div"),this.displayElement.style.position="fixed",this.displayElement.style.bottom="10px",this.displayElement.style.left="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.setAttribute("data-position","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-position]::after {\n content: attr(direction) 'Top: ' attr(value) 'px';\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement()}onScroll(t){let s="";t.c<t.t&&(s="↓"),t.c>t.t&&(s="↑"),this.displayElement.setAttribute("direction",s),this.displayElement.setAttribute("value",`${this.data.c}`)}onUpdate(t){this.callCount++}destructor(){document.body.removeChild(this.displayElement)}}class X{process(t,s,e=null){return null==t.getAttribute(s)?e:t.getAttribute(s)}}class B{process(t){return t.getBoundingClientRect()}}class z{constructor(){this.three=null,this.t=0,this.c=0,this.d=0,this.v=0,this.dV=0,this.sDB=!1,this.bS=0,this.cF=1,this.wS=0,this.hnwS=0,this.psW=0,this.psH=0,this.cL={x:0,y:0},this.scsW=1,this.scsH=1,this.sD="vertical",this.sM="smooth"}}class F{constructor(){this.eventsByKey=new Map,this.events=new Array}on(t,s){var e;0==this.eventsByKey.has(t)&&this.eventsByKey.set(t,[]),null===(e=this.eventsByKey.get(t))||void 0===e||e.push(s),this.updateAllEvents()}has(t){return this.eventsByKey.has(t)}emit(t,s){var e;this.eventsByKey.has(t)&&(null===(e=this.eventsByKey.get(t))||void 0===e||e.forEach((t=>{t(s)})))}off(t,s){let e=this.eventsByKey.get(t);null!=e&&this.eventsByKey.set(t,e.filter((t=>t!==s))),this.updateAllEvents()}all(t){this.events.forEach((s=>{s(t)}))}updateAllEvents(){Array.from(this.eventsByKey.values()).forEach((t=>{t.forEach((t=>{this.events.push(t)}))}))}}class R{parseSingle(t,s,e,i){let n,o=t.startsWith("-");return o&&(t=t.slice(1)),"selfHeight"===t?n=s.offsetHeight:t.endsWith("px")?n=parseFloat(t):t.endsWith("%")?n=parseFloat(t)*e/100:t.endsWith("rem")&&(n=parseFloat(t)*i),o?-n:n}}class q{process(t,s=document.body){let e;try{e=s.getBoundingClientRect()}catch(t){e=document.body.getBoundingClientRect()}let i=function(t){let{top:s,left:e,width:i,height:n}=t.getBoundingClientRect(),o=function(t){return window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)}))}(t);if(6==o.length){var r=o;let t=r[0]*r[3]-r[1]*r[2];return{width:i/r[0]==0?1:r[0],height:n/r[3]==0?1:r[3],left:(e*r[3]-s*r[2]+r[2]*r[5]-r[4]*r[3])/t,top:(-e*r[1]+s*r[0]+r[4]*r[1]-r[0]*r[5])/t}}return{top:s,left:e,width:i,height:n}}(t);return{top:i.top-e.top,left:i.left-e.left}}}function V(){return"ontouchstart"in window||navigator.maxTouchPoints>0}class ${get scrollDirection(){return this.data.sD}set scrollDirection(t){this.data.sD=t,this.sEn.scrollDirection=t,this.sEnSmooth.scrollDirection=t,this.sEnDefault.scrollDirection=t,this.sEnDisable.scrollDirection=t,"horizontal"==t?(document.documentElement.classList.add("-horizontal"),document.documentElement.classList.remove("-vertical")):(document.documentElement.classList.add("-vertical"),document.documentElement.classList.remove("-horizontal")),this.rebuild(),this.initObjects(),this.modules.forEach((t=>{t.onChangeScrollDirection()}))}get speedAccelerate(){return this.settings.speedAccelerate}set speedAccelerate(t){this.settings.speedAccelerate=.1+.4*t}get speed(){return this.settings.speed}set speed(t){this.settings.speed=t}get scrollPosition(){return this.data.c}set scrollPosition(t){this.data.c=t,this.data.t=t,window.scrollTo(0,this.data.c);for(let t=0;t<this.modules.length;t++)this.modules[t].onScroll(this.data)}set scrollContainer(t){let s=null!=this.data.sC;s&&(this.data.sC.removeEventListener("scroll",this.onScrollBind),this.data.sC.removeEventListener("resize",this.onResizeBind)),this.sEn.scrollContainer=t,this.sEnSmooth.scrollContainer=t,this.sEnDefault.scrollContainer=t,this.sEnDisable.scrollContainer=t,this.data.sC=t,s&&(this.data.sC.addEventListener("scroll",this.onScrollBind),this.data.sC.addEventListener("resize",this.onResizeBind)),this.rebuild(),this.initObjects()}set scrollMobileMode(t){this.mMode=t,this.updateModeParams()}set scrollDesktopMode(t){this.dMode=t,this.updateModeParams()}updateModeParams(){switch(this.window.innerWidth<1024||V()?this.scrollMode=this.mMode:this.scrollMode=this.dMode,this.scrollMode){case"disable":this.data.sM="disable",this.sEn=this.sEnDisable,this.onChangeScrollParams(),document.documentElement.style.overflow="hidden";break;case"default":this.data.sM="default",this.sEn=this.sEnDefault,this.onChangeScrollParams(),document.documentElement.style.overflow="auto";break;default:this.data.sM="smooth",this.sEn=this.sEnSmooth,this.onChangeScrollParams(),document.documentElement.style.overflow="auto"}}constructor(){this.modules=new Array,this.modulesUI=new Array,this.events=new F,this.loop=new U,this.wW=0,this.wH=0,this._virtualCursor=new d,this._lerp=new h,this._attribute=new X,this._boundingClientRect=new B,this._position=new q,this.objects=new Map,this.connectQueue=new Array,this.globalId=1,this._parser=new R,this.isStarted=!1,this.scrollMode="smooth",this.mMode="default",this.dMode="smooth",this.eventMap={scroll:"scroll",progress:"progress_",lerp:"lerp",inview:"inview_",cursor:"cursor","lazy-loaded":"all-image-loaded",update:"update",start:"start","mousemove-pixel":"mousemove_pixel_","mousemove-start":"mousemove_start_","mousemove-end":"mousemove_end_"},this.defaultSettings={stringOffsetStart:"0%",stringOffsetEnd:"0%",stringEnterEl:"top",stringExitEl:"bottom",stringEnterVp:"bottom",stringExitVp:"top",stringInviewTop:"0%",stringInviewBottom:"0%",stringKey:"--progress",stringStrength:.3,stringRadius:150,stringLerp:.2,stringParallaxBias:0,stringParallax:.2},this.root=document.body,this.window=window,this.settings=new I,this.data=new z,this.sEnSmooth=new O(document,this.settings,this.data),this.sEnDefault=new D(document,this.settings,this.data),this.sEnDisable=new T(document,this.settings,this.data),this.sEnSmooth.onScrollStop=this.onScrollStop.bind(this),this.sEnDefault.onScrollStop=this.onScrollStop.bind(this),this.sEnDisable.onScrollStop=this.onScrollStop.bind(this),this.sEnSmooth.onChangeDirection=this.onChangeDirection.bind(this),this.sEnDefault.onChangeDirection=this.onChangeDirection.bind(this),this.sEnDisable.onChangeDirection=this.onChangeDirection.bind(this),this.sEnSmooth.onScrollStart=this.onScrollStart.bind(this),this.sEnDefault.onScrollStart=this.onScrollStart.bind(this),this.sEnDisable.onScrollStart=this.onScrollStart.bind(this),this.sEn=this.sEnSmooth,this.scrollContainer=window,this.data.sC=this.window,this.data.sD="vertical",document.documentElement.classList.add("-vertical"),this.onWheelBind=this.onWheelEvent.bind(this),this.onScrollBind=this.onScrollEvent.bind(this),this.onResizeBind=this.onResize.bind(this),this.onMouseMoveBind=this.onMouseMoveEvent.bind(this),new ResizeObserver((()=>{Array.from(this.objects.values()).forEach((t=>{this.setupObject(t.el,t)})),this.onResize()})).observe(document.documentElement),this.loop.setOnFrame((()=>{this.onUpdateEvent()})),this.rebuild(),this.on("lazy-loaded",(()=>{this.rebuild()}))}static getInstance(){return $.i||($.i=new $),$.i}reuse(t){return this.modules.find((s=>s instanceof t))}use(t,s=null){const e=new t({data:this.data,lerp:this._lerp,attribute:this._attribute,boundingClientRect:this._boundingClientRect,position:this._position,virtualCursor:this._virtualCursor,events:this.events,loop:this.loop},s);1==e.type&&this.modules.push(e),2==e.type&&this.modulesUI.push(e)}start(t){this.data.sC.addEventListener("scroll",this.onScrollBind),this.data.sC.addEventListener("resize",this.onResizeBind),this.root.addEventListener("wheel",this.onWheelBind,{passive:!1}),this.root.addEventListener("mousemove",this.onMouseMoveBind),this.loop.start(t),document.documentElement.classList.add("-string");for(let t=0;t<this.modules.length;t++)this.modules[t].onStart();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onStart();this.initObjects(),this.initMutationObserver(),this.isStarted=!0,this.events.emit("start",null)}onChangeScrollParams(){for(let t=0;t<this.modules.length;t++)this.modules[t].onChangeScrollParams();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onChangeScrollParams()}initObjects(){document.querySelectorAll("[string]").forEach((t=>{this.addObject(t)})),document.querySelectorAll("[string-copy-from]").forEach((t=>{let s=this._attribute.process(t,"string-copy-from");if(null!=s&&this.objects.has(s)){let e=this.objects.get(s);null!=e&&e.connects.push(t)}})),this.modules.forEach((t=>{t.onResize(),t.onScroll(this.data),t.onUpdate(this.data)}))}destroy(){this.window.removeEventListener("scroll",this.onScrollBind),this.root.removeEventListener("wheel",this.onScrollBind),this.window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.loop.stop(),this.modules.forEach((t=>{t.destructor()})),this.modulesUI.forEach((t=>{t.destructor()})),this.modules=new Array,this.modulesUI=new Array,this.events=new F}on(t,s,e=""){const i=this.eventMap[t]+e;"start"===t&&this.isStarted&&s(),this.events.on(i,s)}off(t,s,e=""){const i=this.eventMap[t]+e;this.events.off(i,s)}setupSettings(t){null!=t["string-offset-top"]&&(this.defaultSettings.stringOffsetStart=t["string-offset-top"]),null!=t["string-offset-bottom"]&&(this.defaultSettings.stringOffsetEnd=t["string-offset-bottom"]),null!=t["string-offset-left"]&&(this.defaultSettings.stringOffsetStart=t["string-offset-left"]),null!=t["string-offset-right"]&&(this.defaultSettings.stringOffsetEnd=t["string-offset-right"]),null!=t["string-inview-top"]&&(this.defaultSettings.stringInviewTop=t["string-inview-top"]),null!=t["string-inview-left"]&&(this.defaultSettings.stringInviewTop=t["string-inview-left"]),null!=t["string-inview-bottom"]&&(this.defaultSettings.stringInviewBottom=t["string-inview-bottom"]),null!=t["string-inview-right"]&&(this.defaultSettings.stringInviewBottom=t["string-inview-right"]),null!=t["string-enter-el"]&&(this.defaultSettings.stringEnterEl=t["string-enter-el"]),null!=t["string-enter-vp"]&&(this.defaultSettings.stringEnterVp=t["string-enter-vp"]),null!=t["string-exit-el"]&&(this.defaultSettings.stringExitEl=t["string-exit-el"]),null!=t["string-exit-vp"]&&(this.defaultSettings.stringExitVp=t["string-exit-vp"]),null!=t["string-key"]&&(this.defaultSettings.stringKey=t["string-key"]),null!=t["string-strength"]&&(this.defaultSettings.stringStrength=t["string-strength"]),null!=t["string-radius"]&&(this.defaultSettings.stringRadius=t["string-radius"]),null!=t["string-lerp"]&&(this.defaultSettings.stringLerp=t["string-lerp"]),null!=t["string-parallax-bias"]&&(this.defaultSettings.stringParallaxBias=t["string-parallax-bias"]),null!=t["string-parallax"]&&(this.defaultSettings.stringParallax=t["string-parallax"])}setupObject(t,s){var e,i,n,o,r,a,l,h,d,c,u,p,m,g,v,b,f,y,S,E,w,M,x,C,P,L,D,T;null===(e=s.showObserver)||void 0===e||e.disconnect(),null===(i=s.progressObserver)||void 0===i||i.disconnect(),null===(n=s.inviewObserver)||void 0===n||n.disconnect();const A=this.getAllAttributes(t);let _=this._boundingClientRect.process(t),O=_.width/this.data.scsW,I=_.height/this.data.scsH,H=null!==(o=A["string-enter-el"])&&void 0!==o?o:this.defaultSettings.stringEnterEl,U=null!==(r=A["string-enter-vp"])&&void 0!==r?r:this.defaultSettings.stringEnterVp,W=null!==(a=A["string-exit-el"])&&void 0!==a?a:this.defaultSettings.stringExitEl,j=null!==(l=A["string-exit-vp"])&&void 0!==l?l:this.defaultSettings.stringExitVp;s.inviewTop=-1*this._parser.parseSingle(null!==(d=null!==(h=A["string-inview-top"])&&void 0!==h?h:A["string-inview-left"])&&void 0!==d?d:this.defaultSettings.stringInviewTop,t,"vertical"==this.data.sD?I:O,16),s.inviewBottom=-1*this._parser.parseSingle(null!==(p=null!==(u=null!==(c=A["string-inview"])&&void 0!==c?c:A["string-inview-bottom"])&&void 0!==u?u:A["string-inview-right"])&&void 0!==p?p:this.defaultSettings.stringInviewBottom,t,"vertical"==this.data.sD?I:O,16),s.selfDisable=void 0!==A["string-self-disable"],s.abs=void 0!==A["string-abs"],s.cursorTargetDisabled=void 0!==A["string-cursor-target-disable"],s.cursorTargetStyleDisabled=void 0!==A["string-cursor-target-style-disable"];let Y=A["string-cursor-class"];Y&&(s.cursorTargetClass=Y),s.id=null!==(m=A["string-id"])&&void 0!==m?m:`string-${this.globalId}`,s.key=null!==(g=A["string-key"])&&void 0!==g?g:this.defaultSettings.stringKey,s.keys=(null!==(v=A.string)&&void 0!==v?v:"").split("|"),s.strength=null!==(b=A["string-strength"])&&void 0!==b?b:this.defaultSettings.stringStrength,s.radius=null!==(f=A["string-radius"])&&void 0!==f?f:this.defaultSettings.stringRadius,s.lerp=null!==(y=A["string-lerp"])&&void 0!==y?y:this.defaultSettings.stringLerp,s.weight=parseFloat(null!==(S=A["string-weight"])&&void 0!==S?S:"0.0"),s.glide=parseFloat(null!==(E=A["string-glide"])&&void 0!==E?E:"1");let k=parseFloat(null!==(w=A["string-parallax-bias"])&&void 0!==w?w:this.defaultSettings.stringParallaxBias);s.parallaxPositionStart=.5*k-.5,s.parallaxPositionEnd=.5+.5*(1-k),s.alignment=null!==(M=A["string-alignment"])&&void 0!==M?M:"center",t.setAttribute("string-id",s.id),s.size="vertical"==this.data.sD?I:O,s.oStart=this._parser.parseSingle(null!==(C=null!==(x=A["string-offset-top"])&&void 0!==x?x:A["string-offset-left"])&&void 0!==C?C:this.defaultSettings.stringOffsetStart,t,this.data.wS,16),s.oEnd=this._parser.parseSingle(null!==(L=null!==(P=A["string-offset-bottom"])&&void 0!==P?P:A["string-offset-right"])&&void 0!==L?L:this.defaultSettings.stringOffsetEnd,t,this.data.wS,16);let X=s.oStart,B=s.oEnd,z=(null!==(D=A.string)&&void 0!==D?D:"").split("|");s.factor=0,z.includes("parallax")&&(X=B=s.oStart=s.oEnd=0,s.factor=parseFloat(null!==(T=A["string-parallax"])&&void 0!==T?T:this.defaultSettings.stringParallax),s.oStart+=s.factor*this.data.wS,s.oEnd+=s.factor*this.data.wS),s.repeat=void 0!==A["string-repeat"],s.sElPos=H,s.sScrPos=U,s.eElPos=W,s.eScrPos=j,s.halfWidth=O/2,s.halfHeight=I/2;let F=this.data.wS,R="vertical"==this.data.sD?this._position.process(t,this.data.sC).top/this.data.scsH:this._position.process(t,this.data.sC).left/this.data.scsW;s.start=R,s.end=R+("vertical"==this.data.sD?I:O),s.calculatePositions(F);let q=this.connectQueue.filter((t=>t.id==s.id));this.connectQueue=this.connectQueue.filter((t=>t.id!=s.id)),q.forEach((t=>s.connects.push(t.element)));let V={root:null,rootMargin:`${X+.3*this.data.wS}px 0px ${B+.3*this.data.wS}px 0px`,threshold:.001},$={root:null,rootMargin:`${X+s.inviewTop}px 0px ${B+s.inviewBottom}px 0px`,threshold:.001},N=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?s.active||(this.events.emit(`activate_object_${s.id}`,!0),s.enter()):s.active&&(this.events.emit(`activate_object_${s.id}`,!1),s.leave())}))}),V),K=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?(this.events.emit(`inview_${s.id}`,!0),s.show()):(this.events.emit(`inview_${s.id}`,!1),s.hide())}))}),$);N.observe(t),K.observe(t),s.progressObserver=N,s.inviewObserver=K,this.modules.forEach((e=>{e.tryConnect(s)&&(e.initObject(s,t),e.connect(s))}))}getAllAttributes(t){let s={};return Array.from(t.attributes).forEach((t=>{s[t.name]=t.value})),s}addObject(t){let s;s=null==this._attribute.process(t,"string-inited")?new g(t):this.objects.has(this._attribute.process(t,"string-id"))?this.objects.get(this._attribute.process(t,"string-id")):new g(t),t.setAttribute("string-inited",""),this.setupObject(t,s),this.objects.set(s.id,s),this.globalId++}removeObject(t){let s=this.objects.get(t);null!=(null==s?void 0:s.showObserver)&&(null==s||s.showObserver.disconnect()),null!=(null==s?void 0:s.progressObserver)&&(null==s||s.progressObserver.disconnect()),null!=(null==s?void 0:s.inviewObserver)&&(null==s||s.inviewObserver.disconnect()),this.objects.delete(t),null==s||s.el.removeAttribute("string-inited"),null==s||s.leave(),s=void 0}onMouseMoveEvent(t){this._virtualCursor.onMouseMove(t);for(let s=0;s<this.modules.length;s++)this.modules[s].onMouseMove(t);for(let s=0;s<this.modulesUI.length;s++)this.modulesUI[s].onMouseMove(t)}onWheelEvent(t){this.sEn.onWheel(t);for(let s=0;s<this.modules.length;s++)this.modules[s].onWheel(t);for(let s=0;s<this.modulesUI.length;s++)this.modulesUI[s].onWheel(t)}onScrollStart(){for(let t=0;t<this.modules.length;t++)this.modules[t].onScrollStart();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScrollStart()}onScrollStop(){for(let t=0;t<this.modules.length;t++)this.modules[t].onScrollStop();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScrollStop()}onChangeDirection(){for(let t=0;t<this.modules.length;t++)this.modules[t].onChangeDirection();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onChangeDirection()}onScrollEvent(t){this.sEn.onScroll(t);for(let t=0;t<this.modules.length;t++)this.modules[t].onScroll(this.data);for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScroll(this.data);this.events.emit("lerp",this.data.v),this.events.emit("scroll",this.data.c)}onUpdateEvent(){this._virtualCursor.onUpdate(),this.sEn.onUpdate();for(let t=0;t<this.modules.length;t++)this.modules[t].onUpdate(this.data);for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onUpdate(this.data);this.events.emit("update",null)}onResize(){let t=0,s=0;try{let e=this.sEn.scrollContainer.getBoundingClientRect();t=e.width,s=e.height}catch(e){t=this.sEn.scrollContainer.innerWidth,s=this.sEn.scrollContainer.innerHeight}"vertical"==this.data.sD?(this.data.bS=this.data.psH-s,this.data.wS=s):(this.data.bS=this.data.psW-t,this.data.wS=t),(this.wW!=t||this.window.innerWidth>1024)&&(this.rebuild(),this.modules.forEach((t=>{t.onResize()})),this.modulesUI.forEach((t=>{t.onResize()}))),this.wW=t,this.wH=s}initMutationObserver(){const t=t=>{if(null!=this._attribute.process(t,"string-fixed"))return;let s=t.getAttribute("string-id"),e=this._attribute.process(t,"string-copy-from");null!=e&&(this.connectQueue=this.connectQueue.filter((t=>t.id!=e))),null!=s&&this.removeObject(s)},s=t=>{if(null!=this._attribute.process(t,"string-fixed"))return;this.addObject(t);let s=this._attribute.process(t,"string-copy-from");if(null!=s)if(this.objects.has(s)){let e=this.objects.get(s);null!=e&&e.connects.push(t)}else this.connectQueue.push({id:s,element:t})};new MutationObserver((e=>{e.forEach((e=>{"childList"===e.type&&(e.removedNodes.length>0&&e.removedNodes.forEach((s=>{if(s.nodeType===Node.ELEMENT_NODE){const e=s;e.hasAttribute("string")&&t(e),e.querySelectorAll("[string]").forEach((s=>{t(s)}))}})),e.addedNodes.length>0&&e.addedNodes.forEach((t=>{if(t.nodeType===Node.ELEMENT_NODE){const e=t;e.hasAttribute("string")&&!e.hasAttribute("string-inited")&&s(e),e.querySelectorAll("[string]:not([string-inited])").forEach((t=>{s(t)}))}})),(e.addedNodes.length>0||e.removedNodes.length>0)&&this.modules.forEach((t=>{t.onRebuild()})))}))})).observe(document.body,{attributes:!1,childList:!0,subtree:!0})}rebuild(){try{let s=(t=this.data.sC,window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)})));this.data.scsW=s[0],this.data.scsH=s[3]}catch(t){this.data.scsW=1,this.data.scsH=1}var t;try{let t=this.data.sC.getBoundingClientRect();this.wW=t.width/this.data.scsW,this.wH=t.height/this.data.scsH}catch(t){this.wW=this.data.sC.innerWidth,this.wH=this.data.sC.innerHeight}this.wW<1024||V()?this.scrollMode=this.mMode:this.scrollMode=this.dMode;let s=document.body,e=document.documentElement;this.data.psW=this.data.sC.scrollWidth,this.data.psH=this.data.sC.scrollHeight,null==this.data.psW&&(this.data.psW=Math.max(s.scrollWidth,s.offsetWidth,e.clientWidth,e.scrollWidth,e.offsetWidth)),null==this.data.psH&&(this.data.psH=Math.max(s.scrollHeight,s.offsetHeight,e.clientHeight,e.scrollHeight,e.offsetHeight)),"vertical"==this.data.sD?(this.data.bS=this.data.psH-this.wH,this.data.wS=this.wH):(this.data.bS=this.data.psW-this.wW,this.data.wS=this.wW),this.data.hnwS=-.5*this.data.wS,this.updateModeParams()}}return s})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.StringTune=e():t.StringTune=e()}(this,(()=>(()=>{"use strict";var t,e={d:(t,s)=>{for(var i in s)e.o(s,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:s[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},s={};e.r(s),e.d(s,{StringAnchor:()=>P,StringCursor:()=>d,StringDelayLerpTracker:()=>R,StringFPSTracker:()=>z,StringGlide:()=>E,StringLazy:()=>l,StringLerp:()=>w,StringLerpTracker:()=>B,StringLoading:()=>a,StringMagnetic:()=>p,StringParallax:()=>D,StringPositionTracker:()=>q,StringProgress:()=>_,StringResponsive:()=>v,StringScrollbar:()=>S,StringSplit:()=>W,StringTune:()=>K,StringVideoAutoplay:()=>h,default:()=>K});class i{constructor(){this.stringOffsetStart="0%",this.stringOffsetEnd="0%",this.stringEnterEl="top",this.stringExitEl="bottom",this.stringEnterVp="bottom",this.stringExitVp="top",this.stringInviewTop="0%",this.stringInviewBottom="0%",this.stringKey="--progress",this.stringStrength=.3,this.stringRadius=150,this.stringLerp=.2,this.stringParallaxBias=0,this.stringParallax=.2}}class r{parseSingle(t,e,s,i){let r,o=t.startsWith("-");return o&&(t=t.slice(1)),"selfHeight"===t?r=e.offsetHeight:t.endsWith("px")?r=parseFloat(t):t.endsWith("%")?r=parseFloat(t)*s/100:t.endsWith("rem")&&(r=parseFloat(t)*i),o?-r:r}}class o{get type(){return this._type}constructor(t,e=null){this.settings=null,this.parser=new r,this.defaultSettings=new i,this.objectsMap=new Map,this.objects=new Array,this.htmlKey="",this._type=1,this.data=t.data,this.lerp=t.lerp,this.attribute=t.attribute,this.boundingClientRect=t.boundingClientRect,this.position=t.position,this.virtualCursor=t.virtualCursor,this.events=t.events,this.loop=t.loop,this.settings=e,this.defaultSettings=t.defaultSettings,this.parser=t.parser}initObject(t,e,s,i){}onScrollStart(){}onScrollStop(){}onChangeDirection(){}destructor(){this.objects=new Array,this.objectsMap=new Map}onChangeScrollParams(){}tryConnect(t){return t.keys.includes(this.htmlKey)}connect(t){t.connect(this),this.onConnect(t)}enterObject(t,e){this.objectsMap.has(t)||(this.objectsMap.set(t,e),this.objects.push(e))}leaveObject(t){const e=this.objectsMap.get(t);if(e){this.objectsMap.delete(t);const s=this.objects.indexOf(e);-1!==s&&this.objects.splice(s,1)}}onStart(){}onUpdate(t){}onResize(){}onConnect(t){}onRebuild(){}onScroll(t){}onMouseMove(t){}onWheel(t){}onChangeDevice(){}onChangeScrollDirection(){}onMutationObserver(t,e){}}class n extends o{constructor(t,e=null){super(t,e),this.oldLerp=0}initObject(t,e,s,i){}}class l extends n{constructor(t){super(t),this.isStartLoaded=!1,this.imageLoadingCount=0,this.htmlKey="lazy"}onStart(){document.querySelectorAll("img[string-lazy]").forEach((t=>{this.load(t)})),this.isStartLoaded=!0}onConnect(t){if(this.imageLoadingCount++,this.isStartLoaded){let e=t.el;this.load(e)}}load(t){this.getImageSize(t,t.getAttribute("string-lazy")),t.classList.add("lazyLoad"),t.src=t.getAttribute("string-lazy");const e=()=>{t.classList.add("-loaded"),t.removeEventListener("load",e)};t.addEventListener("load",e)}getImageSize(t,e){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{if(206===r.status||200===r.status){const e=r.response,o=new Blob([e]),n=new Image;n.onload=()=>{t.style.aspectRatio=`${n.width} / ${n.height}`,s({width:n.width,height:n.height}),URL.revokeObjectURL(n.src),this.imageLoadingCount--,this.imageLoadingCount<=0&&(this.events.emit("all-image-loaded",null),this.imageLoadingCount=0)},n.onerror=()=>{URL.revokeObjectURL(n.src),this.imageLoadingCount--,i(new Error("Failed to load image"))},n.src=URL.createObjectURL(o)}else i(new Error("Failed to load image"))},r.onerror=()=>{i(new Error("Network error"))},r.setRequestHeader("Range","bytes=0-"),r.send()}))}}class a extends o{constructor(t,e=null){super(t),this.loadingTimeout=0,this._type=2,null!=e&&null!=e.timeout&&(this.loadingTimeout=e.timeout)}onStart(){setTimeout((()=>{document.documentElement.classList.add("-loaded")}),this.loadingTimeout)}}class h extends o{constructor(t){super(t),this.htmlKey="autoplay"}onConnect(t){const e=t.el,s=this.attribute.process(e,"string-src",""),i=null!=this.attribute.process(e,"string-started",null);"video"===e.tagName.toLowerCase()&&s&&0==i?(e.setAttribute("muted","muted"),e.setAttribute("playsinline",""),e.setAttribute("loop",""),e.setAttribute("autoplay",""),e.src=s,e.muted=!0,e.addEventListener("canplaythrough",(()=>{0==(null!=this.attribute.process(e,"string-started",null))&&this.tryPlay(t,e)}),{once:!0}),e.load()):console.warn("StringVideoAutoplay: Element is not a <video> tag or string-src is missing.",t.el)}tryPlay(t,e){e.play().catch((t=>{console.warn("Autoplay failed:",t)})).then((()=>{e.setAttribute("string-started","")}))}}function c(t,e=.1,s=1,i=.05,r=.65){return t<e?1:(t>1&&(t=1),t<=s?r-(t-e)/(s-e)*(r-i):i)}class d extends n{constructor(t,e=null){super(t,e),this.oldX=0,this.oldY=0,this.enterObjectsMap=new Map,this.enterObjects=new Array,this.overCount=0,this.htmlKey="cursor",this.cursor=document.querySelector("[string-cursor]"),this.cursorContent=document.querySelector("[string-cursor-content]")}onStart(){null!=this.settings?null!=this.settings["string-lerp-cursor"]&&(this.virtualCursor.mouseLerp=c(this.settings["string-lerp-cursor"])):this.virtualCursor.mouseLerp=c(.5)}initObject(t,e,s,i){var r;super.initObject(t,e,s,i);let o=this.attribute.process(s,"string-lerp",.5);null!=this.settings&&null!=this.settings["string-lerp-target"]&&(o=this.attribute.process(s,"string-lerp",this.settings["string-lerp-target"])),e.setProperty("alignment",null!==(r=i["string-alignment"])&&void 0!==r?r:"center"),e.setProperty("mouse-x",0),e.setProperty("mouse-y",0),e.setProperty("mouse-pixel-x",0),e.setProperty("mouse-pixel-y",0),e.setProperty("is-mouse-over",!1),e.setProperty("is-mouse-move",!1),e.setProperty("lerp",c(o)),e.setProperty("cursor-target-disable",void 0!==i["string-cursor-target-disable"]),e.setProperty("cursor-target-style-disable",void 0!==i["string-cursor-target-style-disable"]);let n=i["string-cursor-class"];e.setProperty("cursor-target-class",""),n&&e.setProperty("cursor-target-class",n)}onUpdate(t){requestAnimationFrame((()=>{if(this.objects.forEach((t=>{if(t.getProperty("is-mouse-over")&&!t.getProperty("cursor-target-disable")){let e=t.el.getBoundingClientRect();const s=this.virtualCursor.x-e.left,i=this.virtualCursor.y-e.top,r=t.getProperty("mouse-pixel-x")-s,o=t.getProperty("mouse-pixel-y")-i;if(r*r+o*o>1e-4){0==t.getProperty("is-mouse-move")&&(t.setProperty("is-mouse-move",!0),t.setProperty("mouse-pixel-x",s),t.setProperty("mouse-pixel-y",i),this.events.emit(`mousemove_start_${t.id}`,null));let r=this.lerp.process(t.getProperty("mouse-pixel-x"),s,t.getProperty("lerp")),o=this.lerp.process(t.getProperty("mouse-pixel-y"),i,t.getProperty("lerp"));t.setProperty("mouse-pixel-x",t.getProperty("mouse-pixel-x")+r),t.setProperty("mouse-pixel-y",t.getProperty("mouse-pixel-y")+o);const n=this.calculateOffset(t.getProperty("alignment"),t.getProperty("mouse-pixel-x"),e.width),l=this.calculateOffset(t.getProperty("alignment"),t.getProperty("mouse-pixel-y"),e.height);t.setProperty("mouse-x",n),t.setProperty("mouse-y",l),this.setMouseCoordinates(t,t.getProperty("mouse-x"),t.getProperty("mouse-y")),this.events.emit(`mousemove_${t.id}`,{x:t.getProperty("mouse-x"),y:t.getProperty("mouse-y")}),this.events.emit(`mousemove_pixel_${t.id}`,{x:t.getProperty("mouse-pixel-x"),y:t.getProperty("mouse-pixel-y")})}else t.setProperty("mouse-pixel-x",s),t.setProperty("mouse-pixel-y",i),this.events.emit(`mousemove_end_${t.id}`,null)}else if(0!=t.getProperty("mouse-x")||0!=t.getProperty("mouse-y")){t.setProperty("is-mouse-move",!1);let e=t.el.getBoundingClientRect();const s=this.calculateOffset("center",t.getProperty("half-width"),e.width),i=this.calculateOffset("center",t.getProperty("half-height"),e.height);t.setProperty("mouse-x",t.getProperty("mouse-x")+this.lerp.process(t.getProperty("mouse-x"),s,t.getProperty("lerp"))),t.setProperty("mouse-y",t.getProperty("mouse-y")+this.lerp.process(t.getProperty("mouse-y"),i,t.getProperty("lerp"))),Math.abs(t.getProperty("mouse-x"))<.001&&Math.abs(t.getProperty("mouse-y"))<.001&&(t.setProperty("mouse-x",0),t.setProperty("mouse-y",0),t.setProperty("mouse-pixel-x",0),t.setProperty("mouse-pixel-y",0)),this.setMouseCoordinates(t,t.getProperty("mouse-x"),t.getProperty("mouse-y"))}})),0!=this.virtualCursor.lerpX||0!=this.virtualCursor.lerpY){let t={lerpX:this.virtualCursor.lerpX,lerpY:this.virtualCursor.lerpY,x:this.virtualCursor.smoothX,y:this.virtualCursor.smoothY};this.events.emit("cursor",t),this.oldX=this.virtualCursor.smoothX,this.oldY=this.virtualCursor.smoothY,this.cursor.style.setProperty("--x",this.virtualCursor.smoothX),this.cursor.style.setProperty("--y",this.virtualCursor.smoothY),this.cursor.style.setProperty("--x-lerp",this.virtualCursor.lerpX),this.cursor.style.setProperty("--y-lerp",this.virtualCursor.lerpY)}}))}onConnect(t){let e=t.el,s=null,i=()=>{this.overCount++,e.addEventListener("mouseleave",r),t.setProperty("is-mouse-over",!0),null!=t.getProperty("cursor-target-class")&&t.getProperty("cursor-target-class").length>0&&this.cursor.classList.add(t.getProperty("cursor-target-class")),this.cursor.classList.add("-showing"),s=setTimeout((()=>{this.cursor.classList.remove("-showing"),this.cursor.classList.add("-show")}),1200)},r=()=>{this.overCount--,null!=s&&clearTimeout(s),e.removeEventListener("mouseleave",r),t.setProperty("is-mouse-over",!1),null!=t.getProperty("cursor-target-class")&&t.getProperty("cursor-target-class").length>0&&this.cursor.classList.remove(t.getProperty("cursor-target-class")),this.cursor.classList.remove("-showing"),this.cursor.classList.remove("-show")};t.onEnter=()=>{e.addEventListener("mouseenter",i)},t.onLeave=()=>{e.removeEventListener("mouseenter",i),e.removeEventListener("mouseleave",r)}}setMouseCoordinates(t,e,s){t.getProperty("cursor-target-style-disable")||(0==t.getProperty("self-disable")&&(t.el.style.setProperty("--x",e.toFixed(2)),t.el.style.setProperty("--y",s.toFixed(2))),t.connects.forEach((t=>{t.style.setProperty("--x",e.toFixed(2)),t.style.setProperty("--y",s.toFixed(2))})))}calculateOffset(t,e,s){switch(t){case"start":return e/s;case"end":return(e-s)/s;default:return(e-s/2)/(s/2)}}}class p extends n{constructor(t){super(t),this.htmlKey="magnetic"}initObject(t,e,s,i){var r,o;super.initObject(t,e,s,i),e.setProperty("is-magneting",!1),e.setProperty("magnetic-target-x",0),e.setProperty("magnetic-target-y",0),e.setProperty("magnetic-x",0),e.setProperty("magnetic-y",0),e.setProperty("strength",null!==(r=i["string-strength"])&&void 0!==r?r:this.defaultSettings.stringStrength),e.setProperty("radius",null!==(o=i["string-radius"])&&void 0!==o?o:this.defaultSettings.stringRadius),e.setProperty("lerp",.1)}onConnect(t){t.el,null!=this.settings&&(null!=this.settings["string-strength"]&&t.setProperty("strength",this.settings["string-strength"]),null!=this.settings["string-radius"]&&t.setProperty("radius",this.settings["string-radius"]),null!=this.settings["string-lerp"]&&t.setProperty("lerp",this.settings["string-lerp"]))}onMouseMove(t){this.objects.forEach((e=>{const s=e.el.getBoundingClientRect(),i=s.left+e.getProperty("half-width"),r=s.top+e.getProperty("half-height"),o=t.clientX-i,n=t.clientY-r,l=Math.sqrt(o**2+n**2);let a=e.getProperty("radius"),h=e.getProperty("strength");l<a?(e.setProperty("magnetic-target-x",o*h*((a-l)/a)),e.setProperty("magnetic-target-y",n*h*((a-l)/a)),e.setProperty("is-magneting",!0)):(e.setProperty("magnetic-target-x",0),e.setProperty("magnetic-target-y",0))}))}onUpdate(t){this.objects.forEach((t=>{if(t.getProperty("is-magneting")){let e=t.getProperty("magnetic-x"),s=t.getProperty("magnetic-y"),i=this.lerp.process(e,t.getProperty("magnetic-target-x"),t.getProperty("lerp")),r=this.lerp.process(s,t.getProperty("magnetic-target-y"),t.getProperty("lerp"));i>-.01&&i<.01&&(i=0,t.setProperty("magnetic-x",t.getProperty("magnetic-target-x"))),r>-.01&&r<.01&&(r=0,t.setProperty("magnetic-y",t.getProperty("magnetic-target-y"))),e+=i,s+=r,t.setProperty("magnetic-x",e),t.setProperty("magnetic-y",s),t.el.style.setProperty("--magnetic-x",e.toString()),t.el.style.setProperty("--magnetic-y",s.toString()),t.getProperty("magnetic-target-x")!=e&&t.getProperty("magnetic-target-y")!=s||t.setProperty("is-magneting",!1)}}))}}class u{process(t,e,s){return(e-t)*s}}class g{get x(){return this.targetX}get y(){return this.targetY}get smoothX(){return this._x}get smoothY(){return this._y}get lerpX(){return this._lerpX}get lerpY(){return this._lerpY}set mouseLerp(t){this._lF=t}constructor(t=.1){this._lF=.1,this.lerp=new u,this._x=0,this._y=0,this._lerpX=0,this._lerpY=0,this.targetX=0,this.targetY=0,this._lF=t}onMouseMove(t){this.targetX=t.clientX,this.targetY=t.clientY}onUpdate(){this._lerpX=this.lerp.process(this._x,this.targetX,this._lF),this._lerpY=this.lerp.process(this._y,this.targetY,this._lF),Math.sqrt(Math.pow(this._lerpX,2)+Math.pow(this._lerpY,2))<.1?(this._lerpX=0,this._lerpY=0,this._x=this.targetX,this._y=this.targetY):(this._x=this._x+this._lerpX,this._y=this._y+this._lerpY)}}class m{setProperty(t,e){this.properties.set(t,e)}getProperty(t){var e;return null!==(e=this.properties.get(t))&&void 0!==e?e:null}constructor(t){this.id="",this.key="--progress",this.keys="",this.connects=new Array,this.properties=new Map,this.modules=new Array,this.onEnter=()=>{},this.onLeave=()=>{},this.el=t}enter(){this.setProperty("active",!0),this.modules.forEach((t=>{t.enterObject(this.id,this)})),this.onEnter()}leave(){this.setProperty("active",!1),this.modules.forEach((t=>{t.leaveObject(this.id)})),this.onLeave()}show(){this.el.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.el.classList.remove("-inview")}connect(t){this.modules.push(t)}}!function(t){t[t.Mobile=0]="Mobile",t[t.Tablet=1]="Tablet",t[t.Laptop=2]="Laptop",t[t.Desktop=3]="Desktop"}(t||(t={}));class y{constructor(t){var e;this.min=void 0,this.max=void 0,this.enable=!0,this.min=null==t?void 0:t.min,this.max=null==t?void 0:t.max,this.enable=null===(e=null==t?void 0:t.enable)||void 0===e||e}setEnable(t=!0){this.enable=t}setRange(t,e){this.min=null!=t?t:void 0,this.max=null!=e?e:void 0}get mediaQuery(){let t="screen";return this.min&&(t+=` and (min-width: ${this.min}px)`),this.max&&(t+=` and (max-width: ${this.max}px)`),t}}class v extends o{constructor(e,s){super(e,s),this.queries={[t.Mobile]:new y({max:359}),[t.Tablet]:new y({min:360,max:1079}),[t.Laptop]:new y({min:1080,max:1365}),[t.Desktop]:new y({min:1366})},this.matchMedias={[t.Mobile]:window.matchMedia(this.queries[t.Mobile].mediaQuery),[t.Tablet]:window.matchMedia(this.queries[t.Tablet].mediaQuery),[t.Laptop]:window.matchMedia(this.queries[t.Laptop].mediaQuery),[t.Desktop]:window.matchMedia(this.queries[t.Desktop].mediaQuery)},this._type=2}onConnect(){}onStart(){var e,s,i,r;if(null!=this.settings&&null!=this.settings.settings){let o=this.settings.settings;o.mobile?(this.queries[t.Mobile].enable=!0,this.queries[t.Mobile].setRange(null==o.mobile.min?null:o.mobile.min,null!==(e=o.mobile.max)&&void 0!==e?e:null),this.matchMedias[t.Mobile]=window.matchMedia(this.queries[t.Mobile].mediaQuery)):this.queries[t.Mobile].enable=!1,o.tablet?(this.queries[t.Tablet].enable=!0,this.queries[t.Tablet].setRange(null==o.mobile.min?null:o.mobile.min,null!==(s=o.mobile.max)&&void 0!==s?s:null),this.matchMedias[t.Tablet]=window.matchMedia(this.queries[t.Mobile].mediaQuery)):this.queries[t.Tablet].enable=!1,o.laptop?(this.queries[t.Laptop].enable=!0,this.queries[t.Laptop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(i=o.mobile.max)&&void 0!==i?i:null),this.matchMedias[t.Laptop]=window.matchMedia(this.queries[t.Mobile].mediaQuery)):this.queries[t.Laptop].enable=!1,o.desktop?(this.queries[t.Desktop].enable=!0,this.queries[t.Desktop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(r=o.mobile.max)&&void 0!==r?r:null),this.matchMedias[t.Desktop]=window.matchMedia(this.queries[t.Mobile].mediaQuery)):this.queries[t.Desktop].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){const e=this.matchMedias[t.Mobile].matches&&this.queries[t.Mobile].enable,s=this.matchMedias[t.Tablet].matches&&this.queries[t.Tablet].enable,i=this.matchMedias[t.Laptop].matches&&this.queries[t.Laptop].enable,r=this.matchMedias[t.Desktop].matches&&this.queries[t.Desktop].enable;document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach((t=>{let o=!1;t.hasAttribute("string-mobile")&&e&&(o=!0),t.hasAttribute("string-tablet")&&s&&(o=!0),t.hasAttribute("string-laptop")&&i&&(o=!0),t.hasAttribute("string-desktop")&&r&&(o=!0),t.style.display=o?null:"none"}))}}class b{constructor(t,e,s){this.isDragging=!1,this.startY=0,this.startScrollPosition=0,this.data=t,this.scrollbar=e,this.thumb=s}onResize(){const t=this.data.psH,e=this.data.wS,s=e/t*e;this.thumb.style.setProperty("--size",s+"px"),t<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){const t=this.data.psH,e=this.data.wS;this.thumb.style.setProperty("--position",this.data.c/t*e+"px")}mouseDownEvent(t){this.startY=t.clientY,this.startScrollPosition=this.data.c}mouseMoveEvent(t){const e=t.clientY-this.startY,s=this.startScrollPosition+e/this.data.wS*this.data.psH;this.data.c=s,this.data.t=s,window.scrollTo(0,s),this.updateThumb()}}class f{constructor(t,e,s){this.isDragging=!1,this.startCoordinate=0,this.startScrollPosition=0,this.data=t,this.scrollbar=e,this.thumb=s}onResize(){const t=this.data.psW,e=this.data.wS,s=e/t*e;this.thumb.style.setProperty("--size",s+"px"),t<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){const t=this.data.psW,e=this.data.wS;this.thumb.style.setProperty("--position",this.data.c/t*e+"px")}mouseDownEvent(t){this.startCoordinate=t.clientX,this.startScrollPosition=this.data.c}mouseMoveEvent(t){const e=t.clientX-this.startCoordinate,s=this.startScrollPosition+e/this.data.wS*this.data.psW;this.data.c=s,this.data.t=s,window.scrollTo(0,s),this.updateThumb()}}class S extends o{constructor(t){super(t),this.isDragging=!1,this.scrollMode="smooth",this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this)}destructor(){document.removeEventListener("mouseup",this.mouseUpEventBind),this.thumb.removeEventListener("mousedown",this.mouseDownEventBind),document.removeEventListener("mousemove",this.mouseMoveEventBind)}onStart(){this.createScrollbar(),this.updateThumb(),this.addCustomStyles(),document.addEventListener("mouseup",this.mouseUpEventBind),this.thumb.addEventListener("mousedown",this.mouseDownEventBind),document.addEventListener("mousemove",this.mouseMoveEventBind),document.documentElement.classList.add("-no-scrollbar")}onScroll(t){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}onChangeScrollParams(){"disable"==this.data.sM&&"disable"!=this.scrollMode&&this.scrollbar.classList.add("-hide"),("smooth"==this.data.sM&&"disable"==this.scrollMode||"default"==this.data.sM&&"disable"==this.scrollMode)&&this.scrollbar.classList.remove("-hide"),this.scrollMode=this.data.sM}onChangeScrollDirection(){"horizontal"==this.data.sD?this.scrollbarState=this.scrollbarStateVertical:this.scrollbarState=this.scrollbarStateHorizontal,this.scrollbarState.onResize()}addCustomStyles(){const t=document.createElement("style");t.textContent="\n ::-webkit-scrollbar {\n display: none;\n width: 0;\n height: 0;\n -webkit-appearance: none;\n }\n body {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .-without-scrollbar::-webkit-scrollbar {\n display: none;\n }\n .-without-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ",document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new b(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new f(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateHorizontal}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout((()=>{this.scrollbar.classList.remove("-scroll")}),1e3)}}class P extends n{constructor(t){super(t),this.htmlKey="anchor"}initObject(t,e,s,i){super.initObject(t,e,s,i),e.setProperty("anchor",this.attribute.process(s,"string-anchor","center center"))}onConnect(t){super.onConnect(t),null!=t.getProperty("anchor")&&""!=t.getProperty("anchor")||t.setProperty("anchor","center center");const e=t.getProperty("anchor").split(" "),s=this.parseOrig(e[0]),i=this.parseOrig(e[1]||e[0]);t.el.style.transformOrigin=`${s} ${i}`}parseOrig(t){if((t=t.trim()).startsWith("random")){const e=t.slice(7,-1).split(",").map((t=>t.trim()));return e[Math.floor(Math.random()*e.length)]}return t}}class E extends n{constructor(t,e=null){if(super(t),this.previousLerp=0,this.displacement=0,this.acceleration=0,this.velocityMultiplier=.00125,this.isInitialScroll=!0,this.baseVelocityMultiplier=.00125,this.reducedVelocityMultiplier=this.baseVelocityMultiplier/20,this.negativeVelocityMultiplier=-1e-4,this.ACCELERATION_STEP=.05,this.MIN_DISPLACEMENT=.01,this.MAX_DISPLACEMENT=1,this.MIN_VELOCITY=-1,this.MAX_VELOCITY=1,this.maxDisplacementValue=0,this.setupItem=t=>{const e=`translate3d(0, ${-this.data.dV*this.maxDisplacementValue*t.getProperty("glide")}px, 0)`;t.el.style.transform=e},this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++){let e=this.objects[t];this.setupItem(e)}},this.onUpdateMobileEvent=()=>{},this.onUpdateEvent=this.onUpdateDesktopEvent,this.htmlKey="glide",e){const{baseVelocityMultiplier:t,reducedVelocityMultiplier:s,negativeVelocityMultiplier:i}=e;this.baseVelocityMultiplier=null!=t?t:this.baseVelocityMultiplier,this.reducedVelocityMultiplier=null!=s?s:this.reducedVelocityMultiplier,this.negativeVelocityMultiplier=null!=i?i:this.negativeVelocityMultiplier}}initObject(t,e,s,i){var r;super.initObject(t,e,s,i),e.setProperty("glide",parseFloat(null!==(r=i["string-glide"])&&void 0!==r?r:"1"))}calcExpanderFactor(t){const e=t?this.data.v<this.previousLerp:this.data.v>this.previousLerp;this.velocityMultiplier=e?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,e||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=.1*this.data.wS}onResize(){window.innerWidth>1080?(this.maxDisplacementValue=.1*this.data.wS,this.onUpdateEvent=this.onUpdateDesktopEvent):(this.onUpdateEvent=this.onUpdateMobileEvent,this.resetState(),this.objects.forEach((t=>{this.setupItem(t)})))}resetState(){this.displacement=0,this.acceleration=0,this.isInitialScroll=!0,this.velocityMultiplier=this.baseVelocityMultiplier}onScrollStart(){this.resetState()}onScrollStop(){this.resetState(),this.previousLerp=0;for(let t=0;t<this.objects.length;t++){let e=this.objects[t];const s="translate3d(0, 0px, 0)";e.el.style.transform=s,e.el.style.setProperty("--glide",this.data.dV.toString())}}onUpdate(t){this.calcExpanderFactor(!1===this.data.sDB),this.acceleration=Math.min(this.MAX_DISPLACEMENT,this.acceleration+this.ACCELERATION_STEP),this.displacement=Math.max(this.MIN_DISPLACEMENT,Math.min(this.MAX_DISPLACEMENT,this.displacement+this.velocityMultiplier)),this.data.dV=Math.min(this.MAX_VELOCITY,Math.max(this.MIN_VELOCITY,this.data.v*this.displacement*this.acceleration)),this.objects.forEach((t=>{t.el.style.setProperty("--glide",this.data.dV.toString())})),this.previousLerp=this.data.v,this.onUpdateEvent()}}class w extends n{constructor(t){super(t),this.htmlKey="lerp"}onScrollStop(){this.objects.forEach((t=>{t.el.style.setProperty("--lerp","0")}))}onScroll(t){this.objects.forEach((t=>{t.el.style.setProperty("--lerp",this.data.v.toString())}))}}const x="top",M="bottom",C="left",L="right";class _ extends n{constructor(t){super(t),this.htmlKey="progress"}initObject(t,e,s,i){var r,o,n,l;super.initObject(t,e,s,i);let a=null!==(r=i["string-enter-el"])&&void 0!==r?r:this.defaultSettings.stringEnterEl,h=null!==(o=i["string-enter-vp"])&&void 0!==o?o:this.defaultSettings.stringEnterVp,c=null!==(n=i["string-exit-el"])&&void 0!==n?n:this.defaultSettings.stringExitEl,d=null!==(l=i["string-exit-vp"])&&void 0!==l?l:this.defaultSettings.stringExitVp;e.setProperty("start-element",a),e.setProperty("start-source",h),e.setProperty("end-element",c),e.setProperty("end-source",d),this.calculatePositions(e,this.data.wS)}onScroll(t){super.onScroll(t),this.objects.forEach((t=>{this.setUpObject(t)}))}onConnect(t){super.onConnect(t),t.onEnter=()=>{this.setUpObject(t)}}setUpObject(t){const e=Math.min(1,Math.max(0,(this.data.c-t.getProperty("start-position"))/t.getProperty("difference-position")));t.getProperty("progress")!==e&&(t.setProperty("progress",e),this.applyProgress(t,e))}applyProgress(t,e){const s=e.toString();this.events.emit(`progress_${t.id}`,e),t.el.style.setProperty(t.key,s),t.connects.length>0&&t.connects.forEach((e=>{e.style.setProperty(t.key,s)}))}calculatePositions(t,e){t.getProperty("start-element")===x&&t.getProperty("start-source")===x||t.getProperty("start-element")===C&&t.getProperty("start-source")===C?t.setProperty("start-position",t.getProperty("start")-t.getProperty("offset-end")):t.getProperty("start-element")===x&&t.getProperty("start-source")===M||t.getProperty("start-element")===C&&t.getProperty("start-source")===L?t.setProperty("start-position",t.getProperty("start")-e-t.getProperty("offset-end")):t.getProperty("start-element")===M&&t.getProperty("start-source")===x||t.getProperty("start-element")===L&&t.getProperty("start-source")===C?t.setProperty("start-position",t.getProperty("start")+t.getProperty("size")-t.getProperty("offset-end")):(t.getProperty("start-element")===M&&t.getProperty("start-source")===M||t.getProperty("start-element")===L&&t.getProperty("start-source")===L)&&t.setProperty("start-position",t.getProperty("start")-e-t.getProperty("offset-end")+t.getProperty("size")),t.getProperty("end-element")===x&&t.getProperty("end-source")===x||t.getProperty("end-element")===C&&t.getProperty("end-source")===C?t.setProperty("end-position",t.getProperty("start")+t.getProperty("offset-start")):t.getProperty("end-element")===x&&t.getProperty("end-source")===M||t.getProperty("end-element")===C&&t.getProperty("end-source")===L?t.setProperty("end-position",t.getProperty("start")-e+t.getProperty("offset-start")):t.getProperty("end-element")===M&&t.getProperty("end-source")===x||t.getProperty("end-element")===L&&t.getProperty("end-source")===C?t.setProperty("end-position",t.getProperty("start")+t.getProperty("size")+t.getProperty("offset-start")):(t.getProperty("end-element")===M&&t.getProperty("end-source")===M||t.getProperty("end-element")===L&&t.getProperty("end-source")===L)&&t.setProperty("end-position",t.getProperty("start")-e+t.getProperty("size")+t.getProperty("offset-start")),t.setProperty("difference-position",t.getProperty("end-position")-t.getProperty("start-position"))}}class D extends _{constructor(t){super(t),this.setupParallax=(t,e)=>{let s=`translate3d(0, ${t.getProperty("parallax-factor")*this.data.wS*t.getProperty("parallax-position-start")+e*t.getProperty("parallax-factor")*this.data.wS*t.getProperty("parallax-position-end")}px, 0)`;t.el.style.transform=s,t.connects.forEach((t=>{t.style.transform=s}))},this.onScrollDesktopEvent=()=>{this.objects.forEach((t=>{this.setupParallax(t,t.getProperty("progress"))}))},this.onScrollMobileEvent=()=>{},this.onScrollEvent=this.onScrollDesktopEvent,this.htmlKey="parallax"}initObject(t,e,s,i){var r,o;let n=parseFloat(null!==(r=i["string-parallax-bias"])&&void 0!==r?r:this.defaultSettings.stringParallaxBias);e.setProperty("parallax-position-start",.5*n-.5),e.setProperty("parallax-position-end",.5+.5*(1-n)),e.setProperty("parallax-factor",parseFloat(null!==(o=i["string-parallax"])&&void 0!==o?o:this.defaultSettings.stringParallax)),e.setProperty("offset-start",e.getProperty("parallax-factor")*this.data.wS),e.setProperty("offset-end",e.getProperty("parallax-factor")*this.data.wS),super.initObject(t,e,s,i)}onScroll(t){super.onScroll(t),this.onScrollEvent()}onResize(){window.innerWidth>1080?this.onScrollEvent=this.onScrollDesktopEvent:(this.onScrollEvent=this.onScrollMobileEvent,this.objects.forEach((t=>{this.setupParallax(t,.5)})))}}class A{constructor(t,e,s){this.isProg=!1,this.isParallaxEnabled=!1,this.name="",this.v=0,this.vT=0,this.onScrollStart=()=>{},this.onScrollStop=()=>{},this.onChangeDirection=()=>{},this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(0,this.data.c)},this._scrollDirection="vertical",this.d=t,this.settings=e,this.data=s,this.scrollContainer=window}onUpdate(){}onWheel(t){}onScroll(t){}set scrollDirection(t){this._scrollDirection=t,"vertical"==this._scrollDirection?this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(0,this.data.c)}:"horizontal"==this._scrollDirection&&(this.onCalcUpdate=()=>{this.scrollContainer.scrollTo(this.data.c,0)})}}class T extends A{constructor(t,e,s){super(t,e,s),this.name="mobile"}onUpdate(){if(0!=this.data.d){let t=this.data.d*this.settings.speedAccelerate;this.data.d-=t,this.data.v=t,Math.abs(this.data.v)<.1&&(this.data.d=0,this.data.v=0,this.onScrollStop())}}onScroll(t){this.data.c=this.d.documentElement.scrollTop,this.data.t=this.d.documentElement.scrollTop}onWheel(t){if(0!=t.deltaY){0==this.data.d&&this.onScrollStart();let e=t.deltaY;0==this.data.t&&(this.data.d+=Math.max(0,t.deltaY)),this.data.d+=e}}}class O extends A{constructor(t,e,s){super(t,e,s),this.name="disable"}onUpdate(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}}const I="-scroll-forward",j="-scroll-back";class H extends A{constructor(t,e,s){super(t,e,s),this.name="desktop",this.isScrollbarManipulation=!1,this.isBottomScrollDirection=!1,this.velocityThreshold=.1,this.plusDelta=0,this.previousCurrent=0,this.delta=0}updateScrollDirection(t){null!==this.isBottomScrollDirection?(this.data.sDB=t,this.onChangeDirection(),document.documentElement.classList.toggle(I,t),document.documentElement.classList.toggle(j,!t)):this.isBottomScrollDirection=t}stopScroll(){this.data.v=0,this.data.d=0,this.data.t=this.data.c,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(j,I),this.isBottomScrollDirection=null}onUpdate(){var t,e;if(this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,this.data.t=null!==(e=null===(t=this.scrollContainer)||void 0===t?void 0:t.scrollTop)&&void 0!==e?e:document.documentElement.scrollTop,void(this.data.c=this.data.t);if(0!=this.data.d){this.delta=this.data.d*this.settings.speedAccelerate,this.data.t=Math.min(Math.max(0,this.data.t+this.delta),this.data.bS),this.data.d-=this.delta,this.data.v=(this.data.t-this.data.c)*this.settings.speed;const t=Math.abs(this.data.v);this.data.v>0?this.data.c=Math.ceil(this.data.c+this.data.v):this.data.c=Math.floor(this.data.c+this.data.v),this.updateScrollDirection(this.data.v>0),t<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!=this.data.c&&(this.previousCurrent=this.data.c,this.onCalcUpdate()))}}onWheel(t){if(t.preventDefault(),this.plusDelta=t.deltaY,0===this.plusDelta)return;0===this.data.d&&this.onScrollStart();let e=Math.sign(this.plusDelta);0===this.data.t&&e<0||this.data.t===this.data.bS&&e>0||(this.data.d+=this.plusDelta)}onScroll(t){this.isProg||(this.isScrollbarManipulation=!0)}}class U{constructor(){this.sC=.1,this.sA=.25}get speed(){return this.sC}get speedAccelerate(){return this.sA}set speedAccelerate(t){this.sA=t}set speed(t){this.sC=t}}class W extends n{constructor(t){super(t),this.htmlKey="split"}onStart(){}onResize(){document.querySelectorAll('[string="split"].-splited').forEach((t=>{const e=this.parseSplitOptions(t.getAttribute("string-split"));t.innerHTML!=this.split(e,t).html&&(t.innerHTML=this.split(e,t).html)}))}onConnect(t){let e=t.el;if(!e.classList.contains("-splited")){e.classList.add("-splited"),e.setAttribute("string-split-original",e.innerHTML);const t=this.parseSplitOptions(e.getAttribute("string-split"));e.innerHTML!=this.split(t,e).html&&(e.innerHTML=this.split(t,e).html)}}parseSplitOptions(t){const e={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return t&&t.split("|").forEach((t=>{const s=t.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(s){const t=s[1]||"",i=s[2],r=s[4]?s[4].split(","):[];switch(t+i){case"char-line":e.charLine.push(this.parseParam(r));break;case"char-word":e.charWord.push(this.parseParam(r));break;case"word-line":e.wordLine.push(this.parseParam(r));break;case"line":e.line.push(this.parseParam(r));break;case"word":e.word.push(this.parseParam(r));break;case"char":e.char.push(this.parseParam(r))}}})),e}parseParam(t){const e={align:"start"};return t.forEach((t=>{if("abs"===t)e.abs=!0;else if(t.startsWith("random")){const s=t.match(/random\((\d+),(\d+)\)/);s?(e.random={min:parseInt(s[1]),max:parseInt(s[2])},e.align="random"):e.align="random"}else["start","center","end"].includes(t)?e.align=t:e.align="start"})),e}split(t,e){let s=e.getAttribute("string-split-original");if(0===s.length)return"";s=this.decodeHtmlEntity(s);const i=document.createElement("span"),r=s.split(/\s+/);let o=0,n=0;const l=s.replace(/\s/g,"").length,a=document.createElement("span"),h=window.getComputedStyle(e);a.style.fontFamily=h.fontFamily,a.style.fontSize=h.fontSize,a.style.letterSpacing=h.letterSpacing,a.style.lineHeight=h.lineHeight,a.style.fontWeight=h.fontWeight,a.classList.add("-s-char"),document.body.appendChild(a);let c=[],d=[],p=0;r.forEach(((t,s)=>{a.textContent=t,t.length>0&&(a.textContent+=" ");const i=a.offsetWidth,r={text:t,width:i,chars:new Array};Array.from(t).forEach(((t,e)=>{const s={text:t};r.chars.push(s)})),p+i>e.offsetWidth&&(c.push(d),d=[],p=0,o+=d.length),d.push(r),p+=i})),c.push(d);let u=!1;null!=t.line&&t.line.length>0&&(u=!0),null!=t.wordLine&&t.wordLine.length>0&&(u=!0),null!=t.charLine&&t.charLine.length>0&&(u=!0);let g=0;if(u)for(let e=0;e<c.length;e++)this.appendVirtualLineToDOM(e,c.length,r.length,i,c[e],t,o,l,g),g+=c[e].length;else for(let e=0;e<c.length;e++)c[e].forEach(((e,s)=>{var a,h;if(e.chars.length>0){const c=document.createElement("span");c.classList.add("-s-word"),null!=t.char&&(null===(a=t.char)||void 0===a?void 0:a.length)>0||null!=t.charWord&&(null===(h=t.charWord)||void 0===h?void 0:h.length)>0?e.chars.forEach(((s,i)=>{const r=document.createElement("span");r.classList.add("-s-char"),r.textContent=s.text,this.applyOptions(r,t.char,o,"char",i,l),this.applyOptions(r,t.charWord,i,"char-word",i,e.text.length),c.appendChild(r),o++})):c.textContent=e.text,this.applyOptions(c,t.word,n,"word",s,r.length),e.chars.length>0&&(c.innerHTML+=" "),i.appendChild(c),n++}}));return document.body.removeChild(a),{html:i.innerHTML}}appendVirtualLineToDOM(t,e,s,i,r,o,n,l,a){const h=document.createElement("span");h.classList.add("-s-line"),this.applyOptions(h,o.line,t,"line",0,e);let c=0,d=0,p=0;r.forEach(((t,e)=>{p+=t.text.length})),r.forEach(((t,e)=>{if(t.chars.length>0){const i=document.createElement("span");i.classList.add("-s-word"),t.chars.forEach(((e,s)=>{const r=document.createElement("span");r.classList.add("-s-char"),r.textContent=e.text,this.applyOptions(r,o.char,n,"char",s,l),this.applyOptions(r,o.charLine,c,"char-line",s,p),this.applyOptions(r,o.charWord,s,"char-word",s,t.text.length),i.appendChild(r),n++,c++})),this.applyOptions(i,o.word,a+d,"word",a+d,s-1),this.applyOptions(i,o.wordLine,e,"word-line",e,r.length),e<r.length-1&&(i.innerHTML+=" "),h.appendChild(i),d++}})),i.appendChild(h)}applyOptions(t,e,s,i,r,o){e&&e.forEach(((e,n)=>{let l=this.calculateIndex(e,s,r,o);const a=this.generateVariableName(i,e,n);t.style.setProperty(a,String(l))}))}createSpaceSpan(){const t=document.createElement("span");return t.innerHTML=" ",t}decodeHtmlEntity(t){return t.replace(/&amp;/g,"&")}calculateIndex(t,e,s,i){let r=e;if("random"===t.align){void 0===t.random&&(t.random={min:0,max:i});const e=t.random.min||0,s=t.random.max||i;r=Math.floor(Math.random()*(s-e+1))+e}return"end"===t.align?r=i-r-1:"center"===t.align&&(r-=Math.floor(i/2)),t.abs&&(r=Math.abs(r)),r}generateVariableName(t,e,s){let i=`--${t}`;return e.align&&(i+=`-${e.align}`),i}}class k{constructor(){this.isAnimationStarted=!1,this.fpsInterval=0,this.then=0,this.requestAnimationId=0,this.onFrameCallback=()=>{},this.animate=()=>{}}start(t){this.isAnimationStarted||(this.fpsInterval=1e3/t,this.then=performance.now(),this.isAnimationStarted=!0,this.animate=0==t?()=>{this.requestAnimationId=requestAnimationFrame((()=>this.animate())),this.onFrameCallback()}:()=>{const t=performance.now(),e=t-this.then;e>this.fpsInterval&&(this.then=t-e%this.fpsInterval,this.onFrameCallback()),this.requestAnimationId=requestAnimationFrame((()=>this.animate()))},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(t){this.onFrameCallback=t}}class R extends o{constructor(t){super(t),this.canvasHeight=0,this._type=2}onStart(){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=.5*window.innerWidth,this.canvas.height=window.innerHeight/15-20,this.canvasHeight=window.innerHeight/15-20,this.canvas.style.position="fixed",this.canvas.style.bottom=window.innerHeight/20+10+"px",this.canvas.style.left="50%",this.canvas.style.transform="translateX(-50%)",this.canvas.style.backgroundColor="#000000",this.canvas.style.border="1px solid rgba(255, 255, 255, 0.2)",this.canvas.style.zIndex="1000",document.body.appendChild(this.canvas),this.positionHistory=[],this.maxHistory=this.canvas.width,this.currentPosition=0,this.targetPosition=0}onScroll(t){this.currentPosition=Math.abs(this.data.dV),this.positionHistory.push(this.currentPosition),this.positionHistory.length>this.maxHistory&&this.positionHistory.shift(),this.drawGraph()}drawGraph(){const t=this.context;t.clearRect(0,0,this.canvas.width,this.canvas.height),t.strokeStyle="#e0e0e0",t.lineWidth=1,t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.positionHistory.forEach(((e,s)=>{const i=s,r=this.canvas.height-e*this.canvasHeight;0===s?t.moveTo(i,r):t.lineTo(i,r)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class z extends o{constructor(t){super(t),this.callCount=0,this._type=2}createDisplayElement(){this.displayElement=document.createElement("div"),this.displayElement.style.position="fixed",this.displayElement.style.bottom="10px",this.displayElement.style.right="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.setAttribute("data-fps","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-fps]::after {\n content: 'FPS: ' attr(fps);\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement(),this.intervalId=setInterval((()=>{this.displayElement.setAttribute("fps",`${this.callCount}`),this.callCount=0}),1e3)}onUpdate(t){this.callCount++}destructor(){clearInterval(this.intervalId),document.body.removeChild(this.displayElement)}}class B extends o{constructor(t){super(t),this._type=2}onStart(){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=.5*window.innerWidth,this.canvas.height=window.innerHeight/15-20,this.canvas.style.position="fixed",this.canvas.style.bottom="10px",this.canvas.style.left="50%",this.canvas.style.transform="translateX(-50%)",this.canvas.style.backgroundColor="#000000",this.canvas.style.border="1px solid rgba(255, 255, 255, 0.2)",this.canvas.style.zIndex="1000",document.body.appendChild(this.canvas),this.positionHistory=[],this.maxHistory=this.canvas.width,this.currentPosition=0,this.targetPosition=0}onScroll(t){this.currentPosition=Math.abs(this.data.v),this.positionHistory.push(this.currentPosition),this.positionHistory.length>this.maxHistory&&this.positionHistory.shift(),this.drawGraph()}drawGraph(){const t=this.context;t.clearRect(0,0,this.canvas.width,this.canvas.height),t.strokeStyle="#e0e0e0",t.lineWidth=1,t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.positionHistory.forEach(((e,s)=>{const i=s,r=this.canvas.height-e/2;0===s?t.moveTo(i,r):t.lineTo(i,r)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class q extends o{constructor(t){super(t),this.callCount=0,this._type=2}createDisplayElement(){this.displayElement=document.createElement("div"),this.displayElement.style.position="fixed",this.displayElement.style.bottom="10px",this.displayElement.style.left="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.setAttribute("data-position","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-position]::after {\n content: attr(direction) 'Top: ' attr(value) 'px';\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement()}onScroll(t){let e="";t.c<t.t&&(e="↓"),t.c>t.t&&(e="↑"),this.displayElement.setAttribute("direction",e),this.displayElement.setAttribute("value",`${this.data.c}`)}onUpdate(t){this.callCount++}destructor(){document.body.removeChild(this.displayElement)}}class V{process(t,e,s=null){return null==t.getAttribute(e)?s:t.getAttribute(e)}}class F{process(t){return t.getBoundingClientRect()}}class Y{constructor(){this.three=null,this.t=0,this.c=0,this.d=0,this.v=0,this.dV=0,this.sDB=!1,this.bS=0,this.cF=1,this.wS=0,this.hnwS=0,this.psW=0,this.psH=0,this.cL={x:0,y:0},this.scsW=1,this.scsH=1,this.sD="vertical",this.sM="smooth"}}class X{constructor(){this.eventsByKey=new Map,this.events=new Array}on(t,e){var s;0==this.eventsByKey.has(t)&&this.eventsByKey.set(t,[]),null===(s=this.eventsByKey.get(t))||void 0===s||s.push(e),this.updateAllEvents()}has(t){return this.eventsByKey.has(t)}emit(t,e){var s;this.eventsByKey.has(t)&&(null===(s=this.eventsByKey.get(t))||void 0===s||s.forEach((t=>{t(e)})))}off(t,e){let s=this.eventsByKey.get(t);null!=s&&this.eventsByKey.set(t,s.filter((t=>t!==e))),this.updateAllEvents()}all(t){this.events.forEach((e=>{e(t)}))}updateAllEvents(){Array.from(this.eventsByKey.values()).forEach((t=>{t.forEach((t=>{this.events.push(t)}))}))}}class N{process(t,e=document.body){let s;try{s=e.getBoundingClientRect()}catch(t){s=document.body.getBoundingClientRect()}let i=function(t){let{top:e,left:s,width:i,height:r}=t.getBoundingClientRect(),o=function(t){return window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)}))}(t);if(6==o.length){var n=o;let t=n[0]*n[3]-n[1]*n[2];return{width:i/n[0]==0?1:n[0],height:r/n[3]==0?1:n[3],left:(s*n[3]-e*n[2]+n[2]*n[5]-n[4]*n[3])/t,top:(-s*n[1]+e*n[0]+n[4]*n[1]-n[0]*n[5])/t}}return{top:e,left:s,width:i,height:r}}(t);return{top:i.top-s.top,left:i.left-s.left}}}function $(){return"ontouchstart"in window||navigator.maxTouchPoints>0}class K{get scrollDirection(){return this.data.sD}set scrollDirection(t){this.data.sD=t,this.sEn.scrollDirection=t,this.sEnSmooth.scrollDirection=t,this.sEnDefault.scrollDirection=t,this.sEnDisable.scrollDirection=t,"horizontal"==t?(document.documentElement.classList.add("-horizontal"),document.documentElement.classList.remove("-vertical")):(document.documentElement.classList.add("-vertical"),document.documentElement.classList.remove("-horizontal")),this.rebuild(),this.initObjects(),this.modules.forEach((t=>{t.onChangeScrollDirection()}))}get speedAccelerate(){return this.settings.speedAccelerate}set speedAccelerate(t){this.settings.speedAccelerate=.1+.4*t}get speed(){return this.settings.speed}set speed(t){this.settings.speed=t}get scrollPosition(){return this.data.c}set scrollPosition(t){this.data.c=t,this.data.t=t,window.scrollTo(0,this.data.c);for(let t=0;t<this.modules.length;t++)this.modules[t].onScroll(this.data)}set scrollContainer(t){let e=null!=this.data.sC;e&&(this.data.sC.removeEventListener("scroll",this.onScrollBind),this.data.sC.removeEventListener("resize",this.onResizeBind)),this.sEn.scrollContainer=t,this.sEnSmooth.scrollContainer=t,this.sEnDefault.scrollContainer=t,this.sEnDisable.scrollContainer=t,this.data.sC=t,e&&(this.data.sC.addEventListener("scroll",this.onScrollBind),this.data.sC.addEventListener("resize",this.onResizeBind)),this.rebuild(),this.initObjects()}set scrollMobileMode(t){this.mMode=t,this.updateModeParams()}set scrollDesktopMode(t){this.dMode=t,this.updateModeParams()}updateModeParams(){switch(this.window.innerWidth<1024||$()?this.scrollMode=this.mMode:this.scrollMode=this.dMode,this.scrollMode){case"disable":this.data.sM="disable",this.sEn=this.sEnDisable,this.onChangeScrollParams(),document.documentElement.style.overflow="hidden";break;case"default":this.data.sM="default",this.sEn=this.sEnDefault,this.onChangeScrollParams(),document.documentElement.style.overflow="auto";break;default:this.data.sM="smooth",this.sEn=this.sEnSmooth,this.onChangeScrollParams(),document.documentElement.style.overflow="auto"}}constructor(){this.modules=new Array,this.modulesUI=new Array,this.events=new X,this.loop=new k,this.wW=0,this.wH=0,this._virtualCursor=new g,this._lerp=new u,this._attribute=new V,this._boundingClientRect=new F,this._position=new N,this._defaultSettings=new i,this.objects=new Map,this.connectQueue=new Array,this.globalId=1,this._parser=new r,this.isStarted=!1,this.fps=0,this.scrollMode="smooth",this.mMode="default",this.dMode="smooth",this.eventMap={scroll:"scroll",progress:"progress_",lerp:"lerp",inview:"inview_",cursor:"cursor","lazy-loaded":"all-image-loaded",update:"update",start:"start","mousemove-pixel":"mousemove_pixel_","mousemove-start":"mousemove_start_","mousemove-end":"mousemove_end_"},this.root=document.body,this.window=window,this.settings=new U,this.data=new Y,this.sEnSmooth=new H(document,this.settings,this.data),this.sEnDefault=new T(document,this.settings,this.data),this.sEnDisable=new O(document,this.settings,this.data),this.sEnSmooth.onScrollStop=this.onScrollStop.bind(this),this.sEnDefault.onScrollStop=this.onScrollStop.bind(this),this.sEnDisable.onScrollStop=this.onScrollStop.bind(this),this.sEnSmooth.onChangeDirection=this.onChangeDirection.bind(this),this.sEnDefault.onChangeDirection=this.onChangeDirection.bind(this),this.sEnDisable.onChangeDirection=this.onChangeDirection.bind(this),this.sEnSmooth.onScrollStart=this.onScrollStart.bind(this),this.sEnDefault.onScrollStart=this.onScrollStart.bind(this),this.sEnDisable.onScrollStart=this.onScrollStart.bind(this),this.sEn=this.sEnSmooth,this.scrollContainer=window,this.data.sC=this.window,this.data.sD="vertical",document.documentElement.classList.add("-vertical"),this.onWheelBind=this.onWheelEvent.bind(this),this.onScrollBind=this.onScrollEvent.bind(this),this.onResizeBind=this.onResize.bind(this),this.onMouseMoveBind=this.onMouseMoveEvent.bind(this),new ResizeObserver((()=>{Array.from(this.objects.values()).forEach((t=>{this.setupObject(t.el,t)})),this.onResize()})).observe(document.documentElement),this.loop.setOnFrame((()=>{this.onUpdateEvent()})),this.rebuild(),this.on("lazy-loaded",(()=>{this.rebuild()})),document.addEventListener("visibilitychange",(()=>{document.hidden?this.loop.stop():this.loop.start(this.fps)}))}static getInstance(){return K.i||(K.i=new K),K.i}reuse(t){return this.modules.find((e=>e instanceof t))}use(t,e=null){const s=new t({data:this.data,lerp:this._lerp,attribute:this._attribute,boundingClientRect:this._boundingClientRect,position:this._position,virtualCursor:this._virtualCursor,events:this.events,loop:this.loop,defaultSettings:this._defaultSettings,parser:this._parser},e);1==s.type&&this.modules.push(s),2==s.type&&this.modulesUI.push(s)}start(t){this.fps=t,this.data.sC.addEventListener("scroll",this.onScrollBind),this.data.sC.addEventListener("resize",this.onResizeBind),this.root.addEventListener("wheel",this.onWheelBind,{passive:!1}),this.root.addEventListener("mousemove",this.onMouseMoveBind),this.loop.start(t),document.documentElement.classList.add("-string");for(let t=0;t<this.modules.length;t++)this.modules[t].onStart();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onStart();this.initObjects(),this.initMutationObserver(),this.isStarted=!0,this.events.emit("start",null)}onChangeScrollParams(){for(let t=0;t<this.modules.length;t++)this.modules[t].onChangeScrollParams();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onChangeScrollParams()}initObjects(){document.querySelectorAll("[string]").forEach((t=>{this.addObject(t)})),document.querySelectorAll("[string-copy-from]").forEach((t=>{let e=this._attribute.process(t,"string-copy-from");if(null!=e&&this.objects.has(e)){let s=this.objects.get(e);null!=s&&s.connects.push(t)}})),this.modules.forEach((t=>{t.onResize(),t.onScroll(this.data),t.onUpdate(this.data)}))}destroy(){this.window.removeEventListener("scroll",this.onScrollBind),this.root.removeEventListener("wheel",this.onScrollBind),this.window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.loop.stop(),this.modules.forEach((t=>{t.destructor()})),this.modulesUI.forEach((t=>{t.destructor()})),this.modules=new Array,this.modulesUI=new Array,this.events=new X}on(t,e,s=""){const i=this.eventMap[t]+s;"start"===t&&this.isStarted&&e(),this.events.on(i,e)}off(t,e,s=""){const i=this.eventMap[t]+s;this.events.off(i,e)}setupSettings(t){null!=t["string-offset-top"]&&(this._defaultSettings.stringOffsetStart=t["string-offset-top"]),null!=t["string-offset-bottom"]&&(this._defaultSettings.stringOffsetEnd=t["string-offset-bottom"]),null!=t["string-offset-left"]&&(this._defaultSettings.stringOffsetStart=t["string-offset-left"]),null!=t["string-offset-right"]&&(this._defaultSettings.stringOffsetEnd=t["string-offset-right"]),null!=t["string-inview-top"]&&(this._defaultSettings.stringInviewTop=t["string-inview-top"]),null!=t["string-inview-left"]&&(this._defaultSettings.stringInviewTop=t["string-inview-left"]),null!=t["string-inview-bottom"]&&(this._defaultSettings.stringInviewBottom=t["string-inview-bottom"]),null!=t["string-inview-right"]&&(this._defaultSettings.stringInviewBottom=t["string-inview-right"]),null!=t["string-enter-el"]&&(this._defaultSettings.stringEnterEl=t["string-enter-el"]),null!=t["string-enter-vp"]&&(this._defaultSettings.stringEnterVp=t["string-enter-vp"]),null!=t["string-exit-el"]&&(this._defaultSettings.stringExitEl=t["string-exit-el"]),null!=t["string-exit-vp"]&&(this._defaultSettings.stringExitVp=t["string-exit-vp"]),null!=t["string-key"]&&(this._defaultSettings.stringKey=t["string-key"]),null!=t["string-strength"]&&(this._defaultSettings.stringStrength=t["string-strength"]),null!=t["string-radius"]&&(this._defaultSettings.stringRadius=t["string-radius"]),null!=t["string-lerp"]&&(this._defaultSettings.stringLerp=t["string-lerp"]),null!=t["string-parallax-bias"]&&(this._defaultSettings.stringParallaxBias=t["string-parallax-bias"]),null!=t["string-parallax"]&&(this._defaultSettings.stringParallax=t["string-parallax"])}setupObject(t,e){var s,i,r,o,n,l,a,h,c,d,p,u;const g=this.getAllAttributes(t);null!=(null==e?void 0:e.getProperty("observer-progress"))&&(null==e||e.getProperty("observer-progress").disconnect()),null!=(null==e?void 0:e.getProperty("observer-inview"))&&(null==e||e.getProperty("observer-inview").disconnect()),e.id=null!==(s=g["string-id"])&&void 0!==s?s:`string-${this.globalId}`,e.keys=(null!==(i=g.string)&&void 0!==i?i:"").split("|"),e.key=null!==(r=g["string-key"])&&void 0!==r?r:this._defaultSettings.stringKey,t.setAttribute("string-id",e.id);let m=this._boundingClientRect.process(t),y=m.width/this.data.scsW,v=m.height/this.data.scsH;e.setProperty("active",!0),e.setProperty("offset-start",this._parser.parseSingle(null!==(n=null!==(o=g["string-offset-top"])&&void 0!==o?o:g["string-offset-left"])&&void 0!==n?n:this._defaultSettings.stringOffsetStart,t,this.data.wS,16)),e.setProperty("offset-end",this._parser.parseSingle(null!==(a=null!==(l=g["string-offset-bottom"])&&void 0!==l?l:g["string-offset-right"])&&void 0!==a?a:this._defaultSettings.stringOffsetEnd,t,this.data.wS,16)),e.setProperty("inview-top",-1*this._parser.parseSingle(null!==(c=null!==(h=g["string-inview-top"])&&void 0!==h?h:g["string-inview-left"])&&void 0!==c?c:this._defaultSettings.stringInviewTop,t,"vertical"==this.data.sD?v:y,16)),e.setProperty("inview-bottom",-1*this._parser.parseSingle(null!==(u=null!==(p=null!==(d=g["string-inview"])&&void 0!==d?d:g["string-inview-bottom"])&&void 0!==p?p:g["string-inview-right"])&&void 0!==u?u:this._defaultSettings.stringInviewBottom,t,"vertical"==this.data.sD?v:y,16));let b="vertical"==this.data.sD?this._position.process(t,this.data.sC).top/this.data.scsH:this._position.process(t,this.data.sC).left/this.data.scsW;e.setProperty("start",b),e.setProperty("end",b+("vertical"==this.data.sD?v:y)),e.setProperty("size","vertical"==this.data.sD?v:y),e.setProperty("repeat",void 0!==g["string-repeat"]),e.setProperty("self-disable",void 0!==g["string-self-disable"]),e.setProperty("abs",void 0!==g["string-abs"]),e.setProperty("half-width",y/2),e.setProperty("half-height",v/2);let f=this.connectQueue.filter((t=>t.id==e.id));this.connectQueue=this.connectQueue.filter((t=>t.id!=e.id)),f.forEach((t=>e.connects.push(t.element))),this.modules.forEach((s=>{s.tryConnect(e)&&(s.initObject(this.globalId,e,t,g),s.connect(e))}));let S=e.getProperty("offset-bottom"),P=e.getProperty("offset-bottom"),E={root:null,rootMargin:`${S+.3*this.data.wS}px 0px ${P+.3*this.data.wS}px 0px`,threshold:.001},w={root:null,rootMargin:`${S+e.getProperty("inview-top")}px 0px ${P+e.getProperty("inview-bottom")}px 0px`,threshold:.001},x=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?e.getProperty("active")||(this.events.emit(`activate_object_${e.id}`,!0),e.enter()):e.getProperty("active")&&(this.events.emit(`activate_object_${e.id}`,!1),e.leave())}))}),E),M=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?(this.events.emit(`inview_${e.id}`,!0),e.show()):(this.events.emit(`inview_${e.id}`,!1),e.hide())}))}),w);x.observe(t),M.observe(t),e.setProperty("observer-progress",x),e.setProperty("observer-inview",M)}getAllAttributes(t){let e={};return Array.from(t.attributes).forEach((t=>{e[t.name]=t.value})),e}addObject(t){let e;e=null==this._attribute.process(t,"string-inited")?new m(t):this.objects.has(this._attribute.process(t,"string-id"))?this.objects.get(this._attribute.process(t,"string-id")):new m(t),t.setAttribute("string-inited",""),this.setupObject(t,e),this.objects.set(e.id,e),this.globalId++}removeObject(t){let e=this.objects.get(t);null!=(null==e?void 0:e.getProperty("observer-progress"))&&(null==e||e.getProperty("observer-progress").disconnect()),null!=(null==e?void 0:e.getProperty("observer-inview"))&&(null==e||e.getProperty("observer-inview").disconnect()),this.objects.delete(t),null==e||e.el.removeAttribute("string-inited"),null==e||e.leave(),e=void 0}onMouseMoveEvent(t){this._virtualCursor.onMouseMove(t);for(let e=0;e<this.modules.length;e++)this.modules[e].onMouseMove(t);for(let e=0;e<this.modulesUI.length;e++)this.modulesUI[e].onMouseMove(t)}onWheelEvent(t){this.sEn.onWheel(t);for(let e=0;e<this.modules.length;e++)this.modules[e].onWheel(t);for(let e=0;e<this.modulesUI.length;e++)this.modulesUI[e].onWheel(t)}onScrollStart(){for(let t=0;t<this.modules.length;t++)this.modules[t].onScrollStart();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScrollStart()}onScrollStop(){for(let t=0;t<this.modules.length;t++)this.modules[t].onScrollStop();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScrollStop()}onChangeDirection(){for(let t=0;t<this.modules.length;t++)this.modules[t].onChangeDirection();for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onChangeDirection()}onScrollEvent(t){this.sEn.onScroll(t);for(let t=0;t<this.modules.length;t++)this.modules[t].onScroll(this.data);for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onScroll(this.data);this.events.emit("lerp",this.data.v),this.events.emit("scroll",this.data.c)}onUpdateEvent(){this._virtualCursor.onUpdate(),this.sEn.onUpdate();for(let t=0;t<this.modules.length;t++)this.modules[t].onUpdate(this.data);for(let t=0;t<this.modulesUI.length;t++)this.modulesUI[t].onUpdate(this.data);this.events.emit("update",null)}onResize(){let t=0,e=0;try{let s=this.sEn.scrollContainer.getBoundingClientRect();t=s.width,e=s.height}catch(s){t=this.sEn.scrollContainer.innerWidth,e=this.sEn.scrollContainer.innerHeight}"vertical"==this.data.sD?(this.data.bS=this.data.psH-e,this.data.wS=e):(this.data.bS=this.data.psW-t,this.data.wS=t),(this.wW!=t||this.window.innerWidth>1024)&&(this.rebuild(),this.modules.forEach((t=>{t.onResize()})),this.modulesUI.forEach((t=>{t.onResize()}))),this.wW=t,this.wH=e}initMutationObserver(){const t=t=>{if(null!=this._attribute.process(t,"string-fixed"))return;let e=t.getAttribute("string-id"),s=this._attribute.process(t,"string-copy-from");null!=s&&(this.connectQueue=this.connectQueue.filter((t=>t.id!=s))),null!=e&&this.removeObject(e)},e=t=>{if(null!=this._attribute.process(t,"string-fixed"))return;this.addObject(t);let e=this._attribute.process(t,"string-copy-from");if(null!=e)if(this.objects.has(e)){let s=this.objects.get(e);null!=s&&s.connects.push(t)}else this.connectQueue.push({id:e,element:t})};new MutationObserver((s=>{s.forEach((s=>{"childList"===s.type&&(s.removedNodes.length>0&&s.removedNodes.forEach((e=>{if(e.nodeType===Node.ELEMENT_NODE){const s=e;s.hasAttribute("string")&&t(s),s.querySelectorAll("[string]").forEach((e=>{t(e)}))}})),s.addedNodes.length>0&&s.addedNodes.forEach((t=>{if(t.nodeType===Node.ELEMENT_NODE){const s=t;s.hasAttribute("string")&&!s.hasAttribute("string-inited")&&e(s),s.querySelectorAll("[string]:not([string-inited])").forEach((t=>{e(t)}))}})),(s.addedNodes.length>0||s.removedNodes.length>0)&&this.modules.forEach((t=>{t.onRebuild()})))}))})).observe(document.body,{attributes:!1,childList:!0,subtree:!0})}rebuild(){try{let e=(t=this.data.sC,window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)})));this.data.scsW=e[0],this.data.scsH=e[3]}catch(t){this.data.scsW=1,this.data.scsH=1}var t;try{let t=this.data.sC.getBoundingClientRect();this.wW=t.width/this.data.scsW,this.wH=t.height/this.data.scsH}catch(t){this.wW=this.data.sC.innerWidth,this.wH=this.data.sC.innerHeight}this.wW<1024||$()?this.scrollMode=this.mMode:this.scrollMode=this.dMode;let e=document.body,s=document.documentElement;this.data.psW=this.data.sC.scrollWidth,this.data.psH=this.data.sC.scrollHeight,null==this.data.psW&&(this.data.psW=Math.max(e.scrollWidth,e.offsetWidth,s.clientWidth,s.scrollWidth,s.offsetWidth)),null==this.data.psH&&(this.data.psH=Math.max(e.scrollHeight,e.offsetHeight,s.clientHeight,s.scrollHeight,s.offsetHeight)),"vertical"==this.data.sD?(this.data.bS=this.data.psH-this.wH,this.data.wS=this.wH):(this.data.bS=this.data.psW-this.wW,this.data.wS=this.wW),this.data.hnwS=-.5*this.data.wS,this.updateModeParams()}}return s})()));
2
2
  //# sourceMappingURL=index.js.map