@fiddle-digital/string-tune 0.0.51 → 0.0.53

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