@fiddle-digital/string-tune 0.0.40 → 0.0.42

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.
@@ -1,11 +1,8 @@
1
1
  export declare class StringTypeSettings {
2
2
  private sC;
3
3
  private sA;
4
- private mL;
5
4
  get speed(): number;
6
5
  get speedAccelerate(): number;
7
6
  set speedAccelerate(speed: number);
8
7
  set speed(speed: number);
9
- get mouseLerp(): number;
10
- set mouseLerp(mouseLerp: number);
11
8
  }
package/dist/index.d.ts CHANGED
@@ -53,8 +53,6 @@ declare class StringTune {
53
53
  set speedAccelerate(speed: number);
54
54
  get speed(): number;
55
55
  set speed(speed: number);
56
- get mouseLerp(): number;
57
- set mouseLerp(mouseLerp: number);
58
56
  get scrollPosition(): number;
59
57
  set scrollPosition(scrollPosition: number);
60
58
  set scrollContainer(container: any);
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:()=>E,StringCursor:()=>r,StringDelayLerpTracker:()=>W,StringFPSTracker:()=>Y,StringGlide:()=>w,StringLazy:()=>i,StringLerp:()=>x,StringLerpTracker:()=>j,StringLoading:()=>o,StringMagnetic:()=>a,StringParallax:()=>M,StringPositionTracker:()=>U,StringProgress:()=>C,StringResponsive:()=>b,StringScrollbar:()=>y,StringSplit:()=>I,StringTune:()=>q,StringVideoAutoplay:()=>n,default:()=>q});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 this.attribute.process(t.el,"string","").split("|").includes(this.htmlKey)}connect(t){t.connect(this),this.onConnect(t)}addObject(t,s){this.objectsMap.set(t,s),this.objects=Array.from(this.objectsMap).map((([t,s])=>s))}removeObject(t){this.objectsMap.delete(t),this.objects=Array.from(this.objectsMap).map((([t,s])=>s))}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 o=new XMLHttpRequest;o.open("GET",s,!0),o.responseType="arraybuffer",o.onload=()=>{if(206===o.status||200===o.status){const s=o.response,n=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(n)}else i(new Error("Failed to load image"))},o.onerror=()=>{i(new Error("Network error"))},o.setRequestHeader("Range","bytes=0-"),o.send()}))}}class o 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 n 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","")}))}}class r extends e{constructor(t,s=null){super(t,s),this.oldX=0,this.oldY=0,this.enterObjectsMap=new Map,this.enterObjects=new Array,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=this.settings["string-lerp-cursor"]/2)}initObject(t,s){t.lerp=this.attribute.process(s,"string-lerp",.2),null!=this.settings&&null!=this.settings["string-lerp-target"]&&(t.lerp=this.attribute.process(s,"string-lerp",this.settings["string-lerp-target"])/2)}onUpdate(t){if(this.virtualCursor.smoothX!=this.oldX||this.virtualCursor.smoothY!=this.oldY){let t={lerpX:this.virtualCursor.lerpX,lerpY:this.virtualCursor.lerpY,x:this.virtualCursor.smoothX,y:this.virtualCursor.smoothY};this.events.emit("cursor",t),this.cursor.style.setProperty("--x",this.virtualCursor.smoothX),this.cursor.style.setProperty("--y",this.virtualCursor.smoothY),this.oldX=this.virtualCursor.smoothX,this.oldY=this.virtualCursor.smoothY}this.cursor.style.setProperty("--x-lerp",this.virtualCursor.lerpX.toFixed(2)),this.cursor.style.setProperty("--y-lerp",this.virtualCursor.lerpY.toFixed(2)),this.objects.forEach((t=>{if(t.isMouseOver){let s=t.el.getBoundingClientRect();const e=this.virtualCursor.x-s.left,i=this.virtualCursor.y-s.top;if(Math.sqrt(Math.pow(t.mousePixelFloatX-e,2)+Math.pow(t.mousePixelFloatY-i,2))>.25){0==t.isMouseMove&&(t.isMouseMove=!0,t.mousePixelFloatX=e,t.mousePixelFloatY=i,this.events.emit(`mousemove_start_${t.id}`,null));let o=this.lerp.process(t.mousePixelFloatX,e,t.lerp),n=this.lerp.process(t.mousePixelFloatY,i,t.lerp);t.mousePixelFloatX=t.mousePixelFloatX+o,t.mousePixelFloatY=t.mousePixelFloatY+n;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),t.mouseX<1&&t.mouseY<1&&(t.mouseX=0,t.mouseY=0,t.mousePixelFloatX=0,t.mousePixelFloatY=0),this.setMouseCoordinates(t,t.mouseX,t.mouseY)}}))}onConnect(t){let s=t.el,e=()=>{s.addEventListener("mousemove",i),s.addEventListener("mouseleave",o),t.isMouseOver=!0,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&(this.cursor.classList.add(t.cursorTargetClass),this.cursorContent.classList.add(t.cursorTargetClass)),this.cursor.classList.add("-showing"),this.cursorContent.classList.add("-showing"),setTimeout((()=>{this.cursor.classList.remove("-showing"),this.cursorContent.classList.remove("-showing"),this.cursor.classList.add("-show"),this.cursorContent.classList.add("-show")}),1200)},i=t=>{},o=()=>{s.removeEventListener("mousemove",i),s.removeEventListener("mouseleave",o),t.isMouseOver=!1,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&(this.cursor.classList.remove(t.cursorTargetClass),this.cursorContent.classList.remove(t.cursorTargetClass)),this.cursorContent.classList.remove("-showing"),this.cursor.classList.remove("-showing"),this.cursorContent.classList.remove("-show"),this.cursor.classList.remove("-show")};t.onEnter=()=>{s.addEventListener("mouseenter",e)},t.onLeave=()=>{s.removeEventListener("mouseenter",e),s.removeEventListener("mousemove",i),s.removeEventListener("mouseleave",o)}}setMouseCoordinates(t,s,e){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 a 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,o=e.top+s.halfHeight,n=t.clientX-i,r=t.clientY-o,a=Math.sqrt(n**2+r**2);a<s.radius?(s.magneticTargetX=n*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 l{process(t,s,e){const i=s-t;return Math.abs(i)<.01?i:i*e}}class h{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 l,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.abs(this._lerpX)<.1?this._x=this.targetX:this._x=this._x+this._lerpX,Math.abs(this._lerpY)<.1?this._y=this.targetY:this._y=this._y+this._lerpY}}const c="top",d="bottom",u="left",p="right";class m{constructor(t){this.id="",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.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===u&&this.sScrPos===u?this.startPos=this.start-this.oEnd:this.sElPos===c&&this.sScrPos===d||this.sElPos===u&&this.sScrPos===p?this.startPos=this.start-t-this.oEnd:this.sElPos===d&&this.sScrPos===c||this.sElPos===p&&this.sScrPos===u?this.startPos=this.start+this.size-this.oEnd:(this.sElPos===d&&this.sScrPos===d||this.sElPos===p&&this.sScrPos===p)&&(this.startPos=this.start-t-this.oEnd+this.size),this.eElPos===c&&this.eScrPos===c||this.eElPos===u&&this.eScrPos===u?this.endPos=this.start+this.oStart:this.eElPos===c&&this.eScrPos===d||this.eElPos===u&&this.eScrPos===p?this.endPos=this.start-t+this.oStart:this.eElPos===d&&this.eScrPos===c||this.eElPos===p&&this.eScrPos===u?this.endPos=this.start+this.size+this.oStart:(this.eElPos===d&&this.eScrPos===d||this.eElPos===p&&this.eScrPos===p)&&(this.endPos=this.start-t+this.size+this.oStart),this.differencePos=this.endPos-this.startPos}}var g;!function(t){t[t.Mobile=0]="Mobile",t[t.Tablet=1]="Tablet",t[t.Laptop=2]="Laptop",t[t.Desktop=3]="Desktop"}(g||(g={}));class v{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 b extends e{constructor(t,s){super(t,s),this.queries={[g.Mobile]:new v({max:359}),[g.Tablet]:new v({min:360,max:1079}),[g.Laptop]:new v({min:1080,max:1365}),[g.Desktop]:new v({min:1366})},this.matchMedias={[g.Mobile]:window.matchMedia(this.queries[g.Mobile].mediaQuery),[g.Tablet]:window.matchMedia(this.queries[g.Tablet].mediaQuery),[g.Laptop]:window.matchMedia(this.queries[g.Laptop].mediaQuery),[g.Desktop]:window.matchMedia(this.queries[g.Desktop].mediaQuery)},this._type=2}onConnect(){}onStart(){var t,s,e,i;if(null!=this.settings&&null!=this.settings.settings){let o=this.settings.settings;o.mobile?(this.queries[g.Mobile].enable=!0,this.queries[g.Mobile].setRange(null==o.mobile.min?null:o.mobile.min,null!==(t=o.mobile.max)&&void 0!==t?t:null),this.matchMedias[g.Mobile]=window.matchMedia(this.queries[g.Mobile].mediaQuery)):this.queries[g.Mobile].enable=!1,o.tablet?(this.queries[g.Tablet].enable=!0,this.queries[g.Tablet].setRange(null==o.mobile.min?null:o.mobile.min,null!==(s=o.mobile.max)&&void 0!==s?s:null),this.matchMedias[g.Tablet]=window.matchMedia(this.queries[g.Mobile].mediaQuery)):this.queries[g.Tablet].enable=!1,o.laptop?(this.queries[g.Laptop].enable=!0,this.queries[g.Laptop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(e=o.mobile.max)&&void 0!==e?e:null),this.matchMedias[g.Laptop]=window.matchMedia(this.queries[g.Mobile].mediaQuery)):this.queries[g.Laptop].enable=!1,o.desktop?(this.queries[g.Desktop].enable=!0,this.queries[g.Desktop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(i=o.mobile.max)&&void 0!==i?i:null),this.matchMedias[g.Desktop]=window.matchMedia(this.queries[g.Mobile].mediaQuery)):this.queries[g.Desktop].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){const t=this.matchMedias[g.Mobile].matches&&this.queries[g.Mobile].enable,s=this.matchMedias[g.Tablet].matches&&this.queries[g.Tablet].enable,e=this.matchMedias[g.Laptop].matches&&this.queries[g.Laptop].enable,i=this.matchMedias[g.Desktop].matches&&this.queries[g.Desktop].enable;document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach((o=>{let n=!1;o.hasAttribute("string-mobile")&&t&&(n=!0),o.hasAttribute("string-tablet")&&s&&(n=!0),o.hasAttribute("string-laptop")&&e&&(n=!0),o.hasAttribute("string-desktop")&&i&&(n=!0),o.style.display=n?null:"none"}))}}class f{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 y 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 f(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 E 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 w 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 M 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 C 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 P{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 L extends P{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 _ extends P{constructor(t,s,e){super(t,s,e),this.name="disable"}onUpdate(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}}const D="-scroll-forward",T="-scroll-back";class O extends P{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(D,s),document.documentElement.classList.toggle(T,!s)}clamp(t,s,e){return Math.min(Math.max(t,s),e)}stopScroll(){this.data.v=0,this.data.d=0,this.data.t=this.data.c,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(T,D)}onUpdate(){if(0!=this.data.d){const{data:t,settings:s}=this;let e=this.data.d*this.settings.speedAccelerate;if(this.data.t=Math.min(Math.max(0,this.data.t+e),this.data.bS),this.data.d-=e,this.data.v=(this.data.t-this.data.c)*this.settings.speed,this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,void(t.c=t.t);const i=Math.abs(t.v);if(0===i)return;t.v>0?(this.data.c=Math.ceil(t.c+t.v),this.updateScrollDirection(!0)):(this.data.c=Math.floor(t.c+t.v),this.updateScrollDirection(!1)),i<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!=this.data.c&&(this.previousCurrent=this.data.c,this.onCalcUpdate()))}}onWheel(t){if(0!=t.deltaY){t.preventDefault(),0==this.data.d&&this.onScrollStart();let s=t.deltaY;0==this.data.t&&(this.data.d+=Math.max(0,t.deltaY)),this.data.t==this.data.bS&&(this.data.d+=Math.min(0,t.deltaY)),this.data.d+=s}}onScroll(t){var s,e;this.isProg||(this.isScrollbarManipulation=!0,this.data.t=null!==(e=null===(s=this.scrollContainer)||void 0===s?void 0:s.scrollTop)&&void 0!==e?e:document.documentElement.scrollTop)}}class A{constructor(){this.sC=.1,this.sA=.25,this.mL=1}get speed(){return this.sC}get speedAccelerate(){return this.sA}set speedAccelerate(t){this.sA=t}set speed(t){this.sC=t}get mouseLerp(){return this.mL}set mouseLerp(t){this.mL=t}}class I 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],o=e[4]?e[4].split(","):[];switch(t+i){case"char-line":s.charLine.push(this.parseParam(o));break;case"char-word":s.charWord.push(this.parseParam(o));break;case"word-line":s.wordLine.push(this.parseParam(o));break;case"line":s.line.push(this.parseParam(o));break;case"word":s.word.push(this.parseParam(o));break;case"char":s.char.push(this.parseParam(o))}}})),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"),o=e.split(/\s+/);let n=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 c=[],d=[],u=0;o.forEach(((t,e)=>{l.textContent=t,t.length>0&&(l.textContent+=" ");const i=l.offsetWidth,o={text:t,width:i,chars:new Array};Array.from(t).forEach(((t,s)=>{const e={text:t};o.chars.push(e)})),u+i>s.offsetWidth&&(c.push(d),d=[],u=0,n+=d.length),d.push(o),u+=i})),c.push(d);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<c.length;s++)this.appendVirtualLineToDOM(s,c.length,o.length,i,c[s],t,n,a,m),m+=c[s].length;else for(let s=0;s<c.length;s++)c[s].forEach(((s,e)=>{var l,h;if(s.chars.length>0){const c=document.createElement("span");c.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 o=document.createElement("span");o.classList.add("-s-char"),o.textContent=e.text,this.applyOptions(o,t.char,n,"char",i,a),this.applyOptions(o,t.charWord,i,"char-word",i,s.text.length),c.appendChild(o),n++})):c.textContent=s.text,this.applyOptions(c,t.word,r,"word",e,o.length),s.chars.length>0&&(c.innerHTML+=" "),i.appendChild(c),r++}}));return document.body.removeChild(l),{html:i.innerHTML}}appendVirtualLineToDOM(t,s,e,i,o,n,r,a,l){const h=document.createElement("span");h.classList.add("-s-line"),this.applyOptions(h,n.line,t,"line",0,s);let c=0,d=0,u=0;o.forEach(((t,s)=>{u+=t.text.length})),o.forEach(((t,s)=>{if(t.chars.length>0){const i=document.createElement("span");i.classList.add("-s-word"),t.chars.forEach(((s,e)=>{const o=document.createElement("span");o.classList.add("-s-char"),o.textContent=s.text,this.applyOptions(o,n.char,r,"char",e,a),this.applyOptions(o,n.charLine,c,"char-line",e,u),this.applyOptions(o,n.charWord,e,"char-word",e,t.text.length),i.appendChild(o),r++,c++})),this.applyOptions(i,n.word,l+d,"word",l+d,e-1),this.applyOptions(i,n.wordLine,s,"word-line",s,o.length),s<o.length-1&&(i.innerHTML+=" "),h.appendChild(i),d++}})),i.appendChild(h)}applyOptions(t,s,e,i,o,n){s&&s.forEach(((s,r)=>{let a=this.calculateIndex(s,e,o,n);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 o=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;o=Math.floor(Math.random()*(e-s+1))+s}return"end"===t.align?o=i-o-1:"center"===t.align&&(o-=Math.floor(i/2)),t.abs&&(o=Math.abs(o)),o}generateVariableName(t,s,e){let i=`--${t}`;return s.align&&(i+=`-${s.align}`),i}}class H{constructor(){this.isAnimationStarted=!1,this.requestAnimationId=0,this.onFrame=()=>{}}get now(){return this._now}start(t){this.isAnimationStarted||(this.fpsInterval=1e3/t,this.then=Date.now(),this.animate(),this.isAnimationStarted=!0)}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.isAnimationStarted=!1)}animate(){this.requestAnimationId=requestAnimationFrame((()=>{this.animate()})),this._now=Date.now(),this.elapsed=this._now-this.then,this.elapsed>this.fpsInterval&&(this.then=this._now-this.elapsed%this.fpsInterval,this.onFrame())}}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,o=this.canvas.height-s*this.canvasHeight;0===e?t.moveTo(i,o):t.lineTo(i,o)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class Y 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.right="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.setAttribute("data-fps","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-fps]::after {\n content: 'FPS: ' attr(fps);\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement(),this.intervalId=setInterval((()=>{this.displayElement.setAttribute("fps",`${this.callCount}`),this.callCount=0}),1e3)}onUpdate(t){this.callCount++}destructor(){clearInterval(this.intervalId),document.body.removeChild(this.displayElement)}}class 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,o=this.canvas.height-s/2;0===e?t.moveTo(i,o):t.lineTo(i,o)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class U 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 z{process(t){return t.getBoundingClientRect()}}class B{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.scsW=1,this.scsH=1,this.sD="vertical",this.sM="smooth"}}class R{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 k{parseSingle(t,s,e,i){let o,n=t.startsWith("-");return n&&(t=t.slice(1)),"selfHeight"===t?o=s.offsetHeight:t.endsWith("px")?o=parseFloat(t):t.endsWith("%")?o=parseFloat(t)*e/100:t.endsWith("rem")&&(o=parseFloat(t)*i),n?-o:o}}class F{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:o}=t.getBoundingClientRect(),n=function(t){return window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)}))}(t);if(6==n.length){var r=n;let t=r[0]*r[3]-r[1]*r[2];return{width:i/r[0]==0?1:r[0],height:o/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:o}}(t);return{top:i.top-e.top,left:i.left-e.left}}}function V(){return"ontouchstart"in window||navigator.maxTouchPoints>0}class q{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 mouseLerp(){return this.settings.mouseLerp}set mouseLerp(t){this.settings.mouseLerp=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 R,this.loop=new H,this.wW=0,this.wH=0,this._virtualCursor=new h,this._lerp=new l,this._attribute=new X,this._boundingClientRect=new z,this._position=new F,this.objects=new Map,this.connectQueue=new Array,this.globalId=1,this._parser=new k,this.isStarted=!1,this.scrollMode="smooth",this.mMode="default",this.dMode="smooth",this.eventMap={scroll:"scroll",progress:"progress_",intersection:"intersection_",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 A,this.data=new B,this._virtualCursor.mouseLerp=this.mouseLerp,this.sEnSmooth=new O(document,this.settings,this.data),this.sEnDefault=new L(document,this.settings,this.data),this.sEnDisable=new _(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.onFrame=()=>{this.onUpdateEvent()},this.rebuild(),this.on("lazy-loaded",(()=>{this.rebuild()}))}static getInstance(){return q.i||(q.i=new q),q.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),new ResizeObserver((t=>{Array.from(this.objects.values()).forEach((t=>{this.setupObject(t.el,t)}))})).observe(document.body),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,o;null===(e=s.showObserver)||void 0===e||e.disconnect(),null===(i=s.progressObserver)||void 0===i||i.disconnect(),null===(o=s.inviewObserver)||void 0===o||o.disconnect();let n=this._boundingClientRect.process(t),r=n.width/this.data.scsW,a=n.height/this.data.scsH,l=this._attribute.process(t,"string-enter-el")||this.defaultSettings.stringEnterEl,h=this._attribute.process(t,"string-enter-vp")||this.defaultSettings.stringEnterVp,c=this._attribute.process(t,"string-exit-el")||this.defaultSettings.stringExitEl,d=this._attribute.process(t,"string-exit-vp")||this.defaultSettings.stringExitVp;s.inviewTop=-1*this._parser.parseSingle(this._attribute.process(t,"string-inview-top",this._attribute.process(t,"string-inview-left",this.defaultSettings.stringInviewTop)),t,"vertical"==this.data.sD?a:r,16),s.inviewBottom=-1*this._parser.parseSingle(this._attribute.process(t,"string-inview",this._attribute.process(t,"string-inview-bottom",this._attribute.process(t,"string-inview-right",this.defaultSettings.stringInviewBottom))),t,"vertical"==this.data.sD?a:r,16),s.selfDisable=null!=this._attribute.process(t,"string-self-disable"),s.abs=null!=this._attribute.process(t,"string-abs");let u=this._attribute.process(t,"string-cursor-target");null!=u&&(s.cursorTargetClass=u),s.id=this._attribute.process(t,"string-id",`string-${this.globalId}`),s.key=this._attribute.process(t,"string-key",this.defaultSettings.stringKey),s.strength=this._attribute.process(t,"string-strength",this.defaultSettings.stringStrength),s.radius=this._attribute.process(t,"string-radius",this.defaultSettings.stringRadius),s.lerp=this._attribute.process(t,"string-lerp",this.defaultSettings.stringLerp),s.weight=this._attribute.process(t,"string-weight",0),s.glide=this._attribute.process(t,"string-glide",1);let p=this._attribute.process(t,"string-parallax-bias",this.defaultSettings.stringParallaxBias);s.parallaxPositionStart=.5*p-.5,s.parallaxPositionEnd=.5+.5*(1-p),s.alignment=this._attribute.process(t,"string-alignment","center"),t.setAttribute("string-id",s.id),"vertical"==this.data.sD?s.size=a:s.size=r,s.oStart=this._parser.parseSingle(this._attribute.process(t,"string-offset-top",this._attribute.process(t,"string-offset-left",this.defaultSettings.stringOffsetStart)),t,this.data.wS,16),s.oEnd=this._parser.parseSingle(this._attribute.process(t,"string-offset-bottom",this._attribute.process(t,"string-offset-right",this.defaultSettings.stringOffsetEnd)),t,this.data.wS,16);let m=this._parser.parseSingle(this._attribute.process(t,"string-offset-top",this._attribute.process(t,"string-offset-left",this.defaultSettings.stringOffsetStart)),t,this.data.wS,16),g=this._parser.parseSingle(this._attribute.process(t,"string-offset-bottom",this._attribute.process(t,"string-offset-right",this.defaultSettings.stringOffsetEnd)),t,this.data.wS,16),v=this._attribute.process(s.el,"string","").split("|");s.factor=0,v.includes("parallax")&&(m=0,g=0,s.oStart=0,s.oEnd=0,s.factor=this._attribute.process(t,"string-parallax",this.defaultSettings.stringParallax),s.oStart+=s.factor*this.data.wS,s.oEnd+=s.factor*this.data.wS),s.repeat=null!=this._attribute.process(t,"string-repeat"),s.sElPos=l,s.sScrPos=h,s.eElPos=c,s.eScrPos=d,s.halfWidth=r/2,s.halfHeight=a/2;let b=this.data.wS;if("vertical"==this.data.sD){let e=this._position.process(t,this.data.sC).top/this.data.scsH;s.start=e,s.end=e+a}else{let e=this._position.process(t,this.data.sC).left/this.data.scsW;s.start=e,s.end=e+r}s.calculatePositions(b);let f,S,y=this.connectQueue.filter((t=>t.id==s.id));this.connectQueue=this.connectQueue.filter((t=>t.id!=s.id)),y.forEach((t=>{s.connects.push(t.element)})),"vertical"==this.data.sD?(f={root:null,rootMargin:`${m+this.data.wS}px 1000px ${g+this.data.wS}px 1000px`,threshold:.001},S={root:null,rootMargin:`${m+s.inviewTop}px 1000px ${g+s.inviewBottom}px 1000px`,threshold:.001}):(f={root:null,rootMargin:`1000px ${m+this.data.wS}px 1000px ${g+this.data.wS}px`,threshold:.001},S={root:null,rootMargin:`1000px ${m+s.inviewTop}px 1000px ${g+s.inviewBottom}px`,threshold:.001});let E=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?0==s.active&&(this.events.emit(`activate_object_${s.id}`,!0),s.enter()):1==s.active&&(this.events.emit(`activate_object_${s.id}`,!1),s.leave())}))}),f),w=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?this.events.emit(`intersection_${s.id}`,!0):this.events.emit(`intersection_${s.id}`,!1)}))}),{root:null,rootMargin:"0px 0px 0px 0px",threshold:.001}),x=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())}))}),S);E.observe(t),w.observe(t),x.observe(t),s.showObserver=w,s.progressObserver=E,s.inviewObserver=x,this.modules.forEach((e=>{e.tryConnect(s)&&(e.initObject(s,t),e.connect(s))}))}addObject(t){let s;s=null==this._attribute.process(t,"string-inited")?new m(t):this.objects.has(this._attribute.process(t,"string-id"))?this.objects.get(this._attribute.process(t,"string-id")):new m(t),t.setAttribute("string-inited",""),this.setupObject(t,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=>{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=>{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:()=>Y,StringFPSTracker:()=>j,StringGlide:()=>x,StringLazy:()=>i,StringLerp:()=>M,StringLerpTracker:()=>U,StringLoading:()=>o,StringMagnetic:()=>l,StringParallax:()=>C,StringPositionTracker:()=>X,StringProgress:()=>P,StringResponsive:()=>f,StringScrollbar:()=>E,StringSplit:()=>H,StringTune:()=>$,StringVideoAutoplay:()=>n,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 this.attribute.process(t.el,"string","").split("|").includes(this.htmlKey)}connect(t){t.connect(this),this.onConnect(t)}addObject(t,s){this.objectsMap.set(t,s),this.objects=Array.from(this.objectsMap).map((([t,s])=>s))}removeObject(t){this.objectsMap.delete(t),this.objects=Array.from(this.objectsMap).map((([t,s])=>s))}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 o=new XMLHttpRequest;o.open("GET",s,!0),o.responseType="arraybuffer",o.onload=()=>{if(206===o.status||200===o.status){const s=o.response,n=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(n)}else i(new Error("Failed to load image"))},o.onerror=()=>{i(new Error("Network error"))},o.setRequestHeader("Range","bytes=0-"),o.send()}))}}class o 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 n 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,o=.5){return t<s?1:(t>1&&(t=1),t<=e?o-(t-s)/(e-s)*(o-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.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){if(this.virtualCursor.smoothX!=this.oldX||this.virtualCursor.smoothY!=this.oldY){let t={lerpX:this.virtualCursor.lerpX,lerpY:this.virtualCursor.lerpY,x:this.virtualCursor.smoothX,y:this.virtualCursor.smoothY};this.events.emit("cursor",t),this.cursor.style.setProperty("--x",this.virtualCursor.smoothX),this.cursor.style.setProperty("--y",this.virtualCursor.smoothY),this.oldX=this.virtualCursor.smoothX,this.oldY=this.virtualCursor.smoothY}this.cursor.style.setProperty("--x-lerp",this.virtualCursor.lerpX.toFixed(2)),this.cursor.style.setProperty("--y-lerp",this.virtualCursor.lerpY.toFixed(2)),this.objects.forEach((t=>{if(t.isMouseOver){let s=t.el.getBoundingClientRect();const e=this.virtualCursor.x-s.left,i=this.virtualCursor.y-s.top;if(Math.sqrt(Math.pow(t.mousePixelFloatX-e,2)+Math.pow(t.mousePixelFloatY-i,2))>.1){0==t.isMouseMove&&(t.isMouseMove=!0,t.mousePixelFloatX=e,t.mousePixelFloatY=i,this.events.emit(`mousemove_start_${t.id}`,null));let o=this.lerp.process(t.mousePixelFloatX,e,t.lerp),n=this.lerp.process(t.mousePixelFloatY,i,t.lerp);t.mousePixelFloatX=t.mousePixelFloatX+o,t.mousePixelFloatY=t.mousePixelFloatY+n;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)}}))}onConnect(t){let s=t.el,e=()=>{s.addEventListener("mousemove",i),s.addEventListener("mouseleave",o),t.isMouseOver=!0,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&(this.cursor.classList.add(t.cursorTargetClass),this.cursorContent.classList.add(t.cursorTargetClass)),this.cursor.classList.add("-showing"),this.cursorContent.classList.add("-showing"),setTimeout((()=>{this.cursor.classList.remove("-showing"),this.cursorContent.classList.remove("-showing"),this.cursor.classList.add("-show"),this.cursorContent.classList.add("-show")}),1200)},i=t=>{},o=()=>{s.removeEventListener("mousemove",i),s.removeEventListener("mouseleave",o),t.isMouseOver=!1,null!=t.cursorTargetClass&&t.cursorTargetClass.length>0&&(this.cursor.classList.remove(t.cursorTargetClass),this.cursorContent.classList.remove(t.cursorTargetClass)),this.cursorContent.classList.remove("-showing"),this.cursor.classList.remove("-showing"),this.cursorContent.classList.remove("-show"),this.cursor.classList.remove("-show")};t.onEnter=()=>{s.addEventListener("mouseenter",e)},t.onLeave=()=>{s.removeEventListener("mouseenter",e),s.removeEventListener("mousemove",i),s.removeEventListener("mouseleave",o)}}setMouseCoordinates(t,s,e){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,o=e.top+s.halfHeight,n=t.clientX-i,r=t.clientY-o,a=Math.sqrt(n**2+r**2);a<s.radius?(s.magneticTargetX=n*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){const i=s-t;return Math.abs(i)<.01?i:i*e}}class c{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.abs(this._lerpX)<.1?this._x=this.targetX:this._x=this._x+this._lerpX,Math.abs(this._lerpY)<.1?this._y=this.targetY:this._y=this._y+this._lerpY}}const d="top",u="bottom",p="left",m="right";class g{constructor(t){this.id="",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.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===d&&this.sScrPos===d||this.sElPos===p&&this.sScrPos===p?this.startPos=this.start-this.oEnd:this.sElPos===d&&this.sScrPos===u||this.sElPos===p&&this.sScrPos===m?this.startPos=this.start-t-this.oEnd:this.sElPos===u&&this.sScrPos===d||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===d&&this.eScrPos===d||this.eElPos===p&&this.eScrPos===p?this.endPos=this.start+this.oStart:this.eElPos===d&&this.eScrPos===u||this.eElPos===p&&this.eScrPos===m?this.endPos=this.start-t+this.oStart:this.eElPos===u&&this.eScrPos===d||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 o=this.settings.settings;o.mobile?(this.queries[v.Mobile].enable=!0,this.queries[v.Mobile].setRange(null==o.mobile.min?null:o.mobile.min,null!==(t=o.mobile.max)&&void 0!==t?t:null),this.matchMedias[v.Mobile]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Mobile].enable=!1,o.tablet?(this.queries[v.Tablet].enable=!0,this.queries[v.Tablet].setRange(null==o.mobile.min?null:o.mobile.min,null!==(s=o.mobile.max)&&void 0!==s?s:null),this.matchMedias[v.Tablet]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Tablet].enable=!1,o.laptop?(this.queries[v.Laptop].enable=!0,this.queries[v.Laptop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(e=o.mobile.max)&&void 0!==e?e:null),this.matchMedias[v.Laptop]=window.matchMedia(this.queries[v.Mobile].mediaQuery)):this.queries[v.Laptop].enable=!1,o.desktop?(this.queries[v.Desktop].enable=!0,this.queries[v.Desktop].setRange(null==o.mobile.min?null:o.mobile.min,null!==(i=o.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((o=>{let n=!1;o.hasAttribute("string-mobile")&&t&&(n=!0),o.hasAttribute("string-tablet")&&s&&(n=!0),o.hasAttribute("string-laptop")&&e&&(n=!0),o.hasAttribute("string-desktop")&&i&&(n=!0),o.style.display=n?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 _ 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 D extends L{constructor(t,s,e){super(t,s,e),this.name="disable"}onUpdate(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}}const T="-scroll-forward",O="-scroll-back";class A 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(T,s),document.documentElement.classList.toggle(O,!s)}clamp(t,s,e){return Math.min(Math.max(t,s),e)}stopScroll(){this.data.v=0,this.data.d=0,this.data.t=this.data.c,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(O,T)}onUpdate(){if(0!=this.data.d){const{data:t,settings:s}=this;let e=this.data.d*this.settings.speedAccelerate;if(this.data.t=Math.min(Math.max(0,this.data.t+e),this.data.bS),this.data.d-=e,this.data.v=(this.data.t-this.data.c)*this.settings.speed,this.isScrollbarManipulation)return this.isScrollbarManipulation=!1,void(t.c=t.t);const i=Math.abs(t.v);if(0===i)return;t.v>0?(this.data.c=Math.ceil(t.c+t.v),this.updateScrollDirection(!0)):(this.data.c=Math.floor(t.c+t.v),this.updateScrollDirection(!1)),i<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!=this.data.c&&(this.previousCurrent=this.data.c,this.onCalcUpdate()))}}onWheel(t){if(0!=t.deltaY){t.preventDefault(),0==this.data.d&&this.onScrollStart();let s=t.deltaY;0==this.data.t&&(this.data.d+=Math.max(0,t.deltaY)),this.data.t==this.data.bS&&(this.data.d+=Math.min(0,t.deltaY)),this.data.d+=s}}onScroll(t){var s,e;this.isProg||(this.isScrollbarManipulation=!0,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],o=e[4]?e[4].split(","):[];switch(t+i){case"char-line":s.charLine.push(this.parseParam(o));break;case"char-word":s.charWord.push(this.parseParam(o));break;case"word-line":s.wordLine.push(this.parseParam(o));break;case"line":s.line.push(this.parseParam(o));break;case"word":s.word.push(this.parseParam(o));break;case"char":s.char.push(this.parseParam(o))}}})),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"),o=e.split(/\s+/);let n=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 c=[],d=[],u=0;o.forEach(((t,e)=>{l.textContent=t,t.length>0&&(l.textContent+=" ");const i=l.offsetWidth,o={text:t,width:i,chars:new Array};Array.from(t).forEach(((t,s)=>{const e={text:t};o.chars.push(e)})),u+i>s.offsetWidth&&(c.push(d),d=[],u=0,n+=d.length),d.push(o),u+=i})),c.push(d);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<c.length;s++)this.appendVirtualLineToDOM(s,c.length,o.length,i,c[s],t,n,a,m),m+=c[s].length;else for(let s=0;s<c.length;s++)c[s].forEach(((s,e)=>{var l,h;if(s.chars.length>0){const c=document.createElement("span");c.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 o=document.createElement("span");o.classList.add("-s-char"),o.textContent=e.text,this.applyOptions(o,t.char,n,"char",i,a),this.applyOptions(o,t.charWord,i,"char-word",i,s.text.length),c.appendChild(o),n++})):c.textContent=s.text,this.applyOptions(c,t.word,r,"word",e,o.length),s.chars.length>0&&(c.innerHTML+=" "),i.appendChild(c),r++}}));return document.body.removeChild(l),{html:i.innerHTML}}appendVirtualLineToDOM(t,s,e,i,o,n,r,a,l){const h=document.createElement("span");h.classList.add("-s-line"),this.applyOptions(h,n.line,t,"line",0,s);let c=0,d=0,u=0;o.forEach(((t,s)=>{u+=t.text.length})),o.forEach(((t,s)=>{if(t.chars.length>0){const i=document.createElement("span");i.classList.add("-s-word"),t.chars.forEach(((s,e)=>{const o=document.createElement("span");o.classList.add("-s-char"),o.textContent=s.text,this.applyOptions(o,n.char,r,"char",e,a),this.applyOptions(o,n.charLine,c,"char-line",e,u),this.applyOptions(o,n.charWord,e,"char-word",e,t.text.length),i.appendChild(o),r++,c++})),this.applyOptions(i,n.word,l+d,"word",l+d,e-1),this.applyOptions(i,n.wordLine,s,"word-line",s,o.length),s<o.length-1&&(i.innerHTML+=" "),h.appendChild(i),d++}})),i.appendChild(h)}applyOptions(t,s,e,i,o,n){s&&s.forEach(((s,r)=>{let a=this.calculateIndex(s,e,o,n);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 o=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;o=Math.floor(Math.random()*(e-s+1))+s}return"end"===t.align?o=i-o-1:"center"===t.align&&(o-=Math.floor(i/2)),t.abs&&(o=Math.abs(o)),o}generateVariableName(t,s,e){let i=`--${t}`;return s.align&&(i+=`-${s.align}`),i}}class W{constructor(){this.isAnimationStarted=!1,this.requestAnimationId=0,this.onFrame=()=>{}}get now(){return this._now}start(t){this.isAnimationStarted||(this.fpsInterval=1e3/t,this.then=Date.now(),this.animate(),this.isAnimationStarted=!0)}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.isAnimationStarted=!1)}animate(){this.requestAnimationId=requestAnimationFrame((()=>{this.animate()})),this._now=Date.now(),this.elapsed=this._now-this.then,this.elapsed>this.fpsInterval&&(this.then=this._now-this.elapsed%this.fpsInterval,this.onFrame())}}class Y 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,o=this.canvas.height-s*this.canvasHeight;0===e?t.moveTo(i,o):t.lineTo(i,o)})),t.stroke()}setTargetPosition(t){this.targetPosition=t}}class j 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.right="10px",this.displayElement.style.backgroundColor="#000000",this.displayElement.style.border="1px solid rgba(255, 255, 255, 0.2)",this.displayElement.style.zIndex="9999",this.displayElement.setAttribute("data-fps","0"),document.body.appendChild(this.displayElement);const t=document.createElement("style");t.innerHTML="\n [data-fps]::after {\n content: 'FPS: ' attr(fps);\n position: relative;\n display: block;\n color: #ffffff;\n padding: 5px 8px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n }\n ",document.head.appendChild(t)}onStart(){this.createDisplayElement(),this.intervalId=setInterval((()=>{this.displayElement.setAttribute("fps",`${this.callCount}`),this.callCount=0}),1e3)}onUpdate(t){this.callCount++}destructor(){clearInterval(this.intervalId),document.body.removeChild(this.displayElement)}}class U 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,o=this.canvas.height-s/2;0===e?t.moveTo(i,o):t.lineTo(i,o)})),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 z{process(t,s,e=null){return null==t.getAttribute(s)?e:t.getAttribute(s)}}class B{process(t){return t.getBoundingClientRect()}}class R{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.scsW=1,this.scsH=1,this.sD="vertical",this.sM="smooth"}}class k{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 F{parseSingle(t,s,e,i){let o,n=t.startsWith("-");return n&&(t=t.slice(1)),"selfHeight"===t?o=s.offsetHeight:t.endsWith("px")?o=parseFloat(t):t.endsWith("%")?o=parseFloat(t)*e/100:t.endsWith("rem")&&(o=parseFloat(t)*i),n?-o:o}}class V{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:o}=t.getBoundingClientRect(),n=function(t){return window.getComputedStyle(t).transform.split(/\(|,|\)/).slice(1,-1).map((function(t){return parseFloat(t)}))}(t);if(6==n.length){var r=n;let t=r[0]*r[3]-r[1]*r[2];return{width:i/r[0]==0?1:r[0],height:o/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:o}}(t);return{top:i.top-e.top,left:i.left-e.left}}}function q(){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||q()?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 k,this.loop=new W,this.wW=0,this.wH=0,this._virtualCursor=new c,this._lerp=new h,this._attribute=new z,this._boundingClientRect=new B,this._position=new V,this.objects=new Map,this.connectQueue=new Array,this.globalId=1,this._parser=new F,this.isStarted=!1,this.scrollMode="smooth",this.mMode="default",this.dMode="smooth",this.eventMap={scroll:"scroll",progress:"progress_",intersection:"intersection_",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 R,this.sEnSmooth=new A(document,this.settings,this.data),this.sEnDefault=new _(document,this.settings,this.data),this.sEnDisable=new D(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.onFrame=()=>{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),new ResizeObserver((t=>{Array.from(this.objects.values()).forEach((t=>{this.setupObject(t.el,t)}))})).observe(document.body),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,o;null===(e=s.showObserver)||void 0===e||e.disconnect(),null===(i=s.progressObserver)||void 0===i||i.disconnect(),null===(o=s.inviewObserver)||void 0===o||o.disconnect();let n=this._boundingClientRect.process(t),r=n.width/this.data.scsW,a=n.height/this.data.scsH,l=this._attribute.process(t,"string-enter-el")||this.defaultSettings.stringEnterEl,h=this._attribute.process(t,"string-enter-vp")||this.defaultSettings.stringEnterVp,c=this._attribute.process(t,"string-exit-el")||this.defaultSettings.stringExitEl,d=this._attribute.process(t,"string-exit-vp")||this.defaultSettings.stringExitVp;s.inviewTop=-1*this._parser.parseSingle(this._attribute.process(t,"string-inview-top",this._attribute.process(t,"string-inview-left",this.defaultSettings.stringInviewTop)),t,"vertical"==this.data.sD?a:r,16),s.inviewBottom=-1*this._parser.parseSingle(this._attribute.process(t,"string-inview",this._attribute.process(t,"string-inview-bottom",this._attribute.process(t,"string-inview-right",this.defaultSettings.stringInviewBottom))),t,"vertical"==this.data.sD?a:r,16),s.selfDisable=null!=this._attribute.process(t,"string-self-disable"),s.abs=null!=this._attribute.process(t,"string-abs");let u=this._attribute.process(t,"string-cursor-target");null!=u&&(s.cursorTargetClass=u),s.id=this._attribute.process(t,"string-id",`string-${this.globalId}`),s.key=this._attribute.process(t,"string-key",this.defaultSettings.stringKey),s.strength=this._attribute.process(t,"string-strength",this.defaultSettings.stringStrength),s.radius=this._attribute.process(t,"string-radius",this.defaultSettings.stringRadius),s.lerp=this._attribute.process(t,"string-lerp",this.defaultSettings.stringLerp),s.weight=this._attribute.process(t,"string-weight",0),s.glide=this._attribute.process(t,"string-glide",1);let p=this._attribute.process(t,"string-parallax-bias",this.defaultSettings.stringParallaxBias);s.parallaxPositionStart=.5*p-.5,s.parallaxPositionEnd=.5+.5*(1-p),s.alignment=this._attribute.process(t,"string-alignment","center"),t.setAttribute("string-id",s.id),"vertical"==this.data.sD?s.size=a:s.size=r,s.oStart=this._parser.parseSingle(this._attribute.process(t,"string-offset-top",this._attribute.process(t,"string-offset-left",this.defaultSettings.stringOffsetStart)),t,this.data.wS,16),s.oEnd=this._parser.parseSingle(this._attribute.process(t,"string-offset-bottom",this._attribute.process(t,"string-offset-right",this.defaultSettings.stringOffsetEnd)),t,this.data.wS,16);let m=this._parser.parseSingle(this._attribute.process(t,"string-offset-top",this._attribute.process(t,"string-offset-left",this.defaultSettings.stringOffsetStart)),t,this.data.wS,16),g=this._parser.parseSingle(this._attribute.process(t,"string-offset-bottom",this._attribute.process(t,"string-offset-right",this.defaultSettings.stringOffsetEnd)),t,this.data.wS,16),v=this._attribute.process(s.el,"string","").split("|");s.factor=0,v.includes("parallax")&&(m=0,g=0,s.oStart=0,s.oEnd=0,s.factor=this._attribute.process(t,"string-parallax",this.defaultSettings.stringParallax),s.oStart+=s.factor*this.data.wS,s.oEnd+=s.factor*this.data.wS),s.repeat=null!=this._attribute.process(t,"string-repeat"),s.sElPos=l,s.sScrPos=h,s.eElPos=c,s.eScrPos=d,s.halfWidth=r/2,s.halfHeight=a/2;let b=this.data.wS;if("vertical"==this.data.sD){let e=this._position.process(t,this.data.sC).top/this.data.scsH;s.start=e,s.end=e+a}else{let e=this._position.process(t,this.data.sC).left/this.data.scsW;s.start=e,s.end=e+r}s.calculatePositions(b);let f,S,y=this.connectQueue.filter((t=>t.id==s.id));this.connectQueue=this.connectQueue.filter((t=>t.id!=s.id)),y.forEach((t=>{s.connects.push(t.element)})),"vertical"==this.data.sD?(f={root:null,rootMargin:`${m+this.data.wS}px 1000px ${g+this.data.wS}px 1000px`,threshold:.001},S={root:null,rootMargin:`${m+s.inviewTop}px 1000px ${g+s.inviewBottom}px 1000px`,threshold:.001}):(f={root:null,rootMargin:`1000px ${m+this.data.wS}px 1000px ${g+this.data.wS}px`,threshold:.001},S={root:null,rootMargin:`1000px ${m+s.inviewTop}px 1000px ${g+s.inviewBottom}px`,threshold:.001});let E=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?0==s.active&&(this.events.emit(`activate_object_${s.id}`,!0),s.enter()):1==s.active&&(this.events.emit(`activate_object_${s.id}`,!1),s.leave())}))}),f),w=new IntersectionObserver((t=>{t.forEach((t=>{t.isIntersecting?this.events.emit(`intersection_${s.id}`,!0):this.events.emit(`intersection_${s.id}`,!1)}))}),{root:null,rootMargin:"0px 0px 0px 0px",threshold:.001}),x=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())}))}),S);E.observe(t),w.observe(t),x.observe(t),s.showObserver=w,s.progressObserver=E,s.inviewObserver=x,this.modules.forEach((e=>{e.tryConnect(s)&&(e.initObject(s,t),e.connect(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=>{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=>{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||q()?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