@fiddle-digital/string-tune 1.1.51-alpha.0 → 1.1.52

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 Re=class{constructor(r=.1,e){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=r,this.context=e,this.onSettingsChange({isDesktop:e.data.viewport.windowWidth>1024,isForceRebuild:!1,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0})}onMouseMove(r){this.context.data.cursor.targetX=r.clientX,this.context.data.cursor.targetY=r.clientY;let e=performance.now(),t=e-this.lastMouseTime;t>0&&(this.context.data.cursor.velocityX=(r.clientX-this.lastMouseX)/t,this.context.data.cursor.velocityY=(r.clientY-this.lastMouseY)/t),this.lastMouseX=r.clientX,this.lastMouseY=r.clientY,this.lastMouseTime=e}onFrame(){let{targetX:r,targetY:e,smoothedX:t,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:t,to:r,progress:this.smoothingFactor}),s=this.context.tools.lerp.process({from:i,to:e,progress:this.smoothingFactor}),o=this.getStepDistance(n,s);this.isSettled(o)?this.snapToTarget():this.applyStep(n,s)}onSettingsChange(r){let e=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(e)}setLerpFactor(r){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(r,e){return Math.hypot(r,e)}isSettled(r){return r<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(r,e){this.context.data.cursor.smoothedX+=r,this.context.data.cursor.smoothedY+=e,this.context.data.cursor.stepX=r,this.context.data.cursor.stepY=e}};var oe=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")}registerStateEvent(r,e){this.stateEvents.add(r),e!==void 0&&(this.lastPayloads[r]=e)}on(r,e,t){let i=t?`${r}:${t}`:r;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(e),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&e(this.lastPayloads[i])}off(r,e,t){let i=t?`${r}:${t}`:r;this.listeners[i]&&this.listeners[i].delete(e)}emit(r,e){this.stateEvents.has(r)&&(this.lastPayloads[r]=e);let t=this.listeners[r];if(t)for(let i of t)i(e)}onProgress(r,e){this.on(`progress:${r}`,e)}emitProgress(r,e){this.emit(`progress:${r}`,e)}onInview(r,e){this.on(`object:inview:${r}`,e)}emitInview(r,e){this.emit(`object:inview:${r}`,e)}onScroll(r){this.on("scroll",r)}emitScroll(r){this.emit("scroll",r)}onUpdate(r){this.on("update",r)}emitUpdate(){this.emit("update")}clear(r){delete this.listeners[r]}clearAll(){this.listeners={}}};var De=class{constructor(r){this.data=r;this.modules=[];this.uiModules=[];this.allModules=[]}register(r){if(r.type===1?this.modules.push(r):r.type===2&&this.uiModules.push(r),r.cssProperties&&r.cssProperties.length>0&&typeof window.CSS<"u"&&"registerProperty"in window.CSS)for(let e=0;e<r.cssProperties.length;e++)try{window.CSS.registerProperty(r.cssProperties[e])}catch{}r.onSubscribe(),this.rebuildAllModules()}find(r){for(let e=0;e<this.modules.length;e++){let t=this.modules[e];if(t instanceof r)return t}}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(r){this.callAll("onMouseMove",r)}onWheel(r){this.callAll("onWheel",r)}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(r){this.callAll("onSettingsChange")}onDOMMutate(r,e){this.callAll("onDOMMutate",r,e)}destroy(){this.callAll("onUnsubscribe"),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(r,e,t){this.modules.length>0&&this.callLifecycleStrict(this.modules,r,e,t),this.uiModules.length>0&&this.callLifecycleStrict(this.uiModules,r,e,t)}callLifecycleStrict(r,e,t,i){let n=r.length;switch(e){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":for(let s=0;s<n;s++){let o=r[s];o&&o[e](this.data)}break;case"onDOMMutate":for(let s=0;s<n;s++){let o=r[s];o&&o[e](t,i)}break;case"onMouseMove":case"onWheel":for(let s=0;s<n;s++){let o=r[s];o&&o[e](t)}break;default:for(let s=0;s<n;s++){let o=r[s];o&&o[e]()}break}}rebuildAllModules(){this.allModules.length=0;for(let r=0;r<this.modules.length;r++)this.allModules.push(this.modules[r]);for(let r=0;r<this.uiModules.length;r++)this.allModules.push(this.uiModules[r])}};var Fe=class{constructor(r,e,t){this.parent=t;this.properties=new Map;this.id=r,this.htmlElement=e}get parentObject(){return this.parent}setProperty(r,e){this.properties.set(r,e)}getProperty(r){return this.properties.get(r)??null}setEasing(r){this.easingFn=r??void 0}getEasing(){return this.easingFn}applyProgress(r,e){let t=this.easingFn??e;return t?t(r):r}};var ue=class{constructor(r,e){this.id="";this.keys=[];this.mirrors=new Map;this.properties=new Map;this.eventNameCache=new Map;this.eventNameSuffixCache=new Map;this.progress=0;this.progressRaw=0;this.startPosition=0;this.differencePosition=0;this.transformValue=null;this.eventProgressName=null;this.lerp=0;this.glide=0;this.isMagneting=!1;this.magneticX=0;this.magneticY=0;this.magneticTargetX=0;this.magneticTargetY=0;this.eventLerpName=null;this.eventGlideName=null;this.eventMagneticName=null;this.modules=[];this.events=new oe;this.htmlElement=e,this.id=r,this.eventProgressName=this.getScopedEventName("object:progress")}getScopedEventName(r,e){if(e==null){let s=this.eventNameCache.get(r);if(s)return s;let o=`${r}:${this.id}`;return this.eventNameCache.set(r,o),o}let t=this.eventNameSuffixCache.get(r);t||(t=new Map,this.eventNameSuffixCache.set(r,t));let i=t.get(e);if(i)return i;let n=`${r}:${this.id}:${e}`;return t.set(e,n),n}setProperty(r,e){this.properties.set(r,e)}getProperty(r){return this.properties.get(r)??null}enter(){this.events.emit("enter",this),this.setProperty("active",!0),this.modules.forEach(r=>{r.enterObject(this.id,this)})}leave(){this.events.emit("leave",this),this.setProperty("active",!1),this.modules.forEach(r=>{r.exitObject(this.id)})}remove(){this.modules.forEach(r=>{r.removeObject(this.id)})}show(){this.htmlElement.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(r){return this.modules.includes(r)?!1:(this.modules.push(r),!0)}addMirror(r){this.mirrors.set(r.id,r)}removeMirror(r){this.mirrors.delete(r)}get mirrorObjects(){return Array.from(this.mirrors.values())}get connects(){return this.mirrorObjects.map(r=>r.htmlElement)}};var de=class{constructor(){this.readQueue=[];this.writeQueue=[];this.computeQueue=[];this.isProcessing=!1;this.pendingFrame=null;this.rectCache=new WeakMap;this.dimensionCache=new WeakMap}scheduleRead(r,e=0){this.readQueue.push({priority:e,execute:r}),this.scheduleFlush()}scheduleCompute(r,e=0){this.computeQueue.push({priority:e,execute:r}),this.scheduleFlush()}scheduleWrite(r,e=0){this.writeQueue.push({priority:e,execute:r}),this.scheduleFlush()}batchModuleInitialization(r){r.forEach(({module:e,object:t,element:i,attributes:n,globalId:s})=>{this.scheduleRead(()=>{let o=i.getBoundingClientRect();this.rectCache.set(i,o),this.dimensionCache.set(i,{width:i.offsetWidth||i.clientWidth||o.width,height:i.offsetHeight||i.clientHeight||o.height}),e.initializeObject(s,t,i,n)},1)}),r.forEach(({module:e,object:t,windowSize:i})=>{this.scheduleCompute(()=>{e.calculatePositions(t,i)},2)}),r.forEach(({module:e,object:t})=>{this.scheduleWrite(()=>{e.connectObject(t),e.addObject(t.id,t)},3)})}getCachedRect(r){return this.rectCache.get(r)}getCachedDimensions(r){return this.dimensionCache.get(r)}scheduleFlush(){this.pendingFrame!==null||this.isProcessing||(this.pendingFrame=requestAnimationFrame(()=>{this.flush()}))}flush(){this.isProcessing=!0,this.pendingFrame=null;let r=(e,t)=>t.priority-e.priority;try{[...this.readQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Read task error:",s)}}),this.readQueue=[],[...this.computeQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Compute task error:",s)}}),this.computeQueue=[],[...this.writeQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Write task error:",s)}}),this.writeQueue=[]}finally{this.rectCache=new WeakMap,this.dimensionCache=new WeakMap,this.isProcessing=!1}}flushSync(){this.pendingFrame!==null&&(cancelAnimationFrame(this.pendingFrame),this.pendingFrame=null),this.flush()}clear(){this.pendingFrame!==null&&(cancelAnimationFrame(this.pendingFrame),this.pendingFrame=null),this.readQueue=[],this.writeQueue=[],this.computeQueue=[],this.rectCache=new WeakMap,this.dimensionCache=new WeakMap}};var He=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var C=class{constructor(r){this.cssProperties=[];this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new He;this.tools=r.tools,this.data=r.data,this.settings=r.settings,this.events=r.events,this.centers=r.centers,this.hover=r.hover,this.objectManager=r.objectManager,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:(e,t,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.elementContainer.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(e,t,i)=>{let n=i.top,s=i.height;return n+s-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(e,t,i)=>i.height},{key:"half-width",type:"number",fallback:(e,t,i)=>i.width/2},{key:"half-height",type:"number",fallback:(e,t,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(r,e,t,i){let n=this.tools.boundingClientRect.process({element:t});for(let{key:s,type:o,fallback:a,transform:l}of this.attributesToMap){let c=typeof a=="function"?a(t,e,n):a,u=i[s]??i[`string-${s}`]??i[`data-string-${s}`],d=this.tools.domAttribute.process({element:t,key:s,fallback:u??this.settings[s]??c}),h=this.parseAttribute(d,o,{element:t,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(h=l(h)),e.setProperty(s,h)}}calculatePositions(r,e){let t=r.getProperty("start"),i=r.getProperty("size"),n=r.getProperty("offset-bottom"),s=r.getProperty("offset-top"),o=r.getProperty("enter-el"),a=r.getProperty("enter-vp"),l=r.getProperty("exit-el"),c=r.getProperty("exit-vp"),u=0,d=0,h=0,b=0;o==="top"&&a==="top"||o==="left"&&a==="left"?(h=-e+1,u=t-n):o==="top"&&a==="bottom"||o==="left"&&a==="right"?u=t-e-n:o==="bottom"&&a==="top"||o==="right"&&a==="left"?(h=-e-i+1,u=t+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(h=-i+1,u=t-e+i-n),l==="top"&&c==="top"||l==="left"&&c==="left"?(b=-i+1,d=t+s):l==="top"&&c==="bottom"||l==="left"&&c==="right"?(b=-e-i+1,d=t-e+s):l==="bottom"&&c==="top"||l==="right"&&c==="left"?d=t+i+s:(l==="bottom"&&c==="bottom"||l==="right"&&c==="right")&&(b=-e+1,d=t-e+i+s),r.setProperty("start-bias",h),r.setProperty("end-bias",b),r.setProperty("start-position",u-this.data.scroll.topPosition),r.setProperty("end-position",d-this.data.scroll.topPosition),r.setProperty("difference-position",d-u);let m=r.getProperty("inview-top")??0,g=r.getProperty("inview-bottom")??0;r.setProperty("inview-start-position",r.getProperty("start-position")+m),r.setProperty("inview-end-position",r.getProperty("end-position")+g)}parseAttribute(r,e,t={}){if(r==null)return null;if(typeof e=="object"&&e.type==="enum")return e.values.includes(r)?r:e.values[0];switch(e){case"number":return parseFloat(r);case"boolean":return r===""||r==="true";case"json":try{return JSON.parse(r)}catch{return null}case"tuple":return r.trim().split(/\s+/);case"easing":return this.tools.easingFunction.process({easing:r});case"color":return this.tools.colorParser.process({value:r});case"dimension":return r=="0"?0:t.element!=null&&t.viewportHeight!=null&&t.baseRem!=null&&t.boundingRect!=null?this.tools.unitParser.process({value:r,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem}):0;case"breakpoint-dimension":if(t.element!=null&&t.viewportHeight!=null&&t.baseRem!=null&&t.boundingRect!=null){let i=r.trim().split("|"),n=[];for(let s of i)if(s.includes(":")){let[o,a]=s.split(":");n.push({breakpoint:parseInt(o),value:this.tools.unitParser.process({value:`${a}|`,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:s,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem})});return n}default:return r}}canConnect(r){return r.keys.includes(this.htmlKey)}connectObject(r){r.connect(this)&&this.onObjectConnected(r)}enterObject(r,e){this.objectMap.has(r)||(this.objectMap.set(r,e),this.objects.push(e))}exitObject(r){let e=this.objectMap.get(r);if(!e)return;this.objectMap.delete(r);let t=this.objects.indexOf(e);t!==-1&&this.objects.splice(t,1)}addObject(r,e){this.objectMapOnPage.has(r)||(this.objectMapOnPage.set(r,e),this.objectsOnPage.push(e))}removeObject(r){let e=this.objectMapOnPage.get(r);if(!e)return;this.objectMapOnPage.delete(r);let t=this.objectsOnPage.indexOf(e);t!==-1&&this.objectsOnPage.splice(t,1),this.onObjectDisconnected(e)}onObjectConnected(r){}onObjectDisconnected(r){}applyToElementAndConnects(r,e,t=e){r.getProperty("self-disable")!==!0&&e(r.htmlElement),r.mirrorObjects.forEach(i=>t(i.htmlElement,i))}applyVarToElement(r,e,t){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setVar(r.htmlElement,e,t)}applyPropToElement(r,e,t){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setProp(r.htmlElement,e,t)}applyVarToConnects(r,e,t){for(let i of r.mirrorObjects)this.tools.styleTxn.setVar(i.htmlElement,e,t)}applyPropToConnects(r,e,t){for(let i of r.mirrorObjects)this.tools.styleTxn.setProp(i.htmlElement,e,t)}getObjectEventName(r,e,t){return r.getScopedEventName(e,t)}destroy(){this.objects=[],this.objectMap=new Map}onInit(){}onSubscribe(){}onUnsubscribe(){}onFrame(r){}onMutate(r){}onScrollMeasure(r){}onMouseMoveMeasure(r){}onResize(){}onResizeWidth(){}onScroll(r){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){}onSettingsChange(){}onDOMRebuild(){}onMouseMove(r){}onWheel(r){}onDOMMutate(r,e){}};var Ne=class{constructor(r,e,t,i){this.data=r;this.modules=e;this.events=t;this.tools=i;this.objects=new Map;this.connectQueue=[];this.connectableModulesBuffer=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1;this.domBatcher=new de;this.domBatcherEnabled=!1;this.inviewStarts=[];this.inviewEnds=[];this.inviewActive=new Set;this.inviewStartIdx=0;this.inviewEndIdx=0;this.inviewIndexDirty=!0;this.lastInviewScrollPos=0;this.intersectionObserverEnabled=!0;this.domObserver=null}get all(){return this.objects}add(r){let e=`string-${this.globalId++}`,t="string-id";r.getAttribute("string-id")&&(e=r.getAttribute("string-id"),t="string-id"),r.getAttribute("data-string-id")&&(e=r.getAttribute("data-string-id"),t="data-string-id");let i=e&&this.objects.has(e)?this.objects.get(e):new ue(e,r);r.setAttribute(t,i.id);let n=r.getAttribute("string")??r.getAttribute("data-string");n&&(i.keys=this.splitPipeAndTrim(n)),r.setAttribute("string-inited",""),this.objects.set(i.id,i);let s=this.getAllAttributes(r),o=this.modules.core;for(let c=0;c<o.length;c++){let u=o[c];"setupCoreProperties"in u&&typeof u.setupCoreProperties=="function"&&u.setupCoreProperties(i,r,s)}let a=this.connectableModulesBuffer;a.length=0;let l=this.modules.all;for(let c=0;c<l.length;c++){let u=l[c];u instanceof C&&u.canConnect(i)&&a.push(u)}if(this.domBatcherEnabled&&a.length>0){let c=new Array(a.length);for(let u=0;u<a.length;u++)c[u]={module:a[u],object:i,element:r,attributes:s,globalId:this.globalId,windowSize:this.data.viewport.windowHeight};this.domBatcher.batchModuleInitialization(c),this.domBatcher.scheduleWrite(()=>{this.initObservers(i,r),this.checkInviewForObject(i)})}else{for(let c=0;c<a.length;c++){let u=a[c];u.initializeObject(this.globalId,i,r,s),u.calculatePositions(i,this.data.viewport.windowHeight),u.connectObject(i),u.addObject(i.id,i)}this.initObservers(i,r),this.checkInviewForObject(i)}if(this.connectQueue.length>0){let c=0;for(let u=0;u<this.connectQueue.length;u++){let d=this.connectQueue[u];if(d.id===i.id){this.attachMirrorToObject(i,d.element);continue}this.connectQueue[c++]=d}this.connectQueue.length=c}a.length=0,this.inviewIndexDirty=!0}setDOMBatcherEnabled(r){this.domBatcherEnabled=r,r||this.domBatcher.flushSync()}setIntersectionObserverEnabled(r){if(this.intersectionObserverEnabled!==r){this.intersectionObserverEnabled=r;for(let e of this.objects.values())e.getProperty("observer-progress")?.disconnect(),r&&this.initObservers(e,e.htmlElement)}}invalidateInviewIndex(){this.inviewIndexDirty=!0}refreshLayoutForRoot(r){if(!r)return;let e=new Set,t=n=>{let s=n.getAttribute("string-id")??n.getAttribute("data-string-id");if(!s)return;let o=this.objects.get(s);o&&e.add(o)};if(r instanceof HTMLElement){t(r);let n=r.querySelectorAll("[string-id],[data-string-id]");for(let s=0;s<n.length;s++)t(n[s])}if(e.size===0)return;let i=this.data.viewport.windowHeight;for(let n of e){let s=n.htmlElement;if(!s||!s.isConnected)continue;let o=this.getAllAttributes(s),a=this.modules.all;for(let l=0;l<a.length;l++){let c=a[l];c instanceof C&&c.canConnect(n)&&(c.initializeObject(this.globalId,n,s,o),c.calculatePositions(n,i))}}this.inviewIndexDirty=!0,this.checkInview()}remove(r){let e=this.objects.get(r);e&&(e.events.clearAll(),e.getProperty("observer-progress")?.disconnect(),e.getProperty("observer-inview")?.disconnect(),e.htmlElement.removeAttribute("string-inited"),e.leave(),e.remove(),e.mirrorObjects.forEach(t=>{let i=this.getMirrorIds(t.htmlElement);this.setMirrorIds(t.htmlElement,i.filter(s=>s!==t.id)),this.mirrors.delete(t.id);let n=t.htmlElement.getAttribute("string-copy-from")??t.htmlElement.getAttribute("data-string-copy-from");n&&this.enqueueConnection(n,t.htmlElement)}),this.objects.delete(r),this.inviewActive.delete(e),this.inviewIndexDirty=!0)}enqueueConnection(r,e){let t=this.splitPipeAndTrim(r);for(let i=0;i<t.length;i++){let n=t[i];this.connectQueue.some(s=>s.id===n&&s.element===e)||this.connectQueue.push({id:n,element:e})}}linkMirror(r,e){let t=this.splitPipeAndTrim(r);for(let i=0;i<t.length;i++){let n=t[i],s=this.objects.get(n);s?this.attachMirrorToObject(s,e):this.enqueueConnection(n,e)}}attachMirrorToObject(r,e){let t=this.getMirrorIds(e);for(let o of t){let a=this.mirrors.get(o);if(a&&a.parentObject===r)return a}let i=`string-mirror-${this.mirrorId++}`,n=new Fe(i,e,r);this.setMirrorIds(e,[...t,i]),r.addMirror(n),this.mirrors.set(i,n);let s=e.getAttribute("string-easing")??e.getAttribute("data-string-easing");return s&&s.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:s})),n.setProperty("easing",s)),n}detachMirrorByElement(r){let e=this.getMirrorIds(r);e.length!==0&&(e.forEach(t=>this.detachMirrorById(t)),this.clearMirrorIds(r))}detachMirrorById(r){let e=this.mirrors.get(r);e&&(e.parentObject.removeMirror(r),this.mirrors.delete(r))}getMirrorIds(r){let e=r.getAttribute("string-mirror-id")??r.getAttribute("data-string-mirror-id");return e?this.splitPipeAndTrim(e):[]}setMirrorIds(r,e){if(e.length===0){this.clearMirrorIds(r);return}r.setAttribute("string-mirror-id",e.join("|"))}clearMirrorIds(r){r.removeAttribute("string-mirror-id"),r.removeAttribute("data-string-mirror-id")}getAllAttributes(r){let e={},t=r.attributes;for(let i=0;i<t.length;i++){let n=t[i];e[n.name]=n.value}return e}initObservers(r,e){if(!this.intersectionObserverEnabled)return;let t=r.getProperty("offset-top")??0,i=r.getProperty("offset-bottom")??0;r.getProperty("observer-progress")?.disconnect();let n=h=>{h.forEach(b=>{this.events.emit(r.getScopedEventName("object:activate"),b.isIntersecting),b.isIntersecting?r.enter():r.leave()})},s=r.getProperty("outside-container"),o=e.getAttribute("string-outside-container")??e.getAttribute("data-string-outside-container"),a=o!=null?o.trim().toLowerCase():null,l=a===""||a==="true"||a==="1",c=s!=null?s===!0:l,u=this.data.scroll.container===document.body||c?null:this.data.scroll.container,d=new IntersectionObserver(n,{root:u,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${t+this.data.viewport.windowHeight}px 0px`,threshold:0});d.observe(e),r.setProperty("observer-progress",d)}observeDOM(){this.domObserver?.disconnect();let r=new MutationObserver(e=>{let t=!1;for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="childList"){let s=!1;for(let o=0;o<n.removedNodes.length;o++){let a=n.removedNodes[o];if(a.nodeType!==Node.ELEMENT_NODE)continue;s=!0;let l=a;if(this.detachMirrorByElement(l),this.isFixed(l))continue;l.hasAttribute("string")&&this.handleRemoved(l);let c=l.querySelectorAll("[string],[data-string]");for(let d=0;d<c.length;d++){let h=c[d];this.isFixed(h)||this.handleRemoved(h)}let u=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let d=0;d<u.length;d++)this.detachMirrorByElement(u[d])}for(let o=0;o<n.addedNodes.length;o++){let a=n.addedNodes[o];if(a.nodeType!==Node.ELEMENT_NODE)continue;s=!0;let l=a;if(this.isFixed(l))continue;l.hasAttribute("string")&&!l.hasAttribute("string-inited")&&this.add(l);let c=l.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])");for(let h=0;h<c.length;h++)this.add(c[h]);let u=l.getAttribute("string-copy-from")??l.getAttribute("data-string-copy-from");u&&this.linkMirror(u,l);let d=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let h=0;h<d.length;h++){let b=d[h],m=b.getAttribute("string-copy-from")??b.getAttribute("data-string-copy-from");m&&this.linkMirror(m,b)}}s&&(this.modules.onDOMMutate(n.addedNodes,n.removedNodes),t=!0)}}if(t){let i=this.modules.all;for(let n=0;n<i.length;n++)i[n].onDOMRebuild();this.events.emit("dom:changed",null)}});r.observe(document.body,{childList:!0,subtree:!0}),this.domObserver=r}handleRemoved(r){let e=r.getAttribute("string-id")??r.getAttribute("data-string-id");if(!e)return;let t=r.getAttribute("string-copy-from")??r.getAttribute("data-string-copy-from");t&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==t)),this.remove(e)}onSettingsChange(r){for(let e of this.objects.values()){if(!e.htmlElement||!e.htmlElement.isConnected)continue;let t=null,i=this.modules.all;for(let n=0;n<i.length;n++){let s=i[n],o=!1;r.isDesktop?(s.permissions.desktop.rebuild.scrollHeight&&r.scrollHeightChanged&&(o=!0),s.permissions.desktop.rebuild.width&&r.widthChanged&&(o=!0),s.permissions.desktop.rebuild.height&&r.heightChanged&&(o=!0)):(s.permissions.mobile.rebuild.scrollHeight&&r.scrollHeightChanged&&(o=!0),s.permissions.mobile.rebuild.width&&r.widthChanged&&(o=!0),s.permissions.mobile.rebuild.height&&r.heightChanged&&(o=!0)),(o||r.isForceRebuild)&&s.canConnect(e)&&(t==null&&(t=this.getAllAttributes(e.htmlElement)),s.initializeObject(this.globalId,e,e.htmlElement,t),s.calculatePositions(e,this.data.viewport.windowHeight),s.connectObject(e))}}this.inviewIndexDirty=!0}isFixed(r){return r.hasAttribute("string-fixed")}checkInview(){let r=this.data.scroll.transformedCurrent;this.updateInviewWindow(r);for(let e of this.inviewActive)this.checkInviewForObject(e)}checkInviewForObject(r){let e=this.data.scroll.transformedCurrent;if(!this.intersectionObserverEnabled){let c=r.getProperty("start-position"),u=r.getProperty("end-position");if(c!=null&&u!=null){let d=Math.min(c,u),h=Math.max(c,u),b=r.getProperty("is-active")??!1,m=e>=d&&e<=h;m!==b&&(r.setProperty("is-active",m),this.events.emit(r.getScopedEventName("object:activate"),m),m?r.enter():r.leave())}}let t=r.getProperty("inview-start-position"),i=r.getProperty("inview-end-position"),n=r.getProperty("is-inview")??!1,s=Math.min(t,i),o=Math.max(t,i),a=e>=s&&e<=o,l=null;if(!n&&a){let c=Math.abs(e-s),u=Math.abs(o-e);l=c<=u?"enter-top":"enter-bottom"}else n&&!a&&(l=e<s?"exit-top":"exit-bottom");a!==n&&(r.setProperty("is-inview",a),this.events.emit(r.getScopedEventName("object:inview"),{inView:a,direction:l}),a?r.show():r.hide())}updateInviewWindow(r){let e=this.data.viewport.windowHeight,t=r-e,i=r+this.data.viewport.windowHeight+e;for((this.inviewIndexDirty||r<this.lastInviewScrollPos)&&this.rebuildInviewIndex(t,i);this.inviewStartIdx<this.inviewStarts.length&&this.inviewStarts[this.inviewStartIdx].pos<=i;)this.inviewActive.add(this.inviewStarts[this.inviewStartIdx].object),this.inviewStartIdx++;for(;this.inviewEndIdx<this.inviewEnds.length&&this.inviewEnds[this.inviewEndIdx].pos<t;)this.inviewActive.delete(this.inviewEnds[this.inviewEndIdx].object),this.inviewEndIdx++;this.lastInviewScrollPos=r}rebuildInviewIndex(r,e){this.inviewStarts=[],this.inviewEnds=[];for(let t of this.objects.values()){let i=t.getProperty("inview-start-position"),n=t.getProperty("inview-end-position");i==null||n==null||(this.inviewStarts.push({pos:Math.min(i,n),object:t}),this.inviewEnds.push({pos:Math.max(i,n),object:t}))}this.inviewStarts.sort((t,i)=>t.pos-i.pos),this.inviewEnds.sort((t,i)=>t.pos-i.pos),this.inviewActive.clear(),this.inviewStartIdx=this.upperBound(this.inviewStarts,e),this.inviewEndIdx=this.upperBound(this.inviewEnds,r-1);for(let t=0;t<this.inviewStartIdx;t++)this.inviewActive.add(this.inviewStarts[t].object);for(let t=0;t<this.inviewEndIdx;t++)this.inviewActive.delete(this.inviewEnds[t].object);this.inviewIndexDirty=!1}upperBound(r,e){let t=0,i=r.length;for(;t<i;){let n=t+i>>>1;r[n].pos<=e?t=n+1:i=n}return t}splitPipeAndTrim(r){let e=r.split("|"),t=[];for(let i=0;i<e.length;i++){let n=e[i].trim();n.length>0&&t.push(n)}return t}destroy(){this.domObserver?.disconnect(),this.domObserver=null,this.domBatcher.clear()}};var re={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var $=class{constructor(r){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._scrollDirection="vertical";this.isBottomScrollDirection=null;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.isActive=!1;this.lastAppliedDirection=null;this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.onCalcUpdate=()=>{this.isActive&&(this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules())};this.document=document,this.context=r}set scrollDirection(r){this._scrollDirection=r,this._scrollDirection==="vertical"?this.onCalcUpdate=()=>{this.isActive&&(this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules())}:this._scrollDirection==="horizontal"&&(this.onCalcUpdate=()=>{this.isActive&&this.context.data.scroll.scrollContainer?.scrollTo(this.context.data.scroll.current,0)})}onFrame(){}onWheel(r){}onScroll(r){}disableScrollEvents(){}enableScrollEvents(){}activate(){this.isActive||(this.isActive=!0,this.enableScrollEvents())}deactivate(){this.isActive&&(this.isActive=!1,this.disableScrollEvents(),this.isProg=!1,this.context.data.scroll.target=this.context.data.scroll.current,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.context.data.scroll.displacement=0,this.clearScrollingClasses(),this.isBottomScrollDirection=null,this.lastAppliedDirection=null,this.onScrollStop())}destroy(){}updateScrollDirection(r){if(this.isLastBottomScrollDirection=r,this.isBottomScrollDirection===null){this.isBottomScrollDirection=r;return}this.context.data.scroll.isScrollingDown=r,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&this.lastAppliedDirection!==r&&(document.documentElement.classList.toggle(re.SCROLLING_FORWARD,r),document.documentElement.classList.toggle(re.SCROLLING_BACKWARD,!r),document.documentElement.classList.toggle(re.SCROLL_FORWARD,r),document.documentElement.classList.toggle(re.SCROLL_BACKWARD,!r),this.lastAppliedDirection=r)}clearScrollingClasses(){document.documentElement.classList.remove(re.SCROLLING_BACKWARD,re.SCROLLING_FORWARD)}triggerScrollRules(){this.scrollTriggerRules.forEach(r=>{let e=(r.direction==="any"||this.isLastBottomScrollDirection&&r.direction==="forward")&&this.context.data.scroll.current>=r.offset;e&&!r.isActive?(r.onEnter?.(),r.toggleClass&&r.toggleClass.target.classList.add(r.toggleClass.className),r.isActive=!0):!e&&r.isActive&&(r.onLeave?.(),r.toggleClass&&r.toggleClass.target.classList.remove(r.toggleClass.className),r.isActive=!1)})}addScrollMark(r){this.scrollTriggerRules.push(r)}removeScrollMark(r){this.scrollTriggerRules=this.scrollTriggerRules.filter(e=>e.id!==r)}scrollTo(r,e){}};var Ve=class extends ${constructor(e){super(e);this.name="default";this.previousScrollTop=0;this.isScrolling=!1;this.lastScrollEventTime=0;this.scrollStopDelay=120}onFrame(){if(this.context.data.scroll.delta!==0){let e=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=e,this.context.data.scroll.lerped=e,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.isScrolling&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses()))}this.isScrolling&&performance.now()-this.lastScrollEventTime>this.scrollStopDelay&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses())}onScroll(e){let t=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=t,this.context.data.scroll.target=t,this.context.data.scroll.transformedCurrent=t,t!==this.previousScrollTop&&(this.updateScrollDirection(t>this.previousScrollTop),this.previousScrollTop=t),this.lastScrollEventTime=performance.now(),this.isScrolling||(this.isScrolling=!0,this.onScrollStart())}onWheel(e){if(e.deltaY!==0){this.context.data.scroll.delta===0&&!this.isScrolling&&(this.isScrolling=!0,this.onScrollStart());let t=e.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,e.deltaY)),this.context.data.scroll.delta+=t,this.lastScrollEventTime=performance.now()}}deactivate(){super.deactivate(),this.isScrolling=!1,this.lastScrollEventTime=0,this.previousScrollTop=this.context.data.scroll.current}scrollTo(e,t){this.context.data.scroll.target=e,this.context.data.scroll.current=e,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this._scrollDirection==="vertical"?this.context.data.scroll.scrollContainer?.scrollTo({top:e,left:0,behavior:t?"auto":"smooth"}):this.context.data.scroll.scrollContainer?.scrollTo({left:e,top:0,behavior:t?"auto":"smooth"})}};var ze=class extends ${constructor(e){super(e);this.name="disable";this.preventScroll=e=>{e.preventDefault()};this.preventKeyScroll=e=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(e.key)&&e.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}enableScrollEvents(){window.addEventListener("touchmove",this.onPreventScroll,{passive:!1}),window.addEventListener("keydown",this.onPreventKeyScroll)}disableScrollEvents(){window.removeEventListener("touchmove",this.onPreventScroll),window.removeEventListener("keydown",this.onPreventKeyScroll)}onFrame(){}onWheel(e){e.preventDefault()}onScroll(e){e.preventDefault()}};var _e=class extends ${constructor(e){super(e);this.name="smooth";this.isScrollbarManipulation=!1;this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.1;this.stepResult={current:0,target:0,delta:0,lerped:0,scrollForce:0,absVelocity:0}}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(),this.clearScrollingClasses(),this.isBottomScrollDirection=null,this.lastAppliedDirection=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}this.context.data.scroll.delta!==0&&(this.computeStep(this.context.data.scroll.current,this.context.data.scroll.target,this.context.data.scroll.delta,this.context.data.scroll.speed,this.context.data.scroll.speedAccelerate,this.context.data.scroll.bottomPosition,this.stepResult),this.scrollForce=this.stepResult.scrollForce,this.context.data.scroll.target=this.stepResult.target,this.context.data.scroll.delta=this.stepResult.delta,this.context.data.scroll.lerped=this.stepResult.lerped,this.context.data.scroll.current=this.stepResult.current,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.updateScrollDirection(this.context.data.scroll.lerped>0),this.stepResult.absVelocity<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(e){if(e.deltaY!==0&&e.preventDefault(),this.wheelImpulse=e.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let t=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&t<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&t>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(e){this.isProg||(this.isScrollbarManipulation=!0)}deactivate(){super.deactivate(),this.isScrollbarManipulation=!1,this.scrollForce=0,this.wheelImpulse=0,this.previousCurrent=this.context.data.scroll.current}scrollTo(e,t){if(t){this.context.data.scroll.current=e,this.context.data.scroll.target=e,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.onCalcUpdate();return}this.context.data.scroll.target=e,this.context.data.scroll.delta=1}computeStep(e,t,i,n,s,o,a){let l=i*s,c=Math.min(Math.max(0,t+l),o),u=i-l,d=(c-e)*n,h=d>0?Math.ceil(e+d):Math.floor(e+d);a.current=h,a.target=c,a.delta=u,a.lerped=d,a.scrollForce=l,a.absVelocity=Math.abs(d)}};var We=class{constructor(r){this.context=r;this.modes=new Map;this.boundEvents=null;this.scrollMarks=[];this.registerMode("smooth",new _e(r)),this.registerMode("default",new Ve(r)),this.registerMode("disable",new ze(r)),this.updateResponsiveMode()}registerMode(r,e){let t=this.context.data.scroll.mode===r,i=this.modes.get(r);i&&(t&&i.deactivate(),i.destroy()),e.name||(e.name=String(r)),this.modes.set(r,e),this.boundEvents&&(e.onScrollStart=this.boundEvents.onScrollStart,e.onScrollStop=this.boundEvents.onScrollStop,e.onChangeDirection=this.boundEvents.onDirectionChange),this.scrollMarks.length>0&&this.scrollMarks.forEach(n=>e.addScrollMark(n)),t&&e.activate()}setMobileMode(r){this.context.data.scroll.modeMobile=r,this.updateResponsiveMode()}setDesktopMode(r){this.context.data.scroll.modeDesktop=r,this.updateResponsiveMode()}updateResponsiveMode(){let e=window.innerWidth<1024?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(e)}updatePosition(){this.modes.forEach(r=>{r.onCalcUpdate()})}setMode(r){if(!this.modes.has(r)){console.warn(`[ScrollManager] Unknown scroll mode: ${r}`);return}if(this.context.data.scroll.mode===r){this.get().activate();return}this.get().deactivate(),this.context.data.scroll.mode=r,this.get().activate()}get(){return this.modes.get(this.context.data.scroll.mode)}getEngines(){return this.modes}onFrame(){this.get().onFrame()}onScroll(r){this.get().onScroll(r)}onWheel(r){this.get().onWheel(r)}bindEvents(r){this.boundEvents=r,this.modes.forEach(e=>{e.onScrollStart=r.onScrollStart,e.onScrollStop=r.onScrollStop,e.onChangeDirection=r.onDirectionChange})}addScrollMark(r){this.scrollMarks.push(r),this.modes.forEach(e=>{e.addScrollMark(r)})}removeScrollMark(r){this.scrollMarks=this.scrollMarks.filter(e=>e.id!==r),this.modes.forEach(e=>{e.removeScrollMark(r)})}destroy(){this.modes.forEach(r=>{r.deactivate(),r.destroy()})}};var Be=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 Ue=class{constructor(){this.threeInstance=null}};var $e=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 je=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var Ge=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var qe=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 Ye=class{constructor(){this.scroll=new $e;this.viewport=new qe;this.cursor=new Be;this.render=new Ue;this.time=new Ge;this.system=new je}};var pe=class{process({element:r}){return r.getBoundingClientRect()}};var he=class{process({element:r,key:e,fallback:t=null}){return r.getAttribute(`string-${e}`)??r.getAttribute(`data-string-${e}`)??t}};var me=class{process({record:r,name:e,fallback:t=null}){return r[e]??r[`data-${e}`]??t}};var ie=class{process({element:r}){let e=r.getBoundingClientRect(),i=getComputedStyle(r).transform.match(/-?[\d.]+/g)?.map(parseFloat)??[];if(i.length===6){let[n,s,o,a,l,c]=i,u=n*a-s*o;return{width:e.width/(n||1),height:e.height/(a||1),left:(e.left*a-e.top*o+o*c-l*a)/u,top:(-e.left*s+e.top*n+l*s-n*c)/u}}return e}};var ge=class{constructor(r=new ie){this.transformTool=r}process({element:r,container:e=document.body}){let t;try{t=e.getBoundingClientRect()}catch{t=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:r});return{top:i.top-t.top,left:i.left-t.left}}};var fe=class{process({from:r,to:e,progress:t}){return(e-r)*t}};var be=class{process({value:r,element:e,viewportHeight:t,baseRem:i,boundingRect:n}){let s=r.split("|").map(a=>a.trim()).filter(Boolean),o=0;for(let a of s){let l=a,c=!1;l.startsWith("-")&&(c=!0,l=l.slice(1));let u=0;l==="selfHeight"?u=e.offsetHeight:l.endsWith("px")?u=parseFloat(l):l.endsWith("%")?u=parseFloat(l)/100*t:l.endsWith("rem")?u=parseFloat(l)*i:l.endsWith("sh")?u=parseFloat(l)*n.height/100:u=parseFloat(l),o+=c?-u:u}return o}};var ve=class{process({value:r,inMin:e=.1,inMax:t=1,outMin:i=.05,outMax:n=.65}){if(r<e)return n;if(r>1&&(r=1),r<=t){let s=(r-e)/(t-e);return n-s*(n-i)}return i}};var Y={left:0,center:.5,right:1},X={top:0,center:.5,bottom:1},ye=class{process({value:r}){if(!r)return"center";let e=r.trim();if(e.startsWith("random(")&&e.endsWith(")")){let t=e.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*t.length);return t[i]}return e}toNormalized({value:r}){let t=this.process({value:r}).toLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)return{x:.5,y:.5};if(t.length===1){let a=t[0],l=this.parseValue(a);return a in Y&&!(a in X)?{x:l,y:.5}:a in X&&!(a in Y)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=t,s=i in X&&!(i in Y),o=n in Y&&!(n in X);return s||o?{x:this.parseValue(n,"horizontal"),y:this.parseValue(i,"vertical")}:{x:this.parseValue(i,"horizontal"),y:this.parseValue(n,"vertical")}}parseValue(r,e){if(e==="horizontal"&&r in Y)return Y[r];if(e==="vertical"&&r in X)return X[r];if(r in Y)return Y[r];if(r in X)return X[r];if(r.endsWith("%")){let i=parseFloat(r);if(!isNaN(i))return i/100}let t=parseFloat(r);return isNaN(t)?.5:t>1?t/100:t}};var Se=class{process({value:r}){let e=r.trim().toLowerCase();if(e.startsWith("#")){let n=e.slice(1);n.length===3&&(n=n.split("").map(c=>c+c).join(""));let s=parseInt(n.slice(0,2),16),o=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:s,g:o,b:a,a:l}}let t=e.match(/rgba?\(([^)]+)\)/);if(t){let[n,s,o,a=1]=t[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:s,b:o,a}}let i=e.match(/hsla?\(([^)]+)\)/);if(i){let[n,s,o,a="1"]=i[1].split(",").map(d=>d.trim()),[l,c,u]=this.hslToRgb(parseFloat(n),parseFloat(s),parseFloat(o));return{r:l,g:c,b:u,a:parseFloat(a)}}return{r:0,g:0,b:0,a:0}}hslToRgb(r,e,t){r=r/360,e=parseFloat(e.toString())/100,t=parseFloat(t.toString())/100;let i=(c,u,d)=>(d<0&&(d+=1),d>1&&(d-=1),d<1/6?c+(u-c)*6*d:d<1/2?u:d<2/3?c+(u-c)*(2/3-d)*6:c),n=t<.5?t*(1+e):t+e-t*e,s=2*t-n,o=Math.round(i(s,n,r+1/3)*255),a=Math.round(i(s,n,r)*255),l=Math.round(i(s,n,r-1/3)*255);return[o,a,l]}};var xe=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:r}){let e=r.trim();if(this.namedCurves[e])return this.cubicBezier(...this.namedCurves[e]);let t=e.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(t){let[i,n,s,o]=t.slice(1).map(Number);return this.cubicBezier(i,n,s,o)}return i=>i}cubicBezier(r,e,t,i){let n=3*r,s=3*(t-r)-n,o=1-n-s,a=3*e,l=3*(i-e)-a,c=1-a-l;function u(m){return((o*m+s)*m+n)*m}function d(m){return((c*m+l)*m+a)*m}function h(m){return(3*o*m+2*s)*m+n}function b(m,g=1e-5){let f,y,v=m,S,x,P;for(P=0;P<8;P++){if(S=u(v)-m,Math.abs(S)<g)return v;if(x=h(v),Math.abs(x)<1e-6)break;v=v-S/x}for(f=0,y=1,v=m;f<y;){if(S=u(v)-m,Math.abs(S)<g)return v;S>0?y=v:f=v,v=(y+f)/2}return v}return function(m){return d(b(m))}}};var Ee=class{process({distance:r,radius:e,strength:t}){if(r>=e)return 0;let i=(e-r)/e;return t*i}};var Me=class{process({from:r,to:e,progress:t}){return{r:r.r+(e.r-r.r)*t,g:r.g+(e.g-r.g)*t,b:r.b+(e.b-r.b)*t,a:r.a+(e.a-r.a)*t}}};var we=class{process({from:r,to:e,progress:t}){return{x:(e.x-r.x)*t,y:(e.y-r.y)*t}}};var Ce=class{process({value:r}){let t=r?.trim();if(!t||t==="none")return 1;try{if(t.startsWith("matrix(")){let i=t.match(/matrix\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("scale(")){let i=t.match(/scale\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("scaleX(")){let i=t.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(t.startsWith("scale3d(")){let i=t.match(/scale3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("matrix3d(")){let i=t.match(/matrix3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}}catch(i){return console.error(`Error parsing transform string "${t}":`,i),1}return 1}};var Xe=class{process({attributeValue:r}){let e={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return r&&r.split("|").forEach(i=>{let n=i.trim();if(!n)return;let s=n.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(s){let o=s[1]||"",a=s[2],l=this.toCamelCase(o+a),u=(s[4]||"").split(";").map(h=>h.trim()).filter(h=>h.length>0),d=this.parseParamsArray(u);switch(l){case"line":e.line.push(d);break;case"word":e.word.push(d);break;case"char":e.char.push(d);break;case"charLine":e.charLine.push(d);break;case"charWord":e.charWord.push(d);break;case"wordLine":e.wordLine.push(d);break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),e}toCamelCase(r){return r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}parseParamsArray(r){let e={align:"start"};return r.forEach(t=>{if(t==="abs")e.abs=!0;else if(t.startsWith("random")){e.align="random";let i=t.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(e.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(t)&&(e.align=t)}),e}};var Te=class{process({value:r}){let e=[],t="",i=0;for(let n=0;n<r.length;n++){let s=r[n];s==="("&&i++,s===")"&&i--,s==="|"&&i===0?(t.trim()&&e.push(t.trim()),t=""):t+=s}return t.trim()&&e.push(t.trim()),e.map(n=>{let s=n.match(/^(\w+)(?:\((.*)\))?$/);if(s){let[,a,l]=s;return l?{key:a,params:l.split(",").map(c=>c.trim())}:{key:a}}let o=n.indexOf(":");if(o!==-1){let a=n.slice(0,o).trim(),l=n.slice(o+1).trim(),c=l?l.split(",").map(u=>u.trim()):void 0;return{key:a,params:c}}return{key:n}})}};var Ke=class{constructor(){this.inputValidators={required:r=>r!=null&&String(r).trim()!=="",min:(r,e)=>typeof r=="string"&&r.length>=Number(e?.[0]??0),max:(r,e)=>typeof r=="string"&&r.length<=Number(e?.[0]??Number.MAX_SAFE_INTEGER),checked:r=>{if(Array.isArray(r))return r.length>0;if(r===!0||r==="true"||r===1||r==="1")return!0;if(typeof r=="string"){let e=r.trim().toLowerCase();return e==="false"||e==="0"?!1:e.length>0}return!!r},email:r=>typeof r=="string"&&/^[^\s@]+@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(r),phone:r=>{if(typeof r!="string")return!1;let e=r.trim();if(e===""||!/^[0-9()\s+-.]+$/.test(e))return!1;let t=e.replace(/\D/g,"").length;return t>=7&&t<=15},number:r=>typeof r=="string"&&/^-?\d+(\.\d+)?$/.test(r),integer:r=>typeof r=="string"&&/^-?\d+$/.test(r),url:r=>typeof r=="string"&&/^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:\/?#[\]@!$&'()*+,;=]*)?$/.test(r),regex:(r,e)=>this.testByRegex(r,e?.[0]),alpha:r=>this.testByRegex(r,"^[A-Za-z]+$",!0),alpha_num:r=>this.testByRegex(r,"^[A-Za-z0-9]+$",!0),alpha_dash:r=>this.testByRegex(r,"^[A-Za-z0-9_-]+$",!0),same:(r,e,t)=>{let i=e?.[0],n=this.getContextValue(t,i);return i&&n===void 0?!1:this.areValuesEqual(r,n)},different:(r,e,t)=>{let i=e?.[0],n=this.getContextValue(t,i);return i&&n===void 0?!1:!this.areValuesEqual(r,n)},range:(r,e)=>{if(r==null||r==="")return!0;let t=Number(r),i=Number(e?.[0]),n=Number(e?.[1]);return Number.isNaN(t)||Number.isNaN(i)||Number.isNaN(n)?!1:t>=i&&t<=n},digits:(r,e)=>{if(typeof r!="string")return!1;let t=Number(e?.[0]??0);return t<=0?!1:new RegExp(`^\\d{${t}}$`).test(r)},ip:r=>typeof r=="string"&&(this.isIPv4(r)||this.isIPv6(r)),mimes:(r,e)=>this.validateMimes(r,e),max_size:(r,e)=>{let t=Number(e?.[0]);return!t||t<=0?!0:this.validateMaxSize(r,t)},after:(r,e,t)=>this.compareDates(r,e,t,"after"),before:(r,e,t)=>this.compareDates(r,e,t,"before")};this.beforeInputValidators={number:r=>/^-?\d*\.?\d*$/.test(r),integer:r=>/^-?\d*$/.test(r),email:r=>/^[\w@.\-+]*$/.test(r),phone:r=>/^[0-9()\s+-.]*$/.test(r),letters:r=>/^[a-zA-Z]*$/.test(r),lettersSpaces:r=>/^[a-zA-Z\s]*$/.test(r),lettersNumbers:r=>/^[a-zA-Z0-9]*$/.test(r),alpha:r=>/^[A-Za-z]*$/.test(r),alpha_num:r=>/^[A-Za-z0-9]*$/.test(r),alpha_dash:r=>/^[A-Za-z0-9_-]*$/.test(r),digits:(r,e)=>{let t=Number(e?.[0]??0);return t<=0?/^\d*$/.test(r):new RegExp(`^\\d{0,${t}}$`).test(r)},url:r=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(r),pattern:(r,e)=>{try{return new RegExp(e?.[0]||"").test(r)}catch{return!0}}}}process({rules:r,value:e,type:t="input",context:i}){let n=[];for(let c of r){var s=null,o=null,a=!0,l=!0;t=="input"&&(o=this.inputValidators[c.key],!o)||t=="beforeinput"&&(s=this.beforeInputValidators[c.key],!s)||(o&&(a=o(e,c.params,i)),s&&(l=s(e,c.params,i)),l||n.push(this.getErrorMessage(c.key,c.params)),a||n.push(this.getErrorMessage(c.key,c.params)))}return{valid:n.length===0,errors:n}}getErrorMessage(r,e){switch(r){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${e?.[0]} characters`;case"max":return`Maximum ${e?.[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 ${e?.[0]} and ${e?.[1]}`;case"digits":return`Value must contain exactly ${e?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${e?.join(", ")}`;case"max_size":return`File must be smaller than ${e?.[0]} KB`;case"after":return`Date must be after ${e?.[0]}`;case"before":return`Date must be before ${e?.[0]}`;default:return"Invalid value"}}validateMimes(r,e){if(!e||e.length===0)return!0;let t=this.extractFiles(r);if(t.length===0)return!0;let i=e.map(n=>n.trim().toLowerCase());return t.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(r,e){let t=this.extractFiles(r);if(t.length===0)return!0;let i=e*1024;return t.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(r){if(!r)return[];let e=[];return typeof File<"u"&&r instanceof File?(e.push(r),e):typeof FileList<"u"&&r instanceof FileList?Array.from(r):Array.isArray(r)?(r.forEach(t=>{e.push(...this.extractFiles(t))}),e):typeof r=="object"&&("name"in r||"size"in r||"type"in r)?(e.push(r),e):(typeof r=="string"&&r!==""&&e.push({name:r}),e)}isMimeAllowed(r,e){let t=(r.type||"").toLowerCase(),i=this.getFileExtension(r.name);return e.some(n=>{let s=n.replace(/^\./,"").toLowerCase();return s?s.includes("/")?t===s:i===s:!1})}getFileExtension(r){if(!r)return"";let e=r.split(".");return e.length<=1?"":(e.pop()||"").toLowerCase()}compareDates(r,e,t,i){if(r==null||r==="")return!0;let n=e?.[0];if(!n)return!0;let s=this.toDate(r),o=this.resolveDateReference(n,t);return!s||!o?!1:i==="after"?s.getTime()>o.getTime():s.getTime()<o.getTime()}resolveDateReference(r,e){let t=this.getContextValue(e,r);if(t!==void 0)return this.toDate(t);if(r.toLowerCase()==="now")return new Date;if(r.toLowerCase()==="today"){let i=new Date;return i.setHours(0,0,0,0),i}return this.toDate(r)}toDate(r){if(r==null||r==="")return null;if(r instanceof Date)return Number.isNaN(r.getTime())?null:r;if(typeof r=="number"){let e=new Date(r);return Number.isNaN(e.getTime())?null:e}if(typeof r=="string"){let e=Date.parse(r);if(!Number.isNaN(e))return new Date(e)}return null}testByRegex(r,e,t=!1){if(e==null||e==="")return!0;let i=typeof r=="string"?r:r==null?"":String(r);if(t&&i==="")return!0;try{let{source:n,flags:s}=this.normalizeRegex(e);return new RegExp(n,s).test(i)}catch{return!0}}normalizeRegex(r){let e=r.trim();if(e.startsWith("/")&&e.lastIndexOf("/")>0){let t=e.lastIndexOf("/"),i=e.slice(1,t),n=e.slice(t+1);return{source:i,flags:n}}return{source:e,flags:""}}getContextValue(r,e){if(!(!r||!e)){if(r.values&&Object.prototype.hasOwnProperty.call(r.values,e))return r.values[e];if(r.getValue)return r.getValue(e)}}areValuesEqual(r,e){return Array.isArray(r)||Array.isArray(e)?JSON.stringify(r)===JSON.stringify(e):r===e}isIPv4(r){let e=r.split(".");return e.length!==4?!1:e.every(t=>{if(!/^\d+$/.test(t))return!1;let i=Number(t);return i>=0&&i<=255})}isIPv6(r){if(!r)return!1;if(r==="::")return!0;let e=r.split("::");if(e.length>2)return!1;let t=/^[0-9a-fA-F]{1,4}$/,i=r.split(":");return e.length===2?i.every(n=>n===""||t.test(n))&&i.length<=8:i.length===8&&i.every(n=>t.test(n))}};var kt=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}canUseTypedOM(r){return"attributeStyleMap"in r&&typeof CSS<"u"&&typeof CSS.number=="function"&&typeof CSS.px=="function"}writeVar(r,e,t){let i=r.style;if(this.canUseTypedOM(r)&&typeof t=="number"&&Number.isFinite(t))try{r.attributeStyleMap.set(e,CSS.number(t));return}catch{}i.setProperty(e,String(t))}begin(){this.isOpen||(this.isOpen=!0)}setVars(r,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let t=this.pendingVars.get(r)??{};for(let[i,n]of Object.entries(e))t[i]!==n&&(t[i]=n);this.pendingVars.set(r,t)}setVar(r,e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let i=this.pendingVars.get(r)??{};i[e]!==t&&(i[e]=t,this.pendingVars.set(r,i))}setVarDirect(r,e,t){this.writeVar(r,e,t)}setProps(r,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let t=this.pendingProps.get(r)??{};for(let[i,n]of Object.entries(e))t[i]!==n&&(t[i]=n);this.pendingProps.set(r,t)}setProp(r,e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let i=this.pendingProps.get(r)??{};i[e]!==t&&(i[e]=t,this.pendingProps.set(r,i))}run(r){let e=this.isOpen;e||this.begin();try{r(),e||this.commit()}catch(t){throw e||this.cancel(),t}}commit(){if(this.isOpen){this.isOpen=!1;for(let[r,e]of this.pendingVars)for(let[t,i]of Object.entries(e))this.writeVar(r,t,i);this.pendingVars.clear();for(let[r,e]of this.pendingProps){let t=r.style;for(let[i,n]of Object.entries(e))t[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},M=new kt;var Qe=class{constructor(){this.domAttribute=new he;this.recordAttribute=new me;this.transformNullify=new ie;this.boundingClientRect=new pe;this.relativePosition=new ge(this.transformNullify);this.unitParser=new be;this.lerp=new fe;this.adaptiveLerp=new ve;this.originParser=new ye;this.colorParser=new Se;this.validation=new Ke;this.easingFunction=new xe;this.magneticPull=new Ee;this.lerpColor=new Me;this.lerpVector=new we;this.transformScaleParser=new Ce;this.optionsParser=new Xe;this.ruleParser=new Te;this.styleTxn=M}};function Ze(){let p=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,r=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,e=typeof window<"u"?window.innerWidth<=768:!1;return p||r||e}var fr=new WeakMap,H=5e-4,ae="default",At="[string-cursor],[data-string-cursor]",br="[string-cursor-content],[data-string-cursor-content]",Rt=1/240,z=(p,r)=>{let e=Math.pow(10,r);return Math.round(p*e)/e};function _r(p){let r=fr.get(p);return r||(r={prevX:Number.NaN,prevY:Number.NaN},fr.set(p,r)),r}var Dt=class extends C{constructor(e){super(e);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.cssProperties=[{name:"--x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--x-lerp",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y-lerp",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--x-px",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y-px",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--dx",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--dy",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--angle",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--angle-deg",syntax:"<number>",initialValue:"0",inherits:!0}],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"]??ae},{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:"cursor-enter",type:{type:"enum",values:["snap","smooth"]},fallback:"snap"},{key:"cursor-leave",type:{type:"enum",values:["snap","smooth"]},fallback:"smooth"},{key:"cursor-leave-hold",type:"boolean",fallback:!1},{key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>this.tools.adaptiveLerp.process({value:t,inMin:.1,inMax:1,outMin:.05,outMax:.65})},{key:"cursor-vars",type:"string",fallback:""}],Ze()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n),t.setProperty("mouse-x",0),t.setProperty("mouse-y",0),t.setProperty("mouse-pixel-x",0),t.setProperty("mouse-pixel-y",0),t.setProperty("is-mouse-over",!1),t.setProperty("is-mouse-move",!1),t.setProperty("__cursor-vars",this.parseCursorVars(t.getProperty("cursor-vars")));let s=i.getBoundingClientRect();t.setProperty("cached-width",s.width||i.offsetWidth||1),t.setProperty("cached-height",s.height||i.offsetHeight||1)}onResize(){super.onResize(),this.objects.forEach(e=>{let t=e.htmlElement.getBoundingClientRect();e.setProperty("cached-width",t.width||e.htmlElement.offsetWidth||1),e.setProperty("cached-height",t.height||e.htmlElement.offsetHeight||1)})}onMutate(e){if(!this.enabled)return;let t=performance.now(),i=this.lastFrameTime?(t-this.lastFrameTime)/1e3:.016;this.lastFrameTime=t,i>.1&&(i=.1),i<Rt&&(i=Rt);let n=this.data.cursor.targetX,s=this.data.cursor.targetY;if(this.objects.forEach(o=>{let a=o.getProperty("is-mouse-over"),l=o.getProperty("cursor-target-disable"),c=o.getProperty("lerp")??.15,u=this.getFrameAdjustedLerp(c,i),d=this.getObjectDimensions(o),{halfWidth:h,halfHeight:b,width:m,height:g}=d;if(a&&!l){let{cx:f,cy:y}=this.centers.getCenter(o),v=n-(f-h),S=s-(y-b),x=o.getProperty("mouse-pixel-x")??0,P=o.getProperty("mouse-pixel-y")??0,w=x-v,L=P-S;if(w*w+L*L>1e-4){let R=o.getProperty("is-mouse-move")??!1,O=o.getProperty("cursor-enter")??"snap";R||(o.setProperty("is-mouse-move",!0),O==="snap"&&(o.setProperty("mouse-pixel-x",v),o.setProperty("mouse-pixel-y",S),o.setProperty("mouse-x",v),o.setProperty("mouse-y",S),x=v,P=S),this.events.emit(this.getObjectEventName(o,"cursor:start"),null));let T=this.tools.lerp.process({from:x,to:v,progress:u}),F=this.tools.lerp.process({from:P,to:S,progress:u}),I=x+T,A=P+F,q=Math.abs(I-x)>H||Math.abs(A-P)>H;o.setProperty("mouse-pixel-x",I),o.setProperty("mouse-pixel-y",A);let W=o.getProperty("alignment")??"center",B=this.calculateOffset(W,I,m),U=this.calculateOffset(W,A,g);o.setProperty("mouse-x",B),o.setProperty("mouse-y",U),this.setMouseCoordinates(o,B,U,I,A)&&this.events.emit(this.getObjectEventName(o,"cursor:move"),{x:B,y:U}),q&&this.events.emit(this.getObjectEventName(o,"cursor:pixel"),{x:I,y:A})}else{o.setProperty("mouse-pixel-x",v),o.setProperty("mouse-pixel-y",S),o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));let R=o.getProperty("alignment")??"center",O=this.calculateOffset(R,v,m),T=this.calculateOffset(R,S,g);this.setMouseCoordinates(o,O,T,v,S)}}else{if(o.getProperty("cursor-leave-hold")??!1){o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));return}if((o.getProperty("cursor-leave")??"smooth")==="snap"){o.setProperty("is-mouse-move",!1),o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0);return}let v=o.getProperty("mouse-x")??0,S=o.getProperty("mouse-y")??0;if(v!==0||S!==0){o.setProperty("is-mouse-move",!1);let x=this.calculateOffset("center",h,m),P=this.calculateOffset("center",b,g),w=v+this.tools.lerp.process({from:v,to:x,progress:u}),L=S+this.tools.lerp.process({from:S,to:P,progress:u});o.setProperty("mouse-x",w),o.setProperty("mouse-y",L),Math.abs(w)<.001&&Math.abs(L)<.001?(o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0)):this.setMouseCoordinates(o,w,L)}}}),this.cursorPortals.size>0){let{stepX:o,stepY:a,smoothedX:l,smoothedY:c}=this.data.cursor,u=this.cursorPrev;(!Number.isFinite(u.x)||Math.abs(l-u.x)>H||Math.abs(c-u.y)>H||Math.abs(o-u.stepX)>H||Math.abs(a-u.stepY)>H)&&(this.events.emit("cursor",{stepX:o,stepY:a,x:l,y:c}),this.cursorPrev={x:l,y:c,stepX:o,stepY:a});let h=this.data.cursor.targetX,b=this.data.cursor.targetY;this.cursorPortals.forEach(m=>{m.forEach(g=>{this.updatePortalPosition(g,h,b,i)})})}}onObjectConnected(e){let t=e.htmlElement;this.centers.attach(e),e.setProperty("mouseleave",()=>{this.onMouseLeave(e)}),e.setProperty("mouseenter",()=>{this.onMouseEnter(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"))}getCursorClass(e){let t=e.getProperty("cursor-class");return t!=null&&t.length>0?t:null}onMouseEnter(e){if(!document.contains(e.htmlElement))return;e.setProperty("is-mouse-over",!0),this.hoveredObjects.add(e);let t=this.getCursorClass(e);this.withPortalsForObject(e,i=>{t&&i.element.classList.add(t),this.incrementPortalHover(i)}),e.htmlElement.addEventListener("mouseleave",e.getProperty("mouseleave"))}onMouseLeave(e){e.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(e);let t=this.getCursorClass(e);this.withPortalsForObject(e,i=>{t&&i.element.classList.remove(t),this.decrementPortalHover(i)}),document.contains(e.htmlElement)&&e.htmlElement.removeEventListener("mouseleave",e.getProperty("mouseleave"))}onEnterObject(e){e.htmlElement.addEventListener("mouseenter",e.getProperty("mouseenter"))}onLeaveObject(e){e.htmlElement.removeEventListener("mouseenter",e.getProperty("mouseenter")),e.htmlElement.removeEventListener("mouseleave",e.getProperty("mouseleave"))}safariNavigationCleanup(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onElementRemovedFromDOM(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onObjectDisconnected(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(e,t){this.enabled&&((this.shouldRefreshPortals(e)||this.shouldRefreshPortals(t))&&this.collectCursorPortals(),t.length>0&&this.handleRemovedNodes(t))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(At).forEach(t=>{if(!(t instanceof HTMLElement))return;let i=this.resolvePortalId(t),n=this.resolvePortalLerp(t),s=t.matches(br)?t:t.querySelector(br),o=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:t,content:s,prev:{x:o,y:a,stepX:0,stepY:0},hoverCount:0,showTimer:null,lerp:n},c=this.cursorPortals.get(i);c?c.push(l):this.cursorPortals.set(i,[l])})}resolvePortalId(e){let t=[e.getAttribute("data-string-cursor"),e.getAttribute("string-cursor"),e.getAttribute("data-string-cursor-id"),e.getAttribute("string-cursor-id")];for(let i of t)if(i&&i.trim().length>0)return i.trim();return ae}resolvePortalLerp(e){let t=e.getAttribute("data-string-cursor-lerp")??e.getAttribute("string-cursor-lerp")??this.settings["cursor-lerp"];if(!t)return null;let i=parseFloat(t);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(e){for(let t of Array.from(e))if(t instanceof Element&&(t.matches(At)||t.querySelector(At)))return!0;return!1}withPortalsForObject(e,t){this.getPortalsForObject(e).forEach(n=>t(n))}getPortalsForObject(e){if(this.cursorPortals.size===0)return[];let t=this.extractPortalIds(e),i=[];if(t.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let s=n.length>0?n:ae,o=this.cursorPortals.get(s);o&&o.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(ae)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(s=>i.push(s))}return i}extractPortalIds(e){if(!e)return[ae];let t=e.getProperty("cursor-target");return typeof t!="string"||t.trim().length===0?[ae]:t.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(e){e.hoverCount++,e.element.classList.remove("-show"),this.restartPortalShowTimer(e)}decrementPortalHover(e){e.hoverCount=Math.max(0,e.hoverCount-1),e.hoverCount===0&&(this.clearPortalShowTimer(e),e.element.classList.remove("-show"))}restartPortalShowTimer(e){if(this.clearPortalShowTimer(e),!e.element.isConnected){e.showTimer=null;return}e.element.classList.add("-show"),e.showTimer=null}clearPortalShowTimer(e){e.showTimer&&(clearTimeout(e.showTimer),e.showTimer=null)}updatePortalPosition(e,t,i,n){if(!e.element.isConnected)return;let s=e.prev,o=Number.isFinite(s.x)?s.x:t,a=Number.isFinite(s.y)?s.y:i,l=e.lerp??.1,c=this.getFrameAdjustedLerp(l,n),u=(t-o)*c,d=(i-a)*c,h=n>1e-4?n:1/60,b=u/(h*60),m=d/(h*60);if(Math.abs(u)<H&&Math.abs(d)<H)return;let g=o+u,f=a+d;this.writePortalVars(e.element,{"--x":z(g,2),"--y":z(f,2),"--x-lerp":z(b,3),"--y-lerp":z(m,3)}),s.x=g,s.y=f,s.stepX=u,s.stepY=d}handleRemovedNodes(e){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>{t.htmlElement.isConnected||this.onElementRemovedFromDOM(t)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(e=>this.safariNavigationCleanup(e))}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(e,t,i,n,s){if(e.getProperty("cursor-target-style-disable"))return!1;let o=_r(e),a=Math.abs(t)<H&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<H?o.prevX:Math.round(t*100)/100,l=Math.abs(i)<H&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<H?o.prevY:Math.round(i*100)/100;if(Number.isFinite(o.prevX)&&Math.abs(a-o.prevX)<=H&&Number.isFinite(o.prevY)&&Math.abs(l-o.prevY)<=H)return!1;o.prevX=a,o.prevY=l;let c=e.getProperty("__cursor-vars"),u={"--x":z(a,2),"--y":z(l,2)};if(c&&c.size>0){let h=Number.isFinite(n)?n:e.getProperty("mouse-pixel-x"),b=Number.isFinite(s)?s:e.getProperty("mouse-pixel-y"),m=e.getProperty("__prev-x-px"),g=e.getProperty("__prev-y-px"),f=Number.isFinite(m)?h-m:0,y=Number.isFinite(g)?b-g:0;e.setProperty("__prev-x-px",h),e.setProperty("__prev-y-px",b);let v=f===0&&y===0?0:Math.atan2(y,f),S=v*180/Math.PI;c.has("xpx")&&(u["--x-px"]=z(h,2)),c.has("ypx")&&(u["--y-px"]=z(b,2)),c.has("dx")&&(u["--dx"]=z(f,3)),c.has("dy")&&(u["--dy"]=z(y,3)),c.has("angle")&&(u["--angle"]=z(v,4)),c.has("angle-deg")&&(u["--angle-deg"]=z(S,2))}let d=()=>{this.applyToElementAndConnects(e,h=>{M.setVars(h,u)})};return M.isOpen?d():M.run(d),!0}writePortalVars(e,t){if(M.isOpen){M.setVars(e,t);return}M.run(()=>{M.setVars(e,t)})}parseCursorVars(e){return e?new Set(e.split(/[|,]/).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0)):new Set}getFrameAdjustedLerp(e,t){let i=Math.min(.99,Math.max(.001,e));if(!Number.isFinite(t)||t<=0)return i;let s=Math.max(t,Rt)*60,o=1-Math.pow(1-i,s);return Math.min(.999,Math.max(1e-4,o))}getObjectDimensions(e){let t=e.getProperty("cached-width"),i=e.getProperty("cached-height");if(typeof t=="number"&&typeof i=="number"&&t>0&&i>0){let b=t/2,m=i/2;return{width:t,height:i,halfWidth:b,halfHeight:m}}let n=e.htmlElement,s=n.offsetWidth||n.clientWidth||n.scrollWidth||1,o=n.offsetHeight||n.clientHeight||n.scrollHeight||1,a=e.getProperty("half-width"),l=e.getProperty("half-height"),c=typeof a=="number"&&Number.isFinite(a)?a:s/2,u=typeof l=="number"&&Number.isFinite(l)?l:o/2,d=c>0?c*2:s,h=u>0?u*2:o;return e.setProperty("cached-width",d),e.setProperty("cached-height",h),{width:d,height:h,halfWidth:c,halfHeight:u}}calculateOffset(e,t,i){switch(e){case"start":return t/i;case"end":return(t-i)/i;case"center":default:return(t-i/2)/(i/2)}}removeObject(e){if(!this.enabled)return super.removeObject(e);let t=this.objectMapOnPage.get(e);t&&this.centers.detach(t),super.removeObject(e)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var Ft=class extends C{constructor(e){super(e);this.originObservers=new WeakMap;this.htmlKey="impulse",this.cssProperties=[{name:"--push-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--push-y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--push-rotation",syntax:"<number>",initialValue:"0",inherits:!0}],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"]},{key:"rotation-origin",type:"string",fallback:this.settings["rotation-origin"]??"center center"})}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.cacheRotationOrigin(e),this.observeRotationOrigin(e),this.hover.track(e),this.centers.attach(e)}onObjectDisconnected(e){this.hover.untrack(e),this.centers.detach(e);let t=this.originObservers.get(e);t&&(t.disconnect(),this.originObservers.delete(e))}onMouseMove(e){if(!e)return;let t=this.data.cursor.velocityX,i=this.data.cursor.velocityY;if(t===0&&i===0)return;let n=this.data.cursor.targetX,s=this.data.cursor.targetY;for(let o of this.objects){let a=o.htmlElement.getBoundingClientRect();if(n>=a.left&&n<=a.right&&s>=a.top&&s<=a.bottom){{let d=a.width||1,h=Math.max(0,Math.min(1,(this.data.cursor.targetX-a.left)/d));this.events.emit(this.getObjectEventName(o,"object:impulse","side"),{value:h})}let c=o.getProperty("position-strength")||0;if(c!==0){let d=o.getProperty("continuous-push")??!0,h=o.getProperty("__push-latch")===!0;if(d||!h){let b=o.getProperty("velocity-x")||0,m=o.getProperty("velocity-y")||0;b+=t*c,m+=i*c,o.setProperty("velocity-x",b),o.setProperty("velocity-y",m),d||o.setProperty("__push-latch",!0)}}let u=o.getProperty("rotation-strength")??.75;if(u!==0){let d=o.getProperty("continuous-push")??!0,h=o.getProperty("__rotate-latch")===!0;if(d||!h){let{centerX:b,centerY:m}=this.getRotationOriginFromRect(o,a),g=n-b,f=s-m,y=g*i-f*t,v=o.getProperty("ang-vel-deg")||0;v+=y*u*.02,o.setProperty("ang-vel-deg",v),d||o.setProperty("__rotate-latch",!0)}}}}}cacheRotationOrigin(e){let t=e.getProperty("rotation-origin")??"center center",{x:i,y:n}=this.tools.originParser.toNormalized({value:t});e.setProperty("__rotation-origin-x",i),e.setProperty("__rotation-origin-y",n)}observeRotationOrigin(e){let t="string-rotation-origin",i="data-string-rotation-origin",n=new MutationObserver(s=>{for(let o of s)if(o.type==="attributes"&&(o.attributeName===t||o.attributeName===i)){let a=e.htmlElement.getAttribute(t)??e.htmlElement.getAttribute(i);a!==null&&e.setProperty("rotation-origin",a),this.cacheRotationOrigin(e);break}});n.observe(e.htmlElement,{attributes:!0,attributeFilter:[t,i]}),this.originObservers.set(e,n)}getRotationOriginFromRect(e,t){let i=e.getProperty("__rotation-origin-x")??.5,n=e.getProperty("__rotation-origin-y")??.5;return{centerX:t.left+t.width*i,centerY:t.top+t.height*n}}onFrame(e){let t=this.data.cursor.targetX,i=this.data.cursor.targetY;for(let n of this.objects){let s=n.htmlElement.getBoundingClientRect(),o=t>=s.left&&t<=s.right&&i>=s.top&&i<=s.bottom;!o&&n.getProperty("__push-latch")===!0&&n.setProperty("__push-latch",!1),!o&&n.getProperty("__rotate-latch")===!0&&n.setProperty("__rotate-latch",!1)}for(let n=0;n<this.objects.length;n++){let s=this.objects[n],o=s.getProperty("offset-x")||0,a=s.getProperty("offset-y")||0,l=s.getProperty("velocity-x")||0,c=s.getProperty("velocity-y")||0,u=s.getProperty("position-tension")??.05,d=s.getProperty("position-friction")??.15,h=s.getProperty("position-max-velocity")??120,b=s.getProperty("max-offset")??220;l-=u*o,c-=u*a;let m=1-d;l*=m,c*=m,l>h?l=h:l<-h&&(l=-h),c>h?c=h:c<-h&&(c=-h),o+=l,a+=c,o>b?o=b:o<-b&&(o=-b),a>b?a=b:a<-b&&(a=-b);let g=s.getProperty("angle-deg")||0,f=s.getProperty("ang-vel-deg")||0,y=s.getProperty("rotation-tension")??.06,v=s.getProperty("rotation-friction")??.18,S=s.getProperty("rotation-max-angular-velocity")??6,x=s.getProperty("rotation-max-angle")??18;f-=y*g,f*=1-v,f>S?f=S:f<-S&&(f=-S),g+=f,g>x?(g=x,f*=.35):g<-x&&(g=-x,f*=.35);let P=s.getProperty("sleep-epsilon")??.01,w=l*l+c*c<P*P&&o*o+a*a<P*P,L=Math.abs(f)<P&&Math.abs(g)<P;w?(l||c||o||a)&&(s.setProperty("offset-x",0),s.setProperty("offset-y",0),s.setProperty("velocity-x",0),s.setProperty("velocity-y",0),o=a=l=c=0):(s.setProperty("offset-x",o),s.setProperty("offset-y",a),s.setProperty("velocity-x",l),s.setProperty("velocity-y",c)),L?(g||f)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),g=f=0):(s.setProperty("angle-deg",g),s.setProperty("ang-vel-deg",f));let E=s.getProperty("position-update-threshold")??.1,R=s.getProperty("rotation-update-threshold")??.15,O=s.getProperty("__prev-css-x")||0,T=s.getProperty("__prev-css-y")||0,F=s.getProperty("__prev-css-rot")||0,I=Math.round(o*10)/10,A=Math.round(a*10)/10,q=Math.round(g*10)/10,W=Math.abs(I-O)>E||Math.abs(A-T)>E,B=Math.abs(q-F)>R;(W||B)&&(s.setProperty("__next-css-x",I),s.setProperty("__next-css-y",A),s.setProperty("__next-css-rot",q)),s.setProperty("__needs-position-update",W),s.setProperty("__needs-rotation-update",B)}}onMutate(){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.getProperty("__needs-position-update")===!0,n=t.getProperty("__needs-rotation-update")===!0;if(!i&&!n)continue;let s=t.getProperty("__next-css-x")||0,o=t.getProperty("__next-css-y")||0,a=t.getProperty("__next-css-rot")||0;this.applyToElementAndConnects(t,l=>{i&&(M.setVar(l,"--push-x",s),M.setVar(l,"--push-y",o)),n&&M.setVar(l,"--push-rotation",a)}),i&&(t.setProperty("__prev-css-x",s),t.setProperty("__prev-css-y",o),this.events.emit(this.getObjectEventName(t,"object:impulse","move"),{x:s,y:o})),n&&(t.setProperty("__prev-css-rot",a),this.events.emit(this.getObjectEventName(t,"object:impulse","rotate"),{rotation:a})),t.setProperty("__needs-position-update",!1),t.setProperty("__needs-rotation-update",!1)}}};var Ht=class{constructor(){this.measureQueue=[];this.mutateQueue=[];this.scheduled=!1}measure(r){this.measureQueue.push(r),this.schedule()}mutate(r){this.mutateQueue.push(r),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0)}flush(){if(!this.scheduled)return;let r=this.measureQueue;this.measureQueue=[];for(let t=0;t<r.length;t++)try{r[t]()}catch(i){console.error("Error in frameDOM measure task:",i)}let e=this.mutateQueue;this.mutateQueue=[];for(let t=0;t<e.length;t++)try{e[t]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}},V=new Ht;var Wr=20,j={MANUAL_COLS_KEY:"masonry-manual-cols",MANUAL_GAP_KEY:"masonry-manual-gap",DEFAULT_DURATION:600,DEFAULT_EASING:"cubic-bezier(0.25, 1, 0.5, 1)"};function vr(p){if(!p)return j.DEFAULT_DURATION;let r=parseFloat(p);return isNaN(r)?j.DEFAULT_DURATION:r}function Je(p,r){let e=[...p].sort((i,n)=>n.breakpoint-i.breakpoint),t=e.find(i=>r>=i.breakpoint);return t?t.value:e[e.length-1]?.value}var Nt=class extends C{constructor(e){super(e);this.states=new WeakMap;this.htmlKey="masonry",this.attributesToMap.push({key:"masonry-cols",type:"breakpoint-dimension",fallback:"2|640:3|1024:4"},{key:"masonry-gap",type:"breakpoint-dimension",fallback:"16|640:24|1024:32"},{key:"masonry-mode",type:"string",fallback:"auto"})}parseEasing(e){return this.tools.easingFunction.process({easing:e||j.DEFAULT_EASING})}onObjectConnected(e){super.onObjectConnected(e);let t=e.htmlElement;M.begin(),M.setProps(t,{position:"relative",boxSizing:"border-box"}),M.commit();let i=this.createState(e,t);this.states.set(e,i),this.attachImgLoaders(e,i,t),this.scheduleLayout(e,!1,"init");let n=e.id;this.events.on(`masonry:update:${n}`,s=>{s.mode&&e.setProperty("masonry-mode",s.mode),s.cols!==void 0&&e.setProperty(j.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&e.setProperty(j.MANUAL_GAP_KEY,Number(s.gap)),this.scheduleLayout(e,!0,"external-event")})}onFrame(e){let t=e.time.now;this.objectsOnPage.forEach(i=>{let n=this.states.get(i);if(!n||!n.isAnimating)return;let s=0;M.run(()=>{if(n.isAnimatingHeight){let o=t-n.heightStartTime,a=Math.min(1,o/n.heightDuration),l=n.heightEase(a),c=n.startHeight+(n.targetHeight-n.startHeight)*l;M.setProps(i.htmlElement,{height:`${c}px`}),a<1?s++:n.isAnimatingHeight=!1}n.items.forEach((o,a)=>{if(!o.isMoving)return;let l=t-o.startTime,c=l*o.invPosDur,u=c>1?1:c,d=o.posEase(u);o.cx=o.sx+o.dx*d,o.cy=o.sy+o.dy*d;let h=l*o.invSizeDur,b=h>1?1:h,m=o.sizeEase(b);o.cw=o.sw+o.dw*m,M.setProps(a,{transform:`translate3d(${o.cx}px, ${o.cy}px, 0)`,...Math.abs(o.dw)>.05?{width:`${o.cw}px`}:{},willChange:"transform, width"}),u<1||b<1?s++:(o.isMoving=!1,M.setProps(a,{transform:`translate3d(${o.tx}px, ${o.ty}px, 0)`,width:`${o.tw}px`,willChange:"auto"}),o.cx=o.tx,o.cy=o.ty,o.cw=o.tw)})}),s===0&&this.handleAnimationEnd(i,n,t)})}onResize(){this.data.system.suppressMasonryResize||this.objectsOnPage.forEach(e=>{this.states.has(e)&&this.scheduleLayout(e,!0,"window-resize")})}cleanupObject(e){let t=this.states.get(e);t&&(t.ro.disconnect(),t.mo.disconnect(),t.resizeDebounceId&&clearTimeout(t.resizeDebounceId),this.states.delete(e))}createState(e,t){let i=t.getBoundingClientRect(),n=a=>{if(!a.length)return;let l=a[0].contentRect,c=this.states.get(e);if(!c||Math.abs(l.width-c.lastObservedWidth)<=.5&&Math.abs(l.height-c.lastObservedHeight)<=.5)return;c.lastObservedWidth=l.width,c.lastObservedHeight=l.height;let u=getComputedStyle(t),d=parseFloat(u.paddingLeft)||0,h=parseFloat(u.paddingRight)||0,b=l.width-d-h;if(b<=0)return;let{columns:m,gap:g}=this.getGridSettings(e),f=(b-g*(m-1))/m;m===c.lastLayoutColumns&&g===c.lastLayoutGap&&Math.abs(f-c.lastLayoutColumnWidth)<=.5||(c.resizeDebounceId&&window.clearTimeout(c.resizeDebounceId),c.resizeDebounceId=window.setTimeout(()=>{c.isResizing=!0,this.scheduleLayout(e,!0,"resize-observer"),c.isResizing=!1},Wr))},s=a=>{let l=this.states.get(e);if(!l)return;let c=!1;for(let u of a)u.removedNodes.length&&u.removedNodes.forEach(d=>{if(d.nodeType===1){let h=d;this.cleanupImgListeners(l,h),l.items.delete(h),c=!0}}),u.addedNodes.length&&u.addedNodes.forEach(d=>{d.nodeType===1&&(this.attachImgLoaders(e,l,d),c=!0)});c&&this.scheduleLayout(e,!0,"mutation-observer")},o={ro:new ResizeObserver(n),mo:new MutationObserver(s),isResizing:!1,lastObservedWidth:i.width,lastObservedHeight:i.height,lastLayoutColumns:0,lastLayoutGap:0,lastLayoutColumnWidth:-1,lastChildrenHash:0,lastHeightsHash:0,childIds:new WeakMap,nextChildId:1,imgUnsubs:new WeakMap,layoutScheduled:!1,items:new Map,startHeight:t.offsetHeight,targetHeight:t.offsetHeight,heightStartTime:0,heightDuration:j.DEFAULT_DURATION,heightEase:this.parseEasing(null),isAnimatingHeight:!1,isAnimating:!1,pendingHeight:void 0,pendingHeightAnimate:!1,expectedEndTime:0};return o.ro.observe(t),o.mo.observe(t,{childList:!0}),o}handleAnimationEnd(e,t,i){if(t.pendingHeight!==void 0){let n=t.pendingHeight,s=t.pendingHeightAnimate;if(t.pendingHeight=void 0,t.pendingHeightAnimate=!1,s){t.startHeight=e.htmlElement.offsetHeight,t.targetHeight=n,t.heightStartTime=i,t.heightDuration=j.DEFAULT_DURATION,t.heightEase=this.parseEasing(null),t.isAnimatingHeight=!0,t.isAnimating=!0;return}M.run(()=>{M.setProps(e.htmlElement,{height:`${n}px`})})}t.isAnimating&&this.events.emit("masonry:shuffle:end",{object:e}),t.isAnimating=!1,this.objectManager.refreshLayoutForRoot(e.htmlElement),t.endTimerId&&(window.clearTimeout(t.endTimerId),t.endTimerId=void 0),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}scheduleLayout(e,t,i){let n=this.states.get(e);!n||n.layoutScheduled||(n.layoutScheduled=!0,V.measure(()=>{n.layoutScheduled=!1,this.performSyncLayout(e,n,t,i)}))}performSyncLayout(e,t,i,n){let s=e.htmlElement,o=Array.from(s.children);if(o.length===0)return;let a=s.getBoundingClientRect(),l=getComputedStyle(s),c=parseFloat(l.paddingLeft)||0,u=parseFloat(l.paddingRight)||0,d=parseFloat(l.paddingTop)||0,h=a.width-c-u;if(h<=0)return;let{columns:b,gap:m}=this.getGridSettings(e),g=(h-m*(b-1))/b,y=(e.getProperty("masonry-mode")||"auto")==="auto"&&i&&!t.isResizing&&n!=="window-resize"&&n!=="resize-observer",v=b===t.lastLayoutColumns&&m===t.lastLayoutGap&&Math.abs(g-t.lastLayoutColumnWidth)<=.5,S=0;o.forEach(I=>{let A=t.childIds.get(I);A||(A=t.nextChildId++,t.childIds.set(I,A)),S=S*31+A>>>0}),t.lastLayoutColumns=b,t.lastLayoutGap=m,t.lastLayoutColumnWidth=g,t.lastChildrenHash=S;let x=new Map;i&&o.forEach(I=>{let A=t.items.get(I);A&&x.set(I,A.cw)}),M.begin(),o.forEach(I=>{M.setProps(I,{position:"absolute",top:"0",left:"0",width:`${g}px`})}),M.commit();let P=o.map(I=>I.offsetHeight),w=0;P.forEach(I=>w=w*31+Math.round(I*2)>>>0),t.lastHeightsHash=w,i&&x.size>0&&M.run(()=>{x.forEach((I,A)=>{M.setProps(A,{width:`${I}px`})})});let L=new Array(b).fill(0),E=performance.now(),R=!1,O=0;o.forEach((I,A)=>{let q=P[A],W=0,B=L[0];for(let G=1;G<b;G++)L[G]<B&&(B=L[G],W=G);let U=W*(g+m)+c,te=B+d,se=g;L[W]=B+q+m;let ke=vr(I.getAttribute("string-masonry-position-time")),Ae=vr(I.getAttribute("string-masonry-size-time")),dr=ke>0?1/ke:1e3,pr=Ae>0?1/Ae:1e3,hr=this.parseEasing(I.getAttribute("string-masonry-position-easing")),mr=this.parseEasing(I.getAttribute("string-masonry-size-easing")),k=t.items.get(I);if(k)Math.abs(k.tx-U)+Math.abs(k.ty-te)+Math.abs(k.tw-se)>.5&&(k.sx=k.cx,k.sy=k.cy,k.sw=k.cw,k.tx=U,k.ty=te,k.tw=se,k.dx=k.tx-k.sx,k.dy=k.ty-k.sy,k.dw=k.tw-k.sw,k.posEase=hr,k.invPosDur=dr,k.sizeEase=mr,k.invSizeDur=pr,k.startTime=E,k.isMoving=!0,R=!0,O=Math.max(O,ke,Ae));else{let G=U,gr=i?te+30:te;k={sx:G,sy:gr,sw:se,tx:U,ty:te,tw:se,dx:0,dy:0,dw:0,cx:G,cy:gr,cw:se,startTime:E,posEase:hr,invPosDur:dr,sizeEase:mr,invSizeDur:pr,isMoving:i},t.items.set(I,k),i?(k.dx=k.tx-k.sx,k.dy=k.ty-k.sy,k.dw=k.tw-k.sw,R=!0,O=Math.max(O,ke,Ae)):M.run(()=>{M.setProps(I,{transform:`translate3d(${U}px, ${te}px, 0)`,width:`${se}px`,willChange:"auto"})})}});let T=Math.max(...L);if(Math.abs(t.targetHeight-T)>1)if(i){let I=s.getBoundingClientRect(),A=this.data.viewport.windowHeight;var F=!1;if(I.bottom>=-100&&I.bottom<=A+100){let q=I.top+T-A;if(Math.abs(q)>1&&T<s.offsetHeight){let W=I.top+this.data.scroll.current+T-A;this.events.emit("scrollTo",W),F=!0}}T>=t.targetHeight?(y?(t.startHeight=s.offsetHeight,t.heightStartTime=E,t.heightDuration=j.DEFAULT_DURATION,t.heightEase=this.parseEasing(null),t.isAnimatingHeight=!0):M.run(()=>{M.setProps(e.htmlElement,{height:`${T}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}),t.targetHeight=T,t.pendingHeight=void 0):(t.pendingHeight=T,t.pendingHeightAnimate=y,t.targetHeight=T,F||M.run(()=>{M.setProps(e.htmlElement,{height:`${T}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),R=!0}else t.targetHeight=T,t.pendingHeight=void 0,M.run(()=>{M.setProps(e.htmlElement,{height:`${T}px`})});R&&(t.isAnimating||this.events.emit("masonry:shuffle:start",{object:e}),t.isAnimating=!0,O>0&&(t.expectedEndTime=E+O+32,t.endTimerId&&window.clearTimeout(t.endTimerId),t.endTimerId=window.setTimeout(()=>{t.isAnimating&&(t.pendingHeight!==void 0||t.isAnimatingHeight||(this.events.emit("masonry:shuffle:end",{object:e}),t.isAnimating=!1,t.endTimerId=void 0))},O+50)))}getGridSettings(e){let t=this.data.viewport.windowWidth;if((e.getProperty("masonry-mode")||"auto")==="manual"){let o=e.getProperty(j.MANUAL_COLS_KEY),a=e.getProperty(j.MANUAL_GAP_KEY),l=e.getProperty("masonry-cols")||[],c=e.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Je(l,t)??2)),gap:Math.max(0,a??Je(c,t)??16)}}let n=e.getProperty("masonry-cols")||[{breakpoint:0,value:2}],s=e.getProperty("masonry-gap")||[{breakpoint:0,value:16}];return{columns:Math.max(1,Math.round(Je(n,t)??2)),gap:Math.max(0,Je(s,t)??16)}}attachImgLoaders(e,t,i){(i.tagName==="IMG"?[i]:Array.from(i.querySelectorAll("img"))).forEach(s=>{let o=s;if(o.complete||t.imgUnsubs.has(o))return;let a=()=>{this.scheduleLayout(e,!0,"img-load"),this.cleanupImgListeners(t,o)};o.addEventListener("load",a),o.addEventListener("error",a),t.imgUnsubs.set(o,()=>{o.removeEventListener("load",a),o.removeEventListener("error",a)})})}cleanupImgListeners(e,t){let i=n=>{let s=e.imgUnsubs.get(n);s&&(s(),e.imgUnsubs.delete(n))};t.tagName==="IMG"?i(t):t.querySelectorAll("img").forEach(n=>i(n))}};var Vt=class extends C{constructor(r){super(r),this.htmlKey="magnetic",this._type=2,this.cssProperties=[{name:"--magnetic-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-y",syntax:"<number>",initialValue:"0",inherits:!0}],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(r,e,t,i){super.initializeObject(r,e,t,i),e.isMagneting=!1,e.magneticTargetX=0,e.magneticTargetY=0,e.magneticX=0,e.magneticY=0,e.setProperty("magnetic-lerp",.1),e.eventMagneticName=this.getObjectEventName(e,"magnetic:move"),e.setProperty("__next-magnetic-x",0),e.setProperty("__next-magnetic-y",0),e.setProperty("__needs-magnetic-update",!1)}onMouseMove(r){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],n=t.htmlElement.getBoundingClientRect(),s=n.left+n.width/2,o=n.top+n.height/2,a=r.clientX-s,l=r.clientY-o,c=Math.sqrt(a**2+l**2),u=t.getProperty("radius")??0,d=t.getProperty("strength")??0,h=this.tools.magneticPull.process({distance:c,radius:u,strength:d});t.magneticTargetX=a*h,t.magneticTargetY=l*h,h>0&&(t.isMagneting=!0)}}onFrame(r){for(let e=0;e<this.objects.length;e++){let t=this.objects[e];if(t.isMagneting){let i=t.magneticX,n=t.magneticY,s=t.getProperty("magnetic-lerp")??.1,o=t.magneticTargetX,a=t.magneticTargetY,l=this.tools.lerp.process({from:i,to:o,progress:s}),c=this.tools.lerp.process({from:n,to:a,progress:s});l>-.01&&l<.01&&(l=0,t.magneticX=t.magneticTargetX),c>-.01&&c<.01&&(c=0,t.magneticY=t.magneticTargetY),i+=l,n+=c,t.magneticX=i,t.magneticY=n,t.eventMagneticName&&this.events.emit(t.eventMagneticName,{x:i,y:n}),t.setProperty("__next-magnetic-x",i),t.setProperty("__next-magnetic-y",n),t.setProperty("__needs-magnetic-update",!0),t.magneticTargetX===i&&t.magneticTargetY===n&&(t.isMagneting=!1)}}}onMutate(){for(let r=0;r<this.objects.length;r++){let e=this.objects[r];if(!(e.getProperty("__needs-magnetic-update")===!0))continue;let i=e.getProperty("__next-magnetic-x")??e.magneticX,n=e.getProperty("__next-magnetic-y")??e.magneticY;this.applyToElementAndConnects(e,s=>{M.setVar(s,"--magnetic-x",i),M.setVar(s,"--magnetic-y",n)}),e.setProperty("__needs-magnetic-update",!1)}}};var Pe=class extends C{constructor(e){super(e);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Ze()&&(this.enabled=!1)}onObjectConnected(e){this.enabled&&(super.onObjectConnected(e),this.centers.attach(e),this.hover.track(e))}removeObject(e){if(!this.enabled)return super.removeObject(e);let t=this.objectMapOnPage.get(e);t&&(this.centers.detach(t),this.hover.untrack(t)),super.removeObject(e)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(e){this.enabled&&(super.onMouseMoveMeasure(e),this.refreshPointerState())}onScrollMeasure(e){this.enabled&&(super.onScrollMeasure(e),this.refreshPointerState())}getCursorTargets(e=!1){if(!this.enabled)return[];let t=this.hover.activeObjects();return this.nearOnly&&t.length?t:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:e?this.objectsOnPage:this.objects}refreshPointerState(e,t=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,s=e?[e]:this.getCursorTargets(t),o=!this.nearOnly&&this.maxDistanceMultiplier>0?Math.pow(this.data.viewport.windowWidth*this.maxDistanceMultiplier,2):null;for(let a of s){let{cx:l,cy:c}=this.centers.getCenter(a),u=i-l,d=n-c,h=u*u+d*d;if(this.nearOnly){if(h>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(o!==null&&h>o)continue;a.setProperty("dx",u),a.setProperty("dy",d),a.setProperty("dist",Math.sqrt(h))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,V.measure(()=>{this.refreshPointerState(),V.mutate(()=>{this.scrollUpdateScheduled=!1,M.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var zt=Math.PI*2,Br=180/Math.PI,Sr=p=>p<0?0:p>1?1:p,Ur=(p,r)=>{let e=(r-p)%zt;return e>Math.PI&&(e-=zt),e<-Math.PI&&(e+=zt),p+e},$r={computeStep(p,r,e,t,i,n,s,o,a,l,c,u,d,h,b,m,g){let f=a;(m===1||e>t)&&(f=Math.atan2(r,p));let y=i>0?Math.min(e,i):e,v=s,S=o;if(h===1)v=f,S=y;else{let L=Ur(s,f),E=Sr(n);v+=(L-v)*E,S+=(y-S)*E}let x=v*Br-90,P=b===1||Number.isNaN(l)||Math.abs(x-l)>u,w=b===1||Number.isNaN(c)||Math.abs(S-c)>d;g.angle=v,g.dist=S,g.tAngle=f,g.tDist=y,g.degRaw=x,g.cssDeg=Math.round(x*10)/10,g.cssDist=Math.round(S*10)/10,g.angleChanged=P?1:0,g.distChanged=w?1:0}},jr={bypassDeadzone:!0},Gr={forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0},yr=new WeakMap,qr=p=>{let r=yr.get(p);return r||(r={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},yr.set(p,r)),r},_t=class extends Pe{constructor(e){super(e);this.stepResult={angle:0,dist:0,tAngle:0,tDist:0,degRaw:0,cssDeg:0,cssDist:0,angleChanged:0,distChanged:0};this.htmlKey="spotlight",this.cssProperties=[{name:"--spotlight-angle",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--spotlight-distance",syntax:"<number>",initialValue:"0",inherits:!0}],this.nearOnly=!1,this.useAllObjects=!1,this.maxDistanceMultiplier=1,this.attributesToMap.push({key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>Sr(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,i,n){super.initializeObject(e,t,i,n),t.setProperty("spotlight-angle-rad",0),t.setProperty("spotlight-distance",0),t.setProperty("spotlight-angle-rad-target",0),t.setProperty("spotlight-distance-target",0),V.measure(()=>{this.refreshPointerState(t,!0),V.mutate(()=>{M.run(()=>{this.updateSpotlightState(t,Gr)})})})}onMutate(e){if(this.enabled){super.onMutate(e);let t=this.getCursorTargets(!1),i=t.length>0?t:this.getCursorTargets(!0);for(let n=0;n<i.length;n++){let s=i[n];this.updateSpotlightState(s)}}}onCursorScrollUpdate(){let e=this.getCursorTargets(!1),t=e.length>0?e:this.getCursorTargets(!0);for(let i=0;i<t.length;i++){let n=t[i];this.updateSpotlightState(n,jr)}}updateSpotlightState(e,t={}){let i=e.getProperty("dx"),n=e.getProperty("dy"),s=e.getProperty("dist");if(!Number.isFinite(i)||!Number.isFinite(n)||!Number.isFinite(s))return;let o=qr(e);$r.computeStep(i,n,s,e.getProperty("deadzone")??4,e.getProperty("dist-max")??0,e.getProperty("lerp")??.15,o.angle,o.dist,o.tAngle,o.prevDeg,o.prevDist,e.getProperty("angle-threshold")??.2,e.getProperty("distance-threshold")??.5,t.forceImmediate===!0?1:0,t.forceEmit===!0?1:0,t.bypassDeadzone===!0?1:0,this.stepResult),o.angle=this.stepResult.angle,o.dist=this.stepResult.dist,o.tAngle=this.stepResult.tAngle,o.tDist=this.stepResult.tDist,e.setProperty("spotlight-distance-target",o.tDist),e.setProperty("spotlight-angle-rad-target",o.tAngle),e.setProperty("spotlight-angle-rad",o.angle),e.setProperty("spotlight-distance",o.dist),(this.stepResult.angleChanged===1||this.stepResult.distChanged===1)&&(this.writeSpotlightVars(e,this.stepResult.cssDeg,this.stepResult.cssDist),o.prevDeg=this.stepResult.degRaw,o.prevDist=o.dist,this.events.emit(this.getObjectEventName(e,"spotlight:update"),{distance:this.stepResult.cssDist,angleDeg:this.stepResult.cssDeg}))}writeSpotlightVars(e,t,i){let n=()=>{this.applyToElementAndConnects(e,s=>{M.setVar(s,"--spotlight-angle",t),M.setVar(s,"--spotlight-distance",i)})};if(M.isOpen){n();return}M.run(n)}};var xr="-aspect-ready";function Yr(p){if(!p)return!1;let r=p.toLowerCase();return!!(r.endsWith(".svg")||r.startsWith("data:image/svg"))}function Er(p){let r=new DataView(p);return p.byteLength<28?{width:0,height:0}:r.getUint32(0)!==2303741511||r.getUint32(4)!==218765834?{width:0,height:0}:r.getUint32(8)!==13||r.getUint32(12)!==1229472850?{width:0,height:0}:{width:r.getUint32(16,!1),height:r.getUint32(20,!1)}}function Mr(p){let r=new DataView(p);if(r.getUint16(0)!==65496)return{width:0,height:0};let e=2;for(;e+9<p.byteLength;){let t=r.getUint16(e);if(e+=2,t===65498||t===65497)break;let i=r.getUint16(e);if(i<2||e+i>p.byteLength)break;if(t>=65472&&t<=65475||t>=65477&&t<=65479||t>=65481&&t<=65483||t>=65485&&t<=65487)return{height:r.getUint16(e+3),width:r.getUint16(e+5)};e+=i}return{width:0,height:0}}function wr(p){let r=new DataView(p);if(p.byteLength<16)return{width:0,height:0};if(r.getUint32(0,!0)!==1179011410||r.getUint32(8,!0)!==1346520407)return{width:0,height:0};let e=12;for(;e+8<=p.byteLength;){let t=r.getUint32(e,!1),i=r.getUint32(e+4,!0),n=e+8;if(t===1448097880){let s=(r.getUint16(n+4,!0)|r.getUint8(n+6)<<16)+1,o=(r.getUint16(n+7,!0)|r.getUint8(n+9)<<16)+1;return{width:s,height:o}}if(t===1448097824&&n+10<=p.byteLength&&r.getUint8(n+3)===157&&r.getUint8(n+4)===1&&r.getUint8(n+5)===42){let s=r.getUint16(n+6,!0)&16383,o=r.getUint16(n+8,!0)&16383;return{width:s,height:o}}if(t===1448097868&&n+5<=p.byteLength&&r.getUint8(n)===47){let s=r.getUint8(n+1),o=r.getUint8(n+2),a=r.getUint8(n+3),l=r.getUint8(n+4),c=1+((o&63)<<8|s),u=1+((l&15)<<10|a<<2|(o&192)>>6);return{width:c,height:u}}e=n+i+(i&1)}return{width:0,height:0}}function Cr(p,r){let e=(r||"").toLowerCase();if(e.includes("png"))return Er(p);if(e.includes("jpeg")||e.includes("jpg"))return Mr(p);if(e.includes("webp"))return wr(p);let t=Er(p);return t.width||(t=Mr(p),t.width)||(t=wr(p),t.width)?t:{width:0,height:0}}async function Xr(p,r,e){let t=await fetch(p,{mode:"cors",credentials:r?.credentials??"omit",referrerPolicy:r?.referrerPolicy,signal:r?.signal,cache:"default"});if(!t.ok||!t.body)throw new Error(`HTTP ${t.status}`);let i=t.headers.get("content-type"),n=t.body.getReader(),s=1048576,o=4096,a=new Uint8Array(s),l=0,c=0,u=[],d=null,h=!1;for(;;){let{done:g,value:f}=await n.read();if(g)break;if(!f)continue;let y=f.buffer.slice(f.byteOffset,f.byteOffset+f.byteLength);if(u.push(y),!d&&l<s){let v=Math.min(f.byteLength,s-l);if(v>0&&(a.set(f.subarray(0,v),l),l+=v),l-c>=o){let S=l===a.byteLength?a:a.slice(0,l),x=Cr(S.buffer,i);x.width&&x.height&&(d=x,!h&&e&&(e(d),h=!0)),c=l}}}if(!d){let g=await new Response(new Blob(u)).arrayBuffer(),f=Cr(g,i);f.width&&f.height&&(d=f,!h&&e&&(e(d),h=!0))}let b=new Blob(u,{type:i||"application/octet-stream"}),m=URL.createObjectURL(b);return{dims:d,blobUrl:m,contentType:i}}var Wt=class extends C{constructor(e){super(e);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(t=>this.ensureState(t)),this.isStartLoaded=!0}onObjectConnected(e){let t=e.htmlElement;if(!(t instanceof HTMLImageElement))return;t.getAttribute("src")||t.setAttribute("src","data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1' viewBox='0 0 1 1'%3E%3C/svg%3E");let i=this.ensureState(t);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(t);let n=o=>{this.handleInView(t,i,!!o?.inView)};i.unsubscribe&&i.unsubscribe();let s=this.getObjectEventName(e,"object:inview");this.events.on(s,n),i.unsubscribe=()=>this.events.off(s,n),this.isStartLoaded&&(e.getProperty("is-inview")??!1)&&this.handleInView(t,i,!0)}onObjectDisconnected(e){let t=e.htmlElement;if(!(t instanceof HTMLImageElement))return;let i=this.imageStates.get(t);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(e){let t=this.imageStates.get(e);if(!t){let i=this.readSource(e);return t={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(e,t),e.classList.contains("lazyLoad")||e.classList.add("lazyLoad"),e.dataset&&!e.dataset.stringLazySrc&&i&&(e.dataset.stringLazySrc=i),t}return t.src||(t.src=this.readSource(e)),t}readSource(e){let t=this.tools.domAttribute.process({element:e,key:this.htmlKey,fallback:""});return typeof t=="string"?t:t==null?"":String(t)}handleInView(e,t,i){t.pendingActivation=i,i&&(t.aspectReady?this.maybeActivateImage(e,t):t.aspectLoading||this.prepareAspectRatio(e))}async prepareAspectRatio(e){let t=this.ensureState(e);if(!t.src||t.aspectLoading||t.aspectReady)return;if(Yr(t.src)){t.aspectReady=!0,t.allowSrcFallback=!0,this.maybeActivateImage(e,t);return}t.aspectLoading=!0,t.fetching=!0;let i=e.getAttribute("crossorigin"),n=e.getAttribute("referrerpolicy"),s=new AbortController;t.controller=s;try{let{blobUrl:o}=await Xr(t.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:s.signal},a=>{a.width>0&&a.height>0&&!t.aspectReady&&(e.style.aspectRatio=`${a.width} / ${a.height}`,e.classList.add(xr),t.width=a.width,t.height=a.height,t.aspectReady=!0)});t.blobUrl=o,!t.aspectReady&&t.width&&t.height&&(e.style.aspectRatio=`${t.width} / ${t.height}`,e.classList.add(xr),t.aspectReady=!0)}catch{t.allowSrcFallback=!0,t.aspectReady=!0}finally{t.fetching=!1,t.aspectLoading=!1,this.maybeActivateImage(e,t)}}maybeActivateImage(e,t){!t.pendingActivation||t.contentReady||t.contentLoading||!t.aspectReady||!t.src||t.fetching&&!t.blobUrl||(t.blobUrl||t.allowSrcFallback)&&this.activateImage(e,t)}activateImage(e,t){t.contentLoading=!0,this.loadingCount++;let i=o=>{t.contentLoading&&(t.contentLoading=!1,t.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),o&&(t.contentReady=!0,e.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),s=()=>i(!1);e.addEventListener("load",n,{once:!0}),e.addEventListener("error",s,{once:!0}),e.decoding="async",e.loading=e.loading||"lazy",t.blobUrl?(e.removeAttribute("srcset"),e.removeAttribute("sizes"),e.src=t.blobUrl):e.src=t.src,e.complete&&e.naturalWidth>0&&e.naturalHeight>0&&(e.removeEventListener("load",n),e.removeEventListener("error",s),i(!0))}};var Bt=class extends C{constructor(e){super(e);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var et=class extends C{constructor(r){super(r),this.htmlKey=""}canConnect(r){return r.keys[0]==null}};var le=class{constructor(r){this.min=void 0;this.max=void 0;this.enable=!0;this.min=r?.min,this.max=r?.max,this.enable=r?.enable??!0}setEnable(r=!0){this.enable=r}setRange(r,e){this.min=r??void 0,this.max=e??void 0}get mediaQuery(){let r="screen";return this.min&&(r+=` and (min-width: ${this.min}px)`),this.max&&(r+=` and (max-width: ${this.max}px)`),r}},Ut=class extends C{constructor(e){super(e);this.queries={0:new le({max:359}),1:new le({min:360,max:1023}),2:new le({min:1024,max:1365}),3:new le({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 e=this.settings.settings;e.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(e.mobile.min==null?null:e.mobile.min,e.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,e.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(e.tablet.min==null?null:e.tablet.min,e.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,e.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(e.laptop.min==null?null:e.laptop.min,e.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,e.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(e.desktop.min==null?null:e.desktop.min,e.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let e=this.matchMedias[0].matches&&this.queries[0].enable,t=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!=e&&this.events.emit("screen:mobile",e),this.isTabletMedia!=t&&this.events.emit("screen:tablet",t),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=e,this.isTabletMedia=t,this.isLaptopMedia=i,this.isDesktopMedia=n,document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach(o=>{let a=!1;o.hasAttribute("string-mobile")&&e&&(a=!0),o.hasAttribute("string-tablet")&&t&&(a=!0),o.hasAttribute("string-laptop")&&i&&(a=!0),o.hasAttribute("string-desktop")&&n&&(a=!0),a?o.style.display=null:o.style.display="none"})}};var $t=class extends C{constructor(r){super(r),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:e=>{let[t,i]=e,n=this.tools.originParser.process({value:t}),s=this.tools.originParser.process({value:i});return{x:n,y:s}}}]}onObjectConnected(r){super.onObjectConnected(r);let e=r.getProperty("anchor");e&&this.applyToElementAndConnects(r,t=>{t.style.transformOrigin=`${e.x} ${e.y}`})}};var Kr=.05,Qr=.01,Tr=1,Zr=-1,Jr=1,jt=class extends C{constructor(e){super(e);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=e=>{let t=-this.data.scroll.displacement*this.maxDisplacementValue*e.glide;e.eventGlideName&&this.events.emit(e.eventGlideName,t);let i=`translate3d(0, ${t}px, 0)`;e.setProperty("__next-glide-transform",i),e.setProperty("__needs-glide-transform-update",!0)};this.onUpdateDesktopEvent=()=>{for(let e=0;e<this.objects.length;e++)this.setupItem(this.objects[e])};this.onUpdateMobileEvent=()=>{};this.onUpdateEvent=this.onUpdateDesktopEvent;this.htmlKey="glide",this.cssProperties=[{name:"--glide",syntax:"<number>",initialValue:"0",inherits:!0}],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}]}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n),t.glide=t.getProperty("glide")??0,t.eventGlideName=this.getObjectEventName(t,"object:glide"),t.setProperty("__next-glide",0),t.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),t.setProperty("__needs-glide-var-update",!1),t.setProperty("__needs-glide-transform-update",!1)}calcExpanderFactor(e){let t=e?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=t?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,t||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}onResize(){if(window.innerWidth>1024)this.maxDisplacementValue=this.data.viewport.windowHeight*.1,this.onUpdateEvent=this.onUpdateDesktopEvent;else{this.onUpdateEvent=this.onUpdateMobileEvent,this.resetState();for(let e=0;e<this.objects.length;e++){let t=this.objects[e];t.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),t.setProperty("__needs-glide-transform-update",!0),t.setProperty("__next-glide",0),t.setProperty("__needs-glide-var-update",!0)}this.flushPendingGlideStyles()}}resetState(){this.displacement=0,this.acceleration=0,this.isInitialScroll=!0,this.velocityMultiplier=this.baseVelocityMultiplier}onScrollStart(){this.resetState()}onScrollStop(){this.resetState(),this.previousLerp=0,this.data.scroll.displacement=0;let e=0;for(let t=0;t<this.objects.length;t++){let i=this.objects[t];i.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),i.setProperty("__needs-glide-transform-update",!0),i.setProperty("__next-glide",e),i.setProperty("__needs-glide-var-update",!0)}this.flushPendingGlideStyles()}onFrame(e){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Tr,this.acceleration+Kr),this.displacement=Math.max(Qr,Math.min(Tr,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Jr,Math.max(Zr,this.data.scroll.lerped*this.displacement*this.acceleration));let t=this.data.scroll.displacement;for(let i=0;i<this.objects.length;i++){let n=this.objects[i];n.setProperty("__next-glide",t),n.setProperty("__needs-glide-var-update",!0)}this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}onMutate(){this.applyPendingGlideStyles()}applyPendingGlideStyles(){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.getProperty("__needs-glide-var-update")===!0,n=t.getProperty("__needs-glide-transform-update")===!0;if(!(!i&&!n)){if(i){let s=t.getProperty("__next-glide")??this.data.scroll.displacement;this.applyVarToElement(t,"--glide",s),this.applyVarToConnects(t,"--glide",s),t.setProperty("__needs-glide-var-update",!1)}if(n){let s=t.getProperty("__next-glide-transform")??"translate3d(0, 0px, 0)";this.applyPropToElement(t,"transform",s),t.setProperty("__needs-glide-transform-update",!1)}}}}flushPendingGlideStyles(){if(M.isOpen){this.applyPendingGlideStyles();return}M.run(()=>{this.applyPendingGlideStyles()})}};var Gt=class extends C{constructor(e){super(e);this.hasInitializedCSS=!1;this.htmlKey="lerp",this.cssProperties=[{name:"--lerp",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[]}onObjectConnected(e){super.onObjectConnected(e),e.lerp=0,e.setProperty("lerp-applied",0),e.eventLerpName=this.getObjectEventName(e,"object:lerp")}onResize(){super.onResize(),!this.hasInitializedCSS&&this.objectsOnPage.length>0&&(this.hasInitializedCSS=!0,M.run(()=>{for(let e=0;e<this.objectsOnPage.length;e++)this.updateObjectLerp(this.objectsOnPage[e],!0)}))}onScrollStop(){for(let e=0;e<this.objects.length;e++)this.recomputeLerp(this.objects[e],0)}onFrame(e){let t=e.scroll.lerped;for(let i=0;i<this.objects.length;i++)this.recomputeLerp(this.objects[i],t)}recomputeLerp(e,t){e.lerp!==t&&(e.lerp=t,this.updateObjectLerp(e))}onMutate(){M.run(()=>{let e=this.objects.length;for(let t=0;t<e;t++)this.updateObjectLerp(this.objects[t])})}updateObjectLerp(e,t=!1){let i=e.lerp,n=e.getProperty("lerp-applied");if(!t&&n===i)return;e.setProperty("lerp-applied",i);let s=i?.toString()??"0";e.eventLerpName&&this.events.emit(e.eventLerpName,i),M.run(()=>{this.applyVarToElement(e,"--lerp",s),this.applyVarToConnects(e,"--lerp",s)})}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=n=>{n.style.removeProperty("--lerp")};t(e.htmlElement);let i=e.mirrorObjects;for(let n=0;n<i.length;n++)t(i[n].htmlElement)}};var Pr={computeRawProgress(p,r,e){if(e===0)return 0;let t=(p-r)/e;return t<=0?0:t>=1?1:t},computeRawProgressBatch(p,r,e,t,i){for(let n=0;n<i;n++){let s=e[n];if(s===0){t[n]=0;continue}let o=(p-r[n])/s;o<=0?t[n]=0:o>=1?t[n]=1:t[n]=o}}},Le=class extends C{constructor(e){super(e);this.updateScheduled=!1;this.batchStarts=new Float64Array(0);this.batchDiffs=new Float64Array(0);this.batchOut=new Float64Array(0);this.htmlKey="progress",this.cssProperties=[{name:"--progress",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--progress-slice",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n)}sanitizeRawProgress(e){if(!Number.isFinite(e)||e<=0)return 0;if(e>=1)return 1;let t=1e-4;return e>1-t?e=1:e<t&&(e=0),e}applyRawProgress(e,t){let i=this.sanitizeRawProgress(t);if(e.progressRaw===i)return;e.progressRaw=i;let s=e.getProperty("easing"),o=typeof s=="function"?s(i):i;e.progress=o}recomputeProgress(e){let t=e.getProperty("start-position")??e.startPosition,i=e.getProperty("difference-position")??e.differencePosition;e.startPosition=t,e.differencePosition=i;let n=Pr.computeRawProgress(this.data.scroll.transformedCurrent,t,i);this.applyRawProgress(e,n)}ensureBatchCapacity(e){this.batchStarts.length>=e||(this.batchStarts=new Float64Array(e),this.batchDiffs=new Float64Array(e),this.batchOut=new Float64Array(e))}calculatePositions(e,t){super.calculatePositions(e,t),e.startPosition=e.getProperty("start-position")??e.startPosition,e.differencePosition=e.getProperty("difference-position")??e.differencePosition,this.recomputeProgress(e)}onScroll(e){super.onScroll(e)}onObjectConnected(e){super.onObjectConnected(e)}onScrollMeasure(e){let t=this.objects.length;if(t!==0){this.ensureBatchCapacity(t);for(let i=0;i<t;i++){let n=this.objects[i],s=n.getProperty("start-position")??n.startPosition,o=n.getProperty("difference-position")??n.differencePosition;n.startPosition=s,n.differencePosition=o,this.batchStarts[i]=s,this.batchDiffs[i]=o}Pr.computeRawProgressBatch(this.data.scroll.transformedCurrent,this.batchStarts,this.batchDiffs,this.batchOut,t);for(let i=0;i<t;i++)this.applyRawProgress(this.objects[i],this.batchOut[i])}}onMutate(){M.run(()=>{let e=this.objects.length;for(let t=0;t<e;t++)this.updateObjectProgress(this.objects[t])})}updateObjectProgress(e){let t=e.progress;if(e.getProperty("progress-applied")===t)return;let n=e.getProperty("key");e.setProperty("progress-applied",t);let s=e.progressRaw??t,o=e.getProperty("easing");e.eventProgressName&&this.events.emit(e.eventProgressName,t),n&&this.applyVarToElement(e,n,t);for(let a=0;a<e.mirrorObjects.length;a++){let l=e.mirrorObjects[a],c=l.applyProgress(s,typeof o=="function"?o:void 0);l.setProperty("progress",c),n&&this.tools.styleTxn.setVar(l.htmlElement,n,c)}}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=e.getProperty("key");if(!t)return;let i=s=>{s.style.removeProperty(t)};i(e.htmlElement);let n=e.mirrorObjects;for(let s=0;s<n.length;s++)i(n[s].htmlElement)}};var qt=class extends Le{constructor(e){super(e);this.updateScheduledTransform=!1;this.calculateDesktopParallax=e=>{let t=e.progress,i=e.getProperty("parallax")??0,n=e.getProperty("parallax-position-start")??0,s=e.getProperty("parallax-position-end")??1,o=e.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=o*i*(a*n+t*a*s);return this.events.emit(this.getObjectEventName(e,"object:parallax"),l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=e=>(this.events.emit(this.getObjectEventName(e,"object:parallax"),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(e,t,i,n){super.initializeObject(e,t,i,n);let s=t.getProperty("parallax-bias")??0,o=Math.abs(t.getProperty("parallax")??.2);t.setProperty("parallax-sign",Math.sign(t.getProperty("parallax"))),t.setProperty("parallax",o),t.setProperty("parallax-position-start",-.5+.5*s),t.setProperty("parallax-position-end",.5+.5*(1-s));let a=this.data.viewport.windowHeight;t.setProperty("offset-top",o*a),t.setProperty("offset-bottom",o*a)}calculatePositions(e,t){super.calculatePositions(e,t),e.transformValue=this.calculateParallaxForObject(e)}onScroll(e){super.onScroll(e)}onResize(){let e=window.innerWidth>1024;this.calculateParallaxForObject=e?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(e){super.onScrollMeasure(e);for(let t=0;t<this.objects.length;t++){let i=this.objects[t];i.transformValue=this.calculateParallaxForObject(i)}}onMutate(){M.run(()=>{for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.transformValue;i&&(this.applyPropToElement(t,"transform",i.transform),this.applyPropToConnects(t,"transform",i.transform))}})}};var tt=class{constructor(r,e,t,i){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=r,this.scrollbar=e,this.thumb=t,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentWidth,e=this.data.viewport.windowWidth,t=e/r*e;this.thumb.style.setProperty("--size",t+"px"),r<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentWidth,e=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*e+"px"}`)}mouseDownEvent(r){this.startY=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let e=r.clientY-this.startY,t=this.startScrollPosition+e/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=t,this.data.scroll.target=t,this.onScrollTo(t),this.updateThumb()}};var rt=class{constructor(r,e,t,i){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=r,this.scrollbar=e,this.thumb=t,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentHeight,e=this.data.viewport.windowHeight,t=e/r*e;this.thumb.style.setProperty("--height",t+"px"),r<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentHeight,e=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*e+"px"}`)}mouseDownEvent(r){this.startCoordinate=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let e=r.clientY-this.startCoordinate,t=this.startScrollPosition+e/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(t,i));this.data.scroll.current=n,this.data.scroll.target=n,this.onScrollTo(n),this.updateThumb()}};var Yt=class extends C{constructor(e){super(e);this.isDragging=!1;this.scrollMode="smooth";this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this),this.requestScrollTo=t=>{this.events.emit("scrollTo",{position:t,immediate:!0})}}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(e){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}addCustomStyles(){let e=document.createElement("style");e.textContent=`
1
+ var Oe=class{constructor(r=.1,e){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=r,this.context=e,this.onSettingsChange({isDesktop:e.data.viewport.windowWidth>1024,isForceRebuild:!1,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0})}onMouseMove(r){this.context.data.cursor.targetX=r.clientX,this.context.data.cursor.targetY=r.clientY;let e=performance.now(),t=e-this.lastMouseTime;t>0&&(this.context.data.cursor.velocityX=(r.clientX-this.lastMouseX)/t,this.context.data.cursor.velocityY=(r.clientY-this.lastMouseY)/t),this.lastMouseX=r.clientX,this.lastMouseY=r.clientY,this.lastMouseTime=e}onFrame(){let{targetX:r,targetY:e,smoothedX:t,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:t,to:r,progress:this.smoothingFactor}),s=this.context.tools.lerp.process({from:i,to:e,progress:this.smoothingFactor}),o=this.getStepDistance(n,s);this.isSettled(o)?this.snapToTarget():this.applyStep(n,s)}onSettingsChange(r){let e=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(e)}setLerpFactor(r){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(r,e){return Math.hypot(r,e)}isSettled(r){return r<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(r,e){this.context.data.cursor.smoothedX+=r,this.context.data.cursor.smoothedY+=e,this.context.data.cursor.stepX=r,this.context.data.cursor.stepY=e}};var se=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")}registerStateEvent(r,e){this.stateEvents.add(r),e!==void 0&&(this.lastPayloads[r]=e)}on(r,e,t){let i=t?`${r}:${t}`:r;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(e),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&e(this.lastPayloads[i])}off(r,e,t){let i=t?`${r}:${t}`:r;this.listeners[i]&&this.listeners[i].delete(e)}emit(r,e){this.stateEvents.has(r)&&(this.lastPayloads[r]=e);let t=this.listeners[r];if(t)for(let i of t)i(e)}onProgress(r,e){this.on(`progress:${r}`,e)}emitProgress(r,e){this.emit(`progress:${r}`,e)}onInview(r,e){this.on(`object:inview:${r}`,e)}emitInview(r,e){this.emit(`object:inview:${r}`,e)}onScroll(r){this.on("scroll",r)}emitScroll(r){this.emit("scroll",r)}onUpdate(r){this.on("update",r)}emitUpdate(){this.emit("update")}clear(r){delete this.listeners[r]}clearAll(){this.listeners={}}};var Ae=class{constructor(r){this.data=r;this.modules=[];this.uiModules=[];this.allModules=[]}register(r){if(r.type===1?this.modules.push(r):r.type===2&&this.uiModules.push(r),r.cssProperties&&r.cssProperties.length>0&&typeof window.CSS<"u"&&"registerProperty"in window.CSS)for(let e=0;e<r.cssProperties.length;e++)try{window.CSS.registerProperty(r.cssProperties[e])}catch{}r.onSubscribe(),this.rebuildAllModules()}find(r){for(let e=0;e<this.modules.length;e++){let t=this.modules[e];if(t instanceof r)return t}}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(r){this.callAll("onMouseMove",r)}onWheel(r){this.callAll("onWheel",r)}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(r){this.callAll("onSettingsChange")}onDOMMutate(r,e){this.callAll("onDOMMutate",r,e)}destroy(){this.callAll("onUnsubscribe"),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(r,e,t){this.modules.length>0&&this.callLifecycleStrict(this.modules,r,e,t),this.uiModules.length>0&&this.callLifecycleStrict(this.uiModules,r,e,t)}callLifecycleStrict(r,e,t,i){let n=r.length;switch(e){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":for(let s=0;s<n;s++){let o=r[s];o&&o[e](this.data)}break;case"onDOMMutate":for(let s=0;s<n;s++){let o=r[s];o&&o[e](t,i)}break;case"onMouseMove":case"onWheel":for(let s=0;s<n;s++){let o=r[s];o&&o[e](t)}break;default:for(let s=0;s<n;s++){let o=r[s];o&&o[e]()}break}}rebuildAllModules(){this.allModules.length=0;for(let r=0;r<this.modules.length;r++)this.allModules.push(this.modules[r]);for(let r=0;r<this.uiModules.length;r++)this.allModules.push(this.uiModules[r])}};var De=class{constructor(r,e,t){this.parent=t;this.properties=new Map;this.id=r,this.htmlElement=e}get parentObject(){return this.parent}setProperty(r,e){this.properties.set(r,e)}getProperty(r){return this.properties.get(r)??null}setEasing(r){this.easingFn=r??void 0}getEasing(){return this.easingFn}applyProgress(r,e){let t=this.easingFn??e;return t?t(r):r}};var ce=class{constructor(r,e){this.id="";this.keys=[];this.mirrors=new Map;this.properties=new Map;this.eventNameCache=new Map;this.eventNameSuffixCache=new Map;this.progress=0;this.progressRaw=0;this.startPosition=0;this.differencePosition=0;this.transformValue=null;this.eventProgressName=null;this.lerp=0;this.glide=0;this.isMagneting=!1;this.magneticX=0;this.magneticY=0;this.magneticTargetX=0;this.magneticTargetY=0;this.eventLerpName=null;this.eventGlideName=null;this.eventMagneticName=null;this.modules=[];this.events=new se;this.htmlElement=e,this.id=r,this.eventProgressName=this.getScopedEventName("object:progress")}getScopedEventName(r,e){if(e==null){let s=this.eventNameCache.get(r);if(s)return s;let o=`${r}:${this.id}`;return this.eventNameCache.set(r,o),o}let t=this.eventNameSuffixCache.get(r);t||(t=new Map,this.eventNameSuffixCache.set(r,t));let i=t.get(e);if(i)return i;let n=`${r}:${this.id}:${e}`;return t.set(e,n),n}setProperty(r,e){this.properties.set(r,e)}getProperty(r){return this.properties.get(r)??null}enter(){this.events.emit("enter",this),this.setProperty("active",!0),this.modules.forEach(r=>{r.enterObject(this.id,this)})}leave(){this.events.emit("leave",this),this.setProperty("active",!1),this.modules.forEach(r=>{r.exitObject(this.id)})}remove(){this.modules.forEach(r=>{r.removeObject(this.id)})}show(){this.htmlElement.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(r){return this.modules.includes(r)?!1:(this.modules.push(r),!0)}addMirror(r){this.mirrors.set(r.id,r)}removeMirror(r){this.mirrors.delete(r)}get mirrorObjects(){return Array.from(this.mirrors.values())}get connects(){return this.mirrorObjects.map(r=>r.htmlElement)}};var ue=class{constructor(){this.readQueue=[];this.writeQueue=[];this.computeQueue=[];this.isProcessing=!1;this.pendingFrame=null;this.rectCache=new WeakMap;this.dimensionCache=new WeakMap}scheduleRead(r,e=0){this.readQueue.push({priority:e,execute:r}),this.scheduleFlush()}scheduleCompute(r,e=0){this.computeQueue.push({priority:e,execute:r}),this.scheduleFlush()}scheduleWrite(r,e=0){this.writeQueue.push({priority:e,execute:r}),this.scheduleFlush()}batchModuleInitialization(r){r.forEach(({module:e,object:t,element:i,attributes:n,globalId:s})=>{this.scheduleRead(()=>{let o=i.getBoundingClientRect();this.rectCache.set(i,o),this.dimensionCache.set(i,{width:i.offsetWidth||i.clientWidth||o.width,height:i.offsetHeight||i.clientHeight||o.height}),e.initializeObject(s,t,i,n)},1)}),r.forEach(({module:e,object:t,windowSize:i})=>{this.scheduleCompute(()=>{e.calculatePositions(t,i)},2)}),r.forEach(({module:e,object:t})=>{this.scheduleWrite(()=>{e.connectObject(t),e.addObject(t.id,t)},3)})}getCachedRect(r){return this.rectCache.get(r)}getCachedDimensions(r){return this.dimensionCache.get(r)}scheduleFlush(){this.pendingFrame!==null||this.isProcessing||(this.pendingFrame=requestAnimationFrame(()=>{this.flush()}))}flush(){this.isProcessing=!0,this.pendingFrame=null;let r=(e,t)=>t.priority-e.priority;try{[...this.readQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Read task error:",s)}}),this.readQueue=[],[...this.computeQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Compute task error:",s)}}),this.computeQueue=[],[...this.writeQueue].sort(r).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Write task error:",s)}}),this.writeQueue=[]}finally{this.rectCache=new WeakMap,this.dimensionCache=new WeakMap,this.isProcessing=!1}}flushSync(){this.pendingFrame!==null&&(cancelAnimationFrame(this.pendingFrame),this.pendingFrame=null),this.flush()}clear(){this.pendingFrame!==null&&(cancelAnimationFrame(this.pendingFrame),this.pendingFrame=null),this.readQueue=[],this.writeQueue=[],this.computeQueue=[],this.rectCache=new WeakMap,this.dimensionCache=new WeakMap}};var Ie=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var x=class{constructor(r){this.cssProperties=[];this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new Ie;this.tools=r.tools,this.data=r.data,this.settings=r.settings,this.events=r.events,this.centers=r.centers,this.hover=r.hover,this.objectManager=r.objectManager,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:(e,t,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.elementContainer.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(e,t,i)=>{let n=i.top,s=i.height;return n+s-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(e,t,i)=>i.height},{key:"half-width",type:"number",fallback:(e,t,i)=>i.width/2},{key:"half-height",type:"number",fallback:(e,t,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(r,e,t,i){let n=this.tools.boundingClientRect.process({element:t});for(let{key:s,type:o,fallback:a,transform:l}of this.attributesToMap){let c=typeof a=="function"?a(t,e,n):a,d=i[s]??i[`string-${s}`]??i[`data-string-${s}`],h=this.tools.domAttribute.process({element:t,key:s,fallback:d??this.settings[s]??c}),p=this.parseAttribute(h,o,{element:t,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(p=l(p)),e.setProperty(s,p)}}calculatePositions(r,e){let t=r.getProperty("start"),i=r.getProperty("size"),n=r.getProperty("offset-bottom"),s=r.getProperty("offset-top"),o=r.getProperty("enter-el"),a=r.getProperty("enter-vp"),l=r.getProperty("exit-el"),c=r.getProperty("exit-vp"),d=0,h=0,p=0,b=0;o==="top"&&a==="top"||o==="left"&&a==="left"?(p=-e+1,d=t-n):o==="top"&&a==="bottom"||o==="left"&&a==="right"?d=t-e-n:o==="bottom"&&a==="top"||o==="right"&&a==="left"?(p=-e-i+1,d=t+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(p=-i+1,d=t-e+i-n),l==="top"&&c==="top"||l==="left"&&c==="left"?(b=-i+1,h=t+s):l==="top"&&c==="bottom"||l==="left"&&c==="right"?(b=-e-i+1,h=t-e+s):l==="bottom"&&c==="top"||l==="right"&&c==="left"?h=t+i+s:(l==="bottom"&&c==="bottom"||l==="right"&&c==="right")&&(b=-e+1,h=t-e+i+s),r.setProperty("start-bias",p),r.setProperty("end-bias",b),r.setProperty("start-position",d-this.data.scroll.topPosition),r.setProperty("end-position",h-this.data.scroll.topPosition),r.setProperty("difference-position",h-d);let m=r.getProperty("inview-top")??0,g=r.getProperty("inview-bottom")??0;r.setProperty("inview-start-position",r.getProperty("start-position")+m),r.setProperty("inview-end-position",r.getProperty("end-position")+g)}parseAttribute(r,e,t={}){if(r==null)return null;if(typeof e=="object"&&e.type==="enum")return e.values.includes(r)?r:e.values[0];switch(e){case"number":return parseFloat(r);case"boolean":return r===""||r==="true";case"json":try{return JSON.parse(r)}catch{return null}case"tuple":return r.trim().split(/\s+/);case"easing":return this.tools.easingFunction.process({easing:r});case"color":return this.tools.colorParser.process({value:r});case"dimension":return r=="0"?0:t.element!=null&&t.viewportHeight!=null&&t.baseRem!=null&&t.boundingRect!=null?this.tools.unitParser.process({value:r,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem}):0;case"breakpoint-dimension":if(t.element!=null&&t.viewportHeight!=null&&t.baseRem!=null&&t.boundingRect!=null){let i=r.trim().split("|"),n=[];for(let s of i)if(s.includes(":")){let[o,a]=s.split(":");n.push({breakpoint:parseInt(o),value:this.tools.unitParser.process({value:`${a}|`,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:s,element:t.element,viewportHeight:t.viewportHeight,boundingRect:t.boundingRect,baseRem:t.baseRem})});return n}default:return r}}canConnect(r){return r.keys.includes(this.htmlKey)}connectObject(r){r.connect(this)&&this.onObjectConnected(r)}enterObject(r,e){this.objectMap.has(r)||(this.objectMap.set(r,e),this.objects.push(e))}exitObject(r){let e=this.objectMap.get(r);if(!e)return;this.objectMap.delete(r);let t=this.objects.indexOf(e);t!==-1&&this.objects.splice(t,1)}addObject(r,e){this.objectMapOnPage.has(r)||(this.objectMapOnPage.set(r,e),this.objectsOnPage.push(e))}removeObject(r){let e=this.objectMapOnPage.get(r);if(!e)return;this.objectMapOnPage.delete(r);let t=this.objectsOnPage.indexOf(e);t!==-1&&this.objectsOnPage.splice(t,1),this.onObjectDisconnected(e)}onObjectConnected(r){}onObjectDisconnected(r){}applyToElementAndConnects(r,e,t=e){r.getProperty("self-disable")!==!0&&e(r.htmlElement),r.mirrorObjects.forEach(i=>t(i.htmlElement,i))}applyVarToElement(r,e,t){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setVar(r.htmlElement,e,t)}applyPropToElement(r,e,t){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setProp(r.htmlElement,e,t)}applyVarToConnects(r,e,t){for(let i of r.mirrorObjects)this.tools.styleTxn.setVar(i.htmlElement,e,t)}applyPropToConnects(r,e,t){for(let i of r.mirrorObjects)this.tools.styleTxn.setProp(i.htmlElement,e,t)}getObjectEventName(r,e,t){return r.getScopedEventName(e,t)}destroy(){this.objects=[],this.objectMap=new Map}onInit(){}onSubscribe(){}onUnsubscribe(){}onFrame(r){}onMutate(r){}onScrollMeasure(r){}onMouseMoveMeasure(r){}onResize(){}onResizeWidth(){}onScroll(r){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){}onSettingsChange(){}onDOMRebuild(){}onMouseMove(r){}onWheel(r){}onDOMMutate(r,e){}};var Re=class{constructor(r,e,t,i){this.data=r;this.modules=e;this.events=t;this.tools=i;this.objects=new Map;this.connectQueue=[];this.connectableModulesBuffer=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1;this.domBatcher=new ue;this.domBatcherEnabled=!1;this.inviewStarts=[];this.inviewEnds=[];this.inviewActive=new Set;this.inviewStartIdx=0;this.inviewEndIdx=0;this.inviewIndexDirty=!0;this.lastInviewScrollPos=0;this.intersectionObserverEnabled=!0;this.domObserver=null}get all(){return this.objects}add(r){let e=`string-${this.globalId++}`,t="string-id";r.getAttribute("string-id")&&(e=r.getAttribute("string-id"),t="string-id"),r.getAttribute("data-string-id")&&(e=r.getAttribute("data-string-id"),t="data-string-id");let i=e&&this.objects.has(e)?this.objects.get(e):new ce(e,r);r.setAttribute(t,i.id);let n=r.getAttribute("string")??r.getAttribute("data-string");n&&(i.keys=this.splitPipeAndTrim(n)),r.setAttribute("string-inited",""),this.objects.set(i.id,i);let s=this.getAllAttributes(r),o=this.modules.core;for(let c=0;c<o.length;c++){let d=o[c];"setupCoreProperties"in d&&typeof d.setupCoreProperties=="function"&&d.setupCoreProperties(i,r,s)}let a=this.connectableModulesBuffer;a.length=0;let l=this.modules.all;for(let c=0;c<l.length;c++){let d=l[c];d instanceof x&&d.canConnect(i)&&a.push(d)}if(this.domBatcherEnabled&&a.length>0){let c=new Array(a.length);for(let d=0;d<a.length;d++)c[d]={module:a[d],object:i,element:r,attributes:s,globalId:this.globalId,windowSize:this.data.viewport.windowHeight};this.domBatcher.batchModuleInitialization(c),this.domBatcher.scheduleWrite(()=>{this.initObservers(i,r),this.checkInviewForObject(i)})}else{for(let c=0;c<a.length;c++){let d=a[c];d.initializeObject(this.globalId,i,r,s),d.calculatePositions(i,this.data.viewport.windowHeight),d.connectObject(i),d.addObject(i.id,i)}this.initObservers(i,r),this.checkInviewForObject(i)}if(this.connectQueue.length>0){let c=0;for(let d=0;d<this.connectQueue.length;d++){let h=this.connectQueue[d];if(h.id===i.id){this.attachMirrorToObject(i,h.element);continue}this.connectQueue[c++]=h}this.connectQueue.length=c}a.length=0,this.inviewIndexDirty=!0}setDOMBatcherEnabled(r){this.domBatcherEnabled=r,r||this.domBatcher.flushSync()}setIntersectionObserverEnabled(r){if(this.intersectionObserverEnabled!==r){this.intersectionObserverEnabled=r;for(let e of this.objects.values())e.getProperty("observer-progress")?.disconnect(),r&&this.initObservers(e,e.htmlElement)}}invalidateInviewIndex(){this.inviewIndexDirty=!0}refreshLayoutForRoot(r){if(!r)return;let e=new Set,t=n=>{let s=n.getAttribute("string-id")??n.getAttribute("data-string-id");if(!s)return;let o=this.objects.get(s);o&&e.add(o)};if(r instanceof HTMLElement){t(r);let n=r.querySelectorAll("[string-id],[data-string-id]");for(let s=0;s<n.length;s++)t(n[s])}if(e.size===0)return;let i=this.data.viewport.windowHeight;for(let n of e){let s=n.htmlElement;if(!s||!s.isConnected)continue;let o=this.getAllAttributes(s),a=this.modules.all;for(let l=0;l<a.length;l++){let c=a[l];c instanceof x&&c.canConnect(n)&&(c.initializeObject(this.globalId,n,s,o),c.calculatePositions(n,i))}}this.inviewIndexDirty=!0,this.checkInview()}remove(r){let e=this.objects.get(r);e&&(e.events.clearAll(),e.getProperty("observer-progress")?.disconnect(),e.getProperty("observer-inview")?.disconnect(),e.htmlElement.removeAttribute("string-inited"),e.leave(),e.remove(),e.mirrorObjects.forEach(t=>{let i=this.getMirrorIds(t.htmlElement);this.setMirrorIds(t.htmlElement,i.filter(s=>s!==t.id)),this.mirrors.delete(t.id);let n=t.htmlElement.getAttribute("string-copy-from")??t.htmlElement.getAttribute("data-string-copy-from");n&&this.enqueueConnection(n,t.htmlElement)}),this.objects.delete(r),this.inviewActive.delete(e),this.inviewIndexDirty=!0)}enqueueConnection(r,e){let t=this.splitPipeAndTrim(r);for(let i=0;i<t.length;i++){let n=t[i];this.connectQueue.some(s=>s.id===n&&s.element===e)||this.connectQueue.push({id:n,element:e})}}linkMirror(r,e){let t=this.splitPipeAndTrim(r);for(let i=0;i<t.length;i++){let n=t[i],s=this.objects.get(n);s?this.attachMirrorToObject(s,e):this.enqueueConnection(n,e)}}attachMirrorToObject(r,e){let t=this.getMirrorIds(e);for(let o of t){let a=this.mirrors.get(o);if(a&&a.parentObject===r)return a}let i=`string-mirror-${this.mirrorId++}`,n=new De(i,e,r);this.setMirrorIds(e,[...t,i]),r.addMirror(n),this.mirrors.set(i,n);let s=e.getAttribute("string-easing")??e.getAttribute("data-string-easing");return s&&s.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:s})),n.setProperty("easing",s)),n}detachMirrorByElement(r){let e=this.getMirrorIds(r);e.length!==0&&(e.forEach(t=>this.detachMirrorById(t)),this.clearMirrorIds(r))}detachMirrorById(r){let e=this.mirrors.get(r);e&&(e.parentObject.removeMirror(r),this.mirrors.delete(r))}getMirrorIds(r){let e=r.getAttribute("string-mirror-id")??r.getAttribute("data-string-mirror-id");return e?this.splitPipeAndTrim(e):[]}setMirrorIds(r,e){if(e.length===0){this.clearMirrorIds(r);return}r.setAttribute("string-mirror-id",e.join("|"))}clearMirrorIds(r){r.removeAttribute("string-mirror-id"),r.removeAttribute("data-string-mirror-id")}getAllAttributes(r){let e={},t=r.attributes;for(let i=0;i<t.length;i++){let n=t[i];e[n.name]=n.value}return e}initObservers(r,e){if(!this.intersectionObserverEnabled)return;let t=r.getProperty("offset-top")??0,i=r.getProperty("offset-bottom")??0;r.getProperty("observer-progress")?.disconnect();let n=p=>{p.forEach(b=>{this.events.emit(r.getScopedEventName("object:activate"),b.isIntersecting),b.isIntersecting?r.enter():r.leave()})},s=r.getProperty("outside-container"),o=e.getAttribute("string-outside-container")??e.getAttribute("data-string-outside-container"),a=o!=null?o.trim().toLowerCase():null,l=a===""||a==="true"||a==="1",c=s!=null?s===!0:l,d=this.data.scroll.container===document.body||c?null:this.data.scroll.container,h=new IntersectionObserver(n,{root:d,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${t+this.data.viewport.windowHeight}px 0px`,threshold:0});h.observe(e),r.setProperty("observer-progress",h)}observeDOM(){this.domObserver?.disconnect();let r=new MutationObserver(e=>{let t=!1;for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="childList"){let s=!1;for(let o=0;o<n.removedNodes.length;o++){let a=n.removedNodes[o];if(a.nodeType!==Node.ELEMENT_NODE)continue;s=!0;let l=a;if(this.detachMirrorByElement(l),this.isFixed(l))continue;l.hasAttribute("string")&&this.handleRemoved(l);let c=l.querySelectorAll("[string],[data-string]");for(let h=0;h<c.length;h++){let p=c[h];this.isFixed(p)||this.handleRemoved(p)}let d=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let h=0;h<d.length;h++)this.detachMirrorByElement(d[h])}for(let o=0;o<n.addedNodes.length;o++){let a=n.addedNodes[o];if(a.nodeType!==Node.ELEMENT_NODE)continue;s=!0;let l=a;if(this.isFixed(l))continue;l.hasAttribute("string")&&!l.hasAttribute("string-inited")&&this.add(l);let c=l.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])");for(let p=0;p<c.length;p++)this.add(c[p]);let d=l.getAttribute("string-copy-from")??l.getAttribute("data-string-copy-from");d&&this.linkMirror(d,l);let h=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let p=0;p<h.length;p++){let b=h[p],m=b.getAttribute("string-copy-from")??b.getAttribute("data-string-copy-from");m&&this.linkMirror(m,b)}}s&&(this.modules.onDOMMutate(n.addedNodes,n.removedNodes),t=!0)}}if(t){let i=this.modules.all;for(let n=0;n<i.length;n++)i[n].onDOMRebuild();this.events.emit("dom:changed",null)}});r.observe(document.body,{childList:!0,subtree:!0}),this.domObserver=r}handleRemoved(r){let e=r.getAttribute("string-id")??r.getAttribute("data-string-id");if(!e)return;let t=r.getAttribute("string-copy-from")??r.getAttribute("data-string-copy-from");t&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==t)),this.remove(e)}onSettingsChange(r){for(let e of this.objects.values()){if(!e.htmlElement||!e.htmlElement.isConnected)continue;let t=null,i=this.modules.all;for(let n=0;n<i.length;n++){let s=i[n],o=!1;r.isDesktop?(s.permissions.desktop.rebuild.scrollHeight&&r.scrollHeightChanged&&(o=!0),s.permissions.desktop.rebuild.width&&r.widthChanged&&(o=!0),s.permissions.desktop.rebuild.height&&r.heightChanged&&(o=!0)):(s.permissions.mobile.rebuild.scrollHeight&&r.scrollHeightChanged&&(o=!0),s.permissions.mobile.rebuild.width&&r.widthChanged&&(o=!0),s.permissions.mobile.rebuild.height&&r.heightChanged&&(o=!0)),(o||r.isForceRebuild)&&s.canConnect(e)&&(t==null&&(t=this.getAllAttributes(e.htmlElement)),s.initializeObject(this.globalId,e,e.htmlElement,t),s.calculatePositions(e,this.data.viewport.windowHeight),s.connectObject(e))}}this.inviewIndexDirty=!0}isFixed(r){return r.hasAttribute("string-fixed")}checkInview(){let r=this.data.scroll.transformedCurrent;this.updateInviewWindow(r);for(let e of this.inviewActive)this.checkInviewForObject(e)}checkInviewForObject(r){let e=this.data.scroll.transformedCurrent;if(!this.intersectionObserverEnabled){let c=r.getProperty("start-position"),d=r.getProperty("end-position");if(c!=null&&d!=null){let h=Math.min(c,d),p=Math.max(c,d),b=r.getProperty("is-active")??!1,m=e>=h&&e<=p;m!==b&&(r.setProperty("is-active",m),this.events.emit(r.getScopedEventName("object:activate"),m),m?r.enter():r.leave())}}let t=r.getProperty("inview-start-position"),i=r.getProperty("inview-end-position"),n=r.getProperty("is-inview")??!1,s=Math.min(t,i),o=Math.max(t,i),a=e>=s&&e<=o,l=null;if(!n&&a){let c=Math.abs(e-s),d=Math.abs(o-e);l=c<=d?"enter-top":"enter-bottom"}else n&&!a&&(l=e<s?"exit-top":"exit-bottom");a!==n&&(r.setProperty("is-inview",a),this.events.emit(r.getScopedEventName("object:inview"),{inView:a,direction:l}),a?r.show():r.hide())}updateInviewWindow(r){let e=this.data.viewport.windowHeight,t=r-e,i=r+this.data.viewport.windowHeight+e;for((this.inviewIndexDirty||r<this.lastInviewScrollPos)&&this.rebuildInviewIndex(t,i);this.inviewStartIdx<this.inviewStarts.length&&this.inviewStarts[this.inviewStartIdx].pos<=i;)this.inviewActive.add(this.inviewStarts[this.inviewStartIdx].object),this.inviewStartIdx++;for(;this.inviewEndIdx<this.inviewEnds.length&&this.inviewEnds[this.inviewEndIdx].pos<t;)this.inviewActive.delete(this.inviewEnds[this.inviewEndIdx].object),this.inviewEndIdx++;this.lastInviewScrollPos=r}rebuildInviewIndex(r,e){this.inviewStarts=[],this.inviewEnds=[];for(let t of this.objects.values()){let i=t.getProperty("inview-start-position"),n=t.getProperty("inview-end-position");i==null||n==null||(this.inviewStarts.push({pos:Math.min(i,n),object:t}),this.inviewEnds.push({pos:Math.max(i,n),object:t}))}this.inviewStarts.sort((t,i)=>t.pos-i.pos),this.inviewEnds.sort((t,i)=>t.pos-i.pos),this.inviewActive.clear(),this.inviewStartIdx=this.upperBound(this.inviewStarts,e),this.inviewEndIdx=this.upperBound(this.inviewEnds,r-1);for(let t=0;t<this.inviewStartIdx;t++)this.inviewActive.add(this.inviewStarts[t].object);for(let t=0;t<this.inviewEndIdx;t++)this.inviewActive.delete(this.inviewEnds[t].object);this.inviewIndexDirty=!1}upperBound(r,e){let t=0,i=r.length;for(;t<i;){let n=t+i>>>1;r[n].pos<=e?t=n+1:i=n}return t}splitPipeAndTrim(r){let e=r.split("|"),t=[];for(let i=0;i<e.length;i++){let n=e[i].trim();n.length>0&&t.push(n)}return t}destroy(){this.domObserver?.disconnect(),this.domObserver=null,this.domBatcher.clear()}};var te={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var j=class{constructor(r){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._scrollDirection="vertical";this.isBottomScrollDirection=null;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.isActive=!1;this.lastAppliedDirection=null;this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.onCalcUpdate=()=>{this.isActive&&(this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules())};this.document=document,this.context=r}set scrollDirection(r){this._scrollDirection=r,this._scrollDirection==="vertical"?this.onCalcUpdate=()=>{this.isActive&&(this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules())}:this._scrollDirection==="horizontal"&&(this.onCalcUpdate=()=>{this.isActive&&this.context.data.scroll.scrollContainer?.scrollTo(this.context.data.scroll.current,0)})}onFrame(){}onWheel(r){}onScroll(r){}disableScrollEvents(){}enableScrollEvents(){}activate(){this.isActive||(this.isActive=!0,this.enableScrollEvents())}deactivate(){this.isActive&&(this.isActive=!1,this.disableScrollEvents(),this.isProg=!1,this.context.data.scroll.target=this.context.data.scroll.current,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.context.data.scroll.displacement=0,this.clearScrollingClasses(),this.isBottomScrollDirection=null,this.lastAppliedDirection=null,this.onScrollStop())}destroy(){}updateScrollDirection(r){if(this.isLastBottomScrollDirection=r,this.isBottomScrollDirection===null){this.isBottomScrollDirection=r;return}this.context.data.scroll.isScrollingDown=r,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&this.lastAppliedDirection!==r&&(document.documentElement.classList.toggle(te.SCROLLING_FORWARD,r),document.documentElement.classList.toggle(te.SCROLLING_BACKWARD,!r),document.documentElement.classList.toggle(te.SCROLL_FORWARD,r),document.documentElement.classList.toggle(te.SCROLL_BACKWARD,!r),this.lastAppliedDirection=r)}clearScrollingClasses(){document.documentElement.classList.remove(te.SCROLLING_BACKWARD,te.SCROLLING_FORWARD)}triggerScrollRules(){this.scrollTriggerRules.forEach(r=>{let e=(r.direction==="any"||this.isLastBottomScrollDirection&&r.direction==="forward")&&this.context.data.scroll.current>=r.offset;e&&!r.isActive?(r.onEnter?.(),r.toggleClass&&r.toggleClass.target.classList.add(r.toggleClass.className),r.isActive=!0):!e&&r.isActive&&(r.onLeave?.(),r.toggleClass&&r.toggleClass.target.classList.remove(r.toggleClass.className),r.isActive=!1)})}addScrollMark(r){this.scrollTriggerRules.push(r)}removeScrollMark(r){this.scrollTriggerRules=this.scrollTriggerRules.filter(e=>e.id!==r)}scrollTo(r,e){}};var ke=class extends j{constructor(e){super(e);this.name="default";this.previousScrollTop=0;this.isScrolling=!1;this.lastScrollEventTime=0;this.scrollStopDelay=120}onFrame(){if(this.context.data.scroll.delta!==0){let e=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=e,this.context.data.scroll.lerped=e,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.isScrolling&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses()))}this.isScrolling&&performance.now()-this.lastScrollEventTime>this.scrollStopDelay&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses())}onScroll(e){let t=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=t,this.context.data.scroll.target=t,this.context.data.scroll.transformedCurrent=t,t!==this.previousScrollTop&&(this.updateScrollDirection(t>this.previousScrollTop),this.previousScrollTop=t),this.lastScrollEventTime=performance.now(),this.isScrolling||(this.isScrolling=!0,this.onScrollStart())}onWheel(e){if(e.deltaY!==0){this.context.data.scroll.delta===0&&!this.isScrolling&&(this.isScrolling=!0,this.onScrollStart());let t=e.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,e.deltaY)),this.context.data.scroll.delta+=t,this.lastScrollEventTime=performance.now()}}deactivate(){super.deactivate(),this.isScrolling=!1,this.lastScrollEventTime=0,this.previousScrollTop=this.context.data.scroll.current}scrollTo(e,t){this.context.data.scroll.target=e,this.context.data.scroll.current=e,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this._scrollDirection==="vertical"?this.context.data.scroll.scrollContainer?.scrollTo({top:e,left:0,behavior:t?"auto":"smooth"}):this.context.data.scroll.scrollContainer?.scrollTo({left:e,top:0,behavior:t?"auto":"smooth"})}};var Fe=class extends j{constructor(e){super(e);this.name="disable";this.preventScroll=e=>{e.preventDefault()};this.preventKeyScroll=e=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(e.key)&&e.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}enableScrollEvents(){window.addEventListener("touchmove",this.onPreventScroll,{passive:!1}),window.addEventListener("keydown",this.onPreventKeyScroll)}disableScrollEvents(){window.removeEventListener("touchmove",this.onPreventScroll),window.removeEventListener("keydown",this.onPreventKeyScroll)}onFrame(){}onWheel(e){e.preventDefault()}onScroll(e){e.preventDefault()}};var He=class extends j{constructor(e){super(e);this.name="smooth";this.isScrollbarManipulation=!1;this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.1;this.stepResult={current:0,target:0,delta:0,lerped:0,scrollForce:0,absVelocity:0}}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(),this.clearScrollingClasses(),this.isBottomScrollDirection=null,this.lastAppliedDirection=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}this.context.data.scroll.delta!==0&&(this.computeStep(this.context.data.scroll.current,this.context.data.scroll.target,this.context.data.scroll.delta,this.context.data.scroll.speed,this.context.data.scroll.speedAccelerate,this.context.data.scroll.bottomPosition,this.stepResult),this.scrollForce=this.stepResult.scrollForce,this.context.data.scroll.target=this.stepResult.target,this.context.data.scroll.delta=this.stepResult.delta,this.context.data.scroll.lerped=this.stepResult.lerped,this.context.data.scroll.current=this.stepResult.current,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.updateScrollDirection(this.context.data.scroll.lerped>0),this.stepResult.absVelocity<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(e){if(e.deltaY!==0&&e.preventDefault(),this.wheelImpulse=e.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let t=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&t<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&t>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(e){this.isProg||(this.isScrollbarManipulation=!0)}deactivate(){super.deactivate(),this.isScrollbarManipulation=!1,this.scrollForce=0,this.wheelImpulse=0,this.previousCurrent=this.context.data.scroll.current}scrollTo(e,t){if(t){this.context.data.scroll.current=e,this.context.data.scroll.target=e,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.onCalcUpdate();return}this.context.data.scroll.target=e,this.context.data.scroll.delta=1}computeStep(e,t,i,n,s,o,a){let l=i*s,c=Math.min(Math.max(0,t+l),o),d=i-l,h=(c-e)*n,p=h>0?Math.ceil(e+h):Math.floor(e+h);a.current=p,a.target=c,a.delta=d,a.lerped=h,a.scrollForce=l,a.absVelocity=Math.abs(h)}};var Ne=class{constructor(r){this.context=r;this.modes=new Map;this.boundEvents=null;this.scrollMarks=[];this.registerMode("smooth",new He(r)),this.registerMode("default",new ke(r)),this.registerMode("disable",new Fe(r)),this.updateResponsiveMode()}registerMode(r,e){let t=this.context.data.scroll.mode===r,i=this.modes.get(r);i&&(t&&i.deactivate(),i.destroy()),e.name||(e.name=String(r)),this.modes.set(r,e),this.boundEvents&&(e.onScrollStart=this.boundEvents.onScrollStart,e.onScrollStop=this.boundEvents.onScrollStop,e.onChangeDirection=this.boundEvents.onDirectionChange),this.scrollMarks.length>0&&this.scrollMarks.forEach(n=>e.addScrollMark(n)),t&&e.activate()}setMobileMode(r){this.context.data.scroll.modeMobile=r,this.updateResponsiveMode()}setDesktopMode(r){this.context.data.scroll.modeDesktop=r,this.updateResponsiveMode()}updateResponsiveMode(){let e=window.innerWidth<1024?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(e)}updatePosition(){this.modes.forEach(r=>{r.onCalcUpdate()})}setMode(r){if(!this.modes.has(r)){console.warn(`[ScrollManager] Unknown scroll mode: ${r}`);return}if(this.context.data.scroll.mode===r){this.get().activate();return}this.get().deactivate(),this.context.data.scroll.mode=r,this.get().activate()}get(){return this.modes.get(this.context.data.scroll.mode)}getEngines(){return this.modes}onFrame(){this.get().onFrame()}onScroll(r){this.get().onScroll(r)}onWheel(r){this.get().onWheel(r)}bindEvents(r){this.boundEvents=r,this.modes.forEach(e=>{e.onScrollStart=r.onScrollStart,e.onScrollStop=r.onScrollStop,e.onChangeDirection=r.onDirectionChange})}addScrollMark(r){this.scrollMarks.push(r),this.modes.forEach(e=>{e.addScrollMark(r)})}removeScrollMark(r){this.scrollMarks=this.scrollMarks.filter(e=>e.id!==r),this.modes.forEach(e=>{e.removeScrollMark(r)})}destroy(){this.modes.forEach(r=>{r.deactivate(),r.destroy()})}};var We=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 Ve=class{constructor(){this.threeInstance=null}};var _e=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 ze=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var Be=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var $e=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 je=class{constructor(){this.scroll=new _e;this.viewport=new $e;this.cursor=new We;this.render=new Ve;this.time=new Be;this.system=new ze}};var de=class{process({element:r}){return r.getBoundingClientRect()}};var he=class{process({element:r,key:e,fallback:t=null}){return r.getAttribute(`string-${e}`)??r.getAttribute(`data-string-${e}`)??t}};var pe=class{process({record:r,name:e,fallback:t=null}){return r[e]??r[`data-${e}`]??t}};var re=class{process({element:r}){let e=r.getBoundingClientRect(),i=getComputedStyle(r).transform.match(/-?[\d.]+/g)?.map(parseFloat)??[];if(i.length===6){let[n,s,o,a,l,c]=i,d=n*a-s*o;return{width:e.width/(n||1),height:e.height/(a||1),left:(e.left*a-e.top*o+o*c-l*a)/d,top:(-e.left*s+e.top*n+l*s-n*c)/d}}return e}};var me=class{constructor(r=new re){this.transformTool=r}process({element:r,container:e=document.body}){let t;try{t=e.getBoundingClientRect()}catch{t=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:r});return{top:i.top-t.top,left:i.left-t.left}}};var ge=class{process({from:r,to:e,progress:t}){return(e-r)*t}};var fe=class{process({value:r,element:e,viewportHeight:t,baseRem:i,boundingRect:n}){let s=r.split("|").map(a=>a.trim()).filter(Boolean),o=0;for(let a of s){let l=a,c=!1;l.startsWith("-")&&(c=!0,l=l.slice(1));let d=0;l==="selfHeight"?d=e.offsetHeight:l.endsWith("px")?d=parseFloat(l):l.endsWith("%")?d=parseFloat(l)/100*t:l.endsWith("rem")?d=parseFloat(l)*i:l.endsWith("sh")?d=parseFloat(l)*n.height/100:d=parseFloat(l),o+=c?-d:d}return o}};var be=class{process({value:r,inMin:e=.1,inMax:t=1,outMin:i=.05,outMax:n=.65}){if(r<e)return n;if(r>1&&(r=1),r<=t){let s=(r-e)/(t-e);return n-s*(n-i)}return i}};var X={left:0,center:.5,right:1},G={top:0,center:.5,bottom:1},ve=class{process({value:r}){if(!r)return"center";let e=r.trim();if(e.startsWith("random(")&&e.endsWith(")")){let t=e.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*t.length);return t[i]}return e}toNormalized({value:r}){let t=this.process({value:r}).toLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)return{x:.5,y:.5};if(t.length===1){let a=t[0],l=this.parseValue(a);return a in X&&!(a in G)?{x:l,y:.5}:a in G&&!(a in X)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=t,s=i in G&&!(i in X),o=n in X&&!(n in G);return s||o?{x:this.parseValue(n,"horizontal"),y:this.parseValue(i,"vertical")}:{x:this.parseValue(i,"horizontal"),y:this.parseValue(n,"vertical")}}parseValue(r,e){if(e==="horizontal"&&r in X)return X[r];if(e==="vertical"&&r in G)return G[r];if(r in X)return X[r];if(r in G)return G[r];if(r.endsWith("%")){let i=parseFloat(r);if(!isNaN(i))return i/100}let t=parseFloat(r);return isNaN(t)?.5:t>1?t/100:t}};var ye=class{process({value:r}){let e=r.trim().toLowerCase();if(e.startsWith("#")){let n=e.slice(1);n.length===3&&(n=n.split("").map(c=>c+c).join(""));let s=parseInt(n.slice(0,2),16),o=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:s,g:o,b:a,a:l}}let t=e.match(/rgba?\(([^)]+)\)/);if(t){let[n,s,o,a=1]=t[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:s,b:o,a}}let i=e.match(/hsla?\(([^)]+)\)/);if(i){let[n,s,o,a="1"]=i[1].split(",").map(h=>h.trim()),[l,c,d]=this.hslToRgb(parseFloat(n),parseFloat(s),parseFloat(o));return{r:l,g:c,b:d,a:parseFloat(a)}}return{r:0,g:0,b:0,a:0}}hslToRgb(r,e,t){r=r/360,e=parseFloat(e.toString())/100,t=parseFloat(t.toString())/100;let i=(c,d,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<1/6?c+(d-c)*6*h:h<1/2?d:h<2/3?c+(d-c)*(2/3-h)*6:c),n=t<.5?t*(1+e):t+e-t*e,s=2*t-n,o=Math.round(i(s,n,r+1/3)*255),a=Math.round(i(s,n,r)*255),l=Math.round(i(s,n,r-1/3)*255);return[o,a,l]}};var Se=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:r}){let e=r.trim();if(this.namedCurves[e])return this.cubicBezier(...this.namedCurves[e]);let t=e.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(t){let[i,n,s,o]=t.slice(1).map(Number);return this.cubicBezier(i,n,s,o)}return i=>i}cubicBezier(r,e,t,i){let n=3*r,s=3*(t-r)-n,o=1-n-s,a=3*e,l=3*(i-e)-a,c=1-a-l;function d(m){return((o*m+s)*m+n)*m}function h(m){return((c*m+l)*m+a)*m}function p(m){return(3*o*m+2*s)*m+n}function b(m,g=1e-5){let v,y,f=m,S,E,T;for(T=0;T<8;T++){if(S=d(f)-m,Math.abs(S)<g)return f;if(E=p(f),Math.abs(E)<1e-6)break;f=f-S/E}for(v=0,y=1,f=m;v<y;){if(S=d(f)-m,Math.abs(S)<g)return f;S>0?y=f:v=f,f=(y+v)/2}return f}return function(m){return h(b(m))}}};var Me=class{process({distance:r,radius:e,strength:t}){if(r>=e)return 0;let i=(e-r)/e;return t*i}};var Ee=class{process({from:r,to:e,progress:t}){return{r:r.r+(e.r-r.r)*t,g:r.g+(e.g-r.g)*t,b:r.b+(e.b-r.b)*t,a:r.a+(e.a-r.a)*t}}};var xe=class{process({from:r,to:e,progress:t}){return{x:(e.x-r.x)*t,y:(e.y-r.y)*t}}};var we=class{process({value:r}){let t=r?.trim();if(!t||t==="none")return 1;try{if(t.startsWith("matrix(")){let i=t.match(/matrix\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("scale(")){let i=t.match(/scale\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("scaleX(")){let i=t.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(t.startsWith("scale3d(")){let i=t.match(/scale3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(t.startsWith("matrix3d(")){let i=t.match(/matrix3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}}catch(i){return console.error(`Error parsing transform string "${t}":`,i),1}return 1}};var qe=class{process({attributeValue:r}){let e={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[],fit:!1};return r&&r.split("|").forEach(i=>{let n=i.trim();if(!n)return;let s=n.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(s){let o=s[1]||"",a=s[2],l=this.toCamelCase(o+a),d=(s[4]||"").split(";").map(p=>p.trim()).filter(p=>p.length>0),h=this.parseParamsArray(d);switch(l){case"line":e.line.push(h);break;case"word":e.word.push(h);break;case"char":e.char.push(h);break;case"charLine":e.charLine.push(h);break;case"charWord":e.charWord.push(h);break;case"wordLine":e.wordLine.push(h);break;case"fit":e.fit=!0;break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),e}toCamelCase(r){return r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}parseParamsArray(r){let e={align:"start"};return r.forEach(t=>{if(t==="abs")e.abs=!0;else if(t.startsWith("random")){e.align="random";let i=t.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(e.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(t)&&(e.align=t)}),e}};var Te=class{process({value:r}){let e=[],t="",i=0;for(let n=0;n<r.length;n++){let s=r[n];s==="("&&i++,s===")"&&i--,s==="|"&&i===0?(t.trim()&&e.push(t.trim()),t=""):t+=s}return t.trim()&&e.push(t.trim()),e.map(n=>{let s=n.match(/^(\w+)(?:\((.*)\))?$/);if(s){let[,a,l]=s;return l?{key:a,params:l.split(",").map(c=>c.trim())}:{key:a}}let o=n.indexOf(":");if(o!==-1){let a=n.slice(0,o).trim(),l=n.slice(o+1).trim(),c=l?l.split(",").map(d=>d.trim()):void 0;return{key:a,params:c}}return{key:n}})}};var Ue=class{constructor(){this.inputValidators={required:r=>r!=null&&String(r).trim()!=="",min:(r,e)=>typeof r=="string"&&r.length>=Number(e?.[0]??0),max:(r,e)=>typeof r=="string"&&r.length<=Number(e?.[0]??Number.MAX_SAFE_INTEGER),checked:r=>{if(Array.isArray(r))return r.length>0;if(r===!0||r==="true"||r===1||r==="1")return!0;if(typeof r=="string"){let e=r.trim().toLowerCase();return e==="false"||e==="0"?!1:e.length>0}return!!r},email:r=>typeof r=="string"&&/^[^\s@]+@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(r),phone:r=>{if(typeof r!="string")return!1;let e=r.trim();if(e===""||!/^[0-9()\s+-.]+$/.test(e))return!1;let t=e.replace(/\D/g,"").length;return t>=7&&t<=15},number:r=>typeof r=="string"&&/^-?\d+(\.\d+)?$/.test(r),integer:r=>typeof r=="string"&&/^-?\d+$/.test(r),url:r=>typeof r=="string"&&/^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:\/?#[\]@!$&'()*+,;=]*)?$/.test(r),regex:(r,e)=>this.testByRegex(r,e?.[0]),alpha:r=>this.testByRegex(r,"^[A-Za-z]+$",!0),alpha_num:r=>this.testByRegex(r,"^[A-Za-z0-9]+$",!0),alpha_dash:r=>this.testByRegex(r,"^[A-Za-z0-9_-]+$",!0),same:(r,e,t)=>{let i=e?.[0],n=this.getContextValue(t,i);return i&&n===void 0?!1:this.areValuesEqual(r,n)},different:(r,e,t)=>{let i=e?.[0],n=this.getContextValue(t,i);return i&&n===void 0?!1:!this.areValuesEqual(r,n)},range:(r,e)=>{if(r==null||r==="")return!0;let t=Number(r),i=Number(e?.[0]),n=Number(e?.[1]);return Number.isNaN(t)||Number.isNaN(i)||Number.isNaN(n)?!1:t>=i&&t<=n},digits:(r,e)=>{if(typeof r!="string")return!1;let t=Number(e?.[0]??0);return t<=0?!1:new RegExp(`^\\d{${t}}$`).test(r)},ip:r=>typeof r=="string"&&(this.isIPv4(r)||this.isIPv6(r)),mimes:(r,e)=>this.validateMimes(r,e),max_size:(r,e)=>{let t=Number(e?.[0]);return!t||t<=0?!0:this.validateMaxSize(r,t)},after:(r,e,t)=>this.compareDates(r,e,t,"after"),before:(r,e,t)=>this.compareDates(r,e,t,"before")};this.beforeInputValidators={number:r=>/^-?\d*\.?\d*$/.test(r),integer:r=>/^-?\d*$/.test(r),email:r=>/^[\w@.\-+]*$/.test(r),phone:r=>/^[0-9()\s+-.]*$/.test(r),letters:r=>/^[a-zA-Z]*$/.test(r),lettersSpaces:r=>/^[a-zA-Z\s]*$/.test(r),lettersNumbers:r=>/^[a-zA-Z0-9]*$/.test(r),alpha:r=>/^[A-Za-z]*$/.test(r),alpha_num:r=>/^[A-Za-z0-9]*$/.test(r),alpha_dash:r=>/^[A-Za-z0-9_-]*$/.test(r),digits:(r,e)=>{let t=Number(e?.[0]??0);return t<=0?/^\d*$/.test(r):new RegExp(`^\\d{0,${t}}$`).test(r)},url:r=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(r),pattern:(r,e)=>{try{return new RegExp(e?.[0]||"").test(r)}catch{return!0}}}}process({rules:r,value:e,type:t="input",context:i}){let n=[];for(let c of r){var s=null,o=null,a=!0,l=!0;t=="input"&&(o=this.inputValidators[c.key],!o)||t=="beforeinput"&&(s=this.beforeInputValidators[c.key],!s)||(o&&(a=o(e,c.params,i)),s&&(l=s(e,c.params,i)),l||n.push(this.getErrorMessage(c.key,c.params)),a||n.push(this.getErrorMessage(c.key,c.params)))}return{valid:n.length===0,errors:n}}getErrorMessage(r,e){switch(r){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${e?.[0]} characters`;case"max":return`Maximum ${e?.[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 ${e?.[0]} and ${e?.[1]}`;case"digits":return`Value must contain exactly ${e?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${e?.join(", ")}`;case"max_size":return`File must be smaller than ${e?.[0]} KB`;case"after":return`Date must be after ${e?.[0]}`;case"before":return`Date must be before ${e?.[0]}`;default:return"Invalid value"}}validateMimes(r,e){if(!e||e.length===0)return!0;let t=this.extractFiles(r);if(t.length===0)return!0;let i=e.map(n=>n.trim().toLowerCase());return t.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(r,e){let t=this.extractFiles(r);if(t.length===0)return!0;let i=e*1024;return t.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(r){if(!r)return[];let e=[];return typeof File<"u"&&r instanceof File?(e.push(r),e):typeof FileList<"u"&&r instanceof FileList?Array.from(r):Array.isArray(r)?(r.forEach(t=>{e.push(...this.extractFiles(t))}),e):typeof r=="object"&&("name"in r||"size"in r||"type"in r)?(e.push(r),e):(typeof r=="string"&&r!==""&&e.push({name:r}),e)}isMimeAllowed(r,e){let t=(r.type||"").toLowerCase(),i=this.getFileExtension(r.name);return e.some(n=>{let s=n.replace(/^\./,"").toLowerCase();return s?s.includes("/")?t===s:i===s:!1})}getFileExtension(r){if(!r)return"";let e=r.split(".");return e.length<=1?"":(e.pop()||"").toLowerCase()}compareDates(r,e,t,i){if(r==null||r==="")return!0;let n=e?.[0];if(!n)return!0;let s=this.toDate(r),o=this.resolveDateReference(n,t);return!s||!o?!1:i==="after"?s.getTime()>o.getTime():s.getTime()<o.getTime()}resolveDateReference(r,e){let t=this.getContextValue(e,r);if(t!==void 0)return this.toDate(t);if(r.toLowerCase()==="now")return new Date;if(r.toLowerCase()==="today"){let i=new Date;return i.setHours(0,0,0,0),i}return this.toDate(r)}toDate(r){if(r==null||r==="")return null;if(r instanceof Date)return Number.isNaN(r.getTime())?null:r;if(typeof r=="number"){let e=new Date(r);return Number.isNaN(e.getTime())?null:e}if(typeof r=="string"){let e=Date.parse(r);if(!Number.isNaN(e))return new Date(e)}return null}testByRegex(r,e,t=!1){if(e==null||e==="")return!0;let i=typeof r=="string"?r:r==null?"":String(r);if(t&&i==="")return!0;try{let{source:n,flags:s}=this.normalizeRegex(e);return new RegExp(n,s).test(i)}catch{return!0}}normalizeRegex(r){let e=r.trim();if(e.startsWith("/")&&e.lastIndexOf("/")>0){let t=e.lastIndexOf("/"),i=e.slice(1,t),n=e.slice(t+1);return{source:i,flags:n}}return{source:e,flags:""}}getContextValue(r,e){if(!(!r||!e)){if(r.values&&Object.prototype.hasOwnProperty.call(r.values,e))return r.values[e];if(r.getValue)return r.getValue(e)}}areValuesEqual(r,e){return Array.isArray(r)||Array.isArray(e)?JSON.stringify(r)===JSON.stringify(e):r===e}isIPv4(r){let e=r.split(".");return e.length!==4?!1:e.every(t=>{if(!/^\d+$/.test(t))return!1;let i=Number(t);return i>=0&&i<=255})}isIPv6(r){if(!r)return!1;if(r==="::")return!0;let e=r.split("::");if(e.length>2)return!1;let t=/^[0-9a-fA-F]{1,4}$/,i=r.split(":");return e.length===2?i.every(n=>n===""||t.test(n))&&i.length<=8:i.length===8&&i.every(n=>t.test(n))}};var st=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}canUseTypedOM(r){return"attributeStyleMap"in r&&typeof CSS<"u"&&typeof CSS.number=="function"&&typeof CSS.px=="function"}writeVar(r,e,t){let i=r.style;if(this.canUseTypedOM(r)&&typeof t=="number"&&Number.isFinite(t))try{r.attributeStyleMap.set(e,CSS.number(t));return}catch{}i.setProperty(e,String(t))}begin(){this.isOpen||(this.isOpen=!0)}setVars(r,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let t=this.pendingVars.get(r)??{};for(let[i,n]of Object.entries(e))t[i]!==n&&(t[i]=n);this.pendingVars.set(r,t)}setVar(r,e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let i=this.pendingVars.get(r)??{};i[e]!==t&&(i[e]=t,this.pendingVars.set(r,i))}setVarDirect(r,e,t){this.writeVar(r,e,t)}setProps(r,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let t=this.pendingProps.get(r)??{};for(let[i,n]of Object.entries(e))t[i]!==n&&(t[i]=n);this.pendingProps.set(r,t)}setProp(r,e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let i=this.pendingProps.get(r)??{};i[e]!==t&&(i[e]=t,this.pendingProps.set(r,i))}run(r){let e=this.isOpen;e||this.begin();try{r(),e||this.commit()}catch(t){throw e||this.cancel(),t}}commit(){if(this.isOpen){this.isOpen=!1;for(let[r,e]of this.pendingVars)for(let[t,i]of Object.entries(e))this.writeVar(r,t,i);this.pendingVars.clear();for(let[r,e]of this.pendingProps){let t=r.style;for(let[i,n]of Object.entries(e))t[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},M=new st;var Ye=class{constructor(){this.domAttribute=new he;this.recordAttribute=new pe;this.transformNullify=new re;this.boundingClientRect=new de;this.relativePosition=new me(this.transformNullify);this.unitParser=new fe;this.lerp=new ge;this.adaptiveLerp=new be;this.originParser=new ve;this.colorParser=new ye;this.validation=new Ue;this.easingFunction=new Se;this.magneticPull=new Me;this.lerpColor=new Ee;this.lerpVector=new xe;this.transformScaleParser=new we;this.optionsParser=new qe;this.ruleParser=new Te;this.styleTxn=M}};function Xe(){let u=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,r=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,e=typeof window<"u"?window.innerWidth<=768:!1;return u||r||e}var Bt=new WeakMap,W=5e-4,oe="default",ot="[string-cursor],[data-string-cursor]",$t="[string-cursor-content],[data-string-cursor-content]",at=1/240,z=(u,r)=>{let e=Math.pow(10,r);return Math.round(u*e)/e};function cr(u){let r=Bt.get(u);return r||(r={prevX:Number.NaN,prevY:Number.NaN},Bt.set(u,r)),r}var lt=class extends x{constructor(e){super(e);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.cssProperties=[{name:"--x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--x-lerp",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y-lerp",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--x-px",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--y-px",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--dx",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--dy",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--angle",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--angle-deg",syntax:"<number>",initialValue:"0",inherits:!0}],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"]??oe},{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:"cursor-enter",type:{type:"enum",values:["snap","smooth"]},fallback:"snap"},{key:"cursor-leave",type:{type:"enum",values:["snap","smooth"]},fallback:"smooth"},{key:"cursor-leave-hold",type:"boolean",fallback:!1},{key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>this.tools.adaptiveLerp.process({value:t,inMin:.1,inMax:1,outMin:.05,outMax:.65})},{key:"cursor-float",type:"number",fallback:2},{key:"cursor-vars",type:"string",fallback:""}],Xe()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n),t.setProperty("mouse-x",0),t.setProperty("mouse-y",0),t.setProperty("mouse-pixel-x",0),t.setProperty("mouse-pixel-y",0),t.setProperty("is-mouse-over",!1),t.setProperty("is-mouse-move",!1),t.setProperty("__cursor-vars",this.parseCursorVars(t.getProperty("cursor-vars")));let s=i.getBoundingClientRect();t.setProperty("cached-width",s.width||i.offsetWidth||1),t.setProperty("cached-height",s.height||i.offsetHeight||1)}onResize(){super.onResize(),this.objects.forEach(e=>{let t=e.htmlElement.getBoundingClientRect();e.setProperty("cached-width",t.width||e.htmlElement.offsetWidth||1),e.setProperty("cached-height",t.height||e.htmlElement.offsetHeight||1)})}onMutate(e){if(!this.enabled)return;let t=performance.now(),i=this.lastFrameTime?(t-this.lastFrameTime)/1e3:.016;this.lastFrameTime=t,i>.1&&(i=.1),i<at&&(i=at);let n=this.data.cursor.targetX,s=this.data.cursor.targetY;if(this.objects.forEach(o=>{let a=o.getProperty("is-mouse-over"),l=o.getProperty("cursor-target-disable"),c=o.getProperty("lerp")??.15,d=this.getFrameAdjustedLerp(c,i),h=this.getObjectDimensions(o),{halfWidth:p,halfHeight:b,width:m,height:g}=h;if(a&&!l){let{cx:v,cy:y}=this.centers.getCenter(o),f=n-(v-p),S=s-(y-b),E=o.getProperty("mouse-pixel-x")??0,T=o.getProperty("mouse-pixel-y")??0,D=E-f,R=T-S;if(D*D+R*R>1e-4){let I=o.getProperty("is-mouse-move")??!1,O=o.getProperty("cursor-enter")??"snap",L=o.getProperty("alignment")??"center";if(!I){if(o.setProperty("is-mouse-move",!0),O==="snap")o.setProperty("mouse-pixel-x",f),o.setProperty("mouse-pixel-y",S),o.setProperty("mouse-x",f),o.setProperty("mouse-y",S),E=f,T=S;else{let Y=o.getProperty("mouse-x")??0,ne=o.getProperty("mouse-y")??0;E=this.reverseOffset(L,Y,m),T=this.reverseOffset(L,ne,g),o.setProperty("mouse-pixel-x",E),o.setProperty("mouse-pixel-y",T)}this.events.emit(this.getObjectEventName(o,"cursor:start"),null)}let H=this.tools.lerp.process({from:E,to:f,progress:d}),w=this.tools.lerp.process({from:T,to:S,progress:d}),A=E+H,F=T+w,k=Math.abs(A-E)>W||Math.abs(F-T)>W;o.setProperty("mouse-pixel-x",A),o.setProperty("mouse-pixel-y",F);let N=this.calculateOffset(L,A,m),V=this.calculateOffset(L,F,g);o.setProperty("mouse-x",N),o.setProperty("mouse-y",V),this.setMouseCoordinates(o,N,V,A,F)&&this.events.emit(this.getObjectEventName(o,"cursor:move"),{x:N,y:V}),k&&this.events.emit(this.getObjectEventName(o,"cursor:pixel"),{x:A,y:F})}else{o.setProperty("mouse-pixel-x",f),o.setProperty("mouse-pixel-y",S),o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));let I=o.getProperty("alignment")??"center",O=this.calculateOffset(I,f,m),L=this.calculateOffset(I,S,g);this.setMouseCoordinates(o,O,L,f,S)}}else{if(o.getProperty("cursor-leave-hold")??!1){o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));return}if((o.getProperty("cursor-leave")??"smooth")==="snap"){o.setProperty("is-mouse-move",!1),o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0);return}let f=o.getProperty("mouse-x")??0,S=o.getProperty("mouse-y")??0;if(f!==0||S!==0){o.setProperty("is-mouse-move",!1);let E=this.calculateOffset("center",p,m),T=this.calculateOffset("center",b,g),D=f+this.tools.lerp.process({from:f,to:E,progress:d}),R=S+this.tools.lerp.process({from:S,to:T,progress:d});o.setProperty("mouse-x",D),o.setProperty("mouse-y",R),Math.abs(D)<.001&&Math.abs(R)<.001?(o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0)):this.setMouseCoordinates(o,D,R)}}}),this.cursorPortals.size>0){let{stepX:o,stepY:a,smoothedX:l,smoothedY:c}=this.data.cursor,d=this.cursorPrev;(!Number.isFinite(d.x)||Math.abs(l-d.x)>W||Math.abs(c-d.y)>W||Math.abs(o-d.stepX)>W||Math.abs(a-d.stepY)>W)&&(this.events.emit("cursor",{stepX:o,stepY:a,x:l,y:c}),this.cursorPrev={x:l,y:c,stepX:o,stepY:a});let p=this.data.cursor.targetX,b=this.data.cursor.targetY;this.cursorPortals.forEach(m=>{m.forEach(g=>{this.updatePortalPosition(g,p,b,i)})})}}onObjectConnected(e){let t=e.htmlElement;this.centers.attach(e),e.setProperty("mouseleave",()=>{this.onMouseLeave(e)}),e.setProperty("mouseenter",()=>{this.onMouseEnter(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"))}getCursorClass(e){let t=e.getProperty("cursor-class");return t!=null&&t.length>0?t:null}onMouseEnter(e){if(!document.contains(e.htmlElement))return;e.setProperty("is-mouse-over",!0),this.hoveredObjects.add(e);let t=this.getCursorClass(e);this.withPortalsForObject(e,i=>{t&&i.element.classList.add(t),this.incrementPortalHover(i)}),e.htmlElement.addEventListener("mouseleave",e.getProperty("mouseleave"))}onMouseLeave(e){e.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(e);let t=this.getCursorClass(e);this.withPortalsForObject(e,i=>{t&&i.element.classList.remove(t),this.decrementPortalHover(i)}),document.contains(e.htmlElement)&&e.htmlElement.removeEventListener("mouseleave",e.getProperty("mouseleave"))}onEnterObject(e){e.htmlElement.addEventListener("mouseenter",e.getProperty("mouseenter"))}onLeaveObject(e){e.htmlElement.removeEventListener("mouseenter",e.getProperty("mouseenter")),e.htmlElement.removeEventListener("mouseleave",e.getProperty("mouseleave"))}safariNavigationCleanup(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onElementRemovedFromDOM(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onObjectDisconnected(e){e.getProperty("is-mouse-over")&&this.onMouseLeave(e)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(e,t){this.enabled&&((this.shouldRefreshPortals(e)||this.shouldRefreshPortals(t))&&this.collectCursorPortals(),t.length>0&&this.handleRemovedNodes(t))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(ot).forEach(t=>{if(!(t instanceof HTMLElement))return;let i=this.resolvePortalId(t),n=this.resolvePortalLerp(t),s=t.matches($t)?t:t.querySelector($t),o=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:t,content:s,prev:{x:o,y:a,stepX:0,stepY:0},hoverCount:0,showTimer:null,lerp:n},c=this.cursorPortals.get(i);c?c.push(l):this.cursorPortals.set(i,[l])})}resolvePortalId(e){let t=[e.getAttribute("data-string-cursor"),e.getAttribute("string-cursor"),e.getAttribute("data-string-cursor-id"),e.getAttribute("string-cursor-id")];for(let i of t)if(i&&i.trim().length>0)return i.trim();return oe}resolvePortalLerp(e){let t=e.getAttribute("data-string-cursor-lerp")??e.getAttribute("string-cursor-lerp")??this.settings["cursor-lerp"];if(!t)return null;let i=parseFloat(t);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(e){for(let t of Array.from(e))if(t instanceof Element&&(t.matches(ot)||t.querySelector(ot)))return!0;return!1}withPortalsForObject(e,t){this.getPortalsForObject(e).forEach(n=>t(n))}getPortalsForObject(e){if(this.cursorPortals.size===0)return[];let t=this.extractPortalIds(e),i=[];if(t.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let s=n.length>0?n:oe,o=this.cursorPortals.get(s);o&&o.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(oe)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(s=>i.push(s))}return i}extractPortalIds(e){if(!e)return[oe];let t=e.getProperty("cursor-target");return typeof t!="string"||t.trim().length===0?[oe]:t.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(e){e.hoverCount++,e.element.classList.remove("-show"),this.restartPortalShowTimer(e)}decrementPortalHover(e){e.hoverCount=Math.max(0,e.hoverCount-1),e.hoverCount===0&&(this.clearPortalShowTimer(e),e.element.classList.remove("-show"))}restartPortalShowTimer(e){if(this.clearPortalShowTimer(e),!e.element.isConnected){e.showTimer=null;return}e.element.classList.add("-show"),e.showTimer=null}clearPortalShowTimer(e){e.showTimer&&(clearTimeout(e.showTimer),e.showTimer=null)}updatePortalPosition(e,t,i,n){if(!e.element.isConnected)return;let s=e.prev,o=Number.isFinite(s.x)?s.x:t,a=Number.isFinite(s.y)?s.y:i,l=e.lerp??.1,c=this.getFrameAdjustedLerp(l,n),d=(t-o)*c,h=(i-a)*c,p=n>1e-4?n:1/60,b=d/(p*60),m=h/(p*60);if(Math.abs(d)<W&&Math.abs(h)<W)return;let g=o+d,v=a+h;this.writePortalVars(e.element,{"--x":z(g,2),"--y":z(v,2),"--x-lerp":z(b,3),"--y-lerp":z(m,3)}),s.x=g,s.y=v,s.stepX=d,s.stepY=h}handleRemovedNodes(e){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>{t.htmlElement.isConnected||this.onElementRemovedFromDOM(t)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(e=>this.safariNavigationCleanup(e))}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(e,t,i,n,s){if(e.getProperty("cursor-target-style-disable"))return!1;let o=cr(e),a=e.getProperty("cursor-float")??2,l=Math.pow(10,a),c=Math.abs(t)<W&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<W?o.prevX:Math.round(t*l)/l,d=Math.abs(i)<W&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<W?o.prevY:Math.round(i*l)/l;if(Number.isFinite(o.prevX)&&Math.abs(c-o.prevX)<=W&&Number.isFinite(o.prevY)&&Math.abs(d-o.prevY)<=W)return!1;o.prevX=c,o.prevY=d;let h=e.getProperty("__cursor-vars"),p={"--x":z(c,a),"--y":z(d,a)};if(h&&h.size>0){let m=Number.isFinite(n)?n:e.getProperty("mouse-pixel-x"),g=Number.isFinite(s)?s:e.getProperty("mouse-pixel-y"),v=e.getProperty("__prev-x-px"),y=e.getProperty("__prev-y-px"),f=Number.isFinite(v)?m-v:0,S=Number.isFinite(y)?g-y:0;e.setProperty("__prev-x-px",m),e.setProperty("__prev-y-px",g);let E=f===0&&S===0?0:Math.atan2(S,f),T=E*180/Math.PI;h.has("xpx")&&(p["--x-px"]=z(m,2)),h.has("ypx")&&(p["--y-px"]=z(g,2)),h.has("dx")&&(p["--dx"]=z(f,3)),h.has("dy")&&(p["--dy"]=z(S,3)),h.has("angle")&&(p["--angle"]=z(E,4)),h.has("angle-deg")&&(p["--angle-deg"]=z(T,2))}let b=()=>{this.applyToElementAndConnects(e,m=>{M.setVars(m,p)})};return M.isOpen?b():M.run(b),!0}writePortalVars(e,t){if(M.isOpen){M.setVars(e,t);return}M.run(()=>{M.setVars(e,t)})}parseCursorVars(e){return e?new Set(e.split(/[|,]/).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0)):new Set}getFrameAdjustedLerp(e,t){let i=Math.min(.99,Math.max(.001,e));if(!Number.isFinite(t)||t<=0)return i;let s=Math.max(t,at)*60,o=1-Math.pow(1-i,s);return Math.min(.999,Math.max(1e-4,o))}getObjectDimensions(e){let t=e.getProperty("cached-width"),i=e.getProperty("cached-height");if(typeof t=="number"&&typeof i=="number"&&t>0&&i>0){let b=t/2,m=i/2;return{width:t,height:i,halfWidth:b,halfHeight:m}}let n=e.htmlElement,s=n.offsetWidth||n.clientWidth||n.scrollWidth||1,o=n.offsetHeight||n.clientHeight||n.scrollHeight||1,a=e.getProperty("half-width"),l=e.getProperty("half-height"),c=typeof a=="number"&&Number.isFinite(a)?a:s/2,d=typeof l=="number"&&Number.isFinite(l)?l:o/2,h=c>0?c*2:s,p=d>0?d*2:o;return e.setProperty("cached-width",h),e.setProperty("cached-height",p),{width:h,height:p,halfWidth:c,halfHeight:d}}calculateOffset(e,t,i){switch(e){case"start":return t/i;case"end":return(t-i)/i;case"center":default:return(t-i/2)/(i/2)}}reverseOffset(e,t,i){switch(e){case"start":return t*i;case"end":return t*i+i;case"center":default:return t*(i/2)+i/2}}removeObject(e){if(!this.enabled)return super.removeObject(e);let t=this.objectMapOnPage.get(e);t&&this.centers.detach(t),super.removeObject(e)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var ct=class extends x{constructor(e){super(e);this.originObservers=new WeakMap;this.htmlKey="impulse",this.cssProperties=[{name:"--push-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--push-y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--push-rotation",syntax:"<number>",initialValue:"0",inherits:!0}],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"]},{key:"rotation-origin",type:"string",fallback:this.settings["rotation-origin"]??"center center"})}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.cacheRotationOrigin(e),this.observeRotationOrigin(e),this.hover.track(e),this.centers.attach(e)}onObjectDisconnected(e){this.hover.untrack(e),this.centers.detach(e);let t=this.originObservers.get(e);t&&(t.disconnect(),this.originObservers.delete(e))}onMouseMove(e){if(!e)return;let t=this.data.cursor.velocityX,i=this.data.cursor.velocityY;if(t===0&&i===0)return;let n=this.data.cursor.targetX,s=this.data.cursor.targetY;for(let o of this.objects){let a=o.htmlElement.getBoundingClientRect();if(n>=a.left&&n<=a.right&&s>=a.top&&s<=a.bottom){{let h=a.width||1,p=Math.max(0,Math.min(1,(this.data.cursor.targetX-a.left)/h));this.events.emit(this.getObjectEventName(o,"object:impulse","side"),{value:p})}let c=o.getProperty("position-strength")||0;if(c!==0){let h=o.getProperty("continuous-push")??!0,p=o.getProperty("__push-latch")===!0;if(h||!p){let b=o.getProperty("velocity-x")||0,m=o.getProperty("velocity-y")||0;b+=t*c,m+=i*c,o.setProperty("velocity-x",b),o.setProperty("velocity-y",m),h||o.setProperty("__push-latch",!0)}}let d=o.getProperty("rotation-strength")??.75;if(d!==0){let h=o.getProperty("continuous-push")??!0,p=o.getProperty("__rotate-latch")===!0;if(h||!p){let{centerX:b,centerY:m}=this.getRotationOriginFromRect(o,a),g=n-b,v=s-m,y=g*i-v*t,f=o.getProperty("ang-vel-deg")||0;f+=y*d*.02,o.setProperty("ang-vel-deg",f),h||o.setProperty("__rotate-latch",!0)}}}}}cacheRotationOrigin(e){let t=e.getProperty("rotation-origin")??"center center",{x:i,y:n}=this.tools.originParser.toNormalized({value:t});e.setProperty("__rotation-origin-x",i),e.setProperty("__rotation-origin-y",n)}observeRotationOrigin(e){let t="string-rotation-origin",i="data-string-rotation-origin",n=new MutationObserver(s=>{for(let o of s)if(o.type==="attributes"&&(o.attributeName===t||o.attributeName===i)){let a=e.htmlElement.getAttribute(t)??e.htmlElement.getAttribute(i);a!==null&&e.setProperty("rotation-origin",a),this.cacheRotationOrigin(e);break}});n.observe(e.htmlElement,{attributes:!0,attributeFilter:[t,i]}),this.originObservers.set(e,n)}getRotationOriginFromRect(e,t){let i=e.getProperty("__rotation-origin-x")??.5,n=e.getProperty("__rotation-origin-y")??.5;return{centerX:t.left+t.width*i,centerY:t.top+t.height*n}}onFrame(e){let t=this.data.cursor.targetX,i=this.data.cursor.targetY;for(let n of this.objects){let s=n.htmlElement.getBoundingClientRect(),o=t>=s.left&&t<=s.right&&i>=s.top&&i<=s.bottom;!o&&n.getProperty("__push-latch")===!0&&n.setProperty("__push-latch",!1),!o&&n.getProperty("__rotate-latch")===!0&&n.setProperty("__rotate-latch",!1)}for(let n=0;n<this.objects.length;n++){let s=this.objects[n],o=s.getProperty("offset-x")||0,a=s.getProperty("offset-y")||0,l=s.getProperty("velocity-x")||0,c=s.getProperty("velocity-y")||0,d=s.getProperty("position-tension")??.05,h=s.getProperty("position-friction")??.15,p=s.getProperty("position-max-velocity")??120,b=s.getProperty("max-offset")??220;l-=d*o,c-=d*a;let m=1-h;l*=m,c*=m,l>p?l=p:l<-p&&(l=-p),c>p?c=p:c<-p&&(c=-p),o+=l,a+=c,o>b?o=b:o<-b&&(o=-b),a>b?a=b:a<-b&&(a=-b);let g=s.getProperty("angle-deg")||0,v=s.getProperty("ang-vel-deg")||0,y=s.getProperty("rotation-tension")??.06,f=s.getProperty("rotation-friction")??.18,S=s.getProperty("rotation-max-angular-velocity")??6,E=s.getProperty("rotation-max-angle")??18;v-=y*g,v*=1-f,v>S?v=S:v<-S&&(v=-S),g+=v,g>E?(g=E,v*=.35):g<-E&&(g=-E,v*=.35);let T=s.getProperty("sleep-epsilon")??.01,D=l*l+c*c<T*T&&o*o+a*a<T*T,R=Math.abs(v)<T&&Math.abs(g)<T;D?(l||c||o||a)&&(s.setProperty("offset-x",0),s.setProperty("offset-y",0),s.setProperty("velocity-x",0),s.setProperty("velocity-y",0),o=a=l=c=0):(s.setProperty("offset-x",o),s.setProperty("offset-y",a),s.setProperty("velocity-x",l),s.setProperty("velocity-y",c)),R?(g||v)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),g=v=0):(s.setProperty("angle-deg",g),s.setProperty("ang-vel-deg",v));let C=s.getProperty("position-update-threshold")??.1,I=s.getProperty("rotation-update-threshold")??.15,O=s.getProperty("__prev-css-x")||0,L=s.getProperty("__prev-css-y")||0,H=s.getProperty("__prev-css-rot")||0,w=Math.round(o*10)/10,A=Math.round(a*10)/10,F=Math.round(g*10)/10,k=Math.abs(w-O)>C||Math.abs(A-L)>C,N=Math.abs(F-H)>I;(k||N)&&(s.setProperty("__next-css-x",w),s.setProperty("__next-css-y",A),s.setProperty("__next-css-rot",F)),s.setProperty("__needs-position-update",k),s.setProperty("__needs-rotation-update",N)}}onMutate(){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.getProperty("__needs-position-update")===!0,n=t.getProperty("__needs-rotation-update")===!0;if(!i&&!n)continue;let s=t.getProperty("__next-css-x")||0,o=t.getProperty("__next-css-y")||0,a=t.getProperty("__next-css-rot")||0;this.applyToElementAndConnects(t,l=>{i&&(M.setVar(l,"--push-x",s),M.setVar(l,"--push-y",o)),n&&M.setVar(l,"--push-rotation",a)}),i&&(t.setProperty("__prev-css-x",s),t.setProperty("__prev-css-y",o),this.events.emit(this.getObjectEventName(t,"object:impulse","move"),{x:s,y:o})),n&&(t.setProperty("__prev-css-rot",a),this.events.emit(this.getObjectEventName(t,"object:impulse","rotate"),{rotation:a})),t.setProperty("__needs-position-update",!1),t.setProperty("__needs-rotation-update",!1)}}};var ut=class{constructor(){this.measureQueue=[];this.mutateQueue=[];this.scheduled=!1}measure(r){this.measureQueue.push(r),this.schedule()}mutate(r){this.mutateQueue.push(r),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0)}flush(){if(!this.scheduled)return;let r=this.measureQueue;this.measureQueue=[];for(let t=0;t<r.length;t++)try{r[t]()}catch(i){console.error("Error in frameDOM measure task:",i)}let e=this.mutateQueue;this.mutateQueue=[];for(let t=0;t<e.length;t++)try{e[t]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}},_=new ut;var ur=20,q={MANUAL_COLS_KEY:"masonry-manual-cols",MANUAL_GAP_KEY:"masonry-manual-gap",DEFAULT_DURATION:600,DEFAULT_EASING:"cubic-bezier(0.25, 1, 0.5, 1)"};function jt(u){if(!u)return q.DEFAULT_DURATION;let r=parseFloat(u);return isNaN(r)?q.DEFAULT_DURATION:r}function Ge(u,r){let e=[...u].sort((i,n)=>n.breakpoint-i.breakpoint),t=e.find(i=>r>=i.breakpoint);return t?t.value:e[e.length-1]?.value}var dt=class extends x{constructor(e){super(e);this.states=new WeakMap;this.htmlKey="masonry",this.attributesToMap.push({key:"masonry-cols",type:"breakpoint-dimension",fallback:"2|640:3|1024:4"},{key:"masonry-gap",type:"breakpoint-dimension",fallback:"16|640:24|1024:32"},{key:"masonry-mode",type:"string",fallback:"auto"})}parseEasing(e){return this.tools.easingFunction.process({easing:e||q.DEFAULT_EASING})}onObjectConnected(e){super.onObjectConnected(e);let t=e.htmlElement;M.begin(),M.setProps(t,{position:"relative",boxSizing:"border-box"}),M.commit();let i=this.createState(e,t);this.states.set(e,i),this.attachImgLoaders(e,i,t),this.scheduleLayout(e,!1,"init");let n=e.id;this.events.on(`masonry:update:${n}`,s=>{s.mode&&e.setProperty("masonry-mode",s.mode),s.cols!==void 0&&e.setProperty(q.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&e.setProperty(q.MANUAL_GAP_KEY,Number(s.gap)),this.scheduleLayout(e,!0,"external-event")})}onFrame(e){let t=e.time.now;this.objectsOnPage.forEach(i=>{let n=this.states.get(i);if(!n||!n.isAnimating)return;let s=0;M.run(()=>{if(n.isAnimatingHeight){let o=t-n.heightStartTime,a=Math.min(1,o/n.heightDuration),l=n.heightEase(a),c=n.startHeight+(n.targetHeight-n.startHeight)*l;M.setProps(i.htmlElement,{height:`${c}px`}),a<1?s++:n.isAnimatingHeight=!1}n.items.forEach((o,a)=>{if(!o.isMoving)return;let l=t-o.startTime,c=l*o.invPosDur,d=c>1?1:c,h=o.posEase(d);o.cx=o.sx+o.dx*h,o.cy=o.sy+o.dy*h;let p=l*o.invSizeDur,b=p>1?1:p,m=o.sizeEase(b);o.cw=o.sw+o.dw*m,M.setProps(a,{transform:`translate3d(${o.cx}px, ${o.cy}px, 0)`,...Math.abs(o.dw)>.05?{width:`${o.cw}px`}:{},willChange:"transform, width"}),d<1||b<1?s++:(o.isMoving=!1,M.setProps(a,{transform:`translate3d(${o.tx}px, ${o.ty}px, 0)`,width:`${o.tw}px`,willChange:"auto"}),o.cx=o.tx,o.cy=o.ty,o.cw=o.tw)})}),s===0&&this.handleAnimationEnd(i,n,t)})}onResize(){this.data.system.suppressMasonryResize||this.objectsOnPage.forEach(e=>{this.states.has(e)&&this.scheduleLayout(e,!0,"window-resize")})}cleanupObject(e){let t=this.states.get(e);t&&(t.ro.disconnect(),t.mo.disconnect(),t.resizeDebounceId&&clearTimeout(t.resizeDebounceId),this.states.delete(e))}createState(e,t){let i=t.getBoundingClientRect(),n=a=>{if(!a.length)return;let l=a[0].contentRect,c=this.states.get(e);if(!c||Math.abs(l.width-c.lastObservedWidth)<=.5&&Math.abs(l.height-c.lastObservedHeight)<=.5)return;c.lastObservedWidth=l.width,c.lastObservedHeight=l.height;let d=getComputedStyle(t),h=parseFloat(d.paddingLeft)||0,p=parseFloat(d.paddingRight)||0,b=l.width-h-p;if(b<=0)return;let{columns:m,gap:g}=this.getGridSettings(e),v=(b-g*(m-1))/m;m===c.lastLayoutColumns&&g===c.lastLayoutGap&&Math.abs(v-c.lastLayoutColumnWidth)<=.5||(c.resizeDebounceId&&window.clearTimeout(c.resizeDebounceId),c.resizeDebounceId=window.setTimeout(()=>{c.isResizing=!0,this.scheduleLayout(e,!0,"resize-observer"),c.isResizing=!1},ur))},s=a=>{let l=this.states.get(e);if(!l)return;let c=!1;for(let d of a)d.removedNodes.length&&d.removedNodes.forEach(h=>{if(h.nodeType===1){let p=h;this.cleanupImgListeners(l,p),l.items.delete(p),c=!0}}),d.addedNodes.length&&d.addedNodes.forEach(h=>{h.nodeType===1&&(this.attachImgLoaders(e,l,h),c=!0)});c&&this.scheduleLayout(e,!0,"mutation-observer")},o={ro:new ResizeObserver(n),mo:new MutationObserver(s),isResizing:!1,lastObservedWidth:i.width,lastObservedHeight:i.height,lastLayoutColumns:0,lastLayoutGap:0,lastLayoutColumnWidth:-1,lastChildrenHash:0,lastHeightsHash:0,childIds:new WeakMap,nextChildId:1,imgUnsubs:new WeakMap,layoutScheduled:!1,items:new Map,startHeight:t.offsetHeight,targetHeight:t.offsetHeight,heightStartTime:0,heightDuration:q.DEFAULT_DURATION,heightEase:this.parseEasing(null),isAnimatingHeight:!1,isAnimating:!1,pendingHeight:void 0,pendingHeightAnimate:!1,expectedEndTime:0};return o.ro.observe(t),o.mo.observe(t,{childList:!0}),o}handleAnimationEnd(e,t,i){if(t.pendingHeight!==void 0){let n=t.pendingHeight,s=t.pendingHeightAnimate;if(t.pendingHeight=void 0,t.pendingHeightAnimate=!1,s){t.startHeight=e.htmlElement.offsetHeight,t.targetHeight=n,t.heightStartTime=i,t.heightDuration=q.DEFAULT_DURATION,t.heightEase=this.parseEasing(null),t.isAnimatingHeight=!0,t.isAnimating=!0;return}M.run(()=>{M.setProps(e.htmlElement,{height:`${n}px`})})}t.isAnimating&&this.events.emit("masonry:shuffle:end",{object:e}),t.isAnimating=!1,this.objectManager.refreshLayoutForRoot(e.htmlElement),t.endTimerId&&(window.clearTimeout(t.endTimerId),t.endTimerId=void 0),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}scheduleLayout(e,t,i){let n=this.states.get(e);!n||n.layoutScheduled||(n.layoutScheduled=!0,_.measure(()=>{n.layoutScheduled=!1,this.performSyncLayout(e,n,t,i)}))}performSyncLayout(e,t,i,n){let s=e.htmlElement,o=Array.from(s.children);if(o.length===0)return;let a=s.getBoundingClientRect(),l=getComputedStyle(s),c=parseFloat(l.paddingLeft)||0,d=parseFloat(l.paddingRight)||0,h=parseFloat(l.paddingTop)||0,p=a.width-c-d;if(p<=0)return;let{columns:b,gap:m}=this.getGridSettings(e),g=(p-m*(b-1))/b,y=(e.getProperty("masonry-mode")||"auto")==="auto"&&i&&!t.isResizing&&n!=="window-resize"&&n!=="resize-observer",f=b===t.lastLayoutColumns&&m===t.lastLayoutGap&&Math.abs(g-t.lastLayoutColumnWidth)<=.5,S=0;o.forEach(w=>{let A=t.childIds.get(w);A||(A=t.nextChildId++,t.childIds.set(w,A)),S=S*31+A>>>0}),t.lastLayoutColumns=b,t.lastLayoutGap=m,t.lastLayoutColumnWidth=g,t.lastChildrenHash=S;let E=new Map;i&&o.forEach(w=>{let A=t.items.get(w);A&&E.set(w,A.cw)}),M.begin(),o.forEach(w=>{M.setProps(w,{position:"absolute",top:"0",left:"0",width:`${g}px`})}),M.commit();let T=o.map(w=>w.offsetHeight),D=0;T.forEach(w=>D=D*31+Math.round(w*2)>>>0),t.lastHeightsHash=D,i&&E.size>0&&M.run(()=>{E.forEach((w,A)=>{M.setProps(A,{width:`${w}px`})})});let R=new Array(b).fill(0),C=performance.now(),I=!1,O=0;o.forEach((w,A)=>{let F=T[A],k=0,N=R[0];for(let U=1;U<b;U++)R[U]<N&&(N=R[U],k=U);let V=k*(g+m)+c,$=N+h,Y=g;R[k]=N+F+m;let ne=jt(w.getAttribute("string-masonry-position-time")),Le=jt(w.getAttribute("string-masonry-size-time")),Nt=ne>0?1/ne:1e3,Wt=Le>0?1/Le:1e3,Vt=this.parseEasing(w.getAttribute("string-masonry-position-easing")),_t=this.parseEasing(w.getAttribute("string-masonry-size-easing")),P=t.items.get(w);if(P)Math.abs(P.tx-V)+Math.abs(P.ty-$)+Math.abs(P.tw-Y)>.5&&(P.sx=P.cx,P.sy=P.cy,P.sw=P.cw,P.tx=V,P.ty=$,P.tw=Y,P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,P.posEase=Vt,P.invPosDur=Nt,P.sizeEase=_t,P.invSizeDur=Wt,P.startTime=C,P.isMoving=!0,I=!0,O=Math.max(O,ne,Le));else{let U=V,zt=i?$+30:$;P={sx:U,sy:zt,sw:Y,tx:V,ty:$,tw:Y,dx:0,dy:0,dw:0,cx:U,cy:zt,cw:Y,startTime:C,posEase:Vt,invPosDur:Nt,sizeEase:_t,invSizeDur:Wt,isMoving:i},t.items.set(w,P),i?(P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,I=!0,O=Math.max(O,ne,Le)):M.run(()=>{M.setProps(w,{transform:`translate3d(${V}px, ${$}px, 0)`,width:`${Y}px`,willChange:"auto"})})}});let L=Math.max(...R);if(Math.abs(t.targetHeight-L)>1)if(i){let w=s.getBoundingClientRect(),A=this.data.viewport.windowHeight;var H=!1;if(w.bottom>=-100&&w.bottom<=A+100){let F=w.top+L-A;if(Math.abs(F)>1&&L<s.offsetHeight){let k=w.top+this.data.scroll.current+L-A;this.events.emit("scrollTo",k),H=!0}}L>=t.targetHeight?(y?(t.startHeight=s.offsetHeight,t.heightStartTime=C,t.heightDuration=q.DEFAULT_DURATION,t.heightEase=this.parseEasing(null),t.isAnimatingHeight=!0):M.run(()=>{M.setProps(e.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}),t.targetHeight=L,t.pendingHeight=void 0):(t.pendingHeight=L,t.pendingHeightAnimate=y,t.targetHeight=L,H||M.run(()=>{M.setProps(e.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),I=!0}else t.targetHeight=L,t.pendingHeight=void 0,M.run(()=>{M.setProps(e.htmlElement,{height:`${L}px`})});I&&(t.isAnimating||this.events.emit("masonry:shuffle:start",{object:e}),t.isAnimating=!0,O>0&&(t.expectedEndTime=C+O+32,t.endTimerId&&window.clearTimeout(t.endTimerId),t.endTimerId=window.setTimeout(()=>{t.isAnimating&&(t.pendingHeight!==void 0||t.isAnimatingHeight||(this.events.emit("masonry:shuffle:end",{object:e}),t.isAnimating=!1,t.endTimerId=void 0))},O+50)))}getGridSettings(e){let t=this.data.viewport.windowWidth;if((e.getProperty("masonry-mode")||"auto")==="manual"){let o=e.getProperty(q.MANUAL_COLS_KEY),a=e.getProperty(q.MANUAL_GAP_KEY),l=e.getProperty("masonry-cols")||[],c=e.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Ge(l,t)??2)),gap:Math.max(0,a??Ge(c,t)??16)}}let n=e.getProperty("masonry-cols")||[{breakpoint:0,value:2}],s=e.getProperty("masonry-gap")||[{breakpoint:0,value:16}];return{columns:Math.max(1,Math.round(Ge(n,t)??2)),gap:Math.max(0,Ge(s,t)??16)}}attachImgLoaders(e,t,i){(i.tagName==="IMG"?[i]:Array.from(i.querySelectorAll("img"))).forEach(s=>{let o=s;if(o.complete||t.imgUnsubs.has(o))return;let a=()=>{this.scheduleLayout(e,!0,"img-load"),this.cleanupImgListeners(t,o)};o.addEventListener("load",a),o.addEventListener("error",a),t.imgUnsubs.set(o,()=>{o.removeEventListener("load",a),o.removeEventListener("error",a)})})}cleanupImgListeners(e,t){let i=n=>{let s=e.imgUnsubs.get(n);s&&(s(),e.imgUnsubs.delete(n))};t.tagName==="IMG"?i(t):t.querySelectorAll("img").forEach(n=>i(n))}};var ht=class extends x{constructor(r){super(r),this.htmlKey="magnetic",this._type=2,this.cssProperties=[{name:"--magnetic-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-y",syntax:"<number>",initialValue:"0",inherits:!0}],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(r,e,t,i){super.initializeObject(r,e,t,i),e.isMagneting=!1,e.magneticTargetX=0,e.magneticTargetY=0,e.magneticX=0,e.magneticY=0,e.setProperty("magnetic-lerp",.1),e.eventMagneticName=this.getObjectEventName(e,"magnetic:move"),e.setProperty("__next-magnetic-x",0),e.setProperty("__next-magnetic-y",0),e.setProperty("__needs-magnetic-update",!1)}onMouseMove(r){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],n=t.htmlElement.getBoundingClientRect(),s=n.left+n.width/2,o=n.top+n.height/2,a=r.clientX-s,l=r.clientY-o,c=Math.sqrt(a**2+l**2),d=t.getProperty("radius")??0,h=t.getProperty("strength")??0,p=this.tools.magneticPull.process({distance:c,radius:d,strength:h});t.magneticTargetX=a*p,t.magneticTargetY=l*p,p>0&&(t.isMagneting=!0)}}onFrame(r){for(let e=0;e<this.objects.length;e++){let t=this.objects[e];if(t.isMagneting){let i=t.magneticX,n=t.magneticY,s=t.getProperty("magnetic-lerp")??.1,o=t.magneticTargetX,a=t.magneticTargetY,l=this.tools.lerp.process({from:i,to:o,progress:s}),c=this.tools.lerp.process({from:n,to:a,progress:s});l>-.01&&l<.01&&(l=0,t.magneticX=t.magneticTargetX),c>-.01&&c<.01&&(c=0,t.magneticY=t.magneticTargetY),i+=l,n+=c,t.magneticX=i,t.magneticY=n,t.eventMagneticName&&this.events.emit(t.eventMagneticName,{x:i,y:n}),t.setProperty("__next-magnetic-x",i),t.setProperty("__next-magnetic-y",n),t.setProperty("__needs-magnetic-update",!0),t.magneticTargetX===i&&t.magneticTargetY===n&&(t.isMagneting=!1)}}}onMutate(){for(let r=0;r<this.objects.length;r++){let e=this.objects[r];if(!(e.getProperty("__needs-magnetic-update")===!0))continue;let i=e.getProperty("__next-magnetic-x")??e.magneticX,n=e.getProperty("__next-magnetic-y")??e.magneticY;this.applyToElementAndConnects(e,s=>{M.setVar(s,"--magnetic-x",i),M.setVar(s,"--magnetic-y",n)}),e.setProperty("__needs-magnetic-update",!1)}}};var Ce=class extends x{constructor(e){super(e);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Xe()&&(this.enabled=!1)}onObjectConnected(e){this.enabled&&(super.onObjectConnected(e),this.centers.attach(e),this.hover.track(e))}removeObject(e){if(!this.enabled)return super.removeObject(e);let t=this.objectMapOnPage.get(e);t&&(this.centers.detach(t),this.hover.untrack(t)),super.removeObject(e)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(e){this.enabled&&(super.onMouseMoveMeasure(e),this.refreshPointerState())}onScrollMeasure(e){this.enabled&&(super.onScrollMeasure(e),this.refreshPointerState())}getCursorTargets(e=!1){if(!this.enabled)return[];let t=this.hover.activeObjects();return this.nearOnly&&t.length?t:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:e?this.objectsOnPage:this.objects}refreshPointerState(e,t=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,s=e?[e]:this.getCursorTargets(t),o=!this.nearOnly&&this.maxDistanceMultiplier>0?Math.pow(this.data.viewport.windowWidth*this.maxDistanceMultiplier,2):null;for(let a of s){let{cx:l,cy:c}=this.centers.getCenter(a),d=i-l,h=n-c,p=d*d+h*h;if(this.nearOnly){if(p>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(o!==null&&p>o)continue;a.setProperty("dx",d),a.setProperty("dy",h),a.setProperty("dist",Math.sqrt(p))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,_.measure(()=>{this.refreshPointerState(),_.mutate(()=>{this.scrollUpdateScheduled=!1,M.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var pt=Math.PI*2,dr=180/Math.PI,Ut=u=>u<0?0:u>1?1:u,hr=(u,r)=>{let e=(r-u)%pt;return e>Math.PI&&(e-=pt),e<-Math.PI&&(e+=pt),u+e},pr={computeStep(u,r,e,t,i,n,s,o,a,l,c,d,h,p,b,m,g){let v=a;(m===1||e>t)&&(v=Math.atan2(r,u));let y=i>0?Math.min(e,i):e,f=s,S=o;if(p===1)f=v,S=y;else{let R=hr(s,v),C=Ut(n);f+=(R-f)*C,S+=(y-S)*C}let E=f*dr-90,T=b===1||Number.isNaN(l)||Math.abs(E-l)>d,D=b===1||Number.isNaN(c)||Math.abs(S-c)>h;g.angle=f,g.dist=S,g.tAngle=v,g.tDist=y,g.degRaw=E,g.cssDeg=Math.round(E*10)/10,g.cssDist=Math.round(S*10)/10,g.angleChanged=T?1:0,g.distChanged=D?1:0}},mr={bypassDeadzone:!0},gr={forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0},qt=new WeakMap,fr=u=>{let r=qt.get(u);return r||(r={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},qt.set(u,r)),r},mt=class extends Ce{constructor(e){super(e);this.stepResult={angle:0,dist:0,tAngle:0,tDist:0,degRaw:0,cssDeg:0,cssDist:0,angleChanged:0,distChanged:0};this.htmlKey="spotlight",this.cssProperties=[{name:"--spotlight-angle",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--spotlight-distance",syntax:"<number>",initialValue:"0",inherits:!0}],this.nearOnly=!1,this.useAllObjects=!1,this.maxDistanceMultiplier=1,this.attributesToMap.push({key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>Ut(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,i,n){super.initializeObject(e,t,i,n),t.setProperty("spotlight-angle-rad",0),t.setProperty("spotlight-distance",0),t.setProperty("spotlight-angle-rad-target",0),t.setProperty("spotlight-distance-target",0),_.measure(()=>{this.refreshPointerState(t,!0),_.mutate(()=>{M.run(()=>{this.updateSpotlightState(t,gr)})})})}onMutate(e){if(this.enabled){super.onMutate(e);let t=this.getCursorTargets(!1),i=t.length>0?t:this.getCursorTargets(!0);for(let n=0;n<i.length;n++){let s=i[n];this.updateSpotlightState(s)}}}onCursorScrollUpdate(){let e=this.getCursorTargets(!1),t=e.length>0?e:this.getCursorTargets(!0);for(let i=0;i<t.length;i++){let n=t[i];this.updateSpotlightState(n,mr)}}updateSpotlightState(e,t={}){let i=e.getProperty("dx"),n=e.getProperty("dy"),s=e.getProperty("dist");if(!Number.isFinite(i)||!Number.isFinite(n)||!Number.isFinite(s))return;let o=fr(e);pr.computeStep(i,n,s,e.getProperty("deadzone")??4,e.getProperty("dist-max")??0,e.getProperty("lerp")??.15,o.angle,o.dist,o.tAngle,o.prevDeg,o.prevDist,e.getProperty("angle-threshold")??.2,e.getProperty("distance-threshold")??.5,t.forceImmediate===!0?1:0,t.forceEmit===!0?1:0,t.bypassDeadzone===!0?1:0,this.stepResult),o.angle=this.stepResult.angle,o.dist=this.stepResult.dist,o.tAngle=this.stepResult.tAngle,o.tDist=this.stepResult.tDist,e.setProperty("spotlight-distance-target",o.tDist),e.setProperty("spotlight-angle-rad-target",o.tAngle),e.setProperty("spotlight-angle-rad",o.angle),e.setProperty("spotlight-distance",o.dist),(this.stepResult.angleChanged===1||this.stepResult.distChanged===1)&&(this.writeSpotlightVars(e,this.stepResult.cssDeg,this.stepResult.cssDist),o.prevDeg=this.stepResult.degRaw,o.prevDist=o.dist,this.events.emit(this.getObjectEventName(e,"spotlight:update"),{distance:this.stepResult.cssDist,angleDeg:this.stepResult.cssDeg}))}writeSpotlightVars(e,t,i){let n=()=>{this.applyToElementAndConnects(e,s=>{M.setVar(s,"--spotlight-angle",t),M.setVar(s,"--spotlight-distance",i)})};if(M.isOpen){n();return}M.run(n)}};var Yt="-aspect-ready";function br(u){if(!u)return!1;let r=u.toLowerCase();return!!(r.endsWith(".svg")||r.startsWith("data:image/svg"))}function Xt(u){let r=new DataView(u);return u.byteLength<28?{width:0,height:0}:r.getUint32(0)!==2303741511||r.getUint32(4)!==218765834?{width:0,height:0}:r.getUint32(8)!==13||r.getUint32(12)!==1229472850?{width:0,height:0}:{width:r.getUint32(16,!1),height:r.getUint32(20,!1)}}function Gt(u){let r=new DataView(u);if(r.getUint16(0)!==65496)return{width:0,height:0};let e=2;for(;e+9<u.byteLength;){let t=r.getUint16(e);if(e+=2,t===65498||t===65497)break;let i=r.getUint16(e);if(i<2||e+i>u.byteLength)break;if(t>=65472&&t<=65475||t>=65477&&t<=65479||t>=65481&&t<=65483||t>=65485&&t<=65487)return{height:r.getUint16(e+3),width:r.getUint16(e+5)};e+=i}return{width:0,height:0}}function Kt(u){let r=new DataView(u);if(u.byteLength<16)return{width:0,height:0};if(r.getUint32(0,!0)!==1179011410||r.getUint32(8,!0)!==1346520407)return{width:0,height:0};let e=12;for(;e+8<=u.byteLength;){let t=r.getUint32(e,!1),i=r.getUint32(e+4,!0),n=e+8;if(t===1448097880){let s=(r.getUint16(n+4,!0)|r.getUint8(n+6)<<16)+1,o=(r.getUint16(n+7,!0)|r.getUint8(n+9)<<16)+1;return{width:s,height:o}}if(t===1448097824&&n+10<=u.byteLength&&r.getUint8(n+3)===157&&r.getUint8(n+4)===1&&r.getUint8(n+5)===42){let s=r.getUint16(n+6,!0)&16383,o=r.getUint16(n+8,!0)&16383;return{width:s,height:o}}if(t===1448097868&&n+5<=u.byteLength&&r.getUint8(n)===47){let s=r.getUint8(n+1),o=r.getUint8(n+2),a=r.getUint8(n+3),l=r.getUint8(n+4),c=1+((o&63)<<8|s),d=1+((l&15)<<10|a<<2|(o&192)>>6);return{width:c,height:d}}e=n+i+(i&1)}return{width:0,height:0}}function Qt(u,r){let e=(r||"").toLowerCase();if(e.includes("png"))return Xt(u);if(e.includes("jpeg")||e.includes("jpg"))return Gt(u);if(e.includes("webp"))return Kt(u);let t=Xt(u);return t.width||(t=Gt(u),t.width)||(t=Kt(u),t.width)?t:{width:0,height:0}}async function vr(u,r,e){let t=await fetch(u,{mode:"cors",credentials:r?.credentials??"omit",referrerPolicy:r?.referrerPolicy,signal:r?.signal,cache:"default"});if(!t.ok||!t.body)throw new Error(`HTTP ${t.status}`);let i=t.headers.get("content-type"),n=t.body.getReader(),s=1048576,o=4096,a=new Uint8Array(s),l=0,c=0,d=[],h=null,p=!1;for(;;){let{done:g,value:v}=await n.read();if(g)break;if(!v)continue;let y=v.buffer.slice(v.byteOffset,v.byteOffset+v.byteLength);if(d.push(y),!h&&l<s){let f=Math.min(v.byteLength,s-l);if(f>0&&(a.set(v.subarray(0,f),l),l+=f),l-c>=o){let S=l===a.byteLength?a:a.slice(0,l),E=Qt(S.buffer,i);E.width&&E.height&&(h=E,!p&&e&&(e(h),p=!0)),c=l}}}if(!h){let g=await new Response(new Blob(d)).arrayBuffer(),v=Qt(g,i);v.width&&v.height&&(h=v,!p&&e&&(e(h),p=!0))}let b=new Blob(d,{type:i||"application/octet-stream"}),m=URL.createObjectURL(b);return{dims:h,blobUrl:m,contentType:i}}var gt=class extends x{constructor(e){super(e);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(t=>this.ensureState(t)),this.isStartLoaded=!0}onObjectConnected(e){let t=e.htmlElement;if(!(t instanceof HTMLImageElement))return;t.getAttribute("src")||t.setAttribute("src","data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1' viewBox='0 0 1 1'%3E%3C/svg%3E");let i=this.ensureState(t);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(t);let n=o=>{this.handleInView(t,i,!!o?.inView)};i.unsubscribe&&i.unsubscribe();let s=this.getObjectEventName(e,"object:inview");this.events.on(s,n),i.unsubscribe=()=>this.events.off(s,n),this.isStartLoaded&&(e.getProperty("is-inview")??!1)&&this.handleInView(t,i,!0)}onObjectDisconnected(e){let t=e.htmlElement;if(!(t instanceof HTMLImageElement))return;let i=this.imageStates.get(t);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(e){let t=this.imageStates.get(e);if(!t){let i=this.readSource(e);return t={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(e,t),e.classList.contains("lazyLoad")||e.classList.add("lazyLoad"),e.dataset&&!e.dataset.stringLazySrc&&i&&(e.dataset.stringLazySrc=i),t}return t.src||(t.src=this.readSource(e)),t}readSource(e){let t=this.tools.domAttribute.process({element:e,key:this.htmlKey,fallback:""});return typeof t=="string"?t:t==null?"":String(t)}handleInView(e,t,i){t.pendingActivation=i,i&&(t.aspectReady?this.maybeActivateImage(e,t):t.aspectLoading||this.prepareAspectRatio(e))}async prepareAspectRatio(e){let t=this.ensureState(e);if(!t.src||t.aspectLoading||t.aspectReady)return;if(br(t.src)){t.aspectReady=!0,t.allowSrcFallback=!0,this.maybeActivateImage(e,t);return}t.aspectLoading=!0,t.fetching=!0;let i=e.getAttribute("crossorigin"),n=e.getAttribute("referrerpolicy"),s=new AbortController;t.controller=s;try{let{blobUrl:o}=await vr(t.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:s.signal},a=>{a.width>0&&a.height>0&&!t.aspectReady&&(e.style.aspectRatio=`${a.width} / ${a.height}`,e.classList.add(Yt),t.width=a.width,t.height=a.height,t.aspectReady=!0)});t.blobUrl=o,!t.aspectReady&&t.width&&t.height&&(e.style.aspectRatio=`${t.width} / ${t.height}`,e.classList.add(Yt),t.aspectReady=!0)}catch{t.allowSrcFallback=!0,t.aspectReady=!0}finally{t.fetching=!1,t.aspectLoading=!1,this.maybeActivateImage(e,t)}}maybeActivateImage(e,t){!t.pendingActivation||t.contentReady||t.contentLoading||!t.aspectReady||!t.src||t.fetching&&!t.blobUrl||(t.blobUrl||t.allowSrcFallback)&&this.activateImage(e,t)}activateImage(e,t){t.contentLoading=!0,this.loadingCount++;let i=o=>{t.contentLoading&&(t.contentLoading=!1,t.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),o&&(t.contentReady=!0,e.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),s=()=>i(!1);e.addEventListener("load",n,{once:!0}),e.addEventListener("error",s,{once:!0}),e.decoding="async",e.loading=e.loading||"lazy",t.blobUrl?(e.removeAttribute("srcset"),e.removeAttribute("sizes"),e.src=t.blobUrl):e.src=t.src,e.complete&&e.naturalWidth>0&&e.naturalHeight>0&&(e.removeEventListener("load",n),e.removeEventListener("error",s),i(!0))}};var ft=class extends x{constructor(e){super(e);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var Ke=class extends x{constructor(r){super(r),this.htmlKey=""}canConnect(r){return r.keys[0]==null}};var ae=class{constructor(r){this.min=void 0;this.max=void 0;this.enable=!0;this.min=r?.min,this.max=r?.max,this.enable=r?.enable??!0}setEnable(r=!0){this.enable=r}setRange(r,e){this.min=r??void 0,this.max=e??void 0}get mediaQuery(){let r="screen";return this.min&&(r+=` and (min-width: ${this.min}px)`),this.max&&(r+=` and (max-width: ${this.max}px)`),r}},bt=class extends x{constructor(e){super(e);this.queries={0:new ae({max:359}),1:new ae({min:360,max:1023}),2:new ae({min:1024,max:1365}),3:new ae({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 e=this.settings.settings;e.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(e.mobile.min==null?null:e.mobile.min,e.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,e.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(e.tablet.min==null?null:e.tablet.min,e.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,e.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(e.laptop.min==null?null:e.laptop.min,e.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,e.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(e.desktop.min==null?null:e.desktop.min,e.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let e=this.matchMedias[0].matches&&this.queries[0].enable,t=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!=e&&this.events.emit("screen:mobile",e),this.isTabletMedia!=t&&this.events.emit("screen:tablet",t),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=e,this.isTabletMedia=t,this.isLaptopMedia=i,this.isDesktopMedia=n,document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach(o=>{let a=!1;o.hasAttribute("string-mobile")&&e&&(a=!0),o.hasAttribute("string-tablet")&&t&&(a=!0),o.hasAttribute("string-laptop")&&i&&(a=!0),o.hasAttribute("string-desktop")&&n&&(a=!0),a?o.style.display=null:o.style.display="none"})}};var vt=class extends x{constructor(r){super(r),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:e=>{let[t,i]=e,n=this.tools.originParser.process({value:t}),s=this.tools.originParser.process({value:i});return{x:n,y:s}}}]}onObjectConnected(r){super.onObjectConnected(r);let e=r.getProperty("anchor");e&&this.applyToElementAndConnects(r,t=>{t.style.transformOrigin=`${e.x} ${e.y}`})}};var yr=.05,Sr=.01,Zt=1,Mr=-1,Er=1,yt=class extends x{constructor(e){super(e);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=e=>{let t=-this.data.scroll.displacement*this.maxDisplacementValue*e.glide;e.eventGlideName&&this.events.emit(e.eventGlideName,t);let i=`translate3d(0, ${t}px, 0)`;e.setProperty("__next-glide-transform",i),e.setProperty("__needs-glide-transform-update",!0)};this.onUpdateDesktopEvent=()=>{for(let e=0;e<this.objects.length;e++)this.setupItem(this.objects[e])};this.onUpdateMobileEvent=()=>{};this.onUpdateEvent=this.onUpdateDesktopEvent;this.htmlKey="glide",this.cssProperties=[{name:"--glide",syntax:"<number>",initialValue:"0",inherits:!0}],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}]}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n),t.glide=t.getProperty("glide")??0,t.eventGlideName=this.getObjectEventName(t,"object:glide"),t.setProperty("__next-glide",0),t.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),t.setProperty("__needs-glide-var-update",!1),t.setProperty("__needs-glide-transform-update",!1)}calcExpanderFactor(e){let t=e?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=t?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,t||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}onResize(){if(window.innerWidth>1024)this.maxDisplacementValue=this.data.viewport.windowHeight*.1,this.onUpdateEvent=this.onUpdateDesktopEvent;else{this.onUpdateEvent=this.onUpdateMobileEvent,this.resetState();for(let e=0;e<this.objects.length;e++){let t=this.objects[e];t.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),t.setProperty("__needs-glide-transform-update",!0),t.setProperty("__next-glide",0),t.setProperty("__needs-glide-var-update",!0)}this.flushPendingGlideStyles()}}resetState(){this.displacement=0,this.acceleration=0,this.isInitialScroll=!0,this.velocityMultiplier=this.baseVelocityMultiplier}onScrollStart(){this.resetState()}onScrollStop(){this.resetState(),this.previousLerp=0,this.data.scroll.displacement=0;let e=0;for(let t=0;t<this.objects.length;t++){let i=this.objects[t];i.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),i.setProperty("__needs-glide-transform-update",!0),i.setProperty("__next-glide",e),i.setProperty("__needs-glide-var-update",!0)}this.flushPendingGlideStyles()}onFrame(e){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Zt,this.acceleration+yr),this.displacement=Math.max(Sr,Math.min(Zt,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Er,Math.max(Mr,this.data.scroll.lerped*this.displacement*this.acceleration));let t=this.data.scroll.displacement;for(let i=0;i<this.objects.length;i++){let n=this.objects[i];n.setProperty("__next-glide",t),n.setProperty("__needs-glide-var-update",!0)}this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}onMutate(){this.applyPendingGlideStyles()}applyPendingGlideStyles(){for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.getProperty("__needs-glide-var-update")===!0,n=t.getProperty("__needs-glide-transform-update")===!0;if(!(!i&&!n)){if(i){let s=t.getProperty("__next-glide")??this.data.scroll.displacement;this.applyVarToElement(t,"--glide",s),this.applyVarToConnects(t,"--glide",s),t.setProperty("__needs-glide-var-update",!1)}if(n){let s=t.getProperty("__next-glide-transform")??"translate3d(0, 0px, 0)";this.applyPropToElement(t,"transform",s),t.setProperty("__needs-glide-transform-update",!1)}}}}flushPendingGlideStyles(){if(M.isOpen){this.applyPendingGlideStyles();return}M.run(()=>{this.applyPendingGlideStyles()})}};var St=class extends x{constructor(e){super(e);this.hasInitializedCSS=!1;this.htmlKey="lerp",this.cssProperties=[{name:"--lerp",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[]}onObjectConnected(e){super.onObjectConnected(e),e.lerp=0,e.setProperty("lerp-applied",0),e.eventLerpName=this.getObjectEventName(e,"object:lerp")}onResize(){super.onResize(),!this.hasInitializedCSS&&this.objectsOnPage.length>0&&(this.hasInitializedCSS=!0,M.run(()=>{for(let e=0;e<this.objectsOnPage.length;e++)this.updateObjectLerp(this.objectsOnPage[e],!0)}))}onScrollStop(){for(let e=0;e<this.objects.length;e++)this.recomputeLerp(this.objects[e],0)}onFrame(e){let t=e.scroll.lerped;for(let i=0;i<this.objects.length;i++)this.recomputeLerp(this.objects[i],t)}recomputeLerp(e,t){e.lerp!==t&&(e.lerp=t,this.updateObjectLerp(e))}onMutate(){M.run(()=>{let e=this.objects.length;for(let t=0;t<e;t++)this.updateObjectLerp(this.objects[t])})}updateObjectLerp(e,t=!1){let i=e.lerp,n=e.getProperty("lerp-applied");if(!t&&n===i)return;e.setProperty("lerp-applied",i);let s=i?.toString()??"0";e.eventLerpName&&this.events.emit(e.eventLerpName,i),M.run(()=>{this.applyVarToElement(e,"--lerp",s),this.applyVarToConnects(e,"--lerp",s)})}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=n=>{n.style.removeProperty("--lerp")};t(e.htmlElement);let i=e.mirrorObjects;for(let n=0;n<i.length;n++)t(i[n].htmlElement)}};var Jt={computeRawProgress(u,r,e){if(e===0)return 0;let t=(u-r)/e;return t<=0?0:t>=1?1:t},computeRawProgressBatch(u,r,e,t,i){for(let n=0;n<i;n++){let s=e[n];if(s===0){t[n]=0;continue}let o=(u-r[n])/s;o<=0?t[n]=0:o>=1?t[n]=1:t[n]=o}}},Pe=class extends x{constructor(e){super(e);this.updateScheduled=!1;this.batchStarts=new Float64Array(0);this.batchDiffs=new Float64Array(0);this.batchOut=new Float64Array(0);this.htmlKey="progress",this.cssProperties=[{name:"--progress",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--progress-slice",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}initializeObject(e,t,i,n){super.initializeObject(e,t,i,n)}sanitizeRawProgress(e){if(!Number.isFinite(e)||e<=0)return 0;if(e>=1)return 1;let t=1e-4;return e>1-t?e=1:e<t&&(e=0),e}applyRawProgress(e,t){let i=this.sanitizeRawProgress(t);if(e.progressRaw===i)return;e.progressRaw=i;let s=e.getProperty("easing"),o=typeof s=="function"?s(i):i;e.progress=o}recomputeProgress(e){let t=e.getProperty("start-position")??e.startPosition,i=e.getProperty("difference-position")??e.differencePosition;e.startPosition=t,e.differencePosition=i;let n=Jt.computeRawProgress(this.data.scroll.transformedCurrent,t,i);this.applyRawProgress(e,n)}ensureBatchCapacity(e){this.batchStarts.length>=e||(this.batchStarts=new Float64Array(e),this.batchDiffs=new Float64Array(e),this.batchOut=new Float64Array(e))}calculatePositions(e,t){super.calculatePositions(e,t),e.startPosition=e.getProperty("start-position")??e.startPosition,e.differencePosition=e.getProperty("difference-position")??e.differencePosition,this.recomputeProgress(e)}onScroll(e){super.onScroll(e)}onObjectConnected(e){super.onObjectConnected(e)}onScrollMeasure(e){let t=this.objects.length;if(t!==0){this.ensureBatchCapacity(t);for(let i=0;i<t;i++){let n=this.objects[i],s=n.getProperty("start-position")??n.startPosition,o=n.getProperty("difference-position")??n.differencePosition;n.startPosition=s,n.differencePosition=o,this.batchStarts[i]=s,this.batchDiffs[i]=o}Jt.computeRawProgressBatch(this.data.scroll.transformedCurrent,this.batchStarts,this.batchDiffs,this.batchOut,t);for(let i=0;i<t;i++)this.applyRawProgress(this.objects[i],this.batchOut[i])}}onMutate(){M.run(()=>{let e=this.objects.length;for(let t=0;t<e;t++)this.updateObjectProgress(this.objects[t])})}updateObjectProgress(e){let t=e.progress;if(e.getProperty("progress-applied")===t)return;let n=e.getProperty("key");e.setProperty("progress-applied",t);let s=e.progressRaw??t,o=e.getProperty("easing");e.eventProgressName&&this.events.emit(e.eventProgressName,t),n&&this.applyVarToElement(e,n,t);for(let a=0;a<e.mirrorObjects.length;a++){let l=e.mirrorObjects[a],c=l.applyProgress(s,typeof o=="function"?o:void 0);l.setProperty("progress",c),n&&this.tools.styleTxn.setVar(l.htmlElement,n,c)}}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=e.getProperty("key");if(!t)return;let i=s=>{s.style.removeProperty(t)};i(e.htmlElement);let n=e.mirrorObjects;for(let s=0;s<n.length;s++)i(n[s].htmlElement)}};var Mt=class extends Pe{constructor(e){super(e);this.updateScheduledTransform=!1;this.calculateDesktopParallax=e=>{let t=e.progress,i=e.getProperty("parallax")??0,n=e.getProperty("parallax-position-start")??0,s=e.getProperty("parallax-position-end")??1,o=e.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=o*i*(a*n+t*a*s);return this.events.emit(this.getObjectEventName(e,"object:parallax"),l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=e=>(this.events.emit(this.getObjectEventName(e,"object:parallax"),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(e,t,i,n){super.initializeObject(e,t,i,n);let s=t.getProperty("parallax-bias")??0,o=Math.abs(t.getProperty("parallax")??.2);t.setProperty("parallax-sign",Math.sign(t.getProperty("parallax"))),t.setProperty("parallax",o),t.setProperty("parallax-position-start",-.5+.5*s),t.setProperty("parallax-position-end",.5+.5*(1-s));let a=this.data.viewport.windowHeight;t.setProperty("offset-top",o*a),t.setProperty("offset-bottom",o*a)}calculatePositions(e,t){super.calculatePositions(e,t),e.transformValue=this.calculateParallaxForObject(e)}onScroll(e){super.onScroll(e)}onResize(){let e=window.innerWidth>1024;this.calculateParallaxForObject=e?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(e){super.onScrollMeasure(e);for(let t=0;t<this.objects.length;t++){let i=this.objects[t];i.transformValue=this.calculateParallaxForObject(i)}}onMutate(){M.run(()=>{for(let e=0;e<this.objects.length;e++){let t=this.objects[e],i=t.transformValue;i&&(this.applyPropToElement(t,"transform",i.transform),this.applyPropToConnects(t,"transform",i.transform))}})}};var Qe=class{constructor(r,e,t,i){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=r,this.scrollbar=e,this.thumb=t,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentWidth,e=this.data.viewport.windowWidth,t=e/r*e;this.thumb.style.setProperty("--size",t+"px"),r<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentWidth,e=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*e+"px"}`)}mouseDownEvent(r){this.startY=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let e=r.clientY-this.startY,t=this.startScrollPosition+e/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=t,this.data.scroll.target=t,this.onScrollTo(t),this.updateThumb()}};var Ze=class{constructor(r,e,t,i){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=r,this.scrollbar=e,this.thumb=t,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentHeight,e=this.data.viewport.windowHeight,t=e/r*e;this.thumb.style.setProperty("--height",t+"px"),r<=e?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentHeight,e=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*e+"px"}`)}mouseDownEvent(r){this.startCoordinate=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let e=r.clientY-this.startCoordinate,t=this.startScrollPosition+e/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(t,i));this.data.scroll.current=n,this.data.scroll.target=n,this.onScrollTo(n),this.updateThumb()}};var Et=class extends x{constructor(e){super(e);this.isDragging=!1;this.scrollMode="smooth";this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this),this.requestScrollTo=t=>{this.events.emit("scrollTo",{position:t,immediate:!0})}}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(e){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}addCustomStyles(){let e=document.createElement("style");e.textContent=`
2
2
  ::-webkit-scrollbar {
3
3
  display: none;
4
4
  width: 0;
@@ -16,27 +16,13 @@ var Re=class{constructor(r=.1,e){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(e)}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 tt(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarStateVertical=new rt(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(e){this.isDragging=!0,this.scrollbarState.mouseDownEvent(e),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(e){this.isDragging&&this.scrollbarState.mouseMoveEvent(e)}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 ne={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function ei(p){if(!p||!Array.isArray(p.chars)||p.chars.length===0)return[];let r=p.chars[0].splitClass??[];if(r.length===0)return[];for(let e of p.chars){let t=e.splitClass??[];if(t.length!==r.length)return[];for(let i=0;i<t.length;i++)if(t[i]!==r[i])return[]}return r}function Lr(p,r,e){let t=document.createDocumentFragment(),i=0,n=_(r,"line")||_(r,"charLine")||_(r,"wordLine"),s=_(r,"char")||_(r,"charLine")||_(r,"charWord"),o=0;p.forEach(d=>o+=d.words.length),o--;let a=0;p.forEach(d=>d.words.forEach(h=>a+=h.chars.length));let l=p.length,c=o+1,u=new Map;return p.forEach((d,h)=>{let b=h===p.length-1,m=t,g=[];if(n&&(m=document.createElement("span"),m.setAttribute("aria-hidden","true"),m.classList.add("-s-line"),d.isBeforeElement&&m.classList.add(ne.BEFORE_ELEMENT),d.isAfterElement&&m.classList.add(ne.AFTER_ELEMENT),m.style.setProperty("--line-index",String(d.lineIndex)),m.style.setProperty("--word-total",String(d.words.length)),d.fitFontSize!==void 0&&m.style.setProperty("--fit-font-size",String(d.fitFontSize)),Xt(m,d.calculatedValues,r)),d.words.forEach((f,y)=>{n&&(o=d.words.length-1);let v=y===o;if(f.chars.length===1&&f.chars[0].token.type==="element"){let E=f.chars[0].token.node.cloneNode(!0);m.appendChild(E);return}let x=f.chars.map(E=>E.char).join("");x&&g.push(x);let P=_(r,"word")||_(r,"charWord")||_(r,"wordLine"),w=P?document.createElement("span"):m,L=ei(f);if(P&&(w.setAttribute("aria-hidden","true"),w.classList.add("-s-word"),f.isBeforeElement&&w.classList.add(ne.BEFORE_ELEMENT),f.isAfterElement&&w.classList.add(ne.AFTER_ELEMENT),w.style.setProperty("--word-index",String(f.wordIndexGlobal)),w.style.setProperty("--char-total",String(f.chars.length)),w.setAttribute("data-split-content",x),Xt(w,f.calculatedValues,r),L.length&&w.classList.add(...L)),s)f.chars.forEach((E,R)=>{if(E.char===" "||E.char===" ")return;let O=document.createElement("span");O.setAttribute("aria-hidden","true");let T=O;T.classList.add("-s-char"),E.isBeforeElement&&T.classList.add(ne.BEFORE_ELEMENT),E.isAfterElement&&T.classList.add(ne.AFTER_ELEMENT),T.textContent=E.char,T.setAttribute("data-split-content",E.char),T.style.setProperty("--char-index",String(i++));let F=f.chars[R+1];if(F){let A=e.getKerning(E.char,F.char);Math.abs(A)>.01&&(T.style.setProperty("--kerning",`${A.toFixed(2)}px`),T.style.marginRight="var(--kerning)")}Xt(T,E.calculatedValues,r);let I=E.splitClass??[];I.length&&!L.length&&T.classList.add(...I),w.appendChild(O)});else{let E=document.createTextNode(x);w.appendChild(E)}P&&m.appendChild(w),n?v?b||m.appendChild(document.createElement("br")):w.appendChild(document.createTextNode("\xA0")):v||w.appendChild(document.createTextNode("\xA0"))}),n){let f=g.join(" ");m.setAttribute("data-split-content",f),t.appendChild(m)}}),s&&u.set("--char-global-total",String(a)),(_(r,"word")||_(r,"charWord")||_(r,"wordLine"))&&u.set("--word-global-total",String(c)),n&&u.set("--line-global-total",String(l)),{fragment:t,extraProps:u}}function Xt(p,r,e){if(r)for(let t of r){if(!ti(t.type,t.align,e))continue;let i=ri(t.type,t.align);p.style.setProperty(i,String(t.value))}}function ti(p,r,e){let t=e[p]??[];return Array.isArray(t)&&t.some(i=>r.startsWith("random")?i.align.startsWith("random"):i.align===r)}function ri(p,r){let e=r.startsWith("random")?"random":r;return`--${p}-${e}`}function _(p,r){return Array.isArray(p[r])&&p[r].length>0}var Oe=0;function Or(p){Oe=0;let r=[],e=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),r.push(i)},t=(i,n)=>{if(i.nodeType===Node.ELEMENT_NODE){let s=i,o=s.tagName.toLowerCase();if(o==="split-class"){let a=(s.getAttribute("class")??"").split(/\s+/).filter(Boolean),l={...n||{},splitClass:[...n?.splitClass??[],...a]};s.childNodes.forEach(c=>t(c,l));return}if(o==="br"){e({type:"br",id:`br_${Oe++}`,node:s,tagName:"br"},n);return}e({type:"element",id:`el_${Oe++}`,node:s,tagName:o},n);return}if(i.nodeType===Node.TEXT_NODE){let s=i.nodeValue??"",o=`text_${Oe++}`;s.trim()?e({type:"text",id:o,node:i,content:s},n):e({type:"space",id:o,node:i,content:s},n);return}e({type:"other",id:`node_${Oe++}`,node:i},n)};return p.forEach(i=>t(i)),r}var it=class{constructor(r){this.font="";this.cache={kerning:new Map,charWidth:new Map};let e=document.createElement("canvas");this.ctx=e.getContext("2d"),this.setFontFromElement(r)}setFontFromElement(r){let e=window.getComputedStyle(r),t=`${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${e.fontSize}/${e.lineHeight} ${e.fontFamily}`;t!==this.font&&(this.font=t,this.ctx.font=this.font,this.cache.kerning.clear(),this.cache.charWidth.clear())}getCharWidth(r){if(this.cache.charWidth.has(r))return this.cache.charWidth.get(r);let e=this.ctx.measureText(r).width;return this.cache.charWidth.set(r,e),e}getKerning(r,e){let t=`${r}${e}`,i=`${this.font}|${t}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(t).width,s=this.getCharWidth(r)+this.getCharWidth(e),o=n-s;return this.cache.kerning.set(i,o),o}measureWord(r){let e=0;for(let t=0;t<r.length;t++){let i=r[t];if(e+=this.getCharWidth(i),t>0){let n=r[t-1];e+=this.getKerning(n,i)}}return e}};function ii(p){let r=[],e=[];for(let t of p)t.type==="br"?(e.length&&r.push(e),r.push([t]),e=[]):e.push(t);return e.length&&r.push(e),r}function Ir(p,r,e){let t=document.createElement("div"),i=window.getComputedStyle(r);t.style.position="absolute",t.style.visibility="hidden",t.style.pointerEvents="none",t.style.width=r.clientWidth+"px",t.style.padding=i.padding,t.style.font=i.font,t.style.letterSpacing=i.letterSpacing,t.style.lineHeight=i.lineHeight,t.style.fontVariant=i.fontVariant,t.style.fontStretch=i.fontStretch,t.style.wordBreak=i.wordBreak,t.style.wordWrap=i.wordWrap,t.style.whiteSpace=i.whiteSpace,t.style.textTransform=i.textTransform;let n=document.createElement("span");n.textContent="\xA0",t.appendChild(n);let s=n.getBoundingClientRect().width;t.removeChild(n),t.style.width=r.clientWidth+s+"px",t.style.boxSizing="border-box",r.appendChild(t);let o=[],a=ii(p),l=!1,c=!1,u=!1;for(let d of a){if(d.length===1&&d[0].type==="br"){o.push({token:d[0],rect:new DOMRect(0,0,0,0)});continue}if(d.length===0)continue;t.innerHTML="";let h=[],b=[];d.forEach(m=>{switch(m.type){case"text":{let g=m.content,f=/^\s/.test(g),y=/\s$/.test(g),v=g.trim().split(/\s+/).filter(S=>S.length>0);v.forEach((S,x)=>{let P=document.createElement("span");P.style.display="inline-block",P.textContent=S,t.appendChild(P),(x<v.length-1||y)&&t.appendChild(document.createTextNode(" ")),h.push(P),b.push({token:{type:"text",id:"",node:m.node,content:S,meta:{...m.meta||{},joinPrev:x===0?!f&&!c&&u:!1}},wordIndex:h.length-1,hadLeadingSpace:f,hadTrailingSpace:y})}),c=y,u=!0;break}case"element":{let g=m.node.cloneNode(!0),f=document.createElement("span");f.style.display="inline-block",f.appendChild(g),t.appendChild(f),h.push(f),b.push({token:m,wordIndex:h.length-1}),l=!0,u=!1,c=!1;break}case"space":c=!0;break;case"other":u=!1,c=!1;break}}),t.offsetHeight,b.forEach((m,g)=>{if(m.wordIndex!==void 0){let y=h[m.wordIndex].getBoundingClientRect(),v;if(m.token.type==="text"){let x=e.measureWord(m.token.content);v=new DOMRect(y.x,y.y,x,y.height)}else v=y;let S={token:m.token,rect:v,browserWidth:y.width};if(l&&m.token.type==="text"&&(l=!1,S.token.meta={...S.token.meta||{},isAfterElement:!0}),o.push(S),m.token.type==="element"){let x=o[o.length-2];x?.token.type==="text"&&(x.token.meta={...x.token.meta||{},isBeforeElement:!0})}}})}return r.removeChild(t),o}var kr=5;function Ar(p,r,e){let t=[],i=null,n=0,s=0,o=0,a=0;return p.forEach(l=>{let c=l.token,u=c.meta?.isBeforeElement??!1,d=c.meta?.isAfterElement??!1;if(c.type==="br"){i=null;return}if(c.type==="text"){let h=c.content,b=c.meta?.splitClass??[],m=!!c.meta?.joinPrev,g=[],f=0;for(let E=0;E<h.length;E++){let R=h[E],O=E>0?h[E-1]:null,T=e.getCharWidth(R),F=O?e.getKerning(O,R):0;f+=F;let I=new DOMRect(l.rect.left+f,l.rect.top,T,l.rect.height),A={char:R,rect:I,token:c,charIndexInWord:E,charIndexInLine:0,charIndexGlobal:s++};b.length&&(A.splitClass=b),g.push(A),f+=T}if(g.length>0){let E=g[g.length-1];u&&(E.isBeforeElement=!0),d&&(E.isAfterElement=!0)}let y=Math.round(l.rect.top),v=Math.round(n);if((!i||Math.abs(y-v)>kr)&&(n=y,i={words:[],rect:l.rect,lineIndex:t.length},a=0,t.push(i)),!i)return;let x=l.rect.left+(l.browserWidth??l.rect.width);if(m&&i.words.length>0){let E=i.words[i.words.length-1],R=i.words.reduce((T,F)=>T+F.chars.length,0),O=E.chars.length;g.forEach((T,F)=>{T.charIndexInLine=R+F,T.charIndexInWord=O+F}),E.chars.push(...g),E.rect=nt([E.rect,l.rect]),i.rect=nt(i.words.map(T=>T.rect)),a=Math.max(a,x),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),u&&(E.isBeforeElement=!0),d&&(E.isAfterElement=!0);return}let P=i.words.length,w=i.words.reduce((E,R)=>E+R.chars.length,0);g.forEach((E,R)=>E.charIndexInLine=w+R);let L={chars:g,rect:l.rect,wordIndexGlobal:o++,wordIndexInLine:P,isBeforeElement:u,isAfterElement:d};i.words.push(L),i.rect=nt(i.words.map(E=>E.rect)),a=Math.max(a,x),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),u&&(i.isBeforeElement=!0),d&&(i.isAfterElement=!0);return}if(c.type==="element"){let h=l.rect,b=Math.round(h.top),m=Math.round(n);if((!i||Math.abs(b-m)>kr)&&(n=b,i={words:[],rect:h,lineIndex:t.length},a=0,t.push(i)),!i)return;let f=i.words.length,y=i.words.reduce((x,P)=>x+P.chars.length,0),S={chars:[{char:"[E]",rect:h,token:c,charIndexInWord:0,charIndexInLine:y,charIndexGlobal:s++}],rect:h,wordIndexGlobal:o++,wordIndexInLine:f,isBeforeElement:!1,isAfterElement:!1};i.words.push(S),i.rect=nt(i.words.map(x=>x.rect)),a=Math.max(a,l.rect.left+(l.browserWidth??l.rect.width)),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width)}}),t}function nt(p){if(p.length===0)return new DOMRect(0,0,0,0);let r=Math.min(...p.map(n=>n.left)),e=Math.min(...p.map(n=>n.top)),t=Math.max(...p.map(n=>n.right)),i=Math.max(...p.map(n=>n.bottom));return new DOMRect(r,e,t-r,i-e)}var Kt=class extends C{constructor(r){super(r),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(r=>{this.onObjectConnected(r)})}onObjectConnected(r){let e=r.htmlElement;if(!e)return;let t=e.classList.contains("-splitted"),i=e.getAttribute("string-split-original");(!t||i===null)&&(i=this.escapeAttribute(e.innerHTML),e.setAttribute("string-split-original",i),e.classList.add("-splitted")),r.htmlElement.innerHTML=i;let n=e.getAttribute("string-split")??e.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:n}),{fragment:o,result:a,extraProps:l}=this.split(e,s);r.setProperty("nodes",o.childNodes),e.setAttribute("aria-label",i),e.innerHTML="",e.appendChild(a),l.forEach((u,d)=>{e.style.setProperty(d,u)});let c=e.getAttribute("string-split-restore-after");c&&!isNaN(Number(c))&&setTimeout(()=>{e.innerHTML=i,e.classList.add("-restored")},Number(c))}split(r,e){let t=new it(r),i=document.createDocumentFragment();r.childNodes.forEach(u=>i.appendChild(u.cloneNode(!0)));let n=Or(i.childNodes),s=Ir(n,r,t),o=Ar(s,r,t),a=e.fit?this.getFitContext(o,r):null,l=a?this.applyFit(o,e,a):new Map;this.applyCalculatedValues(o,e);let c=Lr(o,e,t);return l.forEach((u,d)=>c.extraProps.set(d,u)),a&&this.refineFitFontSize(r,c.fragment,c.extraProps,o,e,a),{fragment:i,result:c.fragment,extraProps:c.extraProps}}getFitContext(r,e){let t=window.getComputedStyle(e),i=parseFloat(t.fontSize);if(!i)return null;let n=e.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0);if(n<=0)return null;let s=0;for(let l of r){let c=l.fitWidth??l.rect.width;c>s&&(s=c)}if(s<=0)return null;let o=n;if(Math.abs(n-s)<2&&e.parentElement){let l=window.getComputedStyle(e.parentElement),c=e.parentElement.clientWidth-(parseFloat(l.paddingLeft)||0)-(parseFloat(l.paddingRight)||0);c>n&&(o=c)}let a=parseFloat(t.lineHeight)||0;return{currentFontSize:i,contentWidth:o,lineHeightPx:a}}applyFit(r,e,t){let i=new Map,{currentFontSize:n,contentWidth:s}=t,o=(e.line?.length??0)>0||(e.wordLine?.length??0)>0||(e.charLine?.length??0)>0,a=(e.char?.length??0)>0||(e.charLine?.length??0)>0||(e.charWord?.length??0)>0;if(o)for(let l of r){let c=l.fitWidth??l.rect.width;c>0&&(l.fitFontSize=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0))}else{let l=r.reduce((d,h)=>(h.fitWidth??h.rect.width)>(d.fitWidth??d.rect.width)?h:d,r[0]),c=l.fitWidth??l.rect.width,u=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0);i.set("--fit-font-size",String(Math.floor(u)))}return i}refineFitFontSize(r,e,t,i,n,s){let o=(n.line?.length??0)>0||(n.wordLine?.length??0)>0||(n.charLine?.length??0)>0,a=(n.char?.length??0)>0||(n.charLine?.length??0)>0||(n.charWord?.length??0)>0,l=r.innerHTML;try{if(r.innerHTML="",r.appendChild(e.cloneNode(!0)),o){let c=Array.from(r.querySelectorAll(".-s-line")),u=Array.from(e.querySelectorAll(".-s-line"));c.forEach((d,h)=>{let b=u[h];if(!b)return;let m=parseFloat(b.style.getPropertyValue("--fit-font-size"));if(!m)return;let g=this.solveRenderedFitFontSize(d,s.currentFontSize,m,s.contentWidth,a);g&&(i[h].fitFontSize=g,b.style.setProperty("--fit-font-size",String(Math.floor(g))))})}else{let c=parseFloat(t.get("--fit-font-size")??"");if(!c)return;let u=this.solveRenderedFitFontSize(r,s.currentFontSize,c,s.contentWidth,a);if(!u)return;let d=Math.floor(u);t.set("--fit-font-size",String(d));let{lineHeightPx:h,currentFontSize:b,contentWidth:m}=s;if(h>0&&b>0){let g=h*(d/b);g>0&&(t.set("--fit-scale-y",String(window.innerHeight/g)),t.set("--fit-aspect-ratio",String(m/g)))}}}finally{r.innerHTML=l}}solveRenderedFitFontSize(r,e,t,i,n){if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0)return null;let s=this.measureScopeAtFontSize(r,n,e);if(s<=0)return null;if(Math.abs(i-s)<.01)return e;let o=Math.abs(t-e)<.01?s:this.measureScopeAtFontSize(r,n,t);if(o<=0)return e*(i/s);let a=(o-s)/(t-e);if(!Number.isFinite(a)||Math.abs(a)<1e-4)return e*(i/s);let l=e+(i-s)/a;return!Number.isFinite(l)||l<=0?null:l}measureScopeAtFontSize(r,e,t){if(e){let s=Array.from(r.querySelectorAll(".-s-char")),o=s.map(l=>l.style.fontSize);s.forEach(l=>{l.style.fontSize=`${t}px`}),r.offsetWidth;let a=this.measureCharScopeWidth(r);return s.forEach((l,c)=>{l.style.fontSize=o[c]}),a}let i=r.style.fontSize;r.style.fontSize=`${t}px`,r.offsetWidth;let n=this.measureContentWidth(r);return r.style.fontSize=i,n}measureCharScopeWidth(r){let e=0;Array.from(r.querySelectorAll(".-s-char")).forEach(o=>{let a=o.getBoundingClientRect(),l=window.getComputedStyle(o);e+=a.width+(parseFloat(l.marginLeft)||0)+(parseFloat(l.marginRight)||0)});let i=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),n=i.nextNode();for(;n;){let o=n.parentElement,a=!!o?.closest(".-s-char"),l=!!o&&!o.classList.contains("-s-char")&&!o.classList.contains("-s-word")&&!o.classList.contains("-s-line")&&!o.querySelector(".-s-char, .-s-word, .-s-line");if(!a&&!l&&n.textContent?.length){let c=document.createRange();c.selectNodeContents(n),e+=c.getBoundingClientRect().width}n=i.nextNode()}return Array.from(r.querySelectorAll("*")).filter(o=>{let a=o;return!a.classList.contains("-s-char")&&!a.classList.contains("-s-word")&&!a.classList.contains("-s-line")&&!a.querySelector(".-s-char, .-s-word, .-s-line")}).forEach(o=>{e+=o.getBoundingClientRect().width}),e}measureContentWidth(r){if(!r.childNodes.length)return r.getBoundingClientRect().width;let e=document.createRange();return e.selectNodeContents(r),e.getBoundingClientRect().width}computeFitFontSize(r,e,t,i){let n=i!==void 0?t-i:0,s=t-n;return s<=0?r*(e/t):r*(e-n)/s}computeValue(r,e,t){if(r.align.startsWith("random")){let i=r.random?.min??0,n=r.random?.max??t-1;return Math.floor(Math.random()*(n-i+1))+i}switch(r.align){case"start":return e;case"end":return t-e-1;case"center":{let i=Math.floor((t-1)/2);return Math.abs(e-i)}default:return e}}applyCalculatedValues(r,e){let t=s=>s.words.reduce((o,a)=>o+a.chars.length,0),i=r.reduce((s,o)=>s+o.words.length,0),n=r.reduce((s,o)=>s+o.words.reduce((a,l)=>a+l.chars.length,0),0);r.forEach((s,o)=>{e.line&&(s.calculatedValues=e.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,o,r.length)}))),s.words.forEach(a=>{e.word&&(a.calculatedValues=e.word.map(c=>({type:"word",align:c.align,value:this.computeValue(c,a.wordIndexGlobal,i)}))),e.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...e.wordLine.map(c=>({type:"wordLine",align:c.align,value:this.computeValue(c,a.wordIndexInLine,s.words.length)}))));let l=t(s);a.chars.forEach(c=>{let u=[];e.char&&u.push(...e.char.map(d=>({type:"char",align:d.align,value:this.computeValue(d,c.charIndexGlobal,n)}))),e.charWord&&u.push(...e.charWord.map(d=>({type:"charWord",align:d.align,value:this.computeValue(d,c.charIndexInWord,a.chars.length)}))),e.charLine&&u.push(...e.charLine.map(d=>({type:"charLine",align:d.align,value:this.computeValue(d,c.charIndexInLine,l)}))),c.calculatedValues=u})})})}escapeAttribute(r){return r.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var Qt=class extends C{constructor(e){super(e);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(e){let t=Math.abs(e.scroll.displacement);this.value=t,this.history.push(t),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let e=this.context,t=this.canvas.width,i=this.canvas.height;e.clearRect(0,0,t,i),e.strokeStyle="red",e.lineWidth=2,e.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n*this.height;s===0?e.moveTo(o,a):e.lineTo(o,a)}),e.stroke()}initCanvas(){let e=document.createElement("canvas"),t=window.innerWidth*.5;this.height=window.innerHeight/15-20,e.width=t,e.height=this.height,Object.assign(e.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=e,this.context=e.getContext("2d"),document.body.appendChild(e)}setTarget(e){this.target=e}clear(){this.canvas.remove(),this.history=[]}};var K="data-fps",Zt=class extends C{constructor(e){super(e);this.displayElement=null;this.intervalId=0;this.frameCount=0;this.fpsElements=new Set;this.observer=null;this.lastFps=-1;this._type=2}onInit(){this.data.system.fpsTracker&&this.createDisplayElement(),this.events.on("tracker:fps:visible",this.onVisibilityChange.bind(this)),this.scanElements(),this.observeDOM(),this.intervalId=window.setInterval(()=>{this.updateFPS(this.frameCount),this.frameCount=0},1e3)}onFrame(e){this.frameCount++}destroy(){clearInterval(this.intervalId),this.observer?.disconnect(),this.removeDisplayElement(),this.fpsElements.clear()}onVisibilityChange(e){e?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}updateFPS(e){if(e===this.lastFps)return;this.lastFps=e;let t=String(e);for(let i of this.fpsElements)i.isConnected&&i.setAttribute(K,t);this.displayElement&&this.displayElement.setAttribute(K,t),this.events.emit("fps",e)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${K}]`).forEach(e=>{e!==this.displayElement&&this.fpsElements.add(e)})}observeDOM(){this.observer=new MutationObserver(e=>{let t=!1;for(let i of e){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;s.hasAttribute(K)&&(t=!0),s.querySelector(`[${K}]`)&&(t=!0)}for(let n of Array.from(i.removedNodes))n.nodeType===Node.ELEMENT_NODE&&this.fpsElements.delete(n)}t&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}createDisplayElement(){if(this.displayElement)return;let e=document.createElement("div");Object.assign(e.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"}),e.setAttribute(K,"0"),document.body.appendChild(e);let t="string-fps-tracker-style";if(!document.getElementById(t)){let i=document.createElement("style");i.id=t,i.innerHTML=`
19
+ `,document.head.appendChild(e)}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 Qe(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarStateVertical=new Ze(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(e){this.isDragging=!0,this.scrollbarState.mouseDownEvent(e),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(e){this.isDragging&&this.scrollbarState.mouseMoveEvent(e)}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 ie={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function xr(u){if(!u||!Array.isArray(u.chars)||u.chars.length===0)return[];let r=u.chars[0].splitClass??[];if(r.length===0)return[];for(let e of u.chars){let t=e.splitClass??[];if(t.length!==r.length)return[];for(let i=0;i<t.length;i++)if(t[i]!==r[i])return[]}return r}function wr(u){return u.chars[0]?.token?.meta?.wrappers??[]}function er(u,r,e){let t=document.createDocumentFragment(),i=0,n=B(r,"line")||B(r,"charLine")||B(r,"wordLine"),s=B(r,"char")||B(r,"charLine")||B(r,"charWord"),o=0;u.forEach(h=>o+=h.words.length),o--;let a=0;u.forEach(h=>h.words.forEach(p=>a+=p.chars.length));let l=u.length,c=o+1,d=new Map;return u.forEach((h,p)=>{let b=p===u.length-1,m=t,g=[];n&&(m=document.createElement("span"),m.setAttribute("aria-hidden","true"),m.classList.add("-s-line"),h.isBeforeElement&&m.classList.add(ie.BEFORE_ELEMENT),h.isAfterElement&&m.classList.add(ie.AFTER_ELEMENT),m.style.setProperty("--line-index",String(h.lineIndex)),m.style.setProperty("--word-total",String(h.words.length)),h.fitFontSize!==void 0&&m.style.setProperty("--fit-font-size",String(h.fitFontSize)),xt(m,h.calculatedValues,r));let v=[],y=m;if(h.words.forEach((f,S)=>{n&&(o=h.words.length-1);let E=S===o,T=wr(f),D=0;for(;D<v.length&&D<T.length&&v[D].info.id===T[D].id;)D++;for(;v.length>D;)v.pop();y=v.length>0?v[v.length-1].element:m;for(let w=D;w<T.length;w++){let A=T[w],F=document.createElement(A.tag);for(let[k,N]of A.attributes)F.setAttribute(k,N);y.appendChild(F),v.push({info:A,element:F}),y=F}if(f.chars.length===1&&f.chars[0].token.type==="element"){let w=f.chars[0].token.node.cloneNode(!0);y.appendChild(w);return}let C=f.chars.map(w=>w.char).join("");C&&g.push(C);let I=B(r,"word")||B(r,"charWord")||B(r,"wordLine"),O=I?document.createElement("span"):y,L=xr(f);if(I&&(O.setAttribute("aria-hidden","true"),O.classList.add("-s-word"),f.isBeforeElement&&O.classList.add(ie.BEFORE_ELEMENT),f.isAfterElement&&O.classList.add(ie.AFTER_ELEMENT),O.style.setProperty("--word-index",String(f.wordIndexGlobal)),O.style.setProperty("--char-total",String(f.chars.length)),O.setAttribute("data-split-content",C),xt(O,f.calculatedValues,r),L.length&&O.classList.add(...L)),s)f.chars.forEach((w,A)=>{if(w.char===" "||w.char===" ")return;let F=document.createElement("span");F.setAttribute("aria-hidden","true");let k=F;k.classList.add("-s-char"),w.isBeforeElement&&k.classList.add(ie.BEFORE_ELEMENT),w.isAfterElement&&k.classList.add(ie.AFTER_ELEMENT),k.textContent=w.char,k.setAttribute("data-split-content",w.char),k.style.setProperty("--char-index",String(i++));let N=f.chars[A+1];if(N){let $=e.getKerning(w.char,N.char);Math.abs($)>.01&&(k.style.setProperty("--kerning",`${$.toFixed(2)}px`),k.style.marginRight="var(--kerning)")}xt(k,w.calculatedValues,r);let V=w.splitClass??[];V.length&&!L.length&&k.classList.add(...V),O.appendChild(F)});else{let w=document.createTextNode(C);O.appendChild(w)}I&&y.appendChild(O);let H=h.words[S+1]?.noSpaceBefore;n?E?b||m.appendChild(document.createElement("br")):H||O.appendChild(document.createTextNode("\xA0")):!E&&!H&&O.appendChild(document.createTextNode("\xA0"))}),n){let f=g.join(" ");m.setAttribute("data-split-content",f),t.appendChild(m)}}),s&&d.set("--char-global-total",String(a)),(B(r,"word")||B(r,"charWord")||B(r,"wordLine"))&&d.set("--word-global-total",String(c)),n&&d.set("--line-global-total",String(l)),{fragment:t,extraProps:d}}function xt(u,r,e){if(r)for(let t of r){if(!Tr(t.type,t.align,e))continue;let i=Cr(t.type,t.align);u.style.setProperty(i,String(t.value))}}function Tr(u,r,e){let t=e[u]??[];return Array.isArray(t)&&t.some(i=>r.startsWith("random")?i.align.startsWith("random"):i.align===r)}function Cr(u,r){let e=r.startsWith("random")?"random":r;return`--${u}-${e}`}function B(u,r){return Array.isArray(u[r])&&u[r].length>0}var Pr=new Set(["img","video","audio","canvas","iframe","object","svg","input","textarea","select","button","area","base","col","embed","hr","link","meta","param","source","track","wbr","picture","table"]);function Lr(u){let r=[];for(let e=0;e<u.attributes.length;e++){let t=u.attributes[e];r.push([t.name,t.value])}return r}var le=0;function tr(u){le=0;let r=[],e=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),r.push(i)},t=(i,n)=>{if(i.nodeType===Node.ELEMENT_NODE){let s=i,o=s.tagName.toLowerCase();if(o==="split-class"){let a=(s.getAttribute("class")??"").split(/\s+/).filter(Boolean),l={...n||{},splitClass:[...n?.splitClass??[],...a]};s.childNodes.forEach(c=>t(c,l));return}if(o==="br"){e({type:"br",id:`br_${le++}`,node:s,tagName:"br"},n);return}if(!Pr.has(o)&&s.childNodes.length>0){let a={id:`wrapper_${le++}`,tag:o,attributes:Lr(s)},l=n?.wrappers??[],c={...n||{},wrappers:[...l,a]};s.childNodes.forEach(d=>t(d,c));return}e({type:"element",id:`el_${le++}`,node:s,tagName:o},n);return}if(i.nodeType===Node.TEXT_NODE){let s=i.nodeValue??"",o=`text_${le++}`;s.trim()?e({type:"text",id:o,node:i,content:s},n):e({type:"space",id:o,node:i,content:s},n);return}e({type:"other",id:`node_${le++}`,node:i},n)};return u.forEach(i=>t(i)),r}var Je=class{constructor(r){this.font="";this.cache={kerning:new Map,charWidth:new Map};let e=document.createElement("canvas");this.ctx=e.getContext("2d"),this.setFontFromElement(r)}setFontFromElement(r){let e=window.getComputedStyle(r),t=`${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${e.fontSize}/${e.lineHeight} ${e.fontFamily}`;t!==this.font&&(this.font=t,this.ctx.font=this.font,this.cache.kerning.clear(),this.cache.charWidth.clear())}getCharWidth(r){if(this.cache.charWidth.has(r))return this.cache.charWidth.get(r);let e=this.ctx.measureText(r).width;return this.cache.charWidth.set(r,e),e}getKerning(r,e){let t=`${r}${e}`,i=`${this.font}|${t}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(t).width,s=this.getCharWidth(r)+this.getCharWidth(e),o=n-s;return this.cache.kerning.set(i,o),o}measureWord(r){let e=0;for(let t=0;t<r.length;t++){let i=r[t];if(e+=this.getCharWidth(i),t>0){let n=r[t-1];e+=this.getKerning(n,i)}}return e}};function Or(u,r){return!u?.length&&!r?.length?!0:!u||!r||u.length!==r.length?!1:u.every((e,t)=>e.id===r[t].id)}function Ar(u){let r=[],e=[];for(let t of u)t.type==="br"?(e.length&&r.push(e),r.push([t]),e=[]):e.push(t);return e.length&&r.push(e),r}function rr(u,r,e){let t=document.createElement("div"),i=window.getComputedStyle(r);t.style.position="absolute",t.style.visibility="hidden",t.style.pointerEvents="none",t.style.width=r.clientWidth+"px",t.style.padding=i.padding,t.style.font=i.font,t.style.letterSpacing=i.letterSpacing,t.style.lineHeight=i.lineHeight,t.style.fontVariant=i.fontVariant,t.style.fontStretch=i.fontStretch,t.style.wordBreak=i.wordBreak,t.style.wordWrap=i.wordWrap,t.style.whiteSpace=i.whiteSpace,t.style.textTransform=i.textTransform;let n=document.createElement("span");n.textContent="\xA0",t.appendChild(n);let s=n.getBoundingClientRect().width;t.removeChild(n),t.style.width=r.clientWidth+s+"px",t.style.boxSizing="border-box",r.appendChild(t);let o=[],a=Ar(u),l=!1,c=!1,d=!1,h;for(let p of a){if(p.length===1&&p[0].type==="br"){o.push({token:p[0],rect:new DOMRect(0,0,0,0)});continue}if(p.length===0)continue;t.innerHTML="";let b=[],m=[];p.forEach(g=>{switch(g.type){case"text":{let v=g.content,y=/^\s/.test(v),f=/\s$/.test(v),S=g.meta?.wrappers??[],E=v.trim().split(/\s+/).filter(T=>T.length>0);E.forEach((T,D)=>{let R=document.createElement("span");if(R.style.display="inline-block",S.length>0){let O=R;for(let L of S){let H=document.createElement(L.tag);for(let[w,A]of L.attributes)H.setAttribute(w,A);O.appendChild(H),O=H}O.textContent=T}else R.textContent=T;t.appendChild(R),(D<E.length-1||f)&&t.appendChild(document.createTextNode(" "));let C=D===0&&!y&&!c&&d,I=D>0||Or(h,S);b.push(R),m.push({token:{type:"text",id:"",node:g.node,content:T,meta:{...g.meta||{},joinPrev:C&&I,noSpaceBefore:C&&!I}},wordIndex:b.length-1,hadLeadingSpace:y,hadTrailingSpace:f})}),c=f,d=!0,h=S;break}case"element":{let v=g.node.cloneNode(!0),y=document.createElement("span");y.style.display="inline-block",y.appendChild(v),t.appendChild(y),b.push(y),m.push({token:g,wordIndex:b.length-1}),l=!0,d=!1,c=!1;break}case"space":c=!0;break;case"other":d=!1,c=!1;break}}),t.offsetHeight,m.forEach((g,v)=>{if(g.wordIndex!==void 0){let f=b[g.wordIndex].getBoundingClientRect(),S;if(g.token.type==="text"){let T=e.measureWord(g.token.content);S=new DOMRect(f.x,f.y,T,f.height)}else S=f;let E={token:g.token,rect:S,browserWidth:f.width};if(l&&g.token.type==="text"&&(l=!1,E.token.meta={...E.token.meta||{},isAfterElement:!0}),o.push(E),g.token.type==="element"){let T=o[o.length-2];T?.token.type==="text"&&(T.token.meta={...T.token.meta||{},isBeforeElement:!0})}}})}return r.removeChild(t),o}var ir=5;function nr(u,r,e){let t=[],i=null,n=0,s=0,o=0,a=0;return u.forEach(l=>{let c=l.token,d=c.meta?.isBeforeElement??!1,h=c.meta?.isAfterElement??!1;if(c.type==="br"){i=null;return}if(c.type==="text"){let p=c.content,b=c.meta?.splitClass??[],m=!!c.meta?.joinPrev,g=[],v=0;for(let C=0;C<p.length;C++){let I=p[C],O=C>0?p[C-1]:null,L=e.getCharWidth(I),H=O?e.getKerning(O,I):0;v+=H;let w=new DOMRect(l.rect.left+v,l.rect.top,L,l.rect.height),A={char:I,rect:w,token:c,charIndexInWord:C,charIndexInLine:0,charIndexGlobal:s++};b.length&&(A.splitClass=b),g.push(A),v+=L}if(g.length>0){let C=g[g.length-1];d&&(C.isBeforeElement=!0),h&&(C.isAfterElement=!0)}let y=Math.round(l.rect.top),f=Math.round(n);if((!i||Math.abs(y-f)>ir)&&(n=y,i={words:[],rect:l.rect,lineIndex:t.length},a=0,t.push(i)),!i)return;let E=l.rect.left+(l.browserWidth??l.rect.width);if(m&&i.words.length>0){let C=i.words[i.words.length-1],I=i.words.reduce((L,H)=>L+H.chars.length,0),O=C.chars.length;g.forEach((L,H)=>{L.charIndexInLine=I+H,L.charIndexInWord=O+H}),C.chars.push(...g),C.rect=et([C.rect,l.rect]),i.rect=et(i.words.map(L=>L.rect)),a=Math.max(a,E),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),d&&(C.isBeforeElement=!0),h&&(C.isAfterElement=!0);return}let T=i.words.length,D=i.words.reduce((C,I)=>C+I.chars.length,0);g.forEach((C,I)=>C.charIndexInLine=D+I);let R={chars:g,rect:l.rect,wordIndexGlobal:o++,wordIndexInLine:T,isBeforeElement:d,isAfterElement:h,noSpaceBefore:!!c.meta?.noSpaceBefore};i.words.push(R),i.rect=et(i.words.map(C=>C.rect)),a=Math.max(a,E),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),d&&(i.isBeforeElement=!0),h&&(i.isAfterElement=!0);return}if(c.type==="element"){let p=l.rect,b=Math.round(p.top),m=Math.round(n);if((!i||Math.abs(b-m)>ir)&&(n=b,i={words:[],rect:p,lineIndex:t.length},a=0,t.push(i)),!i)return;let v=i.words.length,y=i.words.reduce((E,T)=>E+T.chars.length,0),S={chars:[{char:"[E]",rect:p,token:c,charIndexInWord:0,charIndexInLine:y,charIndexGlobal:s++}],rect:p,wordIndexGlobal:o++,wordIndexInLine:v,isBeforeElement:!1,isAfterElement:!1};i.words.push(S),i.rect=et(i.words.map(E=>E.rect)),a=Math.max(a,l.rect.left+(l.browserWidth??l.rect.width)),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width)}}),t}function et(u){if(u.length===0)return new DOMRect(0,0,0,0);let r=Math.min(...u.map(n=>n.left)),e=Math.min(...u.map(n=>n.top)),t=Math.max(...u.map(n=>n.right)),i=Math.max(...u.map(n=>n.bottom));return new DOMRect(r,e,t-r,i-e)}var wt=class extends x{constructor(r){super(r),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(r=>{this.onObjectConnected(r)})}onObjectConnected(r){let e=r.htmlElement;if(!e)return;let t=e.classList.contains("-splitted"),i=e.getAttribute("string-split-original");(!t||i===null)&&(i=this.escapeAttribute(e.innerHTML),e.setAttribute("string-split-original",i),e.classList.add("-splitted")),r.htmlElement.innerHTML=i;let n=e.getAttribute("string-split")??e.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:n}),{fragment:o,result:a,extraProps:l}=this.split(e,s);r.setProperty("nodes",o.childNodes),e.setAttribute("aria-label",i),e.innerHTML="",e.appendChild(a),l.forEach((d,h)=>{e.style.setProperty(h,d)});let c=e.getAttribute("string-split-restore-after");c&&!isNaN(Number(c))&&setTimeout(()=>{e.innerHTML=i,e.classList.add("-restored")},Number(c))}split(r,e){let t=new Je(r),i=document.createDocumentFragment();r.childNodes.forEach(d=>i.appendChild(d.cloneNode(!0)));let n=tr(i.childNodes),s=rr(n,r,t),o=nr(s,r,t),a=e.fit?this.getFitContext(o,r):null,l=a?this.applyFit(o,e,a):new Map;this.applyCalculatedValues(o,e);let c=er(o,e,t);return l.forEach((d,h)=>c.extraProps.set(h,d)),a&&this.refineFitFontSize(r,c.fragment,c.extraProps,o,e,a),{fragment:i,result:c.fragment,extraProps:c.extraProps}}getFitContext(r,e){let t=window.getComputedStyle(e),i=parseFloat(t.fontSize);if(!i)return null;let n=e.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0);if(n<=0)return null;let s=0;for(let l of r){let c=l.fitWidth??l.rect.width;c>s&&(s=c)}if(s<=0)return null;let o=n;if(Math.abs(n-s)<2&&e.parentElement){let l=window.getComputedStyle(e.parentElement),c=e.parentElement.clientWidth-(parseFloat(l.paddingLeft)||0)-(parseFloat(l.paddingRight)||0);c>n&&(o=c)}let a=parseFloat(t.lineHeight)||0;return{currentFontSize:i,contentWidth:o,lineHeightPx:a}}applyFit(r,e,t){let i=new Map,{currentFontSize:n,contentWidth:s}=t,o=(e.line?.length??0)>0||(e.wordLine?.length??0)>0||(e.charLine?.length??0)>0,a=(e.char?.length??0)>0||(e.charLine?.length??0)>0||(e.charWord?.length??0)>0;if(o)for(let l of r){let c=l.fitWidth??l.rect.width;c>0&&(l.fitFontSize=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0))}else{let l=r.reduce((h,p)=>(p.fitWidth??p.rect.width)>(h.fitWidth??h.rect.width)?p:h,r[0]),c=l.fitWidth??l.rect.width,d=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0);i.set("--fit-font-size",String(Math.floor(d)))}return i}refineFitFontSize(r,e,t,i,n,s){let o=(n.line?.length??0)>0||(n.wordLine?.length??0)>0||(n.charLine?.length??0)>0,a=(n.char?.length??0)>0||(n.charLine?.length??0)>0||(n.charWord?.length??0)>0,l=r.innerHTML;try{if(r.innerHTML="",r.appendChild(e.cloneNode(!0)),o){let c=Array.from(r.querySelectorAll(".-s-line")),d=Array.from(e.querySelectorAll(".-s-line"));c.forEach((h,p)=>{let b=d[p];if(!b)return;let m=parseFloat(b.style.getPropertyValue("--fit-font-size"));if(!m)return;let g=this.solveRenderedFitFontSize(h,s.currentFontSize,m,s.contentWidth,a);g&&(i[p].fitFontSize=g,b.style.setProperty("--fit-font-size",String(Math.floor(g))))})}else{let c=parseFloat(t.get("--fit-font-size")??"");if(!c)return;let d=this.solveRenderedFitFontSize(r,s.currentFontSize,c,s.contentWidth,a);if(!d)return;let h=Math.floor(d);t.set("--fit-font-size",String(h));let{lineHeightPx:p,currentFontSize:b,contentWidth:m}=s;if(p>0&&b>0){let g=p*(h/b);g>0&&(t.set("--fit-scale-y",String(window.innerHeight/g)),t.set("--fit-aspect-ratio",String(m/g)))}}}finally{r.innerHTML=l}}solveRenderedFitFontSize(r,e,t,i,n){if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0)return null;let s=this.measureScopeAtFontSize(r,n,e);if(s<=0)return null;if(Math.abs(i-s)<.01)return e;let o=Math.abs(t-e)<.01?s:this.measureScopeAtFontSize(r,n,t);if(o<=0)return e*(i/s);let a=(o-s)/(t-e);if(!Number.isFinite(a)||Math.abs(a)<1e-4)return e*(i/s);let l=e+(i-s)/a;return!Number.isFinite(l)||l<=0?null:l}measureScopeAtFontSize(r,e,t){if(e){let s=Array.from(r.querySelectorAll(".-s-char")),o=s.map(l=>l.style.fontSize);s.forEach(l=>{l.style.fontSize=`${t}px`}),r.offsetWidth;let a=this.measureCharScopeWidth(r);return s.forEach((l,c)=>{l.style.fontSize=o[c]}),a}let i=r.style.fontSize;r.style.fontSize=`${t}px`,r.offsetWidth;let n=this.measureContentWidth(r);return r.style.fontSize=i,n}measureCharScopeWidth(r){let e=0;Array.from(r.querySelectorAll(".-s-char")).forEach(o=>{let a=o.getBoundingClientRect(),l=window.getComputedStyle(o);e+=a.width+(parseFloat(l.marginLeft)||0)+(parseFloat(l.marginRight)||0)});let i=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),n=i.nextNode();for(;n;){let o=n.parentElement,a=!!o?.closest(".-s-char"),l=!!o&&!o.classList.contains("-s-char")&&!o.classList.contains("-s-word")&&!o.classList.contains("-s-line")&&!o.querySelector(".-s-char, .-s-word, .-s-line");if(!a&&!l&&n.textContent?.length){let c=document.createRange();c.selectNodeContents(n),e+=c.getBoundingClientRect().width}n=i.nextNode()}return Array.from(r.querySelectorAll("*")).filter(o=>{let a=o;return!a.classList.contains("-s-char")&&!a.classList.contains("-s-word")&&!a.classList.contains("-s-line")&&!a.querySelector(".-s-char, .-s-word, .-s-line")}).forEach(o=>{e+=o.getBoundingClientRect().width}),e}measureContentWidth(r){if(!r.childNodes.length)return r.getBoundingClientRect().width;let e=document.createRange();return e.selectNodeContents(r),e.getBoundingClientRect().width}computeFitFontSize(r,e,t,i){let n=i!==void 0?t-i:0,s=t-n;return s<=0?r*(e/t):r*(e-n)/s}computeValue(r,e,t){if(r.align.startsWith("random")){let i=r.random?.min??0,n=r.random?.max??t-1;return Math.floor(Math.random()*(n-i+1))+i}switch(r.align){case"start":return e;case"end":return t-e-1;case"center":{let i=Math.floor((t-1)/2);return Math.abs(e-i)}default:return e}}applyCalculatedValues(r,e){let t=s=>s.words.reduce((o,a)=>o+a.chars.length,0),i=r.reduce((s,o)=>s+o.words.length,0),n=r.reduce((s,o)=>s+o.words.reduce((a,l)=>a+l.chars.length,0),0);r.forEach((s,o)=>{e.line&&(s.calculatedValues=e.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,o,r.length)}))),s.words.forEach(a=>{e.word&&(a.calculatedValues=e.word.map(c=>({type:"word",align:c.align,value:this.computeValue(c,a.wordIndexGlobal,i)}))),e.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...e.wordLine.map(c=>({type:"wordLine",align:c.align,value:this.computeValue(c,a.wordIndexInLine,s.words.length)}))));let l=t(s);a.chars.forEach(c=>{let d=[];e.char&&d.push(...e.char.map(h=>({type:"char",align:h.align,value:this.computeValue(h,c.charIndexGlobal,n)}))),e.charWord&&d.push(...e.charWord.map(h=>({type:"charWord",align:h.align,value:this.computeValue(h,c.charIndexInWord,a.chars.length)}))),e.charLine&&d.push(...e.charLine.map(h=>({type:"charLine",align:h.align,value:this.computeValue(h,c.charIndexInLine,l)}))),c.calculatedValues=d})})})}escapeAttribute(r){return r.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var Tt=class extends x{constructor(e){super(e);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(e){let t=Math.abs(e.scroll.displacement);this.value=t,this.history.push(t),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let e=this.context,t=this.canvas.width,i=this.canvas.height;e.clearRect(0,0,t,i),e.strokeStyle="red",e.lineWidth=2,e.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n*this.height;s===0?e.moveTo(o,a):e.lineTo(o,a)}),e.stroke()}initCanvas(){let e=document.createElement("canvas"),t=window.innerWidth*.5;this.height=window.innerHeight/15-20,e.width=t,e.height=this.height,Object.assign(e.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=e,this.context=e.getContext("2d"),document.body.appendChild(e)}setTarget(e){this.target=e}clear(){this.canvas.remove(),this.history=[]}};var K="data-fps",Ct=class extends x{constructor(e){super(e);this.displayElement=null;this.intervalId=0;this.frameCount=0;this.fpsElements=new Set;this.observer=null;this.lastFps=-1;this._type=2}onInit(){this.data.system.fpsTracker&&this.createDisplayElement(),this.events.on("tracker:fps:visible",this.onVisibilityChange.bind(this)),this.scanElements(),this.observeDOM(),this.intervalId=window.setInterval(()=>{this.updateFPS(this.frameCount),this.frameCount=0},1e3)}onFrame(e){this.frameCount++}destroy(){clearInterval(this.intervalId),this.observer?.disconnect(),this.removeDisplayElement(),this.fpsElements.clear()}onVisibilityChange(e){e?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}updateFPS(e){if(e===this.lastFps)return;this.lastFps=e;let t=String(e);for(let i of this.fpsElements)i.isConnected&&i.setAttribute(K,t);this.displayElement&&this.displayElement.setAttribute(K,t),this.events.emit("fps",e)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${K}]`).forEach(e=>{e!==this.displayElement&&this.fpsElements.add(e)})}observeDOM(){this.observer=new MutationObserver(e=>{let t=!1;for(let i of e){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;s.hasAttribute(K)&&(t=!0),s.querySelector(`[${K}]`)&&(t=!0)}for(let n of Array.from(i.removedNodes))n.nodeType===Node.ELEMENT_NODE&&this.fpsElements.delete(n)}t&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}createDisplayElement(){if(this.displayElement)return;let e=document.createElement("div");Object.assign(e.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"}),e.setAttribute(K,"0"),document.body.appendChild(e);let t="string-fps-tracker-style";if(!document.getElementById(t)){let i=document.createElement("style");i.id=t,i.innerHTML=`
20
20
  [${K}]::before {
21
21
  content: 'FPS: ' attr(${K});
22
22
  }
23
- `,document.head.appendChild(i)}this.displayElement=e}};var Jt=class extends C{constructor(e){super(e);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(e){let t=Math.abs(e.scroll.displacement);this.currentValue=t,this.history.push(t),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let e=this.context,t=this.canvas.width,i=this.canvas.height;e.clearRect(0,0,t,i),e.strokeStyle="#007bff",e.lineWidth=2,e.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n/2;s===0?e.moveTo(o,a):e.lineTo(o,a)}),e.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(e){this.targetValue=e}clear(){this.canvas.remove(),this.history=[]}};var Q="data-val",Z="data-val-pct",J="data-dir",er=class extends C{constructor(e){super(e);this.displayElement=null;this.valElements=new Set;this.valPctElements=new Set;this.dirElements=new Set;this.observer=null;this.lastVal=-1;this.lastValPct=-1;this.lastDir="";this.previousCurrent=0;this.idleTimeout=null;this._type=2}onInit(){this.data.system.positionTracker&&this.createDisplayElement(),this.events.on("tracker:position:visible",this.onVisibilityChange.bind(this)),this.scanElements(),this.observeDOM()}onScroll(e){let t=e.scroll.current,i=e.scroll.target,n=e.viewport.contentHeight,s=e.viewport.windowHeight,o=Math.round(t),a=Math.max(1,n-s),l=Math.round(t/a*100),c;if(t!==i?c=t<i?"\u2193":"\u2191":t!==this.previousCurrent?c=t>this.previousCurrent?"\u2193":"\u2191":c=this.lastDir||"\u2022",this.previousCurrent=t,this.idleTimeout&&clearTimeout(this.idleTimeout),c!=="\u2022"&&(this.idleTimeout=setTimeout(()=>{this.setDirection("\u2022")},150)),o!==this.lastVal){this.lastVal=o;let u=String(o);for(let d of this.valElements)d.isConnected&&d.setAttribute(Q,u);this.displayElement&&this.displayElement.setAttribute(Q,u)}if(l!==this.lastValPct){this.lastValPct=l;let u=String(l);for(let d of this.valPctElements)d.isConnected&&d.setAttribute(Z,u);this.displayElement&&this.displayElement.setAttribute(Z,u)}this.setDirection(c),this.events.emit("scroll-position",{val:o,valPct:l,direction:c})}setDirection(e){if(e!==this.lastDir){this.lastDir=e;for(let t of this.dirElements)t.isConnected&&t.setAttribute(J,e);this.displayElement&&this.displayElement.setAttribute(J,e)}}destroy(){this.idleTimeout&&clearTimeout(this.idleTimeout),this.observer?.disconnect(),this.removeDisplayElement(),this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear()}onVisibilityChange(e){e?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}scanElements(){this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear(),document.querySelectorAll(`[${Q}]`).forEach(e=>{e!==this.displayElement&&this.valElements.add(e)}),document.querySelectorAll(`[${Z}]`).forEach(e=>{e!==this.displayElement&&this.valPctElements.add(e)}),document.querySelectorAll(`[${J}]`).forEach(e=>{e!==this.displayElement&&this.dirElements.add(e)})}observeDOM(){this.observer=new MutationObserver(e=>{let t=!1;for(let i of e){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;this.hasTrackingAttr(s)&&(t=!0),s.querySelector(`[${Q}],[${Z}],[${J}]`)&&(t=!0)}for(let n of Array.from(i.removedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;this.valElements.delete(s),this.valPctElements.delete(s),this.dirElements.delete(s)}}t&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}hasTrackingAttr(e){return e.hasAttribute(Q)||e.hasAttribute(Z)||e.hasAttribute(J)}createDisplayElement(){if(this.displayElement)return;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(J,"\u2022"),e.setAttribute(Q,"0"),e.setAttribute(Z,"0"),document.body.appendChild(e);let t="string-position-tracker-style";if(!document.getElementById(t)){let i=document.createElement("style");i.id=t,i.innerHTML=`
23
+ `,document.head.appendChild(i)}this.displayElement=e}};var Pt=class extends x{constructor(e){super(e);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(e){let t=Math.abs(e.scroll.displacement);this.currentValue=t,this.history.push(t),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let e=this.context,t=this.canvas.width,i=this.canvas.height;e.clearRect(0,0,t,i),e.strokeStyle="#007bff",e.lineWidth=2,e.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n/2;s===0?e.moveTo(o,a):e.lineTo(o,a)}),e.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(e){this.targetValue=e}clear(){this.canvas.remove(),this.history=[]}};var Q="data-val",Z="data-val-pct",J="data-dir",Lt=class extends x{constructor(e){super(e);this.displayElement=null;this.valElements=new Set;this.valPctElements=new Set;this.dirElements=new Set;this.observer=null;this.lastVal=-1;this.lastValPct=-1;this.lastDir="";this.previousCurrent=0;this.idleTimeout=null;this._type=2}onInit(){this.data.system.positionTracker&&this.createDisplayElement(),this.events.on("tracker:position:visible",this.onVisibilityChange.bind(this)),this.scanElements(),this.observeDOM()}onScroll(e){let t=e.scroll.current,i=e.scroll.target,n=e.viewport.contentHeight,s=e.viewport.windowHeight,o=Math.round(t),a=Math.max(1,n-s),l=Math.round(t/a*100),c;if(t!==i?c=t<i?"\u2193":"\u2191":t!==this.previousCurrent?c=t>this.previousCurrent?"\u2193":"\u2191":c=this.lastDir||"\u2022",this.previousCurrent=t,this.idleTimeout&&clearTimeout(this.idleTimeout),c!=="\u2022"&&(this.idleTimeout=setTimeout(()=>{this.setDirection("\u2022")},150)),o!==this.lastVal){this.lastVal=o;let d=String(o);for(let h of this.valElements)h.isConnected&&h.setAttribute(Q,d);this.displayElement&&this.displayElement.setAttribute(Q,d)}if(l!==this.lastValPct){this.lastValPct=l;let d=String(l);for(let h of this.valPctElements)h.isConnected&&h.setAttribute(Z,d);this.displayElement&&this.displayElement.setAttribute(Z,d)}this.setDirection(c),this.events.emit("scroll-position",{val:o,valPct:l,direction:c})}setDirection(e){if(e!==this.lastDir){this.lastDir=e;for(let t of this.dirElements)t.isConnected&&t.setAttribute(J,e);this.displayElement&&this.displayElement.setAttribute(J,e)}}destroy(){this.idleTimeout&&clearTimeout(this.idleTimeout),this.observer?.disconnect(),this.removeDisplayElement(),this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear()}onVisibilityChange(e){e?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}scanElements(){this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear(),document.querySelectorAll(`[${Q}]`).forEach(e=>{e!==this.displayElement&&this.valElements.add(e)}),document.querySelectorAll(`[${Z}]`).forEach(e=>{e!==this.displayElement&&this.valPctElements.add(e)}),document.querySelectorAll(`[${J}]`).forEach(e=>{e!==this.displayElement&&this.dirElements.add(e)})}observeDOM(){this.observer=new MutationObserver(e=>{let t=!1;for(let i of e){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;this.hasTrackingAttr(s)&&(t=!0),s.querySelector(`[${Q}],[${Z}],[${J}]`)&&(t=!0)}for(let n of Array.from(i.removedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;this.valElements.delete(s),this.valPctElements.delete(s),this.dirElements.delete(s)}}t&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}hasTrackingAttr(e){return e.hasAttribute(Q)||e.hasAttribute(Z)||e.hasAttribute(J)}createDisplayElement(){if(this.displayElement)return;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(J,"\u2022"),e.setAttribute(Q,"0"),e.setAttribute(Z,"0"),document.body.appendChild(e);let t="string-position-tracker-style";if(!document.getElementById(t)){let i=document.createElement("style");i.id=t,i.innerHTML=`
24
24
  [${J}][${Q}][${Z}]::before {
25
25
  content: attr(${J}) ' | ' attr(${Q}) 'px (' attr(${Z}) '%)';
26
26
  }
27
- `,document.head.appendChild(i)}this.displayElement=e}};function Rr(p,r){let e=null;return function(...t){let i=this;e&&clearTimeout(e),e=setTimeout(()=>{p.apply(i,t),e=null},r)}}var st=class{constructor(){this.fps=0;this.isAnimationStarted=!1;this.fpsInterval=0;this.then=0;this.requestAnimationId=0;this.onFrameCallback=r=>{};this.animate=()=>{};this.onVisibilityChangeBind=this.onVisibilityChange.bind(this)}onVisibilityChange(){document.hidden?(this.stop(),this.isAnimationStarted=!1):this.start(this.fps)}start(r){this.fps=r,!this.isAnimationStarted&&(this.fpsInterval=1e3/r,this.then=performance.now(),this.isAnimationStarted=!0,r===0?this.animate=()=>{let e=performance.now();this.requestAnimationId=requestAnimationFrame(this.animate),this.onFrameCallback(e)}:this.animate=()=>{let e=performance.now(),t=e-this.then;t>this.fpsInterval&&(this.then=e-t%this.fpsInterval,this.onFrameCallback(e)),this.requestAnimationId=requestAnimationFrame(this.animate)},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(r){this.onFrameCallback=r}destructor(){this.stop()}};var tr=class extends C{constructor(r){super(r),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(r){r.setProperty("onEnterEvent",this.onEnterObject.bind(this)),r.events.on("enter",r.getProperty("onEnterEvent")),r.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),r.events.on("leave",r.getProperty("onLeaveEvent"));let e=r.htmlElement,t=this.tools.domAttribute.process({element:e,key:"string-started",fallback:null})!==null;e.tagName.toLowerCase()==="video"&&!t&&(e.setAttribute("string-started",""),e.muted=!0,e.setAttribute("muted","muted"),e.setAttribute("playsinline",""),e.setAttribute("loop",""),e.setAttribute("autoplay",""),e.src=r.getProperty("src"),e.load(),e.addEventListener("canplay",()=>{}))}onEnterObject(r){let e=r.htmlElement;this.tryPlay(e)}onLeaveObject(r){r.htmlElement.pause()}tryPlay(r){r.play().catch(e=>console.warn("[StringVideoAutoplay] Autoplay failed:",e))}};var rr=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(rr||{}),Dr={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var ot=class ot extends C{constructor(e){super(e);this.activeStep=new Map;this.leavingStep=new Map;this.transitions=new Map;this.elementIndex=new Map;this.triggerElements=new Map;this.globalSettings=new Map;this.stateRegistered=new Set;this.lastEnteredStep=new Map;this.initialized=!1;this.onTriggerClick=e=>{let t=this.triggerElements.get(e.currentTarget);if(!t)return;let i=this.activeStep.get(t.slider)??0,n=this.getMaxStep(t.slider),s,o;if(t.step==="next"){if(s=i+1,o=1,!this.elementIndex.has(`${t.slider}[${s}]`))if(t.loop&&n>=0)s=0;else return}else if(t.step==="prev"){if(s=i-1,o=-1,s<0)if(t.loop&&n>=0)s=n;else return;if(!this.elementIndex.has(`${t.slider}[${s}]`))return}else{if(s=t.step,i===s)return;o=s>i?1:-1}this.startTransition(t.slider,s,o)};this.htmlKey="sequence",this.defaultDuration=this.settings["sequence-duration"]??600,this.attributesToMap=[...this.attributesToMap,{key:"sequence",type:"string",fallback:""},{key:"sequence-trigger",type:"string",fallback:""},{key:"entering-easing",type:"string",fallback:""},{key:"leaving-easing",type:"string",fallback:""},{key:"entering-duration",type:"string",fallback:""},{key:"leaving-duration",type:"string",fallback:""},{key:"sequence-duration",type:"string",fallback:""},{key:"active-step",type:"string",fallback:""}]}onInit(){super.onInit(),this.events.on("sequence",this.onSequenceEvent.bind(this)),this.scanStandaloneTriggers()}scanStandaloneTriggers(){let e=document.querySelectorAll("[string-sequence-trigger]:not([string-inited])");for(let t of Array.from(e)){let i=t.getAttribute("string-sequence-trigger"),n=i?this.parseTriggerKey(i):null;n&&(this.triggerElements.set(t,n),t.addEventListener("click",this.onTriggerClick))}}parseGlobalSettingsFromObject(e){let t=n=>e.getProperty(n),i=t("sequence-duration");this.tryParseGlobalSetting(i,"enteringDuration"),this.tryParseGlobalSetting(i,"leavingDuration"),this.tryParseGlobalSetting(t("entering-duration"),"enteringDuration"),this.tryParseGlobalSetting(t("leaving-duration"),"leavingDuration"),this.tryParseGlobalSetting(t("entering-easing"),"enteringEasing"),this.tryParseGlobalSetting(t("leaving-easing"),"leavingEasing"),this.tryParseGlobalSetting(t("active-step"),"activeStep")}tryParseGlobalSetting(e,t){if(!e)return;let i=e.match(/^(.+)\[(.+)\]$/);if(!i)return;let[,n,s]=i,o=this.globalSettings.get(n)??{};this.globalSettings.set(n,o),o[t]=t==="enteringEasing"||t==="leavingEasing"?s:parseFloat(s),this.applyGlobalSettingsToExistingObjects(n)}applyGlobalSettingsToExistingObjects(e){let t=this.globalSettings.get(e);if(t){for(let[i,n]of this.elementIndex)if(this.parseSequenceKey(i)?.slider===e){t.enteringDuration!==void 0&&(n.enteringDuration=t.enteringDuration),t.leavingDuration!==void 0&&(n.leavingDuration=t.leavingDuration);for(let o of n.objects)this.resolveEasings(o,i)}}}initializeSliders(){let e=new Set;for(let t of this.elementIndex.keys()){let i=this.parseSequenceKey(t);i&&e.add(i.slider)}for(let t of e){if(this.activeStep.has(t))continue;let n=this.globalSettings.get(t)?.activeStep??0;this.elementIndex.has(`${t}[${n}]`)||(n=0),this.switchInstant(t,n,1)}}tryApplyPendingActiveStep(e){if(this.activeStep.has(e))return;let t=this.globalSettings.get(e)?.activeStep;t!==void 0&&this.elementIndex.has(`${e}[${t}]`)&&this.switchInstant(e,t,1)}canConnect(e){return e.keys.includes("sequence")||e.keys.includes("sequence-trigger")}onObjectConnected(e){super.onObjectConnected(e),this.parseGlobalSettingsFromObject(e);let t=e.getProperty("sequence"),i=e.getProperty("sequence-trigger");if(!t&&i){let n=this.parseTriggerKey(i);n&&typeof n.step=="number"&&(t=`${n.slider}[${n.step}]`,e.setProperty("sequence",t))}if(t){let n=this.parseSequenceKey(t);if(n){this.ensureStateEventRegistered(n.slider);let s=this.elementIndex.get(t);if(!s){let{enteringDuration:a,leavingDuration:l}=this.resolveDurations(e,t);s={objects:[],enteringDuration:a,leavingDuration:l},this.elementIndex.set(t,s)}s.objects.push(e),this.resolveEasings(e,t);let o=this.activeStep.get(n.slider);this.setState(e,o===n.step?"-active":"-disabled",o===n.step?1:0,1),this.tryApplyPendingActiveStep(n.slider)}}if(i){let n=this.parseTriggerKey(i);n&&(this.triggerElements.set(e.htmlElement,n),e.htmlElement.addEventListener("click",this.onTriggerClick))}}ensureStateEventRegistered(e){this.stateRegistered.has(e)||(this.stateRegistered.add(e),this.events.registerStateEvent?.(`sequence:active:${e}`))}parseTriggerKey(e){let t=e.match(/^(.+)\[(next|prev|\d+)(\|loop)?\]$/);if(!t)return null;let i=t[2]==="next"||t[2]==="prev"?t[2]:parseInt(t[2],10);return{slider:t[1],step:i,loop:t[3]==="|loop"}}getMaxStep(e){let t=-1;for(let i of this.elementIndex.keys()){let n=this.parseSequenceKey(i);n?.slider===e&&n.step>t&&(t=n.step)}return t}resolveDuration(e,t,i,n){let s=e.getProperty(n),o=e.getProperty("sequence-duration"),a=this.globalSettings.get(t)?.[i];if(s&&!s.includes("[")){let l=parseFloat(s);if(!isNaN(l))return l}if(o&&!o.includes("[")){let l=parseFloat(o);if(!isNaN(l))return l}return a??this.defaultDuration}resolveDurations(e,t){let i=this.parseSequenceKey(t)?.slider??"";return{enteringDuration:this.resolveDuration(e,i,"enteringDuration","entering-duration"),leavingDuration:this.resolveDuration(e,i,"leavingDuration","leaving-duration")}}resolveEasing(e,t,i,n){let s=e.getProperty(n);(!s||typeof s=="string"&&s.includes("["))&&(s=this.globalSettings.get(t)?.[i]??this.settings.easing??"ease-out"),typeof s=="string"&&e.setProperty(n,this.tools.easingFunction.process({easing:s}))}resolveEasings(e,t){let i=this.parseSequenceKey(t)?.slider;i&&(this.resolveEasing(e,i,"enteringEasing","entering-easing"),this.resolveEasing(e,i,"leavingEasing","leaving-easing"))}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=e.getProperty("sequence");if(t){let i=this.elementIndex.get(t);if(i){let n=i.objects.indexOf(e);n!==-1&&i.objects.splice(n,1),i.objects.length||this.elementIndex.delete(t)}}this.triggerElements.has(e.htmlElement)&&(e.htmlElement.removeEventListener("click",this.onTriggerClick),this.triggerElements.delete(e.htmlElement))}parseSequenceKey(e){let t=e.match(/^(.+)\[(\d+)\]$/);return t?{slider:t[1],step:parseInt(t[2],10)}:null}onSequenceEvent(e){let{slider:t,step:i,transitionProgress:n,direction:s=1,duration:o,instant:a}=e;this.activeStep.get(t)===i&&n===void 0||(n!==void 0?this.handleScrub(t,i,n,s):a?this.switchInstant(t,i,s):this.startTransition(t,i,s,o))}startTransition(e,t,i,n){let s=this.activeStep.get(e),o=this.leavingStep.get(e);this.ensureStateEventRegistered(e),o!==void 0&&o!==s&&this.setStepState(e,o,"-disabled",0,i);let a=this.elementIndex.get(`${e}[${t}]`),l=s!==void 0?this.elementIndex.get(`${e}[${s}]`):null;s!==void 0&&this.leavingStep.set(e,s),this.activeStep.set(e,t),this.emitActiveState(e,t);let c={fromStep:s??t,toStep:t,direction:i,startTime:this.data.time.now,enteringDuration:n??a?.enteringDuration??this.defaultDuration,leavingDuration:n??l?.leavingDuration??this.defaultDuration};this.transitions.set(e,c),this.emitTransitionStart(e,c)}handleScrub(e,t,i,n){this.transitions.delete(e);let s=this.activeStep.get(e);if(s!==t){let a=this.leavingStep.get(e);a!==void 0&&this.setStepState(e,a,"-disabled",0,n),s!==void 0&&this.leavingStep.set(e,s),this.activeStep.set(e,t),this.emitActiveState(e,t)}let o=this.leavingStep.get(e)??s??t;this.applyProgress(e,o,t,i,i,n)}switchInstant(e,t,i){this.transitions.delete(e);let n=this.activeStep.get(e),s=this.leavingStep.get(e);s!==void 0&&this.setStepState(e,s,"-disabled",0,i),n!==void 0&&n!==t&&this.setStepState(e,n,"-disabled",0,i),this.activeStep.set(e,t),this.leavingStep.delete(e),this.setStepState(e,t,"-active",1,i),this.emitActiveState(e,t),s!==void 0&&s!==t?this.emitStepLeave(e,s,i,!0):n!==void 0&&n!==t&&this.emitStepLeave(e,n,i,!0),this.emitStepEnter(e,t,i,!0);let o={fromStep:n??t,toStep:t,direction:i,startTime:this.data.time.now,enteringDuration:0,leavingDuration:0};this.emitTransitionStart(e,o),this.emitTransitionEnd(e,t,n??t,i,!0)}applyProgress(e,t,i,n,s,o){let a=this.activeStep.get(e),l=this.leavingStep.get(e);this.setStepState(e,a,n>=1?"-active":"-entering",n,o),l!==void 0&&l!==a&&(s>=1?(this.setStepState(e,l,"-disabled",0,o),this.leavingStep.delete(e),this.emitStepLeave(e,l,o,!1)):this.setStepState(e,l,"-leaving",s,o)),this.emitTransitionProgress(e,t,i,n,s,o),n>=1&&this.emitStepEnter(e,a,o,!1)}setStepState(e,t,i,n,s){let o=this.elementIndex.get(`${e}[${t}]`);if(o)for(let a of o.objects)this.setState(a,i,n,s)}setState(e,t,i,n){let s=e.htmlElement,o=e.getProperty("_state"),a=e.getProperty("_direction"),l=e.getProperty(t==="-leaving"?"leaving-easing":"entering-easing"),c=typeof l=="function"?l(i):i;o!==t&&(s.classList.remove(...ot.ALL_STATES),s.classList.add(t),e.setProperty("_state",t)),a!==n&&(e.setProperty("_direction",n),M.run(()=>M.setVars(s,{[Dr.DIRECTION]:n.toString()})))}onFrame(e){super.onFrame(e),this.initialized||(this.initialized=!0,this.initializeSliders());for(let[t,i]of this.transitions){let n=e.time.now-i.startTime,s=Math.min(1,n/i.enteringDuration),o=Math.min(1,n/i.leavingDuration);this.applyProgress(t,i.fromStep,i.toStep,s,o,i.direction),s>=1&&o>=1&&(this.emitTransitionEnd(t,i.toStep,i.fromStep,i.direction,!1),this.transitions.delete(t))}}emitTransitionStart(e,t){let i={slider:e,from:t.fromStep,to:t.toStep,direction:t.direction,enteringDuration:t.enteringDuration,leavingDuration:t.leavingDuration,startedAt:t.startTime};this.events.emit("sequence:transition:start",i),this.events.emit(`sequence:transition:start:${e}`,i)}emitTransitionProgress(e,t,i,n,s,o){let a={slider:e,from:t,to:i,entering:n,leaving:s,direction:o};this.events.emit("sequence:transition:progress",a),this.events.emit(`sequence:transition:progress:${e}`,a)}emitTransitionEnd(e,t,i,n,s){let o={slider:e,from:i,to:t,direction:n,instant:s};this.events.emit("sequence:transition:end",o),this.events.emit(`sequence:transition:end:${e}`,o)}emitStepEnter(e,t,i,n){if(!n&&this.lastEnteredStep.get(e)===t)return;this.lastEnteredStep.set(e,t);let s={slider:e,step:t,direction:i,instant:n};this.events.emit("sequence:step:enter",s),this.events.emit(`sequence:step:enter:${e}`,s)}emitStepLeave(e,t,i,n){if(t==null)return;let s={slider:e,step:t,direction:i,instant:n};this.events.emit("sequence:step:leave",s),this.events.emit(`sequence:step:leave:${e}`,s)}emitActiveState(e,t){let i={slider:e,step:t};this.events.emit("sequence:active",i),this.events.emit(`sequence:active:${e}`,i)}};ot.ALL_STATES=Object.values(rr);var ir=ot;var ee=class ee extends C{constructor(r){super(r),this.htmlKey="form"}initializeObject(r,e,t,i){super.initializeObject(r,e,t,i);let n=e.getProperty("form-events")??[];n.forEach(c=>{c.eventElement.removeEventListener(c.eventType,c.eventCallback)}),n.length=0,e.setProperty("form-events",n),super.onObjectConnected(e);let s=e.htmlElement,o=[],a={};this.getInteractiveFields(s).forEach((c,u)=>this.registerField(c,s,o,a,n,u));let l=c=>{c.preventDefault();let u=!0,d={},h=new Set;for(let b of o){let m=b.field;if(!m.isConnected||!this.shouldValidateField(m))continue;if(this.isRadioField(m)){if(h.has(b.key))continue;h.add(b.key)}let{key:g,rules:f,needsContext:y}=b,v=this.getFieldValue(m);d[g]=v,a[g]=v;let{valid:S,errors:x}=this.tools.validation.process({rules:f,value:v,context:this.buildContext(y,g,a)});this.applyValidationState(s,m,g,S,x,"submit"),S||(u=!1)}if(u)this.events.emit(`form:submit:${e.id}`,d);else{let b=new Set,m=o.find(g=>{let f=g.field;if(!f.isConnected||!this.shouldValidateField(f))return!1;if(this.isRadioField(f)){if(b.has(g.key))return!1;b.add(g.key)}let{key:y,rules:v,needsContext:S}=g,x=this.getFieldValue(f);a[y]=x;let{valid:P}=this.tools.validation.process({rules:v,value:x,context:this.buildContext(S,y,a)});return!P});m?.field&&typeof m.field.focus=="function"&&m.field.focus(),this.events.emit(`form:invalid:${e.id}`)}};s.addEventListener("submit",l),n.push({eventElement:s,eventType:"submit",eventCallback:l}),e.setProperty("form-field-entries",o),e.setProperty("form-field-values",a)}onObjectConnected(r){}onDOMMutate(r,e){this.objects.length!==0&&(r.length>0&&this.handleMutationAdditions(r),e.length>0&&this.handleMutationRemovals(e))}applyValidationState(r,e,t,i,n,s){let o=r.querySelector(`[string-input="error[${t}]"]`),a=r.querySelector(`[string-input="group[${t}]"]`);o&&(o.innerHTML="",n.forEach(c=>{let u=document.createElement("span");u.textContent=c,o.appendChild(u)})),s==="live"?(e.classList.toggle("-invalid",!i),e.classList.remove("-error")):(e.classList.remove("-invalid"),e.classList.toggle("-error",!i)),e.classList.toggle("-valid",i),a&&(s==="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":s==="live"?"invalid":"error";this.events.emit(`form:field:${l}:${t}`,{key:t,field:e,errors:n,phase:s,valid:i})}getInteractiveFields(r){return Array.from(r.querySelectorAll("[string-input]")).filter(e=>!this.isServiceFieldAttribute(e.getAttribute("string-input")||"")).filter(e=>this.isFormFieldElement(e)).map(e=>e)}getFieldRules(r){let e=this.tools.domAttribute.process({element:r,key:"input"})??"";return this.tools.ruleParser.process({value:e})}registerField(r,e,t,i,n,s){if(!this.isFormFieldElement(r)||r.closest("form")!==e||t.some(m=>m.field===r))return;let o=this.registerFieldIndex(r,s??t.length),a=this.getInputKey(r,o),l=this.getFieldRules(r),c=this.supportsBeforeInputValidation(l),u=this.requiresContext(l),d=this.getInputEventType(r),h={field:r,key:a,rules:l,supportsRealtime:c,needsContext:u,inputEventType:d,inputHandler:()=>{}},b=m=>{let g=m.currentTarget||m.target;if(!g||!g.isConnected||!this.shouldValidateField(g))return;let f=this.getFieldValue(g);i[h.key]=f;let y=this.buildContext(h.needsContext,h.key,i),{valid:v,errors:S}=this.tools.validation.process({rules:h.rules,value:f,context:y});this.applyValidationState(e,g,h.key,v,S,"live")};if(h.inputHandler=b,r.addEventListener(d,b),n.push({eventElement:r,eventType:d,eventCallback:b}),c&&(r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement)){let m=g=>{let f=g;if(f.isComposing||f.inputType?.startsWith("insertComposition"))return;let y=g.currentTarget||g.target;if(!y||!(y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement)||!y.isConnected)return;let v=y.selectionStart??0,S=y.selectionEnd??0,x=y.value;switch(f.inputType){case"deleteContentBackward":x=v===S&&v>0?y.value.slice(0,v-1)+y.value.slice(S):y.value.slice(0,v)+y.value.slice(S);break;case"deleteContentForward":x=v===S&&v<y.value.length?y.value.slice(0,v)+y.value.slice(v+1):y.value.slice(0,v)+y.value.slice(S);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":x=y.value.slice(0,v)+(f.data||"")+y.value.slice(S);break;default:typeof f.data=="string"&&(x=y.value.slice(0,v)+f.data+y.value.slice(S))}let{errors:P}=this.tools.validation.process({rules:h.rules,value:x,type:"beforeinput",context:this.buildContext(h.needsContext,h.key,i,{applied:!0,value:x})});P.length>0&&g.cancelable&&g.preventDefault()};h.beforeInputHandler=m,r.addEventListener("beforeinput",m),n.push({eventElement:r,eventType:"beforeinput",eventCallback:m})}r.classList.add("-inited"),t.push(h),i[a]=this.getFieldValue(r)}unregisterField(r,e,t,i){let n=e.findIndex(o=>o.field===r);if(n===-1)return;let s=e[n];s.inputHandler&&r.removeEventListener(s.inputEventType,s.inputHandler),s.beforeInputHandler&&r.removeEventListener("beforeinput",s.beforeInputHandler),delete t[s.key],e.splice(n,1);for(let o=i.length-1;o>=0;o--){let a=i[o];a.eventElement===r&&(a.eventCallback===s.inputHandler||s.beforeInputHandler&&a.eventCallback===s.beforeInputHandler)&&i.splice(o,1)}r.classList.remove("-inited")}collectInteractiveFieldsFromNode(r){let e=[];return r instanceof Element?(r.hasAttribute("string-input")&&e.push(r),e.push(...Array.from(r.querySelectorAll("[string-input]")))):r instanceof DocumentFragment&&e.push(...Array.from(r.querySelectorAll("[string-input]"))),e.filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t))}isRadioField(r){return r instanceof HTMLInputElement&&r.type==="radio"}handleMutationAdditions(r){r.forEach(e=>{this.collectInteractiveFieldsFromNode(e).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(r){r.forEach(e=>{this.collectInteractiveFieldsFromNode(e).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(r){let e=this.objects.find(t=>t.htmlElement instanceof HTMLFormElement&&t.htmlElement.contains(r));return e?this.buildFormState(e):null}getFormStateByReference(r){for(let e of this.objects){let t=e.getProperty("form-field-entries");if(t&&t.some(i=>i.field===r))return this.buildFormState(e,t)}return null}buildFormState(r,e){let t=r.htmlElement;if(!(t instanceof HTMLFormElement))return null;let i=e??r.getProperty("form-field-entries"),n=r.getProperty("form-field-values"),s=r.getProperty("form-events");return!i||!n||!s?null:{object:r,form:t,entries:i,values:n,events:s}}registerFieldIndex(r,e){let t=r.getAttribute("data-string-form-index");return t!==null?Number(t):(r.setAttribute("data-string-form-index",String(e)),e)}getFieldIndex(r,e){let t=r.getAttribute("data-string-form-index");if(t!==null){let i=Number(t);return Number.isNaN(i)?e:i}return this.registerFieldIndex(r,e)}shouldValidateField(r){return!(r.disabled||r instanceof HTMLInputElement&&r.type==="hidden")}supportsBeforeInputValidation(r){return r.some(e=>ee.beforeInputRuleKeys.has(e.key))}requiresContext(r){return r.some(e=>ee.crossFieldRuleKeys.has(e.key))}buildContext(r,e,t,i){if(!r)return{fieldKey:e};let n=!!i?.applied,s=n?{...t,[e]:i.value}:t;return{fieldKey:e,values:s,getValue:o=>n&&o===e?i.value:s[o]}}getInputKey(r,e){return this.tools.domAttribute.process({element:r,key:"id"})||r.getAttribute("name")||r.getAttribute("id")||`input-${e}`}getFieldValue(r){if(r instanceof HTMLInputElement){if(r.type==="checkbox"){if(r.name){let e=r.form||r.closest("form"),t=e?Array.from(e.querySelectorAll(`input[type="checkbox"][name="${r.name}"]:checked`)):[r];return t.length>1?t.map(i=>i.value):t.length===1?t[0].value:""}return r.checked}if(r.type==="radio"){if(r.name){let t=(r.form||r.closest("form"))?.querySelector(`input[type="radio"][name="${r.name}"]:checked`);return t?t.value:""}return r.checked?r.value:""}return r.type==="file"&&r.files&&r.files.length>0?r.multiple?Array.from(r.files):r.files[0]:r.value}return r instanceof HTMLSelectElement?r.multiple?Array.from(r.selectedOptions).map(e=>e.value):r.value:r instanceof HTMLTextAreaElement?r.value:""}isServiceFieldAttribute(r){return ee.serviceAttributePrefixes.some(e=>r.startsWith(`${e}[`))}isFormFieldElement(r){return r instanceof HTMLInputElement||r instanceof HTMLSelectElement||r instanceof HTMLTextAreaElement}getInputEventType(r){return r instanceof HTMLSelectElement||r instanceof HTMLInputElement&&(r.type==="checkbox"||r.type==="radio")?"change":"input"}};ee.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),ee.crossFieldRuleKeys=new Set(["same","different","after","before"]),ee.serviceAttributePrefixes=["error","group"];var nr=ee;var at=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(r){if(this.map.has(r))return;let e=r.htmlElement,t={cx:0,cy:0,valid:!1,el:e};t.ro=new ResizeObserver(()=>{t.valid=!1}),t.ro.observe(e),this.map.set(r,t),this.all.add(r)}detach(r){let e=this.map.get(r);e&&(e.ro?.disconnect(),this.map.delete(r),this.all.delete(r))}invalidate(r){this.all.forEach(e=>{if(e.id===r){let t=this.map.get(e);t&&(t.valid=!1)}})}invalidateAll(){this.all.forEach(r=>{let e=this.map.get(r);e&&(e.valid=!1)})}getCenter(r){let e=this.map.get(r);if(!e||!e.el)return{cx:0,cy:0};if(!e.valid){let t=e.el.getBoundingClientRect();e.cx=t.left+t.width/2,e.cy=t.top+t.height/2,e.valid=!0}return{cx:e.cx,cy:e.cy}}};var lt=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(r){if(this.subs.has(r))return;let e=r.htmlElement,t=()=>this.active.add(r),i=()=>this.active.delete(r);e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",i),this.subs.set(r,{enter:t,leave:i})}untrack(r){let e=this.subs.get(r);if(!e)return;let t=r.htmlElement;e.enter&&t.removeEventListener("pointerenter",e.enter),e.leave&&t.removeEventListener("pointerleave",e.leave),this.active.delete(r),this.subs.delete(r)}isActive(r){return this.active.has(r)}activeObjects(){return Array.from(this.active)}};var sr=class extends C{constructor(r){super(r),this.htmlKey="scroller"}onObjectConnected(r){let e=r.getProperty("scroller-inited");if(e==null||e==""){r.setProperty("scroller-inited","inited");let t=i=>{this.events.emit("wheel",i)};r.setProperty("scroller-wheel-event",t),r.htmlElement.addEventListener("wheel",t)}}onObjectDisconnected(r){r.setProperty("scroller-inited",""),r.htmlElement.removeEventListener("wheel",r.getProperty("scroller-wheel-event"))}};var or=class extends C{constructor(e){super(e);this.states=new WeakMap;this.htmlKey="scroll-container",this.attributesToMap.push({key:"lerp",type:"number",fallback:.1})}onObjectConnected(e){super.onObjectConnected(e);let t=e.htmlElement;getComputedStyle(t).overflowY==="visible"&&(t.style.overflowY="auto");let i={current:t.scrollTop,target:t.scrollTop,maxScroll:t.scrollHeight-t.clientHeight,velocity:0,lerp:e.getProperty("lerp")||.1,isDragging:!1,isActive:!1};this.states.set(t,i),t.addEventListener("wheel",n=>this.handleWheel(n,t,i),{passive:!1}),t.addEventListener("scroll",n=>this.onNativeScroll(n,t,i),{passive:!0}),this.measure(t,i)}onObjectDisconnected(e){this.states.delete(e.htmlElement)}onFrame(e){for(let t of this.objectsOnPage){let i=t.htmlElement,n=this.states.get(i);n&&n.isActive&&!n.isDragging&&this.updateScroll(i,n)}}onResize(){for(let e of this.objectsOnPage){let t=e.htmlElement,i=this.states.get(t);i&&this.measure(t,i)}}measure(e,t){t.maxScroll=e.scrollHeight-e.clientHeight}handleWheel(e,t,i){let n=e.deltaY,s=n<0,o=n>0,a=i.target<=.1,l=i.target>=i.maxScroll-.1;s&&a||o&&l||(e.preventDefault(),e.stopPropagation(),i.target+=n,i.target=Math.max(0,Math.min(i.target,i.maxScroll)),i.isActive=!0,i.isDragging=!1)}onWheel(e){}onNativeScroll(e,t,i){i.isActive||(i.current=t.scrollTop,i.target=t.scrollTop)}updateScroll(e,t){let i=t.target-t.current;Math.abs(i)<.1?(t.current=t.target,t.isActive=!1):t.current+=i*t.lerp,e.scrollTop=t.current}};function Fr(p){let r=p.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return r?{id:r[1],start:parseFloat(r[2]),end:parseFloat(r[3])}:null}function ni(p,r,e,t,i){return t+(i-t)*(p-r)/(e-r)}var ar=class extends C{constructor(r){super(r),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(r){let e=r.getProperty("part-of"),t=Fr(e);if(t){r.setProperty("part-of-id",t.id),r.setProperty("start",t.start),r.setProperty("end",t.end);let i=n=>{if(t){let s=ni(n,t?.start,t?.end,0,1),o=Math.max(0,Math.min(1,s));r.htmlElement.style.setProperty("--progress-slice",o.toString()),this.events.emit(this.getObjectEventName(r,"object:progress-slice"),o)}};r.setProperty("progress-event",i),this.events.on(`object:progress:${t.id}`,i)}}onObjectDisconnected(r){let e=r.getProperty("part-of-id");e&&this.events.off(`object:progress:${e}`,r.getProperty("progress-event"))}};var si=(p,r)=>{let e=Math.min(p,r),t=Math.max(p,r);return e+Math.random()*(t-e)},oi=(p,r)=>{let e=Math.ceil(Math.min(p,r)),t=Math.floor(Math.max(p,r));return t<e?e:Math.floor(Math.random()*(t-e+1))+e},ai=p=>{if(Array.isArray(p)&&p.length>=2){let r=Number(p[0]),e=Number(p[1]);if(Number.isFinite(r)&&Number.isFinite(e))return[r,e]}return typeof p=="number"&&Number.isFinite(p)?[0,p]:[0,1]},lr=class extends C{constructor(r){super(r),this.htmlKey="random",this.attributesToMap.push({key:"random-number",type:"json",fallback:"[0,1]"}),this.attributesToMap.push({key:"random-type",type:"string",fallback:"int"})}onObjectConnected(r){let e=r.htmlElement,t=ai(r.getProperty("random-number")),n=String(r.getProperty("random-type")??"float").toLowerCase()==="int"?oi(t[0],t[1]):si(t[0],t[1]);M.run(()=>{M.setVars(e,{"--random":n})})}};var li=0;function Hr(){return`grid-${Date.now()}-${li++}`}var Nr="string-grid:",ct=class{constructor(){this.adapterRegistry=new Map;this.elementStates=new Map}registerAdapter(r){this.adapterRegistry.set(r.type,r)}getAdapter(r){return this.adapterRegistry.get(r)}getAdapterRegistry(){return this.adapterRegistry}getInstances(r){return this.elementStates.get(r)?.instances??[]}addInstance(r,e){let t=this.adapterRegistry.get(e);if(!t)return null;let i={id:Hr(),type:e,visible:!0,settings:{...t.getDefaults()}},n=this.elementStates.get(r);return n||(n={elementId:r,instances:[]},this.elementStates.set(r,n)),n.instances.push(i),this.save(r),i}removeInstance(r,e){let t=this.elementStates.get(r);t&&(t.instances=t.instances.filter(i=>i.id!==e),this.save(r))}toggleVisibility(r,e){let t=this.findInstance(r,e);t&&(t.visible=!t.visible,this.save(r))}updateSetting(r,e,t,i){let n=this.findInstance(r,e);n&&(n.settings[t]=i,this.save(r))}findInstance(r,e){return this.getInstances(r).find(t=>t.id===e)}save(r){let e=this.elementStates.get(r);if(e)try{localStorage.setItem(Nr+r,JSON.stringify(e.instances))}catch{}}load(r){try{let e=localStorage.getItem(Nr+r);if(!e)return;let i=JSON.parse(e).filter(n=>this.adapterRegistry.has(n.type));for(let n of i){let s=this.adapterRegistry.get(n.type);s&&(n.settings={...s.getDefaults(),...n.settings})}i.length>0&&this.elementStates.set(r,{elementId:r,instances:i})}catch{}}clear(){this.elementStates.clear()}};var ci="http://www.w3.org/2000/svg",ut=class{constructor(r){this.target=r,this.svg=document.createElementNS(ci,"svg"),this.svg.setAttribute("data-string-grid-overlay",""),Object.assign(this.svg.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",pointerEvents:"none",zIndex:"9998",overflow:"hidden"}),this.ensurePositioned(),this.target.appendChild(this.svg),this.syncViewBox(),this.resizeObserver=new ResizeObserver(()=>this.syncViewBox()),this.resizeObserver.observe(this.target)}render(r,e){let{width:t,height:i}=this.getDimensions();for(let n of r){let s=e.get(n.type);s&&(s.clear(this.svg,n.id),n.visible&&s.render(this.svg,t,i,{...n.settings,__instanceId:n.id}))}}clearInstance(r,e){e.clear(this.svg,r)}syncViewBox(){let{width:r,height:e}=this.getDimensions();this.svg.setAttribute("viewBox",`0 0 ${r} ${e}`)}getDimensions(){return{width:this.target.offsetWidth,height:this.target.offsetHeight}}destroy(){this.resizeObserver.disconnect(),this.svg.remove()}ensurePositioned(){getComputedStyle(this.target).position==="static"&&(this.target.style.position="relative")}};var N=class{constructor(r,e,t,i){this.root=null;this.key=r,this.label=e,this.value=t,this.onChange=i}getValue(){return this.value}destroy(){this.root?.remove(),this.root=null}emit(r){this.value=r,this.onChange(this.key,r)}createLabel(){let r=document.createElement("label");return r.textContent=this.label,Object.assign(r.style,{fontSize:"11px",color:"rgba(255,255,255,0.6)",fontFamily:"'Inter', system-ui, sans-serif",userSelect:"none",whiteSpace:"nowrap",minWidth:"60px"}),r}createRow(){let r=document.createElement("div");return Object.assign(r.style,{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",padding:"3px 0"}),r}};var dt=class extends N{constructor(e,t,i,n,s=0,o=100,a=1){super(e,t,i,n);this.input=null;this.min=s,this.max=o,this.step=a}build(){let e=this.createRow();e.appendChild(this.createLabel());let t=document.createElement("input");return t.type="number",t.min=String(this.min),t.max=String(this.max),t.step=String(this.step),t.value=String(this.value),Object.assign(t.style,{width:"56px",padding:"3px 6px",fontSize:"11px",fontFamily:"'JetBrains Mono', monospace",background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.12)",borderRadius:"4px",color:"#fff",outline:"none",textAlign:"right"}),t.addEventListener("input",()=>{let i=parseFloat(t.value);isNaN(i)||this.emit(i)}),t.addEventListener("focus",()=>{t.style.borderColor="rgba(74,144,226,0.6)"}),t.addEventListener("blur",()=>{t.style.borderColor="rgba(255,255,255,0.12)"}),this.input=t,e.appendChild(t),this.root=e,e}setValue(e){this.value=e,this.input&&(this.input.value=String(e))}};var pt=class extends N{constructor(e,t,i,n,s=0,o=100,a=1,l,c){super(e,t,i,n);this.slider=null;this.valueInput=null;this.unitSelect=null;this.min=s,this.max=o,this.step=a,this.units=l,this.currentUnit=c}build(){let e=this.createRow();e.appendChild(this.createLabel());let t=document.createElement("div");Object.assign(t.style,{display:"flex",alignItems:"center",gap:"4px",flex:"1",justifyContent:"flex-end"});let i=document.createElement("input");i.type="range",i.min=String(this.min),i.max=String(this.max),i.step=String(this.step),i.value=String(this.value),Object.assign(i.style,{width:"70px",height:"4px",cursor:"pointer",accentColor:"#4a90e2"});let n=document.createElement("input");if(n.type="text",n.value=this.formatValue(this.value),Object.assign(n.style,{width:"34px",fontSize:"10px",fontFamily:"'JetBrains Mono', monospace",color:"rgba(255,255,255,0.5)",background:"transparent",border:"1px solid transparent",borderRadius:"3px",padding:"2px 3px",textAlign:"right",outline:"none",transition:"border-color 0.15s ease, color 0.15s ease"}),n.addEventListener("focus",()=>{n.style.borderColor="rgba(74,144,226,0.4)",n.style.color="rgba(255,255,255,0.9)",n.select()}),n.addEventListener("blur",()=>{n.style.borderColor="transparent",n.style.color="rgba(255,255,255,0.5)",this.commitInputValue(n,i)}),n.addEventListener("keydown",s=>{s.key==="Enter"?n.blur():s.key==="Escape"&&(n.value=this.formatValue(this.value),n.blur())}),i.addEventListener("input",()=>{let s=parseFloat(i.value);n.value=this.formatValue(s),this.emit(s)}),this.slider=i,this.valueInput=n,t.appendChild(i),t.appendChild(n),this.units&&this.units.length>0){let s=document.createElement("select");Object.assign(s.style,{fontSize:"9px",fontFamily:"'JetBrains Mono', monospace",color:"rgba(255,255,255,0.45)",background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)",borderRadius:"3px",padding:"2px 1px",outline:"none",cursor:"pointer",appearance:"none",WebkitAppearance:"none",textAlign:"center",minWidth:"28px"});for(let o of this.units){let a=document.createElement("option");a.value=o.value,a.textContent=o.label,Object.assign(a.style,{background:"#1a1a2e",color:"#e6e6e6"}),s.appendChild(a)}s.value=this.currentUnit||this.units[0].value,s.addEventListener("change",()=>{this.currentUnit=s.value,this.onChange(this.key+"Unit",s.value)}),this.unitSelect=s,t.appendChild(s)}return e.appendChild(t),this.root=e,e}setValue(e){this.value=e,this.slider&&(this.slider.value=String(e)),this.valueInput&&(this.valueInput.value=this.formatValue(e))}commitInputValue(e,t){let i=parseFloat(e.value);if(isNaN(i)){e.value=this.formatValue(this.value);return}let n=Math.min(this.max,Math.max(this.min,i)),s=Math.round(n/this.step)*this.step;e.value=this.formatValue(s),t.value=String(s),this.emit(s)}formatValue(e){return this.step<1?e.toFixed(2):String(e)}};var ht=class extends N{constructor(){super(...arguments);this.colorInput=null}build(){let e=this.createRow();e.appendChild(this.createLabel());let t=document.createElement("div");Object.assign(t.style,{display:"flex",alignItems:"center",gap:"6px"});let i=document.createElement("input");i.type="color",i.value=this.value,Object.assign(i.style,{width:"28px",height:"22px",padding:"0",border:"1px solid rgba(255,255,255,0.15)",borderRadius:"4px",cursor:"pointer",background:"transparent"});let n=document.createElement("span");return Object.assign(n.style,{fontSize:"10px",fontFamily:"'JetBrains Mono', monospace",color:"rgba(255,255,255,0.4)"}),n.textContent=this.value,i.addEventListener("input",()=>{n.textContent=i.value,this.emit(i.value)}),this.colorInput=i,t.appendChild(i),t.appendChild(n),e.appendChild(t),this.root=e,e}setValue(e){this.value=e,this.colorInput&&(this.colorInput.value=e)}};var mt=class extends N{constructor(e,t,i,n,s){super(e,t,i,n);this.select=null;this.options=s}build(){let e=this.createRow();e.appendChild(this.createLabel());let t=document.createElement("select");Object.assign(t.style,{padding:"3px 6px",fontSize:"11px",fontFamily:"'Inter', system-ui, sans-serif",background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.12)",borderRadius:"4px",color:"#fff",outline:"none",cursor:"pointer"});for(let i of this.options){let n=document.createElement("option");n.value=i.value,n.textContent=i.label,n.style.background="#1a1a2e",i.value===this.value&&(n.selected=!0),t.appendChild(n)}return t.addEventListener("change",()=>{this.emit(t.value)}),this.select=t,e.appendChild(t),this.root=e,e}setValue(e){this.value=e,this.select&&(this.select.value=e)}};var gt=class extends N{constructor(){super(...arguments);this.checkbox=null}build(){let e=this.createRow();e.appendChild(this.createLabel());let t=document.createElement("div");Object.assign(t.style,{width:"32px",height:"18px",borderRadius:"9px",background:this.value?"#4a90e2":"rgba(255,255,255,0.15)",cursor:"pointer",position:"relative",transition:"background 0.2s ease",flexShrink:"0"});let i=document.createElement("div");Object.assign(i.style,{width:"14px",height:"14px",borderRadius:"50%",background:"#fff",position:"absolute",top:"2px",left:this.value?"16px":"2px",transition:"left 0.2s ease"}),t.appendChild(i);let n=document.createElement("input");return n.type="checkbox",n.checked=this.value,n.style.display="none",this.checkbox=n,t.addEventListener("click",()=>{let s=!this.value;this.value=s,n.checked=s,t.style.background=s?"#4a90e2":"rgba(255,255,255,0.15)",i.style.left=s?"16px":"2px",this.emit(s)}),e.appendChild(n),e.appendChild(t),this.root=e,e}setValue(e){this.value=e,this.checkbox&&(this.checkbox.checked=e)}};var ft=class extends N{constructor(r){super("",r??"",void 0,()=>{})}build(){let r=document.createElement("div");if(Object.assign(r.style,{borderTop:"1px solid rgba(255,255,255,0.08)",margin:"6px 0"}),this.label){let e=document.createElement("span");e.textContent=this.label,Object.assign(e.style,{fontSize:"9px",fontFamily:"'Inter', system-ui, sans-serif",color:"rgba(255,255,255,0.3)",textTransform:"uppercase",letterSpacing:"0.5px",display:"block",marginTop:"4px"}),r.appendChild(e)}return this.root=r,r}setValue(){}};var bt=class{constructor(){this.fields=[];this.container=null}build(r,e,t){this.destroy();let i=document.createElement("div");Object.assign(i.style,{display:"flex",flexDirection:"column",gap:"2px",padding:"6px 0"});for(let n of r){let s=this.createField(n,e,t);s&&(this.fields.push(s),i.appendChild(s.build()))}return this.container=i,i}updateValues(r){for(let e of this.fields){let t=e.key;t&&t in r&&e.setValue(r[t])}}destroy(){for(let r of this.fields)r.destroy();this.fields=[],this.container?.remove(),this.container=null}createField(r,e,t){switch(r.type){case"number":return new dt(r.key,r.label,e[r.key]??r.default,t,r.min,r.max,r.step);case"range":return new pt(r.key,r.label,e[r.key]??r.default,t,r.min,r.max,r.step,r.units,e[r.key+"Unit"]??r.defaultUnit);case"color":return new ht(r.key,r.label,e[r.key]??r.default,t);case"select":return new mt(r.key,r.label,e[r.key]??r.default,t,r.options);case"toggle":return new gt(r.key,r.label,e[r.key]??r.default,t);case"divider":return new ft(r.label);default:return null}}};var vt=class{constructor(r,e,t){this.builders=new Map;this.expandedInstances=new Set;this.isOpen=!1;this.hideTimeout=0;this.target=r,this.adapterRegistry=e,this.onAdd=t.onAdd,this.onRemove=t.onRemove,this.onToggle=t.onToggle,this.onSettingChange=t.onSettingChange,this.trigger=this.createTrigger(),this.panel=this.createPanel(),this.listContainer=document.createElement("div"),this.panel.appendChild(this.listContainer),this.panel.appendChild(this.createAddButton()),this.ensurePositioned(),this.target.appendChild(this.trigger),this.target.appendChild(this.panel)}refresh(r){this.listContainer.innerHTML="";for(let e of r)this.listContainer.appendChild(this.createInstanceRow(e))}destroy(){for(let r of this.builders.values())r.destroy();this.builders.clear(),this.expandedInstances.clear(),clearTimeout(this.hideTimeout),this.trigger.remove(),this.panel.remove()}createTrigger(){let r=document.createElement("div");r.setAttribute("data-string-grid-trigger",""),Object.assign(r.style,{position:"absolute",top:"0",right:"0",width:"32px",height:"32px",zIndex:"9999",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",opacity:"0",transition:"opacity 0.2s ease"});let e=document.createElement("div");return Object.assign(e.style,{width:"8px",height:"8px",borderRadius:"50%",background:"#4a90e2",boxShadow:"0 0 6px rgba(74,144,226,0.5)",transition:"transform 0.2s ease"}),r.appendChild(e),r.addEventListener("mouseenter",()=>{r.style.opacity="1",e.style.transform="scale(1.3)",this.show()}),r.addEventListener("mouseleave",()=>{e.style.transform="scale(1)",this.scheduleHide()}),this.target.addEventListener("mouseenter",()=>{r.style.opacity="0.5"}),this.target.addEventListener("mouseleave",()=>{this.isOpen||(r.style.opacity="0")}),r}createPanel(){let r=document.createElement("div");r.setAttribute("data-string-grid-hud",""),r.setAttribute("string-isolation",""),r.setAttribute("data-string-isolation",""),Object.assign(r.style,{position:"absolute",top:"32px",right:"0",width:"260px",height:"100%",maxHeight:"20vh",overflowY:"auto",background:"rgba(13, 17, 23, 0.95)",backdropFilter:"blur(12px)",border:"1px solid rgba(255,255,255,0.1)",borderRadius:"8px",padding:"8px",zIndex:"10000",fontFamily:"'Inter', system-ui, sans-serif",fontSize:"12px",color:"#e6e6e6",boxShadow:"0 8px 32px rgba(0,0,0,0.4)",opacity:"0",transform:"translateY(-4px)",transition:"opacity 0.2s ease, transform 0.2s ease",pointerEvents:"none"});let e=document.createElement("div");return Object.assign(e.style,{fontSize:"10px",fontWeight:"600",color:"rgba(255,255,255,0.4)",textTransform:"uppercase",letterSpacing:"1px",padding:"4px 4px 8px",borderBottom:"1px solid rgba(255,255,255,0.06)",marginBottom:"4px"}),e.textContent="Grid Overlay",r.appendChild(e),r.addEventListener("mouseenter",()=>{this.cancelHide()}),r.addEventListener("mouseleave",()=>{this.scheduleHide()}),r}createInstanceRow(r){let e=this.adapterRegistry.get(r.type);if(!e)return document.createElement("div");let t=document.createElement("div");Object.assign(t.style,{borderBottom:"1px solid rgba(255,255,255,0.04)",paddingBottom:"4px",marginBottom:"4px"});let i=document.createElement("div");Object.assign(i.style,{display:"flex",alignItems:"center",gap:"6px",padding:"4px",borderRadius:"4px",cursor:"pointer",transition:"background 0.15s ease"}),i.addEventListener("mouseenter",()=>{i.style.background="rgba(255,255,255,0.04)"}),i.addEventListener("mouseleave",()=>{i.style.background="transparent"});let n=document.createElement("input");n.type="checkbox",n.checked=r.visible,Object.assign(n.style,{accentColor:"#4a90e2",cursor:"pointer",margin:"0",flexShrink:"0"}),n.addEventListener("click",d=>d.stopPropagation()),n.addEventListener("change",d=>{d.stopPropagation(),this.onToggle(r.id)});let s=document.createElement("span");s.innerHTML=e.icon,Object.assign(s.style,{width:"14px",height:"14px",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:"0",opacity:"0.6"});let o=s.querySelector("svg");o&&(o.setAttribute("width","14"),o.setAttribute("height","14"));let a=document.createElement("span");a.textContent=e.label,Object.assign(a.style,{flex:"1",fontSize:"11px",fontWeight:"500",opacity:r.visible?"1":"0.4"});let l=this.expandedInstances.has(r.id),c=document.createElement("span");c.textContent=l?"\u25BE":"\u25B8",Object.assign(c.style,{fontSize:"10px",color:"rgba(255,255,255,0.3)",cursor:"pointer",padding:"0 2px",flexShrink:"0"});let u=document.createElement("span");return u.textContent="\u2715",Object.assign(u.style,{fontSize:"10px",color:"rgba(255,255,255,0.2)",cursor:"pointer",padding:"0 2px",flexShrink:"0",transition:"color 0.15s ease"}),u.addEventListener("mouseenter",()=>{u.style.color="#e74c3c"}),u.addEventListener("mouseleave",()=>{u.style.color="rgba(255,255,255,0.2)"}),u.addEventListener("click",d=>{d.stopPropagation(),this.builders.get(r.id)?.destroy(),this.builders.delete(r.id),this.expandedInstances.delete(r.id),this.onRemove(r.id)}),i.appendChild(n),i.appendChild(s),i.appendChild(a),i.appendChild(c),i.appendChild(u),t.appendChild(i),i.addEventListener("click",()=>{this.expandedInstances.has(r.id)?this.expandedInstances.delete(r.id):this.expandedInstances.add(r.id),c.textContent=this.expandedInstances.has(r.id)?"\u25BE":"\u25B8",this.toggleSettingsPanel(t,r,e)}),l&&this.appendSettingsPanel(t,r,e),t}toggleSettingsPanel(r,e,t){let i=r.querySelector("[data-grid-settings]");i?(this.builders.get(e.id)?.destroy(),this.builders.delete(e.id),i.remove()):this.appendSettingsPanel(r,e,t)}appendSettingsPanel(r,e,t){let i=new bt,n=i.build(t.getUISchema(),e.settings,(s,o)=>this.onSettingChange(e.id,s,o));n.setAttribute("data-grid-settings",""),Object.assign(n.style,{paddingLeft:"24px"}),this.builders.set(e.id,i),r.appendChild(n)}createAddButton(){let r=document.createElement("div");Object.assign(r.style,{position:"relative",marginTop:"4px"});let e=document.createElement("button");e.textContent="+ Add Grid",Object.assign(e.style,{width:"100%",padding:"6px",fontSize:"11px",fontFamily:"'Inter', system-ui, sans-serif",fontWeight:"500",color:"#4a90e2",background:"rgba(74,144,226,0.08)",border:"1px dashed rgba(74,144,226,0.3)",borderRadius:"6px",cursor:"pointer",transition:"background 0.15s ease, border-color 0.15s ease"}),e.addEventListener("mouseenter",()=>{e.style.background="rgba(74,144,226,0.15)",e.style.borderColor="rgba(74,144,226,0.5)"}),e.addEventListener("mouseleave",()=>{e.style.background="rgba(74,144,226,0.08)",e.style.borderColor="rgba(74,144,226,0.3)"});let t=this.createAdapterDropdown();return t.style.display="none",e.addEventListener("click",i=>{i.stopPropagation();let n=t.style.display!=="none";t.style.display=n?"none":"block"}),r.appendChild(e),r.appendChild(t),r}createAdapterDropdown(){let r=document.createElement("div");Object.assign(r.style,{background:"rgba(13, 17, 23, 0.98)",border:"1px solid rgba(255,255,255,0.1)",borderRadius:"6px",padding:"4px",marginBottom:"4px",boxShadow:"0 -4px 16px rgba(0,0,0,0.3)",overflowY:"auto"});for(let[,e]of this.adapterRegistry){let t=document.createElement("div");Object.assign(t.style,{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",cursor:"pointer",transition:"background 0.12s ease"});let i=document.createElement("span");i.innerHTML=e.icon,Object.assign(i.style,{width:"14px",height:"14px",display:"flex",alignItems:"center",justifyContent:"center",opacity:"0.6"});let n=i.querySelector("svg");n&&(n.setAttribute("width","14"),n.setAttribute("height","14"));let s=document.createElement("span");s.textContent=e.label,Object.assign(s.style,{fontSize:"11px"}),t.appendChild(i),t.appendChild(s),t.addEventListener("mouseenter",()=>{t.style.background="rgba(255,255,255,0.06)"}),t.addEventListener("mouseleave",()=>{t.style.background="transparent"}),t.addEventListener("click",o=>{o.stopPropagation(),r.style.display="none",this.onAdd(e.type)}),r.appendChild(t)}return r}show(){this.cancelHide(),this.isOpen=!0,this.panel.style.opacity="1",this.panel.style.transform="translateY(0)",this.panel.style.pointerEvents="auto",this.trigger.style.opacity="1"}scheduleHide(){this.hideTimeout=window.setTimeout(()=>this.hide(),300)}cancelHide(){clearTimeout(this.hideTimeout)}hide(){this.isOpen=!1,this.panel.style.opacity="0",this.panel.style.transform="translateY(-4px)",this.panel.style.pointerEvents="none",this.trigger.style.opacity="0"}ensurePositioned(){getComputedStyle(this.target).position==="static"&&(this.target.style.position="relative")}};var yt="http://www.w3.org/2000/svg",D=class{clear(r,e){let t=r.querySelector(`[data-grid-id="${e}"]`);t&&t.remove()}getGroup(r,e){let t=r.querySelector(`[data-grid-id="${e}"]`);return t||(t=document.createElementNS(yt,"g"),t.setAttribute("data-grid-id",e),r.appendChild(t)),t}createLine(r,e,t,i,n,s,o=1){let a=document.createElementNS(yt,"line");return a.setAttribute("x1",String(r)),a.setAttribute("y1",String(e)),a.setAttribute("x2",String(t)),a.setAttribute("y2",String(i)),a.setAttribute("stroke",n),a.setAttribute("stroke-opacity",String(s)),a.setAttribute("stroke-width",String(o)),a}createRect(r,e,t,i,n,s){let o=document.createElementNS(yt,"rect");return o.setAttribute("x",String(r)),o.setAttribute("y",String(e)),o.setAttribute("width",String(t)),o.setAttribute("height",String(i)),o.setAttribute("fill",n),o.setAttribute("fill-opacity",String(s)),o}resolveUnit(r,e,t){switch(e){case"%":return r/100*t;case"vw":return r/100*window.innerWidth;case"vh":return r/100*window.innerHeight;default:return r}}createPath(r,e,t,i=1,n="none"){let s=document.createElementNS(yt,"path");return s.setAttribute("d",r),s.setAttribute("stroke",e),s.setAttribute("stroke-opacity",String(t)),s.setAttribute("stroke-width",String(i)),s.setAttribute("fill",n),s}};var Ie=class Ie extends D{constructor(){super(...arguments);this.type="columns";this.label="Columns";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="3" height="14" rx="0.5" fill="currentColor" opacity="0.5"/><rect x="6.5" y="1" width="3" height="14" rx="0.5" fill="currentColor" opacity="0.5"/><rect x="12" y="1" width="3" height="14" rx="0.5" fill="currentColor" opacity="0.5"/></svg>'}getDefaults(){return{count:12,gap:20,gapUnit:"px",margin:0,marginUnit:"px",color:"#4a90e2",opacity:.15,showLines:!1}}getUISchema(){return[{type:"number",key:"count",label:"Columns",default:12,min:1,max:48,step:1},{type:"range",key:"gap",label:"Gap",default:20,min:0,max:100,step:1,units:Ie.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"margin",label:"Margin",default:0,min:0,max:100,step:1,units:Ie.UNIT_OPTIONS,defaultUnit:"px"},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#4a90e2"},{type:"range",key:"opacity",label:"Opacity",default:.15,min:0,max:1,step:.01},{type:"toggle",key:"showLines",label:"Lines only",default:!1}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{count:o,gap:a,gapUnit:l,margin:c,marginUnit:u,color:d,opacity:h,showLines:b}=n,m=this.resolveUnit(a,l||"px",t),g=this.resolveUnit(c,u||"px",t),f=t-g*2,y=(o-1)*m,v=(f-y)/o;if(!(v<=0))for(let S=0;S<o;S++){let x=g+S*(v+m);b?(s.appendChild(this.createLine(x,0,x,i,d,h)),s.appendChild(this.createLine(x+v,0,x+v,i,d,h))):s.appendChild(this.createRect(x,0,v,i,d,h))}}};Ie.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vw",label:"vw"}];var St=Ie;var ce=class ce extends D{constructor(){super(...arguments);this.type="rows";this.label="Rows";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="14" height="3" rx="0.5" fill="currentColor" opacity="0.5"/><rect x="1" y="6.5" width="14" height="3" rx="0.5" fill="currentColor" opacity="0.5"/><rect x="1" y="12" width="14" height="3" rx="0.5" fill="currentColor" opacity="0.5"/></svg>'}getDefaults(){return{mode:"count",count:8,size:24,sizeUnit:"px",gap:0,gapUnit:"px",margin:0,marginUnit:"px",color:"#e2784a",opacity:.2,style:"line"}}getUISchema(){return[{type:"select",key:"mode",label:"Mode",default:"count",options:[{value:"count",label:"By count"},{value:"size",label:"By size"}]},{type:"number",key:"count",label:"Rows",default:8,min:1,max:48,step:1},{type:"range",key:"size",label:"Size",default:24,min:1,max:200,step:1,units:ce.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"gap",label:"Gap",default:0,min:0,max:100,step:1,units:ce.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"margin",label:"Margin",default:0,min:0,max:100,step:1,units:ce.UNIT_OPTIONS,defaultUnit:"px"},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#e2784a"},{type:"range",key:"opacity",label:"Opacity",default:.2,min:0,max:1,step:.01},{type:"select",key:"style",label:"Style",default:"line",options:[{value:"line",label:"Lines"},{value:"fill",label:"Alternating fill"}]}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{mode:o,count:a,size:l,sizeUnit:c,gap:u,gapUnit:d,margin:h,marginUnit:b,color:m,opacity:g,style:f}=n,y=this.resolveUnit(u,d||"px",i),v=this.resolveUnit(h,b||"px",i),S=i-v*2;if(!(S<=0))if(o==="count")this.renderByCount(s,t,S,v,a,y,m,g,f);else{let x=this.resolveUnit(l,c||"px",i);if(x<=0)return;this.renderBySize(s,t,S,v,x,y,m,g,f)}}renderByCount(e,t,i,n,s,o,a,l,c){if(c==="fill"){let u=(i-(s-1)*o)/s;if(u<=0)return;for(let d=0;d<s;d++){let h=n+d*(u+o);e.appendChild(this.createRect(0,h,t,u,a,l))}}else{if(s===1){let d=n+i/2;e.appendChild(this.createLine(0,d,t,d,a,l));return}let u=i/(s-1);for(let d=0;d<s;d++){let h=n+d*u;e.appendChild(this.createLine(0,h,t,h,a,l))}}}renderBySize(e,t,i,n,s,o,a,l,c){if(c==="fill"){let u=s+o;for(let d=0;d<i;d+=u){let h=Math.min(s,i-d);e.appendChild(this.createRect(0,n+d,t,h,a,l))}}else for(let u=0;u<=i;u+=s)e.appendChild(this.createLine(0,n+u,t,n+u,a,l))}};ce.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vh",label:"vh"}];var xt=ce;var Et=class extends D{constructor(){super(...arguments);this.type="center";this.label="Center";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="8" y1="1" x2="8" y2="15" stroke="currentColor" stroke-opacity="0.6" stroke-dasharray="2 1"/><line x1="1" y1="8" x2="15" y2="8" stroke="currentColor" stroke-opacity="0.6" stroke-dasharray="2 1"/></svg>'}getDefaults(){return{showVertical:!0,showHorizontal:!0,color:"#50e24a",opacity:.5,dashed:!0}}getUISchema(){return[{type:"toggle",key:"showVertical",label:"Vertical",default:!0},{type:"toggle",key:"showHorizontal",label:"Horizontal",default:!0},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#50e24a"},{type:"range",key:"opacity",label:"Opacity",default:.5,min:0,max:1,step:.01},{type:"toggle",key:"dashed",label:"Dashed",default:!0}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{showVertical:o,showHorizontal:a,color:l,opacity:c,dashed:u}=n,d=u?"6 3":"none";if(o){let h=this.createLine(t/2,0,t/2,i,l,c);u&&h.setAttribute("stroke-dasharray",d),s.appendChild(h)}if(a){let h=this.createLine(0,i/2,t,i/2,l,c);u&&h.setAttribute("stroke-dasharray",d),s.appendChild(h)}}};var Mt=class extends D{constructor(){super(...arguments);this.type="rule-of-thirds";this.label="Rule of Thirds";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="5.33" y1="1" x2="5.33" y2="15" stroke="currentColor" stroke-opacity="0.5"/><line x1="10.67" y1="1" x2="10.67" y2="15" stroke="currentColor" stroke-opacity="0.5"/><line x1="1" y1="5.33" x2="15" y2="5.33" stroke="currentColor" stroke-opacity="0.5"/><line x1="1" y1="10.67" x2="15" y2="10.67" stroke="currentColor" stroke-opacity="0.5"/></svg>'}getDefaults(){return{color:"#e2e24a",opacity:.4,showIntersections:!0}}getUISchema(){return[{type:"color",key:"color",label:"Color",default:"#e2e24a"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01},{type:"toggle",key:"showIntersections",label:"Show points",default:!0}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{color:o,opacity:a,showIntersections:l}=n,c=t/3,u=i/3;if(s.appendChild(this.createLine(c,0,c,i,o,a)),s.appendChild(this.createLine(c*2,0,c*2,i,o,a)),s.appendChild(this.createLine(0,u,t,u,o,a)),s.appendChild(this.createLine(0,u*2,t,u*2,o,a)),l){let d=[[c,u],[c*2,u],[c,u*2],[c*2,u*2]];for(let[h,b]of d){let m=document.createElementNS("http://www.w3.org/2000/svg","circle");m.setAttribute("cx",String(h)),m.setAttribute("cy",String(b)),m.setAttribute("r","3"),m.setAttribute("fill",o),m.setAttribute("fill-opacity",String(a*1.5)),s.appendChild(m)}}}};var ui=1.6180339887,wt=class extends D{constructor(){super(...arguments);this.type="phi";this.label="Phi Grid";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="6.1" y1="1" x2="6.1" y2="15" stroke="currentColor" stroke-opacity="0.5"/><line x1="9.9" y1="1" x2="9.9" y2="15" stroke="currentColor" stroke-opacity="0.5"/><line x1="1" y1="6.1" x2="15" y2="6.1" stroke="currentColor" stroke-opacity="0.5"/><line x1="1" y1="9.9" x2="15" y2="9.9" stroke="currentColor" stroke-opacity="0.5"/><text x="8" y="8.5" text-anchor="middle" font-size="4" fill="currentColor" opacity="0.3">\u03C6</text></svg>'}getDefaults(){return{color:"#c24ae2",opacity:.4,showIntersections:!0}}getUISchema(){return[{type:"color",key:"color",label:"Color",default:"#c24ae2"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01},{type:"toggle",key:"showIntersections",label:"Show points",default:!0}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{color:o,opacity:a,showIntersections:l}=n,c=1/ui,u=1-c,d=t*u,h=t*c,b=i*u,m=i*c;if(s.appendChild(this.createLine(d,0,d,i,o,a)),s.appendChild(this.createLine(h,0,h,i,o,a)),s.appendChild(this.createLine(0,b,t,b,o,a)),s.appendChild(this.createLine(0,m,t,m,o,a)),l){let g=[[d,b],[d,m],[h,b],[h,m]];for(let[f,y]of g){let v=document.createElementNS("http://www.w3.org/2000/svg","circle");v.setAttribute("cx",String(f)),v.setAttribute("cy",String(y)),v.setAttribute("r","3"),v.setAttribute("fill",o),v.setAttribute("fill-opacity",String(a*1.5)),s.appendChild(v)}}}};var cr=1.6180339887,Ct=class extends D{constructor(){super(...arguments);this.type="golden-rectangle";this.label="Golden Rectangle";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="14" height="14" rx="0.5" stroke="currentColor" stroke-opacity="0.3"/><line x1="9.66" y1="1" x2="9.66" y2="15" stroke="currentColor" stroke-opacity="0.5"/><line x1="9.66" y1="9.66" x2="1" y2="9.66" stroke="currentColor" stroke-opacity="0.4"/></svg>'}getDefaults(){return{depth:8,showSpiral:!0,color:"#e2a44a",opacity:.4}}getUISchema(){return[{type:"number",key:"depth",label:"Depth",default:8,min:2,max:14,step:1},{type:"toggle",key:"showSpiral",label:"Show spiral",default:!0},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#e2a44a"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{depth:o,showSpiral:a,color:l,opacity:c}=n,u,d;t/i>=cr?(d=i,u=d*cr):(u=t,d=u/cr);let h=(t-u)/2,b=(i-d)/2;if(u<t-1||d<i-1){let x=this.createPath(`M ${h} ${b} L ${h+u} ${b} L ${h+u} ${b+d} L ${h} ${b+d} Z`,l,c*.3,1);x.setAttribute("stroke-dasharray","6 4"),s.appendChild(x)}let m=h,g=b,f=u,y=d,v="",S=!0;for(let x=0;x<o&&!(f<1||y<1);x++){let P=x%4,w=Math.min(f,y),L,E;switch(P){case 0:{L=m+f-w,E=g,f-w>.5&&s.appendChild(this.createLine(L,g,L,g+y,l,c)),a&&(S&&(v=`M ${L+w} ${E}`,S=!1),v+=` A ${w} ${w} 0 0 1 ${L} ${E+w}`),f-=w;break}case 1:{L=m,E=g+y-w,y-w>.5&&s.appendChild(this.createLine(m,E,m+f,E,l,c)),a&&(S&&(v=`M ${L+w} ${E+w}`,S=!1),v+=` A ${w} ${w} 0 0 1 ${L} ${E}`),y-=w;break}case 2:{L=m,E=g,f-w>.5&&s.appendChild(this.createLine(m+w,g,m+w,g+y,l,c)),a&&(S&&(v=`M ${L} ${E+w}`,S=!1),v+=` A ${w} ${w} 0 0 1 ${L+w} ${E}`),m+=w,f-=w;break}case 3:{L=m,E=g,y-w>.5&&s.appendChild(this.createLine(m,g+w,m+f,g+w,l,c)),a&&(S&&(v=`M ${L} ${E}`,S=!1),v+=` A ${w} ${w} 0 0 1 ${L+w} ${E+w}`),g+=w,y-=w;break}}}a&&v&&s.appendChild(this.createPath(v,l,c*.8,1.5))}};var Tt=class extends D{constructor(){super(...arguments);this.type="harmonic-armature";this.label="Harmonic Armature";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="1" y1="1" x2="15" y2="15" stroke="currentColor" stroke-opacity="0.4"/><line x1="15" y1="1" x2="1" y2="15" stroke="currentColor" stroke-opacity="0.4"/><line x1="1" y1="8" x2="8" y2="1" stroke="currentColor" stroke-opacity="0.3"/><line x1="8" y1="1" x2="15" y2="8" stroke="currentColor" stroke-opacity="0.3"/></svg>'}getDefaults(){return{level:"basic",color:"#4ae2c4",opacity:.3}}getUISchema(){return[{type:"select",key:"level",label:"Detail",default:"basic",options:[{value:"basic",label:"Basic (diagonals)"},{value:"mid",label:"Mid (+ midpoints)"},{value:"full",label:"Full armature"}]},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#4ae2c4"},{type:"range",key:"opacity",label:"Opacity",default:.3,min:0,max:1,step:.01}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{level:o,color:a,opacity:l}=n,c=t,u=i,d=c/2,h=u/2;if(s.appendChild(this.createLine(0,0,c,u,a,l)),s.appendChild(this.createLine(c,0,0,u,a,l)),(o==="mid"||o==="full")&&(s.appendChild(this.createLine(d,0,0,u,a,l*.7)),s.appendChild(this.createLine(d,0,c,u,a,l*.7)),s.appendChild(this.createLine(d,u,0,0,a,l*.7)),s.appendChild(this.createLine(d,u,c,0,a,l*.7)),s.appendChild(this.createLine(0,h,c,0,a,l*.7)),s.appendChild(this.createLine(0,h,c,u,a,l*.7)),s.appendChild(this.createLine(c,h,0,0,a,l*.7)),s.appendChild(this.createLine(c,h,0,u,a,l*.7))),o==="full"){let b=c/4,m=u/4;s.appendChild(this.createLine(b,0,b,u,a,l*.4)),s.appendChild(this.createLine(c-b,0,c-b,u,a,l*.4)),s.appendChild(this.createLine(0,m,c,m,a,l*.4)),s.appendChild(this.createLine(0,u-m,c,u-m,a,l*.4)),s.appendChild(this.createLine(d,0,d,u,a,l*.3)),s.appendChild(this.createLine(0,h,c,h,a,l*.3))}}};var di="http://www.w3.org/2000/svg",Lt=class Lt extends D{constructor(){super(...arguments);this.type="dot-grid";this.label="Dot Grid";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="4" cy="4" r="1" fill="currentColor" opacity="0.5"/><circle cx="8" cy="4" r="1" fill="currentColor" opacity="0.5"/><circle cx="12" cy="4" r="1" fill="currentColor" opacity="0.5"/><circle cx="4" cy="8" r="1" fill="currentColor" opacity="0.5"/><circle cx="8" cy="8" r="1" fill="currentColor" opacity="0.5"/><circle cx="12" cy="8" r="1" fill="currentColor" opacity="0.5"/><circle cx="4" cy="12" r="1" fill="currentColor" opacity="0.5"/><circle cx="8" cy="12" r="1" fill="currentColor" opacity="0.5"/><circle cx="12" cy="12" r="1" fill="currentColor" opacity="0.5"/></svg>'}getDefaults(){return{step:16,stepUnit:"px",dotSize:1.5,shape:"dot",color:"#a0a0a0",opacity:.4}}getUISchema(){return[{type:"range",key:"step",label:"Step",default:16,min:4,max:100,step:1,units:Lt.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"dotSize",label:"Size",default:1.5,min:.5,max:6,step:.5},{type:"select",key:"shape",label:"Shape",default:"dot",options:[{value:"dot",label:"Dot \u25CF"},{value:"cross",label:"Cross +"}]},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#a0a0a0"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{step:o,stepUnit:a,dotSize:l,shape:c,color:u,opacity:d}=n,h=this.resolveUnit(o,a||"px",Math.min(t,i));h<2||(c==="cross"?this.renderCrosses(s,t,i,h,l,u,d):this.renderDots(s,t,i,h,l,u,d))}renderDots(e,t,i,n,s,o,a){for(let l=n;l<i;l+=n)for(let c=n;c<t;c+=n){let u=document.createElementNS(di,"circle");u.setAttribute("cx",String(c)),u.setAttribute("cy",String(l)),u.setAttribute("r",String(s)),u.setAttribute("fill",o),u.setAttribute("fill-opacity",String(a)),e.appendChild(u)}}renderCrosses(e,t,i,n,s,o,a){let l=s*2;for(let c=n;c<i;c+=n)for(let u=n;u<t;u+=n)e.appendChild(this.createLine(u-l,c,u+l,c,o,a,.8)),e.appendChild(this.createLine(u,c-l,u,c+l,o,a,.8))}};Lt.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vw",label:"vw"}];var Pt=Lt;var Ot=class extends D{constructor(){super(...arguments);this.type="pentagram";this.label="Pentagram";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><polygon points="8,1 9.8,6.2 15,6.2 10.8,9.5 12.4,15 8,11.5 3.6,15 5.2,9.5 1,6.2 6.2,6.2" stroke="currentColor" stroke-opacity="0.5" fill="none" stroke-width="0.8"/></svg>'}getDefaults(){return{sizing:"stretch",rotation:0,showPentagon:!0,showStar:!0,color:"#b07ee8",opacity:.45}}getUISchema(){return[{type:"select",key:"sizing",label:"Sizing",default:"stretch",options:[{value:"stretch",label:"Stretch"},{value:"fit",label:"Fit"},{value:"fill",label:"Fill"}]},{type:"range",key:"rotation",label:"Rotation",default:0,min:0,max:360,step:1},{type:"toggle",key:"showPentagon",label:"Pentagon",default:!0},{type:"toggle",key:"showStar",label:"Star",default:!0},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#b07ee8"},{type:"range",key:"opacity",label:"Opacity",default:.45,min:0,max:1,step:.01}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{sizing:o,rotation:a,showPentagon:l,showStar:c,color:u,opacity:d}=n,h=1,b=(a-90)*Math.PI/180,m=[];for(let O=0;O<5;O++){let T=b+O*(2*Math.PI/5);m.push([Math.cos(T),Math.sin(T)])}let g=m[0][0],f=m[0][0],y=m[0][1],v=m[0][1];for(let[O,T]of m)O<g&&(g=O),O>f&&(f=O),T<y&&(y=T),T>v&&(v=T);let S=f-g,x=v-y,P=(g+f)/2,w=(y+v)/2,L,E;switch(o){case"fit":{let O=Math.min(t/S,i/x)*h;L=O,E=O;break}case"fill":{let O=Math.max(t/S,i/x)*h;L=O,E=O;break}default:L=t/S*h,E=i/x*h;break}let R=m.map(([O,T])=>[t/2+(O-P)*L,i/2+(T-w)*E]);if(l){let O=R.map((T,F)=>`${F===0?"M":"L"} ${T[0]} ${T[1]}`).join(" ")+" Z";s.appendChild(this.createPath(O,u,d*.5,1))}if(c){let T=[0,2,4,1,3].map((F,I)=>{let A=R[F];return`${I===0?"M":"L"} ${A[0]} ${A[1]}`}).join(" ")+" Z";s.appendChild(this.createPath(T,u,d,1))}}};var It=class extends D{constructor(){super(...arguments);this.type="rabatment";this.label="Rabatment";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="14" height="14" rx="0.5" stroke="currentColor" stroke-opacity="0.2"/><rect x="1" y="1" width="10" height="14" rx="0.3" stroke="currentColor" stroke-opacity="0.5"/><line x1="11" y1="1" x2="11" y2="15" stroke="currentColor" stroke-opacity="0.5" stroke-dasharray="2 1"/></svg>'}getDefaults(){return{side:"both",showDiagonals:!1,color:"#56b886",opacity:.4}}getUISchema(){return[{type:"select",key:"side",label:"Side",default:"both",options:[{value:"both",label:"Both"},{value:"start",label:"Start"},{value:"end",label:"End"}]},{type:"toggle",key:"showDiagonals",label:"Diagonals",default:!1},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#56b886"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01}]}render(e,t,i,n){let s=this.getGroup(e,n.__instanceId),{side:o,showDiagonals:a,color:l,opacity:c}=n,u=t>=i,d=Math.min(t,i);u?this.renderLandscape(s,t,i,d,o,a,l,c):this.renderPortrait(s,t,i,d,o,a,l,c)}renderLandscape(e,t,i,n,s,o,a,l){if((s==="both"||s==="start")&&(e.appendChild(this.createRect(0,0,n,i,a,l*.15)),e.appendChild(this.createLine(n,0,n,i,a,l,1)),o&&(e.appendChild(this.createLine(0,0,n,i,a,l*.5,.8)),e.appendChild(this.createLine(n,0,0,i,a,l*.5,.8)))),s==="both"||s==="end"){let c=t-n;e.appendChild(this.createRect(c,0,n,i,a,l*.15)),e.appendChild(this.createLine(c,0,c,i,a,l,1)),o&&(e.appendChild(this.createLine(c,0,t,i,a,l*.5,.8)),e.appendChild(this.createLine(t,0,c,i,a,l*.5,.8)))}}renderPortrait(e,t,i,n,s,o,a,l){if((s==="both"||s==="start")&&(e.appendChild(this.createRect(0,0,t,n,a,l*.15)),e.appendChild(this.createLine(0,n,t,n,a,l,1)),o&&(e.appendChild(this.createLine(0,0,t,n,a,l*.5,.8)),e.appendChild(this.createLine(t,0,0,n,a,l*.5,.8)))),s==="both"||s==="end"){let c=i-n;e.appendChild(this.createRect(0,c,t,n,a,l*.15)),e.appendChild(this.createLine(0,c,t,c,a,l,1)),o&&(e.appendChild(this.createLine(0,c,t,i,a,l*.5,.8)),e.appendChild(this.createLine(t,c,0,i,a,l*.5,.8)))}}};function Vr(p,r){return p.id||r.id}var ur=class extends C{constructor(e){super(e);this.gridManager=new ct;this.overlays=new Map;this.huds=new Map;this.elementMap=new Map;this.htmlKey="grid",this._type=2,this.attributesToMap=[]}onInit(){this.registerBuiltInAdapters(),this.registerExternalAdapters(),this.injectStyles()}onObjectConnected(e){let t=e.htmlElement,i=Vr(t,e);this.elementMap.set(i,t),this.gridManager.load(i);let n=new ut(t);this.overlays.set(i,n);let s=new vt(t,this.gridManager.getAdapterRegistry(),{onAdd:o=>this.handleAdd(i,o),onRemove:o=>this.handleRemove(i,o),onToggle:o=>this.handleToggle(i,o),onSettingChange:(o,a,l)=>this.handleSettingChange(i,o,a,l)});this.huds.set(i,s),this.renderElement(i),this.refreshHUD(i)}onObjectDisconnected(e){let t=e.htmlElement,i=Vr(t,e);this.destroyElement(i)}onResize(){for(let[e,t]of this.overlays)t.syncViewBox(),this.renderElement(e)}destroy(){for(let[e]of this.overlays)this.destroyElement(e);this.gridManager.clear(),super.destroy()}handleAdd(e,t){this.gridManager.addInstance(e,t),this.renderElement(e),this.refreshHUD(e)}handleRemove(e,t){let i=this.gridManager.findInstance(e,t);if(i){let n=this.gridManager.getAdapter(i.type),s=this.overlays.get(e);n&&s&&s.clearInstance(t,n)}this.gridManager.removeInstance(e,t),this.refreshHUD(e)}handleToggle(e,t){this.gridManager.toggleVisibility(e,t),this.renderElement(e),this.refreshHUD(e)}handleSettingChange(e,t,i,n){this.gridManager.updateSetting(e,t,i,n),this.renderElement(e)}renderElement(e){let t=this.overlays.get(e);if(!t)return;let i=this.gridManager.getInstances(e);t.render(i,this.gridManager.getAdapterRegistry())}refreshHUD(e){let t=this.huds.get(e);if(!t)return;let i=this.gridManager.getInstances(e);t.refresh(i)}destroyElement(e){this.overlays.get(e)?.destroy(),this.overlays.delete(e),this.huds.get(e)?.destroy(),this.huds.delete(e),this.elementMap.delete(e)}registerBuiltInAdapters(){let e=[new St,new xt,new Et,new Mt,new wt,new Ct,new Tt,new Pt,new Ot,new It];for(let t of e)this.gridManager.registerAdapter(t)}registerExternalAdapters(){let e=this.settings.adapters;if(e)for(let t of e)this.gridManager.registerAdapter(t)}injectStyles(){let e="string-grid-styles";if(document.getElementById(e))return;let t=document.createElement("style");t.id=e,t.textContent=`
28
- [data-string-grid-hud]::-webkit-scrollbar {
29
- width: 4px;
30
- }
31
- [data-string-grid-hud]::-webkit-scrollbar-track {
32
- background: transparent;
33
- }
34
- [data-string-grid-hud]::-webkit-scrollbar-thumb {
35
- background: rgba(255,255,255,0.1);
36
- border-radius: 2px;
37
- }
38
- [data-string-grid-hud]::-webkit-scrollbar-thumb:hover {
39
- background: rgba(255,255,255,0.2);
40
- }
41
- `,document.head.appendChild(t)}};function pi(){return"ontouchstart"in window||navigator.maxTouchPoints>0}var zr=class p{constructor(){this.pendingScroll=!1;this.lastScrollEmitted=NaN;this.observerContainerMutation=null;this.pendingResizeRaf=null;this.pendingResizeForce=!1;this.prevWidth=0;this.prevHeight=0;this.loop=new st;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=Rr(()=>{this.queueResize(!1)},30);this.root=document.body,this.window=window,this.tools=new Qe,this.data=new Ye,this.eventManager=new oe,this.moduleManager=new De(this.data),this.objectManager=new Ne(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new at,this.hoverManager=new lt,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new Re(1,this.context),this.scrollManager=new We(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.queueResize(!1)},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.onScrollToBind=this.scrollTo.bind(this),this.onDOMChangedBind=this.onDOMChanged.bind(this),this.eventManager.on("wheel",this.onWheelBind),this.eventManager.on("resize",this.onResizeBind),this.eventManager.on("scrollTo",this.onScrollToBind),this.eventManager.on("dom:changed",this.onDOMChangedBind),this.scrollManager.bindEvents({onScrollStart:this.onScrollStartBind,onScrollStop:this.onScrollStopBind,onDirectionChange:this.onDirectionChangeBind}),this.loop.setOnFrame(r=>{this.data.time.delta=r-this.data.time.now,this.data.time.previous=this.data.time.now,this.data.time.now=r,this.data.time.elapsed+=this.data.time.delta,this.onUpdateEvent()}),this.on("image:load:all",()=>{this.onResize()}),this.scrollContainer=window}set scrollPosition(r){this.data.scroll.current=r,this.data.scroll.target=r,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(r){this.observerContainerResize?.unobserve(this.context.data.scroll.container),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),r instanceof Window?(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=r):r instanceof HTMLElement?(this.data.scroll.container=r,this.data.scroll.elementContainer=r,this.data.scroll.scrollContainer=r):(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=r),this.data.scroll.elementContainer.addEventListener("transitionend",this.onContainerTransitionEndBind),this.observerContainerResize?.observe(this.context.data.scroll.container),this.observeContainerMutations(),this.queueResize(!0)}get scrollPosition(){return this.data.scroll.current}get scrollHeight(){return this.data.viewport.contentHeight}get containerHeight(){return this.data.viewport.windowHeight}set speed(r){this.data.scroll.speed=r}set speedAccelerate(r){this.data.scroll.speedAccelerate=.1+(.5-.1)*r}set scrollDesktopMode(r){this.scrollManager.setDesktopMode(r)}set scrollMobileMode(r){this.scrollManager.setMobileMode(r)}set FPSTrackerVisible(r){this.data.system.fpsTracker=r,this.eventManager.emit("tracker:fps:visible",r)}set PositionTrackerVisible(r){this.data.system.positionTracker=r,this.eventManager.emit("tracker:position:visible",r)}set domBatcherEnabled(r){this.objectManager.setDOMBatcherEnabled(r)}set intersectionObserverEnabled(r){this.objectManager.setIntersectionObserverEnabled(r)}static getInstance(){return p.i||(p.i=new p),p.i}reuse(r){return this.moduleManager.find(r)}use(r,e=null){let t={...this.context.settings,...e},i=new r({events:this.eventManager,data:this.data,tools:this.tools,settings:t,centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager});this.moduleManager.register(i)}registerScrollMode(r,e){let t;if(typeof e=="function"&&e.prototype instanceof $){let i=e;t=new i(this.context)}else t=e(this.context);t.name||(t.name=r),this.scrollManager.registerMode(r,t)}on(r,e,t=""){this.eventManager.on(r,e,t)}emit(r,e){this.eventManager.emit(r,e)}off(r,e,t=""){this.eventManager.off(r,e,t)}addScrollMark(r){this.scrollManager.addScrollMark(r)}removeScrollMark(r){this.scrollManager.removeScrollMark(r)}start(r){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),this.observeContainerMutations(),this.use(et);let e=window.getComputedStyle(document.documentElement).fontSize,t=parseFloat(e);this.context.data.viewport.baseRem=t,document.documentElement.classList.add("-string"),this.moduleManager.onInit(),this.onResize(),this.initObjects(),this.objectManager.observeDOM(),this.loop.start(r),this.eventManager.emit("start",null)}initObjects(){document.querySelectorAll("[string],[data-string]").forEach(r=>{this.objectManager.add(r)}),document.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(r=>{let e=this.tools.domAttribute.process({element:r,key:"copy-from",fallback:""});e&&e.length>0&&this.objectManager.linkMirror(e,r)}),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame()}setupSettings(r){this.context.settings={...this.context.settings,...r},this.onSettingsChange({isDesktop:this.data.viewport.windowWidth>1024,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0,isForceRebuild:!1})}onResizeObserverEvent(){this.debouncedResize()}onContainerTransitionEnd(r){r.target===this.context.data.scroll.container&&this.queueResize(!0)}onDOMChanged(){this.queueResize(!1),this.debouncedResize()}observeContainerMutations(){this.observerContainerMutation?.disconnect();let r=this.context.data.scroll.container;r&&(this.observerContainerMutation=new MutationObserver(e=>{for(let t=0;t<e.length;t++){let i=e[t];if(i.type==="attributes"&&(i.attributeName==="style"||i.attributeName==="class")){this.queueResize(!1),this.debouncedResize();break}}}),this.observerContainerMutation.observe(r,{attributes:!0,attributeFilter:["style","class"]}))}queueResize(r=!1){r&&(this.pendingResizeForce=!0),this.pendingResizeRaf==null&&(this.pendingResizeRaf=requestAnimationFrame(()=>{this.pendingResizeRaf=null;let e=this.pendingResizeForce;this.pendingResizeForce=!1,this.onResize(e)}))}onMouseMoveEvent(r){this.cursorController.onMouseMove(r),this.moduleManager.onMouseMove(r),V.measure(()=>{this.moduleManager.onMouseMoveMeasure()})}onWheelEvent(r){r.target.closest("[string-isolation],[data-string-isolation]")==null&&(this.scrollManager.get().onWheel(r),this.moduleManager.onWheel(r))}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(r){this.cursorController.onSettingsChange(r),this.objectManager.onSettingsChange(r),this.moduleManager.onSettingsChange(r)}onScrollEvent(r){return r.preventDefault(),this.context.centers.invalidateAll(),this.scrollManager.get().onScroll(r),this.pendingScroll=!0,!1}onUpdateEvent(){this.cursorController.onFrame(),this.scrollManager.get().onFrame(),this.moduleManager.onFrame(),(this.pendingScroll||this.data.scroll.current!==this.lastScrollEmitted)&&(this.pendingScroll=!1,this.moduleManager.onScroll(),this.objectManager.checkInview(),this.eventManager.emit("lerp",this.data.scroll.lerped),this.eventManager.emit("scroll",this.data.scroll.current),V.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),V.mutate(()=>{M.begin(),this.moduleManager.onMutate(),M.commit()}),this.eventManager.emit("update",null),V.flush()}onResize(r=!1){if(this.canRebuild==!1)return;let e=this.data.scroll.container,t=this.context.data.scroll,i=0,n=0;var s,o=0;let a=e.getBoundingClientRect();e.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),o=e.tagName==="BODY"?0:a.top,s=t.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(e).transform});this.context.data.viewport.transformScale=window.getComputedStyle(e).scale=="none"?l:Number(window.getComputedStyle(e).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let c=pi(),u=i>1024,d=this.prevWidth!==i,h=this.prevHeight!==n,b=Math.abs(this.prevHeight-n),m=this.context.data.viewport.contentHeight!==s,g=d||!c&&h||c&&b>150||m;this.context.data.scroll.topPosition=Math.floor(o),this.context.data.viewport.contentWidth=i,this.context.data.viewport.contentHeight=s,this.prevWidth=i,this.prevHeight=n,this.context.data.viewport.windowWidth=i,this.context.data.viewport.windowHeight=n;let f=window.getComputedStyle(document.documentElement).fontSize,y=parseFloat(f);if(this.context.data.viewport.baseRem=y*l,t.bottomPosition=this.context.data.viewport.contentHeight-n,(d||typeof r=="boolean"&&r)&&this.moduleManager.onResizeWidth(),g||typeof r=="boolean"&&r){let v=this.context.data.scroll.elementContainer.scrollTop;v>0&&(this.context.data.scroll.current=v,this.context.data.scroll.target=v),this.moduleManager.onResize(),this.scrollManager&&this.scrollManager.updateResponsiveMode(),this.onSettingsChange({isDesktop:u,widthChanged:d,heightChanged:h,scrollHeightChanged:m,isForceRebuild:r===!0}),this.objectManager.invalidateInviewIndex(),this.moduleManager.onScroll(),this.moduleManager.onScrollMeasure(),this.moduleManager.onFrame()}this.objectManager.checkInview()}invalidateCenter(r){this.objectManager.all.get(r)&&this.centers.invalidate(r)}scrollTo(r){if(typeof r=="number"){this.scrollManager.get().scrollTo(r);return}let e=r.position,t=r.immediate===!0;this.scrollManager.get().scrollTo(e,t)}destroy(){this.data.scroll.scrollContainer?.removeEventListener("scroll",this.onScrollBind),this.data.scroll.container?.removeEventListener("wheel",this.onWheelBind),window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.eventManager.off("dom:changed",this.onDOMChangedBind),this.observerContainerMutation?.disconnect(),this.observerContainerMutation=null,this.pendingResizeRaf!=null&&(cancelAnimationFrame(this.pendingResizeRaf),this.pendingResizeRaf=null),this.objectManager.destroy(),this.scrollManager.destroy()}};export{Pe as CursorReactiveModule,de as DOMBatcher,D as GridAdapter,$ as ScrollController,$t as StringAnchor,Dt as StringCursor,Ye as StringData,Qt as StringDelayLerpTracker,Zt as StringFPSTracker,nr as StringForm,jt as StringGlide,ur as StringGrid,Ft as StringImpulse,Wt as StringLazy,Gt as StringLerp,Jt as StringLerpTracker,Bt as StringLoading,Vt as StringMagnetic,Nt as StringMasonry,C as StringModule,ue as StringObject,qt as StringParallax,er as StringPositionTracker,Le as StringProgress,ar as StringProgressPart,lr as StringRandom,Ut as StringResponsive,or as StringScrollContainer,Yt as StringScrollbar,sr as StringScroller,ir as StringSequence,Kt as StringSplit,_t as StringSpotlight,zr as StringTune,tr as StringVideoAutoplay,zr as default,V as frameDOM,M as styleTxn};
27
+ `,document.head.appendChild(i)}this.displayElement=e}};function sr(u,r){let e=null;return function(...t){let i=this;e&&clearTimeout(e),e=setTimeout(()=>{u.apply(i,t),e=null},r)}}var tt=class{constructor(){this.fps=0;this.isAnimationStarted=!1;this.fpsInterval=0;this.then=0;this.requestAnimationId=0;this.onFrameCallback=r=>{};this.animate=()=>{};this.onVisibilityChangeBind=this.onVisibilityChange.bind(this)}onVisibilityChange(){document.hidden?(this.stop(),this.isAnimationStarted=!1):this.start(this.fps)}start(r){this.fps=r,!this.isAnimationStarted&&(this.fpsInterval=1e3/r,this.then=performance.now(),this.isAnimationStarted=!0,r===0?this.animate=()=>{let e=performance.now();this.requestAnimationId=requestAnimationFrame(this.animate),this.onFrameCallback(e)}:this.animate=()=>{let e=performance.now(),t=e-this.then;t>this.fpsInterval&&(this.then=e-t%this.fpsInterval,this.onFrameCallback(e)),this.requestAnimationId=requestAnimationFrame(this.animate)},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(r){this.onFrameCallback=r}destructor(){this.stop()}};var Ot=class extends x{constructor(r){super(r),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(r){r.setProperty("onEnterEvent",this.onEnterObject.bind(this)),r.events.on("enter",r.getProperty("onEnterEvent")),r.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),r.events.on("leave",r.getProperty("onLeaveEvent"));let e=r.htmlElement,t=this.tools.domAttribute.process({element:e,key:"string-started",fallback:null})!==null;e.tagName.toLowerCase()==="video"&&!t&&(e.setAttribute("string-started",""),e.muted=!0,e.setAttribute("muted","muted"),e.setAttribute("playsinline",""),e.setAttribute("loop",""),e.setAttribute("autoplay",""),e.src=r.getProperty("src"),e.load(),e.addEventListener("canplay",()=>{}))}onEnterObject(r){let e=r.htmlElement;this.tryPlay(e)}onLeaveObject(r){r.htmlElement.pause()}tryPlay(r){r.play().catch(e=>console.warn("[StringVideoAutoplay] Autoplay failed:",e))}};var At=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(At||{}),or={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var rt=class rt extends x{constructor(e){super(e);this.activeStep=new Map;this.leavingStep=new Map;this.transitions=new Map;this.elementIndex=new Map;this.triggerElements=new Map;this.globalSettings=new Map;this.stateRegistered=new Set;this.lastEnteredStep=new Map;this.initialized=!1;this.onTriggerClick=e=>{let t=this.triggerElements.get(e.currentTarget);if(!t)return;let i=this.activeStep.get(t.slider)??0,n=this.getMaxStep(t.slider),s,o;if(t.step==="next"){if(s=i+1,o=1,!this.elementIndex.has(`${t.slider}[${s}]`))if(t.loop&&n>=0)s=0;else return}else if(t.step==="prev"){if(s=i-1,o=-1,s<0)if(t.loop&&n>=0)s=n;else return;if(!this.elementIndex.has(`${t.slider}[${s}]`))return}else{if(s=t.step,i===s)return;o=s>i?1:-1}this.startTransition(t.slider,s,o)};this.htmlKey="sequence",this.defaultDuration=this.settings["sequence-duration"]??600,this.attributesToMap=[...this.attributesToMap,{key:"sequence",type:"string",fallback:""},{key:"sequence-trigger",type:"string",fallback:""},{key:"entering-easing",type:"string",fallback:""},{key:"leaving-easing",type:"string",fallback:""},{key:"entering-duration",type:"string",fallback:""},{key:"leaving-duration",type:"string",fallback:""},{key:"sequence-duration",type:"string",fallback:""},{key:"active-step",type:"string",fallback:""}]}onInit(){super.onInit(),this.events.on("sequence",this.onSequenceEvent.bind(this)),this.scanStandaloneTriggers()}scanStandaloneTriggers(){let e=document.querySelectorAll("[string-sequence-trigger]:not([string-inited])");for(let t of Array.from(e)){let i=t.getAttribute("string-sequence-trigger"),n=i?this.parseTriggerKey(i):null;n&&(this.triggerElements.set(t,n),t.addEventListener("click",this.onTriggerClick))}}parseGlobalSettingsFromObject(e){let t=n=>e.getProperty(n),i=t("sequence-duration");this.tryParseGlobalSetting(i,"enteringDuration"),this.tryParseGlobalSetting(i,"leavingDuration"),this.tryParseGlobalSetting(t("entering-duration"),"enteringDuration"),this.tryParseGlobalSetting(t("leaving-duration"),"leavingDuration"),this.tryParseGlobalSetting(t("entering-easing"),"enteringEasing"),this.tryParseGlobalSetting(t("leaving-easing"),"leavingEasing"),this.tryParseGlobalSetting(t("active-step"),"activeStep")}tryParseGlobalSetting(e,t){if(!e)return;let i=e.match(/^(.+)\[(.+)\]$/);if(!i)return;let[,n,s]=i,o=this.globalSettings.get(n)??{};this.globalSettings.set(n,o),o[t]=t==="enteringEasing"||t==="leavingEasing"?s:parseFloat(s),this.applyGlobalSettingsToExistingObjects(n)}applyGlobalSettingsToExistingObjects(e){let t=this.globalSettings.get(e);if(t){for(let[i,n]of this.elementIndex)if(this.parseSequenceKey(i)?.slider===e){t.enteringDuration!==void 0&&(n.enteringDuration=t.enteringDuration),t.leavingDuration!==void 0&&(n.leavingDuration=t.leavingDuration);for(let o of n.objects)this.resolveEasings(o,i)}}}initializeSliders(){let e=new Set;for(let t of this.elementIndex.keys()){let i=this.parseSequenceKey(t);i&&e.add(i.slider)}for(let t of e){if(this.activeStep.has(t))continue;let n=this.globalSettings.get(t)?.activeStep??0;this.elementIndex.has(`${t}[${n}]`)||(n=0),this.switchInstant(t,n,1)}}tryApplyPendingActiveStep(e){if(this.activeStep.has(e))return;let t=this.globalSettings.get(e)?.activeStep;t!==void 0&&this.elementIndex.has(`${e}[${t}]`)&&this.switchInstant(e,t,1)}canConnect(e){return e.keys.includes("sequence")||e.keys.includes("sequence-trigger")}onObjectConnected(e){super.onObjectConnected(e),this.parseGlobalSettingsFromObject(e);let t=e.getProperty("sequence"),i=e.getProperty("sequence-trigger");if(!t&&i){let n=this.parseTriggerKey(i);n&&typeof n.step=="number"&&(t=`${n.slider}[${n.step}]`,e.setProperty("sequence",t))}if(t){let n=this.parseSequenceKey(t);if(n){this.ensureStateEventRegistered(n.slider);let s=this.elementIndex.get(t);if(!s){let{enteringDuration:a,leavingDuration:l}=this.resolveDurations(e,t);s={objects:[],enteringDuration:a,leavingDuration:l},this.elementIndex.set(t,s)}s.objects.push(e),this.resolveEasings(e,t);let o=this.activeStep.get(n.slider);this.setState(e,o===n.step?"-active":"-disabled",o===n.step?1:0,1),this.tryApplyPendingActiveStep(n.slider)}}if(i){let n=this.parseTriggerKey(i);n&&(this.triggerElements.set(e.htmlElement,n),e.htmlElement.addEventListener("click",this.onTriggerClick))}}ensureStateEventRegistered(e){this.stateRegistered.has(e)||(this.stateRegistered.add(e),this.events.registerStateEvent?.(`sequence:active:${e}`))}parseTriggerKey(e){let t=e.match(/^(.+)\[(next|prev|\d+)(\|loop)?\]$/);if(!t)return null;let i=t[2]==="next"||t[2]==="prev"?t[2]:parseInt(t[2],10);return{slider:t[1],step:i,loop:t[3]==="|loop"}}getMaxStep(e){let t=-1;for(let i of this.elementIndex.keys()){let n=this.parseSequenceKey(i);n?.slider===e&&n.step>t&&(t=n.step)}return t}resolveDuration(e,t,i,n){let s=e.getProperty(n),o=e.getProperty("sequence-duration"),a=this.globalSettings.get(t)?.[i];if(s&&!s.includes("[")){let l=parseFloat(s);if(!isNaN(l))return l}if(o&&!o.includes("[")){let l=parseFloat(o);if(!isNaN(l))return l}return a??this.defaultDuration}resolveDurations(e,t){let i=this.parseSequenceKey(t)?.slider??"";return{enteringDuration:this.resolveDuration(e,i,"enteringDuration","entering-duration"),leavingDuration:this.resolveDuration(e,i,"leavingDuration","leaving-duration")}}resolveEasing(e,t,i,n){let s=e.getProperty(n);(!s||typeof s=="string"&&s.includes("["))&&(s=this.globalSettings.get(t)?.[i]??this.settings.easing??"ease-out"),typeof s=="string"&&e.setProperty(n,this.tools.easingFunction.process({easing:s}))}resolveEasings(e,t){let i=this.parseSequenceKey(t)?.slider;i&&(this.resolveEasing(e,i,"enteringEasing","entering-easing"),this.resolveEasing(e,i,"leavingEasing","leaving-easing"))}onObjectDisconnected(e){super.onObjectDisconnected(e);let t=e.getProperty("sequence");if(t){let i=this.elementIndex.get(t);if(i){let n=i.objects.indexOf(e);n!==-1&&i.objects.splice(n,1),i.objects.length||this.elementIndex.delete(t)}}this.triggerElements.has(e.htmlElement)&&(e.htmlElement.removeEventListener("click",this.onTriggerClick),this.triggerElements.delete(e.htmlElement))}parseSequenceKey(e){let t=e.match(/^(.+)\[(\d+)\]$/);return t?{slider:t[1],step:parseInt(t[2],10)}:null}onSequenceEvent(e){let{slider:t,step:i,transitionProgress:n,direction:s=1,duration:o,instant:a}=e;this.activeStep.get(t)===i&&n===void 0||(n!==void 0?this.handleScrub(t,i,n,s):a?this.switchInstant(t,i,s):this.startTransition(t,i,s,o))}startTransition(e,t,i,n){let s=this.activeStep.get(e),o=this.leavingStep.get(e);this.ensureStateEventRegistered(e),o!==void 0&&o!==s&&this.setStepState(e,o,"-disabled",0,i);let a=this.elementIndex.get(`${e}[${t}]`),l=s!==void 0?this.elementIndex.get(`${e}[${s}]`):null;s!==void 0&&this.leavingStep.set(e,s),this.activeStep.set(e,t),this.emitActiveState(e,t);let c={fromStep:s??t,toStep:t,direction:i,startTime:this.data.time.now,enteringDuration:n??a?.enteringDuration??this.defaultDuration,leavingDuration:n??l?.leavingDuration??this.defaultDuration};this.transitions.set(e,c),this.emitTransitionStart(e,c)}handleScrub(e,t,i,n){this.transitions.delete(e);let s=this.activeStep.get(e);if(s!==t){let a=this.leavingStep.get(e);a!==void 0&&this.setStepState(e,a,"-disabled",0,n),s!==void 0&&this.leavingStep.set(e,s),this.activeStep.set(e,t),this.emitActiveState(e,t)}let o=this.leavingStep.get(e)??s??t;this.applyProgress(e,o,t,i,i,n)}switchInstant(e,t,i){this.transitions.delete(e);let n=this.activeStep.get(e),s=this.leavingStep.get(e);s!==void 0&&this.setStepState(e,s,"-disabled",0,i),n!==void 0&&n!==t&&this.setStepState(e,n,"-disabled",0,i),this.activeStep.set(e,t),this.leavingStep.delete(e),this.setStepState(e,t,"-active",1,i),this.emitActiveState(e,t),s!==void 0&&s!==t?this.emitStepLeave(e,s,i,!0):n!==void 0&&n!==t&&this.emitStepLeave(e,n,i,!0),this.emitStepEnter(e,t,i,!0);let o={fromStep:n??t,toStep:t,direction:i,startTime:this.data.time.now,enteringDuration:0,leavingDuration:0};this.emitTransitionStart(e,o),this.emitTransitionEnd(e,t,n??t,i,!0)}applyProgress(e,t,i,n,s,o){let a=this.activeStep.get(e),l=this.leavingStep.get(e);this.setStepState(e,a,n>=1?"-active":"-entering",n,o),l!==void 0&&l!==a&&(s>=1?(this.setStepState(e,l,"-disabled",0,o),this.leavingStep.delete(e),this.emitStepLeave(e,l,o,!1)):this.setStepState(e,l,"-leaving",s,o)),this.emitTransitionProgress(e,t,i,n,s,o),n>=1&&this.emitStepEnter(e,a,o,!1)}setStepState(e,t,i,n,s){let o=this.elementIndex.get(`${e}[${t}]`);if(o)for(let a of o.objects)this.setState(a,i,n,s)}setState(e,t,i,n){let s=e.htmlElement,o=e.getProperty("_state"),a=e.getProperty("_direction"),l=e.getProperty(t==="-leaving"?"leaving-easing":"entering-easing"),c=typeof l=="function"?l(i):i;o!==t&&(s.classList.remove(...rt.ALL_STATES),s.classList.add(t),e.setProperty("_state",t)),a!==n&&(e.setProperty("_direction",n),M.run(()=>M.setVars(s,{[or.DIRECTION]:n.toString()})))}onFrame(e){super.onFrame(e),this.initialized||(this.initialized=!0,this.initializeSliders());for(let[t,i]of this.transitions){let n=e.time.now-i.startTime,s=Math.min(1,n/i.enteringDuration),o=Math.min(1,n/i.leavingDuration);this.applyProgress(t,i.fromStep,i.toStep,s,o,i.direction),s>=1&&o>=1&&(this.emitTransitionEnd(t,i.toStep,i.fromStep,i.direction,!1),this.transitions.delete(t))}}emitTransitionStart(e,t){let i={slider:e,from:t.fromStep,to:t.toStep,direction:t.direction,enteringDuration:t.enteringDuration,leavingDuration:t.leavingDuration,startedAt:t.startTime};this.events.emit("sequence:transition:start",i),this.events.emit(`sequence:transition:start:${e}`,i)}emitTransitionProgress(e,t,i,n,s,o){let a={slider:e,from:t,to:i,entering:n,leaving:s,direction:o};this.events.emit("sequence:transition:progress",a),this.events.emit(`sequence:transition:progress:${e}`,a)}emitTransitionEnd(e,t,i,n,s){let o={slider:e,from:i,to:t,direction:n,instant:s};this.events.emit("sequence:transition:end",o),this.events.emit(`sequence:transition:end:${e}`,o)}emitStepEnter(e,t,i,n){if(!n&&this.lastEnteredStep.get(e)===t)return;this.lastEnteredStep.set(e,t);let s={slider:e,step:t,direction:i,instant:n};this.events.emit("sequence:step:enter",s),this.events.emit(`sequence:step:enter:${e}`,s)}emitStepLeave(e,t,i,n){if(t==null)return;let s={slider:e,step:t,direction:i,instant:n};this.events.emit("sequence:step:leave",s),this.events.emit(`sequence:step:leave:${e}`,s)}emitActiveState(e,t){let i={slider:e,step:t};this.events.emit("sequence:active",i),this.events.emit(`sequence:active:${e}`,i)}};rt.ALL_STATES=Object.values(At);var Dt=rt;var ee=class ee extends x{constructor(r){super(r),this.htmlKey="form"}initializeObject(r,e,t,i){super.initializeObject(r,e,t,i);let n=e.getProperty("form-events")??[];n.forEach(c=>{c.eventElement.removeEventListener(c.eventType,c.eventCallback)}),n.length=0,e.setProperty("form-events",n),super.onObjectConnected(e);let s=e.htmlElement,o=[],a={};this.getInteractiveFields(s).forEach((c,d)=>this.registerField(c,s,o,a,n,d));let l=c=>{c.preventDefault();let d=!0,h={},p=new Set;for(let b of o){let m=b.field;if(!m.isConnected||!this.shouldValidateField(m))continue;if(this.isRadioField(m)){if(p.has(b.key))continue;p.add(b.key)}let{key:g,rules:v,needsContext:y}=b,f=this.getFieldValue(m);h[g]=f,a[g]=f;let{valid:S,errors:E}=this.tools.validation.process({rules:v,value:f,context:this.buildContext(y,g,a)});this.applyValidationState(s,m,g,S,E,"submit"),S||(d=!1)}if(d)this.events.emit(`form:submit:${e.id}`,h);else{let b=new Set,m=o.find(g=>{let v=g.field;if(!v.isConnected||!this.shouldValidateField(v))return!1;if(this.isRadioField(v)){if(b.has(g.key))return!1;b.add(g.key)}let{key:y,rules:f,needsContext:S}=g,E=this.getFieldValue(v);a[y]=E;let{valid:T}=this.tools.validation.process({rules:f,value:E,context:this.buildContext(S,y,a)});return!T});m?.field&&typeof m.field.focus=="function"&&m.field.focus(),this.events.emit(`form:invalid:${e.id}`)}};s.addEventListener("submit",l),n.push({eventElement:s,eventType:"submit",eventCallback:l}),e.setProperty("form-field-entries",o),e.setProperty("form-field-values",a)}onObjectConnected(r){}onDOMMutate(r,e){this.objects.length!==0&&(r.length>0&&this.handleMutationAdditions(r),e.length>0&&this.handleMutationRemovals(e))}applyValidationState(r,e,t,i,n,s){let o=r.querySelector(`[string-input="error[${t}]"]`),a=r.querySelector(`[string-input="group[${t}]"]`);o&&(o.innerHTML="",n.forEach(c=>{let d=document.createElement("span");d.textContent=c,o.appendChild(d)})),s==="live"?(e.classList.toggle("-invalid",!i),e.classList.remove("-error")):(e.classList.remove("-invalid"),e.classList.toggle("-error",!i)),e.classList.toggle("-valid",i),a&&(s==="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":s==="live"?"invalid":"error";this.events.emit(`form:field:${l}:${t}`,{key:t,field:e,errors:n,phase:s,valid:i})}getInteractiveFields(r){return Array.from(r.querySelectorAll("[string-input]")).filter(e=>!this.isServiceFieldAttribute(e.getAttribute("string-input")||"")).filter(e=>this.isFormFieldElement(e)).map(e=>e)}getFieldRules(r){let e=this.tools.domAttribute.process({element:r,key:"input"})??"";return this.tools.ruleParser.process({value:e})}registerField(r,e,t,i,n,s){if(!this.isFormFieldElement(r)||r.closest("form")!==e||t.some(m=>m.field===r))return;let o=this.registerFieldIndex(r,s??t.length),a=this.getInputKey(r,o),l=this.getFieldRules(r),c=this.supportsBeforeInputValidation(l),d=this.requiresContext(l),h=this.getInputEventType(r),p={field:r,key:a,rules:l,supportsRealtime:c,needsContext:d,inputEventType:h,inputHandler:()=>{}},b=m=>{let g=m.currentTarget||m.target;if(!g||!g.isConnected||!this.shouldValidateField(g))return;let v=this.getFieldValue(g);i[p.key]=v;let y=this.buildContext(p.needsContext,p.key,i),{valid:f,errors:S}=this.tools.validation.process({rules:p.rules,value:v,context:y});this.applyValidationState(e,g,p.key,f,S,"live")};if(p.inputHandler=b,r.addEventListener(h,b),n.push({eventElement:r,eventType:h,eventCallback:b}),c&&(r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement)){let m=g=>{let v=g;if(v.isComposing||v.inputType?.startsWith("insertComposition"))return;let y=g.currentTarget||g.target;if(!y||!(y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement)||!y.isConnected)return;let f=y.selectionStart??0,S=y.selectionEnd??0,E=y.value;switch(v.inputType){case"deleteContentBackward":E=f===S&&f>0?y.value.slice(0,f-1)+y.value.slice(S):y.value.slice(0,f)+y.value.slice(S);break;case"deleteContentForward":E=f===S&&f<y.value.length?y.value.slice(0,f)+y.value.slice(f+1):y.value.slice(0,f)+y.value.slice(S);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":E=y.value.slice(0,f)+(v.data||"")+y.value.slice(S);break;default:typeof v.data=="string"&&(E=y.value.slice(0,f)+v.data+y.value.slice(S))}let{errors:T}=this.tools.validation.process({rules:p.rules,value:E,type:"beforeinput",context:this.buildContext(p.needsContext,p.key,i,{applied:!0,value:E})});T.length>0&&g.cancelable&&g.preventDefault()};p.beforeInputHandler=m,r.addEventListener("beforeinput",m),n.push({eventElement:r,eventType:"beforeinput",eventCallback:m})}r.classList.add("-inited"),t.push(p),i[a]=this.getFieldValue(r)}unregisterField(r,e,t,i){let n=e.findIndex(o=>o.field===r);if(n===-1)return;let s=e[n];s.inputHandler&&r.removeEventListener(s.inputEventType,s.inputHandler),s.beforeInputHandler&&r.removeEventListener("beforeinput",s.beforeInputHandler),delete t[s.key],e.splice(n,1);for(let o=i.length-1;o>=0;o--){let a=i[o];a.eventElement===r&&(a.eventCallback===s.inputHandler||s.beforeInputHandler&&a.eventCallback===s.beforeInputHandler)&&i.splice(o,1)}r.classList.remove("-inited")}collectInteractiveFieldsFromNode(r){let e=[];return r instanceof Element?(r.hasAttribute("string-input")&&e.push(r),e.push(...Array.from(r.querySelectorAll("[string-input]")))):r instanceof DocumentFragment&&e.push(...Array.from(r.querySelectorAll("[string-input]"))),e.filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t))}isRadioField(r){return r instanceof HTMLInputElement&&r.type==="radio"}handleMutationAdditions(r){r.forEach(e=>{this.collectInteractiveFieldsFromNode(e).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(r){r.forEach(e=>{this.collectInteractiveFieldsFromNode(e).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(r){let e=this.objects.find(t=>t.htmlElement instanceof HTMLFormElement&&t.htmlElement.contains(r));return e?this.buildFormState(e):null}getFormStateByReference(r){for(let e of this.objects){let t=e.getProperty("form-field-entries");if(t&&t.some(i=>i.field===r))return this.buildFormState(e,t)}return null}buildFormState(r,e){let t=r.htmlElement;if(!(t instanceof HTMLFormElement))return null;let i=e??r.getProperty("form-field-entries"),n=r.getProperty("form-field-values"),s=r.getProperty("form-events");return!i||!n||!s?null:{object:r,form:t,entries:i,values:n,events:s}}registerFieldIndex(r,e){let t=r.getAttribute("data-string-form-index");return t!==null?Number(t):(r.setAttribute("data-string-form-index",String(e)),e)}getFieldIndex(r,e){let t=r.getAttribute("data-string-form-index");if(t!==null){let i=Number(t);return Number.isNaN(i)?e:i}return this.registerFieldIndex(r,e)}shouldValidateField(r){return!(r.disabled||r instanceof HTMLInputElement&&r.type==="hidden")}supportsBeforeInputValidation(r){return r.some(e=>ee.beforeInputRuleKeys.has(e.key))}requiresContext(r){return r.some(e=>ee.crossFieldRuleKeys.has(e.key))}buildContext(r,e,t,i){if(!r)return{fieldKey:e};let n=!!i?.applied,s=n?{...t,[e]:i.value}:t;return{fieldKey:e,values:s,getValue:o=>n&&o===e?i.value:s[o]}}getInputKey(r,e){return this.tools.domAttribute.process({element:r,key:"id"})||r.getAttribute("name")||r.getAttribute("id")||`input-${e}`}getFieldValue(r){if(r instanceof HTMLInputElement){if(r.type==="checkbox"){if(r.name){let e=r.form||r.closest("form"),t=e?Array.from(e.querySelectorAll(`input[type="checkbox"][name="${r.name}"]:checked`)):[r];return t.length>1?t.map(i=>i.value):t.length===1?t[0].value:""}return r.checked}if(r.type==="radio"){if(r.name){let t=(r.form||r.closest("form"))?.querySelector(`input[type="radio"][name="${r.name}"]:checked`);return t?t.value:""}return r.checked?r.value:""}return r.type==="file"&&r.files&&r.files.length>0?r.multiple?Array.from(r.files):r.files[0]:r.value}return r instanceof HTMLSelectElement?r.multiple?Array.from(r.selectedOptions).map(e=>e.value):r.value:r instanceof HTMLTextAreaElement?r.value:""}isServiceFieldAttribute(r){return ee.serviceAttributePrefixes.some(e=>r.startsWith(`${e}[`))}isFormFieldElement(r){return r instanceof HTMLInputElement||r instanceof HTMLSelectElement||r instanceof HTMLTextAreaElement}getInputEventType(r){return r instanceof HTMLSelectElement||r instanceof HTMLInputElement&&(r.type==="checkbox"||r.type==="radio")?"change":"input"}};ee.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),ee.crossFieldRuleKeys=new Set(["same","different","after","before"]),ee.serviceAttributePrefixes=["error","group"];var It=ee;var it=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(r){if(this.map.has(r))return;let e=r.htmlElement,t={cx:0,cy:0,valid:!1,el:e};t.ro=new ResizeObserver(()=>{t.valid=!1}),t.ro.observe(e),this.map.set(r,t),this.all.add(r)}detach(r){let e=this.map.get(r);e&&(e.ro?.disconnect(),this.map.delete(r),this.all.delete(r))}invalidate(r){this.all.forEach(e=>{if(e.id===r){let t=this.map.get(e);t&&(t.valid=!1)}})}invalidateAll(){this.all.forEach(r=>{let e=this.map.get(r);e&&(e.valid=!1)})}getCenter(r){let e=this.map.get(r);if(!e||!e.el)return{cx:0,cy:0};if(!e.valid){let t=e.el.getBoundingClientRect();e.cx=t.left+t.width/2,e.cy=t.top+t.height/2,e.valid=!0}return{cx:e.cx,cy:e.cy}}};var nt=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(r){if(this.subs.has(r))return;let e=r.htmlElement,t=()=>this.active.add(r),i=()=>this.active.delete(r);e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",i),this.subs.set(r,{enter:t,leave:i})}untrack(r){let e=this.subs.get(r);if(!e)return;let t=r.htmlElement;e.enter&&t.removeEventListener("pointerenter",e.enter),e.leave&&t.removeEventListener("pointerleave",e.leave),this.active.delete(r),this.subs.delete(r)}isActive(r){return this.active.has(r)}activeObjects(){return Array.from(this.active)}};var Rt=class extends x{constructor(r){super(r),this.htmlKey="scroller"}onObjectConnected(r){let e=r.getProperty("scroller-inited");if(e==null||e==""){r.setProperty("scroller-inited","inited");let t=i=>{this.events.emit("wheel",i)};r.setProperty("scroller-wheel-event",t),r.htmlElement.addEventListener("wheel",t)}}onObjectDisconnected(r){r.setProperty("scroller-inited",""),r.htmlElement.removeEventListener("wheel",r.getProperty("scroller-wheel-event"))}};var kt=class extends x{constructor(e){super(e);this.states=new WeakMap;this.htmlKey="scroll-container",this.attributesToMap.push({key:"lerp",type:"number",fallback:.1})}onObjectConnected(e){super.onObjectConnected(e);let t=e.htmlElement;getComputedStyle(t).overflowY==="visible"&&(t.style.overflowY="auto");let i={current:t.scrollTop,target:t.scrollTop,maxScroll:t.scrollHeight-t.clientHeight,velocity:0,lerp:e.getProperty("lerp")||.1,isDragging:!1,isActive:!1};this.states.set(t,i),t.addEventListener("wheel",n=>this.handleWheel(n,t,i),{passive:!1}),t.addEventListener("scroll",n=>this.onNativeScroll(n,t,i),{passive:!0}),this.measure(t,i)}onObjectDisconnected(e){this.states.delete(e.htmlElement)}onFrame(e){for(let t of this.objectsOnPage){let i=t.htmlElement,n=this.states.get(i);n&&n.isActive&&!n.isDragging&&this.updateScroll(i,n)}}onResize(){for(let e of this.objectsOnPage){let t=e.htmlElement,i=this.states.get(t);i&&this.measure(t,i)}}measure(e,t){t.maxScroll=e.scrollHeight-e.clientHeight}handleWheel(e,t,i){let n=e.deltaY,s=n<0,o=n>0,a=i.target<=.1,l=i.target>=i.maxScroll-.1;s&&a||o&&l||(e.preventDefault(),e.stopPropagation(),i.target+=n,i.target=Math.max(0,Math.min(i.target,i.maxScroll)),i.isActive=!0,i.isDragging=!1)}onWheel(e){}onNativeScroll(e,t,i){i.isActive||(i.current=t.scrollTop,i.target=t.scrollTop)}updateScroll(e,t){let i=t.target-t.current;Math.abs(i)<.1?(t.current=t.target,t.isActive=!1):t.current+=i*t.lerp,e.scrollTop=t.current}};function ar(u){let r=u.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return r?{id:r[1],start:parseFloat(r[2]),end:parseFloat(r[3])}:null}function Dr(u,r,e,t,i){return t+(i-t)*(u-r)/(e-r)}var Ft=class extends x{constructor(r){super(r),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(r){let e=r.getProperty("part-of"),t=ar(e);if(t){r.setProperty("part-of-id",t.id),r.setProperty("start",t.start),r.setProperty("end",t.end);let i=n=>{if(t){let s=Dr(n,t?.start,t?.end,0,1),o=Math.max(0,Math.min(1,s));r.htmlElement.style.setProperty("--progress-slice",o.toString()),this.events.emit(this.getObjectEventName(r,"object:progress-slice"),o)}};r.setProperty("progress-event",i),this.events.on(`object:progress:${t.id}`,i)}}onObjectDisconnected(r){let e=r.getProperty("part-of-id");e&&this.events.off(`object:progress:${e}`,r.getProperty("progress-event"))}};var Ir=(u,r)=>{let e=Math.min(u,r),t=Math.max(u,r);return e+Math.random()*(t-e)},Rr=(u,r)=>{let e=Math.ceil(Math.min(u,r)),t=Math.floor(Math.max(u,r));return t<e?e:Math.floor(Math.random()*(t-e+1))+e},kr=u=>{if(Array.isArray(u)&&u.length>=2){let r=Number(u[0]),e=Number(u[1]);if(Number.isFinite(r)&&Number.isFinite(e))return[r,e]}return typeof u=="number"&&Number.isFinite(u)?[0,u]:[0,1]},Ht=class extends x{constructor(r){super(r),this.htmlKey="random",this.attributesToMap.push({key:"random-number",type:"json",fallback:"[0,1]"}),this.attributesToMap.push({key:"random-type",type:"string",fallback:"int"})}onObjectConnected(r){let e=r.htmlElement,t=kr(r.getProperty("random-number")),n=String(r.getProperty("random-type")??"float").toLowerCase()==="int"?Rr(t[0],t[1]):Ir(t[0],t[1]);M.run(()=>{M.setVars(e,{"--random":n})})}};function Fr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}var lr=class u{constructor(){this.pendingScroll=!1;this.lastScrollEmitted=NaN;this.observerContainerMutation=null;this.pendingResizeRaf=null;this.pendingResizeForce=!1;this.prevWidth=0;this.prevHeight=0;this.loop=new tt;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=sr(()=>{this.queueResize(!1)},30);this.root=document.body,this.window=window,this.tools=new Ye,this.data=new je,this.eventManager=new se,this.moduleManager=new Ae(this.data),this.objectManager=new Re(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new it,this.hoverManager=new nt,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new Oe(1,this.context),this.scrollManager=new Ne(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.queueResize(!1)},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.onScrollToBind=this.scrollTo.bind(this),this.onDOMChangedBind=this.onDOMChanged.bind(this),this.eventManager.on("wheel",this.onWheelBind),this.eventManager.on("resize",this.onResizeBind),this.eventManager.on("scrollTo",this.onScrollToBind),this.eventManager.on("dom:changed",this.onDOMChangedBind),this.scrollManager.bindEvents({onScrollStart:this.onScrollStartBind,onScrollStop:this.onScrollStopBind,onDirectionChange:this.onDirectionChangeBind}),this.loop.setOnFrame(r=>{this.data.time.delta=r-this.data.time.now,this.data.time.previous=this.data.time.now,this.data.time.now=r,this.data.time.elapsed+=this.data.time.delta,this.onUpdateEvent()}),this.on("image:load:all",()=>{this.onResize()}),this.scrollContainer=window}set scrollPosition(r){this.data.scroll.current=r,this.data.scroll.target=r,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(r){this.observerContainerResize?.unobserve(this.context.data.scroll.container),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),r instanceof Window?(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=r):r instanceof HTMLElement?(this.data.scroll.container=r,this.data.scroll.elementContainer=r,this.data.scroll.scrollContainer=r):(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=r),this.data.scroll.elementContainer.addEventListener("transitionend",this.onContainerTransitionEndBind),this.observerContainerResize?.observe(this.context.data.scroll.container),this.observeContainerMutations(),this.queueResize(!0)}get scrollPosition(){return this.data.scroll.current}get scrollHeight(){return this.data.viewport.contentHeight}get containerHeight(){return this.data.viewport.windowHeight}set speed(r){this.data.scroll.speed=r}set speedAccelerate(r){this.data.scroll.speedAccelerate=.1+(.5-.1)*r}set scrollDesktopMode(r){this.scrollManager.setDesktopMode(r)}set scrollMobileMode(r){this.scrollManager.setMobileMode(r)}set FPSTrackerVisible(r){this.data.system.fpsTracker=r,this.eventManager.emit("tracker:fps:visible",r)}set PositionTrackerVisible(r){this.data.system.positionTracker=r,this.eventManager.emit("tracker:position:visible",r)}set domBatcherEnabled(r){this.objectManager.setDOMBatcherEnabled(r)}set intersectionObserverEnabled(r){this.objectManager.setIntersectionObserverEnabled(r)}static getInstance(){return u.i||(u.i=new u),u.i}reuse(r){return this.moduleManager.find(r)}use(r,e=null){let t={...this.context.settings,...e},i=new r({events:this.eventManager,data:this.data,tools:this.tools,settings:t,centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager});this.moduleManager.register(i)}registerScrollMode(r,e){let t;if(typeof e=="function"&&e.prototype instanceof j){let i=e;t=new i(this.context)}else t=e(this.context);t.name||(t.name=r),this.scrollManager.registerMode(r,t)}on(r,e,t=""){this.eventManager.on(r,e,t)}emit(r,e){this.eventManager.emit(r,e)}off(r,e,t=""){this.eventManager.off(r,e,t)}addScrollMark(r){this.scrollManager.addScrollMark(r)}removeScrollMark(r){this.scrollManager.removeScrollMark(r)}start(r){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),this.observeContainerMutations(),this.use(Ke);let e=window.getComputedStyle(document.documentElement).fontSize,t=parseFloat(e);this.context.data.viewport.baseRem=t,document.documentElement.classList.add("-string"),this.moduleManager.onInit(),this.onResize(),this.initObjects(),this.objectManager.observeDOM(),this.loop.start(r),this.eventManager.emit("start",null)}initObjects(){document.querySelectorAll("[string],[data-string]").forEach(r=>{this.objectManager.add(r)}),document.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(r=>{let e=this.tools.domAttribute.process({element:r,key:"copy-from",fallback:""});e&&e.length>0&&this.objectManager.linkMirror(e,r)}),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame()}setupSettings(r){this.context.settings={...this.context.settings,...r},this.onSettingsChange({isDesktop:this.data.viewport.windowWidth>1024,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0,isForceRebuild:!1})}onResizeObserverEvent(){this.debouncedResize()}onContainerTransitionEnd(r){r.target===this.context.data.scroll.container&&this.queueResize(!0)}onDOMChanged(){this.queueResize(!1),this.debouncedResize()}observeContainerMutations(){this.observerContainerMutation?.disconnect();let r=this.context.data.scroll.container;r&&(this.observerContainerMutation=new MutationObserver(e=>{for(let t=0;t<e.length;t++){let i=e[t];if(i.type==="attributes"&&(i.attributeName==="style"||i.attributeName==="class")){this.queueResize(!1),this.debouncedResize();break}}}),this.observerContainerMutation.observe(r,{attributes:!0,attributeFilter:["style","class"]}))}queueResize(r=!1){r&&(this.pendingResizeForce=!0),this.pendingResizeRaf==null&&(this.pendingResizeRaf=requestAnimationFrame(()=>{this.pendingResizeRaf=null;let e=this.pendingResizeForce;this.pendingResizeForce=!1,this.onResize(e)}))}onMouseMoveEvent(r){this.cursorController.onMouseMove(r),this.moduleManager.onMouseMove(r),_.measure(()=>{this.moduleManager.onMouseMoveMeasure()})}onWheelEvent(r){r.target.closest("[string-isolation],[data-string-isolation]")==null&&(this.scrollManager.get().onWheel(r),this.moduleManager.onWheel(r))}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(r){this.cursorController.onSettingsChange(r),this.objectManager.onSettingsChange(r),this.moduleManager.onSettingsChange(r)}onScrollEvent(r){return r.preventDefault(),this.context.centers.invalidateAll(),this.scrollManager.get().onScroll(r),this.pendingScroll=!0,!1}onUpdateEvent(){this.cursorController.onFrame(),this.scrollManager.get().onFrame(),this.moduleManager.onFrame(),(this.pendingScroll||this.data.scroll.current!==this.lastScrollEmitted)&&(this.pendingScroll=!1,this.moduleManager.onScroll(),this.objectManager.checkInview(),this.eventManager.emit("lerp",this.data.scroll.lerped),this.eventManager.emit("scroll",this.data.scroll.current),_.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),_.mutate(()=>{M.begin(),this.moduleManager.onMutate(),M.commit()}),this.eventManager.emit("update",null),_.flush()}onResize(r=!1){if(this.canRebuild==!1)return;let e=this.data.scroll.container,t=this.context.data.scroll,i=0,n=0;var s,o=0;let a=e.getBoundingClientRect();e.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),o=e.tagName==="BODY"?0:a.top,s=t.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(e).transform});this.context.data.viewport.transformScale=window.getComputedStyle(e).scale=="none"?l:Number(window.getComputedStyle(e).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let c=Fr(),d=i>1024,h=this.prevWidth!==i,p=this.prevHeight!==n,b=Math.abs(this.prevHeight-n),m=this.context.data.viewport.contentHeight!==s,g=h||!c&&p||c&&b>150||m;this.context.data.scroll.topPosition=Math.floor(o),this.context.data.viewport.contentWidth=i,this.context.data.viewport.contentHeight=s,this.prevWidth=i,this.prevHeight=n,this.context.data.viewport.windowWidth=i,this.context.data.viewport.windowHeight=n;let v=window.getComputedStyle(document.documentElement).fontSize,y=parseFloat(v);if(this.context.data.viewport.baseRem=y*l,t.bottomPosition=this.context.data.viewport.contentHeight-n,(h||typeof r=="boolean"&&r)&&this.moduleManager.onResizeWidth(),g||typeof r=="boolean"&&r){let f=this.context.data.scroll.elementContainer.scrollTop;f>0&&(this.context.data.scroll.current=f,this.context.data.scroll.target=f),this.moduleManager.onResize(),this.scrollManager&&this.scrollManager.updateResponsiveMode(),this.onSettingsChange({isDesktop:d,widthChanged:h,heightChanged:p,scrollHeightChanged:m,isForceRebuild:r===!0}),this.objectManager.invalidateInviewIndex(),this.moduleManager.onScroll(),this.moduleManager.onScrollMeasure(),this.moduleManager.onFrame()}this.objectManager.checkInview()}invalidateCenter(r){this.objectManager.all.get(r)&&this.centers.invalidate(r)}scrollTo(r){if(typeof r=="number"){this.scrollManager.get().scrollTo(r);return}let e=r.position,t=r.immediate===!0;this.scrollManager.get().scrollTo(e,t)}destroy(){this.data.scroll.scrollContainer?.removeEventListener("scroll",this.onScrollBind),this.data.scroll.container?.removeEventListener("wheel",this.onWheelBind),window.removeEventListener("resize",this.onResizeBind),this.root.removeEventListener("mousemove",this.onMouseMoveBind),this.eventManager.off("dom:changed",this.onDOMChangedBind),this.observerContainerMutation?.disconnect(),this.observerContainerMutation=null,this.pendingResizeRaf!=null&&(cancelAnimationFrame(this.pendingResizeRaf),this.pendingResizeRaf=null),this.objectManager.destroy(),this.scrollManager.destroy()}};export{Ce as CursorReactiveModule,ue as DOMBatcher,j as ScrollController,vt as StringAnchor,lt as StringCursor,je as StringData,Tt as StringDelayLerpTracker,Ct as StringFPSTracker,It as StringForm,yt as StringGlide,ct as StringImpulse,gt as StringLazy,St as StringLerp,Pt as StringLerpTracker,ft as StringLoading,ht as StringMagnetic,dt as StringMasonry,x as StringModule,ce as StringObject,Mt as StringParallax,Lt as StringPositionTracker,Pe as StringProgress,Ft as StringProgressPart,Ht as StringRandom,bt as StringResponsive,kt as StringScrollContainer,Et as StringScrollbar,Rt as StringScroller,Dt as StringSequence,wt as StringSplit,mt as StringSpotlight,lr as StringTune,Ot as StringVideoAutoplay,lr as default,_ as frameDOM,M as styleTxn};
42
28
  //# sourceMappingURL=index.mjs.map