@fiddle-digital/string-tune 1.1.40 → 1.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var mt=class{constructor(e=.1,t){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=e,this.context=t,this.onSettingsChange({isDesktop:t.data.viewport.windowWidth>1080,isForceRebuild:!1,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0})}onMouseMove(e){this.context.data.cursor.targetX=e.clientX,this.context.data.cursor.targetY=e.clientY;let t=performance.now(),r=t-this.lastMouseTime;r>0&&(this.context.data.cursor.velocityX=(e.clientX-this.lastMouseX)/r,this.context.data.cursor.velocityY=(e.clientY-this.lastMouseY)/r),this.lastMouseX=e.clientX,this.lastMouseY=e.clientY,this.lastMouseTime=t}onFrame(){let{targetX:e,targetY:t,smoothedX:r,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:r,to:e,progress:this.smoothingFactor}),o=this.context.tools.lerp.process({from:i,to:t,progress:this.smoothingFactor}),s=this.getStepDistance(n,o);this.isSettled(s)?this.snapToTarget():this.applyStep(n,o)}onSettingsChange(e){let t=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(t)}setLerpFactor(e){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:e,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(e,t){return Math.hypot(e,t)}isSettled(e){return e<this.SETTLE_THRESHOLD}snapToTarget(){this.context.data.cursor.smoothedX=this.context.data.cursor.targetX,this.context.data.cursor.smoothedY=this.context.data.cursor.targetY,this.context.data.cursor.stepX=0,this.context.data.cursor.stepY=0}applyStep(e,t){this.context.data.cursor.smoothedX+=e,this.context.data.cursor.smoothedY+=t,this.context.data.cursor.stepX=e,this.context.data.cursor.stepY=t}};var U=class{constructor(){this.listeners={};this.stateEvents=new Set;this.lastPayloads={};this.stateEvents.add("screen:mobile"),this.stateEvents.add("screen:tablet"),this.stateEvents.add("screen:laptop"),this.stateEvents.add("screen:desktop"),this.stateEvents.add("start")}on(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(t),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&t(this.lastPayloads[i])}off(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]&&this.listeners[i].delete(t)}emit(e,t){this.stateEvents.has(e)&&(this.lastPayloads[e]=t);let r=this.listeners[e];if(r)for(let i of r)i(t)}onProgress(e,t){this.on(`progress:${e}`,t)}emitProgress(e,t){this.emit(`progress:${e}`,t)}onInview(e,t){this.on(`object:inview:${e}`,t)}emitInview(e,t){this.emit(`object:inview:${e}`,t)}onScroll(e){this.on("scroll",e)}emitScroll(e){this.emit("scroll",e)}onUpdate(e){this.on("update",e)}emitUpdate(){this.emit("update")}clear(e){delete this.listeners[e]}clearAll(){this.listeners={}}};function Ne(c,e,t,r){switch(c){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":return[e];case"onMouseMove":case"onWheel":return t?[t]:[];case"onDOMMutate":return t&&r?[t,r]:[];case"onSettingsChange":return[];default:return[]}}var gt=class{constructor(e){this.data=e;this.modules=[];this.uiModules=[];this.allModules=[]}register(e){e.type===1?this.modules.push(e):e.type===2&&this.uiModules.push(e),this.rebuildAllModules()}find(e){return this.modules.find(t=>t instanceof e)}onInit(){this.callAll("onInit")}onFrame(){this.callAll("onFrame")}onMutate(){this.callAll("onMutate")}onScrollMeasure(){this.callAll("onScrollMeasure")}onMouseMoveMeasure(){this.callAll("onMouseMoveMeasure")}onScroll(){this.callAll("onScroll")}onResizeWidth(){this.callAll("onResizeWidth")}onResize(){this.callAll("onResize")}onMouseMove(e){this.callAll("onMouseMove",e)}onWheel(e){this.callAll("onWheel",e)}onDirectionChange(){this.callAll("onDirectionChange")}onScrollStart(){this.callAll("onScrollStart")}onScrollStop(){this.callAll("onScrollStop")}onAxisChange(){this.callAll("onAxisChange")}onDeviceChange(){this.callAll("onDeviceChange")}onScrollConfigChange(){this.callAll("onScrollConfigChange")}onSettingsChange(e){this.callAll("onSettingsChange")}onDOMMutate(e,t){this.callAll("onDOMMutate",e,t)}destroy(){this.callAll("destroy"),this.modules=[],this.uiModules=[],this.allModules=[]}get all(){return this.allModules}get core(){return this.modules}get ui(){return this.uiModules}callAll(e,t,r){this.callLifecycle(this.modules,e,t,r),this.callLifecycle(this.uiModules,e,t,r)}callLifecycle(e,t,r,i){if(e.length===0)return;let n=Ne(t,this.data,r,i);for(let o=0;o<e.length;o++){let s=e[o];s&&s[t](...n)}}rebuildAllModules(){this.allModules=[...this.modules,...this.uiModules]}};var ft=class{constructor(e,t,r){this.parent=r;this.properties=new Map;this.id=e,this.htmlElement=t}get parentObject(){return this.parent}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}setEasing(e){this.easingFn=e??void 0}getEasing(){return this.easingFn}applyProgress(e,t){let r=this.easingFn??t;return r?r(e):e}};var q=class{constructor(e,t){this.id="";this.keys=[];this.mirrors=new Map;this.properties=new Map;this.modules=[];this.events=new U;this.htmlElement=t,this.id=e}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}enter(){this.events.emit("enter",this),this.setProperty("active",!0),this.modules.forEach(e=>{e.enterObject(this.id,this)})}leave(){this.events.emit("leave",this),this.setProperty("active",!1),this.modules.forEach(e=>{e.exitObject(this.id)})}remove(){this.modules.forEach(e=>{e.removeObject(this.id)})}show(){this.htmlElement.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(e){this.modules.includes(e)||this.modules.push(e)}addMirror(e){this.mirrors.set(e.id,e)}removeMirror(e){this.mirrors.delete(e)}get mirrorObjects(){return Array.from(this.mirrors.values())}get connects(){return this.mirrorObjects.map(e=>e.htmlElement)}};var bt=class{constructor(e,t,r,i){this.data=e;this.modules=t;this.events=r;this.tools=i;this.objects=new Map;this.connectQueue=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1}get all(){return this.objects}add(e){let t=`string-${this.globalId++}`,r="string-id";e.getAttribute("string-id")&&(t=e.getAttribute("string-id"),r="string-id"),e.getAttribute("data-string-id")&&(t=e.getAttribute("data-string-id"),r="data-string-id");let i=t&&this.objects.has(t)?this.objects.get(t):new q(t,e);e.setAttribute(r,i.id);let n=e.getAttribute("string")??e.getAttribute("data-string");n&&(i.keys=(n??"").split("|").map(a=>a.trim()).filter(Boolean)),e.setAttribute("string-inited",""),this.objects.set(i.id,i);let o=this.getAllAttributes(e);this.modules.core.forEach(a=>{"setupCoreProperties"in a&&typeof a.setupCoreProperties=="function"&&a.setupCoreProperties(i,e,o)}),this.modules.core.forEach(a=>{a.canConnect(i)&&(a.initializeObject(this.globalId,i,e,o),a.calculatePositions(i,this.data.viewport.windowHeight),a.connectObject(i),a.addObject(i.id,i))}),this.connectQueue.filter(a=>a.id===i.id).forEach(a=>this.attachMirrorToObject(i,a.element)),this.connectQueue=this.connectQueue.filter(a=>a.id!==i.id),this.initObservers(i,e),this.checkInviewForObject(i)}remove(e){let t=this.objects.get(e);t&&(t.events.clearAll(),t.getProperty("observer-progress")?.disconnect(),t.getProperty("observer-inview")?.disconnect(),t.htmlElement.removeAttribute("string-inited"),t.leave(),t.remove(),t.mirrorObjects.forEach(r=>{r.htmlElement.removeAttribute("string-mirror-id"),this.mirrors.delete(r.id);let i=r.htmlElement.getAttribute("string-copy-from")??r.htmlElement.getAttribute("data-string-copy-from");i&&this.enqueueConnection(i,r.htmlElement)}),this.objects.delete(e))}enqueueConnection(e,t){this.connectQueue.some(r=>r.id===e&&r.element===t)||this.connectQueue.push({id:e,element:t})}linkMirror(e,t){let r=this.objects.get(e);r?this.attachMirrorToObject(r,t):this.enqueueConnection(e,t)}attachMirrorToObject(e,t){let r=t.getAttribute("string-mirror-id")??t.getAttribute("data-string-mirror-id");if(r){let s=this.mirrors.get(r);if(s){if(s.parentObject===e)return s;s.parentObject.removeMirror(r),this.mirrors.delete(r)}}let i=r??`string-mirror-${this.mirrorId++}`,n=new ft(i,t,e);t.setAttribute("string-mirror-id",i),e.addMirror(n),this.mirrors.set(i,n);let o=t.getAttribute("string-easing")??t.getAttribute("data-string-easing");return o&&o.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:o})),n.setProperty("easing",o)),n}detachMirrorByElement(e){let t=e.getAttribute("string-mirror-id")??e.getAttribute("data-string-mirror-id");t&&(this.detachMirrorById(t),e.removeAttribute("string-mirror-id"))}detachMirrorById(e){let t=this.mirrors.get(e);t&&(t.parentObject.removeMirror(e),this.mirrors.delete(e))}getAllAttributes(e){let t={};return Array.from(e.attributes).forEach(r=>{t[r.name]=r.value}),t}initObservers(e,t){let r=e.getProperty("offset-top")??0,i=e.getProperty("offset-bottom")??0;e.getProperty("observer-progress")?.disconnect();let n=m=>{m.forEach(g=>{this.events.emit(`object:activate:${e.id}`,g.isIntersecting),g.isIntersecting?e.enter():e.leave()})},o=e.getProperty("outside-container"),s=t.getAttribute("string-outside-container")??t.getAttribute("data-string-outside-container"),a=s!=null?s.trim().toLowerCase():null,l=a===""||a==="true"||a==="1",u=o!=null?o===!0:l,d=this.data.scroll.container===document.body||u?null:this.data.scroll.container,p=new IntersectionObserver(n,{root:d,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${r+this.data.viewport.windowHeight}px 0px`,threshold:0});p.observe(t),e.setProperty("observer-progress",p)}observeDOM(){new MutationObserver(t=>{t.forEach(r=>{r.type==="childList"&&(r.removedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;this.detachMirrorByElement(n),!this.isFixed(n)&&(n.hasAttribute("string")&&this.handleRemoved(n),n.querySelectorAll("[string],[data-string]").forEach(o=>{this.isFixed(o)||this.handleRemoved(o)}),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(o=>this.detachMirrorByElement(o)))}),r.addedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;if(this.isFixed(n))return;n.hasAttribute("string")&&!n.hasAttribute("string-inited")&&this.add(n),n.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])").forEach(s=>this.add(s));let o=n.getAttribute("string-copy-from")??n.getAttribute("data-string-copy-from");o&&this.linkMirror(o,n),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(s=>{let a=s.getAttribute("string-copy-from")??s.getAttribute("data-string-copy-from");a&&this.linkMirror(a,s)})}),(r.addedNodes.length>0||r.removedNodes.length>0)&&this.modules.onDOMMutate(r.addedNodes,r.removedNodes),this.modules.all.forEach(i=>i.onDOMRebuild()))})}).observe(document.body,{childList:!0,subtree:!0})}handleRemoved(e){let t=e.getAttribute("string-id")??e.getAttribute("data-string-id");if(!t)return;let r=e.getAttribute("string-copy-from")??e.getAttribute("data-string-copy-from");r&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==r)),this.remove(t)}onSettingsChange(e){this.objects.forEach(t=>{this.modules.core.forEach(r=>{let i=!1;if(e.isDesktop?(r.permissions.desktop.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.desktop.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.desktop.rebuild.height&&e.heightChanged&&(i=!0)):(r.permissions.mobile.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.mobile.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.mobile.rebuild.height&&e.heightChanged&&(i=!0)),(i||e.isForceRebuild)&&r.canConnect(t)){let n=this.getAllAttributes(t.htmlElement);r.initializeObject(this.globalId,t,t.htmlElement,n),r.calculatePositions(t,this.data.viewport.windowHeight),r.connectObject(t)}})})}isFixed(e){return e.hasAttribute("string-fixed")}checkInview(){this.objects.forEach(e=>{this.checkInviewForObject(e)})}checkInviewForObject(e){let t=this.data.scroll.transformedCurrent,r=e.getProperty("inview-start-position"),i=e.getProperty("inview-end-position"),n=e.getProperty("is-inview")??!1,o=Math.min(r,i),s=Math.max(r,i),a=t>=o&&t<=s,l=null;if(!n&&a){let u=Math.abs(t-o),d=Math.abs(s-t);l=u<=d?"enter-top":"enter-bottom"}else n&&!a&&(l=t<o?"exit-top":"exit-bottom");a!==n&&(e.setProperty("is-inview",a),this.events.emit(`object:inview:${e.id}`,{inView:a,direction:l}),a?e.show():e.hide())}};var H=class{constructor(e){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._scrollDirection="vertical";this.isBottomScrollDirection=null;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()};this.document=document,this.context=e}set scrollDirection(e){this._scrollDirection=e,this._scrollDirection==="vertical"?this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()}:this._scrollDirection==="horizontal"&&(this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(this.context.data.scroll.current,0)})}onFrame(){}onWheel(e){}onScroll(e){}disableScrollEvents(){}enableScrollEvents(){}triggerScrollRules(){this.scrollTriggerRules.forEach(e=>{(e.direction==="any"||this.isLastBottomScrollDirection&&e.direction==="forward")&&this.context.data.scroll.current>=e.offset?(e.onEnter?.(),e.toggleClass&&e.toggleClass.target.classList.add(e.toggleClass.className)):(e.onLeave?.(),e.toggleClass&&e.toggleClass.target.classList.remove(e.toggleClass.className))})}addScrollMark(e){this.scrollTriggerRules.push(e)}removeScrollMark(e){this.scrollTriggerRules=this.scrollTriggerRules.filter(t=>t.id!==e)}scrollTo(e){}};var vt=class extends H{constructor(t){super(t);this.name="default"}onFrame(){if(this.context.data.scroll.delta!==0){let t=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=t,this.context.data.scroll.lerped=t,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.onScrollStop())}}onScroll(t){let r=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=r,this.context.data.scroll.target=r,this.context.data.scroll.transformedCurrent=r}onWheel(t){if(t.deltaY!==0){this.context.data.scroll.delta===0&&this.onScrollStart();let r=t.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,t.deltaY)),this.context.data.scroll.delta+=r}}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.delta=1}};var yt=class extends H{constructor(t){super(t);this.name="disable";this.preventScroll=t=>{t.preventDefault()};this.preventKeyScroll=t=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(t.key)&&t.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}disableScrollEvents(){window.addEventListener("touchmove",this.onPreventScroll,{passive:!1}),window.addEventListener("keydown",this.onPreventKeyScroll)}enableScrollEvents(){window.removeEventListener("touchmove",this.onPreventScroll),window.removeEventListener("keydown",this.onPreventKeyScroll)}onFrame(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}};var B={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var St=class extends H{constructor(t){super(t);this.name="smooth";this.isScrollbarManipulation=!1;this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.1}updateScrollDirection(t){if(this.isLastBottomScrollDirection=t,this.isBottomScrollDirection===null){this.isBottomScrollDirection=t;return}this.context.data.scroll.isScrollingDown=t,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&(document.documentElement.classList.toggle(B.SCROLLING_FORWARD,t),document.documentElement.classList.toggle(B.SCROLLING_BACKWARD,!t),document.documentElement.classList.toggle(B.SCROLL_FORWARD,t),document.documentElement.classList.toggle(B.SCROLL_BACKWARD,!t))}stopScroll(){this.context.data.scroll.lerped=0,this.context.data.scroll.delta=0,this.context.data.scroll.target=this.context.data.scroll.current,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(B.SCROLLING_BACKWARD,B.SCROLLING_FORWARD),this.isBottomScrollDirection=null}onFrame(){if(this.isScrollbarManipulation){this.isScrollbarManipulation=!1,this.context.data.scroll.current=this.context.data.scroll.elementContainer.scrollTop,this.context.data.scroll.target=this.context.data.scroll.elementContainer.scrollTop,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;return}if(this.context.data.scroll.delta!==0){this.scrollForce=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate,this.context.data.scroll.target=Math.min(Math.max(0,this.context.data.scroll.target+this.scrollForce),this.context.data.scroll.bottomPosition),this.context.data.scroll.delta-=this.scrollForce,this.context.data.scroll.lerped=(this.context.data.scroll.target-this.context.data.scroll.current)*this.context.data.scroll.speed;let t=Math.abs(this.context.data.scroll.lerped);this.context.data.scroll.lerped>0?this.context.data.scroll.current=Math.ceil(this.context.data.scroll.current+this.context.data.scroll.lerped):this.context.data.scroll.current=Math.floor(this.context.data.scroll.current+this.context.data.scroll.lerped),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.updateScrollDirection(this.context.data.scroll.lerped>0),t<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!==this.context.data.scroll.current&&(this.previousCurrent=this.context.data.scroll.current,this.onCalcUpdate()))}}onWheel(t){if(t.deltaY!==0&&t.preventDefault(),this.wheelImpulse=t.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let r=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&r<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&r>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(t){this.isProg||(this.isScrollbarManipulation=!0)}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.delta=1}};var Mt=class{constructor(e){this.context=e;this.modes=new Map;this.modes.set("smooth",new St(e)),this.modes.set("default",new vt(e)),this.modes.set("disable",new yt(e)),this.updateResponsiveMode()}setMobileMode(e){this.context.data.scroll.modeMobile=e,this.updateResponsiveMode()}setDesktopMode(e){this.context.data.scroll.modeDesktop=e,this.updateResponsiveMode()}updateResponsiveMode(){let t=window.innerWidth<1080?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(t)}updatePosition(){this.modes.forEach(e=>{e.onCalcUpdate()})}setMode(e){if(!this.modes.has(e)){console.warn(`[ScrollManager] Unknown scroll mode: ${e}`);return}this.get().enableScrollEvents(),this.context.data.scroll.mode=e,this.get().disableScrollEvents()}get(){return this.modes.get(this.context.data.scroll.mode)}getEngines(){return this.modes}onFrame(){this.get().onFrame()}onScroll(e){this.get().onScroll(e)}onWheel(e){this.get().onWheel(e)}bindEvents(e){this.modes.forEach(t=>{t.onScrollStart=e.onScrollStart,t.onScrollStop=e.onScrollStop,t.onChangeDirection=e.onDirectionChange})}addScrollMark(e){this.modes.forEach(t=>{t.addScrollMark(e)})}removeScrollMark(e){this.modes.forEach(t=>{t.removeScrollMark(e)})}};var xt=class{constructor(){this.targetX=0;this.targetY=0;this.smoothedX=0;this.smoothedY=0;this.stepX=0;this.stepY=0;this.velocityX=0;this.velocityY=0}};var Et=class{constructor(){this.threeInstance=null}};var wt=class{constructor(){this.target=0;this.current=0;this.transformedCurrent=0;this.delta=0;this.lerped=0;this.displacement=0;this.isScrollingDown=!1;this.topPosition=0;this.bottomPosition=0;this.direction="vertical";this.elementContainer=document.documentElement;this.scrollContainer=window;this.container=document.body;this.mode="smooth";this.modeMobile="smooth";this.modeDesktop="smooth";this.speed=.1;this.speedAccelerate=.25}};var Ct=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1}};var Pt=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var Tt=class{constructor(){this.windowWidth=0;this.windowHeight=0;this.contentWidth=0;this.contentHeight=0;this.scaleWidth=1;this.scaleHeight=1;this.transformScale=1;this.baseRem=16}};var Lt=class{constructor(){this.scroll=new wt;this.viewport=new Tt;this.cursor=new xt;this.render=new Et;this.time=new Pt;this.system=new Ct}};var Ot=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var M=class{constructor(e){this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new Ot;this.tools=e.tools,this.data=e.data,this.settings=e.settings,this.events=e.events,this.centers=e.centers,this.hover=e.hover,this.attributesToMap=[{key:"active",type:"boolean",fallback:this.settings.active},{key:"fixed",type:"boolean",fallback:this.settings.fixed},{key:"outside-container",type:"boolean",fallback:this.settings["outside-container"]},{key:"repeat",type:"boolean",fallback:this.settings.repeat},{key:"self-disable",type:"boolean",fallback:this.settings["self-disable"]},{key:"abs",type:"boolean",fallback:this.settings.abs},{key:"key",type:"string",fallback:this.settings.key},{key:"offset-top",type:"dimension",fallback:this.settings["offset-top"]},{key:"offset-bottom",type:"dimension",fallback:this.settings["offset-bottom"]},{key:"inview-top",type:"dimension",fallback:this.settings["inview-top"]},{key:"inview-bottom",type:"dimension",fallback:this.settings["inview-bottom"]},{key:"start",type:"number",fallback:(t,r,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.container.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(t,r,i)=>{let n=i.top,o=i.height;return n+o-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(t,r,i)=>i.height},{key:"half-width",type:"number",fallback:(t,r,i)=>i.width/2},{key:"half-height",type:"number",fallback:(t,r,i)=>i.height/2},{key:"enter-el",type:"string",fallback:this.settings["enter-el"]},{key:"enter-vp",type:"string",fallback:this.settings["enter-vp"]},{key:"exit-el",type:"string",fallback:this.settings["exit-el"]},{key:"exit-vp",type:"string",fallback:this.settings["exit-vp"]}]}get type(){return this._type}initializeObject(e,t,r,i){let n=this.tools.boundingClientRect.process({element:r});for(let{key:o,type:s,fallback:a,transform:l}of this.attributesToMap){let u=typeof a=="function"?a(r,t,n):a,d=this.tools.domAttribute.process({element:r,key:o,fallback:i[o]??this.settings[o]??u}),p=this.parseAttribute(d,s,{element:r,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(p=l(p)),t.setProperty(o,p)}}calculatePositions(e,t){let r=e.getProperty("start"),i=e.getProperty("size"),n=e.getProperty("offset-bottom"),o=e.getProperty("offset-top"),s=e.getProperty("enter-el"),a=e.getProperty("enter-vp"),l=e.getProperty("exit-el"),u=e.getProperty("exit-vp"),d=0,p=0,m=0,g=0;s==="top"&&a==="top"||s==="left"&&a==="left"?(m=-t+1,d=r-n):s==="top"&&a==="bottom"||s==="left"&&a==="right"?d=r-t-n:s==="bottom"&&a==="top"||s==="right"&&a==="left"?(m=-t-i+1,d=r+i-n):(s==="bottom"&&a==="bottom"||s==="right"&&a==="right")&&(m=-i+1,d=r-t+i-n),l==="top"&&u==="top"||l==="left"&&u==="left"?(g=-i+1,p=r+o):l==="top"&&u==="bottom"||l==="left"&&u==="right"?(g=-t-i+1,p=r-t+o):l==="bottom"&&u==="top"||l==="right"&&u==="left"?p=r+i+o:(l==="bottom"&&u==="bottom"||l==="right"&&u==="right")&&(g=-t+1,p=r-t+i+o),e.setProperty("start-bias",m),e.setProperty("end-bias",g),e.setProperty("start-position",d-this.data.scroll.topPosition),e.setProperty("end-position",p-this.data.scroll.topPosition),e.setProperty("difference-position",p-d);let h=e.getProperty("inview-top")??0,S=e.getProperty("inview-bottom")??0;e.setProperty("inview-start-position",e.getProperty("start-position")+h),e.setProperty("inview-end-position",e.getProperty("end-position")+S)}parseAttribute(e,t,r={}){if(e==null)return null;if(typeof t=="object"&&t.type==="enum")return t.values.includes(e)?e:t.values[0];switch(t){case"number":return parseFloat(e);case"boolean":return e===""||e==="true";case"json":try{return JSON.parse(e)}catch{return null}case"tuple":return e.trim().split(/\s+/);case"easing":return this.tools.easingFunction.process({easing:e});case"color":return this.tools.colorParser.process({value:e});case"dimension":return e=="0"?0:r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null?this.tools.unitParser.process({value:e,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem}):0;case"breakpoint-dimension":if(r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null){let i=e.trim().split("|"),n=[];for(let o of i)if(o.includes(":")){let[s,a]=o.split(":");n.push({breakpoint:parseInt(s),value:this.tools.unitParser.process({value:`${a}|`,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:o,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})});return n}default:return e}}canConnect(e){return e.keys.includes(this.htmlKey)}connectObject(e){e.connect(this),this.onObjectConnected(e)}enterObject(e,t){this.objectMap.has(e)||(this.objectMap.set(e,t),this.objects.push(t))}exitObject(e){let t=this.objectMap.get(e);if(!t)return;this.objectMap.delete(e);let r=this.objects.indexOf(t);r!==-1&&this.objects.splice(r,1)}addObject(e,t){this.objectMapOnPage.has(e)||(this.objectMapOnPage.set(e,t),this.objectsOnPage.push(t))}removeObject(e){let t=this.objectMapOnPage.get(e);if(!t)return;this.objectMapOnPage.delete(e);let r=this.objectsOnPage.indexOf(t);r!==-1&&this.objectsOnPage.splice(r,1),this.onObjectDisconnected(t)}onObjectConnected(e){}onObjectDisconnected(e){}applyToElementAndConnects(e,t,r=t){e.getProperty("self-disable")!==!0&&t(e.htmlElement),e.mirrorObjects.forEach(i=>r(i.htmlElement,i))}destroy(){this.objects=[],this.objectMap=new Map}onInit(){}onFrame(e){}onMutate(e){}onScrollMeasure(e){}onMouseMoveMeasure(e){}onResize(){}onResizeWidth(){}onScroll(e){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){}onSettingsChange(){}onDOMRebuild(){}onMouseMove(e){}onWheel(e){}onDOMMutate(e,t){}};var K=class{process({element:e}){return e.getBoundingClientRect()}};var Q=class{process({element:e,key:t,fallback:r=null}){return e.getAttribute(`string-${t}`)??e.getAttribute(`data-string-${t}`)??r}};var G=class{process({record:e,name:t,fallback:r=null}){return e[t]??e[`data-${t}`]??r}};var z=class{process({element:e}){let t=e.getBoundingClientRect(),i=getComputedStyle(e).transform.match(/-?[\d.]+/g)?.map(parseFloat)??[];if(i.length===6){let[n,o,s,a,l,u]=i,d=n*a-o*s;return{width:t.width/(n||1),height:t.height/(a||1),left:(t.left*a-t.top*s+s*u-l*a)/d,top:(-t.left*o+t.top*n+l*o-n*u)/d}}return t}};var Z=class{constructor(e=new z){this.transformTool=e}process({element:e,container:t=document.body}){let r;try{r=t.getBoundingClientRect()}catch{r=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:e});return{top:i.top-r.top,left:i.left-r.left}}};var J=class{process({from:e,to:t,progress:r}){return(t-e)*r}};var tt=class{process({value:e,element:t,viewportHeight:r,baseRem:i,boundingRect:n}){let o=e.split("|").map(a=>a.trim()).filter(Boolean),s=0;for(let a of o){let l=a,u=!1;l.startsWith("-")&&(u=!0,l=l.slice(1));let d=0;l==="selfHeight"?d=t.offsetHeight:l.endsWith("px")?d=parseFloat(l):l.endsWith("%")?d=parseFloat(l)/100*r:l.endsWith("rem")?d=parseFloat(l)*i:l.endsWith("sh")?d=parseFloat(l)*n.height/100:d=parseFloat(l),s+=u?-d:d}return s}};var et=class{process({value:e,inMin:t=.1,inMax:r=1,outMin:i=.05,outMax:n=.65}){if(e<t)return n;if(e>1&&(e=1),e<=r){let o=(e-t)/(r-t);return n-o*(n-i)}return i}};var rt=class{process({value:e}){let t=e.trim();if(t.startsWith("random(")&&t.endsWith(")")){let r=t.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*r.length);return r[i]}return t}};var it=class{process({value:e}){let t=e.trim().toLowerCase();if(t.startsWith("#")){let n=t.slice(1);n.length===3&&(n=n.split("").map(u=>u+u).join(""));let o=parseInt(n.slice(0,2),16),s=parseInt(n.slice(2,4),16),a=parseInt(n.slice(4,6),16),l=n.length===8?parseInt(n.slice(6,8),16)/255:1;return{r:o,g:s,b:a,a:l}}let r=t.match(/rgba?\(([^)]+)\)/);if(r){let[n,o,s,a=1]=r[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:o,b:s,a}}let i=t.match(/hsla?\(([^)]+)\)/);if(i){let[n,o,s,a="1"]=i[1].split(",").map(p=>p.trim()),[l,u,d]=this.hslToRgb(parseFloat(n),parseFloat(o),parseFloat(s));return{r:l,g:u,b:d,a:parseFloat(a)}}return{r:0,g:0,b:0,a:0}}hslToRgb(e,t,r){e=e/360,t=parseFloat(t.toString())/100,r=parseFloat(r.toString())/100;let i=(u,d,p)=>(p<0&&(p+=1),p>1&&(p-=1),p<1/6?u+(d-u)*6*p:p<1/2?d:p<2/3?u+(d-u)*(2/3-p)*6:u),n=r<.5?r*(1+t):r+t-r*t,o=2*r-n,s=Math.round(i(o,n,e+1/3)*255),a=Math.round(i(o,n,e)*255),l=Math.round(i(o,n,e-1/3)*255);return[s,a,l]}};var nt=class{constructor(){this.namedCurves={linear:[0,0,1,1],ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]}}process({easing:e}){let t=e.trim();if(this.namedCurves[t])return this.cubicBezier(...this.namedCurves[t]);let r=t.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(r){let[i,n,o,s]=r.slice(1).map(Number);return this.cubicBezier(i,n,o,s)}return i=>i}cubicBezier(e,t,r,i){let n=3*e,o=3*(r-e)-n,s=1-n-o,a=3*t,l=3*(i-t)-a,u=1-a-l;function d(h){return((s*h+o)*h+n)*h}function p(h){return((u*h+l)*h+a)*h}function m(h){return(3*s*h+2*o)*h+n}function g(h,S=1e-5){let b,f,y=h,v,E,w;for(w=0;w<8;w++){if(v=d(y)-h,Math.abs(v)<S)return y;if(E=m(y),Math.abs(E)<1e-6)break;y=y-v/E}for(b=0,f=1,y=h;b<f;){if(v=d(y)-h,Math.abs(v)<S)return y;v>0?f=y:b=y,y=(f+b)/2}return y}return function(h){return p(g(h))}}};var st=class{process({distance:e,radius:t,strength:r}){if(e>=t)return 0;let i=(t-e)/t;return r*i}};var ot=class{process({from:e,to:t,progress:r}){return{r:e.r+(t.r-e.r)*r,g:e.g+(t.g-e.g)*r,b:e.b+(t.b-e.b)*r,a:e.a+(t.a-e.a)*r}}};var at=class{process({from:e,to:t,progress:r}){return{x:(t.x-e.x)*r,y:(t.y-e.y)*r}}};var lt=class{process({value:e}){let r=e?.trim();if(!r||r==="none")return 1;try{if(r.startsWith("matrix(")){let i=r.match(/matrix\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scale(")){let i=r.match(/scale\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scaleX(")){let i=r.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(r.startsWith("scale3d(")){let i=r.match(/scale3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("matrix3d(")){let i=r.match(/matrix3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}}catch(i){return console.error(`Error parsing transform string "${r}":`,i),1}return 1}};var kt=class{process({attributeValue:e}){let t={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return e&&e.split("|").forEach(i=>{let n=i.trim();if(!n)return;let o=n.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(o){let s=o[1]||"",a=o[2],l=s+a,d=(o[4]||"").split(";").map(m=>m.trim()).filter(m=>m.length>0),p=this.parseParamsArray(d);switch(l){case"line":t.line.push(p);break;case"word":t.word.push(p);break;case"char":t.char.push(p);break;case"charLine":t.charLine.push(p);break;case"charWord":t.charWord.push(p);break;case"wordLine":t.wordLine.push(p);break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),t}parseParamsArray(e){let t={align:"start"};return e.forEach(r=>{if(r==="abs")t.abs=!0;else if(r.startsWith("random")){t.align="random";let i=r.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(t.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(r)&&(t.align=r)}),t}};var ct=class{process({value:e}){let t=[],r="",i=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("&&i++,o===")"&&i--,o==="|"&&i===0?(r.trim()&&t.push(r.trim()),r=""):r+=o}return r.trim()&&t.push(r.trim()),t.map(n=>{let o=n.match(/^(\w+)(?:\((.*)\))?$/);if(o){let[,a,l]=o;return l?{key:a,params:l.split(",").map(u=>u.trim())}:{key:a}}let s=n.indexOf(":");if(s!==-1){let a=n.slice(0,s).trim(),l=n.slice(s+1).trim(),u=l?l.split(",").map(d=>d.trim()):void 0;return{key:a,params:u}}return{key:n}})}};var It=class{constructor(){this.inputValidators={required:e=>e!=null&&String(e).trim()!=="",min:(e,t)=>typeof e=="string"&&e.length>=Number(t?.[0]??0),max:(e,t)=>typeof e=="string"&&e.length<=Number(t?.[0]??Number.MAX_SAFE_INTEGER),checked:e=>{if(Array.isArray(e))return e.length>0;if(e===!0||e==="true"||e===1||e==="1")return!0;if(typeof e=="string"){let t=e.trim().toLowerCase();return t==="false"||t==="0"?!1:t.length>0}return!!e},email:e=>typeof e=="string"&&/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e),phone:e=>typeof e=="string"&&/^(\+?\d{1,3}[-.\s]?)?(\(?\d{1,4}\)?[-.\s]?)?[\d\-.\s]{5,15}$/.test(e),number:e=>typeof e=="string"&&/^-?\d+(\.\d+)?$/.test(e),integer:e=>typeof e=="string"&&/^-?\d+$/.test(e),url:e=>typeof e=="string"&&/^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:\/?#[\]@!$&'()*+,;=]*)?$/.test(e),regex:(e,t)=>this.testByRegex(e,t?.[0]),alpha:e=>this.testByRegex(e,"^[A-Za-z]+$",!0),alpha_num:e=>this.testByRegex(e,"^[A-Za-z0-9]+$",!0),alpha_dash:e=>this.testByRegex(e,"^[A-Za-z0-9_-]+$",!0),same:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:this.areValuesEqual(e,n)},different:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:!this.areValuesEqual(e,n)},range:(e,t)=>{if(e==null||e==="")return!0;let r=Number(e),i=Number(t?.[0]),n=Number(t?.[1]);return Number.isNaN(r)||Number.isNaN(i)||Number.isNaN(n)?!1:r>=i&&r<=n},digits:(e,t)=>{if(typeof e!="string")return!1;let r=Number(t?.[0]??0);return r<=0?!1:new RegExp(`^\\d{${r}}$`).test(e)},ip:e=>typeof e=="string"&&(this.isIPv4(e)||this.isIPv6(e)),mimes:(e,t)=>this.validateMimes(e,t),max_size:(e,t)=>{let r=Number(t?.[0]);return!r||r<=0?!0:this.validateMaxSize(e,r)},after:(e,t,r)=>this.compareDates(e,t,r,"after"),before:(e,t,r)=>this.compareDates(e,t,r,"before")};this.beforeInputValidators={number:e=>/^-?\d*\.?\d*$/.test(e),integer:e=>/^-?\d*$/.test(e),email:e=>/^[\w@.\-+]*$/.test(e),phone:e=>/^(\+)?[\d\-() ]*$/.test(e)&&(e.match(/\+/g)?.length??0)<=1&&(!e.includes("+")||e.indexOf("+")===0),letters:e=>/^[a-zA-Z]*$/.test(e),lettersSpaces:e=>/^[a-zA-Z\s]*$/.test(e),lettersNumbers:e=>/^[a-zA-Z0-9]*$/.test(e),alpha:e=>/^[A-Za-z]*$/.test(e),alpha_num:e=>/^[A-Za-z0-9]*$/.test(e),alpha_dash:e=>/^[A-Za-z0-9_-]*$/.test(e),digits:(e,t)=>{let r=Number(t?.[0]??0);return r<=0?/^\d*$/.test(e):new RegExp(`^\\d{0,${r}}$`).test(e)},url:e=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(e),pattern:(e,t)=>{try{return new RegExp(t?.[0]||"").test(e)}catch{return!0}}}}process({rules:e,value:t,type:r="input",context:i}){let n=[];for(let u of e){var o=null,s=null,a=!0,l=!0;r=="input"&&(s=this.inputValidators[u.key],!s)||r=="beforeinput"&&(o=this.beforeInputValidators[u.key],!o)||(s&&(a=s(t,u.params,i)),o&&(l=o(t,u.params,i)),l||n.push(this.getErrorMessage(u.key,u.params)),a||n.push(this.getErrorMessage(u.key,u.params)))}return{valid:n.length===0,errors:n}}getErrorMessage(e,t){switch(e){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${t?.[0]} characters`;case"max":return`Maximum ${t?.[0]} characters`;case"phone":return"Invalid phone number";case"number":return"Only numbers are allowed";case"integer":return"Only whole numbers are allowed";case"url":return"Invalid URL address";case"checked":return"You must accept";case"regex":return"Value does not match the required pattern";case"alpha":return"Only letters are allowed";case"alpha_num":return"Only letters and numbers are allowed";case"alpha_dash":return"Only letters, numbers, dashes, and underscores are allowed";case"same":return"Values do not match";case"different":return"Values must be different";case"range":return`Value must be between ${t?.[0]} and ${t?.[1]}`;case"digits":return`Value must contain exactly ${t?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${t?.join(", ")}`;case"max_size":return`File must be smaller than ${t?.[0]} KB`;case"after":return`Date must be after ${t?.[0]}`;case"before":return`Date must be before ${t?.[0]}`;default:return"Invalid value"}}validateMimes(e,t){if(!t||t.length===0)return!0;let r=this.extractFiles(e);if(r.length===0)return!0;let i=t.map(n=>n.trim().toLowerCase());return r.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(e,t){let r=this.extractFiles(e);if(r.length===0)return!0;let i=t*1024;return r.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(e){if(!e)return[];let t=[];return typeof File<"u"&&e instanceof File?(t.push(e),t):typeof FileList<"u"&&e instanceof FileList?Array.from(e):Array.isArray(e)?(e.forEach(r=>{t.push(...this.extractFiles(r))}),t):typeof e=="object"&&("name"in e||"size"in e||"type"in e)?(t.push(e),t):(typeof e=="string"&&e!==""&&t.push({name:e}),t)}isMimeAllowed(e,t){let r=(e.type||"").toLowerCase(),i=this.getFileExtension(e.name);return t.some(n=>{let o=n.replace(/^\./,"").toLowerCase();return o?o.includes("/")?r===o:i===o:!1})}getFileExtension(e){if(!e)return"";let t=e.split(".");return t.length<=1?"":(t.pop()||"").toLowerCase()}compareDates(e,t,r,i){if(e==null||e==="")return!0;let n=t?.[0];if(!n)return!0;let o=this.toDate(e),s=this.resolveDateReference(n,r);return!o||!s?!1:i==="after"?o.getTime()>s.getTime():o.getTime()<s.getTime()}resolveDateReference(e,t){let r=this.getContextValue(t,e);if(r!==void 0)return this.toDate(r);if(e.toLowerCase()==="now")return new Date;if(e.toLowerCase()==="today"){let i=new Date;return i.setHours(0,0,0,0),i}return this.toDate(e)}toDate(e){if(e==null||e==="")return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e=="string"){let t=Date.parse(e);if(!Number.isNaN(t))return new Date(t)}return null}testByRegex(e,t,r=!1){if(t==null||t==="")return!0;let i=typeof e=="string"?e:e==null?"":String(e);if(r&&i==="")return!0;try{let{source:n,flags:o}=this.normalizeRegex(t);return new RegExp(n,o).test(i)}catch{return!0}}normalizeRegex(e){let t=e.trim();if(t.startsWith("/")&&t.lastIndexOf("/")>0){let r=t.lastIndexOf("/"),i=t.slice(1,r),n=t.slice(r+1);return{source:i,flags:n}}return{source:t,flags:""}}getContextValue(e,t){if(!(!e||!t)){if(e.values&&Object.prototype.hasOwnProperty.call(e.values,t))return e.values[t];if(e.getValue)return e.getValue(t)}}areValuesEqual(e,t){return Array.isArray(e)||Array.isArray(t)?JSON.stringify(e)===JSON.stringify(t):e===t}isIPv4(e){let t=e.split(".");return t.length!==4?!1:t.every(r=>{if(!/^\d+$/.test(r))return!1;let i=Number(r);return i>=0&&i<=255})}isIPv6(e){if(!e)return!1;if(e==="::")return!0;let t=e.split("::");if(t.length>2)return!1;let r=/^[0-9a-fA-F]{1,4}$/,i=e.split(":");return t.length===2?i.every(n=>n===""||r.test(n))&&i.length<=8:i.length===8&&i.every(n=>r.test(n))}};var Rt=class{constructor(){this.domAttribute=new Q;this.recordAttribute=new G;this.transformNullify=new z;this.boundingClientRect=new K;this.relativePosition=new Z(this.transformNullify);this.unitParser=new tt;this.lerp=new J;this.adaptiveLerp=new et;this.originParser=new rt;this.colorParser=new it;this.validation=new It;this.easingFunction=new nt;this.magneticPull=new st;this.lerpColor=new ot;this.lerpVector=new at;this.transformScaleParser=new lt;this.optionsParser=new kt;this.ruleParser=new ct}};function Dt(){let c=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,e=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,t=typeof window<"u"?window.innerWidth<=768:!1;return c||e||t}var _t=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}begin(){this.isOpen||(this.isOpen=!0)}setVars(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let r=this.pendingVars.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingVars.set(e,r)}setProps(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let r=this.pendingProps.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingProps.set(e,r)}run(e){let t=this.isOpen;t||this.begin();try{e(),t||this.commit()}catch(r){throw t||this.cancel(),r}}commit(){if(this.isOpen){this.isOpen=!1;for(let[e,t]of this.pendingVars){let r=e.style;for(let[i,n]of Object.entries(t))r.setProperty(i,String(n))}this.pendingVars.clear();for(let[e,t]of this.pendingProps){let r=e.style;for(let[i,n]of Object.entries(t))r[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},T=new _t;var ye=new WeakMap,k=5e-4,Y="default",Ut="[string-cursor],[data-string-cursor]",Se="[string-cursor-content],[data-string-cursor-content]",Yt=1/240;function Ve(c){let e=ye.get(c);return e||(e={prevX:Number.NaN,prevY:Number.NaN},ye.set(c,e)),e}var Xt=class extends M{constructor(t){super(t);this.cursorPrev={x:Number.NaN,y:Number.NaN,stepX:Number.NaN,stepY:Number.NaN};this.cursorPortals=new Map;this.hoveredObjects=new Set;this.globalListenersBound=!1;this.boundBeforeUnload=()=>this.cleanupHoverTargets();this.boundPageHide=()=>this.cleanupHoverTargets();this.boundVisibilityChange=()=>{document.hidden&&this.cleanupHoverTargets()};this.enabled=!0;this.lastFrameTime=0;this.htmlKey="cursor",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"target-disable",type:"boolean",fallback:this.settings["target-disable"]},{key:"target-style-disable",type:"boolean",fallback:this.settings["target-style-disable"]},{key:"cursor-target",type:"string",fallback:this.settings["cursor-target"]??Y},{key:"target-class",type:"string",fallback:this.settings["target-class"]},{key:"cursor-class",type:"string",fallback:this.settings["cursor-class"]},{key:"alignment",type:{type:"enum",values:["start","center","end"]},fallback:this.settings.alignment},{key:"lerp",type:"number",fallback:this.settings.lerp,transform:r=>this.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})}],Dt()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n),r.setProperty("mouse-x",0),r.setProperty("mouse-y",0),r.setProperty("mouse-pixel-x",0),r.setProperty("mouse-pixel-y",0),r.setProperty("is-mouse-over",!1),r.setProperty("is-mouse-move",!1)}onMutate(t){if(!this.enabled)return;let r=performance.now(),i=this.lastFrameTime?(r-this.lastFrameTime)/1e3:.016;this.lastFrameTime=r,i>.1&&(i=.1),i<Yt&&(i=Yt);let n=this.data.cursor.targetX,o=this.data.cursor.targetY;if(this.objects.forEach(s=>{let a=s.getProperty("is-mouse-over"),l=s.getProperty("cursor-target-disable"),u=s.getProperty("lerp")??.15,d=this.getFrameAdjustedLerp(u,i),p=this.getObjectDimensions(s),{halfWidth:m,halfHeight:g,width:h,height:S}=p;if(a&&!l){let{cx:b,cy:f}=this.centers.getCenter(s),y=n-(b-m),v=o-(f-g),E=s.getProperty("mouse-pixel-x")??0,w=s.getProperty("mouse-pixel-y")??0,x=E-y,P=w-v;if(x*x+P*P>1e-4){(s.getProperty("is-mouse-move")??!1)||(s.setProperty("is-mouse-move",!0),s.setProperty("mouse-pixel-x",y),s.setProperty("mouse-pixel-y",v),s.setProperty("mouse-x",y),s.setProperty("mouse-y",v),E=y,w=v,this.events.emit(`cursor:start:${s.id}`,null));let L=this.tools.lerp.process({from:E,to:y,progress:d}),A=this.tools.lerp.process({from:w,to:v,progress:d}),O=E+L,j=w+A,_=Math.abs(O-E)>k||Math.abs(j-w)>k;s.setProperty("mouse-pixel-x",O),s.setProperty("mouse-pixel-y",j);let V=s.getProperty("alignment")??"center",F=this.calculateOffset(V,O,h),W=this.calculateOffset(V,j,S);s.setProperty("mouse-x",F),s.setProperty("mouse-y",W),this.setMouseCoordinates(s,F,W)&&this.events.emit(`cursor:move:${s.id}`,{x:F,y:W}),_&&this.events.emit(`cursor:pixel:${s.id}`,{x:O,y:j})}else s.setProperty("mouse-pixel-x",y),s.setProperty("mouse-pixel-y",v),s.getProperty("is-mouse-move")&&(s.setProperty("is-mouse-move",!1),this.events.emit(`cursor:end:${s.id}`,null)),this.setMouseCoordinates(s,0,0)}else{let b=s.getProperty("mouse-x")??0,f=s.getProperty("mouse-y")??0;if(b!==0||f!==0){s.setProperty("is-mouse-move",!1);let y=this.calculateOffset("center",m,h),v=this.calculateOffset("center",g,S),E=b+this.tools.lerp.process({from:b,to:y,progress:d}),w=f+this.tools.lerp.process({from:f,to:v,progress:d});s.setProperty("mouse-x",E),s.setProperty("mouse-y",w),Math.abs(E)<.001&&Math.abs(w)<.001?(s.setProperty("mouse-x",0),s.setProperty("mouse-y",0),s.setProperty("mouse-pixel-x",0),s.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(s,0,0)):this.setMouseCoordinates(s,E,w)}}}),this.cursorPortals.size>0){let{stepX:s,stepY:a,smoothedX:l,smoothedY:u}=this.data.cursor,d=this.cursorPrev;(!Number.isFinite(d.x)||Math.abs(l-d.x)>k||Math.abs(u-d.y)>k||Math.abs(s-d.stepX)>k||Math.abs(a-d.stepY)>k)&&(this.events.emit("cursor",{stepX:s,stepY:a,x:l,y:u}),this.cursorPrev={x:l,y:u,stepX:s,stepY:a});let m=this.data.cursor.targetX,g=this.data.cursor.targetY;this.cursorPortals.forEach(h=>{h.forEach(S=>{this.updatePortalPosition(S,m,g,i)})})}}onObjectConnected(t){let r=t.htmlElement;this.centers.attach(t),t.setProperty("mouseleave",()=>{this.onMouseLeave(t)}),t.setProperty("mouseenter",()=>{this.onMouseEnter(t)}),t.setProperty("onEnterEvent",this.onEnterObject.bind(this)),t.events.on("enter",t.getProperty("onEnterEvent")),t.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),t.events.on("leave",t.getProperty("onLeaveEvent"))}getCursorClass(t){let r=t.getProperty("cursor-class");return r!=null&&r.length>0?r:null}onMouseEnter(t){if(!document.contains(t.htmlElement))return;t.setProperty("is-mouse-over",!0),this.hoveredObjects.add(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.add(r),this.incrementPortalHover(i)}),t.htmlElement.addEventListener("mouseleave",t.getProperty("mouseleave"))}onMouseLeave(t){t.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.remove(r),this.decrementPortalHover(i)}),document.contains(t.htmlElement)&&t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}onEnterObject(t){t.htmlElement.addEventListener("mouseenter",t.getProperty("mouseenter"))}onLeaveObject(t){t.htmlElement.removeEventListener("mouseenter",t.getProperty("mouseenter")),t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}safariNavigationCleanup(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onElementRemovedFromDOM(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onObjectDisconnected(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(t,r){this.enabled&&((this.shouldRefreshPortals(t)||this.shouldRefreshPortals(r))&&this.collectCursorPortals(),r.length>0&&this.handleRemovedNodes(r))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(Ut).forEach(r=>{if(!(r instanceof HTMLElement))return;let i=this.resolvePortalId(r),n=this.resolvePortalLerp(r),o=r.matches(Se)?r:r.querySelector(Se),s=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:r,content:o,prev:{x:s,y:a,stepX:0,stepY:0},hoverCount:0,showTimer:null,lerp:n},u=this.cursorPortals.get(i);u?u.push(l):this.cursorPortals.set(i,[l])})}resolvePortalId(t){let r=[t.getAttribute("data-string-cursor"),t.getAttribute("string-cursor"),t.getAttribute("data-string-cursor-id"),t.getAttribute("string-cursor-id")];for(let i of r)if(i&&i.trim().length>0)return i.trim();return Y}resolvePortalLerp(t){let r=t.getAttribute("data-string-cursor-lerp")??t.getAttribute("string-cursor-lerp");if(!r)return null;let i=parseFloat(r);if(!Number.isFinite(i))return null;let n=Math.min(1,Math.max(.01,i));return this.tools.adaptiveLerp.process({value:n,inMin:.1,inMax:1,outMin:.05,outMax:.65})}shouldRefreshPortals(t){for(let r of t)if(r instanceof Element&&(r.matches(Ut)||r.querySelector(Ut)))return!0;return!1}withPortalsForObject(t,r){this.getPortalsForObject(t).forEach(n=>r(n))}getPortalsForObject(t){if(this.cursorPortals.size===0)return[];let r=this.extractPortalIds(t),i=[];if(r.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let o=n.length>0?n:Y,s=this.cursorPortals.get(o);s&&s.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(Y)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(o=>i.push(o))}return i}extractPortalIds(t){if(!t)return[Y];let r=t.getProperty("cursor-target");return typeof r!="string"||r.trim().length===0?[Y]:r.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(t){t.hoverCount++,t.element.classList.add("-showing"),t.element.classList.remove("-show"),this.restartPortalShowTimer(t)}decrementPortalHover(t){t.hoverCount=Math.max(0,t.hoverCount-1),t.hoverCount===0&&(this.clearPortalShowTimer(t),t.element.classList.remove("-showing"),t.element.classList.remove("-show"))}restartPortalShowTimer(t){this.clearPortalShowTimer(t),t.showTimer=setTimeout(()=>{if(!t.element.isConnected){t.showTimer=null;return}t.element.classList.remove("-showing"),t.element.classList.add("-show"),t.showTimer=null},1200)}clearPortalShowTimer(t){t.showTimer&&(clearTimeout(t.showTimer),t.showTimer=null)}updatePortalPosition(t,r,i,n){if(!t.element.isConnected)return;let o=t.prev,s=Number.isFinite(o.x)?o.x:r,a=Number.isFinite(o.y)?o.y:i,l=t.lerp??.1,u=this.getFrameAdjustedLerp(l,n),d=(r-s)*u,p=(i-a)*u,m=n>1e-4?n:1/60,g=d/(m*60),h=p/(m*60);if(Math.abs(d)<k&&Math.abs(p)<k)return;let S=s+d,b=a+p;t.element.style.setProperty("--x",S.toFixed(2)),t.element.style.setProperty("--y",b.toFixed(2)),t.element.style.setProperty("--x-lerp",g.toFixed(3)),t.element.style.setProperty("--y-lerp",h.toFixed(3)),o.x=S,o.y=b,o.stepX=d,o.stepY=p}handleRemovedNodes(t){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(r=>{r.htmlElement.isConnected||this.onElementRemovedFromDOM(r)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>this.safariNavigationCleanup(t))}bindGlobalLifecycleListeners(){this.globalListenersBound||(window.addEventListener("beforeunload",this.boundBeforeUnload),window.addEventListener("pagehide",this.boundPageHide),document.addEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!0)}unbindGlobalLifecycleListeners(){this.globalListenersBound&&(window.removeEventListener("beforeunload",this.boundBeforeUnload),window.removeEventListener("pagehide",this.boundPageHide),document.removeEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!1)}setMouseCoordinates(t,r,i){if(t.getProperty("cursor-target-style-disable"))return!1;let n=Ve(t),o=Math.abs(r)<k&&Number.isFinite(n.prevX)?n.prevX:Math.round(r*100)/100,s=Math.abs(i)<k&&Number.isFinite(n.prevY)?n.prevY:Math.round(i*100)/100;if(Number.isFinite(n.prevX)&&Math.abs(o-n.prevX)<=k&&Number.isFinite(n.prevY)&&Math.abs(s-n.prevY)<=k)return!1;n.prevX=o,n.prevY=s;let a=o.toFixed(2),l=s.toFixed(2);return this.applyToElementAndConnects(t,u=>{T.setVars(u,{"--x":a,"--y":l})}),!0}getFrameAdjustedLerp(t,r){let i=Math.min(.99,Math.max(.001,t));if(!Number.isFinite(r)||r<=0)return i;let o=Math.max(r,Yt)*60,s=1-Math.pow(1-i,o);return Math.min(.999,Math.max(1e-4,s))}getObjectDimensions(t){let r=t.htmlElement,i=r.offsetWidth||r.clientWidth||r.scrollWidth||1,n=r.offsetHeight||r.clientHeight||r.scrollHeight||1,o=t.getProperty("half-width"),s=t.getProperty("half-height"),a=typeof o=="number"&&Number.isFinite(o)?o:i/2,l=typeof s=="number"&&Number.isFinite(s)?s:n/2,u=a>0?a*2:i,d=l>0?l*2:n;return{width:u,height:d,halfWidth:a,halfHeight:l}}calculateOffset(t,r,i){switch(t){case"start":return r/i;case"end":return(r-i)/i;case"center":default:return(r-i/2)/(i/2)}}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&this.centers.detach(r),super.removeObject(t)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var qt=class extends M{constructor(e){super(e),this.htmlKey="impulse",this.attributesToMap.push({key:"position-strength",type:"number",fallback:this.settings["position-strength"]},{key:"position-tension",type:"number",fallback:this.settings["position-tension"]},{key:"position-friction",type:"number",fallback:this.settings["position-friction"]},{key:"position-max-velocity",type:"number",fallback:this.settings["position-max-velocity"]},{key:"position-update-threshold",type:"number",fallback:this.settings["position-update-threshold"]},{key:"rotation-strength",type:"number",fallback:this.settings["rotation-strength"]},{key:"rotation-tension",type:"number",fallback:this.settings["rotation-tension"]},{key:"rotation-friction",type:"number",fallback:this.settings["rotation-friction"]},{key:"rotation-max-angular-velocity",type:"number",fallback:this.settings["rotation-max-angular-velocity"]},{key:"rotation-max-angle",type:"number",fallback:this.settings["rotation-max-angle"]},{key:"rotation-update-threshold",type:"number",fallback:this.settings["rotation-update-threshold"]},{key:"max-offset",type:"number",fallback:this.settings["max-offset"]},{key:"sleep-epsilon",type:"number",fallback:this.settings["sleep-epsilon"]},{key:"continuous-push",type:"boolean",fallback:this.settings["continuous-push"]})}onObjectConnected(e){super.onObjectConnected(e),e.setProperty("offset-x",0),e.setProperty("offset-y",0),e.setProperty("velocity-x",0),e.setProperty("velocity-y",0),e.setProperty("angle-deg",0),e.setProperty("ang-vel-deg",0),e.setProperty("__prev-css-x",0),e.setProperty("__prev-css-y",0),e.setProperty("__prev-css-rot",0),e.setProperty("__push-latch",!1),e.setProperty("__rotate-latch",!1),this.hover.track(e),this.centers.attach(e)}onObjectDisconnected(e){this.hover.untrack(e),this.centers.detach(e)}onMouseMove(e){if(!e)return;let t=this.data.cursor.velocityX,r=this.data.cursor.velocityY;if(t===0&&r===0)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,o=this.getElementsAtPoint(i,n);for(let s of this.objects)if(o.includes(s.htmlElement)){{let d=s.htmlElement.getBoundingClientRect(),p=d.width||1,m=Math.max(0,Math.min(1,(this.data.cursor.targetX-d.left)/p));this.events.emit(`object:impulse:${s.id}:side`,{value:m})}let l=s.getProperty("position-strength")||0;if(l!==0){let d=s.getProperty("continuous-push")??!0,p=s.getProperty("__push-latch")===!0;if(d||!p){let m=s.getProperty("velocity-x")||0,g=s.getProperty("velocity-y")||0;m+=t*l,g+=r*l,s.setProperty("velocity-x",m),s.setProperty("velocity-y",g),d||s.setProperty("__push-latch",!0)}}let u=s.getProperty("rotation-strength")??.75;if(u!==0){let d=s.getProperty("continuous-push")??!0,p=s.getProperty("__rotate-latch")===!0;if(d||!p){let{cx:m,cy:g}=this.centers.getCenter(s),h=i-m,S=n-g,b=h*r-S*t,f=s.getProperty("ang-vel-deg")||0;f+=b*u*.02,s.setProperty("ang-vel-deg",f),d||s.setProperty("__rotate-latch",!0)}}}}getElementsAtPoint(e,t){return document.elementsFromPoint(e,t)}onFrame(e){let t=this.data.cursor.targetX,r=this.data.cursor.targetY,i=this.getElementsAtPoint(t,r),n=new Set(i);for(let o of this.objects)!n.has(o.htmlElement)&&o.getProperty("__push-latch")===!0&&o.setProperty("__push-latch",!1),!n.has(o.htmlElement)&&o.getProperty("__rotate-latch")===!0&&o.setProperty("__rotate-latch",!1);for(let o=0;o<this.objects.length;o++){let s=this.objects[o],a=s.getProperty("offset-x")||0,l=s.getProperty("offset-y")||0,u=s.getProperty("velocity-x")||0,d=s.getProperty("velocity-y")||0,p=s.getProperty("position-tension")??.05,m=s.getProperty("position-friction")??.15,g=s.getProperty("position-max-velocity")??120,h=s.getProperty("max-offset")??220;u-=p*a,d-=p*l;let S=1-m;u*=S,d*=S,u>g?u=g:u<-g&&(u=-g),d>g?d=g:d<-g&&(d=-g),a+=u,l+=d,a>h?a=h:a<-h&&(a=-h),l>h?l=h:l<-h&&(l=-h);let b=s.getProperty("angle-deg")||0,f=s.getProperty("ang-vel-deg")||0,y=s.getProperty("rotation-tension")??.06,v=s.getProperty("rotation-friction")??.18,E=s.getProperty("rotation-max-angular-velocity")??6,w=s.getProperty("rotation-max-angle")??18;f-=y*b,f*=1-v,f>E?f=E:f<-E&&(f=-E),b+=f,b>w?(b=w,f*=.35):b<-w&&(b=-w,f*=.35);let x=s.getProperty("sleep-epsilon")??.01,P=u*u+d*d<x*x&&a*a+l*l<x*x,I=Math.abs(f)<x&&Math.abs(b)<x;P?(u||d||a||l)&&(s.setProperty("offset-x",0),s.setProperty("offset-y",0),s.setProperty("velocity-x",0),s.setProperty("velocity-y",0),a=l=u=d=0):(s.setProperty("offset-x",a),s.setProperty("offset-y",l),s.setProperty("velocity-x",u),s.setProperty("velocity-y",d)),I?(b||f)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),b=f=0):(s.setProperty("angle-deg",b),s.setProperty("ang-vel-deg",f));let C=s.getProperty("position-update-threshold")??.1,L=s.getProperty("rotation-update-threshold")??.15,A=s.getProperty("__prev-css-x")||0,O=s.getProperty("__prev-css-y")||0,j=s.getProperty("__prev-css-rot")||0,_=Math.round(a*10)/10,V=Math.round(l*10)/10,F=Math.round(b*10)/10,W=Math.abs(_-A)>C||Math.abs(V-O)>C,ht=Math.abs(F-j)>L;(W||ht)&&(this.applyToElementAndConnects(s,jt=>{W&&(jt.style.setProperty("--push-x",String(_)),jt.style.setProperty("--push-y",String(V)),this.events.emit(`object:impulse:${s.id}:move`,{x:_,y:V})),ht&&(jt.style.setProperty("--push-rotation",String(F)),this.events.emit(`object:impulse:${s.id}:rotate`,{rotation:F}))}),W&&(s.setProperty("__prev-css-x",_),s.setProperty("__prev-css-y",V)),ht&&s.setProperty("__prev-css-rot",F))}}};var Kt=class extends M{constructor(e){super(e),this.htmlKey="magnetic",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"strength",type:"number",fallback:this.settings.strength},{key:"radius",type:"number",fallback:this.settings.radius}]}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("is-magneting",!1),t.setProperty("magnetic-target-x",0),t.setProperty("magnetic-target-y",0),t.setProperty("magnetic-x",0),t.setProperty("magnetic-y",0),t.setProperty("lerp",.1)}onMouseMove(e){this.objects.forEach(t=>{let i=t.htmlElement.getBoundingClientRect(),n=i.left+i.width/2,o=i.top+i.height/2,s=e.clientX-n,a=e.clientY-o,l=Math.sqrt(s**2+a**2),u=t.getProperty("radius")??0,d=t.getProperty("strength")??0,p=this.tools.magneticPull.process({distance:l,radius:u,strength:d});t.setProperty("magnetic-target-x",s*p),t.setProperty("magnetic-target-y",a*p),p>0&&t.setProperty("is-magneting",!0)})}onFrame(e){this.objects.forEach(t=>{if(t.getProperty("is-magneting")){let r=t.getProperty("magnetic-x")??0,i=t.getProperty("magnetic-y")??0,n=t.getProperty("lerp")??0,o=t.getProperty("magnetic-target-x")??0,s=t.getProperty("magnetic-target-y")??0,a=this.tools.lerp.process({from:r,to:o,progress:n}),l=this.tools.lerp.process({from:i,to:s,progress:n});a>-.01&&a<.01&&(a=0,t.setProperty("magnetic-x",t.getProperty("magnetic-target-x"))),l>-.01&&l<.01&&(l=0,t.setProperty("magnetic-y",t.getProperty("magnetic-target-y"))),r+=a,i+=l,t.setProperty("magnetic-x",r),t.setProperty("magnetic-y",i),this.events.emit(`magnetic:move:${t.id}`,{x:r,y:i}),this.applyToElementAndConnects(t,u=>{u.style.setProperty("--magnetic-x",r.toString()),u.style.setProperty("--magnetic-y",i.toString())}),(t.getProperty("magnetic-target-x")==r||t.getProperty("magnetic-target-y")==i)&&t.setProperty("is-magneting",!1)}})}};var Qt=class{constructor(){this.measureQueue=[];this.mutateQueue=[];this.scheduled=!1}measure(e){this.measureQueue.push(e),this.schedule()}mutate(e){this.mutateQueue.push(e),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,requestAnimationFrame(()=>{let e=this.measureQueue;this.measureQueue=[];for(let r=0;r<e.length;r++)try{e[r]()}catch(i){console.error("Error in frameDOM measure task:",i)}let t=this.mutateQueue;this.mutateQueue=[];for(let r=0;r<t.length;r++)try{t[r]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}))}},R=new Qt;var ut=class extends M{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Dt()&&(this.enabled=!1)}onObjectConnected(t){this.enabled&&(super.onObjectConnected(t),this.centers.attach(t),this.hover.track(t))}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&(this.centers.detach(r),this.hover.untrack(r)),super.removeObject(t)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(t){this.enabled&&(super.onMouseMoveMeasure(t),this.refreshPointerState())}onScrollMeasure(t){this.enabled&&(super.onScrollMeasure(t),this.refreshPointerState())}getCursorTargets(t=!1){if(!this.enabled)return[];let r=this.hover.activeObjects();return this.nearOnly&&r.length?r:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:t?this.objectsOnPage:this.objects}refreshPointerState(t,r=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,o=t?[t]:this.getCursorTargets(r),s=!this.nearOnly&&this.maxDistanceMultiplier>0?Math.pow(this.data.viewport.windowWidth*this.maxDistanceMultiplier,2):null;for(let a of o){let{cx:l,cy:u}=this.centers.getCenter(a),d=i-l,p=n-u,m=d*d+p*p;if(this.nearOnly){if(m>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(s!==null&&m>s)continue;a.setProperty("dx",d),a.setProperty("dy",p),a.setProperty("dist",Math.sqrt(m))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,R.measure(()=>{this.refreshPointerState(),R.mutate(()=>{this.scrollUpdateScheduled=!1,T.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var Gt=Math.PI*2,We=180/Math.PI,Me=c=>c<0?0:c>1?1:c,Be=(c,e)=>{let t=(e-c)%Gt;return t>Math.PI&&(t-=Gt),t<-Math.PI&&(t+=Gt),c+t},xe=new WeakMap,ze=c=>{let e=xe.get(c);return e||(e={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},xe.set(c,e)),e},Zt=class extends ut{constructor(e){super(e),this.htmlKey="spotlight",this.nearOnly=!1,this.useAllObjects=!1,this.maxDistanceMultiplier=1,this.attributesToMap.push({key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>Me(this.tools.adaptiveLerp.process({value:t,inMin:.1,inMax:1,outMin:.05,outMax:.65}))},{key:"angle-threshold",type:"number",fallback:.2},{key:"distance-threshold",type:"number",fallback:.5},{key:"deadzone",type:"number",fallback:4},{key:"dist-max",type:"number",fallback:0})}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("spotlight-angle-rad",0),t.setProperty("spotlight-distance",0),t.setProperty("spotlight-angle-rad-target",0),t.setProperty("spotlight-distance-target",0),R.measure(()=>{this.refreshPointerState(t,!0),R.mutate(()=>{T.run(()=>{this.updateSpotlightState(t,{forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0})})})})}onMutate(e){if(this.enabled){super.onMutate(e);let t=this.getCursorTargets(!1);(t.length>0?t:this.getCursorTargets(!0)).forEach(i=>{this.updateSpotlightState(i)})}}onCursorScrollUpdate(){let e=this.getCursorTargets(!1);(e.length>0?e:this.getCursorTargets(!0)).forEach(r=>{this.updateSpotlightState(r,{bypassDeadzone:!0})})}updateSpotlightState(e,t={}){let r=e.getProperty("dx"),i=e.getProperty("dy"),n=e.getProperty("dist");if(!Number.isFinite(r)||!Number.isFinite(i)||!Number.isFinite(n))return;let o=ze(e),s=e.getProperty("deadzone")??4;(t.bypassDeadzone||n>s)&&(o.tAngle=Math.atan2(i,r));let a=e.getProperty("dist-max")??0;if(o.tDist=a>0?Math.min(n,a):n,e.setProperty("spotlight-distance-target",o.tDist),e.setProperty("spotlight-angle-rad-target",o.tAngle),t.forceImmediate)o.angle=o.tAngle,o.dist=o.tDist;else{let g=Me(e.getProperty("lerp")??.15),h=Be(o.angle,o.tAngle);o.angle+=(h-o.angle)*g,o.dist+=(o.tDist-o.dist)*g}e.setProperty("spotlight-angle-rad",o.angle),e.setProperty("spotlight-distance",o.dist);let l=o.angle*We-90,u=e.getProperty("angle-threshold")??.2,d=e.getProperty("distance-threshold")??.5,p=t.forceEmit||Number.isNaN(o.prevDeg)||Math.abs(l-o.prevDeg)>u,m=t.forceEmit||Number.isNaN(o.prevDist)||Math.abs(o.dist-o.prevDist)>d;if(p||m){let g=Math.round(l*10)/10,h=Math.round(o.dist*10)/10;this.applyToElementAndConnects(e,S=>{T.setVars(S,{"--spotlight-angle":String(g),"--spotlight-angle-deg":`${g}deg`,"--spotlight-distance":String(h)})}),o.prevDeg=l,o.prevDist=o.dist,this.events.emit(`spotlight:update:${e.id}`,{distance:h,angleDeg:g})}}};var Ee="-aspect-ready";function we(c){let e=new DataView(c);return c.byteLength<24?{width:0,height:0}:e.getUint32(0)!==2303741511||e.getUint32(4)!==218765834?{width:0,height:0}:e.getUint32(12)!==13||e.getUint32(16)!==1229472850?{width:0,height:0}:{width:e.getUint32(20,!1),height:e.getUint32(24,!1)}}function Ce(c){let e=new DataView(c);if(e.getUint16(0)!==65496)return{width:0,height:0};let t=2;for(;t+9<c.byteLength;){let r=e.getUint16(t);if(t+=2,r===65498||r===65497)break;let i=e.getUint16(t);if(i<2||t+i>c.byteLength)break;if(r>=65472&&r<=65475||r>=65477&&r<=65479||r>=65481&&r<=65483||r>=65485&&r<=65487)return{height:e.getUint16(t+3),width:e.getUint16(t+5)};t+=i}return{width:0,height:0}}function Pe(c){let e=new DataView(c);if(c.byteLength<16)return{width:0,height:0};if(e.getUint32(0,!0)!==1179011410||e.getUint32(8,!0)!==1346520407)return{width:0,height:0};let t=12;for(;t+8<=c.byteLength;){let r=e.getUint32(t,!1),i=e.getUint32(t+4,!0),n=t+8;if(r===1448097880){let o=(e.getUint16(n+4,!0)|e.getUint8(n+6)<<16)+1,s=(e.getUint16(n+7,!0)|e.getUint8(n+9)<<16)+1;return{width:o,height:s}}if(r===1448097824&&n+10<=c.byteLength&&e.getUint8(n+3)===157&&e.getUint8(n+4)===1&&e.getUint8(n+5)===42){let o=e.getUint16(n+6,!0)&16383,s=e.getUint16(n+8,!0)&16383;return{width:o,height:s}}if(r===1448097868&&n+5<=c.byteLength&&e.getUint8(n)===47){let o=e.getUint8(n+1),s=e.getUint8(n+2),a=e.getUint8(n+3),l=e.getUint8(n+4),u=1+((s&63)<<8|o),d=1+((l&15)<<10|a<<2|(s&192)>>6);return{width:u,height:d}}t=n+i+(i&1)}return{width:0,height:0}}function Te(c,e){let t=(e||"").toLowerCase();if(t.includes("png"))return we(c);if(t.includes("jpeg")||t.includes("jpg"))return Ce(c);if(t.includes("webp"))return Pe(c);let r=we(c);return r.width||(r=Ce(c),r.width)||(r=Pe(c),r.width)?r:{width:0,height:0}}async function $e(c,e,t){let r=await fetch(c,{mode:"cors",credentials:e?.credentials??"omit",referrerPolicy:e?.referrerPolicy,signal:e?.signal,cache:"default"});if(!r.ok||!r.body)throw new Error(`HTTP ${r.status}`);let i=r.headers.get("content-type"),n=r.body.getReader(),o=1048576,s=4096,a=new Uint8Array(o),l=0,u=0,d=[],p=null,m=!1;for(;;){let{done:S,value:b}=await n.read();if(S)break;if(!b)continue;let f=b.buffer.slice(b.byteOffset,b.byteOffset+b.byteLength);if(d.push(f),!p&&l<o){let y=Math.min(b.byteLength,o-l);if(y>0&&(a.set(b.subarray(0,y),l),l+=y),l-u>=s){let v=l===a.byteLength?a:a.slice(0,l),E=Te(v.buffer,i);E.width&&E.height&&(p=E,!m&&t&&(t(p),m=!0)),u=l}}}if(!p){let S=await new Response(new Blob(d)).arrayBuffer(),b=Te(S,i);b.width&&b.height&&(p=b,!m&&t&&(t(p),m=!0))}let g=new Blob(d,{type:i||"application/octet-stream"}),h=URL.createObjectURL(g);return{dims:p,blobUrl:h,contentType:i}}var Jt=class extends M{constructor(t){super(t);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(r=>this.ensureState(r)),this.isStartLoaded=!0}onObjectConnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.ensureState(r);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(r);let n=o=>{this.handleInView(r,i,!!o?.inView)};i.unsubscribe&&i.unsubscribe(),this.events.on(`object:inview:${t.id}`,n),i.unsubscribe=()=>this.events.off(`object:inview:${t.id}`,n),this.isStartLoaded&&(t.getProperty("is-inview")??!1)&&this.handleInView(r,i,!0)}onObjectDisconnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.imageStates.get(r);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(t){let r=this.imageStates.get(t);if(!r){let i=this.readSource(t);return r={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(t,r),t.classList.contains("lazyLoad")||t.classList.add("lazyLoad"),t.dataset&&!t.dataset.stringLazySrc&&i&&(t.dataset.stringLazySrc=i),r}return r.src||(r.src=this.readSource(t)),r}readSource(t){let r=this.tools.domAttribute.process({element:t,key:this.htmlKey,fallback:""});return typeof r=="string"?r:r==null?"":String(r)}handleInView(t,r,i){r.pendingActivation=i,i&&(r.aspectReady?this.maybeActivateImage(t,r):r.aspectLoading||this.prepareAspectRatio(t))}async prepareAspectRatio(t){let r=this.ensureState(t);if(!r.src||r.aspectLoading||r.aspectReady)return;r.aspectLoading=!0,r.fetching=!0;let i=t.getAttribute("crossorigin"),n=t.getAttribute("referrerpolicy"),o=new AbortController;r.controller=o;try{let{blobUrl:s}=await $e(r.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:o.signal},a=>{a.width>0&&a.height>0&&!r.aspectReady&&(t.style.aspectRatio=`${a.width} / ${a.height}`,t.classList.add(Ee),r.width=a.width,r.height=a.height,r.aspectReady=!0)});r.blobUrl=s,!r.aspectReady&&r.width&&r.height&&(t.style.aspectRatio=`${r.width} / state.height`,t.classList.add(Ee),r.aspectReady=!0)}catch{r.allowSrcFallback=!0,r.aspectReady=!0}finally{r.fetching=!1,r.aspectLoading=!1,this.maybeActivateImage(t,r)}}maybeActivateImage(t,r){!r.pendingActivation||r.contentReady||r.contentLoading||!r.aspectReady||!r.src||r.fetching&&!r.blobUrl||(r.blobUrl||r.allowSrcFallback)&&this.activateImage(t,r)}activateImage(t,r){r.contentLoading=!0,this.loadingCount++;let i=s=>{r.contentLoading&&(r.contentLoading=!1,r.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),s&&(r.contentReady=!0,t.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),o=()=>i(!1);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",o,{once:!0}),t.decoding="async",t.loading=t.loading||"lazy",r.blobUrl?(t.removeAttribute("srcset"),t.removeAttribute("sizes"),t.src=r.blobUrl):t.src=r.src,t.complete&&t.naturalWidth>0&&t.naturalHeight>0&&(t.removeEventListener("load",n),t.removeEventListener("error",o),i(!0))}};var te=class extends M{constructor(t){super(t);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var At=class extends M{constructor(e){super(e),this.htmlKey=""}canConnect(e){return e.keys[0]==null}};var X=class{constructor(e){this.min=void 0;this.max=void 0;this.enable=!0;this.min=e?.min,this.max=e?.max,this.enable=e?.enable??!0}setEnable(e=!0){this.enable=e}setRange(e,t){this.min=e??void 0,this.max=t??void 0}get mediaQuery(){let e="screen";return this.min&&(e+=` and (min-width: ${this.min}px)`),this.max&&(e+=` and (max-width: ${this.max}px)`),e}},ee=class extends M{constructor(t){super(t);this.queries={0:new X({max:359}),1:new X({min:360,max:1079}),2:new X({min:1080,max:1365}),3:new X({min:1366})};this.isMobileMedia=!1;this.isTabletMedia=!1;this.isLaptopMedia=!1;this.isDesktopMedia=!1;this.matchMedias={0:window.matchMedia(this.queries[0].mediaQuery),1:window.matchMedia(this.queries[1].mediaQuery),2:window.matchMedia(this.queries[2].mediaQuery),3:window.matchMedia(this.queries[3].mediaQuery)};this._type=2}onConnect(){}onInit(){if(this.settings!=null&&this.settings.settings!=null){let t=this.settings.settings;t.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(t.mobile.min==null?null:t.mobile.min,t.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,t.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(t.tablet.min==null?null:t.tablet.min,t.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,t.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(t.laptop.min==null?null:t.laptop.min,t.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,t.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(t.desktop.min==null?null:t.desktop.min,t.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let t=this.matchMedias[0].matches&&this.queries[0].enable,r=this.matchMedias[1].matches&&this.queries[1].enable,i=this.matchMedias[2].matches&&this.queries[2].enable,n=this.matchMedias[3].matches&&this.queries[3].enable;this.isMobileMedia!=t&&this.events.emit("screen:mobile",t),this.isTabletMedia!=r&&this.events.emit("screen:tablet",r),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=t,this.isTabletMedia=r,this.isLaptopMedia=i,this.isDesktopMedia=n,document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach(s=>{let a=!1;s.hasAttribute("string-mobile")&&t&&(a=!0),s.hasAttribute("string-tablet")&&r&&(a=!0),s.hasAttribute("string-laptop")&&i&&(a=!0),s.hasAttribute("string-desktop")&&n&&(a=!0),a?s.style.display=null:s.style.display="none"})}};var re=class extends M{constructor(e){super(e),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:t=>{let[r,i]=t,n=this.tools.originParser.process({value:r}),o=this.tools.originParser.process({value:i});return{x:n,y:o}}}]}onObjectConnected(e){super.onObjectConnected(e);let t=e.getProperty("anchor");t&&this.applyToElementAndConnects(e,r=>{r.style.transformOrigin=`${t.x} ${t.y}`})}};var je=.05,_e=.01,Le=1,Ue=-1,Ye=1,ie=class extends M{constructor(t){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.maxDisplacementValue=0;this.setupItem=t=>{let r=t.getProperty("glide")??0,i=-this.data.scroll.displacement*this.maxDisplacementValue*r;this.events.emit(`object:glide:${t.id}`,i);let n=`translate3d(0, ${i}px, 0)`;t.htmlElement.style.transform=n};this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++){let r=this.objects[t];this.setupItem(r)}};this.onUpdateMobileEvent=()=>{};this.onUpdateEvent=this.onUpdateDesktopEvent;this.htmlKey="glide",this.baseVelocityMultiplier=this.settings["glide-base-velocity"]??this.baseVelocityMultiplier,this.reducedVelocityMultiplier=this.settings["glide-reduce-velocity"]??this.reducedVelocityMultiplier,this.negativeVelocityMultiplier=this.settings["glide-negative-velocity"]??this.negativeVelocityMultiplier,this.attributesToMap=[...this.attributesToMap,{key:"glide",type:"number",fallback:this.settings.glide}]}calcExpanderFactor(t){let r=t?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=r?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,r||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}onResize(){window.innerWidth>1080?(this.maxDisplacementValue=this.data.viewport.windowHeight*.1,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 r=this.objects[t],i="translate3d(0, 0px, 0)";r.htmlElement.style.transform=i,r.htmlElement.style.setProperty("--glide",this.data.scroll.displacement.toString())}}onFrame(t){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Le,this.acceleration+je),this.displacement=Math.max(_e,Math.min(Le,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Ye,Math.max(Ue,this.data.scroll.lerped*this.displacement*this.acceleration)),this.objects.forEach(r=>{this.applyToElementAndConnects(r,i=>{i.style.setProperty("--glide",this.data.scroll.displacement.toString())})}),this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}};var ne=class extends M{constructor(e){super(e),this.htmlKey="lerp"}onScrollStop(){this.objects.forEach(e=>{this.setLerpValue(e,0)})}onFrame(e){let t=e.scroll.lerped;this.objects.forEach(r=>{this.setLerpValue(r,t)})}setLerpValue(e,t){this.events.emit(`object:lerp:${e.id}`,t),e.htmlElement.style.setProperty("--lerp",t.toString())}};var Ft=class Ft extends M{constructor(t){super(t);this.updateScheduled=!1;this.htmlKey="progress",this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n)}recomputeProgress(t){let r=t.getProperty("start-position")??0,i=t.getProperty("difference-position")??0,n=0;n=Math.min(1,Math.max(0,(this.data.scroll.transformedCurrent-r)/i)),t.setProperty("progress-raw",n);let o=t.getProperty("easing"),s=typeof o=="function"?o(n):n;this.applyProgressValue(t,s)}applyProgressValue(t,r){t.setProperty("progress",r)}calculatePositions(t,r){super.calculatePositions(t,r),this.recomputeProgress(t)}onScroll(t){super.onScroll(t)}onObjectConnected(t){super.onObjectConnected(t)}onScrollMeasure(t){this.objects.forEach(r=>{this.recomputeProgress(r)})}onMutate(){this.objects.forEach(t=>{this.updateObjectProgress(t)})}updateObjectProgress(t){let r=t.getProperty("key"),i=t.getProperty("progress");if(typeof i!="number"||!Number.isFinite(i))return;let n=t.getProperty("progress-raw")??i,o=i.toString(),s=t.getProperty("easing"),a=t.getProperty("progress-emitted");this.hasProgressChanged(a,i)&&(t.setProperty("progress-emitted",i),this.events.emit(`object:progress:${t.id}`,i),this.applyToElementAndConnects(t,l=>{r&&T.setVars(l,{[r]:o})},(l,u)=>{if(!u)return;let d=u.applyProgress(n,typeof s=="function"?s:void 0);u.setProperty("progress",d),r&&T.setVars(l,{[r]:d.toString()})}))}hasProgressChanged(t,r){return t===null?!0:Math.abs(t-r)>Ft.PROGRESS_EPSILON}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=t.getProperty("key");if(!r)return;let i=n=>{n.style.removeProperty(r)};i(t.htmlElement),t.mirrorObjects.forEach(n=>{i(n.htmlElement)})}};Ft.PROGRESS_EPSILON=1e-4;var dt=Ft;var se=class extends dt{constructor(t){super(t);this.updateScheduledTransform=!1;this.calculateDesktopParallax=t=>{let r=t.getProperty("progress")??0,i=t.getProperty("parallax")??0,n=t.getProperty("parallax-position-start")??0,o=t.getProperty("parallax-position-end")??1,s=t.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=s*i*(a*n+r*a*o);return this.events.emit(`object:parallax:${t.id}`,l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=t=>(this.events.emit(`object:parallax:${t.id}`,0),{transform:"translate3d(0, 0px, 0)"});this.htmlKey="parallax",this.attributesToMap=[...this.attributesToMap,{key:"parallax",type:"number",fallback:this.settings.parallax},{key:"parallax-bias",type:"number",fallback:this.settings["parallax-bias"]}],this.calculateParallaxForObject=this.calculateDesktopParallax}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n);let o=r.getProperty("parallax-bias")??0,s=Math.abs(r.getProperty("parallax")??.2);r.setProperty("parallax-sign",Math.sign(r.getProperty("parallax"))),r.setProperty("parallax",s),r.setProperty("parallax-position-start",-.5+.5*o),r.setProperty("parallax-position-end",.5+.5*(1-o));let a=this.data.viewport.windowHeight;r.setProperty("offset-top",s*a),r.setProperty("offset-bottom",s*a)}calculatePositions(t,r){super.calculatePositions(t,r),t.setProperty("transform-value",this.calculateParallaxForObject(t))}onScroll(t){super.onScroll(t)}onResize(){let t=window.innerWidth>1080;this.calculateParallaxForObject=t?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(t){super.onScrollMeasure(t),this.objects.forEach(r=>{r.setProperty("transform-value",this.calculateParallaxForObject(r))})}onMutate(){this.objects.forEach(t=>{let r=t.getProperty("transform-value");this.applyToElementAndConnects(t,i=>{T.setProps(i,r)})})}};var Ht=class{constructor(e,t,r){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth,r=t/e*t;this.thumb.style.setProperty("--size",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startY=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startY,r=this.startScrollPosition+t/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=r,this.data.scroll.target=r,window.scrollTo(0,r),this.updateThumb()}};var Nt=class{constructor(e,t,r){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight,r=t/e*t;this.thumb.style.setProperty("--height",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startCoordinate=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startCoordinate,r=this.startScrollPosition+t/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(r,i));this.data.scroll.current=n,this.data.scroll.target=n,window.scrollTo(0,n),this.updateThumb()}};var oe=class extends M{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)}onInit(){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()}addCustomStyles(){let t=document.createElement("style");t.textContent=`
1
+ var mt=class{constructor(e=.1,t){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=e,this.context=t,this.onSettingsChange({isDesktop:t.data.viewport.windowWidth>1080,isForceRebuild:!1,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0})}onMouseMove(e){this.context.data.cursor.targetX=e.clientX,this.context.data.cursor.targetY=e.clientY;let t=performance.now(),r=t-this.lastMouseTime;r>0&&(this.context.data.cursor.velocityX=(e.clientX-this.lastMouseX)/r,this.context.data.cursor.velocityY=(e.clientY-this.lastMouseY)/r),this.lastMouseX=e.clientX,this.lastMouseY=e.clientY,this.lastMouseTime=t}onFrame(){let{targetX:e,targetY:t,smoothedX:r,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:r,to:e,progress:this.smoothingFactor}),o=this.context.tools.lerp.process({from:i,to:t,progress:this.smoothingFactor}),s=this.getStepDistance(n,o);this.isSettled(s)?this.snapToTarget():this.applyStep(n,o)}onSettingsChange(e){let t=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(t)}setLerpFactor(e){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:e,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(e,t){return Math.hypot(e,t)}isSettled(e){return e<this.SETTLE_THRESHOLD}snapToTarget(){this.context.data.cursor.smoothedX=this.context.data.cursor.targetX,this.context.data.cursor.smoothedY=this.context.data.cursor.targetY,this.context.data.cursor.stepX=0,this.context.data.cursor.stepY=0}applyStep(e,t){this.context.data.cursor.smoothedX+=e,this.context.data.cursor.smoothedY+=t,this.context.data.cursor.stepX=e,this.context.data.cursor.stepY=t}};var U=class{constructor(){this.listeners={};this.stateEvents=new Set;this.lastPayloads={};this.stateEvents.add("screen:mobile"),this.stateEvents.add("screen:tablet"),this.stateEvents.add("screen:laptop"),this.stateEvents.add("screen:desktop"),this.stateEvents.add("start")}on(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(t),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&t(this.lastPayloads[i])}off(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]&&this.listeners[i].delete(t)}emit(e,t){this.stateEvents.has(e)&&(this.lastPayloads[e]=t);let r=this.listeners[e];if(r)for(let i of r)i(t)}onProgress(e,t){this.on(`progress:${e}`,t)}emitProgress(e,t){this.emit(`progress:${e}`,t)}onInview(e,t){this.on(`object:inview:${e}`,t)}emitInview(e,t){this.emit(`object:inview:${e}`,t)}onScroll(e){this.on("scroll",e)}emitScroll(e){this.emit("scroll",e)}onUpdate(e){this.on("update",e)}emitUpdate(){this.emit("update")}clear(e){delete this.listeners[e]}clearAll(){this.listeners={}}};function Ne(c,e,t,r){switch(c){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":return[e];case"onMouseMove":case"onWheel":return t?[t]:[];case"onDOMMutate":return t&&r?[t,r]:[];case"onSettingsChange":return[];default:return[]}}var gt=class{constructor(e){this.data=e;this.modules=[];this.uiModules=[];this.allModules=[]}register(e){e.type===1?this.modules.push(e):e.type===2&&this.uiModules.push(e),this.rebuildAllModules()}find(e){return this.modules.find(t=>t instanceof e)}onInit(){this.callAll("onInit")}onFrame(){this.callAll("onFrame")}onMutate(){this.callAll("onMutate")}onScrollMeasure(){this.callAll("onScrollMeasure")}onMouseMoveMeasure(){this.callAll("onMouseMoveMeasure")}onScroll(){this.callAll("onScroll")}onResizeWidth(){this.callAll("onResizeWidth")}onResize(){this.callAll("onResize")}onMouseMove(e){this.callAll("onMouseMove",e)}onWheel(e){this.callAll("onWheel",e)}onDirectionChange(){this.callAll("onDirectionChange")}onScrollStart(){this.callAll("onScrollStart")}onScrollStop(){this.callAll("onScrollStop")}onAxisChange(){this.callAll("onAxisChange")}onDeviceChange(){this.callAll("onDeviceChange")}onScrollConfigChange(){this.callAll("onScrollConfigChange")}onSettingsChange(e){this.callAll("onSettingsChange")}onDOMMutate(e,t){this.callAll("onDOMMutate",e,t)}destroy(){this.callAll("destroy"),this.modules=[],this.uiModules=[],this.allModules=[]}get all(){return this.allModules}get core(){return this.modules}get ui(){return this.uiModules}callAll(e,t,r){this.callLifecycle(this.modules,e,t,r),this.callLifecycle(this.uiModules,e,t,r)}callLifecycle(e,t,r,i){if(e.length===0)return;let n=Ne(t,this.data,r,i);for(let o=0;o<e.length;o++){let s=e[o];s&&s[t](...n)}}rebuildAllModules(){this.allModules=[...this.modules,...this.uiModules]}};var ft=class{constructor(e,t,r){this.parent=r;this.properties=new Map;this.id=e,this.htmlElement=t}get parentObject(){return this.parent}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}setEasing(e){this.easingFn=e??void 0}getEasing(){return this.easingFn}applyProgress(e,t){let r=this.easingFn??t;return r?r(e):e}};var q=class{constructor(e,t){this.id="";this.keys=[];this.mirrors=new Map;this.properties=new Map;this.modules=[];this.events=new U;this.htmlElement=t,this.id=e}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}enter(){this.events.emit("enter",this),this.setProperty("active",!0),this.modules.forEach(e=>{e.enterObject(this.id,this)})}leave(){this.events.emit("leave",this),this.setProperty("active",!1),this.modules.forEach(e=>{e.exitObject(this.id)})}remove(){this.modules.forEach(e=>{e.removeObject(this.id)})}show(){this.htmlElement.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(e){this.modules.includes(e)||this.modules.push(e)}addMirror(e){this.mirrors.set(e.id,e)}removeMirror(e){this.mirrors.delete(e)}get mirrorObjects(){return Array.from(this.mirrors.values())}get connects(){return this.mirrorObjects.map(e=>e.htmlElement)}};var bt=class{constructor(e,t,r,i){this.data=e;this.modules=t;this.events=r;this.tools=i;this.objects=new Map;this.connectQueue=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1}get all(){return this.objects}add(e){let t=`string-${this.globalId++}`,r="string-id";e.getAttribute("string-id")&&(t=e.getAttribute("string-id"),r="string-id"),e.getAttribute("data-string-id")&&(t=e.getAttribute("data-string-id"),r="data-string-id");let i=t&&this.objects.has(t)?this.objects.get(t):new q(t,e);e.setAttribute(r,i.id);let n=e.getAttribute("string")??e.getAttribute("data-string");n&&(i.keys=(n??"").split("|").map(a=>a.trim()).filter(Boolean)),e.setAttribute("string-inited",""),this.objects.set(i.id,i);let o=this.getAllAttributes(e);this.modules.core.forEach(a=>{"setupCoreProperties"in a&&typeof a.setupCoreProperties=="function"&&a.setupCoreProperties(i,e,o)}),this.modules.core.forEach(a=>{a.canConnect(i)&&(a.initializeObject(this.globalId,i,e,o),a.calculatePositions(i,this.data.viewport.windowHeight),a.connectObject(i),a.addObject(i.id,i))}),this.connectQueue.filter(a=>a.id===i.id).forEach(a=>this.attachMirrorToObject(i,a.element)),this.connectQueue=this.connectQueue.filter(a=>a.id!==i.id),this.initObservers(i,e),this.checkInviewForObject(i)}remove(e){let t=this.objects.get(e);t&&(t.events.clearAll(),t.getProperty("observer-progress")?.disconnect(),t.getProperty("observer-inview")?.disconnect(),t.htmlElement.removeAttribute("string-inited"),t.leave(),t.remove(),t.mirrorObjects.forEach(r=>{r.htmlElement.removeAttribute("string-mirror-id"),this.mirrors.delete(r.id);let i=r.htmlElement.getAttribute("string-copy-from")??r.htmlElement.getAttribute("data-string-copy-from");i&&this.enqueueConnection(i,r.htmlElement)}),this.objects.delete(e))}enqueueConnection(e,t){this.connectQueue.some(r=>r.id===e&&r.element===t)||this.connectQueue.push({id:e,element:t})}linkMirror(e,t){let r=this.objects.get(e);r?this.attachMirrorToObject(r,t):this.enqueueConnection(e,t)}attachMirrorToObject(e,t){let r=t.getAttribute("string-mirror-id")??t.getAttribute("data-string-mirror-id");if(r){let s=this.mirrors.get(r);if(s){if(s.parentObject===e)return s;s.parentObject.removeMirror(r),this.mirrors.delete(r)}}let i=r??`string-mirror-${this.mirrorId++}`,n=new ft(i,t,e);t.setAttribute("string-mirror-id",i),e.addMirror(n),this.mirrors.set(i,n);let o=t.getAttribute("string-easing")??t.getAttribute("data-string-easing");return o&&o.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:o})),n.setProperty("easing",o)),n}detachMirrorByElement(e){let t=e.getAttribute("string-mirror-id")??e.getAttribute("data-string-mirror-id");t&&(this.detachMirrorById(t),e.removeAttribute("string-mirror-id"))}detachMirrorById(e){let t=this.mirrors.get(e);t&&(t.parentObject.removeMirror(e),this.mirrors.delete(e))}getAllAttributes(e){let t={};return Array.from(e.attributes).forEach(r=>{t[r.name]=r.value}),t}initObservers(e,t){let r=e.getProperty("offset-top")??0,i=e.getProperty("offset-bottom")??0;e.getProperty("observer-progress")?.disconnect();let n=m=>{m.forEach(g=>{this.events.emit(`object:activate:${e.id}`,g.isIntersecting),g.isIntersecting?e.enter():e.leave()})},o=e.getProperty("outside-container"),s=t.getAttribute("string-outside-container")??t.getAttribute("data-string-outside-container"),a=s!=null?s.trim().toLowerCase():null,l=a===""||a==="true"||a==="1",u=o!=null?o===!0:l,d=this.data.scroll.container===document.body||u?null:this.data.scroll.container,p=new IntersectionObserver(n,{root:d,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${r+this.data.viewport.windowHeight}px 0px`,threshold:0});p.observe(t),e.setProperty("observer-progress",p)}observeDOM(){new MutationObserver(t=>{t.forEach(r=>{r.type==="childList"&&(r.removedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;this.detachMirrorByElement(n),!this.isFixed(n)&&(n.hasAttribute("string")&&this.handleRemoved(n),n.querySelectorAll("[string],[data-string]").forEach(o=>{this.isFixed(o)||this.handleRemoved(o)}),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(o=>this.detachMirrorByElement(o)))}),r.addedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;if(this.isFixed(n))return;n.hasAttribute("string")&&!n.hasAttribute("string-inited")&&this.add(n),n.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])").forEach(s=>this.add(s));let o=n.getAttribute("string-copy-from")??n.getAttribute("data-string-copy-from");o&&this.linkMirror(o,n),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(s=>{let a=s.getAttribute("string-copy-from")??s.getAttribute("data-string-copy-from");a&&this.linkMirror(a,s)})}),(r.addedNodes.length>0||r.removedNodes.length>0)&&this.modules.onDOMMutate(r.addedNodes,r.removedNodes),this.modules.all.forEach(i=>i.onDOMRebuild()))})}).observe(document.body,{childList:!0,subtree:!0})}handleRemoved(e){let t=e.getAttribute("string-id")??e.getAttribute("data-string-id");if(!t)return;let r=e.getAttribute("string-copy-from")??e.getAttribute("data-string-copy-from");r&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==r)),this.remove(t)}onSettingsChange(e){this.objects.forEach(t=>{this.modules.core.forEach(r=>{let i=!1;if(e.isDesktop?(r.permissions.desktop.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.desktop.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.desktop.rebuild.height&&e.heightChanged&&(i=!0)):(r.permissions.mobile.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.mobile.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.mobile.rebuild.height&&e.heightChanged&&(i=!0)),(i||e.isForceRebuild)&&r.canConnect(t)){let n=this.getAllAttributes(t.htmlElement);r.initializeObject(this.globalId,t,t.htmlElement,n),r.calculatePositions(t,this.data.viewport.windowHeight),r.connectObject(t)}})})}isFixed(e){return e.hasAttribute("string-fixed")}checkInview(){this.objects.forEach(e=>{this.checkInviewForObject(e)})}checkInviewForObject(e){let t=this.data.scroll.transformedCurrent,r=e.getProperty("inview-start-position"),i=e.getProperty("inview-end-position"),n=e.getProperty("is-inview")??!1,o=Math.min(r,i),s=Math.max(r,i),a=t>=o&&t<=s,l=null;if(!n&&a){let u=Math.abs(t-o),d=Math.abs(s-t);l=u<=d?"enter-top":"enter-bottom"}else n&&!a&&(l=t<o?"exit-top":"exit-bottom");a!==n&&(e.setProperty("is-inview",a),this.events.emit(`object:inview:${e.id}`,{inView:a,direction:l}),a?e.show():e.hide())}};var H=class{constructor(e){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._scrollDirection="vertical";this.isBottomScrollDirection=null;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()};this.document=document,this.context=e}set scrollDirection(e){this._scrollDirection=e,this._scrollDirection==="vertical"?this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()}:this._scrollDirection==="horizontal"&&(this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(this.context.data.scroll.current,0)})}onFrame(){}onWheel(e){}onScroll(e){}disableScrollEvents(){}enableScrollEvents(){}triggerScrollRules(){this.scrollTriggerRules.forEach(e=>{(e.direction==="any"||this.isLastBottomScrollDirection&&e.direction==="forward")&&this.context.data.scroll.current>=e.offset?(e.onEnter?.(),e.toggleClass&&e.toggleClass.target.classList.add(e.toggleClass.className)):(e.onLeave?.(),e.toggleClass&&e.toggleClass.target.classList.remove(e.toggleClass.className))})}addScrollMark(e){this.scrollTriggerRules.push(e)}removeScrollMark(e){this.scrollTriggerRules=this.scrollTriggerRules.filter(t=>t.id!==e)}scrollTo(e){}};var vt=class extends H{constructor(t){super(t);this.name="default"}onFrame(){if(this.context.data.scroll.delta!==0){let t=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=t,this.context.data.scroll.lerped=t,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.onScrollStop())}}onScroll(t){let r=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=r,this.context.data.scroll.target=r,this.context.data.scroll.transformedCurrent=r}onWheel(t){if(t.deltaY!==0){this.context.data.scroll.delta===0&&this.onScrollStart();let r=t.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,t.deltaY)),this.context.data.scroll.delta+=r}}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.delta=1}};var yt=class extends H{constructor(t){super(t);this.name="disable";this.preventScroll=t=>{t.preventDefault()};this.preventKeyScroll=t=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(t.key)&&t.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}disableScrollEvents(){window.addEventListener("touchmove",this.onPreventScroll,{passive:!1}),window.addEventListener("keydown",this.onPreventKeyScroll)}enableScrollEvents(){window.removeEventListener("touchmove",this.onPreventScroll),window.removeEventListener("keydown",this.onPreventKeyScroll)}onFrame(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}};var B={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var St=class extends H{constructor(t){super(t);this.name="smooth";this.isScrollbarManipulation=!1;this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.1}updateScrollDirection(t){if(this.isLastBottomScrollDirection=t,this.isBottomScrollDirection===null){this.isBottomScrollDirection=t;return}this.context.data.scroll.isScrollingDown=t,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&(document.documentElement.classList.toggle(B.SCROLLING_FORWARD,t),document.documentElement.classList.toggle(B.SCROLLING_BACKWARD,!t),document.documentElement.classList.toggle(B.SCROLL_FORWARD,t),document.documentElement.classList.toggle(B.SCROLL_BACKWARD,!t))}stopScroll(){this.context.data.scroll.lerped=0,this.context.data.scroll.delta=0,this.context.data.scroll.target=this.context.data.scroll.current,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(B.SCROLLING_BACKWARD,B.SCROLLING_FORWARD),this.isBottomScrollDirection=null}onFrame(){if(this.isScrollbarManipulation){this.isScrollbarManipulation=!1,this.context.data.scroll.current=this.context.data.scroll.elementContainer.scrollTop,this.context.data.scroll.target=this.context.data.scroll.elementContainer.scrollTop,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;return}if(this.context.data.scroll.delta!==0){this.scrollForce=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate,this.context.data.scroll.target=Math.min(Math.max(0,this.context.data.scroll.target+this.scrollForce),this.context.data.scroll.bottomPosition),this.context.data.scroll.delta-=this.scrollForce,this.context.data.scroll.lerped=(this.context.data.scroll.target-this.context.data.scroll.current)*this.context.data.scroll.speed;let t=Math.abs(this.context.data.scroll.lerped);this.context.data.scroll.lerped>0?this.context.data.scroll.current=Math.ceil(this.context.data.scroll.current+this.context.data.scroll.lerped):this.context.data.scroll.current=Math.floor(this.context.data.scroll.current+this.context.data.scroll.lerped),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.updateScrollDirection(this.context.data.scroll.lerped>0),t<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!==this.context.data.scroll.current&&(this.previousCurrent=this.context.data.scroll.current,this.onCalcUpdate()))}}onWheel(t){if(t.deltaY!==0&&t.preventDefault(),this.wheelImpulse=t.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let r=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&r<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&r>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(t){this.isProg||(this.isScrollbarManipulation=!0)}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.delta=1}};var Mt=class{constructor(e){this.context=e;this.modes=new Map;this.modes.set("smooth",new St(e)),this.modes.set("default",new vt(e)),this.modes.set("disable",new yt(e)),this.updateResponsiveMode()}setMobileMode(e){this.context.data.scroll.modeMobile=e,this.updateResponsiveMode()}setDesktopMode(e){this.context.data.scroll.modeDesktop=e,this.updateResponsiveMode()}updateResponsiveMode(){let t=window.innerWidth<1080?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(t)}updatePosition(){this.modes.forEach(e=>{e.onCalcUpdate()})}setMode(e){if(!this.modes.has(e)){console.warn(`[ScrollManager] Unknown scroll mode: ${e}`);return}this.get().enableScrollEvents(),this.context.data.scroll.mode=e,this.get().disableScrollEvents()}get(){return this.modes.get(this.context.data.scroll.mode)}getEngines(){return this.modes}onFrame(){this.get().onFrame()}onScroll(e){this.get().onScroll(e)}onWheel(e){this.get().onWheel(e)}bindEvents(e){this.modes.forEach(t=>{t.onScrollStart=e.onScrollStart,t.onScrollStop=e.onScrollStop,t.onChangeDirection=e.onDirectionChange})}addScrollMark(e){this.modes.forEach(t=>{t.addScrollMark(e)})}removeScrollMark(e){this.modes.forEach(t=>{t.removeScrollMark(e)})}};var xt=class{constructor(){this.targetX=0;this.targetY=0;this.smoothedX=0;this.smoothedY=0;this.stepX=0;this.stepY=0;this.velocityX=0;this.velocityY=0}};var Et=class{constructor(){this.threeInstance=null}};var wt=class{constructor(){this.target=0;this.current=0;this.transformedCurrent=0;this.delta=0;this.lerped=0;this.displacement=0;this.isScrollingDown=!1;this.topPosition=0;this.bottomPosition=0;this.direction="vertical";this.elementContainer=document.documentElement;this.scrollContainer=window;this.container=document.body;this.mode="smooth";this.modeMobile="smooth";this.modeDesktop="smooth";this.speed=.1;this.speedAccelerate=.25}};var Ct=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1}};var Pt=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var Tt=class{constructor(){this.windowWidth=0;this.windowHeight=0;this.contentWidth=0;this.contentHeight=0;this.scaleWidth=1;this.scaleHeight=1;this.transformScale=1;this.baseRem=16}};var Lt=class{constructor(){this.scroll=new wt;this.viewport=new Tt;this.cursor=new xt;this.render=new Et;this.time=new Pt;this.system=new Ct}};var Ot=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var x=class{constructor(e){this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new Ot;this.tools=e.tools,this.data=e.data,this.settings=e.settings,this.events=e.events,this.centers=e.centers,this.hover=e.hover,this.attributesToMap=[{key:"active",type:"boolean",fallback:this.settings.active},{key:"fixed",type:"boolean",fallback:this.settings.fixed},{key:"outside-container",type:"boolean",fallback:this.settings["outside-container"]},{key:"repeat",type:"boolean",fallback:this.settings.repeat},{key:"self-disable",type:"boolean",fallback:this.settings["self-disable"]},{key:"abs",type:"boolean",fallback:this.settings.abs},{key:"key",type:"string",fallback:this.settings.key},{key:"offset-top",type:"dimension",fallback:this.settings["offset-top"]},{key:"offset-bottom",type:"dimension",fallback:this.settings["offset-bottom"]},{key:"inview-top",type:"dimension",fallback:this.settings["inview-top"]},{key:"inview-bottom",type:"dimension",fallback:this.settings["inview-bottom"]},{key:"start",type:"number",fallback:(t,r,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.container.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(t,r,i)=>{let n=i.top,o=i.height;return n+o-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(t,r,i)=>i.height},{key:"half-width",type:"number",fallback:(t,r,i)=>i.width/2},{key:"half-height",type:"number",fallback:(t,r,i)=>i.height/2},{key:"enter-el",type:"string",fallback:this.settings["enter-el"]},{key:"enter-vp",type:"string",fallback:this.settings["enter-vp"]},{key:"exit-el",type:"string",fallback:this.settings["exit-el"]},{key:"exit-vp",type:"string",fallback:this.settings["exit-vp"]}]}get type(){return this._type}initializeObject(e,t,r,i){let n=this.tools.boundingClientRect.process({element:r});for(let{key:o,type:s,fallback:a,transform:l}of this.attributesToMap){let u=typeof a=="function"?a(r,t,n):a,d=this.tools.domAttribute.process({element:r,key:o,fallback:i[o]??this.settings[o]??u}),p=this.parseAttribute(d,s,{element:r,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(p=l(p)),t.setProperty(o,p)}}calculatePositions(e,t){let r=e.getProperty("start"),i=e.getProperty("size"),n=e.getProperty("offset-bottom"),o=e.getProperty("offset-top"),s=e.getProperty("enter-el"),a=e.getProperty("enter-vp"),l=e.getProperty("exit-el"),u=e.getProperty("exit-vp"),d=0,p=0,m=0,g=0;s==="top"&&a==="top"||s==="left"&&a==="left"?(m=-t+1,d=r-n):s==="top"&&a==="bottom"||s==="left"&&a==="right"?d=r-t-n:s==="bottom"&&a==="top"||s==="right"&&a==="left"?(m=-t-i+1,d=r+i-n):(s==="bottom"&&a==="bottom"||s==="right"&&a==="right")&&(m=-i+1,d=r-t+i-n),l==="top"&&u==="top"||l==="left"&&u==="left"?(g=-i+1,p=r+o):l==="top"&&u==="bottom"||l==="left"&&u==="right"?(g=-t-i+1,p=r-t+o):l==="bottom"&&u==="top"||l==="right"&&u==="left"?p=r+i+o:(l==="bottom"&&u==="bottom"||l==="right"&&u==="right")&&(g=-t+1,p=r-t+i+o),e.setProperty("start-bias",m),e.setProperty("end-bias",g),e.setProperty("start-position",d-this.data.scroll.topPosition),e.setProperty("end-position",p-this.data.scroll.topPosition),e.setProperty("difference-position",p-d);let h=e.getProperty("inview-top")??0,v=e.getProperty("inview-bottom")??0;e.setProperty("inview-start-position",e.getProperty("start-position")+h),e.setProperty("inview-end-position",e.getProperty("end-position")+v)}parseAttribute(e,t,r={}){if(e==null)return null;if(typeof t=="object"&&t.type==="enum")return t.values.includes(e)?e:t.values[0];switch(t){case"number":return parseFloat(e);case"boolean":return e===""||e==="true";case"json":try{return JSON.parse(e)}catch{return null}case"tuple":return e.trim().split(/\s+/);case"easing":return this.tools.easingFunction.process({easing:e});case"color":return this.tools.colorParser.process({value:e});case"dimension":return e=="0"?0:r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null?this.tools.unitParser.process({value:e,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem}):0;case"breakpoint-dimension":if(r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null){let i=e.trim().split("|"),n=[];for(let o of i)if(o.includes(":")){let[s,a]=o.split(":");n.push({breakpoint:parseInt(s),value:this.tools.unitParser.process({value:`${a}|`,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:o,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})});return n}default:return e}}canConnect(e){return e.keys.includes(this.htmlKey)}connectObject(e){e.connect(this),this.onObjectConnected(e)}enterObject(e,t){this.objectMap.has(e)||(this.objectMap.set(e,t),this.objects.push(t))}exitObject(e){let t=this.objectMap.get(e);if(!t)return;this.objectMap.delete(e);let r=this.objects.indexOf(t);r!==-1&&this.objects.splice(r,1)}addObject(e,t){this.objectMapOnPage.has(e)||(this.objectMapOnPage.set(e,t),this.objectsOnPage.push(t))}removeObject(e){let t=this.objectMapOnPage.get(e);if(!t)return;this.objectMapOnPage.delete(e);let r=this.objectsOnPage.indexOf(t);r!==-1&&this.objectsOnPage.splice(r,1),this.onObjectDisconnected(t)}onObjectConnected(e){}onObjectDisconnected(e){}applyToElementAndConnects(e,t,r=t){e.getProperty("self-disable")!==!0&&t(e.htmlElement),e.mirrorObjects.forEach(i=>r(i.htmlElement,i))}destroy(){this.objects=[],this.objectMap=new Map}onInit(){}onFrame(e){}onMutate(e){}onScrollMeasure(e){}onMouseMoveMeasure(e){}onResize(){}onResizeWidth(){}onScroll(e){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){}onSettingsChange(){}onDOMRebuild(){}onMouseMove(e){}onWheel(e){}onDOMMutate(e,t){}};var K=class{process({element:e}){return e.getBoundingClientRect()}};var Q=class{process({element:e,key:t,fallback:r=null}){return e.getAttribute(`string-${t}`)??e.getAttribute(`data-string-${t}`)??r}};var G=class{process({record:e,name:t,fallback:r=null}){return e[t]??e[`data-${t}`]??r}};var z=class{process({element:e}){let t=e.getBoundingClientRect(),i=getComputedStyle(e).transform.match(/-?[\d.]+/g)?.map(parseFloat)??[];if(i.length===6){let[n,o,s,a,l,u]=i,d=n*a-o*s;return{width:t.width/(n||1),height:t.height/(a||1),left:(t.left*a-t.top*s+s*u-l*a)/d,top:(-t.left*o+t.top*n+l*o-n*u)/d}}return t}};var Z=class{constructor(e=new z){this.transformTool=e}process({element:e,container:t=document.body}){let r;try{r=t.getBoundingClientRect()}catch{r=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:e});return{top:i.top-r.top,left:i.left-r.left}}};var J=class{process({from:e,to:t,progress:r}){return(t-e)*r}};var tt=class{process({value:e,element:t,viewportHeight:r,baseRem:i,boundingRect:n}){let o=e.split("|").map(a=>a.trim()).filter(Boolean),s=0;for(let a of o){let l=a,u=!1;l.startsWith("-")&&(u=!0,l=l.slice(1));let d=0;l==="selfHeight"?d=t.offsetHeight:l.endsWith("px")?d=parseFloat(l):l.endsWith("%")?d=parseFloat(l)/100*r:l.endsWith("rem")?d=parseFloat(l)*i:l.endsWith("sh")?d=parseFloat(l)*n.height/100:d=parseFloat(l),s+=u?-d:d}return s}};var et=class{process({value:e,inMin:t=.1,inMax:r=1,outMin:i=.05,outMax:n=.65}){if(e<t)return n;if(e>1&&(e=1),e<=r){let o=(e-t)/(r-t);return n-o*(n-i)}return i}};var rt=class{process({value:e}){let t=e.trim();if(t.startsWith("random(")&&t.endsWith(")")){let r=t.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*r.length);return r[i]}return t}};var it=class{process({value:e}){let t=e.trim().toLowerCase();if(t.startsWith("#")){let n=t.slice(1);n.length===3&&(n=n.split("").map(u=>u+u).join(""));let o=parseInt(n.slice(0,2),16),s=parseInt(n.slice(2,4),16),a=parseInt(n.slice(4,6),16),l=n.length===8?parseInt(n.slice(6,8),16)/255:1;return{r:o,g:s,b:a,a:l}}let r=t.match(/rgba?\(([^)]+)\)/);if(r){let[n,o,s,a=1]=r[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:o,b:s,a}}let i=t.match(/hsla?\(([^)]+)\)/);if(i){let[n,o,s,a="1"]=i[1].split(",").map(p=>p.trim()),[l,u,d]=this.hslToRgb(parseFloat(n),parseFloat(o),parseFloat(s));return{r:l,g:u,b:d,a:parseFloat(a)}}return{r:0,g:0,b:0,a:0}}hslToRgb(e,t,r){e=e/360,t=parseFloat(t.toString())/100,r=parseFloat(r.toString())/100;let i=(u,d,p)=>(p<0&&(p+=1),p>1&&(p-=1),p<1/6?u+(d-u)*6*p:p<1/2?d:p<2/3?u+(d-u)*(2/3-p)*6:u),n=r<.5?r*(1+t):r+t-r*t,o=2*r-n,s=Math.round(i(o,n,e+1/3)*255),a=Math.round(i(o,n,e)*255),l=Math.round(i(o,n,e-1/3)*255);return[s,a,l]}};var nt=class{constructor(){this.namedCurves={linear:[0,0,1,1],ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]}}process({easing:e}){let t=e.trim();if(this.namedCurves[t])return this.cubicBezier(...this.namedCurves[t]);let r=t.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(r){let[i,n,o,s]=r.slice(1).map(Number);return this.cubicBezier(i,n,o,s)}return i=>i}cubicBezier(e,t,r,i){let n=3*e,o=3*(r-e)-n,s=1-n-o,a=3*t,l=3*(i-t)-a,u=1-a-l;function d(h){return((s*h+o)*h+n)*h}function p(h){return((u*h+l)*h+a)*h}function m(h){return(3*s*h+2*o)*h+n}function g(h,v=1e-5){let b,f,S=h,y,M,w;for(w=0;w<8;w++){if(y=d(S)-h,Math.abs(y)<v)return S;if(M=m(S),Math.abs(M)<1e-6)break;S=S-y/M}for(b=0,f=1,S=h;b<f;){if(y=d(S)-h,Math.abs(y)<v)return S;y>0?f=S:b=S,S=(f+b)/2}return S}return function(h){return p(g(h))}}};var st=class{process({distance:e,radius:t,strength:r}){if(e>=t)return 0;let i=(t-e)/t;return r*i}};var ot=class{process({from:e,to:t,progress:r}){return{r:e.r+(t.r-e.r)*r,g:e.g+(t.g-e.g)*r,b:e.b+(t.b-e.b)*r,a:e.a+(t.a-e.a)*r}}};var at=class{process({from:e,to:t,progress:r}){return{x:(t.x-e.x)*r,y:(t.y-e.y)*r}}};var lt=class{process({value:e}){let r=e?.trim();if(!r||r==="none")return 1;try{if(r.startsWith("matrix(")){let i=r.match(/matrix\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scale(")){let i=r.match(/scale\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scaleX(")){let i=r.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(r.startsWith("scale3d(")){let i=r.match(/scale3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("matrix3d(")){let i=r.match(/matrix3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(o=>parseFloat(o.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}}catch(i){return console.error(`Error parsing transform string "${r}":`,i),1}return 1}};var kt=class{process({attributeValue:e}){let t={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return e&&e.split("|").forEach(i=>{let n=i.trim();if(!n)return;let o=n.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(o){let s=o[1]||"",a=o[2],l=s+a,d=(o[4]||"").split(";").map(m=>m.trim()).filter(m=>m.length>0),p=this.parseParamsArray(d);switch(l){case"line":t.line.push(p);break;case"word":t.word.push(p);break;case"char":t.char.push(p);break;case"charLine":t.charLine.push(p);break;case"charWord":t.charWord.push(p);break;case"wordLine":t.wordLine.push(p);break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),t}parseParamsArray(e){let t={align:"start"};return e.forEach(r=>{if(r==="abs")t.abs=!0;else if(r.startsWith("random")){t.align="random";let i=r.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(t.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(r)&&(t.align=r)}),t}};var ct=class{process({value:e}){let t=[],r="",i=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("&&i++,o===")"&&i--,o==="|"&&i===0?(r.trim()&&t.push(r.trim()),r=""):r+=o}return r.trim()&&t.push(r.trim()),t.map(n=>{let o=n.match(/^(\w+)(?:\((.*)\))?$/);if(o){let[,a,l]=o;return l?{key:a,params:l.split(",").map(u=>u.trim())}:{key:a}}let s=n.indexOf(":");if(s!==-1){let a=n.slice(0,s).trim(),l=n.slice(s+1).trim(),u=l?l.split(",").map(d=>d.trim()):void 0;return{key:a,params:u}}return{key:n}})}};var It=class{constructor(){this.inputValidators={required:e=>e!=null&&String(e).trim()!=="",min:(e,t)=>typeof e=="string"&&e.length>=Number(t?.[0]??0),max:(e,t)=>typeof e=="string"&&e.length<=Number(t?.[0]??Number.MAX_SAFE_INTEGER),checked:e=>{if(Array.isArray(e))return e.length>0;if(e===!0||e==="true"||e===1||e==="1")return!0;if(typeof e=="string"){let t=e.trim().toLowerCase();return t==="false"||t==="0"?!1:t.length>0}return!!e},email:e=>typeof e=="string"&&/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e),phone:e=>{if(typeof e!="string")return!1;let t=e.trim();if(t===""||!/^[0-9()\s+-.]+$/.test(t))return!1;let r=t.replace(/\D/g,"").length;return r>=7&&r<=15},number:e=>typeof e=="string"&&/^-?\d+(\.\d+)?$/.test(e),integer:e=>typeof e=="string"&&/^-?\d+$/.test(e),url:e=>typeof e=="string"&&/^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:\/?#[\]@!$&'()*+,;=]*)?$/.test(e),regex:(e,t)=>this.testByRegex(e,t?.[0]),alpha:e=>this.testByRegex(e,"^[A-Za-z]+$",!0),alpha_num:e=>this.testByRegex(e,"^[A-Za-z0-9]+$",!0),alpha_dash:e=>this.testByRegex(e,"^[A-Za-z0-9_-]+$",!0),same:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:this.areValuesEqual(e,n)},different:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:!this.areValuesEqual(e,n)},range:(e,t)=>{if(e==null||e==="")return!0;let r=Number(e),i=Number(t?.[0]),n=Number(t?.[1]);return Number.isNaN(r)||Number.isNaN(i)||Number.isNaN(n)?!1:r>=i&&r<=n},digits:(e,t)=>{if(typeof e!="string")return!1;let r=Number(t?.[0]??0);return r<=0?!1:new RegExp(`^\\d{${r}}$`).test(e)},ip:e=>typeof e=="string"&&(this.isIPv4(e)||this.isIPv6(e)),mimes:(e,t)=>this.validateMimes(e,t),max_size:(e,t)=>{let r=Number(t?.[0]);return!r||r<=0?!0:this.validateMaxSize(e,r)},after:(e,t,r)=>this.compareDates(e,t,r,"after"),before:(e,t,r)=>this.compareDates(e,t,r,"before")};this.beforeInputValidators={number:e=>/^-?\d*\.?\d*$/.test(e),integer:e=>/^-?\d*$/.test(e),email:e=>/^[\w@.\-+]*$/.test(e),phone:e=>/^[0-9()\s+-.]*$/.test(e),letters:e=>/^[a-zA-Z]*$/.test(e),lettersSpaces:e=>/^[a-zA-Z\s]*$/.test(e),lettersNumbers:e=>/^[a-zA-Z0-9]*$/.test(e),alpha:e=>/^[A-Za-z]*$/.test(e),alpha_num:e=>/^[A-Za-z0-9]*$/.test(e),alpha_dash:e=>/^[A-Za-z0-9_-]*$/.test(e),digits:(e,t)=>{let r=Number(t?.[0]??0);return r<=0?/^\d*$/.test(e):new RegExp(`^\\d{0,${r}}$`).test(e)},url:e=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(e),pattern:(e,t)=>{try{return new RegExp(t?.[0]||"").test(e)}catch{return!0}}}}process({rules:e,value:t,type:r="input",context:i}){let n=[];for(let u of e){var o=null,s=null,a=!0,l=!0;r=="input"&&(s=this.inputValidators[u.key],!s)||r=="beforeinput"&&(o=this.beforeInputValidators[u.key],!o)||(s&&(a=s(t,u.params,i)),o&&(l=o(t,u.params,i)),l||n.push(this.getErrorMessage(u.key,u.params)),a||n.push(this.getErrorMessage(u.key,u.params)))}return{valid:n.length===0,errors:n}}getErrorMessage(e,t){switch(e){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${t?.[0]} characters`;case"max":return`Maximum ${t?.[0]} characters`;case"phone":return"Invalid phone number";case"number":return"Only numbers are allowed";case"integer":return"Only whole numbers are allowed";case"url":return"Invalid URL address";case"checked":return"You must accept";case"regex":return"Value does not match the required pattern";case"alpha":return"Only letters are allowed";case"alpha_num":return"Only letters and numbers are allowed";case"alpha_dash":return"Only letters, numbers, dashes, and underscores are allowed";case"same":return"Values do not match";case"different":return"Values must be different";case"range":return`Value must be between ${t?.[0]} and ${t?.[1]}`;case"digits":return`Value must contain exactly ${t?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${t?.join(", ")}`;case"max_size":return`File must be smaller than ${t?.[0]} KB`;case"after":return`Date must be after ${t?.[0]}`;case"before":return`Date must be before ${t?.[0]}`;default:return"Invalid value"}}validateMimes(e,t){if(!t||t.length===0)return!0;let r=this.extractFiles(e);if(r.length===0)return!0;let i=t.map(n=>n.trim().toLowerCase());return r.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(e,t){let r=this.extractFiles(e);if(r.length===0)return!0;let i=t*1024;return r.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(e){if(!e)return[];let t=[];return typeof File<"u"&&e instanceof File?(t.push(e),t):typeof FileList<"u"&&e instanceof FileList?Array.from(e):Array.isArray(e)?(e.forEach(r=>{t.push(...this.extractFiles(r))}),t):typeof e=="object"&&("name"in e||"size"in e||"type"in e)?(t.push(e),t):(typeof e=="string"&&e!==""&&t.push({name:e}),t)}isMimeAllowed(e,t){let r=(e.type||"").toLowerCase(),i=this.getFileExtension(e.name);return t.some(n=>{let o=n.replace(/^\./,"").toLowerCase();return o?o.includes("/")?r===o:i===o:!1})}getFileExtension(e){if(!e)return"";let t=e.split(".");return t.length<=1?"":(t.pop()||"").toLowerCase()}compareDates(e,t,r,i){if(e==null||e==="")return!0;let n=t?.[0];if(!n)return!0;let o=this.toDate(e),s=this.resolveDateReference(n,r);return!o||!s?!1:i==="after"?o.getTime()>s.getTime():o.getTime()<s.getTime()}resolveDateReference(e,t){let r=this.getContextValue(t,e);if(r!==void 0)return this.toDate(r);if(e.toLowerCase()==="now")return new Date;if(e.toLowerCase()==="today"){let i=new Date;return i.setHours(0,0,0,0),i}return this.toDate(e)}toDate(e){if(e==null||e==="")return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e=="string"){let t=Date.parse(e);if(!Number.isNaN(t))return new Date(t)}return null}testByRegex(e,t,r=!1){if(t==null||t==="")return!0;let i=typeof e=="string"?e:e==null?"":String(e);if(r&&i==="")return!0;try{let{source:n,flags:o}=this.normalizeRegex(t);return new RegExp(n,o).test(i)}catch{return!0}}normalizeRegex(e){let t=e.trim();if(t.startsWith("/")&&t.lastIndexOf("/")>0){let r=t.lastIndexOf("/"),i=t.slice(1,r),n=t.slice(r+1);return{source:i,flags:n}}return{source:t,flags:""}}getContextValue(e,t){if(!(!e||!t)){if(e.values&&Object.prototype.hasOwnProperty.call(e.values,t))return e.values[t];if(e.getValue)return e.getValue(t)}}areValuesEqual(e,t){return Array.isArray(e)||Array.isArray(t)?JSON.stringify(e)===JSON.stringify(t):e===t}isIPv4(e){let t=e.split(".");return t.length!==4?!1:t.every(r=>{if(!/^\d+$/.test(r))return!1;let i=Number(r);return i>=0&&i<=255})}isIPv6(e){if(!e)return!1;if(e==="::")return!0;let t=e.split("::");if(t.length>2)return!1;let r=/^[0-9a-fA-F]{1,4}$/,i=e.split(":");return t.length===2?i.every(n=>n===""||r.test(n))&&i.length<=8:i.length===8&&i.every(n=>r.test(n))}};var Rt=class{constructor(){this.domAttribute=new Q;this.recordAttribute=new G;this.transformNullify=new z;this.boundingClientRect=new K;this.relativePosition=new Z(this.transformNullify);this.unitParser=new tt;this.lerp=new J;this.adaptiveLerp=new et;this.originParser=new rt;this.colorParser=new it;this.validation=new It;this.easingFunction=new nt;this.magneticPull=new st;this.lerpColor=new ot;this.lerpVector=new at;this.transformScaleParser=new lt;this.optionsParser=new kt;this.ruleParser=new ct}};function Dt(){let c=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,e=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,t=typeof window<"u"?window.innerWidth<=768:!1;return c||e||t}var _t=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}begin(){this.isOpen||(this.isOpen=!0)}setVars(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let r=this.pendingVars.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingVars.set(e,r)}setProps(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let r=this.pendingProps.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingProps.set(e,r)}run(e){let t=this.isOpen;t||this.begin();try{e(),t||this.commit()}catch(r){throw t||this.cancel(),r}}commit(){if(this.isOpen){this.isOpen=!1;for(let[e,t]of this.pendingVars){let r=e.style;for(let[i,n]of Object.entries(t))r.setProperty(i,String(n))}this.pendingVars.clear();for(let[e,t]of this.pendingProps){let r=e.style;for(let[i,n]of Object.entries(t))r[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},T=new _t;var ye=new WeakMap,k=5e-4,Y="default",Ut="[string-cursor],[data-string-cursor]",Se="[string-cursor-content],[data-string-cursor-content]",Yt=1/240;function Ve(c){let e=ye.get(c);return e||(e={prevX:Number.NaN,prevY:Number.NaN},ye.set(c,e)),e}var Xt=class extends x{constructor(t){super(t);this.cursorPrev={x:Number.NaN,y:Number.NaN,stepX:Number.NaN,stepY:Number.NaN};this.cursorPortals=new Map;this.hoveredObjects=new Set;this.globalListenersBound=!1;this.boundBeforeUnload=()=>this.cleanupHoverTargets();this.boundPageHide=()=>this.cleanupHoverTargets();this.boundVisibilityChange=()=>{document.hidden&&this.cleanupHoverTargets()};this.enabled=!0;this.lastFrameTime=0;this.htmlKey="cursor",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"target-disable",type:"boolean",fallback:this.settings["target-disable"]},{key:"target-style-disable",type:"boolean",fallback:this.settings["target-style-disable"]},{key:"cursor-target",type:"string",fallback:this.settings["cursor-target"]??Y},{key:"target-class",type:"string",fallback:this.settings["target-class"]},{key:"cursor-class",type:"string",fallback:this.settings["cursor-class"]},{key:"alignment",type:{type:"enum",values:["start","center","end"]},fallback:this.settings.alignment},{key:"lerp",type:"number",fallback:this.settings.lerp,transform:r=>this.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})}],Dt()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n),r.setProperty("mouse-x",0),r.setProperty("mouse-y",0),r.setProperty("mouse-pixel-x",0),r.setProperty("mouse-pixel-y",0),r.setProperty("is-mouse-over",!1),r.setProperty("is-mouse-move",!1)}onMutate(t){if(!this.enabled)return;let r=performance.now(),i=this.lastFrameTime?(r-this.lastFrameTime)/1e3:.016;this.lastFrameTime=r,i>.1&&(i=.1),i<Yt&&(i=Yt);let n=this.data.cursor.targetX,o=this.data.cursor.targetY;if(this.objects.forEach(s=>{let a=s.getProperty("is-mouse-over"),l=s.getProperty("cursor-target-disable"),u=s.getProperty("lerp")??.15,d=this.getFrameAdjustedLerp(u,i),p=this.getObjectDimensions(s),{halfWidth:m,halfHeight:g,width:h,height:v}=p;if(a&&!l){let{cx:b,cy:f}=this.centers.getCenter(s),S=n-(b-m),y=o-(f-g),M=s.getProperty("mouse-pixel-x")??0,w=s.getProperty("mouse-pixel-y")??0,E=M-S,P=w-y;if(E*E+P*P>1e-4){(s.getProperty("is-mouse-move")??!1)||(s.setProperty("is-mouse-move",!0),s.setProperty("mouse-pixel-x",S),s.setProperty("mouse-pixel-y",y),s.setProperty("mouse-x",S),s.setProperty("mouse-y",y),M=S,w=y,this.events.emit(`cursor:start:${s.id}`,null));let L=this.tools.lerp.process({from:M,to:S,progress:d}),A=this.tools.lerp.process({from:w,to:y,progress:d}),O=M+L,j=w+A,_=Math.abs(O-M)>k||Math.abs(j-w)>k;s.setProperty("mouse-pixel-x",O),s.setProperty("mouse-pixel-y",j);let V=s.getProperty("alignment")??"center",F=this.calculateOffset(V,O,h),W=this.calculateOffset(V,j,v);s.setProperty("mouse-x",F),s.setProperty("mouse-y",W),this.setMouseCoordinates(s,F,W)&&this.events.emit(`cursor:move:${s.id}`,{x:F,y:W}),_&&this.events.emit(`cursor:pixel:${s.id}`,{x:O,y:j})}else s.setProperty("mouse-pixel-x",S),s.setProperty("mouse-pixel-y",y),s.getProperty("is-mouse-move")&&(s.setProperty("is-mouse-move",!1),this.events.emit(`cursor:end:${s.id}`,null)),this.setMouseCoordinates(s,0,0)}else{let b=s.getProperty("mouse-x")??0,f=s.getProperty("mouse-y")??0;if(b!==0||f!==0){s.setProperty("is-mouse-move",!1);let S=this.calculateOffset("center",m,h),y=this.calculateOffset("center",g,v),M=b+this.tools.lerp.process({from:b,to:S,progress:d}),w=f+this.tools.lerp.process({from:f,to:y,progress:d});s.setProperty("mouse-x",M),s.setProperty("mouse-y",w),Math.abs(M)<.001&&Math.abs(w)<.001?(s.setProperty("mouse-x",0),s.setProperty("mouse-y",0),s.setProperty("mouse-pixel-x",0),s.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(s,0,0)):this.setMouseCoordinates(s,M,w)}}}),this.cursorPortals.size>0){let{stepX:s,stepY:a,smoothedX:l,smoothedY:u}=this.data.cursor,d=this.cursorPrev;(!Number.isFinite(d.x)||Math.abs(l-d.x)>k||Math.abs(u-d.y)>k||Math.abs(s-d.stepX)>k||Math.abs(a-d.stepY)>k)&&(this.events.emit("cursor",{stepX:s,stepY:a,x:l,y:u}),this.cursorPrev={x:l,y:u,stepX:s,stepY:a});let m=this.data.cursor.targetX,g=this.data.cursor.targetY;this.cursorPortals.forEach(h=>{h.forEach(v=>{this.updatePortalPosition(v,m,g,i)})})}}onObjectConnected(t){let r=t.htmlElement;this.centers.attach(t),t.setProperty("mouseleave",()=>{this.onMouseLeave(t)}),t.setProperty("mouseenter",()=>{this.onMouseEnter(t)}),t.setProperty("onEnterEvent",this.onEnterObject.bind(this)),t.events.on("enter",t.getProperty("onEnterEvent")),t.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),t.events.on("leave",t.getProperty("onLeaveEvent"))}getCursorClass(t){let r=t.getProperty("cursor-class");return r!=null&&r.length>0?r:null}onMouseEnter(t){if(!document.contains(t.htmlElement))return;t.setProperty("is-mouse-over",!0),this.hoveredObjects.add(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.add(r),this.incrementPortalHover(i)}),t.htmlElement.addEventListener("mouseleave",t.getProperty("mouseleave"))}onMouseLeave(t){t.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.remove(r),this.decrementPortalHover(i)}),document.contains(t.htmlElement)&&t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}onEnterObject(t){t.htmlElement.addEventListener("mouseenter",t.getProperty("mouseenter"))}onLeaveObject(t){t.htmlElement.removeEventListener("mouseenter",t.getProperty("mouseenter")),t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}safariNavigationCleanup(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onElementRemovedFromDOM(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onObjectDisconnected(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(t,r){this.enabled&&((this.shouldRefreshPortals(t)||this.shouldRefreshPortals(r))&&this.collectCursorPortals(),r.length>0&&this.handleRemovedNodes(r))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(Ut).forEach(r=>{if(!(r instanceof HTMLElement))return;let i=this.resolvePortalId(r),n=this.resolvePortalLerp(r),o=r.matches(Se)?r:r.querySelector(Se),s=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:r,content:o,prev:{x:s,y:a,stepX:0,stepY:0},hoverCount:0,showTimer:null,lerp:n},u=this.cursorPortals.get(i);u?u.push(l):this.cursorPortals.set(i,[l])})}resolvePortalId(t){let r=[t.getAttribute("data-string-cursor"),t.getAttribute("string-cursor"),t.getAttribute("data-string-cursor-id"),t.getAttribute("string-cursor-id")];for(let i of r)if(i&&i.trim().length>0)return i.trim();return Y}resolvePortalLerp(t){let r=t.getAttribute("data-string-cursor-lerp")??t.getAttribute("string-cursor-lerp")??this.settings["cursor-lerp"];if(!r)return null;let i=parseFloat(r);if(!Number.isFinite(i))return null;let n=Math.min(1,Math.max(.01,i));return this.tools.adaptiveLerp.process({value:n,inMin:.1,inMax:1,outMin:.05,outMax:.65})}shouldRefreshPortals(t){for(let r of t)if(r instanceof Element&&(r.matches(Ut)||r.querySelector(Ut)))return!0;return!1}withPortalsForObject(t,r){this.getPortalsForObject(t).forEach(n=>r(n))}getPortalsForObject(t){if(this.cursorPortals.size===0)return[];let r=this.extractPortalIds(t),i=[];if(r.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let o=n.length>0?n:Y,s=this.cursorPortals.get(o);s&&s.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(Y)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(o=>i.push(o))}return i}extractPortalIds(t){if(!t)return[Y];let r=t.getProperty("cursor-target");return typeof r!="string"||r.trim().length===0?[Y]:r.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(t){t.hoverCount++,t.element.classList.add("-showing"),t.element.classList.remove("-show"),this.restartPortalShowTimer(t)}decrementPortalHover(t){t.hoverCount=Math.max(0,t.hoverCount-1),t.hoverCount===0&&(this.clearPortalShowTimer(t),t.element.classList.remove("-showing"),t.element.classList.remove("-show"))}restartPortalShowTimer(t){this.clearPortalShowTimer(t),t.showTimer=setTimeout(()=>{if(!t.element.isConnected){t.showTimer=null;return}t.element.classList.remove("-showing"),t.element.classList.add("-show"),t.showTimer=null},1200)}clearPortalShowTimer(t){t.showTimer&&(clearTimeout(t.showTimer),t.showTimer=null)}updatePortalPosition(t,r,i,n){if(!t.element.isConnected)return;let o=t.prev,s=Number.isFinite(o.x)?o.x:r,a=Number.isFinite(o.y)?o.y:i,l=t.lerp??.1,u=this.getFrameAdjustedLerp(l,n),d=(r-s)*u,p=(i-a)*u,m=n>1e-4?n:1/60,g=d/(m*60),h=p/(m*60);if(Math.abs(d)<k&&Math.abs(p)<k)return;let v=s+d,b=a+p;t.element.style.setProperty("--x",v.toFixed(2)),t.element.style.setProperty("--y",b.toFixed(2)),t.element.style.setProperty("--x-lerp",g.toFixed(3)),t.element.style.setProperty("--y-lerp",h.toFixed(3)),o.x=v,o.y=b,o.stepX=d,o.stepY=p}handleRemovedNodes(t){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(r=>{r.htmlElement.isConnected||this.onElementRemovedFromDOM(r)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>this.safariNavigationCleanup(t))}bindGlobalLifecycleListeners(){this.globalListenersBound||(window.addEventListener("beforeunload",this.boundBeforeUnload),window.addEventListener("pagehide",this.boundPageHide),document.addEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!0)}unbindGlobalLifecycleListeners(){this.globalListenersBound&&(window.removeEventListener("beforeunload",this.boundBeforeUnload),window.removeEventListener("pagehide",this.boundPageHide),document.removeEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!1)}setMouseCoordinates(t,r,i){if(t.getProperty("cursor-target-style-disable"))return!1;let n=Ve(t),o=Math.abs(r)<k&&Number.isFinite(n.prevX)?n.prevX:Math.round(r*100)/100,s=Math.abs(i)<k&&Number.isFinite(n.prevY)?n.prevY:Math.round(i*100)/100;if(Number.isFinite(n.prevX)&&Math.abs(o-n.prevX)<=k&&Number.isFinite(n.prevY)&&Math.abs(s-n.prevY)<=k)return!1;n.prevX=o,n.prevY=s;let a=o.toFixed(2),l=s.toFixed(2);return this.applyToElementAndConnects(t,u=>{T.setVars(u,{"--x":a,"--y":l})}),!0}getFrameAdjustedLerp(t,r){let i=Math.min(.99,Math.max(.001,t));if(!Number.isFinite(r)||r<=0)return i;let o=Math.max(r,Yt)*60,s=1-Math.pow(1-i,o);return Math.min(.999,Math.max(1e-4,s))}getObjectDimensions(t){let r=t.htmlElement,i=r.offsetWidth||r.clientWidth||r.scrollWidth||1,n=r.offsetHeight||r.clientHeight||r.scrollHeight||1,o=t.getProperty("half-width"),s=t.getProperty("half-height"),a=typeof o=="number"&&Number.isFinite(o)?o:i/2,l=typeof s=="number"&&Number.isFinite(s)?s:n/2,u=a>0?a*2:i,d=l>0?l*2:n;return{width:u,height:d,halfWidth:a,halfHeight:l}}calculateOffset(t,r,i){switch(t){case"start":return r/i;case"end":return(r-i)/i;case"center":default:return(r-i/2)/(i/2)}}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&this.centers.detach(r),super.removeObject(t)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var qt=class extends x{constructor(e){super(e),this.htmlKey="impulse",this.attributesToMap.push({key:"position-strength",type:"number",fallback:this.settings["position-strength"]},{key:"position-tension",type:"number",fallback:this.settings["position-tension"]},{key:"position-friction",type:"number",fallback:this.settings["position-friction"]},{key:"position-max-velocity",type:"number",fallback:this.settings["position-max-velocity"]},{key:"position-update-threshold",type:"number",fallback:this.settings["position-update-threshold"]},{key:"rotation-strength",type:"number",fallback:this.settings["rotation-strength"]},{key:"rotation-tension",type:"number",fallback:this.settings["rotation-tension"]},{key:"rotation-friction",type:"number",fallback:this.settings["rotation-friction"]},{key:"rotation-max-angular-velocity",type:"number",fallback:this.settings["rotation-max-angular-velocity"]},{key:"rotation-max-angle",type:"number",fallback:this.settings["rotation-max-angle"]},{key:"rotation-update-threshold",type:"number",fallback:this.settings["rotation-update-threshold"]},{key:"max-offset",type:"number",fallback:this.settings["max-offset"]},{key:"sleep-epsilon",type:"number",fallback:this.settings["sleep-epsilon"]},{key:"continuous-push",type:"boolean",fallback:this.settings["continuous-push"]})}onObjectConnected(e){super.onObjectConnected(e),e.setProperty("offset-x",0),e.setProperty("offset-y",0),e.setProperty("velocity-x",0),e.setProperty("velocity-y",0),e.setProperty("angle-deg",0),e.setProperty("ang-vel-deg",0),e.setProperty("__prev-css-x",0),e.setProperty("__prev-css-y",0),e.setProperty("__prev-css-rot",0),e.setProperty("__push-latch",!1),e.setProperty("__rotate-latch",!1),this.hover.track(e),this.centers.attach(e)}onObjectDisconnected(e){this.hover.untrack(e),this.centers.detach(e)}onMouseMove(e){if(!e)return;let t=this.data.cursor.velocityX,r=this.data.cursor.velocityY;if(t===0&&r===0)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,o=this.getElementsAtPoint(i,n);for(let s of this.objects)if(o.includes(s.htmlElement)){{let d=s.htmlElement.getBoundingClientRect(),p=d.width||1,m=Math.max(0,Math.min(1,(this.data.cursor.targetX-d.left)/p));this.events.emit(`object:impulse:${s.id}:side`,{value:m})}let l=s.getProperty("position-strength")||0;if(l!==0){let d=s.getProperty("continuous-push")??!0,p=s.getProperty("__push-latch")===!0;if(d||!p){let m=s.getProperty("velocity-x")||0,g=s.getProperty("velocity-y")||0;m+=t*l,g+=r*l,s.setProperty("velocity-x",m),s.setProperty("velocity-y",g),d||s.setProperty("__push-latch",!0)}}let u=s.getProperty("rotation-strength")??.75;if(u!==0){let d=s.getProperty("continuous-push")??!0,p=s.getProperty("__rotate-latch")===!0;if(d||!p){let{cx:m,cy:g}=this.centers.getCenter(s),h=i-m,v=n-g,b=h*r-v*t,f=s.getProperty("ang-vel-deg")||0;f+=b*u*.02,s.setProperty("ang-vel-deg",f),d||s.setProperty("__rotate-latch",!0)}}}}getElementsAtPoint(e,t){return document.elementsFromPoint(e,t)}onFrame(e){let t=this.data.cursor.targetX,r=this.data.cursor.targetY,i=this.getElementsAtPoint(t,r),n=new Set(i);for(let o of this.objects)!n.has(o.htmlElement)&&o.getProperty("__push-latch")===!0&&o.setProperty("__push-latch",!1),!n.has(o.htmlElement)&&o.getProperty("__rotate-latch")===!0&&o.setProperty("__rotate-latch",!1);for(let o=0;o<this.objects.length;o++){let s=this.objects[o],a=s.getProperty("offset-x")||0,l=s.getProperty("offset-y")||0,u=s.getProperty("velocity-x")||0,d=s.getProperty("velocity-y")||0,p=s.getProperty("position-tension")??.05,m=s.getProperty("position-friction")??.15,g=s.getProperty("position-max-velocity")??120,h=s.getProperty("max-offset")??220;u-=p*a,d-=p*l;let v=1-m;u*=v,d*=v,u>g?u=g:u<-g&&(u=-g),d>g?d=g:d<-g&&(d=-g),a+=u,l+=d,a>h?a=h:a<-h&&(a=-h),l>h?l=h:l<-h&&(l=-h);let b=s.getProperty("angle-deg")||0,f=s.getProperty("ang-vel-deg")||0,S=s.getProperty("rotation-tension")??.06,y=s.getProperty("rotation-friction")??.18,M=s.getProperty("rotation-max-angular-velocity")??6,w=s.getProperty("rotation-max-angle")??18;f-=S*b,f*=1-y,f>M?f=M:f<-M&&(f=-M),b+=f,b>w?(b=w,f*=.35):b<-w&&(b=-w,f*=.35);let E=s.getProperty("sleep-epsilon")??.01,P=u*u+d*d<E*E&&a*a+l*l<E*E,I=Math.abs(f)<E&&Math.abs(b)<E;P?(u||d||a||l)&&(s.setProperty("offset-x",0),s.setProperty("offset-y",0),s.setProperty("velocity-x",0),s.setProperty("velocity-y",0),a=l=u=d=0):(s.setProperty("offset-x",a),s.setProperty("offset-y",l),s.setProperty("velocity-x",u),s.setProperty("velocity-y",d)),I?(b||f)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),b=f=0):(s.setProperty("angle-deg",b),s.setProperty("ang-vel-deg",f));let C=s.getProperty("position-update-threshold")??.1,L=s.getProperty("rotation-update-threshold")??.15,A=s.getProperty("__prev-css-x")||0,O=s.getProperty("__prev-css-y")||0,j=s.getProperty("__prev-css-rot")||0,_=Math.round(a*10)/10,V=Math.round(l*10)/10,F=Math.round(b*10)/10,W=Math.abs(_-A)>C||Math.abs(V-O)>C,ht=Math.abs(F-j)>L;(W||ht)&&(this.applyToElementAndConnects(s,jt=>{W&&(jt.style.setProperty("--push-x",String(_)),jt.style.setProperty("--push-y",String(V)),this.events.emit(`object:impulse:${s.id}:move`,{x:_,y:V})),ht&&(jt.style.setProperty("--push-rotation",String(F)),this.events.emit(`object:impulse:${s.id}:rotate`,{rotation:F}))}),W&&(s.setProperty("__prev-css-x",_),s.setProperty("__prev-css-y",V)),ht&&s.setProperty("__prev-css-rot",F))}}};var Kt=class extends x{constructor(e){super(e),this.htmlKey="magnetic",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"strength",type:"number",fallback:this.settings.strength},{key:"radius",type:"number",fallback:this.settings.radius}]}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("is-magneting",!1),t.setProperty("magnetic-target-x",0),t.setProperty("magnetic-target-y",0),t.setProperty("magnetic-x",0),t.setProperty("magnetic-y",0),t.setProperty("lerp",.1)}onMouseMove(e){this.objects.forEach(t=>{let i=t.htmlElement.getBoundingClientRect(),n=i.left+i.width/2,o=i.top+i.height/2,s=e.clientX-n,a=e.clientY-o,l=Math.sqrt(s**2+a**2),u=t.getProperty("radius")??0,d=t.getProperty("strength")??0,p=this.tools.magneticPull.process({distance:l,radius:u,strength:d});t.setProperty("magnetic-target-x",s*p),t.setProperty("magnetic-target-y",a*p),p>0&&t.setProperty("is-magneting",!0)})}onFrame(e){this.objects.forEach(t=>{if(t.getProperty("is-magneting")){let r=t.getProperty("magnetic-x")??0,i=t.getProperty("magnetic-y")??0,n=t.getProperty("lerp")??0,o=t.getProperty("magnetic-target-x")??0,s=t.getProperty("magnetic-target-y")??0,a=this.tools.lerp.process({from:r,to:o,progress:n}),l=this.tools.lerp.process({from:i,to:s,progress:n});a>-.01&&a<.01&&(a=0,t.setProperty("magnetic-x",t.getProperty("magnetic-target-x"))),l>-.01&&l<.01&&(l=0,t.setProperty("magnetic-y",t.getProperty("magnetic-target-y"))),r+=a,i+=l,t.setProperty("magnetic-x",r),t.setProperty("magnetic-y",i),this.events.emit(`magnetic:move:${t.id}`,{x:r,y:i}),this.applyToElementAndConnects(t,u=>{u.style.setProperty("--magnetic-x",r.toString()),u.style.setProperty("--magnetic-y",i.toString())}),(t.getProperty("magnetic-target-x")==r||t.getProperty("magnetic-target-y")==i)&&t.setProperty("is-magneting",!1)}})}};var Qt=class{constructor(){this.measureQueue=[];this.mutateQueue=[];this.scheduled=!1}measure(e){this.measureQueue.push(e),this.schedule()}mutate(e){this.mutateQueue.push(e),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,requestAnimationFrame(()=>{let e=this.measureQueue;this.measureQueue=[];for(let r=0;r<e.length;r++)try{e[r]()}catch(i){console.error("Error in frameDOM measure task:",i)}let t=this.mutateQueue;this.mutateQueue=[];for(let r=0;r<t.length;r++)try{t[r]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}))}},R=new Qt;var ut=class extends x{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Dt()&&(this.enabled=!1)}onObjectConnected(t){this.enabled&&(super.onObjectConnected(t),this.centers.attach(t),this.hover.track(t))}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&(this.centers.detach(r),this.hover.untrack(r)),super.removeObject(t)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(t){this.enabled&&(super.onMouseMoveMeasure(t),this.refreshPointerState())}onScrollMeasure(t){this.enabled&&(super.onScrollMeasure(t),this.refreshPointerState())}getCursorTargets(t=!1){if(!this.enabled)return[];let r=this.hover.activeObjects();return this.nearOnly&&r.length?r:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:t?this.objectsOnPage:this.objects}refreshPointerState(t,r=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,o=t?[t]:this.getCursorTargets(r),s=!this.nearOnly&&this.maxDistanceMultiplier>0?Math.pow(this.data.viewport.windowWidth*this.maxDistanceMultiplier,2):null;for(let a of o){let{cx:l,cy:u}=this.centers.getCenter(a),d=i-l,p=n-u,m=d*d+p*p;if(this.nearOnly){if(m>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(s!==null&&m>s)continue;a.setProperty("dx",d),a.setProperty("dy",p),a.setProperty("dist",Math.sqrt(m))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,R.measure(()=>{this.refreshPointerState(),R.mutate(()=>{this.scrollUpdateScheduled=!1,T.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var Gt=Math.PI*2,We=180/Math.PI,Me=c=>c<0?0:c>1?1:c,Be=(c,e)=>{let t=(e-c)%Gt;return t>Math.PI&&(t-=Gt),t<-Math.PI&&(t+=Gt),c+t},xe=new WeakMap,ze=c=>{let e=xe.get(c);return e||(e={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},xe.set(c,e)),e},Zt=class extends ut{constructor(e){super(e),this.htmlKey="spotlight",this.nearOnly=!1,this.useAllObjects=!1,this.maxDistanceMultiplier=1,this.attributesToMap.push({key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>Me(this.tools.adaptiveLerp.process({value:t,inMin:.1,inMax:1,outMin:.05,outMax:.65}))},{key:"angle-threshold",type:"number",fallback:.2},{key:"distance-threshold",type:"number",fallback:.5},{key:"deadzone",type:"number",fallback:4},{key:"dist-max",type:"number",fallback:0})}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("spotlight-angle-rad",0),t.setProperty("spotlight-distance",0),t.setProperty("spotlight-angle-rad-target",0),t.setProperty("spotlight-distance-target",0),R.measure(()=>{this.refreshPointerState(t,!0),R.mutate(()=>{T.run(()=>{this.updateSpotlightState(t,{forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0})})})})}onMutate(e){if(this.enabled){super.onMutate(e);let t=this.getCursorTargets(!1);(t.length>0?t:this.getCursorTargets(!0)).forEach(i=>{this.updateSpotlightState(i)})}}onCursorScrollUpdate(){let e=this.getCursorTargets(!1);(e.length>0?e:this.getCursorTargets(!0)).forEach(r=>{this.updateSpotlightState(r,{bypassDeadzone:!0})})}updateSpotlightState(e,t={}){let r=e.getProperty("dx"),i=e.getProperty("dy"),n=e.getProperty("dist");if(!Number.isFinite(r)||!Number.isFinite(i)||!Number.isFinite(n))return;let o=ze(e),s=e.getProperty("deadzone")??4;(t.bypassDeadzone||n>s)&&(o.tAngle=Math.atan2(i,r));let a=e.getProperty("dist-max")??0;if(o.tDist=a>0?Math.min(n,a):n,e.setProperty("spotlight-distance-target",o.tDist),e.setProperty("spotlight-angle-rad-target",o.tAngle),t.forceImmediate)o.angle=o.tAngle,o.dist=o.tDist;else{let g=Me(e.getProperty("lerp")??.15),h=Be(o.angle,o.tAngle);o.angle+=(h-o.angle)*g,o.dist+=(o.tDist-o.dist)*g}e.setProperty("spotlight-angle-rad",o.angle),e.setProperty("spotlight-distance",o.dist);let l=o.angle*We-90,u=e.getProperty("angle-threshold")??.2,d=e.getProperty("distance-threshold")??.5,p=t.forceEmit||Number.isNaN(o.prevDeg)||Math.abs(l-o.prevDeg)>u,m=t.forceEmit||Number.isNaN(o.prevDist)||Math.abs(o.dist-o.prevDist)>d;if(p||m){let g=Math.round(l*10)/10,h=Math.round(o.dist*10)/10;this.applyToElementAndConnects(e,v=>{T.setVars(v,{"--spotlight-angle":String(g),"--spotlight-angle-deg":`${g}deg`,"--spotlight-distance":String(h)})}),o.prevDeg=l,o.prevDist=o.dist,this.events.emit(`spotlight:update:${e.id}`,{distance:h,angleDeg:g})}}};var Ee="-aspect-ready";function we(c){let e=new DataView(c);return c.byteLength<24?{width:0,height:0}:e.getUint32(0)!==2303741511||e.getUint32(4)!==218765834?{width:0,height:0}:e.getUint32(12)!==13||e.getUint32(16)!==1229472850?{width:0,height:0}:{width:e.getUint32(20,!1),height:e.getUint32(24,!1)}}function Ce(c){let e=new DataView(c);if(e.getUint16(0)!==65496)return{width:0,height:0};let t=2;for(;t+9<c.byteLength;){let r=e.getUint16(t);if(t+=2,r===65498||r===65497)break;let i=e.getUint16(t);if(i<2||t+i>c.byteLength)break;if(r>=65472&&r<=65475||r>=65477&&r<=65479||r>=65481&&r<=65483||r>=65485&&r<=65487)return{height:e.getUint16(t+3),width:e.getUint16(t+5)};t+=i}return{width:0,height:0}}function Pe(c){let e=new DataView(c);if(c.byteLength<16)return{width:0,height:0};if(e.getUint32(0,!0)!==1179011410||e.getUint32(8,!0)!==1346520407)return{width:0,height:0};let t=12;for(;t+8<=c.byteLength;){let r=e.getUint32(t,!1),i=e.getUint32(t+4,!0),n=t+8;if(r===1448097880){let o=(e.getUint16(n+4,!0)|e.getUint8(n+6)<<16)+1,s=(e.getUint16(n+7,!0)|e.getUint8(n+9)<<16)+1;return{width:o,height:s}}if(r===1448097824&&n+10<=c.byteLength&&e.getUint8(n+3)===157&&e.getUint8(n+4)===1&&e.getUint8(n+5)===42){let o=e.getUint16(n+6,!0)&16383,s=e.getUint16(n+8,!0)&16383;return{width:o,height:s}}if(r===1448097868&&n+5<=c.byteLength&&e.getUint8(n)===47){let o=e.getUint8(n+1),s=e.getUint8(n+2),a=e.getUint8(n+3),l=e.getUint8(n+4),u=1+((s&63)<<8|o),d=1+((l&15)<<10|a<<2|(s&192)>>6);return{width:u,height:d}}t=n+i+(i&1)}return{width:0,height:0}}function Te(c,e){let t=(e||"").toLowerCase();if(t.includes("png"))return we(c);if(t.includes("jpeg")||t.includes("jpg"))return Ce(c);if(t.includes("webp"))return Pe(c);let r=we(c);return r.width||(r=Ce(c),r.width)||(r=Pe(c),r.width)?r:{width:0,height:0}}async function $e(c,e,t){let r=await fetch(c,{mode:"cors",credentials:e?.credentials??"omit",referrerPolicy:e?.referrerPolicy,signal:e?.signal,cache:"default"});if(!r.ok||!r.body)throw new Error(`HTTP ${r.status}`);let i=r.headers.get("content-type"),n=r.body.getReader(),o=1048576,s=4096,a=new Uint8Array(o),l=0,u=0,d=[],p=null,m=!1;for(;;){let{done:v,value:b}=await n.read();if(v)break;if(!b)continue;let f=b.buffer.slice(b.byteOffset,b.byteOffset+b.byteLength);if(d.push(f),!p&&l<o){let S=Math.min(b.byteLength,o-l);if(S>0&&(a.set(b.subarray(0,S),l),l+=S),l-u>=s){let y=l===a.byteLength?a:a.slice(0,l),M=Te(y.buffer,i);M.width&&M.height&&(p=M,!m&&t&&(t(p),m=!0)),u=l}}}if(!p){let v=await new Response(new Blob(d)).arrayBuffer(),b=Te(v,i);b.width&&b.height&&(p=b,!m&&t&&(t(p),m=!0))}let g=new Blob(d,{type:i||"application/octet-stream"}),h=URL.createObjectURL(g);return{dims:p,blobUrl:h,contentType:i}}var Jt=class extends x{constructor(t){super(t);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(r=>this.ensureState(r)),this.isStartLoaded=!0}onObjectConnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.ensureState(r);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(r);let n=o=>{this.handleInView(r,i,!!o?.inView)};i.unsubscribe&&i.unsubscribe(),this.events.on(`object:inview:${t.id}`,n),i.unsubscribe=()=>this.events.off(`object:inview:${t.id}`,n),this.isStartLoaded&&(t.getProperty("is-inview")??!1)&&this.handleInView(r,i,!0)}onObjectDisconnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.imageStates.get(r);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(t){let r=this.imageStates.get(t);if(!r){let i=this.readSource(t);return r={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(t,r),t.classList.contains("lazyLoad")||t.classList.add("lazyLoad"),t.dataset&&!t.dataset.stringLazySrc&&i&&(t.dataset.stringLazySrc=i),r}return r.src||(r.src=this.readSource(t)),r}readSource(t){let r=this.tools.domAttribute.process({element:t,key:this.htmlKey,fallback:""});return typeof r=="string"?r:r==null?"":String(r)}handleInView(t,r,i){r.pendingActivation=i,i&&(r.aspectReady?this.maybeActivateImage(t,r):r.aspectLoading||this.prepareAspectRatio(t))}async prepareAspectRatio(t){let r=this.ensureState(t);if(!r.src||r.aspectLoading||r.aspectReady)return;r.aspectLoading=!0,r.fetching=!0;let i=t.getAttribute("crossorigin"),n=t.getAttribute("referrerpolicy"),o=new AbortController;r.controller=o;try{let{blobUrl:s}=await $e(r.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:o.signal},a=>{a.width>0&&a.height>0&&!r.aspectReady&&(t.style.aspectRatio=`${a.width} / ${a.height}`,t.classList.add(Ee),r.width=a.width,r.height=a.height,r.aspectReady=!0)});r.blobUrl=s,!r.aspectReady&&r.width&&r.height&&(t.style.aspectRatio=`${r.width} / state.height`,t.classList.add(Ee),r.aspectReady=!0)}catch{r.allowSrcFallback=!0,r.aspectReady=!0}finally{r.fetching=!1,r.aspectLoading=!1,this.maybeActivateImage(t,r)}}maybeActivateImage(t,r){!r.pendingActivation||r.contentReady||r.contentLoading||!r.aspectReady||!r.src||r.fetching&&!r.blobUrl||(r.blobUrl||r.allowSrcFallback)&&this.activateImage(t,r)}activateImage(t,r){r.contentLoading=!0,this.loadingCount++;let i=s=>{r.contentLoading&&(r.contentLoading=!1,r.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),s&&(r.contentReady=!0,t.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),o=()=>i(!1);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",o,{once:!0}),t.decoding="async",t.loading=t.loading||"lazy",r.blobUrl?(t.removeAttribute("srcset"),t.removeAttribute("sizes"),t.src=r.blobUrl):t.src=r.src,t.complete&&t.naturalWidth>0&&t.naturalHeight>0&&(t.removeEventListener("load",n),t.removeEventListener("error",o),i(!0))}};var te=class extends x{constructor(t){super(t);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var At=class extends x{constructor(e){super(e),this.htmlKey=""}canConnect(e){return e.keys[0]==null}};var X=class{constructor(e){this.min=void 0;this.max=void 0;this.enable=!0;this.min=e?.min,this.max=e?.max,this.enable=e?.enable??!0}setEnable(e=!0){this.enable=e}setRange(e,t){this.min=e??void 0,this.max=t??void 0}get mediaQuery(){let e="screen";return this.min&&(e+=` and (min-width: ${this.min}px)`),this.max&&(e+=` and (max-width: ${this.max}px)`),e}},ee=class extends x{constructor(t){super(t);this.queries={0:new X({max:359}),1:new X({min:360,max:1079}),2:new X({min:1080,max:1365}),3:new X({min:1366})};this.isMobileMedia=!1;this.isTabletMedia=!1;this.isLaptopMedia=!1;this.isDesktopMedia=!1;this.matchMedias={0:window.matchMedia(this.queries[0].mediaQuery),1:window.matchMedia(this.queries[1].mediaQuery),2:window.matchMedia(this.queries[2].mediaQuery),3:window.matchMedia(this.queries[3].mediaQuery)};this._type=2}onConnect(){}onInit(){if(this.settings!=null&&this.settings.settings!=null){let t=this.settings.settings;t.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(t.mobile.min==null?null:t.mobile.min,t.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,t.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(t.tablet.min==null?null:t.tablet.min,t.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,t.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(t.laptop.min==null?null:t.laptop.min,t.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,t.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(t.desktop.min==null?null:t.desktop.min,t.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let t=this.matchMedias[0].matches&&this.queries[0].enable,r=this.matchMedias[1].matches&&this.queries[1].enable,i=this.matchMedias[2].matches&&this.queries[2].enable,n=this.matchMedias[3].matches&&this.queries[3].enable;this.isMobileMedia!=t&&this.events.emit("screen:mobile",t),this.isTabletMedia!=r&&this.events.emit("screen:tablet",r),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=t,this.isTabletMedia=r,this.isLaptopMedia=i,this.isDesktopMedia=n,document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach(s=>{let a=!1;s.hasAttribute("string-mobile")&&t&&(a=!0),s.hasAttribute("string-tablet")&&r&&(a=!0),s.hasAttribute("string-laptop")&&i&&(a=!0),s.hasAttribute("string-desktop")&&n&&(a=!0),a?s.style.display=null:s.style.display="none"})}};var re=class extends x{constructor(e){super(e),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:t=>{let[r,i]=t,n=this.tools.originParser.process({value:r}),o=this.tools.originParser.process({value:i});return{x:n,y:o}}}]}onObjectConnected(e){super.onObjectConnected(e);let t=e.getProperty("anchor");t&&this.applyToElementAndConnects(e,r=>{r.style.transformOrigin=`${t.x} ${t.y}`})}};var je=.05,_e=.01,Le=1,Ue=-1,Ye=1,ie=class extends x{constructor(t){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.maxDisplacementValue=0;this.setupItem=t=>{let r=t.getProperty("glide")??0,i=-this.data.scroll.displacement*this.maxDisplacementValue*r;this.events.emit(`object:glide:${t.id}`,i);let n=`translate3d(0, ${i}px, 0)`;t.htmlElement.style.transform=n};this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++){let r=this.objects[t];this.setupItem(r)}};this.onUpdateMobileEvent=()=>{};this.onUpdateEvent=this.onUpdateDesktopEvent;this.htmlKey="glide",this.baseVelocityMultiplier=this.settings["glide-base-velocity"]??this.baseVelocityMultiplier,this.reducedVelocityMultiplier=this.settings["glide-reduce-velocity"]??this.reducedVelocityMultiplier,this.negativeVelocityMultiplier=this.settings["glide-negative-velocity"]??this.negativeVelocityMultiplier,this.attributesToMap=[...this.attributesToMap,{key:"glide",type:"number",fallback:this.settings.glide}]}calcExpanderFactor(t){let r=t?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=r?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,r||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}onResize(){window.innerWidth>1080?(this.maxDisplacementValue=this.data.viewport.windowHeight*.1,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 r=this.objects[t],i="translate3d(0, 0px, 0)";r.htmlElement.style.transform=i,r.htmlElement.style.setProperty("--glide",this.data.scroll.displacement.toString())}}onFrame(t){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Le,this.acceleration+je),this.displacement=Math.max(_e,Math.min(Le,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Ye,Math.max(Ue,this.data.scroll.lerped*this.displacement*this.acceleration)),this.objects.forEach(r=>{this.applyToElementAndConnects(r,i=>{i.style.setProperty("--glide",this.data.scroll.displacement.toString())})}),this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}};var ne=class extends x{constructor(e){super(e),this.htmlKey="lerp"}onScrollStop(){this.objects.forEach(e=>{this.setLerpValue(e,0)})}onFrame(e){let t=e.scroll.lerped;this.objects.forEach(r=>{this.setLerpValue(r,t)})}setLerpValue(e,t){this.events.emit(`object:lerp:${e.id}`,t),e.htmlElement.style.setProperty("--lerp",t.toString())}};var Ft=class Ft extends x{constructor(t){super(t);this.updateScheduled=!1;this.htmlKey="progress",this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n)}recomputeProgress(t){let r=t.getProperty("start-position")??0,i=t.getProperty("difference-position")??0,n=0;n=Math.min(1,Math.max(0,(this.data.scroll.transformedCurrent-r)/i)),t.setProperty("progress-raw",n);let o=t.getProperty("easing"),s=typeof o=="function"?o(n):n;this.applyProgressValue(t,s)}applyProgressValue(t,r){t.setProperty("progress",r)}calculatePositions(t,r){super.calculatePositions(t,r),this.recomputeProgress(t)}onScroll(t){super.onScroll(t)}onObjectConnected(t){super.onObjectConnected(t)}onScrollMeasure(t){this.objects.forEach(r=>{this.recomputeProgress(r)})}onMutate(){this.objects.forEach(t=>{this.updateObjectProgress(t)})}updateObjectProgress(t){let r=t.getProperty("key"),i=t.getProperty("progress");if(typeof i!="number"||!Number.isFinite(i))return;let n=t.getProperty("progress-raw")??i,o=i.toString(),s=t.getProperty("easing"),a=t.getProperty("progress-emitted");this.hasProgressChanged(a,i)&&(t.setProperty("progress-emitted",i),this.events.emit(`object:progress:${t.id}`,i),this.applyToElementAndConnects(t,l=>{r&&T.setVars(l,{[r]:o})},(l,u)=>{if(!u)return;let d=u.applyProgress(n,typeof s=="function"?s:void 0);u.setProperty("progress",d),r&&T.setVars(l,{[r]:d.toString()})}))}hasProgressChanged(t,r){return t===null?!0:Math.abs(t-r)>Ft.PROGRESS_EPSILON}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=t.getProperty("key");if(!r)return;let i=n=>{n.style.removeProperty(r)};i(t.htmlElement),t.mirrorObjects.forEach(n=>{i(n.htmlElement)})}};Ft.PROGRESS_EPSILON=1e-4;var dt=Ft;var se=class extends dt{constructor(t){super(t);this.updateScheduledTransform=!1;this.calculateDesktopParallax=t=>{let r=t.getProperty("progress")??0,i=t.getProperty("parallax")??0,n=t.getProperty("parallax-position-start")??0,o=t.getProperty("parallax-position-end")??1,s=t.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=s*i*(a*n+r*a*o);return this.events.emit(`object:parallax:${t.id}`,l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=t=>(this.events.emit(`object:parallax:${t.id}`,0),{transform:"translate3d(0, 0px, 0)"});this.htmlKey="parallax",this.attributesToMap=[...this.attributesToMap,{key:"parallax",type:"number",fallback:this.settings.parallax},{key:"parallax-bias",type:"number",fallback:this.settings["parallax-bias"]}],this.calculateParallaxForObject=this.calculateDesktopParallax}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n);let o=r.getProperty("parallax-bias")??0,s=Math.abs(r.getProperty("parallax")??.2);r.setProperty("parallax-sign",Math.sign(r.getProperty("parallax"))),r.setProperty("parallax",s),r.setProperty("parallax-position-start",-.5+.5*o),r.setProperty("parallax-position-end",.5+.5*(1-o));let a=this.data.viewport.windowHeight;r.setProperty("offset-top",s*a),r.setProperty("offset-bottom",s*a)}calculatePositions(t,r){super.calculatePositions(t,r),t.setProperty("transform-value",this.calculateParallaxForObject(t))}onScroll(t){super.onScroll(t)}onResize(){let t=window.innerWidth>1080;this.calculateParallaxForObject=t?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(t){super.onScrollMeasure(t),this.objects.forEach(r=>{r.setProperty("transform-value",this.calculateParallaxForObject(r))})}onMutate(){this.objects.forEach(t=>{let r=t.getProperty("transform-value");this.applyToElementAndConnects(t,i=>{T.setProps(i,r)})})}};var Ht=class{constructor(e,t,r){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth,r=t/e*t;this.thumb.style.setProperty("--size",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startY=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startY,r=this.startScrollPosition+t/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=r,this.data.scroll.target=r,window.scrollTo(0,r),this.updateThumb()}};var Nt=class{constructor(e,t,r){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight,r=t/e*t;this.thumb.style.setProperty("--height",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startCoordinate=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startCoordinate,r=this.startScrollPosition+t/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(r,i));this.data.scroll.current=n,this.data.scroll.target=n,window.scrollTo(0,n),this.updateThumb()}};var oe=class extends x{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)}onInit(){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()}addCustomStyles(){let t=document.createElement("style");t.textContent=`
2
2
  ::-webkit-scrollbar {
3
3
  display: none;
4
4
  width: 0;
@@ -16,9 +16,9 @@ var mt=class{constructor(e=.1,t){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this
16
16
  -ms-overflow-style: none; /* IE and Edge */
17
17
  scrollbar-width: none; /* Firefox */
18
18
  }
19
- `,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 Ht(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new Nt(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateVertical}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)}};var $={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Xe(c){if(!c||!Array.isArray(c.chars)||c.chars.length===0)return[];let e=c.chars[0].splitClass??[];if(e.length===0)return[];for(let t of c.chars){let r=t.splitClass??[];if(r.length!==e.length)return[];for(let i=0;i<r.length;i++)if(r[i]!==e[i])return[]}return e}function Oe(c,e,t){let r=document.createDocumentFragment(),i=0,n=D(e,"line")||D(e,"charLine")||D(e,"wordLine"),o=0;c.forEach(l=>o+=l.words.length),o--;let s=0;c.forEach(l=>l.words.forEach(u=>s+=u.chars.length));let a=new Map;return c.forEach((l,u)=>{let d=u===c.length-1,p=r,m=[];if(n&&(p=document.createElement("span"),p.setAttribute("aria-hidden","true"),p.classList.add("-s-line"),l.isBeforeElement&&p.classList.add($.BEFORE_ELEMENT),l.isAfterElement&&p.classList.add($.AFTER_ELEMENT),p.style.setProperty("--line-index",String(l.lineIndex)),p.style.setProperty("--word-total",String(l.words.length)),ae(p,l.calculatedValues,e)),l.words.forEach((g,h)=>{n&&(o=l.words.length-1);let S=h===o;if(g.chars.length===1&&g.chars[0].token.type==="element"){let x=g.chars[0].token.node.cloneNode(!0);p.appendChild(x),S||p.appendChild(document.createTextNode("\xA0"));return}let f=g.chars.map(x=>x.char).join("");f&&m.push(f);let y=D(e,"word")||D(e,"charWord")||D(e,"wordLine"),v=y?document.createElement("span"):p,E=Xe(g);if(y&&(v.setAttribute("aria-hidden","true"),v.classList.add("-s-word"),g.isBeforeElement&&v.classList.add($.BEFORE_ELEMENT),g.isAfterElement&&v.classList.add($.AFTER_ELEMENT),v.style.setProperty("--word-index",String(g.wordIndexGlobal)),v.style.setProperty("--char-total",String(g.chars.length)),v.setAttribute("data-split-content",f),ae(v,g.calculatedValues,e),E.length&&v.classList.add(...E)),D(e,"char")||D(e,"charLine")||D(e,"charWord"))g.chars.forEach((x,P)=>{if(x.char===" "||x.char===" ")return;let I=document.createElement("span");I.setAttribute("aria-hidden","true");let C=I;C.classList.add("-s-char"),x.isBeforeElement&&C.classList.add($.BEFORE_ELEMENT),x.isAfterElement&&C.classList.add($.AFTER_ELEMENT),C.textContent=x.char,C.setAttribute("data-split-content",x.char),C.style.setProperty("--char-index",String(i++));let L=g.chars[P+1];if(L){let O=t.getKerning(x.char,L.char);Math.abs(O)>.01&&(C.style.marginRight=`${O.toFixed(2)}px`)}ae(C,x.calculatedValues,e);let A=x.splitClass??[];A.length&&!E.length&&C.classList.add(...A),v.appendChild(I)}),a.set("--char-global-total",String(s));else{let x=document.createTextNode(f);v.appendChild(x)}y&&p.appendChild(v),n?S?d||p.appendChild(document.createElement("br")):v.appendChild(document.createTextNode("\xA0")):S||v.appendChild(document.createTextNode("\xA0"))}),n){let g=m.join(" ");p.setAttribute("data-split-content",g),r.appendChild(p)}}),{fragment:r,extraProps:a}}function ae(c,e,t){if(e)for(let r of e){if(!qe(r.type,r.align,t))continue;let i=Ke(r.type,r.align);c.style.setProperty(i,String(r.value))}}function qe(c,e,t){let r=t[c]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function Ke(c,e){let t=e.startsWith("random")?"random":e;return`--${c}-${t}`}function D(c,e){return Array.isArray(c[e])&&c[e].length>0}var pt=0;function ke(c){pt=0;let e=[],t=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),e.push(i)},r=(i,n)=>{if(i.nodeType===Node.ELEMENT_NODE){let o=i,s=o.tagName.toLowerCase();if(s==="split-class"){let a=(o.getAttribute("class")??"").split(/\s+/).filter(Boolean),l={...n||{},splitClass:[...n?.splitClass??[],...a]};o.childNodes.forEach(u=>r(u,l));return}if(s==="br"){t({type:"br",id:`br_${pt++}`,node:o,tagName:"br"},n);return}t({type:"element",id:`el_${pt++}`,node:o,tagName:s},n);return}if(i.nodeType===Node.TEXT_NODE){let o=i.nodeValue??"",s=`text_${pt++}`;o.trim()?t({type:"text",id:s,node:i,content:o},n):t({type:"space",id:s,node:i,content:o},n);return}t({type:"other",id:`node_${pt++}`,node:i},n)};return c.forEach(i=>r(i)),e}var Vt=class{constructor(e){this.font="";this.cache={kerning:new Map,charWidth:new Map};let t=document.createElement("canvas");this.ctx=t.getContext("2d"),this.setFontFromElement(e)}setFontFromElement(e){let t=window.getComputedStyle(e),r=`${t.fontStyle} ${t.fontVariant} ${t.fontWeight} ${t.fontSize}/${t.lineHeight} ${t.fontFamily}`;r!==this.font&&(this.font=r,this.ctx.font=this.font,this.cache.kerning.clear(),this.cache.charWidth.clear())}getCharWidth(e){if(this.cache.charWidth.has(e))return this.cache.charWidth.get(e);let t=this.ctx.measureText(e).width;return this.cache.charWidth.set(e,t),t}getKerning(e,t){let r=`${e}${t}`,i=`${this.font}|${r}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(r).width,o=this.getCharWidth(e)+this.getCharWidth(t),s=n-o;return this.cache.kerning.set(i,s),s}measureWord(e){let t=0;for(let r=0;r<e.length;r++){let i=e[r];if(t+=this.getCharWidth(i),r>0){let n=e[r-1];t+=this.getKerning(n,i)}}return t}};function Qe(c){let e=[],t=[];for(let r of c)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function Ie(c,e,t){let r=document.createElement("div"),i=window.getComputedStyle(e);r.style.position="absolute",r.style.visibility="hidden",r.style.pointerEvents="none",r.style.width=e.clientWidth+"px",r.style.padding=i.padding,r.style.font=i.font,r.style.letterSpacing=i.letterSpacing,r.style.lineHeight=i.lineHeight,r.style.fontVariant=i.fontVariant,r.style.fontStretch=i.fontStretch,r.style.wordBreak=i.wordBreak,r.style.wordWrap=i.wordWrap,r.style.whiteSpace=i.whiteSpace;let n=document.createElement("span");n.textContent="\xA0",r.appendChild(n);let o=n.getBoundingClientRect().width;r.removeChild(n),r.style.width=e.clientWidth+o+"px",r.style.boxSizing="border-box",e.appendChild(r);let s=[],a=Qe(c),l=!1,u=!1,d=!1;for(let p of a){if(p.length===1&&p[0].type==="br"){s.push({token:p[0],rect:new DOMRect(0,0,0,0)});continue}if(p.length===0)continue;r.innerHTML="";let m=[],g=[];p.forEach(h=>{switch(h.type){case"text":{let S=h.content,b=/^\s/.test(S),f=/\s$/.test(S),y=S.trim().split(/\s+/).filter(v=>v.length>0);y.forEach((v,E)=>{let w=document.createElement("span");w.style.display="inline-block",w.textContent=v,r.appendChild(w),(E<y.length-1||f)&&r.appendChild(document.createTextNode(" ")),m.push(w),g.push({token:{type:"text",id:"",node:h.node,content:v,meta:{...h.meta||{},joinPrev:E===0?!b&&!u&&d:!1}},wordIndex:m.length-1,hadLeadingSpace:b,hadTrailingSpace:f})}),u=f,d=!0;break}case"element":{let S=h.node.cloneNode(!0),b=document.createElement("span");b.style.display="inline-block",b.appendChild(S),r.appendChild(b),m.push(b),g.push({token:h,wordIndex:m.length-1}),l=!0,d=!1,u=!1;break}case"space":u=!0;break;case"other":d=!1,u=!1;break}}),r.offsetHeight,g.forEach((h,S)=>{if(h.wordIndex!==void 0){let f=m[h.wordIndex].getBoundingClientRect(),y;if(h.token.type==="text"){let E=t.measureWord(h.token.content);y=new DOMRect(f.x,f.y,E,f.height)}else y=f;let v={token:h.token,rect:y};if(l&&h.token.type==="text"&&(l=!1,v.token.meta={...v.token.meta||{},isAfterElement:!0}),s.push(v),h.token.type==="element"){let E=s[s.length-2];E?.token.type==="text"&&(E.token.meta={...E.token.meta||{},isBeforeElement:!0})}}})}return e.removeChild(r),s}var Re=5;function De(c,e,t){let r=[],i=null,n=0,o=0,s=0;return c.forEach(a=>{let l=a.token,u=l.meta?.isBeforeElement??!1,d=l.meta?.isAfterElement??!1;if(l.type==="br"){i=null;return}if(l.type==="text"){let p=l.content,m=l.meta?.splitClass??[],g=!!l.meta?.joinPrev,h=[],S=0;for(let x=0;x<p.length;x++){let P=p[x],I=x>0?p[x-1]:null,C=t.getCharWidth(P),L=I?t.getKerning(I,P):0;S+=L;let A=new DOMRect(a.rect.left+S,a.rect.top,C,a.rect.height),O={char:P,rect:A,token:l,charIndexInWord:x,charIndexInLine:0,charIndexGlobal:o++};m.length&&(O.splitClass=m),h.push(O),S+=C}if(h.length>0){let x=h[h.length-1];u&&(x.isBeforeElement=!0),d&&(x.isAfterElement=!0)}let b=Math.round(a.rect.top),f=Math.round(n);if((!i||Math.abs(b-f)>Re)&&(n=b,i={words:[],rect:a.rect,lineIndex:r.length},r.push(i)),!i)return;if(g&&i.words.length>0){let x=i.words[i.words.length-1],P=i.words.reduce((C,L)=>C+L.chars.length,0),I=x.chars.length;h.forEach((C,L)=>{C.charIndexInLine=P+L,C.charIndexInWord=I+L}),x.chars.push(...h),x.rect=Wt([x.rect,a.rect]),i.rect=Wt(i.words.map(C=>C.rect)),u&&(x.isBeforeElement=!0),d&&(x.isAfterElement=!0);return}let v=i.words.length,E=i.words.reduce((x,P)=>x+P.chars.length,0);h.forEach((x,P)=>x.charIndexInLine=E+P);let w={chars:h,rect:a.rect,wordIndexGlobal:s++,wordIndexInLine:v,isBeforeElement:u,isAfterElement:d};i.words.push(w),i.rect=Wt(i.words.map(x=>x.rect)),u&&(i.isBeforeElement=!0),d&&(i.isAfterElement=!0);return}if(l.type==="element"){let p=a.rect,m=Math.round(p.top),g=Math.round(n);if((!i||Math.abs(m-g)>Re)&&(n=m,i={words:[],rect:p,lineIndex:r.length},r.push(i)),!i)return;let S=i.words.length,b=i.words.reduce((v,E)=>v+E.chars.length,0),y={chars:[{char:"[E]",rect:p,token:l,charIndexInWord:0,charIndexInLine:b,charIndexGlobal:o++}],rect:p,wordIndexGlobal:s++,wordIndexInLine:S,isBeforeElement:!1,isAfterElement:!1};i.words.push(y),i.rect=Wt(i.words.map(v=>v.rect))}}),r}function Wt(c){if(c.length===0)return new DOMRect(0,0,0,0);let e=Math.min(...c.map(n=>n.left)),t=Math.min(...c.map(n=>n.top)),r=Math.max(...c.map(n=>n.right)),i=Math.max(...c.map(n=>n.bottom));return new DOMRect(e,t,r-e,i-t)}var le=class extends M{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(e=>{this.onObjectConnected(e)})}onObjectConnected(e){let t=e.htmlElement;if(!t)return;let r=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!r||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),e.htmlElement.innerHTML=i;let n=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",o=this.tools.optionsParser.process({attributeValue:n}),{fragment:s,result:a,extraProps:l}=this.split(t,o);e.setProperty("nodes",s.childNodes),t.setAttribute("aria-label",i),t.innerHTML="",t.appendChild(a),l.forEach((d,p)=>{t.style.setProperty(p,d)});let u=t.getAttribute("string-split-restore-after");u&&!isNaN(Number(u))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(u))}split(e,t){let r=new Vt(e),i=document.createDocumentFragment();e.childNodes.forEach(l=>i.appendChild(l.cloneNode(!0)));let n=ke(i.childNodes),o=Ie(n,e,r),s=De(o,e,r);this.applyCalculatedValues(s,t);let a=Oe(s,t,r);return{fragment:i,result:a.fragment,extraProps:a.extraProps}}computeValue(e,t,r){if(e.align.startsWith("random")){let i=e.random?.min??0,n=e.random?.max??r-1;return Math.floor(Math.random()*(n-i+1))+i}switch(e.align){case"start":return t;case"end":return r-t-1;case"center":{let i=Math.floor((r-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(e,t){let r=o=>o.words.reduce((s,a)=>s+a.chars.length,0),i=e.reduce((o,s)=>o+s.words.length,0),n=e.reduce((o,s)=>o+s.words.reduce((a,l)=>a+l.chars.length,0),0);e.forEach((o,s)=>{t.line&&(o.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,s,e.length)}))),o.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,o.words.length)}))));let u=r(o);a.chars.forEach(d=>{let p=[];t.char&&p.push(...t.char.map(m=>({type:"char",align:m.align,value:this.computeValue(m,d.charIndexGlobal,n)}))),t.charWord&&p.push(...t.charWord.map(m=>({type:"charWord",align:m.align,value:this.computeValue(m,d.charIndexInWord,a.chars.length)}))),t.charLine&&p.push(...t.charLine.map(m=>({type:"charLine",align:m.align,value:this.computeValue(m,d.charIndexInLine,u)}))),d.calculatedValues=p})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var ce=class extends M{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((n,o)=>{let s=o,a=i-n*this.height;o===0?t.moveTo(s,a):t.lineTo(s,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),r=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=r,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var ue=class extends M{constructor(t){super(t);this.frameCount=0;this._type=2}onInit(){this.data.system.fpsTracker&&this.createDisplayElement(),this.intervalId=window.setInterval(()=>{this.data.system.fpsTracker&&(this.displayElement.textContent=`FPS: ${this.frameCount}`),this.events.emit("fps",this.frameCount),this.frameCount=0},1e3)}onFrame(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.displayElement&&this.displayElement.remove()}createDisplayElement(){let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.textContent="FPS: 0",document.body.appendChild(t),this.displayElement=t}};var de=class extends M{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.currentValue=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((n,o)=>{let s=o,a=i-n/2;o===0?t.moveTo(s,a):t.lineTo(s,a)}),t.stroke()}initCanvas(){this.canvas=document.createElement("canvas"),this.canvasHeight=window.innerHeight/15-20,this.canvas.width=window.innerWidth*.5,this.canvas.height=this.canvasHeight,Object.assign(this.canvas.style,{position:"fixed",bottom:"10px",left:"50%",transform:"translateX(-50%)",backgroundColor:"#000",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas)}setTarget(t){this.targetValue=t}clear(){this.canvas.remove(),this.history=[]}};var pe=class extends M{constructor(e){super(e),this._type=2}onInit(){this.data.system.positionTracker&&this.createDisplayElement()}onScroll(e){let t=e.scroll.current,r=e.scroll.target;if(this.data.system.positionTracker){let i=t<r?"\u2193":t>r?"\u2191":"-";this.displayElement.setAttribute("data-dir",i),this.displayElement.setAttribute("data-val",`${Math.round(t)}`)}this.events.emit("scroll-position",Math.round(t))}destroy(){this.displayElement.remove()}createDisplayElement(){let e=document.createElement("div");Object.assign(e.style,{position:"fixed",bottom:"10px",left:"10px",backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",padding:"5px 8px",fontSize:"12px",fontFamily:"monospace",zIndex:"1000",pointerEvents:"none"}),e.setAttribute("data-dir","-"),e.setAttribute("data-val","0"),document.body.appendChild(e);let t=document.createElement("style");t.innerHTML=`
19
+ `,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 Ht(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new Nt(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateVertical}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)}};var $={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Xe(c){if(!c||!Array.isArray(c.chars)||c.chars.length===0)return[];let e=c.chars[0].splitClass??[];if(e.length===0)return[];for(let t of c.chars){let r=t.splitClass??[];if(r.length!==e.length)return[];for(let i=0;i<r.length;i++)if(r[i]!==e[i])return[]}return e}function Oe(c,e,t){let r=document.createDocumentFragment(),i=0,n=D(e,"line")||D(e,"charLine")||D(e,"wordLine"),o=0;c.forEach(l=>o+=l.words.length),o--;let s=0;c.forEach(l=>l.words.forEach(u=>s+=u.chars.length));let a=new Map;return c.forEach((l,u)=>{let d=u===c.length-1,p=r,m=[];if(n&&(p=document.createElement("span"),p.setAttribute("aria-hidden","true"),p.classList.add("-s-line"),l.isBeforeElement&&p.classList.add($.BEFORE_ELEMENT),l.isAfterElement&&p.classList.add($.AFTER_ELEMENT),p.style.setProperty("--line-index",String(l.lineIndex)),p.style.setProperty("--word-total",String(l.words.length)),ae(p,l.calculatedValues,e)),l.words.forEach((g,h)=>{n&&(o=l.words.length-1);let v=h===o;if(g.chars.length===1&&g.chars[0].token.type==="element"){let E=g.chars[0].token.node.cloneNode(!0);p.appendChild(E),v||p.appendChild(document.createTextNode("\xA0"));return}let f=g.chars.map(E=>E.char).join("");f&&m.push(f);let S=D(e,"word")||D(e,"charWord")||D(e,"wordLine"),y=S?document.createElement("span"):p,M=Xe(g);if(S&&(y.setAttribute("aria-hidden","true"),y.classList.add("-s-word"),g.isBeforeElement&&y.classList.add($.BEFORE_ELEMENT),g.isAfterElement&&y.classList.add($.AFTER_ELEMENT),y.style.setProperty("--word-index",String(g.wordIndexGlobal)),y.style.setProperty("--char-total",String(g.chars.length)),y.setAttribute("data-split-content",f),ae(y,g.calculatedValues,e),M.length&&y.classList.add(...M)),D(e,"char")||D(e,"charLine")||D(e,"charWord"))g.chars.forEach((E,P)=>{if(E.char===" "||E.char===" ")return;let I=document.createElement("span");I.setAttribute("aria-hidden","true");let C=I;C.classList.add("-s-char"),E.isBeforeElement&&C.classList.add($.BEFORE_ELEMENT),E.isAfterElement&&C.classList.add($.AFTER_ELEMENT),C.textContent=E.char,C.setAttribute("data-split-content",E.char),C.style.setProperty("--char-index",String(i++));let L=g.chars[P+1];if(L){let O=t.getKerning(E.char,L.char);Math.abs(O)>.01&&(C.style.marginRight=`${O.toFixed(2)}px`)}ae(C,E.calculatedValues,e);let A=E.splitClass??[];A.length&&!M.length&&C.classList.add(...A),y.appendChild(I)}),a.set("--char-global-total",String(s));else{let E=document.createTextNode(f);y.appendChild(E)}S&&p.appendChild(y),n?v?d||p.appendChild(document.createElement("br")):y.appendChild(document.createTextNode("\xA0")):v||y.appendChild(document.createTextNode("\xA0"))}),n){let g=m.join(" ");p.setAttribute("data-split-content",g),r.appendChild(p)}}),{fragment:r,extraProps:a}}function ae(c,e,t){if(e)for(let r of e){if(!qe(r.type,r.align,t))continue;let i=Ke(r.type,r.align);c.style.setProperty(i,String(r.value))}}function qe(c,e,t){let r=t[c]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function Ke(c,e){let t=e.startsWith("random")?"random":e;return`--${c}-${t}`}function D(c,e){return Array.isArray(c[e])&&c[e].length>0}var pt=0;function ke(c){pt=0;let e=[],t=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),e.push(i)},r=(i,n)=>{if(i.nodeType===Node.ELEMENT_NODE){let o=i,s=o.tagName.toLowerCase();if(s==="split-class"){let a=(o.getAttribute("class")??"").split(/\s+/).filter(Boolean),l={...n||{},splitClass:[...n?.splitClass??[],...a]};o.childNodes.forEach(u=>r(u,l));return}if(s==="br"){t({type:"br",id:`br_${pt++}`,node:o,tagName:"br"},n);return}t({type:"element",id:`el_${pt++}`,node:o,tagName:s},n);return}if(i.nodeType===Node.TEXT_NODE){let o=i.nodeValue??"",s=`text_${pt++}`;o.trim()?t({type:"text",id:s,node:i,content:o},n):t({type:"space",id:s,node:i,content:o},n);return}t({type:"other",id:`node_${pt++}`,node:i},n)};return c.forEach(i=>r(i)),e}var Vt=class{constructor(e){this.font="";this.cache={kerning:new Map,charWidth:new Map};let t=document.createElement("canvas");this.ctx=t.getContext("2d"),this.setFontFromElement(e)}setFontFromElement(e){let t=window.getComputedStyle(e),r=`${t.fontStyle} ${t.fontVariant} ${t.fontWeight} ${t.fontSize}/${t.lineHeight} ${t.fontFamily}`;r!==this.font&&(this.font=r,this.ctx.font=this.font,this.cache.kerning.clear(),this.cache.charWidth.clear())}getCharWidth(e){if(this.cache.charWidth.has(e))return this.cache.charWidth.get(e);let t=this.ctx.measureText(e).width;return this.cache.charWidth.set(e,t),t}getKerning(e,t){let r=`${e}${t}`,i=`${this.font}|${r}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(r).width,o=this.getCharWidth(e)+this.getCharWidth(t),s=n-o;return this.cache.kerning.set(i,s),s}measureWord(e){let t=0;for(let r=0;r<e.length;r++){let i=e[r];if(t+=this.getCharWidth(i),r>0){let n=e[r-1];t+=this.getKerning(n,i)}}return t}};function Qe(c){let e=[],t=[];for(let r of c)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function Ie(c,e,t){let r=document.createElement("div"),i=window.getComputedStyle(e);r.style.position="absolute",r.style.visibility="hidden",r.style.pointerEvents="none",r.style.width=e.clientWidth+"px",r.style.padding=i.padding,r.style.font=i.font,r.style.letterSpacing=i.letterSpacing,r.style.lineHeight=i.lineHeight,r.style.fontVariant=i.fontVariant,r.style.fontStretch=i.fontStretch,r.style.wordBreak=i.wordBreak,r.style.wordWrap=i.wordWrap,r.style.whiteSpace=i.whiteSpace;let n=document.createElement("span");n.textContent="\xA0",r.appendChild(n);let o=n.getBoundingClientRect().width;r.removeChild(n),r.style.width=e.clientWidth+o+"px",r.style.boxSizing="border-box",e.appendChild(r);let s=[],a=Qe(c),l=!1,u=!1,d=!1;for(let p of a){if(p.length===1&&p[0].type==="br"){s.push({token:p[0],rect:new DOMRect(0,0,0,0)});continue}if(p.length===0)continue;r.innerHTML="";let m=[],g=[];p.forEach(h=>{switch(h.type){case"text":{let v=h.content,b=/^\s/.test(v),f=/\s$/.test(v),S=v.trim().split(/\s+/).filter(y=>y.length>0);S.forEach((y,M)=>{let w=document.createElement("span");w.style.display="inline-block",w.textContent=y,r.appendChild(w),(M<S.length-1||f)&&r.appendChild(document.createTextNode(" ")),m.push(w),g.push({token:{type:"text",id:"",node:h.node,content:y,meta:{...h.meta||{},joinPrev:M===0?!b&&!u&&d:!1}},wordIndex:m.length-1,hadLeadingSpace:b,hadTrailingSpace:f})}),u=f,d=!0;break}case"element":{let v=h.node.cloneNode(!0),b=document.createElement("span");b.style.display="inline-block",b.appendChild(v),r.appendChild(b),m.push(b),g.push({token:h,wordIndex:m.length-1}),l=!0,d=!1,u=!1;break}case"space":u=!0;break;case"other":d=!1,u=!1;break}}),r.offsetHeight,g.forEach((h,v)=>{if(h.wordIndex!==void 0){let f=m[h.wordIndex].getBoundingClientRect(),S;if(h.token.type==="text"){let M=t.measureWord(h.token.content);S=new DOMRect(f.x,f.y,M,f.height)}else S=f;let y={token:h.token,rect:S};if(l&&h.token.type==="text"&&(l=!1,y.token.meta={...y.token.meta||{},isAfterElement:!0}),s.push(y),h.token.type==="element"){let M=s[s.length-2];M?.token.type==="text"&&(M.token.meta={...M.token.meta||{},isBeforeElement:!0})}}})}return e.removeChild(r),s}var Re=5;function De(c,e,t){let r=[],i=null,n=0,o=0,s=0;return c.forEach(a=>{let l=a.token,u=l.meta?.isBeforeElement??!1,d=l.meta?.isAfterElement??!1;if(l.type==="br"){i=null;return}if(l.type==="text"){let p=l.content,m=l.meta?.splitClass??[],g=!!l.meta?.joinPrev,h=[],v=0;for(let E=0;E<p.length;E++){let P=p[E],I=E>0?p[E-1]:null,C=t.getCharWidth(P),L=I?t.getKerning(I,P):0;v+=L;let A=new DOMRect(a.rect.left+v,a.rect.top,C,a.rect.height),O={char:P,rect:A,token:l,charIndexInWord:E,charIndexInLine:0,charIndexGlobal:o++};m.length&&(O.splitClass=m),h.push(O),v+=C}if(h.length>0){let E=h[h.length-1];u&&(E.isBeforeElement=!0),d&&(E.isAfterElement=!0)}let b=Math.round(a.rect.top),f=Math.round(n);if((!i||Math.abs(b-f)>Re)&&(n=b,i={words:[],rect:a.rect,lineIndex:r.length},r.push(i)),!i)return;if(g&&i.words.length>0){let E=i.words[i.words.length-1],P=i.words.reduce((C,L)=>C+L.chars.length,0),I=E.chars.length;h.forEach((C,L)=>{C.charIndexInLine=P+L,C.charIndexInWord=I+L}),E.chars.push(...h),E.rect=Wt([E.rect,a.rect]),i.rect=Wt(i.words.map(C=>C.rect)),u&&(E.isBeforeElement=!0),d&&(E.isAfterElement=!0);return}let y=i.words.length,M=i.words.reduce((E,P)=>E+P.chars.length,0);h.forEach((E,P)=>E.charIndexInLine=M+P);let w={chars:h,rect:a.rect,wordIndexGlobal:s++,wordIndexInLine:y,isBeforeElement:u,isAfterElement:d};i.words.push(w),i.rect=Wt(i.words.map(E=>E.rect)),u&&(i.isBeforeElement=!0),d&&(i.isAfterElement=!0);return}if(l.type==="element"){let p=a.rect,m=Math.round(p.top),g=Math.round(n);if((!i||Math.abs(m-g)>Re)&&(n=m,i={words:[],rect:p,lineIndex:r.length},r.push(i)),!i)return;let v=i.words.length,b=i.words.reduce((y,M)=>y+M.chars.length,0),S={chars:[{char:"[E]",rect:p,token:l,charIndexInWord:0,charIndexInLine:b,charIndexGlobal:o++}],rect:p,wordIndexGlobal:s++,wordIndexInLine:v,isBeforeElement:!1,isAfterElement:!1};i.words.push(S),i.rect=Wt(i.words.map(y=>y.rect))}}),r}function Wt(c){if(c.length===0)return new DOMRect(0,0,0,0);let e=Math.min(...c.map(n=>n.left)),t=Math.min(...c.map(n=>n.top)),r=Math.max(...c.map(n=>n.right)),i=Math.max(...c.map(n=>n.bottom));return new DOMRect(e,t,r-e,i-t)}var le=class extends x{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(e=>{this.onObjectConnected(e)})}onObjectConnected(e){let t=e.htmlElement;if(!t)return;let r=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!r||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),e.htmlElement.innerHTML=i;let n=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",o=this.tools.optionsParser.process({attributeValue:n}),{fragment:s,result:a,extraProps:l}=this.split(t,o);e.setProperty("nodes",s.childNodes),t.setAttribute("aria-label",i),t.innerHTML="",t.appendChild(a),l.forEach((d,p)=>{t.style.setProperty(p,d)});let u=t.getAttribute("string-split-restore-after");u&&!isNaN(Number(u))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(u))}split(e,t){let r=new Vt(e),i=document.createDocumentFragment();e.childNodes.forEach(l=>i.appendChild(l.cloneNode(!0)));let n=ke(i.childNodes),o=Ie(n,e,r),s=De(o,e,r);this.applyCalculatedValues(s,t);let a=Oe(s,t,r);return{fragment:i,result:a.fragment,extraProps:a.extraProps}}computeValue(e,t,r){if(e.align.startsWith("random")){let i=e.random?.min??0,n=e.random?.max??r-1;return Math.floor(Math.random()*(n-i+1))+i}switch(e.align){case"start":return t;case"end":return r-t-1;case"center":{let i=Math.floor((r-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(e,t){let r=o=>o.words.reduce((s,a)=>s+a.chars.length,0),i=e.reduce((o,s)=>o+s.words.length,0),n=e.reduce((o,s)=>o+s.words.reduce((a,l)=>a+l.chars.length,0),0);e.forEach((o,s)=>{t.line&&(o.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,s,e.length)}))),o.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,o.words.length)}))));let u=r(o);a.chars.forEach(d=>{let p=[];t.char&&p.push(...t.char.map(m=>({type:"char",align:m.align,value:this.computeValue(m,d.charIndexGlobal,n)}))),t.charWord&&p.push(...t.charWord.map(m=>({type:"charWord",align:m.align,value:this.computeValue(m,d.charIndexInWord,a.chars.length)}))),t.charLine&&p.push(...t.charLine.map(m=>({type:"charLine",align:m.align,value:this.computeValue(m,d.charIndexInLine,u)}))),d.calculatedValues=p})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var ce=class extends x{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((n,o)=>{let s=o,a=i-n*this.height;o===0?t.moveTo(s,a):t.lineTo(s,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),r=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=r,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var ue=class extends x{constructor(t){super(t);this.frameCount=0;this._type=2}onInit(){this.data.system.fpsTracker&&this.createDisplayElement(),this.intervalId=window.setInterval(()=>{this.data.system.fpsTracker&&(this.displayElement.textContent=`FPS: ${this.frameCount}`),this.events.emit("fps",this.frameCount),this.frameCount=0},1e3)}onFrame(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.displayElement&&this.displayElement.remove()}createDisplayElement(){let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.textContent="FPS: 0",document.body.appendChild(t),this.displayElement=t}};var de=class extends x{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.currentValue=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((n,o)=>{let s=o,a=i-n/2;o===0?t.moveTo(s,a):t.lineTo(s,a)}),t.stroke()}initCanvas(){this.canvas=document.createElement("canvas"),this.canvasHeight=window.innerHeight/15-20,this.canvas.width=window.innerWidth*.5,this.canvas.height=this.canvasHeight,Object.assign(this.canvas.style,{position:"fixed",bottom:"10px",left:"50%",transform:"translateX(-50%)",backgroundColor:"#000",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas)}setTarget(t){this.targetValue=t}clear(){this.canvas.remove(),this.history=[]}};var pe=class extends x{constructor(e){super(e),this._type=2}onInit(){this.data.system.positionTracker&&this.createDisplayElement()}onScroll(e){let t=e.scroll.current,r=e.scroll.target;if(this.data.system.positionTracker){let i=t<r?"\u2193":t>r?"\u2191":"-";this.displayElement.setAttribute("data-dir",i),this.displayElement.setAttribute("data-val",`${Math.round(t)}`)}this.events.emit("scroll-position",Math.round(t))}destroy(){this.displayElement.remove()}createDisplayElement(){let e=document.createElement("div");Object.assign(e.style,{position:"fixed",bottom:"10px",left:"10px",backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",padding:"5px 8px",fontSize:"12px",fontFamily:"monospace",zIndex:"1000",pointerEvents:"none"}),e.setAttribute("data-dir","-"),e.setAttribute("data-val","0"),document.body.appendChild(e);let t=document.createElement("style");t.innerHTML=`
20
20
  div[data-dir][data-val]::before {
21
21
  content: attr(data-dir) ' Top: ' attr(data-val) 'px';
22
22
  }
23
- `,document.head.appendChild(t),this.displayElement=e}};function Ae(c,e){let t=null;return function(...r){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{c.apply(i,r),t=null},e)}}var Bt=class{constructor(){this.fps=0;this.isAnimationStarted=!1;this.fpsInterval=0;this.then=0;this.requestAnimationId=0;this.onFrameCallback=e=>{};this.animate=()=>{};this.onVisibilityChangeBind=this.onVisibilityChange.bind(this)}onVisibilityChange(){document.hidden?(this.stop(),this.isAnimationStarted=!1):this.start(this.fps)}start(e){this.fps=e,!this.isAnimationStarted&&(this.fpsInterval=1e3/e,this.then=performance.now(),this.isAnimationStarted=!0,e===0?this.animate=()=>{let t=performance.now();this.requestAnimationId=requestAnimationFrame(()=>this.animate()),this.onFrameCallback(t)}:this.animate=()=>{let t=performance.now(),r=t-this.then;r>this.fpsInterval&&(this.then=t-r%this.fpsInterval,this.onFrameCallback(t)),this.requestAnimationId=requestAnimationFrame(()=>this.animate())},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(e){this.onFrameCallback=e}destructor(){this.stop()}};var he=class extends M{constructor(e){super(e),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(e){e.setProperty("onEnterEvent",this.onEnterObject.bind(this)),e.events.on("enter",e.getProperty("onEnterEvent")),e.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),e.events.on("leave",e.getProperty("onLeaveEvent"));let t=e.htmlElement,r=this.tools.domAttribute.process({element:t,key:"string-started",fallback:null})!==null;t.tagName.toLowerCase()==="video"&&!r&&(t.setAttribute("string-started",""),t.muted=!0,t.setAttribute("muted","muted"),t.setAttribute("playsinline",""),t.setAttribute("loop",""),t.setAttribute("autoplay",""),t.src=e.getProperty("src"),t.load(),t.addEventListener("canplay",()=>{}))}onEnterObject(e){let t=e.htmlElement;this.tryPlay(t)}onLeaveObject(e){e.htmlElement.pause()}tryPlay(e){e.play().catch(t=>console.warn("[StringVideoAutoplay] Autoplay failed:",t))}};var me=(r=>(r.ACTIVE="-active",r.HIDE="-hide",r.DISABLE="-disable",r))(me||{});var ge=class extends M{constructor(t){super(t);this.activeStepForSlides=new Map;this.hideStepForSlides=new Map;this.htmlKey="sequence",this.attributesToMap=[...this.attributesToMap,{key:"sequence",type:"string",fallback:"string[0]"}]}onInit(){super.onInit(),this.events.on("sequence",({slider:t,step:r})=>{this.objectsOnPage.forEach(n=>{let o=n.getProperty("sequence");o==`${t}[${this.hideStepForSlides.get(t)}]`&&o!=`${t}[${r}]`&&this.setSequenceState(n,"-disable"),o==`${t}[${this.activeStepForSlides.get(t)}]`&&this.setSequenceState(n,"-hide"),o==`${t}[${r}]`&&this.setSequenceState(n,"-active")});let i=this.activeStepForSlides.get(t);i!=null&&this.hideStepForSlides.set(t,i),this.activeStepForSlides.set(t,r)})}onObjectConnected(t){super.onObjectConnected(t),this.setSequenceState(t,"-disable")}setSequenceState(t,r){requestAnimationFrame(()=>{t.htmlElement.classList.remove(...Object.values(me)),t.htmlElement.classList.add(r)})}};var N=class N extends M{constructor(e){super(e),this.htmlKey="form"}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i);let n=t.getProperty("form-events")??[];n.forEach(u=>{u.eventElement.removeEventListener(u.eventType,u.eventCallback)}),n.length=0,t.setProperty("form-events",n),super.onObjectConnected(t);let o=t.htmlElement,s=[],a={};this.getInteractiveFields(o).forEach((u,d)=>this.registerField(u,o,s,a,n,d));let l=u=>{u.preventDefault();let d=!0,p={};for(let m of s){let g=m.field;if(!g.isConnected||!this.shouldValidateField(g))continue;let{key:h,rules:S,needsContext:b}=m,f=this.getFieldValue(g);p[h]=f,a[h]=f;let{valid:y,errors:v}=this.tools.validation.process({rules:S,value:f,context:this.buildContext(b,h,a)});this.applyValidationState(o,g,h,y,v,"submit"),y||(d=!1)}if(d)this.events.emit(`form:submit:${t.id}`,p);else{let m=s.find(g=>{let h=g.field;if(!h.isConnected||!this.shouldValidateField(h))return!1;let{key:S,rules:b,needsContext:f}=g,y=this.getFieldValue(h);a[S]=y;let{valid:v}=this.tools.validation.process({rules:b,value:y,context:this.buildContext(f,S,a)});return!v});m?.field&&typeof m.field.focus=="function"&&m.field.focus(),this.events.emit(`form:invalid:${t.id}`)}};o.addEventListener("submit",l),n.push({eventElement:o,eventType:"submit",eventCallback:l}),t.setProperty("form-field-entries",s),t.setProperty("form-field-values",a)}onObjectConnected(e){}onDOMMutate(e,t){this.objects.length!==0&&(e.length>0&&this.handleMutationAdditions(e),t.length>0&&this.handleMutationRemovals(t))}applyValidationState(e,t,r,i,n,o){let s=e.querySelector(`[string-input="error[${r}]"]`),a=e.querySelector(`[string-input="group[${r}]"]`);s&&(s.innerHTML="",n.forEach(u=>{let d=document.createElement("span");d.textContent=u,s.appendChild(d)})),o==="live"?(t.classList.toggle("-invalid",!i),t.classList.remove("-error")):(t.classList.remove("-invalid"),t.classList.toggle("-error",!i)),t.classList.toggle("-valid",i),a&&(o==="live"?(a.classList.toggle("-invalid",!i),a.classList.remove("-error")):(a.classList.remove("-invalid"),a.classList.toggle("-error",!i)),a.classList.toggle("-valid",i));let l=i?"valid":o==="live"?"invalid":"error";this.events.emit(`form:field:${l}:${r}`,{key:r,field:t,errors:n,phase:o,valid:i})}getInteractiveFields(e){return Array.from(e.querySelectorAll("[string-input]")).filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t)).map(t=>t)}getFieldRules(e){let t=this.tools.domAttribute.process({element:e,key:"input"})??"";return this.tools.ruleParser.process({value:t})}registerField(e,t,r,i,n,o){if(!this.isFormFieldElement(e)||e.closest("form")!==t||r.some(h=>h.field===e))return;let s=this.registerFieldIndex(e,o??r.length),a=this.getInputKey(e,s),l=this.getFieldRules(e),u=this.supportsBeforeInputValidation(l),d=this.requiresContext(l),p=this.getInputEventType(e),m={field:e,key:a,rules:l,supportsRealtime:u,needsContext:d,inputEventType:p,inputHandler:()=>{}},g=h=>{let S=h.currentTarget||h.target;if(!S||!S.isConnected||!this.shouldValidateField(S))return;let b=this.getFieldValue(S);i[m.key]=b;let f=this.buildContext(m.needsContext,m.key,i),{valid:y,errors:v}=this.tools.validation.process({rules:m.rules,value:b,context:f});this.applyValidationState(t,S,m.key,y,v,"live")};if(m.inputHandler=g,e.addEventListener(p,g),n.push({eventElement:e,eventType:p,eventCallback:g}),u&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let h=S=>{let b=S;if(b.isComposing||b.inputType?.startsWith("insertComposition"))return;let f=S.currentTarget||S.target;if(!f||!(f instanceof HTMLInputElement||f instanceof HTMLTextAreaElement)||!f.isConnected)return;let y=f.selectionStart??0,v=f.selectionEnd??0,E=f.value;switch(b.inputType){case"deleteContentBackward":E=y===v&&y>0?f.value.slice(0,y-1)+f.value.slice(v):f.value.slice(0,y)+f.value.slice(v);break;case"deleteContentForward":E=y===v&&y<f.value.length?f.value.slice(0,y)+f.value.slice(y+1):f.value.slice(0,y)+f.value.slice(v);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":E=f.value.slice(0,y)+(b.data||"")+f.value.slice(v);break;default:typeof b.data=="string"&&(E=f.value.slice(0,y)+b.data+f.value.slice(v))}let{errors:w}=this.tools.validation.process({rules:m.rules,value:E,type:"beforeinput",context:this.buildContext(m.needsContext,m.key,i,{applied:!0,value:E})});w.length>0&&S.cancelable&&S.preventDefault()};m.beforeInputHandler=h,e.addEventListener("beforeinput",h),n.push({eventElement:e,eventType:"beforeinput",eventCallback:h})}e.classList.add("-inited"),r.push(m),i[a]=this.getFieldValue(e)}unregisterField(e,t,r,i){let n=t.findIndex(s=>s.field===e);if(n===-1)return;let o=t[n];o.inputHandler&&e.removeEventListener(o.inputEventType,o.inputHandler),o.beforeInputHandler&&e.removeEventListener("beforeinput",o.beforeInputHandler),delete r[o.key],t.splice(n,1);for(let s=i.length-1;s>=0;s--){let a=i[s];a.eventElement===e&&(a.eventCallback===o.inputHandler||o.beforeInputHandler&&a.eventCallback===o.beforeInputHandler)&&i.splice(s,1)}e.classList.remove("-inited")}collectInteractiveFieldsFromNode(e){let t=[];return e instanceof Element?(e.hasAttribute("string-input")&&t.push(e),t.push(...Array.from(e.querySelectorAll("[string-input]")))):e instanceof DocumentFragment&&t.push(...Array.from(e.querySelectorAll("[string-input]"))),t.filter(r=>!this.isServiceFieldAttribute(r.getAttribute("string-input")||"")).filter(r=>this.isFormFieldElement(r))}handleMutationAdditions(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(e){let t=this.objects.find(r=>r.htmlElement instanceof HTMLFormElement&&r.htmlElement.contains(e));return t?this.buildFormState(t):null}getFormStateByReference(e){for(let t of this.objects){let r=t.getProperty("form-field-entries");if(r&&r.some(i=>i.field===e))return this.buildFormState(t,r)}return null}buildFormState(e,t){let r=e.htmlElement;if(!(r instanceof HTMLFormElement))return null;let i=t??e.getProperty("form-field-entries"),n=e.getProperty("form-field-values"),o=e.getProperty("form-events");return!i||!n||!o?null:{object:e,form:r,entries:i,values:n,events:o}}registerFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");return r!==null?Number(r):(e.setAttribute("data-string-form-index",String(t)),t)}getFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");if(r!==null){let i=Number(r);return Number.isNaN(i)?t:i}return this.registerFieldIndex(e,t)}shouldValidateField(e){return!(e.disabled||e instanceof HTMLInputElement&&e.type==="hidden")}supportsBeforeInputValidation(e){return e.some(t=>N.beforeInputRuleKeys.has(t.key))}requiresContext(e){return e.some(t=>N.crossFieldRuleKeys.has(t.key))}buildContext(e,t,r,i){if(!e)return{fieldKey:t};let n=!!i?.applied,o=n?{...r,[t]:i.value}:r;return{fieldKey:t,values:o,getValue:s=>n&&s===t?i.value:o[s]}}getInputKey(e,t){return this.tools.domAttribute.process({element:e,key:"id"})||e.getAttribute("name")||e.getAttribute("id")||`input-${t}`}getFieldValue(e){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){if(e.name){let t=e.form||e.closest("form"),r=t?Array.from(t.querySelectorAll(`input[type="checkbox"][name="${e.name}"]:checked`)):[e];return r.length>1?r.map(i=>i.value):r.length===1?r[0].value:""}return e.checked}if(e.type==="radio"){if(e.name){let r=(e.form||e.closest("form"))?.querySelector(`input[type="radio"][name="${e.name}"]:checked`);return r?r.value:""}return e.checked?e.value:""}return e.type==="file"&&e.files&&e.files.length>0?e.multiple?Array.from(e.files):e.files[0]:e.value}return e instanceof HTMLSelectElement?e.multiple?Array.from(e.selectedOptions).map(t=>t.value):e.value:e instanceof HTMLTextAreaElement?e.value:""}isServiceFieldAttribute(e){return N.serviceAttributePrefixes.some(t=>e.startsWith(`${t}[`))}isFormFieldElement(e){return e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}getInputEventType(e){return e instanceof HTMLSelectElement||e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")?"change":"input"}};N.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),N.crossFieldRuleKeys=new Set(["same","different","after","before"]),N.serviceAttributePrefixes=["error","group"];var fe=N;var zt=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(e){if(this.map.has(e))return;let t=e.htmlElement,r={cx:0,cy:0,valid:!1,el:t};r.ro=new ResizeObserver(()=>{r.valid=!1}),r.ro.observe(t),this.map.set(e,r),this.all.add(e)}detach(e){let t=this.map.get(e);t&&(t.ro?.disconnect(),this.map.delete(e),this.all.delete(e))}invalidateAll(){this.all.forEach(e=>{let t=this.map.get(e);t&&(t.valid=!1)})}getCenter(e){let t=this.map.get(e);if(!t||!t.el)return{cx:0,cy:0};if(!t.valid){let r=t.el.getBoundingClientRect();t.cx=r.left+r.width/2,t.cy=r.top+r.height/2,t.valid=!0}return{cx:t.cx,cy:t.cy}}};var $t=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(e){if(this.subs.has(e))return;let t=e.htmlElement,r=()=>this.active.add(e),i=()=>this.active.delete(e);t.addEventListener("pointerenter",r),t.addEventListener("pointerleave",i),this.subs.set(e,{enter:r,leave:i})}untrack(e){let t=this.subs.get(e);if(!t)return;let r=e.htmlElement;t.enter&&r.removeEventListener("pointerenter",t.enter),t.leave&&r.removeEventListener("pointerleave",t.leave),this.active.delete(e),this.subs.delete(e)}isActive(e){return this.active.has(e)}activeObjects(){return Array.from(this.active)}};var be=class extends M{constructor(e){super(e),this.htmlKey="scroller"}onObjectConnected(e){let t=e.getProperty("scroller-inited");if(t==null||t==""){e.setProperty("scroller-inited","inited");let r=i=>{this.events.emit("wheel",i)};e.setProperty("scroller-wheel-event",r),e.htmlElement.addEventListener("wheel",r)}}onObjectDisconnected(e){e.setProperty("scroller-inited",""),e.htmlElement.removeEventListener("wheel",e.getProperty("scroller-wheel-event"))}};function Fe(c){let e=c.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return e?{id:e[1],start:parseFloat(e[2]),end:parseFloat(e[3])}:null}function Ge(c,e,t,r,i){return r+(i-r)*(c-e)/(t-e)}var ve=class extends M{constructor(e){super(e),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(e){let t=e.getProperty("part-of"),r=Fe(t);if(r){e.setProperty("part-of-id",r.id),e.setProperty("start",r.start),e.setProperty("end",r.end);let i=n=>{if(r){let o=Ge(n,r?.start,r?.end,0,1),s=Math.max(0,Math.min(1,o));e.htmlElement.style.setProperty("--progress-slice",s.toString()),this.events.emit(`object:progress-slice:${e.id}`,s)}};e.setProperty("progress-event",i),this.events.on(`object:progress:${r.id}`,i)}}onObjectDisconnected(e){let t=e.getProperty("part-of-id");t&&this.events.off(`object:progress:${t}`,e.getProperty("progress-event"))}};var He=class c{constructor(){this.prevWidth=0;this.prevHeight=0;this.loop=new Bt;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=Ae(this.onResize,30);this.root=document.body,this.window=window,this.tools=new Rt,this.data=new Lt,this.eventManager=new U,this.moduleManager=new gt(this.data),this.objectManager=new bt(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new zt,this.hoverManager=new $t,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager},this.cursorController=new mt(1,this.context),this.scrollManager=new Mt(this.context),this.setupSettings({"global-class":!1,"offset-top":"0%","offset-bottom":"0%",key:"--progress","inview-top":"0%","inview-bottom":"0%","enter-el":"top","enter-vp":"bottom","exit-el":"bottom","exit-vp":"top","parallax-bias":"0.0",parallax:"0.2",lerp:"0.2",radius:"150",strength:"0.3",glide:"1",anchor:"center center",timeout:900,alignment:"center","target-disable":"false","target-style-disable":"false","target-class":"",active:"false",fixed:"false",repeat:"false","self-disable":"false",abs:"false",easing:"cubic-bezier(0.25, 0.25, 0.25, 0.25)","glide-base-velocity":.00125,"glide-reduce-velocity":625e-7,"glide-negative-velocity":-1e-4,"position-strength":3,"position-tension":.05,"position-friction":.15,"position-max-velocity":10,"position-update-threshold":.1,"rotation-strength":.75,"rotation-tension":.06,"rotation-friction":.18,"rotation-max-angular-velocity":6,"rotation-max-angle":18,"rotation-update-threshold":.15,"max-offset":220,"sleep-epsilon":.01,"continuous-push":!0}),this.onContainerTransitionEndBind=this.onContainerTransitionEnd.bind(this),this.onResizeObserverBind=this.onResizeObserverEvent.bind(this),this.observerContainerResize=new ResizeObserver(this.onResizeObserverBind),this.observerContainerResize.observe(this.context.data.scroll.container),this.onWheelBind=this.onWheelEvent.bind(this),this.onScrollBind=this.onScrollEvent.bind(this),this.onResizeBind=this.onResize.bind(this),this.onMouseMoveBind=this.onMouseMoveEvent.bind(this),this.onScrollStartBind=this.onScrollStart.bind(this),this.onScrollStopBind=this.onScrollStop.bind(this),this.onDirectionChangeBind=this.onDirectionChange.bind(this),this.eventManager.on("wheel",this.onWheelBind),this.scrollManager.bindEvents({onScrollStart:this.onScrollStartBind,onScrollStop:this.onScrollStopBind,onDirectionChange:this.onDirectionChangeBind}),this.loop.setOnFrame(e=>{this.data.time.delta=e-this.data.time.now,this.data.time.previous=this.data.time.now,this.data.time.now=e,this.data.time.elapsed+=this.data.time.delta,this.onUpdateEvent()}),this.on("image:load:all",()=>{this.onResize()}),this.scrollContainer=window}set scrollPosition(e){this.data.scroll.current=e,this.data.scroll.target=e,this.data.scroll.transformedCurrent=this.data.scroll.current*this.data.viewport.transformScale,this.data.scroll.delta=0,this.data.scroll.lerped=0,this.scrollManager.updatePosition(),this.moduleManager.onScroll(),this.objectManager.checkInview()}set scrollContainer(e){this.observerContainerResize?.unobserve(this.context.data.scroll.container),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),e instanceof Window?(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e):e instanceof HTMLElement?(this.data.scroll.container=e,this.data.scroll.elementContainer=e,this.data.scroll.scrollContainer=e):(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e),this.data.scroll.elementContainer.addEventListener("transitionend",this.onContainerTransitionEndBind),this.observerContainerResize?.observe(this.context.data.scroll.container),this.debouncedResize()}get scrollPosition(){return this.data.scroll.current}get scrollHeight(){return this.data.viewport.contentHeight}get containerHeight(){return this.data.viewport.windowHeight}set speed(e){this.data.scroll.speed=e}set speedAccelerate(e){this.data.scroll.speedAccelerate=.1+(.5-.1)*e}set scrollDesktopMode(e){this.scrollManager.setDesktopMode(e)}set scrollMobileMode(e){this.scrollManager.setMobileMode(e)}static getInstance(){return c.i||(c.i=new c),c.i}reuse(e){return this.moduleManager.find(e)}use(e,t=null){let r={...this.context.settings,...t},i=new e({events:this.eventManager,data:this.data,tools:this.tools,settings:r,centers:this.centers,hover:this.hoverManager});this.moduleManager.register(i)}on(e,t,r=""){this.eventManager.on(e,t,r)}emit(e,t){this.eventManager.emit(e,t)}off(e,t,r=""){this.eventManager.off(e,t,r)}addScrollMark(e){this.scrollManager.addScrollMark(e)}removeScrollMark(e){this.scrollManager.removeScrollMark(e)}start(e){this.data.scroll.scrollContainer?.addEventListener("scroll",this.onScrollBind),this.data.scroll.container?.addEventListener("wheel",this.onWheelBind,{passive:!1}),window.addEventListener("resize",this.onResizeBind),this.root.addEventListener("mousemove",this.onMouseMoveBind);let t=new MutationObserver((o,s)=>{for(let a of o)a.type==="attributes"&&(a.attributeName==="style"||a.attributeName==="class")&&this.onResize()}),r={attributes:!0,attributeFilter:["style","class"]};t.observe(this.context.data.scroll.container,r),this.use(At);let i=window.getComputedStyle(document.documentElement).fontSize,n=parseFloat(i);this.context.data.viewport.baseRem=n,document.documentElement.classList.add("-string"),this.moduleManager.onInit(),this.onResize(),this.initObjects(),this.objectManager.observeDOM(),this.loop.start(e),this.eventManager.emit("start",null)}initObjects(){document.querySelectorAll("[string],[data-string]").forEach(e=>{this.objectManager.add(e)}),document.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(e=>{let t=this.tools.domAttribute.process({element:e,key:"copy-from",fallback:""});t&&t.length>0&&this.objectManager.linkMirror(t,e)}),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame()}setupSettings(e){this.context.settings={...this.context.settings,...e},this.onSettingsChange({isDesktop:this.data.viewport.windowWidth>1080,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0,isForceRebuild:!1})}onResizeObserverEvent(){this.debouncedResize()}onContainerTransitionEnd(e){e.target===this.context.data.scroll.container&&(this.onResize(),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame())}onMouseMoveEvent(e){this.cursorController.onMouseMove(e),this.moduleManager.onMouseMove(e),R.measure(()=>{this.moduleManager.onMouseMoveMeasure()})}onWheelEvent(e){e.target.closest("[string-isolation],[data-string-isolation]")==null&&(this.scrollManager.get().onWheel(e),this.moduleManager.onWheel(e))}onScrollStart(){this.moduleManager.onScrollStart(),this.eventManager.emit("scroll:start",null)}onScrollStop(){this.moduleManager.onScrollStop(),this.eventManager.emit("scroll:stop",null)}onDirectionChange(){this.moduleManager.onDirectionChange()}onSettingsChange(e){this.cursorController.onSettingsChange(e),this.objectManager.onSettingsChange(e),this.moduleManager.onSettingsChange(e)}onScrollEvent(e){return e.preventDefault(),this.context.centers.invalidateAll(),this.scrollManager.get().onScroll(e),this.moduleManager.onScroll(),this.objectManager.checkInview(),this.eventManager.emit("lerp",this.data.scroll.lerped),this.eventManager.emit("scroll",this.data.scroll.current),R.measure(()=>{this.moduleManager.onScrollMeasure()}),!1}onUpdateEvent(){this.cursorController.onFrame(),this.scrollManager.get().onFrame(),this.moduleManager.onFrame(),R.mutate(()=>{T.begin(),this.moduleManager.onMutate(),T.commit()}),this.eventManager.emit("update",null)}onResize(e=!1){if(this.canRebuild==!1)return;let t=this.data.scroll.container,r=this.context.data.scroll,i=0,n=0;var o,s=0;let a=t.getBoundingClientRect();t.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),s=a.top,o=r.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(t).transform});this.context.data.viewport.transformScale=window.getComputedStyle(t).scale=="none"?l:Number(window.getComputedStyle(t).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let u=i>1080,d=this.prevWidth!==i,p=this.prevHeight!==n,m=this.context.data.viewport.contentHeight!==o,g=d||u&&p||m;this.context.data.scroll.topPosition=Math.floor(s),this.context.data.viewport.contentWidth=i,this.context.data.viewport.contentHeight=o,this.prevWidth=i,this.prevHeight=n,this.context.data.viewport.windowWidth=i,this.context.data.viewport.windowHeight=n;let h=window.getComputedStyle(document.documentElement).fontSize,S=parseFloat(h);this.context.data.viewport.baseRem=S*l,r.bottomPosition=this.context.data.viewport.contentHeight-n,(d||typeof e=="boolean"&&e)&&this.moduleManager.onResizeWidth(),(g||typeof e=="boolean"&&e)&&(this.context.data.scroll.container.scrollTop>0&&(this.context.data.scroll.current=this.context.data.scroll.container.scrollTop,this.context.data.scroll.target=this.context.data.scroll.container.scrollTop),this.scrollManager.updateResponsiveMode(),this.moduleManager.onResize(),this.onSettingsChange({isDesktop:u,widthChanged:d,heightChanged:p,scrollHeightChanged:m,isForceRebuild:e===!0}),this.moduleManager.onScroll(),this.moduleManager.onFrame())}scrollToElement(e,t=0){let r=document.querySelector(e);if(r){let n=r.getBoundingClientRect().top+window.pageYOffset-this.data.scroll.container.clientTop-t;this.context.data.scroll.delta=n-this.data.scroll.current}else console.warn(`Element not found: ${e}`)}scrollTo(e){this.scrollManager.get().scrollTo(e)}invalidateCenters(){this.centers.invalidateAll()}destroy(){this.data.scroll.scrollContainer?.removeEventListener("scroll",this.onScrollBind),this.data.scroll.container?.removeEventListener("wheel",this.onWheelBind),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),this.window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.loop.stop(),this.moduleManager.destroy(),this.eventManager.clearAll(),this.eventManager.off("wheel",this.onWheelBind)}};export{ut as CursorReactiveModule,re as StringAnchor,Xt as StringCursor,Lt as StringData,ce as StringDelayLerpTracker,ue as StringFPSTracker,fe as StringForm,ie as StringGlide,qt as StringImpulse,Jt as StringLazy,ne as StringLerp,de as StringLerpTracker,te as StringLoading,Kt as StringMagnetic,M as StringModule,q as StringObject,se as StringParallax,pe as StringPositionTracker,dt as StringProgress,ve as StringProgressPart,ee as StringResponsive,oe as StringScrollbar,be as StringScroller,ge as StringSequence,le as StringSplit,Zt as StringSpotlight,He as StringTune,he as StringVideoAutoplay,He as default,R as frameDOM,T as styleTxn};
23
+ `,document.head.appendChild(t),this.displayElement=e}};function Ae(c,e){let t=null;return function(...r){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{c.apply(i,r),t=null},e)}}var Bt=class{constructor(){this.fps=0;this.isAnimationStarted=!1;this.fpsInterval=0;this.then=0;this.requestAnimationId=0;this.onFrameCallback=e=>{};this.animate=()=>{};this.onVisibilityChangeBind=this.onVisibilityChange.bind(this)}onVisibilityChange(){document.hidden?(this.stop(),this.isAnimationStarted=!1):this.start(this.fps)}start(e){this.fps=e,!this.isAnimationStarted&&(this.fpsInterval=1e3/e,this.then=performance.now(),this.isAnimationStarted=!0,e===0?this.animate=()=>{let t=performance.now();this.requestAnimationId=requestAnimationFrame(()=>this.animate()),this.onFrameCallback(t)}:this.animate=()=>{let t=performance.now(),r=t-this.then;r>this.fpsInterval&&(this.then=t-r%this.fpsInterval,this.onFrameCallback(t)),this.requestAnimationId=requestAnimationFrame(()=>this.animate())},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(e){this.onFrameCallback=e}destructor(){this.stop()}};var he=class extends x{constructor(e){super(e),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(e){e.setProperty("onEnterEvent",this.onEnterObject.bind(this)),e.events.on("enter",e.getProperty("onEnterEvent")),e.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),e.events.on("leave",e.getProperty("onLeaveEvent"));let t=e.htmlElement,r=this.tools.domAttribute.process({element:t,key:"string-started",fallback:null})!==null;t.tagName.toLowerCase()==="video"&&!r&&(t.setAttribute("string-started",""),t.muted=!0,t.setAttribute("muted","muted"),t.setAttribute("playsinline",""),t.setAttribute("loop",""),t.setAttribute("autoplay",""),t.src=e.getProperty("src"),t.load(),t.addEventListener("canplay",()=>{}))}onEnterObject(e){let t=e.htmlElement;this.tryPlay(t)}onLeaveObject(e){e.htmlElement.pause()}tryPlay(e){e.play().catch(t=>console.warn("[StringVideoAutoplay] Autoplay failed:",t))}};var me=(r=>(r.ACTIVE="-active",r.HIDE="-hide",r.DISABLE="-disable",r))(me||{});var ge=class extends x{constructor(t){super(t);this.activeStepForSlides=new Map;this.hideStepForSlides=new Map;this.htmlKey="sequence",this.attributesToMap=[...this.attributesToMap,{key:"sequence",type:"string",fallback:"string[0]"}]}onInit(){super.onInit(),this.events.on("sequence",({slider:t,step:r})=>{this.objectsOnPage.forEach(n=>{let o=n.getProperty("sequence");o==`${t}[${this.hideStepForSlides.get(t)}]`&&o!=`${t}[${r}]`&&this.setSequenceState(n,"-disable"),o==`${t}[${this.activeStepForSlides.get(t)}]`&&this.setSequenceState(n,"-hide"),o==`${t}[${r}]`&&this.setSequenceState(n,"-active")});let i=this.activeStepForSlides.get(t);i!=null&&this.hideStepForSlides.set(t,i),this.activeStepForSlides.set(t,r)})}onObjectConnected(t){super.onObjectConnected(t),this.setSequenceState(t,"-disable")}setSequenceState(t,r){requestAnimationFrame(()=>{t.htmlElement.classList.remove(...Object.values(me)),t.htmlElement.classList.add(r)})}};var N=class N extends x{constructor(e){super(e),this.htmlKey="form"}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i);let n=t.getProperty("form-events")??[];n.forEach(u=>{u.eventElement.removeEventListener(u.eventType,u.eventCallback)}),n.length=0,t.setProperty("form-events",n),super.onObjectConnected(t);let o=t.htmlElement,s=[],a={};this.getInteractiveFields(o).forEach((u,d)=>this.registerField(u,o,s,a,n,d));let l=u=>{u.preventDefault();let d=!0,p={},m=new Set;for(let g of s){let h=g.field;if(!h.isConnected||!this.shouldValidateField(h))continue;if(this.isRadioField(h)){if(m.has(g.key))continue;m.add(g.key)}let{key:v,rules:b,needsContext:f}=g,S=this.getFieldValue(h);p[v]=S,a[v]=S;let{valid:y,errors:M}=this.tools.validation.process({rules:b,value:S,context:this.buildContext(f,v,a)});this.applyValidationState(o,h,v,y,M,"submit"),y||(d=!1)}if(d)this.events.emit(`form:submit:${t.id}`,p);else{let g=new Set,h=s.find(v=>{let b=v.field;if(!b.isConnected||!this.shouldValidateField(b))return!1;if(this.isRadioField(b)){if(g.has(v.key))return!1;g.add(v.key)}let{key:f,rules:S,needsContext:y}=v,M=this.getFieldValue(b);a[f]=M;let{valid:w}=this.tools.validation.process({rules:S,value:M,context:this.buildContext(y,f,a)});return!w});h?.field&&typeof h.field.focus=="function"&&h.field.focus(),this.events.emit(`form:invalid:${t.id}`)}};o.addEventListener("submit",l),n.push({eventElement:o,eventType:"submit",eventCallback:l}),t.setProperty("form-field-entries",s),t.setProperty("form-field-values",a)}onObjectConnected(e){}onDOMMutate(e,t){this.objects.length!==0&&(e.length>0&&this.handleMutationAdditions(e),t.length>0&&this.handleMutationRemovals(t))}applyValidationState(e,t,r,i,n,o){let s=e.querySelector(`[string-input="error[${r}]"]`),a=e.querySelector(`[string-input="group[${r}]"]`);s&&(s.innerHTML="",n.forEach(u=>{let d=document.createElement("span");d.textContent=u,s.appendChild(d)})),o==="live"?(t.classList.toggle("-invalid",!i),t.classList.remove("-error")):(t.classList.remove("-invalid"),t.classList.toggle("-error",!i)),t.classList.toggle("-valid",i),a&&(o==="live"?(a.classList.toggle("-invalid",!i),a.classList.remove("-error")):(a.classList.remove("-invalid"),a.classList.toggle("-error",!i)),a.classList.toggle("-valid",i));let l=i?"valid":o==="live"?"invalid":"error";this.events.emit(`form:field:${l}:${r}`,{key:r,field:t,errors:n,phase:o,valid:i})}getInteractiveFields(e){return Array.from(e.querySelectorAll("[string-input]")).filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t)).map(t=>t)}getFieldRules(e){let t=this.tools.domAttribute.process({element:e,key:"input"})??"";return this.tools.ruleParser.process({value:t})}registerField(e,t,r,i,n,o){if(!this.isFormFieldElement(e)||e.closest("form")!==t||r.some(h=>h.field===e))return;let s=this.registerFieldIndex(e,o??r.length),a=this.getInputKey(e,s),l=this.getFieldRules(e),u=this.supportsBeforeInputValidation(l),d=this.requiresContext(l),p=this.getInputEventType(e),m={field:e,key:a,rules:l,supportsRealtime:u,needsContext:d,inputEventType:p,inputHandler:()=>{}},g=h=>{let v=h.currentTarget||h.target;if(!v||!v.isConnected||!this.shouldValidateField(v))return;let b=this.getFieldValue(v);i[m.key]=b;let f=this.buildContext(m.needsContext,m.key,i),{valid:S,errors:y}=this.tools.validation.process({rules:m.rules,value:b,context:f});this.applyValidationState(t,v,m.key,S,y,"live")};if(m.inputHandler=g,e.addEventListener(p,g),n.push({eventElement:e,eventType:p,eventCallback:g}),u&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let h=v=>{let b=v;if(b.isComposing||b.inputType?.startsWith("insertComposition"))return;let f=v.currentTarget||v.target;if(!f||!(f instanceof HTMLInputElement||f instanceof HTMLTextAreaElement)||!f.isConnected)return;let S=f.selectionStart??0,y=f.selectionEnd??0,M=f.value;switch(b.inputType){case"deleteContentBackward":M=S===y&&S>0?f.value.slice(0,S-1)+f.value.slice(y):f.value.slice(0,S)+f.value.slice(y);break;case"deleteContentForward":M=S===y&&S<f.value.length?f.value.slice(0,S)+f.value.slice(S+1):f.value.slice(0,S)+f.value.slice(y);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":M=f.value.slice(0,S)+(b.data||"")+f.value.slice(y);break;default:typeof b.data=="string"&&(M=f.value.slice(0,S)+b.data+f.value.slice(y))}let{errors:w}=this.tools.validation.process({rules:m.rules,value:M,type:"beforeinput",context:this.buildContext(m.needsContext,m.key,i,{applied:!0,value:M})});w.length>0&&v.cancelable&&v.preventDefault()};m.beforeInputHandler=h,e.addEventListener("beforeinput",h),n.push({eventElement:e,eventType:"beforeinput",eventCallback:h})}e.classList.add("-inited"),r.push(m),i[a]=this.getFieldValue(e)}unregisterField(e,t,r,i){let n=t.findIndex(s=>s.field===e);if(n===-1)return;let o=t[n];o.inputHandler&&e.removeEventListener(o.inputEventType,o.inputHandler),o.beforeInputHandler&&e.removeEventListener("beforeinput",o.beforeInputHandler),delete r[o.key],t.splice(n,1);for(let s=i.length-1;s>=0;s--){let a=i[s];a.eventElement===e&&(a.eventCallback===o.inputHandler||o.beforeInputHandler&&a.eventCallback===o.beforeInputHandler)&&i.splice(s,1)}e.classList.remove("-inited")}collectInteractiveFieldsFromNode(e){let t=[];return e instanceof Element?(e.hasAttribute("string-input")&&t.push(e),t.push(...Array.from(e.querySelectorAll("[string-input]")))):e instanceof DocumentFragment&&t.push(...Array.from(e.querySelectorAll("[string-input]"))),t.filter(r=>!this.isServiceFieldAttribute(r.getAttribute("string-input")||"")).filter(r=>this.isFormFieldElement(r))}isRadioField(e){return e instanceof HTMLInputElement&&e.type==="radio"}handleMutationAdditions(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(e){let t=this.objects.find(r=>r.htmlElement instanceof HTMLFormElement&&r.htmlElement.contains(e));return t?this.buildFormState(t):null}getFormStateByReference(e){for(let t of this.objects){let r=t.getProperty("form-field-entries");if(r&&r.some(i=>i.field===e))return this.buildFormState(t,r)}return null}buildFormState(e,t){let r=e.htmlElement;if(!(r instanceof HTMLFormElement))return null;let i=t??e.getProperty("form-field-entries"),n=e.getProperty("form-field-values"),o=e.getProperty("form-events");return!i||!n||!o?null:{object:e,form:r,entries:i,values:n,events:o}}registerFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");return r!==null?Number(r):(e.setAttribute("data-string-form-index",String(t)),t)}getFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");if(r!==null){let i=Number(r);return Number.isNaN(i)?t:i}return this.registerFieldIndex(e,t)}shouldValidateField(e){return!(e.disabled||e instanceof HTMLInputElement&&e.type==="hidden")}supportsBeforeInputValidation(e){return e.some(t=>N.beforeInputRuleKeys.has(t.key))}requiresContext(e){return e.some(t=>N.crossFieldRuleKeys.has(t.key))}buildContext(e,t,r,i){if(!e)return{fieldKey:t};let n=!!i?.applied,o=n?{...r,[t]:i.value}:r;return{fieldKey:t,values:o,getValue:s=>n&&s===t?i.value:o[s]}}getInputKey(e,t){return this.tools.domAttribute.process({element:e,key:"id"})||e.getAttribute("name")||e.getAttribute("id")||`input-${t}`}getFieldValue(e){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){if(e.name){let t=e.form||e.closest("form"),r=t?Array.from(t.querySelectorAll(`input[type="checkbox"][name="${e.name}"]:checked`)):[e];return r.length>1?r.map(i=>i.value):r.length===1?r[0].value:""}return e.checked}if(e.type==="radio"){if(e.name){let r=(e.form||e.closest("form"))?.querySelector(`input[type="radio"][name="${e.name}"]:checked`);return r?r.value:""}return e.checked?e.value:""}return e.type==="file"&&e.files&&e.files.length>0?e.multiple?Array.from(e.files):e.files[0]:e.value}return e instanceof HTMLSelectElement?e.multiple?Array.from(e.selectedOptions).map(t=>t.value):e.value:e instanceof HTMLTextAreaElement?e.value:""}isServiceFieldAttribute(e){return N.serviceAttributePrefixes.some(t=>e.startsWith(`${t}[`))}isFormFieldElement(e){return e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}getInputEventType(e){return e instanceof HTMLSelectElement||e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")?"change":"input"}};N.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),N.crossFieldRuleKeys=new Set(["same","different","after","before"]),N.serviceAttributePrefixes=["error","group"];var fe=N;var zt=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(e){if(this.map.has(e))return;let t=e.htmlElement,r={cx:0,cy:0,valid:!1,el:t};r.ro=new ResizeObserver(()=>{r.valid=!1}),r.ro.observe(t),this.map.set(e,r),this.all.add(e)}detach(e){let t=this.map.get(e);t&&(t.ro?.disconnect(),this.map.delete(e),this.all.delete(e))}invalidate(e){this.all.forEach(t=>{if(t.id===e){let r=this.map.get(t);r&&(r.valid=!1)}})}invalidateAll(){this.all.forEach(e=>{let t=this.map.get(e);t&&(t.valid=!1)})}getCenter(e){let t=this.map.get(e);if(!t||!t.el)return{cx:0,cy:0};if(!t.valid){let r=t.el.getBoundingClientRect();t.cx=r.left+r.width/2,t.cy=r.top+r.height/2,t.valid=!0}return{cx:t.cx,cy:t.cy}}};var $t=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(e){if(this.subs.has(e))return;let t=e.htmlElement,r=()=>this.active.add(e),i=()=>this.active.delete(e);t.addEventListener("pointerenter",r),t.addEventListener("pointerleave",i),this.subs.set(e,{enter:r,leave:i})}untrack(e){let t=this.subs.get(e);if(!t)return;let r=e.htmlElement;t.enter&&r.removeEventListener("pointerenter",t.enter),t.leave&&r.removeEventListener("pointerleave",t.leave),this.active.delete(e),this.subs.delete(e)}isActive(e){return this.active.has(e)}activeObjects(){return Array.from(this.active)}};var be=class extends x{constructor(e){super(e),this.htmlKey="scroller"}onObjectConnected(e){let t=e.getProperty("scroller-inited");if(t==null||t==""){e.setProperty("scroller-inited","inited");let r=i=>{this.events.emit("wheel",i)};e.setProperty("scroller-wheel-event",r),e.htmlElement.addEventListener("wheel",r)}}onObjectDisconnected(e){e.setProperty("scroller-inited",""),e.htmlElement.removeEventListener("wheel",e.getProperty("scroller-wheel-event"))}};function Fe(c){let e=c.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return e?{id:e[1],start:parseFloat(e[2]),end:parseFloat(e[3])}:null}function Ge(c,e,t,r,i){return r+(i-r)*(c-e)/(t-e)}var ve=class extends x{constructor(e){super(e),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(e){let t=e.getProperty("part-of"),r=Fe(t);if(r){e.setProperty("part-of-id",r.id),e.setProperty("start",r.start),e.setProperty("end",r.end);let i=n=>{if(r){let o=Ge(n,r?.start,r?.end,0,1),s=Math.max(0,Math.min(1,o));e.htmlElement.style.setProperty("--progress-slice",s.toString()),this.events.emit(`object:progress-slice:${e.id}`,s)}};e.setProperty("progress-event",i),this.events.on(`object:progress:${r.id}`,i)}}onObjectDisconnected(e){let t=e.getProperty("part-of-id");t&&this.events.off(`object:progress:${t}`,e.getProperty("progress-event"))}};var He=class c{constructor(){this.prevWidth=0;this.prevHeight=0;this.loop=new Bt;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=Ae(this.onResize,30);this.root=document.body,this.window=window,this.tools=new Rt,this.data=new Lt,this.eventManager=new U,this.moduleManager=new gt(this.data),this.objectManager=new bt(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new zt,this.hoverManager=new $t,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager},this.cursorController=new mt(1,this.context),this.scrollManager=new Mt(this.context),this.setupSettings({"global-class":!1,"offset-top":"0%","offset-bottom":"0%",key:"--progress","inview-top":"0%","inview-bottom":"0%","enter-el":"top","enter-vp":"bottom","exit-el":"bottom","exit-vp":"top","parallax-bias":"0.0",parallax:"0.2",lerp:"0.2","cursor-lerp":"0.75",radius:"150",strength:"0.3",glide:"1",anchor:"center center",timeout:900,alignment:"center","target-disable":"false","target-style-disable":"false","target-class":"",active:"false",fixed:"false",repeat:"false","self-disable":"false",abs:"false",easing:"cubic-bezier(0.25, 0.25, 0.25, 0.25)","glide-base-velocity":.00125,"glide-reduce-velocity":625e-7,"glide-negative-velocity":-1e-4,"position-strength":3,"position-tension":.05,"position-friction":.15,"position-max-velocity":10,"position-update-threshold":.1,"rotation-strength":.75,"rotation-tension":.06,"rotation-friction":.18,"rotation-max-angular-velocity":6,"rotation-max-angle":18,"rotation-update-threshold":.15,"max-offset":220,"sleep-epsilon":.01,"continuous-push":!0}),this.onContainerTransitionEndBind=this.onContainerTransitionEnd.bind(this),this.onResizeObserverBind=this.onResizeObserverEvent.bind(this),this.observerContainerResize=new ResizeObserver(this.onResizeObserverBind),this.observerContainerResize.observe(this.context.data.scroll.container),this.onWheelBind=this.onWheelEvent.bind(this),this.onScrollBind=this.onScrollEvent.bind(this),this.onResizeBind=this.onResize.bind(this),this.onMouseMoveBind=this.onMouseMoveEvent.bind(this),this.onScrollStartBind=this.onScrollStart.bind(this),this.onScrollStopBind=this.onScrollStop.bind(this),this.onDirectionChangeBind=this.onDirectionChange.bind(this),this.eventManager.on("wheel",this.onWheelBind),this.scrollManager.bindEvents({onScrollStart:this.onScrollStartBind,onScrollStop:this.onScrollStopBind,onDirectionChange:this.onDirectionChangeBind}),this.loop.setOnFrame(e=>{this.data.time.delta=e-this.data.time.now,this.data.time.previous=this.data.time.now,this.data.time.now=e,this.data.time.elapsed+=this.data.time.delta,this.onUpdateEvent()}),this.on("image:load:all",()=>{this.onResize()}),this.scrollContainer=window}set scrollPosition(e){this.data.scroll.current=e,this.data.scroll.target=e,this.data.scroll.transformedCurrent=this.data.scroll.current*this.data.viewport.transformScale,this.data.scroll.delta=0,this.data.scroll.lerped=0,this.scrollManager.updatePosition(),this.moduleManager.onScroll(),this.objectManager.checkInview()}set scrollContainer(e){this.observerContainerResize?.unobserve(this.context.data.scroll.container),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),e instanceof Window?(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e):e instanceof HTMLElement?(this.data.scroll.container=e,this.data.scroll.elementContainer=e,this.data.scroll.scrollContainer=e):(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e),this.data.scroll.elementContainer.addEventListener("transitionend",this.onContainerTransitionEndBind),this.observerContainerResize?.observe(this.context.data.scroll.container),this.debouncedResize()}get scrollPosition(){return this.data.scroll.current}get scrollHeight(){return this.data.viewport.contentHeight}get containerHeight(){return this.data.viewport.windowHeight}set speed(e){this.data.scroll.speed=e}set speedAccelerate(e){this.data.scroll.speedAccelerate=.1+(.5-.1)*e}set scrollDesktopMode(e){this.scrollManager.setDesktopMode(e)}set scrollMobileMode(e){this.scrollManager.setMobileMode(e)}static getInstance(){return c.i||(c.i=new c),c.i}reuse(e){return this.moduleManager.find(e)}use(e,t=null){let r={...this.context.settings,...t},i=new e({events:this.eventManager,data:this.data,tools:this.tools,settings:r,centers:this.centers,hover:this.hoverManager});this.moduleManager.register(i)}on(e,t,r=""){this.eventManager.on(e,t,r)}emit(e,t){this.eventManager.emit(e,t)}off(e,t,r=""){this.eventManager.off(e,t,r)}addScrollMark(e){this.scrollManager.addScrollMark(e)}removeScrollMark(e){this.scrollManager.removeScrollMark(e)}start(e){this.data.scroll.scrollContainer?.addEventListener("scroll",this.onScrollBind),this.data.scroll.container?.addEventListener("wheel",this.onWheelBind,{passive:!1}),window.addEventListener("resize",this.onResizeBind),this.root.addEventListener("mousemove",this.onMouseMoveBind);let t=new MutationObserver((o,s)=>{for(let a of o)a.type==="attributes"&&(a.attributeName==="style"||a.attributeName==="class")&&this.onResize()}),r={attributes:!0,attributeFilter:["style","class"]};t.observe(this.context.data.scroll.container,r),this.use(At);let i=window.getComputedStyle(document.documentElement).fontSize,n=parseFloat(i);this.context.data.viewport.baseRem=n,document.documentElement.classList.add("-string"),this.moduleManager.onInit(),this.onResize(),this.initObjects(),this.objectManager.observeDOM(),this.loop.start(e),this.eventManager.emit("start",null)}initObjects(){document.querySelectorAll("[string],[data-string]").forEach(e=>{this.objectManager.add(e)}),document.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(e=>{let t=this.tools.domAttribute.process({element:e,key:"copy-from",fallback:""});t&&t.length>0&&this.objectManager.linkMirror(t,e)}),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame()}setupSettings(e){this.context.settings={...this.context.settings,...e},this.onSettingsChange({isDesktop:this.data.viewport.windowWidth>1080,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0,isForceRebuild:!1})}onResizeObserverEvent(){this.debouncedResize()}onContainerTransitionEnd(e){e.target===this.context.data.scroll.container&&(this.onResize(),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame())}onMouseMoveEvent(e){this.cursorController.onMouseMove(e),this.moduleManager.onMouseMove(e),R.measure(()=>{this.moduleManager.onMouseMoveMeasure()})}onWheelEvent(e){e.target.closest("[string-isolation],[data-string-isolation]")==null&&(this.scrollManager.get().onWheel(e),this.moduleManager.onWheel(e))}onScrollStart(){this.moduleManager.onScrollStart(),this.eventManager.emit("scroll:start",null)}onScrollStop(){this.moduleManager.onScrollStop(),this.eventManager.emit("scroll:stop",null)}onDirectionChange(){this.moduleManager.onDirectionChange()}onSettingsChange(e){this.cursorController.onSettingsChange(e),this.objectManager.onSettingsChange(e),this.moduleManager.onSettingsChange(e)}onScrollEvent(e){return e.preventDefault(),this.context.centers.invalidateAll(),this.scrollManager.get().onScroll(e),this.moduleManager.onScroll(),this.objectManager.checkInview(),this.eventManager.emit("lerp",this.data.scroll.lerped),this.eventManager.emit("scroll",this.data.scroll.current),R.measure(()=>{this.moduleManager.onScrollMeasure()}),!1}onUpdateEvent(){this.cursorController.onFrame(),this.scrollManager.get().onFrame(),this.moduleManager.onFrame(),R.mutate(()=>{T.begin(),this.moduleManager.onMutate(),T.commit()}),this.eventManager.emit("update",null)}onResize(e=!1){if(this.canRebuild==!1)return;let t=this.data.scroll.container,r=this.context.data.scroll,i=0,n=0;var o,s=0;let a=t.getBoundingClientRect();t.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),s=a.top,o=r.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(t).transform});this.context.data.viewport.transformScale=window.getComputedStyle(t).scale=="none"?l:Number(window.getComputedStyle(t).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let u=i>1080,d=this.prevWidth!==i,p=this.prevHeight!==n,m=this.context.data.viewport.contentHeight!==o,g=d||u&&p||m;this.context.data.scroll.topPosition=Math.floor(s),this.context.data.viewport.contentWidth=i,this.context.data.viewport.contentHeight=o,this.prevWidth=i,this.prevHeight=n,this.context.data.viewport.windowWidth=i,this.context.data.viewport.windowHeight=n;let h=window.getComputedStyle(document.documentElement).fontSize,v=parseFloat(h);this.context.data.viewport.baseRem=v*l,r.bottomPosition=this.context.data.viewport.contentHeight-n,(d||typeof e=="boolean"&&e)&&this.moduleManager.onResizeWidth(),(g||typeof e=="boolean"&&e)&&(this.context.data.scroll.container.scrollTop>0&&(this.context.data.scroll.current=this.context.data.scroll.container.scrollTop,this.context.data.scroll.target=this.context.data.scroll.container.scrollTop),this.scrollManager.updateResponsiveMode(),this.moduleManager.onResize(),this.onSettingsChange({isDesktop:u,widthChanged:d,heightChanged:p,scrollHeightChanged:m,isForceRebuild:e===!0}),this.moduleManager.onScroll(),this.moduleManager.onFrame())}scrollToElement(e,t=0){let r=document.querySelector(e);if(r){let n=r.getBoundingClientRect().top+window.pageYOffset-this.data.scroll.container.clientTop-t;this.context.data.scroll.delta=n-this.data.scroll.current}else console.warn(`Element not found: ${e}`)}scrollTo(e){this.scrollManager.get().scrollTo(e)}invalidateCenter(e){this.centers.invalidate(e)}invalidateCenters(){this.centers.invalidateAll()}destroy(){this.data.scroll.scrollContainer?.removeEventListener("scroll",this.onScrollBind),this.data.scroll.container?.removeEventListener("wheel",this.onWheelBind),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),this.window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.loop.stop(),this.moduleManager.destroy(),this.eventManager.clearAll(),this.eventManager.off("wheel",this.onWheelBind)}};export{ut as CursorReactiveModule,re as StringAnchor,Xt as StringCursor,Lt as StringData,ce as StringDelayLerpTracker,ue as StringFPSTracker,fe as StringForm,ie as StringGlide,qt as StringImpulse,Jt as StringLazy,ne as StringLerp,de as StringLerpTracker,te as StringLoading,Kt as StringMagnetic,x as StringModule,q as StringObject,se as StringParallax,pe as StringPositionTracker,dt as StringProgress,ve as StringProgressPart,ee as StringResponsive,oe as StringScrollbar,be as StringScroller,ge as StringSequence,le as StringSplit,Zt as StringSpotlight,He as StringTune,he as StringVideoAutoplay,He as default,R as frameDOM,T as styleTxn};
24
24
  //# sourceMappingURL=index.mjs.map