@fiddle-digital/string-tune 0.0.44 → 0.0.46

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:()=>Y,StringGlide:()=>x,StringLazy:()=>i,StringLerp:()=>M,StringLerpTracker:()=>k,StringLoading:()=>n,StringMagnetic:()=>l,StringParallax:()=>C,StringPositionTracker:()=>X,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(){}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)}})),this.overCount>0&&(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.cursorContent.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.cursorContent.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 S{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 y{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 S(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new y(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 x 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)),document.documentElement.style.setProperty("--glide",this.data.dV.toString()),this.previousLerp=this.data.v,this.onUpdateEvent()}}class M extends e{constructor(t){super(t),this.oldLerp=0,this._type=2}onScrollStop(){document.documentElement.style.setProperty("--lerp","0")}onScroll(t){document.documentElement.style.setProperty("--lerp",this.data.v.toString()),this.oldLerp=t.v}}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 _="-scroll-forward",A="-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.previousCurrent=0}updateScrollDirection(t){if(this.isBottomScrollDirection===t)return;this.isBottomScrollDirection=t,this.data.sDB=t,this.onChangeDirection();const s=t;document.documentElement.classList.toggle(_,s),document.documentElement.classList.toggle(A,!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(){if(0!=this.data.d){if(this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,this.data.c=this.data.t,this.onCalcUpdate(),void this.stopScroll();let t=this.data.d*this.settings.speedAccelerate;this.data.t=Math.min(Math.max(0,this.data.t+t),this.data.bS),this.data.d-=t,this.data.v=(this.data.t-this.data.c)*this.settings.speed;const s=Math.abs(this.data.v);this.data.c+=this.data.v,this.updateScrollDirection(this.data.v>0),s<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.onCalcUpdate(),console.log(document.documentElement.scrollTop))}}onWheel(t){t.preventDefault();let s=t.deltaY;if(0===s)return;0===this.data.d&&this.onScrollStart();let e=Math.sign(s);0===this.data.t&&e<0||this.data.t===this.data.bS&&e>0||(this.data.d+=s)}onScroll(t){var s,e;this.isProg?t.preventDefault():(this.isScrollbarManipulation=!0,this.data.d=1,this.data.t=null!==(e=null===(s=this.scrollContainer)||void 0===s?void 0:s.scrollTop)&&void 0!==e?e:document.documentElement.scrollTop)}}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.onFrameCallback(),this.requestAnimationId=requestAnimationFrame((()=>this.animate()))}:()=>{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 Y 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 k 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 X 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 j{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 j,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((()=>{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()}))}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,S,y,E,w,x,M,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 _=this.getAllAttributes(t);let A=this._boundingClientRect.process(t),O=A.width/this.data.scsW,I=A.height/this.data.scsH,H=null!==(o=_["string-enter-el"])&&void 0!==o?o:this.defaultSettings.stringEnterEl,U=null!==(r=_["string-enter-vp"])&&void 0!==r?r:this.defaultSettings.stringEnterVp,W=null!==(a=_["string-exit-el"])&&void 0!==a?a:this.defaultSettings.stringExitEl,Y=null!==(l=_["string-exit-vp"])&&void 0!==l?l:this.defaultSettings.stringExitVp;s.inviewTop=-1*this._parser.parseSingle(null!==(d=null!==(h=_["string-inview-top"])&&void 0!==h?h:_["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=_["string-inview"])&&void 0!==c?c:_["string-inview-bottom"])&&void 0!==u?u:_["string-inview-right"])&&void 0!==p?p:this.defaultSettings.stringInviewBottom,t,"vertical"==this.data.sD?I:O,16),s.selfDisable=void 0!==_["string-self-disable"],s.abs=void 0!==_["string-abs"],s.cursorTargetDisabled=void 0!==_["string-cursor-target-disable"],s.cursorTargetStyleDisabled=void 0!==_["string-cursor-target-style-disable"];let k=_["string-cursor-class"];k&&(s.cursorTargetClass=k),s.id=null!==(m=_["string-id"])&&void 0!==m?m:`string-${this.globalId}`,s.key=null!==(g=_["string-key"])&&void 0!==g?g:this.defaultSettings.stringKey,s.keys=(null!==(v=_.string)&&void 0!==v?v:"").split("|"),s.strength=null!==(b=_["string-strength"])&&void 0!==b?b:this.defaultSettings.stringStrength,s.radius=null!==(f=_["string-radius"])&&void 0!==f?f:this.defaultSettings.stringRadius,s.lerp=null!==(S=_["string-lerp"])&&void 0!==S?S:this.defaultSettings.stringLerp,s.weight=parseFloat(null!==(y=_["string-weight"])&&void 0!==y?y:"0.0"),s.glide=parseFloat(null!==(E=_["string-glide"])&&void 0!==E?E:"1");let X=parseFloat(null!==(w=_["string-parallax-bias"])&&void 0!==w?w:this.defaultSettings.stringParallaxBias);s.parallaxPositionStart=.5*X-.5,s.parallaxPositionEnd=.5+.5*(1-X),s.alignment=null!==(x=_["string-alignment"])&&void 0!==x?x:"center",t.setAttribute("string-id",s.id),s.size="vertical"==this.data.sD?I:O,s.oStart=this._parser.parseSingle(null!==(C=null!==(M=_["string-offset-top"])&&void 0!==M?M:_["string-offset-left"])&&void 0!==C?C:this.defaultSettings.stringOffsetStart,t,this.data.wS,16),s.oEnd=this._parser.parseSingle(null!==(L=null!==(P=_["string-offset-bottom"])&&void 0!==P?P:_["string-offset-right"])&&void 0!==L?L:this.defaultSettings.stringOffsetEnd,t,this.data.wS,16);let j=s.oStart,B=s.oEnd,z=(null!==(D=_.string)&&void 0!==D?D:"").split("|");s.factor=0,z.includes("parallax")&&(j=B=s.oStart=s.oEnd=0,s.factor=parseFloat(null!==(T=_["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!==_["string-repeat"],s.sElPos=H,s.sScrPos=U,s.eElPos=W,s.eScrPos=Y,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:`${j+.3*this.data.wS}px 0px ${B+.3*this.data.wS}px 0px`,threshold:.001},$={root:null,rootMargin:`${j+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,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:()=>Y,StringGlide:()=>M,StringLazy:()=>i,StringLerp:()=>x,StringLerpTracker:()=>j,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.cursorContent.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.cursorContent.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)),document.documentElement.style.setProperty("--glide",this.data.dV.toString()),this.previousLerp=this.data.v,this.onUpdateEvent()}}class x extends e{constructor(t){super(t),this.oldLerp=0,this._type=2}onScrollStop(){document.documentElement.style.setProperty("--lerp","0")}onScroll(t){document.documentElement.style.setProperty("--lerp",this.data.v.toString()),this.oldLerp=t.v}}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 _="-scroll-forward",A="-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.previousCurrent=0}updateScrollDirection(t){if(this.isBottomScrollDirection===t)return;this.isBottomScrollDirection=t,this.data.sDB=t,this.onChangeDirection();const s=t;document.documentElement.classList.toggle(_,s),document.documentElement.classList.toggle(A,!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(){if(0!=this.data.d){if(this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,this.data.c=this.data.t,this.onCalcUpdate(),void this.stopScroll();let t=this.data.d*this.settings.speedAccelerate;this.data.t=Math.min(Math.max(0,this.data.t+t),this.data.bS),this.data.d-=t,this.data.v=(this.data.t-this.data.c)*this.settings.speed;const s=Math.abs(this.data.v);this.data.c+=this.data.v,this.updateScrollDirection(this.data.v>0),s<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.onCalcUpdate())}}onWheel(t){t.preventDefault();let s=t.deltaY;if(0===s)return;0===this.data.d&&this.onScrollStart();let e=Math.sign(s);0===this.data.t&&e<0||this.data.t===this.data.bS&&e>0||(this.data.d+=s)}onScroll(t){var s,e;this.isProg?t.preventDefault():(this.isScrollbarManipulation=!0,this.data.d=1,this.data.t=null!==(e=null===(s=this.scrollContainer)||void 0===s?void 0:s.scrollTop)&&void 0!==e?e:document.documentElement.scrollTop)}}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.onFrameCallback(),this.requestAnimationId=requestAnimationFrame((()=>this.animate()))}:()=>{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 Y 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 j 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((()=>{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 _=this.getAllAttributes(t);let A=this._boundingClientRect.process(t),O=A.width/this.data.scsW,I=A.height/this.data.scsH,H=null!==(o=_["string-enter-el"])&&void 0!==o?o:this.defaultSettings.stringEnterEl,U=null!==(r=_["string-enter-vp"])&&void 0!==r?r:this.defaultSettings.stringEnterVp,W=null!==(a=_["string-exit-el"])&&void 0!==a?a:this.defaultSettings.stringExitEl,Y=null!==(l=_["string-exit-vp"])&&void 0!==l?l:this.defaultSettings.stringExitVp;s.inviewTop=-1*this._parser.parseSingle(null!==(d=null!==(h=_["string-inview-top"])&&void 0!==h?h:_["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=_["string-inview"])&&void 0!==c?c:_["string-inview-bottom"])&&void 0!==u?u:_["string-inview-right"])&&void 0!==p?p:this.defaultSettings.stringInviewBottom,t,"vertical"==this.data.sD?I:O,16),s.selfDisable=void 0!==_["string-self-disable"],s.abs=void 0!==_["string-abs"],s.cursorTargetDisabled=void 0!==_["string-cursor-target-disable"],s.cursorTargetStyleDisabled=void 0!==_["string-cursor-target-style-disable"];let j=_["string-cursor-class"];j&&(s.cursorTargetClass=j),s.id=null!==(m=_["string-id"])&&void 0!==m?m:`string-${this.globalId}`,s.key=null!==(g=_["string-key"])&&void 0!==g?g:this.defaultSettings.stringKey,s.keys=(null!==(v=_.string)&&void 0!==v?v:"").split("|"),s.strength=null!==(b=_["string-strength"])&&void 0!==b?b:this.defaultSettings.stringStrength,s.radius=null!==(f=_["string-radius"])&&void 0!==f?f:this.defaultSettings.stringRadius,s.lerp=null!==(y=_["string-lerp"])&&void 0!==y?y:this.defaultSettings.stringLerp,s.weight=parseFloat(null!==(S=_["string-weight"])&&void 0!==S?S:"0.0"),s.glide=parseFloat(null!==(E=_["string-glide"])&&void 0!==E?E:"1");let k=parseFloat(null!==(w=_["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=_["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=_["string-offset-top"])&&void 0!==x?x:_["string-offset-left"])&&void 0!==C?C:this.defaultSettings.stringOffsetStart,t,this.data.wS,16),s.oEnd=this._parser.parseSingle(null!==(L=null!==(P=_["string-offset-bottom"])&&void 0!==P?P:_["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=_.string)&&void 0!==D?D:"").split("|");s.factor=0,z.includes("parallax")&&(X=B=s.oStart=s.oEnd=0,s.factor=parseFloat(null!==(T=_["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!==_["string-repeat"],s.sElPos=H,s.sScrPos=U,s.eElPos=W,s.eScrPos=Y,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})()));
2
2
  //# sourceMappingURL=index.js.map