@fiddle-digital/string-tune 1.1.49 → 1.1.50
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.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +243 -25
- package/dist/index.d.ts +243 -25
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Le=Object.defineProperty;var ar=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var cr=Object.prototype.hasOwnProperty;var ur=(c,e)=>{for(var t in e)Le(c,t,{get:e[t],enumerable:!0})},dr=(c,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of lr(e))!cr.call(c,i)&&i!==t&&Le(c,i,{get:()=>e[i],enumerable:!(r=ar(e,i))||r.enumerable});return c};var hr=c=>dr(Le({},"__esModule",{value:!0}),c);var kr={};ur(kr,{CursorReactiveModule:()=>at,DOMBatcher:()=>st,ScrollController:()=>$,StringAnchor:()=>ne,StringCursor:()=>jt,StringData:()=>ut,StringDelayLerpTracker:()=>me,StringFPSTracker:()=>ge,StringForm:()=>Me,StringGlide:()=>se,StringImpulse:()=>Kt,StringLazy:()=>te,StringLerp:()=>oe,StringLerpTracker:()=>fe,StringLoading:()=>ee,StringMagnetic:()=>Zt,StringMasonry:()=>Qt,StringModule:()=>E,StringObject:()=>nt,StringParallax:()=>ae,StringPositionTracker:()=>ve,StringProgress:()=>ct,StringProgressPart:()=>Pe,StringRandom:()=>Ce,StringResponsive:()=>ie,StringScrollbar:()=>ue,StringScroller:()=>Te,StringSequence:()=>Se,StringSplit:()=>pe,StringSpotlight:()=>Jt,StringTune:()=>He,StringVideoAutoplay:()=>ye,default:()=>He,frameDOM:()=>H,styleTxn:()=>x});module.exports=hr(kr);var Ot=class{constructor(e=.1,t){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=e,this.context=t,this.onSettingsChange({isDesktop:t.data.viewport.windowWidth>1024,isForceRebuild:!1,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0})}onMouseMove(e){this.context.data.cursor.targetX=e.clientX,this.context.data.cursor.targetY=e.clientY;let t=performance.now(),r=t-this.lastMouseTime;r>0&&(this.context.data.cursor.velocityX=(e.clientX-this.lastMouseX)/r,this.context.data.cursor.velocityY=(e.clientY-this.lastMouseY)/r),this.lastMouseX=e.clientX,this.lastMouseY=e.clientY,this.lastMouseTime=t}onFrame(){let{targetX:e,targetY:t,smoothedX:r,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:r,to:e,progress:this.smoothingFactor}),s=this.context.tools.lerp.process({from:i,to:t,progress:this.smoothingFactor}),o=this.getStepDistance(n,s);this.isSettled(o)?this.snapToTarget():this.applyStep(n,s)}onSettingsChange(e){let t=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(t)}setLerpFactor(e){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:e,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(e,t){return Math.hypot(e,t)}isSettled(e){return e<this.SETTLE_THRESHOLD}snapToTarget(){this.context.data.cursor.smoothedX=this.context.data.cursor.targetX,this.context.data.cursor.smoothedY=this.context.data.cursor.targetY,this.context.data.cursor.stepX=0,this.context.data.cursor.stepY=0}applyStep(e,t){this.context.data.cursor.smoothedX+=e,this.context.data.cursor.smoothedY+=t,this.context.data.cursor.stepX=e,this.context.data.cursor.stepY=t}};var it=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(e,t){this.stateEvents.add(e),t!==void 0&&(this.lastPayloads[e]=t)}on(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(t),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&t(this.lastPayloads[i])}off(e,t,r){let i=r?`${e}:${r}`:e;this.listeners[i]&&this.listeners[i].delete(t)}emit(e,t){this.stateEvents.has(e)&&(this.lastPayloads[e]=t);let r=this.listeners[e];if(r)for(let i of r)i(t)}onProgress(e,t){this.on(`progress:${e}`,t)}emitProgress(e,t){this.emit(`progress:${e}`,t)}onInview(e,t){this.on(`object:inview:${e}`,t)}emitInview(e,t){this.emit(`object:inview:${e}`,t)}onScroll(e){this.on("scroll",e)}emitScroll(e){this.emit("scroll",e)}onUpdate(e){this.on("update",e)}emitUpdate(){this.emit("update")}clear(e){delete this.listeners[e]}clearAll(){this.listeners={}}};function pr(c,e,t,r){switch(c){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":return[e];case"onMouseMove":case"onWheel":return t?[t]:[];case"onDOMMutate":return t&&r?[t,r]:[];case"onSettingsChange":return[];default:return[]}}var It=class{constructor(e){this.data=e;this.modules=[];this.uiModules=[];this.allModules=[]}register(e){e.type===1?this.modules.push(e):e.type===2&&this.uiModules.push(e),e.onSubscribe(),this.rebuildAllModules()}find(e){return this.modules.find(t=>t instanceof e)}onInit(){this.callAll("onInit")}onFrame(){this.callAll("onFrame")}onMutate(){this.callAll("onMutate")}onScrollMeasure(){this.callAll("onScrollMeasure")}onMouseMoveMeasure(){this.callAll("onMouseMoveMeasure")}onScroll(){this.callAll("onScroll")}onResizeWidth(){this.callAll("onResizeWidth")}onResize(){this.callAll("onResize")}onMouseMove(e){this.callAll("onMouseMove",e)}onWheel(e){this.callAll("onWheel",e)}onDirectionChange(){this.callAll("onDirectionChange")}onScrollStart(){this.callAll("onScrollStart")}onScrollStop(){this.callAll("onScrollStop")}onAxisChange(){this.callAll("onAxisChange")}onDeviceChange(){this.callAll("onDeviceChange")}onScrollConfigChange(){this.callAll("onScrollConfigChange")}onSettingsChange(e){this.callAll("onSettingsChange")}onDOMMutate(e,t){this.callAll("onDOMMutate",e,t)}destroy(){this.callAll("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(e,t,r){this.callLifecycle(this.modules,e,t,r),this.callLifecycle(this.uiModules,e,t,r)}callLifecycle(e,t,r,i){if(e.length===0)return;let n=pr(t,this.data,r,i);for(let s=0;s<e.length;s++){let o=e[s];o&&o[t](...n)}}rebuildAllModules(){this.allModules=[...this.modules,...this.uiModules]}};var Dt=class{constructor(e,t,r){this.parent=r;this.properties=new Map;this.id=e,this.htmlElement=t}get parentObject(){return this.parent}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}setEasing(e){this.easingFn=e??void 0}getEasing(){return this.easingFn}applyProgress(e,t){let r=this.easingFn??t;return r?r(e):e}};var nt=class{constructor(e,t){this.id="";this.keys=[];this.mirrors=new Map;this.properties=new Map;this.modules=[];this.events=new it;this.htmlElement=t,this.id=e}setProperty(e,t){this.properties.set(e,t)}getProperty(e){return this.properties.get(e)??null}enter(){this.events.emit("enter",this),this.setProperty("active",!0),this.modules.forEach(e=>{e.enterObject(this.id,this)})}leave(){this.events.emit("leave",this),this.setProperty("active",!1),this.modules.forEach(e=>{e.exitObject(this.id)})}remove(){this.modules.forEach(e=>{e.removeObject(this.id)})}show(){this.htmlElement.classList.add("-inview")}hide(){this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(e){this.modules.includes(e)||this.modules.push(e)}addMirror(e){this.mirrors.set(e.id,e)}removeMirror(e){this.mirrors.delete(e)}get mirrorObjects(){return Array.from(this.mirrors.values())}get connects(){return this.mirrorObjects.map(e=>e.htmlElement)}};var st=class{constructor(){this.readQueue=[];this.writeQueue=[];this.computeQueue=[];this.isProcessing=!1;this.pendingFrame=null;this.rectCache=new WeakMap;this.dimensionCache=new WeakMap}scheduleRead(e,t=0){this.readQueue.push({priority:t,execute:e}),this.scheduleFlush()}scheduleCompute(e,t=0){this.computeQueue.push({priority:t,execute:e}),this.scheduleFlush()}scheduleWrite(e,t=0){this.writeQueue.push({priority:t,execute:e}),this.scheduleFlush()}batchModuleInitialization(e){e.forEach(({module:t,object:r,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}),t.initializeObject(s,r,i,n)},1)}),e.forEach(({module:t,object:r,windowSize:i})=>{this.scheduleCompute(()=>{t.calculatePositions(r,i)},2)}),e.forEach(({module:t,object:r})=>{this.scheduleWrite(()=>{t.connectObject(r),t.addObject(r.id,r)},3)})}getCachedRect(e){return this.rectCache.get(e)}getCachedDimensions(e){return this.dimensionCache.get(e)}scheduleFlush(){this.pendingFrame!==null||this.isProcessing||(this.pendingFrame=requestAnimationFrame(()=>{this.flush()}))}flush(){this.isProcessing=!0,this.pendingFrame=null;let e=(t,r)=>r.priority-t.priority;try{[...this.readQueue].sort(e).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Read task error:",s)}}),this.readQueue=[],[...this.computeQueue].sort(e).forEach(n=>{try{n.execute()}catch(s){console.error("[DOMBatcher] Compute task error:",s)}}),this.computeQueue=[],[...this.writeQueue].sort(e).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 At=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var E=class{constructor(e){this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new At;this.tools=e.tools,this.data=e.data,this.settings=e.settings,this.events=e.events,this.centers=e.centers,this.hover=e.hover,this.objectManager=e.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:(t,r,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.container.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(t,r,i)=>{let n=i.top,s=i.height;return n+s-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(t,r,i)=>i.height},{key:"half-width",type:"number",fallback:(t,r,i)=>i.width/2},{key:"half-height",type:"number",fallback:(t,r,i)=>i.height/2},{key:"enter-el",type:"string",fallback:this.settings["enter-el"]},{key:"enter-vp",type:"string",fallback:this.settings["enter-vp"]},{key:"exit-el",type:"string",fallback:this.settings["exit-el"]},{key:"exit-vp",type:"string",fallback:this.settings["exit-vp"]}]}get type(){return this._type}initializeObject(e,t,r,i){let n=this.tools.boundingClientRect.process({element:r});for(let{key:s,type:o,fallback:a,transform:l}of this.attributesToMap){let u=typeof a=="function"?a(r,t,n):a,d=this.tools.domAttribute.process({element:r,key:s,fallback:i[s]??this.settings[s]??u}),h=this.parseAttribute(d,o,{element:r,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(h=l(h)),t.setProperty(s,h)}}calculatePositions(e,t){let r=e.getProperty("start"),i=e.getProperty("size"),n=e.getProperty("offset-bottom"),s=e.getProperty("offset-top"),o=e.getProperty("enter-el"),a=e.getProperty("enter-vp"),l=e.getProperty("exit-el"),u=e.getProperty("exit-vp"),d=0,h=0,m=0,f=0;o==="top"&&a==="top"||o==="left"&&a==="left"?(m=-t+1,d=r-n):o==="top"&&a==="bottom"||o==="left"&&a==="right"?d=r-t-n:o==="bottom"&&a==="top"||o==="right"&&a==="left"?(m=-t-i+1,d=r+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(m=-i+1,d=r-t+i-n),l==="top"&&u==="top"||l==="left"&&u==="left"?(f=-i+1,h=r+s):l==="top"&&u==="bottom"||l==="left"&&u==="right"?(f=-t-i+1,h=r-t+s):l==="bottom"&&u==="top"||l==="right"&&u==="left"?h=r+i+s:(l==="bottom"&&u==="bottom"||l==="right"&&u==="right")&&(f=-t+1,h=r-t+i+s),e.setProperty("start-bias",m),e.setProperty("end-bias",f),e.setProperty("start-position",d-this.data.scroll.topPosition),e.setProperty("end-position",h-this.data.scroll.topPosition),e.setProperty("difference-position",h-d);let p=e.getProperty("inview-top")??0,v=e.getProperty("inview-bottom")??0;e.setProperty("inview-start-position",e.getProperty("start-position")+p),e.setProperty("inview-end-position",e.getProperty("end-position")+v)}parseAttribute(e,t,r={}){if(e==null)return null;if(typeof t=="object"&&t.type==="enum")return t.values.includes(e)?e:t.values[0];switch(t){case"number":return parseFloat(e);case"boolean":return e===""||e==="true";case"json":try{return JSON.parse(e)}catch{return null}case"tuple":return e.trim().split(/\s+/);case"easing":return this.tools.easingFunction.process({easing:e});case"color":return this.tools.colorParser.process({value:e});case"dimension":return e=="0"?0:r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null?this.tools.unitParser.process({value:e,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem}):0;case"breakpoint-dimension":if(r.element!=null&&r.viewportHeight!=null&&r.baseRem!=null&&r.boundingRect!=null){let i=e.trim().split("|"),n=[];for(let s of i)if(s.includes(":")){let[o,a]=s.split(":");n.push({breakpoint:parseInt(o),value:this.tools.unitParser.process({value:`${a}|`,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:s,element:r.element,viewportHeight:r.viewportHeight,boundingRect:r.boundingRect,baseRem:r.baseRem})});return n}default:return e}}canConnect(e){return e.keys.includes(this.htmlKey)}connectObject(e){e.connect(this),this.onObjectConnected(e)}enterObject(e,t){this.objectMap.has(e)||(this.objectMap.set(e,t),this.objects.push(t))}exitObject(e){let t=this.objectMap.get(e);if(!t)return;this.objectMap.delete(e);let r=this.objects.indexOf(t);r!==-1&&this.objects.splice(r,1)}addObject(e,t){this.objectMapOnPage.has(e)||(this.objectMapOnPage.set(e,t),this.objectsOnPage.push(t))}removeObject(e){let t=this.objectMapOnPage.get(e);if(!t)return;this.objectMapOnPage.delete(e);let r=this.objectsOnPage.indexOf(t);r!==-1&&this.objectsOnPage.splice(r,1),this.onObjectDisconnected(t)}onObjectConnected(e){}onObjectDisconnected(e){}applyToElementAndConnects(e,t,r=t){e.getProperty("self-disable")!==!0&&t(e.htmlElement),e.mirrorObjects.forEach(i=>r(i.htmlElement,i))}destroy(){this.objects=[],this.objectMap=new Map}onInit(){}onSubscribe(){}onUnsubscribe(){}onFrame(e){}onMutate(e){}onScrollMeasure(e){}onMouseMoveMeasure(e){}onResize(){}onResizeWidth(){}onScroll(e){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){}onSettingsChange(){}onDOMRebuild(){}onMouseMove(e){}onWheel(e){}onDOMMutate(e,t){}};var kt=class{constructor(e,t,r,i){this.data=e;this.modules=t;this.events=r;this.tools=i;this.objects=new Map;this.connectQueue=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1;this.domBatcher=new st;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}get all(){return this.objects}add(e){let t=`string-${this.globalId++}`,r="string-id";e.getAttribute("string-id")&&(t=e.getAttribute("string-id"),r="string-id"),e.getAttribute("data-string-id")&&(t=e.getAttribute("data-string-id"),r="data-string-id");let i=t&&this.objects.has(t)?this.objects.get(t):new nt(t,e);e.setAttribute(r,i.id);let n=e.getAttribute("string")??e.getAttribute("data-string");n&&(i.keys=(n??"").split("|").map(l=>l.trim()).filter(Boolean)),e.setAttribute("string-inited",""),this.objects.set(i.id,i);let s=this.getAllAttributes(e);this.modules.core.forEach(l=>{"setupCoreProperties"in l&&typeof l.setupCoreProperties=="function"&&l.setupCoreProperties(i,e,s)});let o=this.modules.core.filter(l=>l instanceof E&&l.canConnect(i));if(this.domBatcherEnabled&&o.length>0){let l=o.map(u=>({module:u,object:i,element:e,attributes:s,globalId:this.globalId,windowSize:this.data.viewport.windowHeight}));this.domBatcher.batchModuleInitialization(l),this.domBatcher.scheduleWrite(()=>{this.initObservers(i,e),this.checkInviewForObject(i)})}else o.forEach(l=>{l.initializeObject(this.globalId,i,e,s),l.calculatePositions(i,this.data.viewport.windowHeight),l.connectObject(i),l.addObject(i.id,i)}),this.initObservers(i,e),this.checkInviewForObject(i);this.connectQueue.filter(l=>l.id===i.id).forEach(l=>this.attachMirrorToObject(i,l.element)),this.connectQueue=this.connectQueue.filter(l=>l.id!==i.id),this.inviewIndexDirty=!0}setDOMBatcherEnabled(e){this.domBatcherEnabled=e,e||this.domBatcher.flushSync()}setIntersectionObserverEnabled(e){this.intersectionObserverEnabled!==e&&(this.intersectionObserverEnabled=e,this.objects.forEach(t=>{t.getProperty("observer-progress")?.disconnect(),e&&this.initObservers(t,t.htmlElement)}))}invalidateInviewIndex(){this.inviewIndexDirty=!0}refreshLayoutForRoot(e){if(!e)return;let t=new Set,r=n=>{let s=n.getAttribute("string-id")??n.getAttribute("data-string-id");if(!s)return;let o=this.objects.get(s);o&&t.add(o)};if(e instanceof HTMLElement&&(r(e),e.querySelectorAll("[string-id],[data-string-id]").forEach(n=>r(n))),t.size===0)return;let i=this.data.viewport.windowHeight;t.forEach(n=>{let s=n.htmlElement;if(!s||!s.isConnected)return;let o=this.getAllAttributes(s);this.modules.core.forEach(a=>{a instanceof E&&a.canConnect(n)&&(a.initializeObject(this.globalId,n,s,o),a.calculatePositions(n,i))})}),this.inviewIndexDirty=!0,this.checkInview()}remove(e){let t=this.objects.get(e);t&&(t.events.clearAll(),t.getProperty("observer-progress")?.disconnect(),t.getProperty("observer-inview")?.disconnect(),t.htmlElement.removeAttribute("string-inited"),t.leave(),t.remove(),t.mirrorObjects.forEach(r=>{let i=this.getMirrorIds(r.htmlElement);this.setMirrorIds(r.htmlElement,i.filter(s=>s!==r.id)),this.mirrors.delete(r.id);let n=r.htmlElement.getAttribute("string-copy-from")??r.htmlElement.getAttribute("data-string-copy-from");n&&this.enqueueConnection(n,r.htmlElement)}),this.objects.delete(e),this.inviewActive.delete(t),this.inviewIndexDirty=!0)}enqueueConnection(e,t){e.split("|").map(i=>i.trim()).filter(i=>i.length>0).forEach(i=>{this.connectQueue.some(n=>n.id===i&&n.element===t)||this.connectQueue.push({id:i,element:t})})}linkMirror(e,t){e.split("|").map(i=>i.trim()).filter(i=>i.length>0).forEach(i=>{let n=this.objects.get(i);n?this.attachMirrorToObject(n,t):this.enqueueConnection(i,t)})}attachMirrorToObject(e,t){let r=this.getMirrorIds(t);for(let o of r){let a=this.mirrors.get(o);if(a&&a.parentObject===e)return a}let i=`string-mirror-${this.mirrorId++}`,n=new Dt(i,t,e);this.setMirrorIds(t,[...r,i]),e.addMirror(n),this.mirrors.set(i,n);let s=t.getAttribute("string-easing")??t.getAttribute("data-string-easing");return s&&s.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:s})),n.setProperty("easing",s)),n}detachMirrorByElement(e){let t=this.getMirrorIds(e);t.length!==0&&(t.forEach(r=>this.detachMirrorById(r)),this.clearMirrorIds(e))}detachMirrorById(e){let t=this.mirrors.get(e);t&&(t.parentObject.removeMirror(e),this.mirrors.delete(e))}getMirrorIds(e){let t=e.getAttribute("string-mirror-id")??e.getAttribute("data-string-mirror-id");return t?t.split("|").map(r=>r.trim()).filter(r=>r.length>0):[]}setMirrorIds(e,t){if(t.length===0){this.clearMirrorIds(e);return}e.setAttribute("string-mirror-id",t.join("|"))}clearMirrorIds(e){e.removeAttribute("string-mirror-id"),e.removeAttribute("data-string-mirror-id")}getAllAttributes(e){let t={};return Array.from(e.attributes).forEach(r=>{t[r.name]=r.value}),t}initObservers(e,t){if(!this.intersectionObserverEnabled)return;let r=e.getProperty("offset-top")??0,i=e.getProperty("offset-bottom")??0;e.getProperty("observer-progress")?.disconnect();let n=m=>{m.forEach(f=>{this.events.emit(`object:activate:${e.id}`,f.isIntersecting),f.isIntersecting?e.enter():e.leave()})},s=e.getProperty("outside-container"),o=t.getAttribute("string-outside-container")??t.getAttribute("data-string-outside-container"),a=o!=null?o.trim().toLowerCase():null,l=a===""||a==="true"||a==="1",u=s!=null?s===!0:l,d=this.data.scroll.container===document.body||u?null:this.data.scroll.container,h=new IntersectionObserver(n,{root:d,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${r+this.data.viewport.windowHeight}px 0px`,threshold:0});h.observe(t),e.setProperty("observer-progress",h)}observeDOM(){new MutationObserver(t=>{t.forEach(r=>{r.type==="childList"&&(r.removedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;this.detachMirrorByElement(n),!this.isFixed(n)&&(n.hasAttribute("string")&&this.handleRemoved(n),n.querySelectorAll("[string],[data-string]").forEach(s=>{this.isFixed(s)||this.handleRemoved(s)}),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(s=>this.detachMirrorByElement(s)))}),r.addedNodes.forEach(i=>{if(i.nodeType!==Node.ELEMENT_NODE)return;let n=i;if(this.isFixed(n))return;n.hasAttribute("string")&&!n.hasAttribute("string-inited")&&this.add(n),n.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])").forEach(o=>this.add(o));let s=n.getAttribute("string-copy-from")??n.getAttribute("data-string-copy-from");s&&this.linkMirror(s,n),n.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(o=>{let a=o.getAttribute("string-copy-from")??o.getAttribute("data-string-copy-from");a&&this.linkMirror(a,o)})}),(r.addedNodes.length>0||r.removedNodes.length>0)&&this.modules.onDOMMutate(r.addedNodes,r.removedNodes),this.modules.all.forEach(i=>i.onDOMRebuild()))})}).observe(document.body,{childList:!0,subtree:!0})}handleRemoved(e){let t=e.getAttribute("string-id")??e.getAttribute("data-string-id");if(!t)return;let r=e.getAttribute("string-copy-from")??e.getAttribute("data-string-copy-from");r&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==r)),this.remove(t)}onSettingsChange(e){this.objects.forEach(t=>{this.modules.core.forEach(r=>{let i=!1;if(e.isDesktop?(r.permissions.desktop.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.desktop.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.desktop.rebuild.height&&e.heightChanged&&(i=!0)):(r.permissions.mobile.rebuild.scrollHeight&&e.scrollHeightChanged&&(i=!0),r.permissions.mobile.rebuild.width&&e.widthChanged&&(i=!0),r.permissions.mobile.rebuild.height&&e.heightChanged&&(i=!0)),(i||e.isForceRebuild)&&r.canConnect(t)){let n=this.getAllAttributes(t.htmlElement);r.initializeObject(this.globalId,t,t.htmlElement,n),r.calculatePositions(t,this.data.viewport.windowHeight),r.connectObject(t)}})}),this.inviewIndexDirty=!0}isFixed(e){return e.hasAttribute("string-fixed")}checkInview(){let e=this.data.scroll.transformedCurrent;this.updateInviewWindow(e),this.inviewActive.forEach(t=>{this.checkInviewForObject(t)})}checkInviewForObject(e){let t=this.data.scroll.transformedCurrent;if(!this.intersectionObserverEnabled){let u=e.getProperty("start-position"),d=e.getProperty("end-position");if(u!=null&&d!=null){let h=Math.min(u,d),m=Math.max(u,d),f=e.getProperty("is-active")??!1,p=t>=h&&t<=m;p!==f&&(e.setProperty("is-active",p),this.events.emit(`object:activate:${e.id}`,p),p?e.enter():e.leave())}}let r=e.getProperty("inview-start-position"),i=e.getProperty("inview-end-position"),n=e.getProperty("is-inview")??!1,s=Math.min(r,i),o=Math.max(r,i),a=t>=s&&t<=o,l=null;if(!n&&a){let u=Math.abs(t-s),d=Math.abs(o-t);l=u<=d?"enter-top":"enter-bottom"}else n&&!a&&(l=t<s?"exit-top":"exit-bottom");a!==n&&(e.setProperty("is-inview",a),this.events.emit(`object:inview:${e.id}`,{inView:a,direction:l}),a?e.show():e.hide())}updateInviewWindow(e){let t=this.data.viewport.windowHeight,r=e-t,i=e+this.data.viewport.windowHeight+t;for((this.inviewIndexDirty||e<this.lastInviewScrollPos)&&this.rebuildInviewIndex(r,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<r;)this.inviewActive.delete(this.inviewEnds[this.inviewEndIdx].object),this.inviewEndIdx++;this.lastInviewScrollPos=e}rebuildInviewIndex(e,t){this.inviewStarts=[],this.inviewEnds=[],this.objects.forEach(r=>{let i=r.getProperty("inview-start-position"),n=r.getProperty("inview-end-position");i==null||n==null||(this.inviewStarts.push({pos:Math.min(i,n),object:r}),this.inviewEnds.push({pos:Math.max(i,n),object:r}))}),this.inviewStarts.sort((r,i)=>r.pos-i.pos),this.inviewEnds.sort((r,i)=>r.pos-i.pos),this.inviewActive.clear(),this.inviewStartIdx=this.upperBound(this.inviewStarts,t),this.inviewEndIdx=this.upperBound(this.inviewEnds,e-1);for(let r=0;r<this.inviewStartIdx;r++)this.inviewActive.add(this.inviewStarts[r].object);for(let r=0;r<this.inviewEndIdx;r++)this.inviewActive.delete(this.inviewEnds[r].object);this.inviewIndexDirty=!1}upperBound(e,t){let r=0,i=e.length;for(;r<i;){let n=r+i>>>1;e[n].pos<=t?r=n+1:i=n}return r}};var $=class{constructor(e){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._scrollDirection="vertical";this.isBottomScrollDirection=null;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()};this.document=document,this.context=e}set scrollDirection(e){this._scrollDirection=e,this._scrollDirection==="vertical"?this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(0,this.context.data.scroll.current),this.triggerScrollRules()}:this._scrollDirection==="horizontal"&&(this.onCalcUpdate=()=>{this.context.data.scroll.scrollContainer?.scrollTo(this.context.data.scroll.current,0)})}onFrame(){}onWheel(e){}onScroll(e){}disableScrollEvents(){}enableScrollEvents(){}triggerScrollRules(){this.scrollTriggerRules.forEach(e=>{let t=(e.direction==="any"||this.isLastBottomScrollDirection&&e.direction==="forward")&&this.context.data.scroll.current>=e.offset;t&&!e.isActive?(e.onEnter?.(),e.toggleClass&&e.toggleClass.target.classList.add(e.toggleClass.className),e.isActive=!0):!t&&e.isActive&&(e.onLeave?.(),e.toggleClass&&e.toggleClass.target.classList.remove(e.toggleClass.className),e.isActive=!1)})}addScrollMark(e){this.scrollTriggerRules.push(e)}removeScrollMark(e){this.scrollTriggerRules=this.scrollTriggerRules.filter(t=>t.id!==e)}scrollTo(e){}};var Rt=class extends ${constructor(t){super(t);this.name="default"}onFrame(){if(this.context.data.scroll.delta!==0){let t=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=t,this.context.data.scroll.lerped=t,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.onScrollStop())}}onScroll(t){let r=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=r,this.context.data.scroll.target=r,this.context.data.scroll.transformedCurrent=r}onWheel(t){if(t.deltaY!==0){this.context.data.scroll.delta===0&&this.onScrollStart();let r=t.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,t.deltaY)),this.context.data.scroll.delta+=r}}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.current=t,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this._scrollDirection==="vertical"?this.context.data.scroll.scrollContainer?.scrollTo({top:t,left:0,behavior:"smooth"}):this.context.data.scroll.scrollContainer?.scrollTo({left:t,top:0,behavior:"smooth"})}};var Ft=class extends ${constructor(t){super(t);this.name="disable";this.preventScroll=t=>{t.preventDefault()};this.preventKeyScroll=t=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(t.key)&&t.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}disableScrollEvents(){window.addEventListener("touchmove",this.onPreventScroll,{passive:!1}),window.addEventListener("keydown",this.onPreventKeyScroll)}enableScrollEvents(){window.removeEventListener("touchmove",this.onPreventScroll),window.removeEventListener("keydown",this.onPreventKeyScroll)}onFrame(){}onWheel(t){t.preventDefault()}onScroll(t){t.preventDefault()}};var J={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var Ht=class extends ${constructor(t){super(t);this.name="smooth";this.isScrollbarManipulation=!1;this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.1;this.lastAppliedDirection=null}updateScrollDirection(t){if(this.isLastBottomScrollDirection=t,this.isBottomScrollDirection===null){this.isBottomScrollDirection=t;return}this.context.data.scroll.isScrollingDown=t,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&this.lastAppliedDirection!==t&&(document.documentElement.classList.toggle(J.SCROLLING_FORWARD,t),document.documentElement.classList.toggle(J.SCROLLING_BACKWARD,!t),document.documentElement.classList.toggle(J.SCROLL_FORWARD,t),document.documentElement.classList.toggle(J.SCROLL_BACKWARD,!t),this.lastAppliedDirection=t)}stopScroll(){this.context.data.scroll.lerped=0,this.context.data.scroll.delta=0,this.context.data.scroll.target=this.context.data.scroll.current,this.isProg=!1,this.onCalcUpdate(),document.documentElement.classList.remove(J.SCROLLING_BACKWARD,J.SCROLLING_FORWARD),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}if(this.context.data.scroll.delta!==0){this.scrollForce=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate,this.context.data.scroll.target=Math.min(Math.max(0,this.context.data.scroll.target+this.scrollForce),this.context.data.scroll.bottomPosition),this.context.data.scroll.delta-=this.scrollForce,this.context.data.scroll.lerped=(this.context.data.scroll.target-this.context.data.scroll.current)*this.context.data.scroll.speed;let t=Math.abs(this.context.data.scroll.lerped);this.context.data.scroll.lerped>0?this.context.data.scroll.current=Math.ceil(this.context.data.scroll.current+this.context.data.scroll.lerped):this.context.data.scroll.current=Math.floor(this.context.data.scroll.current+this.context.data.scroll.lerped),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale,this.updateScrollDirection(this.context.data.scroll.lerped>0),t<this.velocityThreshold?(this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!==this.context.data.scroll.current&&(this.previousCurrent=this.context.data.scroll.current,this.onCalcUpdate()))}}onWheel(t){if(t.deltaY!==0&&t.preventDefault(),this.wheelImpulse=t.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let r=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&r<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&r>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(t){this.isProg||(this.isScrollbarManipulation=!0)}scrollTo(t){this.context.data.scroll.target=t,this.context.data.scroll.delta=1}};var Nt=class{constructor(e){this.context=e;this.modes=new Map;this.registerMode("smooth",new Ht(e)),this.registerMode("default",new Rt(e)),this.registerMode("disable",new Ft(e)),this.updateResponsiveMode()}registerMode(e,t){this.modes.set(e,t)}setMobileMode(e){this.context.data.scroll.modeMobile=e,this.updateResponsiveMode()}setDesktopMode(e){this.context.data.scroll.modeDesktop=e,this.updateResponsiveMode()}updateResponsiveMode(){let t=window.innerWidth<1024?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(t)}updatePosition(){this.modes.forEach(e=>{e.onCalcUpdate()})}setMode(e){if(!this.modes.has(e)){console.warn(`[ScrollManager] Unknown scroll mode: ${e}`);return}this.get().enableScrollEvents(),this.context.data.scroll.mode=e,this.get().disableScrollEvents()}get(){return this.modes.get(this.context.data.scroll.mode)}getEngines(){return this.modes}onFrame(){this.get().onFrame()}onScroll(e){this.get().onScroll(e)}onWheel(e){this.get().onWheel(e)}bindEvents(e){this.modes.forEach(t=>{t.onScrollStart=e.onScrollStart,t.onScrollStop=e.onScrollStop,t.onChangeDirection=e.onDirectionChange})}addScrollMark(e){this.modes.forEach(t=>{t.addScrollMark(e)})}removeScrollMark(e){this.modes.forEach(t=>{t.removeScrollMark(e)})}};var zt=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 Vt=class{constructor(){this.threeInstance=null}};var Wt=class{constructor(){this.target=0;this.current=0;this.transformedCurrent=0;this.delta=0;this.lerped=0;this.displacement=0;this.isScrollingDown=!1;this.topPosition=0;this.bottomPosition=0;this.direction="vertical";this.elementContainer=document.documentElement;this.scrollContainer=window;this.container=document.body;this.mode="smooth";this.modeMobile="smooth";this.modeDesktop="smooth";this.speed=.1;this.speedAccelerate=.25}};var Bt=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var $t=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var _t=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 ut=class{constructor(){this.scroll=new Wt;this.viewport=new _t;this.cursor=new zt;this.render=new Vt;this.time=new $t;this.system=new Bt}};var dt=class{process({element:e}){return e.getBoundingClientRect()}};var ht=class{process({element:e,key:t,fallback:r=null}){return e.getAttribute(`string-${t}`)??e.getAttribute(`data-string-${t}`)??r}};var pt=class{process({record:e,name:t,fallback:r=null}){return e[t]??e[`data-${t}`]??r}};var tt=class{process({element:e}){let t=e.getBoundingClientRect(),i=getComputedStyle(e).transform.match(/-?[\d.]+/g)?.map(parseFloat)??[];if(i.length===6){let[n,s,o,a,l,u]=i,d=n*a-s*o;return{width:t.width/(n||1),height:t.height/(a||1),left:(t.left*a-t.top*o+o*u-l*a)/d,top:(-t.left*s+t.top*n+l*s-n*u)/d}}return t}};var mt=class{constructor(e=new tt){this.transformTool=e}process({element:e,container:t=document.body}){let r;try{r=t.getBoundingClientRect()}catch{r=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:e});return{top:i.top-r.top,left:i.left-r.left}}};var gt=class{process({from:e,to:t,progress:r}){return(t-e)*r}};var ft=class{process({value:e,element:t,viewportHeight:r,baseRem:i,boundingRect:n}){let s=e.split("|").map(a=>a.trim()).filter(Boolean),o=0;for(let a of s){let l=a,u=!1;l.startsWith("-")&&(u=!0,l=l.slice(1));let d=0;l==="selfHeight"?d=t.offsetHeight:l.endsWith("px")?d=parseFloat(l):l.endsWith("%")?d=parseFloat(l)/100*r:l.endsWith("rem")?d=parseFloat(l)*i:l.endsWith("sh")?d=parseFloat(l)*n.height/100:d=parseFloat(l),o+=u?-d:d}return o}};var vt=class{process({value:e,inMin:t=.1,inMax:r=1,outMin:i=.05,outMax:n=.65}){if(e<t)return n;if(e>1&&(e=1),e<=r){let s=(e-t)/(r-t);return n-s*(n-i)}return i}};var q={left:0,center:.5,right:1},Y={top:0,center:.5,bottom:1},bt=class{process({value:e}){if(!e)return"center";let t=e.trim();if(t.startsWith("random(")&&t.endsWith(")")){let r=t.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*r.length);return r[i]}return t}toNormalized({value:e}){let r=this.process({value:e}).toLowerCase().split(/\s+/).filter(Boolean);if(r.length===0)return{x:.5,y:.5};if(r.length===1){let a=r[0],l=this.parseValue(a);return a in q&&!(a in Y)?{x:l,y:.5}:a in Y&&!(a in q)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=r,s=i in Y&&!(i in q),o=n in q&&!(n in Y);return s||o?{x:this.parseValue(n,"horizontal"),y:this.parseValue(i,"vertical")}:{x:this.parseValue(i,"horizontal"),y:this.parseValue(n,"vertical")}}parseValue(e,t){if(t==="horizontal"&&e in q)return q[e];if(t==="vertical"&&e in Y)return Y[e];if(e in q)return q[e];if(e in Y)return Y[e];if(e.endsWith("%")){let i=parseFloat(e);if(!isNaN(i))return i/100}let r=parseFloat(e);return isNaN(r)?.5:r>1?r/100:r}};var yt=class{process({value:e}){let t=e.trim().toLowerCase();if(t.startsWith("#")){let n=t.slice(1);n.length===3&&(n=n.split("").map(u=>u+u).join(""));let 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 r=t.match(/rgba?\(([^)]+)\)/);if(r){let[n,s,o,a=1]=r[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:s,b:o,a}}let i=t.match(/hsla?\(([^)]+)\)/);if(i){let[n,s,o,a="1"]=i[1].split(",").map(h=>h.trim()),[l,u,d]=this.hslToRgb(parseFloat(n),parseFloat(s),parseFloat(o));return{r:l,g:u,b:d,a:parseFloat(a)}}return{r:0,g:0,b:0,a:0}}hslToRgb(e,t,r){e=e/360,t=parseFloat(t.toString())/100,r=parseFloat(r.toString())/100;let i=(u,d,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<1/6?u+(d-u)*6*h:h<1/2?d:h<2/3?u+(d-u)*(2/3-h)*6:u),n=r<.5?r*(1+t):r+t-r*t,s=2*r-n,o=Math.round(i(s,n,e+1/3)*255),a=Math.round(i(s,n,e)*255),l=Math.round(i(s,n,e-1/3)*255);return[o,a,l]}};var St=class{constructor(){this.namedCurves={linear:[0,0,1,1],ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]}}process({easing:e}){let t=e.trim();if(this.namedCurves[t])return this.cubicBezier(...this.namedCurves[t]);let r=t.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(r){let[i,n,s,o]=r.slice(1).map(Number);return this.cubicBezier(i,n,s,o)}return i=>i}cubicBezier(e,t,r,i){let n=3*e,s=3*(r-e)-n,o=1-n-s,a=3*t,l=3*(i-t)-a,u=1-a-l;function d(p){return((o*p+s)*p+n)*p}function h(p){return((u*p+l)*p+a)*p}function m(p){return(3*o*p+2*s)*p+n}function f(p,v=1e-5){let g,S,b=p,y,M,C;for(C=0;C<8;C++){if(y=d(b)-p,Math.abs(y)<v)return b;if(M=m(b),Math.abs(M)<1e-6)break;b=b-y/M}for(g=0,S=1,b=p;g<S;){if(y=d(b)-p,Math.abs(y)<v)return b;y>0?S=b:g=b,b=(S+g)/2}return b}return function(p){return h(f(p))}}};var Et=class{process({distance:e,radius:t,strength:r}){if(e>=t)return 0;let i=(t-e)/t;return r*i}};var Mt=class{process({from:e,to:t,progress:r}){return{r:e.r+(t.r-e.r)*r,g:e.g+(t.g-e.g)*r,b:e.b+(t.b-e.b)*r,a:e.a+(t.a-e.a)*r}}};var xt=class{process({from:e,to:t,progress:r}){return{x:(t.x-e.x)*r,y:(t.y-e.y)*r}}};var wt=class{process({value:e}){let r=e?.trim();if(!r||r==="none")return 1;try{if(r.startsWith("matrix(")){let i=r.match(/matrix\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scale(")){let i=r.match(/scale\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("scaleX(")){let i=r.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(r.startsWith("scale3d(")){let i=r.match(/scale3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}if(r.startsWith("matrix3d(")){let i=r.match(/matrix3d\(([^)]+)\)/);if(i&&i[1]){let n=i[1].split(",").map(s=>parseFloat(s.trim()));if(n.length>=1&&!isNaN(n[0]))return n[0]}}}catch(i){return console.error(`Error parsing transform string "${r}":`,i),1}return 1}};var Ut=class{process({attributeValue:e}){let t={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[]};return e&&e.split("|").forEach(i=>{let n=i.trim();if(!n)return;let s=n.match(/^(\w+-)?(\w+)(\[(.*?)\])?$/);if(s){let o=s[1]||"",a=s[2],l=this.toCamelCase(o+a),d=(s[4]||"").split(";").map(m=>m.trim()).filter(m=>m.length>0),h=this.parseParamsArray(d);switch(l){case"line":t.line.push(h);break;case"word":t.word.push(h);break;case"char":t.char.push(h);break;case"charLine":t.charLine.push(h);break;case"charWord":t.charWord.push(h);break;case"wordLine":t.wordLine.push(h);break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),t}toCamelCase(e){return e.replace(/-([a-z])/g,(t,r)=>r.toUpperCase())}parseParamsArray(e){let t={align:"start"};return e.forEach(r=>{if(r==="abs")t.abs=!0;else if(r.startsWith("random")){t.align="random";let i=r.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(t.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(r)&&(t.align=r)}),t}};var Tt=class{process({value:e}){let t=[],r="",i=0;for(let n=0;n<e.length;n++){let s=e[n];s==="("&&i++,s===")"&&i--,s==="|"&&i===0?(r.trim()&&t.push(r.trim()),r=""):r+=s}return r.trim()&&t.push(r.trim()),t.map(n=>{let s=n.match(/^(\w+)(?:\((.*)\))?$/);if(s){let[,a,l]=s;return l?{key:a,params:l.split(",").map(u=>u.trim())}:{key:a}}let o=n.indexOf(":");if(o!==-1){let a=n.slice(0,o).trim(),l=n.slice(o+1).trim(),u=l?l.split(",").map(d=>d.trim()):void 0;return{key:a,params:u}}return{key:n}})}};var qt=class{constructor(){this.inputValidators={required:e=>e!=null&&String(e).trim()!=="",min:(e,t)=>typeof e=="string"&&e.length>=Number(t?.[0]??0),max:(e,t)=>typeof e=="string"&&e.length<=Number(t?.[0]??Number.MAX_SAFE_INTEGER),checked:e=>{if(Array.isArray(e))return e.length>0;if(e===!0||e==="true"||e===1||e==="1")return!0;if(typeof e=="string"){let t=e.trim().toLowerCase();return t==="false"||t==="0"?!1:t.length>0}return!!e},email:e=>typeof e=="string"&&/^[^\s@]+@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(e),phone:e=>{if(typeof e!="string")return!1;let t=e.trim();if(t===""||!/^[0-9()\s+-.]+$/.test(t))return!1;let r=t.replace(/\D/g,"").length;return r>=7&&r<=15},number:e=>typeof e=="string"&&/^-?\d+(\.\d+)?$/.test(e),integer:e=>typeof e=="string"&&/^-?\d+$/.test(e),url:e=>typeof e=="string"&&/^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:\/?#[\]@!$&'()*+,;=]*)?$/.test(e),regex:(e,t)=>this.testByRegex(e,t?.[0]),alpha:e=>this.testByRegex(e,"^[A-Za-z]+$",!0),alpha_num:e=>this.testByRegex(e,"^[A-Za-z0-9]+$",!0),alpha_dash:e=>this.testByRegex(e,"^[A-Za-z0-9_-]+$",!0),same:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:this.areValuesEqual(e,n)},different:(e,t,r)=>{let i=t?.[0],n=this.getContextValue(r,i);return i&&n===void 0?!1:!this.areValuesEqual(e,n)},range:(e,t)=>{if(e==null||e==="")return!0;let r=Number(e),i=Number(t?.[0]),n=Number(t?.[1]);return Number.isNaN(r)||Number.isNaN(i)||Number.isNaN(n)?!1:r>=i&&r<=n},digits:(e,t)=>{if(typeof e!="string")return!1;let r=Number(t?.[0]??0);return r<=0?!1:new RegExp(`^\\d{${r}}$`).test(e)},ip:e=>typeof e=="string"&&(this.isIPv4(e)||this.isIPv6(e)),mimes:(e,t)=>this.validateMimes(e,t),max_size:(e,t)=>{let r=Number(t?.[0]);return!r||r<=0?!0:this.validateMaxSize(e,r)},after:(e,t,r)=>this.compareDates(e,t,r,"after"),before:(e,t,r)=>this.compareDates(e,t,r,"before")};this.beforeInputValidators={number:e=>/^-?\d*\.?\d*$/.test(e),integer:e=>/^-?\d*$/.test(e),email:e=>/^[\w@.\-+]*$/.test(e),phone:e=>/^[0-9()\s+-.]*$/.test(e),letters:e=>/^[a-zA-Z]*$/.test(e),lettersSpaces:e=>/^[a-zA-Z\s]*$/.test(e),lettersNumbers:e=>/^[a-zA-Z0-9]*$/.test(e),alpha:e=>/^[A-Za-z]*$/.test(e),alpha_num:e=>/^[A-Za-z0-9]*$/.test(e),alpha_dash:e=>/^[A-Za-z0-9_-]*$/.test(e),digits:(e,t)=>{let r=Number(t?.[0]??0);return r<=0?/^\d*$/.test(e):new RegExp(`^\\d{0,${r}}$`).test(e)},url:e=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(e),pattern:(e,t)=>{try{return new RegExp(t?.[0]||"").test(e)}catch{return!0}}}}process({rules:e,value:t,type:r="input",context:i}){let n=[];for(let u of e){var s=null,o=null,a=!0,l=!0;r=="input"&&(o=this.inputValidators[u.key],!o)||r=="beforeinput"&&(s=this.beforeInputValidators[u.key],!s)||(o&&(a=o(t,u.params,i)),s&&(l=s(t,u.params,i)),l||n.push(this.getErrorMessage(u.key,u.params)),a||n.push(this.getErrorMessage(u.key,u.params)))}return{valid:n.length===0,errors:n}}getErrorMessage(e,t){switch(e){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${t?.[0]} characters`;case"max":return`Maximum ${t?.[0]} characters`;case"phone":return"Invalid phone number";case"number":return"Only numbers are allowed";case"integer":return"Only whole numbers are allowed";case"url":return"Invalid URL address";case"checked":return"You must accept";case"regex":return"Value does not match the required pattern";case"alpha":return"Only letters are allowed";case"alpha_num":return"Only letters and numbers are allowed";case"alpha_dash":return"Only letters, numbers, dashes, and underscores are allowed";case"same":return"Values do not match";case"different":return"Values must be different";case"range":return`Value must be between ${t?.[0]} and ${t?.[1]}`;case"digits":return`Value must contain exactly ${t?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${t?.join(", ")}`;case"max_size":return`File must be smaller than ${t?.[0]} KB`;case"after":return`Date must be after ${t?.[0]}`;case"before":return`Date must be before ${t?.[0]}`;default:return"Invalid value"}}validateMimes(e,t){if(!t||t.length===0)return!0;let r=this.extractFiles(e);if(r.length===0)return!0;let i=t.map(n=>n.trim().toLowerCase());return r.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(e,t){let r=this.extractFiles(e);if(r.length===0)return!0;let i=t*1024;return r.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(e){if(!e)return[];let t=[];return typeof File<"u"&&e instanceof File?(t.push(e),t):typeof FileList<"u"&&e instanceof FileList?Array.from(e):Array.isArray(e)?(e.forEach(r=>{t.push(...this.extractFiles(r))}),t):typeof e=="object"&&("name"in e||"size"in e||"type"in e)?(t.push(e),t):(typeof e=="string"&&e!==""&&t.push({name:e}),t)}isMimeAllowed(e,t){let r=(e.type||"").toLowerCase(),i=this.getFileExtension(e.name);return t.some(n=>{let s=n.replace(/^\./,"").toLowerCase();return s?s.includes("/")?r===s:i===s:!1})}getFileExtension(e){if(!e)return"";let t=e.split(".");return t.length<=1?"":(t.pop()||"").toLowerCase()}compareDates(e,t,r,i){if(e==null||e==="")return!0;let n=t?.[0];if(!n)return!0;let s=this.toDate(e),o=this.resolveDateReference(n,r);return!s||!o?!1:i==="after"?s.getTime()>o.getTime():s.getTime()<o.getTime()}resolveDateReference(e,t){let r=this.getContextValue(t,e);if(r!==void 0)return this.toDate(r);if(e.toLowerCase()==="now")return new Date;if(e.toLowerCase()==="today"){let i=new Date;return i.setHours(0,0,0,0),i}return this.toDate(e)}toDate(e){if(e==null||e==="")return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e=="string"){let t=Date.parse(e);if(!Number.isNaN(t))return new Date(t)}return null}testByRegex(e,t,r=!1){if(t==null||t==="")return!0;let i=typeof e=="string"?e:e==null?"":String(e);if(r&&i==="")return!0;try{let{source:n,flags:s}=this.normalizeRegex(t);return new RegExp(n,s).test(i)}catch{return!0}}normalizeRegex(e){let t=e.trim();if(t.startsWith("/")&&t.lastIndexOf("/")>0){let r=t.lastIndexOf("/"),i=t.slice(1,r),n=t.slice(r+1);return{source:i,flags:n}}return{source:t,flags:""}}getContextValue(e,t){if(!(!e||!t)){if(e.values&&Object.prototype.hasOwnProperty.call(e.values,t))return e.values[t];if(e.getValue)return e.getValue(t)}}areValuesEqual(e,t){return Array.isArray(e)||Array.isArray(t)?JSON.stringify(e)===JSON.stringify(t):e===t}isIPv4(e){let t=e.split(".");return t.length!==4?!1:t.every(r=>{if(!/^\d+$/.test(r))return!1;let i=Number(r);return i>=0&&i<=255})}isIPv6(e){if(!e)return!1;if(e==="::")return!0;let t=e.split("::");if(t.length>2)return!1;let r=/^[0-9a-fA-F]{1,4}$/,i=e.split(":");return t.length===2?i.every(n=>n===""||r.test(n))&&i.length<=8:i.length===8&&i.every(n=>r.test(n))}};var Yt=class{constructor(){this.domAttribute=new ht;this.recordAttribute=new pt;this.transformNullify=new tt;this.boundingClientRect=new dt;this.relativePosition=new mt(this.transformNullify);this.unitParser=new ft;this.lerp=new gt;this.adaptiveLerp=new vt;this.originParser=new bt;this.colorParser=new yt;this.validation=new qt;this.easingFunction=new St;this.magneticPull=new Et;this.lerpColor=new Mt;this.lerpVector=new xt;this.transformScaleParser=new wt;this.optionsParser=new Ut;this.ruleParser=new Tt}};function Xt(){let c=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,e=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,t=typeof window<"u"?window.innerWidth<=768:!1;return c||e||t}var Oe=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}begin(){this.isOpen||(this.isOpen=!0)}setVars(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let r=this.pendingVars.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingVars.set(e,r)}setProps(e,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let r=this.pendingProps.get(e)??{};for(let[i,n]of Object.entries(t))r[i]!==n&&(r[i]=n);this.pendingProps.set(e,r)}run(e){let t=this.isOpen;t||this.begin();try{e(),t||this.commit()}catch(r){throw t||this.cancel(),r}}commit(){if(this.isOpen){this.isOpen=!1;for(let[e,t]of this.pendingVars){let r=e.style;for(let[i,n]of Object.entries(t))r.setProperty(i,String(n))}this.pendingVars.clear();for(let[e,t]of this.pendingProps){let r=e.style;for(let[i,n]of Object.entries(t))r[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},x=new Oe;var $e=new WeakMap,F=5e-4,ot="default",Ie="[string-cursor],[data-string-cursor]",_e="[string-cursor-content],[data-string-cursor-content]",De=1/240;function mr(c){let e=$e.get(c);return e||(e={prevX:Number.NaN,prevY:Number.NaN},$e.set(c,e)),e}var jt=class extends E{constructor(t){super(t);this.cursorPrev={x:Number.NaN,y:Number.NaN,stepX:Number.NaN,stepY:Number.NaN};this.cursorPortals=new Map;this.hoveredObjects=new Set;this.globalListenersBound=!1;this.boundBeforeUnload=()=>this.cleanupHoverTargets();this.boundPageHide=()=>this.cleanupHoverTargets();this.boundVisibilityChange=()=>{document.hidden&&this.cleanupHoverTargets()};this.enabled=!0;this.lastFrameTime=0;this.htmlKey="cursor",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"target-disable",type:"boolean",fallback:this.settings["target-disable"]},{key:"target-style-disable",type:"boolean",fallback:this.settings["target-style-disable"]},{key:"cursor-target",type:"string",fallback:this.settings["cursor-target"]??ot},{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:r=>this.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})},{key:"cursor-vars",type:"string",fallback:""}],Xt()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n),r.setProperty("mouse-x",0),r.setProperty("mouse-y",0),r.setProperty("mouse-pixel-x",0),r.setProperty("mouse-pixel-y",0),r.setProperty("is-mouse-over",!1),r.setProperty("is-mouse-move",!1),r.setProperty("__cursor-vars",this.parseCursorVars(r.getProperty("cursor-vars")));let s=i.getBoundingClientRect();r.setProperty("cached-width",s.width||i.offsetWidth||1),r.setProperty("cached-height",s.height||i.offsetHeight||1)}onResize(){super.onResize(),this.objects.forEach(t=>{let r=t.htmlElement.getBoundingClientRect();t.setProperty("cached-width",r.width||t.htmlElement.offsetWidth||1),t.setProperty("cached-height",r.height||t.htmlElement.offsetHeight||1)})}onMutate(t){if(!this.enabled)return;let r=performance.now(),i=this.lastFrameTime?(r-this.lastFrameTime)/1e3:.016;this.lastFrameTime=r,i>.1&&(i=.1),i<De&&(i=De);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"),u=o.getProperty("lerp")??.15,d=this.getFrameAdjustedLerp(u,i),h=this.getObjectDimensions(o),{halfWidth:m,halfHeight:f,width:p,height:v}=h;if(a&&!l){let{cx:g,cy:S}=this.centers.getCenter(o),b=n-(g-m),y=s-(S-f),M=o.getProperty("mouse-pixel-x")??0,C=o.getProperty("mouse-pixel-y")??0,w=M-b,D=C-y;if(w*w+D*D>1e-4){let k=o.getProperty("is-mouse-move")??!1,A=o.getProperty("cursor-enter")??"snap";k||(o.setProperty("is-mouse-move",!0),A==="snap"&&(o.setProperty("mouse-pixel-x",b),o.setProperty("mouse-pixel-y",y),o.setProperty("mouse-x",b),o.setProperty("mouse-y",y),M=b,C=y),this.events.emit(`cursor:start:${o.id}`,null));let L=this.tools.lerp.process({from:M,to:b,progress:d}),N=this.tools.lerp.process({from:C,to:y,progress:d}),T=M+L,I=C+N,B=Math.abs(T-M)>F||Math.abs(I-C)>F;o.setProperty("mouse-pixel-x",T),o.setProperty("mouse-pixel-y",I);let z=o.getProperty("alignment")??"center",V=this.calculateOffset(z,T,p),R=this.calculateOffset(z,I,v);o.setProperty("mouse-x",V),o.setProperty("mouse-y",R),this.setMouseCoordinates(o,V,R,T,I)&&this.events.emit(`cursor:move:${o.id}`,{x:V,y:R}),B&&this.events.emit(`cursor:pixel:${o.id}`,{x:T,y:I})}else{o.setProperty("mouse-pixel-x",b),o.setProperty("mouse-pixel-y",y),o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(`cursor:end:${o.id}`,null));let k=o.getProperty("alignment")??"center",A=this.calculateOffset(k,b,p),L=this.calculateOffset(k,y,v);this.setMouseCoordinates(o,A,L,b,y)}}else{if(o.getProperty("cursor-leave-hold")??!1){o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(`cursor:end:${o.id}`,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 b=o.getProperty("mouse-x")??0,y=o.getProperty("mouse-y")??0;if(b!==0||y!==0){o.setProperty("is-mouse-move",!1);let M=this.calculateOffset("center",m,p),C=this.calculateOffset("center",f,v),w=b+this.tools.lerp.process({from:b,to:M,progress:d}),D=y+this.tools.lerp.process({from:y,to:C,progress:d});o.setProperty("mouse-x",w),o.setProperty("mouse-y",D),Math.abs(w)<.001&&Math.abs(D)<.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,D)}}}),this.cursorPortals.size>0){let{stepX:o,stepY:a,smoothedX:l,smoothedY:u}=this.data.cursor,d=this.cursorPrev;(!Number.isFinite(d.x)||Math.abs(l-d.x)>F||Math.abs(u-d.y)>F||Math.abs(o-d.stepX)>F||Math.abs(a-d.stepY)>F)&&(this.events.emit("cursor",{stepX:o,stepY:a,x:l,y:u}),this.cursorPrev={x:l,y:u,stepX:o,stepY:a});let m=this.data.cursor.targetX,f=this.data.cursor.targetY;this.cursorPortals.forEach(p=>{p.forEach(v=>{this.updatePortalPosition(v,m,f,i)})})}}onObjectConnected(t){let r=t.htmlElement;this.centers.attach(t),t.setProperty("mouseleave",()=>{this.onMouseLeave(t)}),t.setProperty("mouseenter",()=>{this.onMouseEnter(t)}),t.setProperty("onEnterEvent",this.onEnterObject.bind(this)),t.events.on("enter",t.getProperty("onEnterEvent")),t.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),t.events.on("leave",t.getProperty("onLeaveEvent"))}getCursorClass(t){let r=t.getProperty("cursor-class");return r!=null&&r.length>0?r:null}onMouseEnter(t){if(!document.contains(t.htmlElement))return;t.setProperty("is-mouse-over",!0),this.hoveredObjects.add(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.add(r),this.incrementPortalHover(i)}),t.htmlElement.addEventListener("mouseleave",t.getProperty("mouseleave"))}onMouseLeave(t){t.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(t);let r=this.getCursorClass(t);this.withPortalsForObject(t,i=>{r&&i.element.classList.remove(r),this.decrementPortalHover(i)}),document.contains(t.htmlElement)&&t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}onEnterObject(t){t.htmlElement.addEventListener("mouseenter",t.getProperty("mouseenter"))}onLeaveObject(t){t.htmlElement.removeEventListener("mouseenter",t.getProperty("mouseenter")),t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}safariNavigationCleanup(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onElementRemovedFromDOM(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onObjectDisconnected(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(t,r){this.enabled&&((this.shouldRefreshPortals(t)||this.shouldRefreshPortals(r))&&this.collectCursorPortals(),r.length>0&&this.handleRemovedNodes(r))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(Ie).forEach(r=>{if(!(r instanceof HTMLElement))return;let i=this.resolvePortalId(r),n=this.resolvePortalLerp(r),s=r.matches(_e)?r:r.querySelector(_e),o=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:r,content:s,prev:{x:o,y:a,stepX:0,stepY:0},hoverCount:0,showTimer:null,lerp:n},u=this.cursorPortals.get(i);u?u.push(l):this.cursorPortals.set(i,[l])})}resolvePortalId(t){let r=[t.getAttribute("data-string-cursor"),t.getAttribute("string-cursor"),t.getAttribute("data-string-cursor-id"),t.getAttribute("string-cursor-id")];for(let i of r)if(i&&i.trim().length>0)return i.trim();return ot}resolvePortalLerp(t){let r=t.getAttribute("data-string-cursor-lerp")??t.getAttribute("string-cursor-lerp")??this.settings["cursor-lerp"];if(!r)return null;let i=parseFloat(r);if(!Number.isFinite(i))return null;let n=Math.min(1,Math.max(.01,i));return this.tools.adaptiveLerp.process({value:n,inMin:.1,inMax:1,outMin:.05,outMax:.65})}shouldRefreshPortals(t){for(let r of Array.from(t))if(r instanceof Element&&(r.matches(Ie)||r.querySelector(Ie)))return!0;return!1}withPortalsForObject(t,r){this.getPortalsForObject(t).forEach(n=>r(n))}getPortalsForObject(t){if(this.cursorPortals.size===0)return[];let r=this.extractPortalIds(t),i=[];if(r.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let s=n.length>0?n:ot,o=this.cursorPortals.get(s);o&&o.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(ot)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(s=>i.push(s))}return i}extractPortalIds(t){if(!t)return[ot];let r=t.getProperty("cursor-target");return typeof r!="string"||r.trim().length===0?[ot]:r.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(t){t.hoverCount++,t.element.classList.remove("-show"),this.restartPortalShowTimer(t)}decrementPortalHover(t){t.hoverCount=Math.max(0,t.hoverCount-1),t.hoverCount===0&&(this.clearPortalShowTimer(t),t.element.classList.remove("-show"))}restartPortalShowTimer(t){if(this.clearPortalShowTimer(t),!t.element.isConnected){t.showTimer=null;return}t.element.classList.add("-show"),t.showTimer=null}clearPortalShowTimer(t){t.showTimer&&(clearTimeout(t.showTimer),t.showTimer=null)}updatePortalPosition(t,r,i,n){if(!t.element.isConnected)return;let s=t.prev,o=Number.isFinite(s.x)?s.x:r,a=Number.isFinite(s.y)?s.y:i,l=t.lerp??.1,u=this.getFrameAdjustedLerp(l,n),d=(r-o)*u,h=(i-a)*u,m=n>1e-4?n:1/60,f=d/(m*60),p=h/(m*60);if(Math.abs(d)<F&&Math.abs(h)<F)return;let v=o+d,g=a+h;t.element.style.setProperty("--x",v.toFixed(2)),t.element.style.setProperty("--y",g.toFixed(2)),t.element.style.setProperty("--x-lerp",f.toFixed(3)),t.element.style.setProperty("--y-lerp",p.toFixed(3)),s.x=v,s.y=g,s.stepX=d,s.stepY=h}handleRemovedNodes(t){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(r=>{r.htmlElement.isConnected||this.onElementRemovedFromDOM(r)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>this.safariNavigationCleanup(t))}bindGlobalLifecycleListeners(){this.globalListenersBound||(window.addEventListener("beforeunload",this.boundBeforeUnload),window.addEventListener("pagehide",this.boundPageHide),document.addEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!0)}unbindGlobalLifecycleListeners(){this.globalListenersBound&&(window.removeEventListener("beforeunload",this.boundBeforeUnload),window.removeEventListener("pagehide",this.boundPageHide),document.removeEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!1)}setMouseCoordinates(t,r,i,n,s){if(t.getProperty("cursor-target-style-disable"))return!1;let o=mr(t),a=Math.abs(r)<F&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<F?o.prevX:Math.round(r*100)/100,l=Math.abs(i)<F&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<F?o.prevY:Math.round(i*100)/100;if(Number.isFinite(o.prevX)&&Math.abs(a-o.prevX)<=F&&Number.isFinite(o.prevY)&&Math.abs(l-o.prevY)<=F)return!1;o.prevX=a,o.prevY=l;let u=a.toFixed(2),d=l.toFixed(2),h=t.getProperty("__cursor-vars"),m={"--x":u,"--y":d};if(h&&h.size>0){let f=Number.isFinite(n)?n:t.getProperty("mouse-pixel-x"),p=Number.isFinite(s)?s:t.getProperty("mouse-pixel-y"),v=t.getProperty("__prev-x-px"),g=t.getProperty("__prev-y-px"),S=Number.isFinite(v)?f-v:0,b=Number.isFinite(g)?p-g:0;t.setProperty("__prev-x-px",f),t.setProperty("__prev-y-px",p);let y=S===0&&b===0?0:Math.atan2(b,S),M=y*180/Math.PI;h.has("xpx")&&(m["--x-px"]=f.toFixed(2)),h.has("ypx")&&(m["--y-px"]=p.toFixed(2)),h.has("dx")&&(m["--dx"]=S.toFixed(3)),h.has("dy")&&(m["--dy"]=b.toFixed(3)),h.has("angle")&&(m["--angle"]=y.toFixed(4)),h.has("angle-deg")&&(m["--angle-deg"]=M.toFixed(2))}return x.run(()=>{this.applyToElementAndConnects(t,f=>{x.setVars(f,m)})}),!0}parseCursorVars(t){return t?new Set(t.split(/[|,]/).map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)):new Set}getFrameAdjustedLerp(t,r){let i=Math.min(.99,Math.max(.001,t));if(!Number.isFinite(r)||r<=0)return i;let s=Math.max(r,De)*60,o=1-Math.pow(1-i,s);return Math.min(.999,Math.max(1e-4,o))}getObjectDimensions(t){let r=t.getProperty("cached-width"),i=t.getProperty("cached-height");if(typeof r=="number"&&typeof i=="number"&&r>0&&i>0){let f=r/2,p=i/2;return{width:r,height:i,halfWidth:f,halfHeight:p}}let n=t.htmlElement,s=n.offsetWidth||n.clientWidth||n.scrollWidth||1,o=n.offsetHeight||n.clientHeight||n.scrollHeight||1,a=t.getProperty("half-width"),l=t.getProperty("half-height"),u=typeof a=="number"&&Number.isFinite(a)?a:s/2,d=typeof l=="number"&&Number.isFinite(l)?l:o/2,h=u>0?u*2:s,m=d>0?d*2:o;return t.setProperty("cached-width",h),t.setProperty("cached-height",m),{width:h,height:m,halfWidth:u,halfHeight:d}}calculateOffset(t,r,i){switch(t){case"start":return r/i;case"end":return(r-i)/i;case"center":default:return(r-i/2)/(i/2)}}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&this.centers.detach(r),super.removeObject(t)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var Kt=class extends E{constructor(t){super(t);this.originObservers=new WeakMap;this.htmlKey="impulse",this.attributesToMap.push({key:"position-strength",type:"number",fallback:this.settings["position-strength"]},{key:"position-tension",type:"number",fallback:this.settings["position-tension"]},{key:"position-friction",type:"number",fallback:this.settings["position-friction"]},{key:"position-max-velocity",type:"number",fallback:this.settings["position-max-velocity"]},{key:"position-update-threshold",type:"number",fallback:this.settings["position-update-threshold"]},{key:"rotation-strength",type:"number",fallback:this.settings["rotation-strength"]},{key:"rotation-tension",type:"number",fallback:this.settings["rotation-tension"]},{key:"rotation-friction",type:"number",fallback:this.settings["rotation-friction"]},{key:"rotation-max-angular-velocity",type:"number",fallback:this.settings["rotation-max-angular-velocity"]},{key:"rotation-max-angle",type:"number",fallback:this.settings["rotation-max-angle"]},{key:"rotation-update-threshold",type:"number",fallback:this.settings["rotation-update-threshold"]},{key:"max-offset",type:"number",fallback:this.settings["max-offset"]},{key:"sleep-epsilon",type:"number",fallback:this.settings["sleep-epsilon"]},{key:"continuous-push",type:"boolean",fallback:this.settings["continuous-push"]},{key:"rotation-origin",type:"string",fallback:this.settings["rotation-origin"]??"center center"})}onObjectConnected(t){super.onObjectConnected(t),t.setProperty("offset-x",0),t.setProperty("offset-y",0),t.setProperty("velocity-x",0),t.setProperty("velocity-y",0),t.setProperty("angle-deg",0),t.setProperty("ang-vel-deg",0),t.setProperty("__prev-css-x",0),t.setProperty("__prev-css-y",0),t.setProperty("__prev-css-rot",0),t.setProperty("__push-latch",!1),t.setProperty("__rotate-latch",!1),this.cacheRotationOrigin(t),this.observeRotationOrigin(t),this.hover.track(t),this.centers.attach(t)}onObjectDisconnected(t){this.hover.untrack(t),this.centers.detach(t);let r=this.originObservers.get(t);r&&(r.disconnect(),this.originObservers.delete(t))}onMouseMove(t){if(!t)return;let r=this.data.cursor.velocityX,i=this.data.cursor.velocityY;if(r===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,m=Math.max(0,Math.min(1,(this.data.cursor.targetX-a.left)/h));this.events.emit(`object:impulse:${o.id}:side`,{value:m})}let u=o.getProperty("position-strength")||0;if(u!==0){let h=o.getProperty("continuous-push")??!0,m=o.getProperty("__push-latch")===!0;if(h||!m){let f=o.getProperty("velocity-x")||0,p=o.getProperty("velocity-y")||0;f+=r*u,p+=i*u,o.setProperty("velocity-x",f),o.setProperty("velocity-y",p),h||o.setProperty("__push-latch",!0)}}let d=o.getProperty("rotation-strength")??.75;if(d!==0){let h=o.getProperty("continuous-push")??!0,m=o.getProperty("__rotate-latch")===!0;if(h||!m){let{centerX:f,centerY:p}=this.getRotationOriginFromRect(o,a),v=n-f,g=s-p,S=v*i-g*r,b=o.getProperty("ang-vel-deg")||0;b+=S*d*.02,o.setProperty("ang-vel-deg",b),h||o.setProperty("__rotate-latch",!0)}}}}}cacheRotationOrigin(t){let r=t.getProperty("rotation-origin")??"center center",{x:i,y:n}=this.tools.originParser.toNormalized({value:r});t.setProperty("__rotation-origin-x",i),t.setProperty("__rotation-origin-y",n)}observeRotationOrigin(t){let r="string-rotation-origin",i="data-string-rotation-origin",n=new MutationObserver(s=>{for(let o of s)if(o.type==="attributes"&&(o.attributeName===r||o.attributeName===i)){let a=t.htmlElement.getAttribute(r)??t.htmlElement.getAttribute(i);a!==null&&t.setProperty("rotation-origin",a),this.cacheRotationOrigin(t);break}});n.observe(t.htmlElement,{attributes:!0,attributeFilter:[r,i]}),this.originObservers.set(t,n)}getRotationOriginFromRect(t,r){let i=t.getProperty("__rotation-origin-x")??.5,n=t.getProperty("__rotation-origin-y")??.5;return{centerX:r.left+r.width*i,centerY:r.top+r.height*n}}onFrame(t){let r=this.data.cursor.targetX,i=this.data.cursor.targetY;for(let n of this.objects){let s=n.htmlElement.getBoundingClientRect(),o=r>=s.left&&r<=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,u=s.getProperty("velocity-y")||0,d=s.getProperty("position-tension")??.05,h=s.getProperty("position-friction")??.15,m=s.getProperty("position-max-velocity")??120,f=s.getProperty("max-offset")??220;l-=d*o,u-=d*a;let p=1-h;l*=p,u*=p,l>m?l=m:l<-m&&(l=-m),u>m?u=m:u<-m&&(u=-m),o+=l,a+=u,o>f?o=f:o<-f&&(o=-f),a>f?a=f:a<-f&&(a=-f);let v=s.getProperty("angle-deg")||0,g=s.getProperty("ang-vel-deg")||0,S=s.getProperty("rotation-tension")??.06,b=s.getProperty("rotation-friction")??.18,y=s.getProperty("rotation-max-angular-velocity")??6,M=s.getProperty("rotation-max-angle")??18;g-=S*v,g*=1-b,g>y?g=y:g<-y&&(g=-y),v+=g,v>M?(v=M,g*=.35):v<-M&&(v=-M,g*=.35);let C=s.getProperty("sleep-epsilon")??.01,w=l*l+u*u<C*C&&o*o+a*a<C*C,D=Math.abs(g)<C&&Math.abs(v)<C;w?(l||u||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=u=0):(s.setProperty("offset-x",o),s.setProperty("offset-y",a),s.setProperty("velocity-x",l),s.setProperty("velocity-y",u)),D?(v||g)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),v=g=0):(s.setProperty("angle-deg",v),s.setProperty("ang-vel-deg",g));let O=s.getProperty("position-update-threshold")??.1,k=s.getProperty("rotation-update-threshold")??.15,A=s.getProperty("__prev-css-x")||0,L=s.getProperty("__prev-css-y")||0,N=s.getProperty("__prev-css-rot")||0,T=Math.round(o*10)/10,I=Math.round(a*10)/10,B=Math.round(v*10)/10,z=Math.abs(T-A)>O||Math.abs(I-L)>O,V=Math.abs(B-N)>k;(z||V)&&(this.applyToElementAndConnects(s,R=>{z&&(R.style.setProperty("--push-x",String(T)),R.style.setProperty("--push-y",String(I)),this.events.emit(`object:impulse:${s.id}:move`,{x:T,y:I})),V&&(R.style.setProperty("--push-rotation",String(B)),this.events.emit(`object:impulse:${s.id}:rotate`,{rotation:B}))}),z&&(s.setProperty("__prev-css-x",T),s.setProperty("__prev-css-y",I)),V&&s.setProperty("__prev-css-rot",B))}}};var Ae=class{constructor(){this.measureQueue=[];this.mutateQueue=[];this.scheduled=!1}measure(e){this.measureQueue.push(e),this.schedule()}mutate(e){this.mutateQueue.push(e),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,requestAnimationFrame(()=>{let e=this.measureQueue;this.measureQueue=[];for(let r=0;r<e.length;r++)try{e[r]()}catch(i){console.error("Error in frameDOM measure task:",i)}let t=this.mutateQueue;this.mutateQueue=[];for(let r=0;r<t.length;r++)try{t[r]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}))}},H=new Ae;var gr=20,_={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 Ue(c){if(!c)return _.DEFAULT_DURATION;let e=parseFloat(c);return isNaN(e)?_.DEFAULT_DURATION:e}function Gt(c,e){let t=[...c].sort((i,n)=>n.breakpoint-i.breakpoint),r=t.find(i=>e>=i.breakpoint);return r?r.value:t[t.length-1]?.value}var Qt=class extends E{constructor(t){super(t);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(t){return this.tools.easingFunction.process({easing:t||_.DEFAULT_EASING})}onObjectConnected(t){super.onObjectConnected(t);let r=t.htmlElement;x.begin(),x.setProps(r,{position:"relative",boxSizing:"border-box"}),x.commit();let i=this.createState(t,r);this.states.set(t,i),this.attachImgLoaders(t,i,r),this.scheduleLayout(t,!1,"init");let n=t.id;this.events.on(`masonry:update:${n}`,s=>{s.mode&&t.setProperty("masonry-mode",s.mode),s.cols!==void 0&&t.setProperty(_.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&t.setProperty(_.MANUAL_GAP_KEY,Number(s.gap)),this.scheduleLayout(t,!0,"external-event")})}onFrame(t){let r=t.time.now;this.objectsOnPage.forEach(i=>{let n=this.states.get(i);if(!n||!n.isAnimating)return;let s=0;x.run(()=>{if(n.isAnimatingHeight){let o=r-n.heightStartTime,a=Math.min(1,o/n.heightDuration),l=n.heightEase(a),u=n.startHeight+(n.targetHeight-n.startHeight)*l;x.setProps(i.htmlElement,{height:`${u}px`}),a<1?s++:n.isAnimatingHeight=!1}n.items.forEach((o,a)=>{if(!o.isMoving)return;let l=r-o.startTime,u=l*o.invPosDur,d=u>1?1:u,h=o.posEase(d);o.cx=o.sx+o.dx*h,o.cy=o.sy+o.dy*h;let m=l*o.invSizeDur,f=m>1?1:m,p=o.sizeEase(f);o.cw=o.sw+o.dw*p,x.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||f<1?s++:(o.isMoving=!1,x.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,r)})}onResize(){this.data.system.suppressMasonryResize||this.objectsOnPage.forEach(t=>{this.states.has(t)&&this.scheduleLayout(t,!0,"window-resize")})}cleanupObject(t){let r=this.states.get(t);r&&(r.ro.disconnect(),r.mo.disconnect(),r.resizeDebounceId&&clearTimeout(r.resizeDebounceId),this.states.delete(t))}createState(t,r){let i=r.getBoundingClientRect(),n=a=>{if(!a.length)return;let l=a[0].contentRect,u=this.states.get(t);if(!u||Math.abs(l.width-u.lastObservedWidth)<=.5&&Math.abs(l.height-u.lastObservedHeight)<=.5)return;u.lastObservedWidth=l.width,u.lastObservedHeight=l.height;let d=getComputedStyle(r),h=parseFloat(d.paddingLeft)||0,m=parseFloat(d.paddingRight)||0,f=l.width-h-m;if(f<=0)return;let{columns:p,gap:v}=this.getGridSettings(t),g=(f-v*(p-1))/p;p===u.lastLayoutColumns&&v===u.lastLayoutGap&&Math.abs(g-u.lastLayoutColumnWidth)<=.5||(u.resizeDebounceId&&window.clearTimeout(u.resizeDebounceId),u.resizeDebounceId=window.setTimeout(()=>{u.isResizing=!0,this.scheduleLayout(t,!0,"resize-observer"),u.isResizing=!1},gr))},s=a=>{let l=this.states.get(t);if(!l)return;let u=!1;for(let d of a)d.removedNodes.length&&d.removedNodes.forEach(h=>{if(h.nodeType===1){let m=h;this.cleanupImgListeners(l,m),l.items.delete(m),u=!0}}),d.addedNodes.length&&d.addedNodes.forEach(h=>{h.nodeType===1&&(this.attachImgLoaders(t,l,h),u=!0)});u&&this.scheduleLayout(t,!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:r.offsetHeight,targetHeight:r.offsetHeight,heightStartTime:0,heightDuration:_.DEFAULT_DURATION,heightEase:this.parseEasing(null),isAnimatingHeight:!1,isAnimating:!1,pendingHeight:void 0,pendingHeightAnimate:!1,expectedEndTime:0};return o.ro.observe(r),o.mo.observe(r,{childList:!0}),o}handleAnimationEnd(t,r,i){if(r.pendingHeight!==void 0){let n=r.pendingHeight,s=r.pendingHeightAnimate;if(r.pendingHeight=void 0,r.pendingHeightAnimate=!1,s){r.startHeight=t.htmlElement.offsetHeight,r.targetHeight=n,r.heightStartTime=i,r.heightDuration=_.DEFAULT_DURATION,r.heightEase=this.parseEasing(null),r.isAnimatingHeight=!0,r.isAnimating=!0;return}x.run(()=>{x.setProps(t.htmlElement,{height:`${n}px`})})}r.isAnimating&&this.events.emit("masonry:shuffle:end",{object:t}),r.isAnimating=!1,this.objectManager.refreshLayoutForRoot(t.htmlElement),r.endTimerId&&(window.clearTimeout(r.endTimerId),r.endTimerId=void 0),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}scheduleLayout(t,r,i){let n=this.states.get(t);!n||n.layoutScheduled||(n.layoutScheduled=!0,H.measure(()=>{n.layoutScheduled=!1,this.performSyncLayout(t,n,r,i)}))}performSyncLayout(t,r,i,n){let s=t.htmlElement,o=Array.from(s.children);if(o.length===0)return;let a=s.getBoundingClientRect(),l=getComputedStyle(s),u=parseFloat(l.paddingLeft)||0,d=parseFloat(l.paddingRight)||0,h=parseFloat(l.paddingTop)||0,m=a.width-u-d;if(m<=0)return;let{columns:f,gap:p}=this.getGridSettings(t),v=(m-p*(f-1))/f,S=(t.getProperty("masonry-mode")||"auto")==="auto"&&i&&!r.isResizing&&n!=="window-resize"&&n!=="resize-observer",b=f===r.lastLayoutColumns&&p===r.lastLayoutGap&&Math.abs(v-r.lastLayoutColumnWidth)<=.5,y=0;o.forEach(T=>{let I=r.childIds.get(T);I||(I=r.nextChildId++,r.childIds.set(T,I)),y=y*31+I>>>0}),r.lastLayoutColumns=f,r.lastLayoutGap=p,r.lastLayoutColumnWidth=v,r.lastChildrenHash=y;let M=new Map;i&&o.forEach(T=>{let I=r.items.get(T);I&&M.set(T,I.cw)}),x.begin(),o.forEach(T=>{x.setProps(T,{position:"absolute",top:"0",left:"0",width:`${v}px`})}),x.commit();let C=o.map(T=>T.offsetHeight),w=0;C.forEach(T=>w=w*31+Math.round(T*2)>>>0),r.lastHeightsHash=w,i&&M.size>0&&x.run(()=>{M.forEach((T,I)=>{x.setProps(I,{width:`${T}px`})})});let D=new Array(f).fill(0),O=performance.now(),k=!1,A=0;o.forEach((T,I)=>{let B=C[I],z=0,V=D[0];for(let U=1;U<f;U++)D[U]<V&&(V=D[U],z=U);let R=z*(v+p)+u,Z=V+h,rt=v;D[z]=V+B+p;let Ct=Ue(T.getAttribute("string-masonry-position-time")),Lt=Ue(T.getAttribute("string-masonry-size-time")),Ne=Ct>0?1/Ct:1e3,ze=Lt>0?1/Lt:1e3,Ve=this.parseEasing(T.getAttribute("string-masonry-position-easing")),We=this.parseEasing(T.getAttribute("string-masonry-size-easing")),P=r.items.get(T);if(P)Math.abs(P.tx-R)+Math.abs(P.ty-Z)+Math.abs(P.tw-rt)>.5&&(P.sx=P.cx,P.sy=P.cy,P.sw=P.cw,P.tx=R,P.ty=Z,P.tw=rt,P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,P.posEase=Ve,P.invPosDur=Ne,P.sizeEase=We,P.invSizeDur=ze,P.startTime=O,P.isMoving=!0,k=!0,A=Math.max(A,Ct,Lt));else{let U=R,Be=i?Z+30:Z;P={sx:U,sy:Be,sw:rt,tx:R,ty:Z,tw:rt,dx:0,dy:0,dw:0,cx:U,cy:Be,cw:rt,startTime:O,posEase:Ve,invPosDur:Ne,sizeEase:We,invSizeDur:ze,isMoving:i},r.items.set(T,P),i?(P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,k=!0,A=Math.max(A,Ct,Lt)):x.run(()=>{x.setProps(T,{transform:`translate3d(${R}px, ${Z}px, 0)`,width:`${rt}px`,willChange:"auto"})})}});let L=Math.max(...D);if(Math.abs(r.targetHeight-L)>1)if(i){let T=s.getBoundingClientRect(),I=this.data.viewport.windowHeight;var N=!1;if(T.bottom>=-100&&T.bottom<=I+100){let B=T.top+L-I;if(Math.abs(B)>1&&L<s.offsetHeight){let z=T.top+this.data.scroll.current+L-I;this.events.emit("scrollTo",z),N=!0}}L>=r.targetHeight?(S?(r.startHeight=s.offsetHeight,r.heightStartTime=O,r.heightDuration=_.DEFAULT_DURATION,r.heightEase=this.parseEasing(null),r.isAnimatingHeight=!0):x.run(()=>{x.setProps(t.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}),r.targetHeight=L,r.pendingHeight=void 0):(r.pendingHeight=L,r.pendingHeightAnimate=S,r.targetHeight=L,N||x.run(()=>{x.setProps(t.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),k=!0}else r.targetHeight=L,r.pendingHeight=void 0,x.run(()=>{x.setProps(t.htmlElement,{height:`${L}px`})});k&&(r.isAnimating||this.events.emit("masonry:shuffle:start",{object:t}),r.isAnimating=!0,A>0&&(r.expectedEndTime=O+A+32,r.endTimerId&&window.clearTimeout(r.endTimerId),r.endTimerId=window.setTimeout(()=>{r.isAnimating&&(r.pendingHeight!==void 0||r.isAnimatingHeight||(this.events.emit("masonry:shuffle:end",{object:t}),r.isAnimating=!1,r.endTimerId=void 0))},A+50)))}getGridSettings(t){let r=this.data.viewport.windowWidth;if((t.getProperty("masonry-mode")||"auto")==="manual"){let o=t.getProperty(_.MANUAL_COLS_KEY),a=t.getProperty(_.MANUAL_GAP_KEY),l=t.getProperty("masonry-cols")||[],u=t.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Gt(l,r)??2)),gap:Math.max(0,a??Gt(u,r)??16)}}let n=t.getProperty("masonry-cols")||[{breakpoint:0,value:2}],s=t.getProperty("masonry-gap")||[{breakpoint:0,value:16}];return{columns:Math.max(1,Math.round(Gt(n,r)??2)),gap:Math.max(0,Gt(s,r)??16)}}attachImgLoaders(t,r,i){(i.tagName==="IMG"?[i]:Array.from(i.querySelectorAll("img"))).forEach(s=>{let o=s;if(o.complete||r.imgUnsubs.has(o))return;let a=()=>{this.scheduleLayout(t,!0,"img-load"),this.cleanupImgListeners(r,o)};o.addEventListener("load",a),o.addEventListener("error",a),r.imgUnsubs.set(o,()=>{o.removeEventListener("load",a),o.removeEventListener("error",a)})})}cleanupImgListeners(t,r){let i=n=>{let s=t.imgUnsubs.get(n);s&&(s(),t.imgUnsubs.delete(n))};r.tagName==="IMG"?i(r):r.querySelectorAll("img").forEach(n=>i(n))}};var Zt=class extends E{constructor(e){super(e),this.htmlKey="magnetic",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"strength",type:"number",fallback:this.settings.strength},{key:"radius",type:"number",fallback:this.settings.radius}]}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("is-magneting",!1),t.setProperty("magnetic-target-x",0),t.setProperty("magnetic-target-y",0),t.setProperty("magnetic-x",0),t.setProperty("magnetic-y",0),t.setProperty("lerp",.1)}onMouseMove(e){this.objects.forEach(t=>{let i=t.htmlElement.getBoundingClientRect(),n=i.left+i.width/2,s=i.top+i.height/2,o=e.clientX-n,a=e.clientY-s,l=Math.sqrt(o**2+a**2),u=t.getProperty("radius")??0,d=t.getProperty("strength")??0,h=this.tools.magneticPull.process({distance:l,radius:u,strength:d});t.setProperty("magnetic-target-x",o*h),t.setProperty("magnetic-target-y",a*h),h>0&&t.setProperty("is-magneting",!0)})}onFrame(e){this.objects.forEach(t=>{if(t.getProperty("is-magneting")){let r=t.getProperty("magnetic-x")??0,i=t.getProperty("magnetic-y")??0,n=t.getProperty("lerp")??0,s=t.getProperty("magnetic-target-x")??0,o=t.getProperty("magnetic-target-y")??0,a=this.tools.lerp.process({from:r,to:s,progress:n}),l=this.tools.lerp.process({from:i,to:o,progress:n});a>-.01&&a<.01&&(a=0,t.setProperty("magnetic-x",t.getProperty("magnetic-target-x"))),l>-.01&&l<.01&&(l=0,t.setProperty("magnetic-y",t.getProperty("magnetic-target-y"))),r+=a,i+=l,t.setProperty("magnetic-x",r),t.setProperty("magnetic-y",i),this.events.emit(`magnetic:move:${t.id}`,{x:r,y:i}),this.applyToElementAndConnects(t,u=>{u.style.setProperty("--magnetic-x",r.toString()),u.style.setProperty("--magnetic-y",i.toString())}),(t.getProperty("magnetic-target-x")==r||t.getProperty("magnetic-target-y")==i)&&t.setProperty("is-magneting",!1)}})}};var at=class extends E{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Xt()&&(this.enabled=!1)}onObjectConnected(t){this.enabled&&(super.onObjectConnected(t),this.centers.attach(t),this.hover.track(t))}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&(this.centers.detach(r),this.hover.untrack(r)),super.removeObject(t)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(t){this.enabled&&(super.onMouseMoveMeasure(t),this.refreshPointerState())}onScrollMeasure(t){this.enabled&&(super.onScrollMeasure(t),this.refreshPointerState())}getCursorTargets(t=!1){if(!this.enabled)return[];let r=this.hover.activeObjects();return this.nearOnly&&r.length?r:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:t?this.objectsOnPage:this.objects}refreshPointerState(t,r=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,s=t?[t]:this.getCursorTargets(r),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:u}=this.centers.getCenter(a),d=i-l,h=n-u,m=d*d+h*h;if(this.nearOnly){if(m>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(o!==null&&m>o)continue;a.setProperty("dx",d),a.setProperty("dy",h),a.setProperty("dist",Math.sqrt(m))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,H.measure(()=>{this.refreshPointerState(),H.mutate(()=>{this.scrollUpdateScheduled=!1,x.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var ke=Math.PI*2,fr=180/Math.PI,qe=c=>c<0?0:c>1?1:c,vr=(c,e)=>{let t=(e-c)%ke;return t>Math.PI&&(t-=ke),t<-Math.PI&&(t+=ke),c+t},Ye=new WeakMap,br=c=>{let e=Ye.get(c);return e||(e={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},Ye.set(c,e)),e},Jt=class extends at{constructor(e){super(e),this.htmlKey="spotlight",this.nearOnly=!1,this.useAllObjects=!1,this.maxDistanceMultiplier=1,this.attributesToMap.push({key:"lerp",type:"number",fallback:this.settings.lerp,transform:t=>qe(this.tools.adaptiveLerp.process({value:t,inMin:.1,inMax:1,outMin:.05,outMax:.65}))},{key:"angle-threshold",type:"number",fallback:.2},{key:"distance-threshold",type:"number",fallback:.5},{key:"deadzone",type:"number",fallback:4},{key:"dist-max",type:"number",fallback:0})}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i),t.setProperty("spotlight-angle-rad",0),t.setProperty("spotlight-distance",0),t.setProperty("spotlight-angle-rad-target",0),t.setProperty("spotlight-distance-target",0),H.measure(()=>{this.refreshPointerState(t,!0),H.mutate(()=>{x.run(()=>{this.updateSpotlightState(t,{forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0})})})})}onMutate(e){if(this.enabled){super.onMutate(e);let t=this.getCursorTargets(!1);(t.length>0?t:this.getCursorTargets(!0)).forEach(i=>{this.updateSpotlightState(i)})}}onCursorScrollUpdate(){let e=this.getCursorTargets(!1);(e.length>0?e:this.getCursorTargets(!0)).forEach(r=>{this.updateSpotlightState(r,{bypassDeadzone:!0})})}updateSpotlightState(e,t={}){let r=e.getProperty("dx"),i=e.getProperty("dy"),n=e.getProperty("dist");if(!Number.isFinite(r)||!Number.isFinite(i)||!Number.isFinite(n))return;let s=br(e),o=e.getProperty("deadzone")??4;(t.bypassDeadzone||n>o)&&(s.tAngle=Math.atan2(i,r));let a=e.getProperty("dist-max")??0;if(s.tDist=a>0?Math.min(n,a):n,e.setProperty("spotlight-distance-target",s.tDist),e.setProperty("spotlight-angle-rad-target",s.tAngle),t.forceImmediate)s.angle=s.tAngle,s.dist=s.tDist;else{let f=qe(e.getProperty("lerp")??.15),p=vr(s.angle,s.tAngle);s.angle+=(p-s.angle)*f,s.dist+=(s.tDist-s.dist)*f}e.setProperty("spotlight-angle-rad",s.angle),e.setProperty("spotlight-distance",s.dist);let l=s.angle*fr-90,u=e.getProperty("angle-threshold")??.2,d=e.getProperty("distance-threshold")??.5,h=t.forceEmit||Number.isNaN(s.prevDeg)||Math.abs(l-s.prevDeg)>u,m=t.forceEmit||Number.isNaN(s.prevDist)||Math.abs(s.dist-s.prevDist)>d;if(h||m){let f=Math.round(l*10)/10,p=Math.round(s.dist*10)/10;x.run(()=>{this.applyToElementAndConnects(e,v=>{x.setVars(v,{"--spotlight-angle":String(f),"--spotlight-angle-deg":`${f}deg`,"--spotlight-distance":String(p)})})}),s.prevDeg=l,s.prevDist=s.dist,this.events.emit(`spotlight:update:${e.id}`,{distance:p,angleDeg:f})}}};var Xe="-aspect-ready";function yr(c){if(!c)return!1;let e=c.toLowerCase();return!!(e.endsWith(".svg")||e.startsWith("data:image/svg"))}function je(c){let e=new DataView(c);return c.byteLength<24?{width:0,height:0}:e.getUint32(0)!==2303741511||e.getUint32(4)!==218765834?{width:0,height:0}:e.getUint32(12)!==13||e.getUint32(16)!==1229472850?{width:0,height:0}:{width:e.getUint32(20,!1),height:e.getUint32(24,!1)}}function Ke(c){let e=new DataView(c);if(e.getUint16(0)!==65496)return{width:0,height:0};let t=2;for(;t+9<c.byteLength;){let r=e.getUint16(t);if(t+=2,r===65498||r===65497)break;let i=e.getUint16(t);if(i<2||t+i>c.byteLength)break;if(r>=65472&&r<=65475||r>=65477&&r<=65479||r>=65481&&r<=65483||r>=65485&&r<=65487)return{height:e.getUint16(t+3),width:e.getUint16(t+5)};t+=i}return{width:0,height:0}}function Ge(c){let e=new DataView(c);if(c.byteLength<16)return{width:0,height:0};if(e.getUint32(0,!0)!==1179011410||e.getUint32(8,!0)!==1346520407)return{width:0,height:0};let t=12;for(;t+8<=c.byteLength;){let r=e.getUint32(t,!1),i=e.getUint32(t+4,!0),n=t+8;if(r===1448097880){let s=(e.getUint16(n+4,!0)|e.getUint8(n+6)<<16)+1,o=(e.getUint16(n+7,!0)|e.getUint8(n+9)<<16)+1;return{width:s,height:o}}if(r===1448097824&&n+10<=c.byteLength&&e.getUint8(n+3)===157&&e.getUint8(n+4)===1&&e.getUint8(n+5)===42){let s=e.getUint16(n+6,!0)&16383,o=e.getUint16(n+8,!0)&16383;return{width:s,height:o}}if(r===1448097868&&n+5<=c.byteLength&&e.getUint8(n)===47){let s=e.getUint8(n+1),o=e.getUint8(n+2),a=e.getUint8(n+3),l=e.getUint8(n+4),u=1+((o&63)<<8|s),d=1+((l&15)<<10|a<<2|(o&192)>>6);return{width:u,height:d}}t=n+i+(i&1)}return{width:0,height:0}}function Qe(c,e){let t=(e||"").toLowerCase();if(t.includes("png"))return je(c);if(t.includes("jpeg")||t.includes("jpg"))return Ke(c);if(t.includes("webp"))return Ge(c);let r=je(c);return r.width||(r=Ke(c),r.width)||(r=Ge(c),r.width)?r:{width:0,height:0}}async function Sr(c,e,t){let r=await fetch(c,{mode:"cors",credentials:e?.credentials??"omit",referrerPolicy:e?.referrerPolicy,signal:e?.signal,cache:"default"});if(!r.ok||!r.body)throw new Error(`HTTP ${r.status}`);let i=r.headers.get("content-type"),n=r.body.getReader(),s=1048576,o=4096,a=new Uint8Array(s),l=0,u=0,d=[],h=null,m=!1;for(;;){let{done:v,value:g}=await n.read();if(v)break;if(!g)continue;let S=g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength);if(d.push(S),!h&&l<s){let b=Math.min(g.byteLength,s-l);if(b>0&&(a.set(g.subarray(0,b),l),l+=b),l-u>=o){let y=l===a.byteLength?a:a.slice(0,l),M=Qe(y.buffer,i);M.width&&M.height&&(h=M,!m&&t&&(t(h),m=!0)),u=l}}}if(!h){let v=await new Response(new Blob(d)).arrayBuffer(),g=Qe(v,i);g.width&&g.height&&(h=g,!m&&t&&(t(h),m=!0))}let f=new Blob(d,{type:i||"application/octet-stream"}),p=URL.createObjectURL(f);return{dims:h,blobUrl:p,contentType:i}}var te=class extends E{constructor(t){super(t);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(r=>this.ensureState(r)),this.isStartLoaded=!0}onObjectConnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.ensureState(r);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(r);let n=s=>{this.handleInView(r,i,!!s?.inView)};i.unsubscribe&&i.unsubscribe(),this.events.on(`object:inview:${t.id}`,n),i.unsubscribe=()=>this.events.off(`object:inview:${t.id}`,n),this.isStartLoaded&&(t.getProperty("is-inview")??!1)&&this.handleInView(r,i,!0)}onObjectDisconnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;let i=this.imageStates.get(r);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(t){let r=this.imageStates.get(t);if(!r){let i=this.readSource(t);return r={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(t,r),t.classList.contains("lazyLoad")||t.classList.add("lazyLoad"),t.dataset&&!t.dataset.stringLazySrc&&i&&(t.dataset.stringLazySrc=i),r}return r.src||(r.src=this.readSource(t)),r}readSource(t){let r=this.tools.domAttribute.process({element:t,key:this.htmlKey,fallback:""});return typeof r=="string"?r:r==null?"":String(r)}handleInView(t,r,i){r.pendingActivation=i,i&&(r.aspectReady?this.maybeActivateImage(t,r):r.aspectLoading||this.prepareAspectRatio(t))}async prepareAspectRatio(t){let r=this.ensureState(t);if(!r.src||r.aspectLoading||r.aspectReady)return;if(yr(r.src)){r.aspectReady=!0,r.allowSrcFallback=!0,this.maybeActivateImage(t,r);return}r.aspectLoading=!0,r.fetching=!0;let i=t.getAttribute("crossorigin"),n=t.getAttribute("referrerpolicy"),s=new AbortController;r.controller=s;try{let{blobUrl:o}=await Sr(r.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:s.signal},a=>{a.width>0&&a.height>0&&!r.aspectReady&&(t.style.aspectRatio=`${a.width} / ${a.height}`,t.classList.add(Xe),r.width=a.width,r.height=a.height,r.aspectReady=!0)});r.blobUrl=o,!r.aspectReady&&r.width&&r.height&&(t.style.aspectRatio=`${r.width} / ${r.height}`,t.classList.add(Xe),r.aspectReady=!0)}catch{r.allowSrcFallback=!0,r.aspectReady=!0}finally{r.fetching=!1,r.aspectLoading=!1,this.maybeActivateImage(t,r)}}maybeActivateImage(t,r){!r.pendingActivation||r.contentReady||r.contentLoading||!r.aspectReady||!r.src||r.fetching&&!r.blobUrl||(r.blobUrl||r.allowSrcFallback)&&this.activateImage(t,r)}activateImage(t,r){r.contentLoading=!0,this.loadingCount++;let i=o=>{r.contentLoading&&(r.contentLoading=!1,r.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),o&&(r.contentReady=!0,t.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),s=()=>i(!1);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",s,{once:!0}),t.decoding="async",t.loading=t.loading||"lazy",r.blobUrl?(t.removeAttribute("srcset"),t.removeAttribute("sizes"),t.src=r.blobUrl):t.src=r.src,t.complete&&t.naturalWidth>0&&t.naturalHeight>0&&(t.removeEventListener("load",n),t.removeEventListener("error",s),i(!0))}};var ee=class extends E{constructor(t){super(t);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var re=class extends E{constructor(e){super(e),this.htmlKey=""}canConnect(e){return e.keys[0]==null}};var lt=class{constructor(e){this.min=void 0;this.max=void 0;this.enable=!0;this.min=e?.min,this.max=e?.max,this.enable=e?.enable??!0}setEnable(e=!0){this.enable=e}setRange(e,t){this.min=e??void 0,this.max=t??void 0}get mediaQuery(){let e="screen";return this.min&&(e+=` and (min-width: ${this.min}px)`),this.max&&(e+=` and (max-width: ${this.max}px)`),e}},ie=class extends E{constructor(t){super(t);this.queries={0:new lt({max:359}),1:new lt({min:360,max:1023}),2:new lt({min:1024,max:1365}),3:new lt({min:1366})};this.isMobileMedia=!1;this.isTabletMedia=!1;this.isLaptopMedia=!1;this.isDesktopMedia=!1;this.matchMedias={0:window.matchMedia(this.queries[0].mediaQuery),1:window.matchMedia(this.queries[1].mediaQuery),2:window.matchMedia(this.queries[2].mediaQuery),3:window.matchMedia(this.queries[3].mediaQuery)};this._type=2}onConnect(){}onInit(){if(this.settings!=null&&this.settings.settings!=null){let t=this.settings.settings;t.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(t.mobile.min==null?null:t.mobile.min,t.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,t.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(t.tablet.min==null?null:t.tablet.min,t.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,t.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(t.laptop.min==null?null:t.laptop.min,t.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,t.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(t.desktop.min==null?null:t.desktop.min,t.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let t=this.matchMedias[0].matches&&this.queries[0].enable,r=this.matchMedias[1].matches&&this.queries[1].enable,i=this.matchMedias[2].matches&&this.queries[2].enable,n=this.matchMedias[3].matches&&this.queries[3].enable;this.isMobileMedia!=t&&this.events.emit("screen:mobile",t),this.isTabletMedia!=r&&this.events.emit("screen:tablet",r),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=t,this.isTabletMedia=r,this.isLaptopMedia=i,this.isDesktopMedia=n,document.querySelectorAll("[string-mobile], [string-tablet], [string-laptop], [string-desktop]").forEach(o=>{let a=!1;o.hasAttribute("string-mobile")&&t&&(a=!0),o.hasAttribute("string-tablet")&&r&&(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 ne=class extends E{constructor(e){super(e),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:t=>{let[r,i]=t,n=this.tools.originParser.process({value:r}),s=this.tools.originParser.process({value:i});return{x:n,y:s}}}]}onObjectConnected(e){super.onObjectConnected(e);let t=e.getProperty("anchor");t&&this.applyToElementAndConnects(e,r=>{r.style.transformOrigin=`${t.x} ${t.y}`})}};var Er=.05,Mr=.01,Ze=1,xr=-1,wr=1,se=class extends E{constructor(t){super(t);this.previousLerp=0;this.displacement=0;this.acceleration=0;this.velocityMultiplier=.00125;this.isInitialScroll=!0;this.baseVelocityMultiplier=.00125;this.reducedVelocityMultiplier=this.baseVelocityMultiplier/20;this.negativeVelocityMultiplier=-1e-4;this.maxDisplacementValue=0;this.setupItem=t=>{let r=t.getProperty("glide")??0,i=-this.data.scroll.displacement*this.maxDisplacementValue*r;this.events.emit(`object:glide:${t.id}`,i);let n=`translate3d(0, ${i}px, 0)`;t.htmlElement.style.transform=n};this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++){let r=this.objects[t];this.setupItem(r)}};this.onUpdateMobileEvent=()=>{};this.onUpdateEvent=this.onUpdateDesktopEvent;this.htmlKey="glide",this.baseVelocityMultiplier=this.settings["glide-base-velocity"]??this.baseVelocityMultiplier,this.reducedVelocityMultiplier=this.settings["glide-reduce-velocity"]??this.reducedVelocityMultiplier,this.negativeVelocityMultiplier=this.settings["glide-negative-velocity"]??this.negativeVelocityMultiplier,this.attributesToMap=[...this.attributesToMap,{key:"glide",type:"number",fallback:this.settings.glide}]}calcExpanderFactor(t){let r=t?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=r?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,r||(this.isInitialScroll=!1)}onStart(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}onResize(){window.innerWidth>1024?(this.maxDisplacementValue=this.data.viewport.windowHeight*.1,this.onUpdateEvent=this.onUpdateDesktopEvent):(this.onUpdateEvent=this.onUpdateMobileEvent,this.resetState(),this.objects.forEach(t=>{this.setupItem(t)}))}resetState(){this.displacement=0,this.acceleration=0,this.isInitialScroll=!0,this.velocityMultiplier=this.baseVelocityMultiplier}onScrollStart(){this.resetState()}onScrollStop(){this.resetState(),this.previousLerp=0;for(let t=0;t<this.objects.length;t++){let r=this.objects[t],i="translate3d(0, 0px, 0)";r.htmlElement.style.transform=i,r.htmlElement.style.setProperty("--glide",this.data.scroll.displacement.toString())}}onFrame(t){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Ze,this.acceleration+Er),this.displacement=Math.max(Mr,Math.min(Ze,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(wr,Math.max(xr,this.data.scroll.lerped*this.displacement*this.acceleration)),this.objects.forEach(r=>{this.applyToElementAndConnects(r,i=>{i.style.setProperty("--glide",this.data.scroll.displacement.toString())})}),this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}};var oe=class extends E{constructor(t){super(t);this.hasInitializedCSS=!1;this.htmlKey="lerp"}onObjectConnected(t){super.onObjectConnected(t),t.setProperty("lerp",0)}onResize(){super.onResize(),!this.hasInitializedCSS&&this.objectsOnPage.length>0&&(this.hasInitializedCSS=!0,x.run(()=>{this.objectsOnPage.forEach(t=>{this.updateObjectLerp(t,!0)})}))}onScrollStop(){this.objects.forEach(t=>{this.recomputeLerp(t,0)})}onFrame(t){let r=t.scroll.lerped;this.objects.forEach(i=>{this.recomputeLerp(i,r)})}recomputeLerp(t,r){t.getProperty("lerp")!==r&&(t.setProperty("lerp",r),this.updateObjectLerp(t))}onMutate(){x.run(()=>{this.objects.forEach(t=>{this.updateObjectLerp(t)})})}updateObjectLerp(t,r=!1){let i=t.getProperty("lerp"),n=t.getProperty("lerp-applied");if(!r&&n===i)return;t.setProperty("lerp-applied",i);let s=i?.toString()??"0";this.events.emit(`object:lerp:${t.id}`,i),x.run(()=>{this.applyToElementAndConnects(t,o=>{x.setVars(o,{"--lerp":s})},(o,a)=>{a&&x.setVars(o,{"--lerp":s})})})}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=i=>{i.style.removeProperty("--lerp")};r(t.htmlElement),t.mirrorObjects.forEach(i=>{r(i.htmlElement)})}};var ct=class extends E{constructor(t){super(t);this.updateScheduled=!1;this.htmlKey="progress",this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n)}recomputeProgress(t){let r=t.getProperty("start-position")??0,i=t.getProperty("difference-position")??0,n=0;if(n=Math.min(1,Math.max(0,(this.data.scroll.transformedCurrent-r)/i)),t.getProperty("progress-raw")===n)return;t.setProperty("progress-raw",n);let o=t.getProperty("easing"),a=typeof o=="function"?o(n):n;t.setProperty("progress",a)}calculatePositions(t,r){super.calculatePositions(t,r),this.recomputeProgress(t)}onScroll(t){super.onScroll(t)}onObjectConnected(t){super.onObjectConnected(t)}onScrollMeasure(t){this.objects.forEach(r=>{this.recomputeProgress(r)})}onMutate(){x.run(()=>{this.objects.forEach(t=>{this.updateObjectProgress(t)})})}updateObjectProgress(t){let r=t.getProperty("key"),i=t.getProperty("progress");if(t.getProperty("progress-applied")===i)return;t.setProperty("progress-applied",i);let s=t.getProperty("progress-raw")??i,o=i.toString(),a=t.getProperty("easing");this.events.emit(`object:progress:${t.id}`,i),this.applyToElementAndConnects(t,l=>{r&&x.setVars(l,{[r]:o})},(l,u)=>{if(!u)return;let d=u.applyProgress(s,typeof a=="function"?a:void 0);u.setProperty("progress",d),r&&x.setVars(l,{[r]:d.toString()})})}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=t.getProperty("key");if(!r)return;let i=n=>{n.style.removeProperty(r)};i(t.htmlElement),t.mirrorObjects.forEach(n=>{i(n.htmlElement)})}};var ae=class extends ct{constructor(t){super(t);this.updateScheduledTransform=!1;this.calculateDesktopParallax=t=>{let r=t.getProperty("progress")??0,i=t.getProperty("parallax")??0,n=t.getProperty("parallax-position-start")??0,s=t.getProperty("parallax-position-end")??1,o=t.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=o*i*(a*n+r*a*s);return this.events.emit(`object:parallax:${t.id}`,l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=t=>(this.events.emit(`object:parallax:${t.id}`,0),{transform:"translate3d(0, 0px, 0)"});this.htmlKey="parallax",this.attributesToMap=[...this.attributesToMap,{key:"parallax",type:"number",fallback:this.settings.parallax},{key:"parallax-bias",type:"number",fallback:this.settings["parallax-bias"]}],this.calculateParallaxForObject=this.calculateDesktopParallax}initializeObject(t,r,i,n){super.initializeObject(t,r,i,n);let s=r.getProperty("parallax-bias")??0,o=Math.abs(r.getProperty("parallax")??.2);r.setProperty("parallax-sign",Math.sign(r.getProperty("parallax"))),r.setProperty("parallax",o),r.setProperty("parallax-position-start",-.5+.5*s),r.setProperty("parallax-position-end",.5+.5*(1-s));let a=this.data.viewport.windowHeight;r.setProperty("offset-top",o*a),r.setProperty("offset-bottom",o*a)}calculatePositions(t,r){super.calculatePositions(t,r),t.setProperty("transform-value",this.calculateParallaxForObject(t))}onScroll(t){super.onScroll(t)}onResize(){let t=window.innerWidth>1024;this.calculateParallaxForObject=t?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(t){super.onScrollMeasure(t),this.objects.forEach(r=>{r.setProperty("transform-value",this.calculateParallaxForObject(r))})}onMutate(){x.run(()=>{this.objects.forEach(t=>{let r=t.getProperty("transform-value");this.applyToElementAndConnects(t,i=>{x.setProps(i,r)})})})}};var le=class{constructor(e,t,r){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth,r=t/e*t;this.thumb.style.setProperty("--size",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startY=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startY,r=this.startScrollPosition+t/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=r,this.data.scroll.target=r,window.scrollTo(0,r),this.updateThumb()}};var ce=class{constructor(e,t,r){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r}onResize(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight,r=t/e*t;this.thumb.style.setProperty("--height",r+"px"),e<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let e=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/e*t+"px"}`)}mouseDownEvent(e){this.startCoordinate=e.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(e){let t=e.clientY-this.startCoordinate,r=this.startScrollPosition+t/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(r,i));this.data.scroll.current=n,this.data.scroll.target=n,window.scrollTo(0,n),this.updateThumb()}};var ue=class extends E{constructor(t){super(t);this.isDragging=!1;this.scrollMode="smooth";this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this)}destructor(){document.removeEventListener("mouseup",this.mouseUpEventBind),this.thumb.removeEventListener("mousedown",this.mouseDownEventBind),document.removeEventListener("mousemove",this.mouseMoveEventBind)}onInit(){this.createScrollbar(),this.updateThumb(),this.addCustomStyles(),document.addEventListener("mouseup",this.mouseUpEventBind),this.thumb.addEventListener("mousedown",this.mouseDownEventBind),document.addEventListener("mousemove",this.mouseMoveEventBind),document.documentElement.classList.add("-no-scrollbar")}onScroll(t){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}addCustomStyles(){let t=document.createElement("style");t.textContent=`
|
|
1
|
+
"use strict";var De=Object.defineProperty;var ur=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var hr=Object.prototype.hasOwnProperty;var pr=(u,r)=>{for(var t in r)De(u,t,{get:r[t],enumerable:!0})},mr=(u,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of dr(r))!hr.call(u,i)&&i!==t&&De(u,i,{get:()=>r[i],enumerable:!(e=ur(r,i))||e.enumerable});return u};var gr=u=>mr(De({},"__esModule",{value:!0}),u);var _r={};pr(_r,{CursorReactiveModule:()=>lt,DOMBatcher:()=>ot,ScrollController:()=>W,StringAnchor:()=>se,StringCursor:()=>Kt,StringData:()=>dt,StringDelayLerpTracker:()=>ge,StringFPSTracker:()=>fe,StringForm:()=>xe,StringGlide:()=>oe,StringImpulse:()=>Gt,StringLazy:()=>ee,StringLerp:()=>ae,StringLerpTracker:()=>be,StringLoading:()=>re,StringMagnetic:()=>Jt,StringMasonry:()=>Zt,StringModule:()=>E,StringObject:()=>st,StringParallax:()=>le,StringPositionTracker:()=>ve,StringProgress:()=>ut,StringProgressPart:()=>Oe,StringRandom:()=>Le,StringResponsive:()=>ne,StringScrollContainer:()=>Ce,StringScrollbar:()=>de,StringScroller:()=>Pe,StringSequence:()=>Me,StringSplit:()=>me,StringSpotlight:()=>te,StringTune:()=>Ve,StringVideoAutoplay:()=>Se,default:()=>Ve,frameDOM:()=>F,styleTxn:()=>M});module.exports=gr(_r);var Dt=class{constructor(r=.1,t){this.SETTLE_THRESHOLD=.1;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this.smoothingFactor=r,this.context=t,this.onSettingsChange({isDesktop:t.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 t=performance.now(),e=t-this.lastMouseTime;e>0&&(this.context.data.cursor.velocityX=(r.clientX-this.lastMouseX)/e,this.context.data.cursor.velocityY=(r.clientY-this.lastMouseY)/e),this.lastMouseX=r.clientX,this.lastMouseY=r.clientY,this.lastMouseTime=t}onFrame(){let{targetX:r,targetY:t,smoothedX:e,smoothedY:i}=this.context.data.cursor,n=this.context.tools.lerp.process({from:e,to:r,progress:this.smoothingFactor}),s=this.context.tools.lerp.process({from:i,to:t,progress:this.smoothingFactor}),o=this.getStepDistance(n,s);this.isSettled(o)?this.snapToTarget():this.applyStep(n,s)}onSettingsChange(r){let t=Number(this.context.settings["cursor-lerp"]);this.setLerpFactor(t)}setLerpFactor(r){this.smoothingFactor=this.context.tools.adaptiveLerp.process({value:r,inMin:.1,inMax:1,outMin:.05,outMax:.65})}getStepDistance(r,t){return Math.hypot(r,t)}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,t){this.context.data.cursor.smoothedX+=r,this.context.data.cursor.smoothedY+=t,this.context.data.cursor.stepX=r,this.context.data.cursor.stepY=t}};var nt=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,t){this.stateEvents.add(r),t!==void 0&&(this.lastPayloads[r]=t)}on(r,t,e){let i=e?`${r}:${e}`:r;this.listeners[i]||(this.listeners[i]=new Set),this.listeners[i].add(t),this.stateEvents.has(i)&&this.lastPayloads[i]!==void 0&&t(this.lastPayloads[i])}off(r,t,e){let i=e?`${r}:${e}`:r;this.listeners[i]&&this.listeners[i].delete(t)}emit(r,t){this.stateEvents.has(r)&&(this.lastPayloads[r]=t);let e=this.listeners[r];if(e)for(let i of e)i(t)}onProgress(r,t){this.on(`progress:${r}`,t)}emitProgress(r,t){this.emit(`progress:${r}`,t)}onInview(r,t){this.on(`object:inview:${r}`,t)}emitInview(r,t){this.emit(`object:inview:${r}`,t)}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 At=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 t=0;t<r.cssProperties.length;t++)try{window.CSS.registerProperty(r.cssProperties[t])}catch{}r.onSubscribe(),this.rebuildAllModules()}find(r){for(let t=0;t<this.modules.length;t++){let e=this.modules[t];if(e instanceof r)return e}}onInit(){this.callAll("onInit")}onFrame(){this.callAll("onFrame")}onMutate(){this.callAll("onMutate")}onScrollMeasure(){this.callAll("onScrollMeasure")}onMouseMoveMeasure(){this.callAll("onMouseMoveMeasure")}onScroll(){this.callAll("onScroll")}onResizeWidth(){this.callAll("onResizeWidth")}onResize(){this.callAll("onResize")}onMouseMove(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,t){this.callAll("onDOMMutate",r,t)}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,t,e){this.modules.length>0&&this.callLifecycleStrict(this.modules,r,t,e),this.uiModules.length>0&&this.callLifecycleStrict(this.uiModules,r,t,e)}callLifecycleStrict(r,t,e,i){let n=r.length;switch(t){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":for(let s=0;s<n;s++){let o=r[s];o&&o[t](this.data)}break;case"onDOMMutate":for(let s=0;s<n;s++){let o=r[s];o&&o[t](e,i)}break;case"onMouseMove":case"onWheel":for(let s=0;s<n;s++){let o=r[s];o&&o[t](e)}break;default:for(let s=0;s<n;s++){let o=r[s];o&&o[t]()}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 It=class{constructor(r,t,e){this.parent=e;this.properties=new Map;this.id=r,this.htmlElement=t}get parentObject(){return this.parent}setProperty(r,t){this.properties.set(r,t)}getProperty(r){return this.properties.get(r)??null}setEasing(r){this.easingFn=r??void 0}getEasing(){return this.easingFn}applyProgress(r,t){let e=this.easingFn??t;return e?e(r):r}};var st=class{constructor(r,t){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 nt;this.htmlElement=t,this.id=r,this.eventProgressName=this.getScopedEventName("object:progress")}getScopedEventName(r,t){if(t==null){let s=this.eventNameCache.get(r);if(s)return s;let o=`${r}:${this.id}`;return this.eventNameCache.set(r,o),o}let e=this.eventNameSuffixCache.get(r);e||(e=new Map,this.eventNameSuffixCache.set(r,e));let i=e.get(t);if(i)return i;let n=`${r}:${this.id}:${t}`;return e.set(t,n),n}setProperty(r,t){this.properties.set(r,t)}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 ot=class{constructor(){this.readQueue=[];this.writeQueue=[];this.computeQueue=[];this.isProcessing=!1;this.pendingFrame=null;this.rectCache=new WeakMap;this.dimensionCache=new WeakMap}scheduleRead(r,t=0){this.readQueue.push({priority:t,execute:r}),this.scheduleFlush()}scheduleCompute(r,t=0){this.computeQueue.push({priority:t,execute:r}),this.scheduleFlush()}scheduleWrite(r,t=0){this.writeQueue.push({priority:t,execute:r}),this.scheduleFlush()}batchModuleInitialization(r){r.forEach(({module:t,object:e,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}),t.initializeObject(s,e,i,n)},1)}),r.forEach(({module:t,object:e,windowSize:i})=>{this.scheduleCompute(()=>{t.calculatePositions(e,i)},2)}),r.forEach(({module:t,object:e})=>{this.scheduleWrite(()=>{t.connectObject(e),t.addObject(e.id,e)},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=(t,e)=>e.priority-t.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 Rt=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var E=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 Rt;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:(t,e,i)=>{let n=i.top;return Math.floor(n)+this.data.scroll.elementContainer.scrollTop*this.data.viewport.transformScale}},{key:"end",type:"number",fallback:(t,e,i)=>{let n=i.top,s=i.height;return n+s-this.data.scroll.transformedCurrent}},{key:"size",type:"number",fallback:(t,e,i)=>i.height},{key:"half-width",type:"number",fallback:(t,e,i)=>i.width/2},{key:"half-height",type:"number",fallback:(t,e,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,t,e,i){let n=this.tools.boundingClientRect.process({element:e});for(let{key:s,type:o,fallback:a,transform:l}of this.attributesToMap){let c=typeof a=="function"?a(e,t,n):a,d=i[s]??i[`string-${s}`]??i[`data-string-${s}`],h=this.tools.domAttribute.process({element:e,key:s,fallback:d??this.settings[s]??c}),p=this.parseAttribute(h,o,{element:e,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(p=l(p)),t.setProperty(s,p)}}calculatePositions(r,t){let e=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=-t+1,d=e-n):o==="top"&&a==="bottom"||o==="left"&&a==="right"?d=e-t-n:o==="bottom"&&a==="top"||o==="right"&&a==="left"?(p=-t-i+1,d=e+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(p=-i+1,d=e-t+i-n),l==="top"&&c==="top"||l==="left"&&c==="left"?(b=-i+1,h=e+s):l==="top"&&c==="bottom"||l==="left"&&c==="right"?(b=-t-i+1,h=e-t+s):l==="bottom"&&c==="top"||l==="right"&&c==="left"?h=e+i+s:(l==="bottom"&&c==="bottom"||l==="right"&&c==="right")&&(b=-t+1,h=e-t+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,f=r.getProperty("inview-bottom")??0;r.setProperty("inview-start-position",r.getProperty("start-position")+m),r.setProperty("inview-end-position",r.getProperty("end-position")+f)}parseAttribute(r,t,e={}){if(r==null)return null;if(typeof t=="object"&&t.type==="enum")return t.values.includes(r)?r:t.values[0];switch(t){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:e.element!=null&&e.viewportHeight!=null&&e.baseRem!=null&&e.boundingRect!=null?this.tools.unitParser.process({value:r,element:e.element,viewportHeight:e.viewportHeight,boundingRect:e.boundingRect,baseRem:e.baseRem}):0;case"breakpoint-dimension":if(e.element!=null&&e.viewportHeight!=null&&e.baseRem!=null&&e.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:e.element,viewportHeight:e.viewportHeight,boundingRect:e.boundingRect,baseRem:e.baseRem})})}else n.push({breakpoint:0,value:this.tools.unitParser.process({value:s,element:e.element,viewportHeight:e.viewportHeight,boundingRect:e.boundingRect,baseRem:e.baseRem})});return n}default:return r}}canConnect(r){return r.keys.includes(this.htmlKey)}connectObject(r){r.connect(this)&&this.onObjectConnected(r)}enterObject(r,t){this.objectMap.has(r)||(this.objectMap.set(r,t),this.objects.push(t))}exitObject(r){let t=this.objectMap.get(r);if(!t)return;this.objectMap.delete(r);let e=this.objects.indexOf(t);e!==-1&&this.objects.splice(e,1)}addObject(r,t){this.objectMapOnPage.has(r)||(this.objectMapOnPage.set(r,t),this.objectsOnPage.push(t))}removeObject(r){let t=this.objectMapOnPage.get(r);if(!t)return;this.objectMapOnPage.delete(r);let e=this.objectsOnPage.indexOf(t);e!==-1&&this.objectsOnPage.splice(e,1),this.onObjectDisconnected(t)}onObjectConnected(r){}onObjectDisconnected(r){}applyToElementAndConnects(r,t,e=t){r.getProperty("self-disable")!==!0&&t(r.htmlElement),r.mirrorObjects.forEach(i=>e(i.htmlElement,i))}applyVarToElement(r,t,e){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setVar(r.htmlElement,t,e)}applyPropToElement(r,t,e){r.getProperty("self-disable")!==!0&&this.tools.styleTxn.setProp(r.htmlElement,t,e)}applyVarToConnects(r,t,e){for(let i of r.mirrorObjects)this.tools.styleTxn.setVar(i.htmlElement,t,e)}applyPropToConnects(r,t,e){for(let i of r.mirrorObjects)this.tools.styleTxn.setProp(i.htmlElement,t,e)}getObjectEventName(r,t,e){return r.getScopedEventName(t,e)}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,t){}};var kt=class{constructor(r,t,e,i){this.data=r;this.modules=t;this.events=e;this.tools=i;this.objects=new Map;this.connectQueue=[];this.connectableModulesBuffer=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1;this.domBatcher=new ot;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 t=`string-${this.globalId++}`,e="string-id";r.getAttribute("string-id")&&(t=r.getAttribute("string-id"),e="string-id"),r.getAttribute("data-string-id")&&(t=r.getAttribute("data-string-id"),e="data-string-id");let i=t&&this.objects.has(t)?this.objects.get(t):new st(t,r);r.setAttribute(e,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 E&&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 t of this.objects.values())t.getProperty("observer-progress")?.disconnect(),r&&this.initObservers(t,t.htmlElement)}}invalidateInviewIndex(){this.inviewIndexDirty=!0}refreshLayoutForRoot(r){if(!r)return;let t=new Set,e=n=>{let s=n.getAttribute("string-id")??n.getAttribute("data-string-id");if(!s)return;let o=this.objects.get(s);o&&t.add(o)};if(r instanceof HTMLElement){e(r);let n=r.querySelectorAll("[string-id],[data-string-id]");for(let s=0;s<n.length;s++)e(n[s])}if(t.size===0)return;let i=this.data.viewport.windowHeight;for(let n of t){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 E&&c.canConnect(n)&&(c.initializeObject(this.globalId,n,s,o),c.calculatePositions(n,i))}}this.inviewIndexDirty=!0,this.checkInview()}remove(r){let t=this.objects.get(r);t&&(t.events.clearAll(),t.getProperty("observer-progress")?.disconnect(),t.getProperty("observer-inview")?.disconnect(),t.htmlElement.removeAttribute("string-inited"),t.leave(),t.remove(),t.mirrorObjects.forEach(e=>{let i=this.getMirrorIds(e.htmlElement);this.setMirrorIds(e.htmlElement,i.filter(s=>s!==e.id)),this.mirrors.delete(e.id);let n=e.htmlElement.getAttribute("string-copy-from")??e.htmlElement.getAttribute("data-string-copy-from");n&&this.enqueueConnection(n,e.htmlElement)}),this.objects.delete(r),this.inviewActive.delete(t),this.inviewIndexDirty=!0)}enqueueConnection(r,t){let e=this.splitPipeAndTrim(r);for(let i=0;i<e.length;i++){let n=e[i];this.connectQueue.some(s=>s.id===n&&s.element===t)||this.connectQueue.push({id:n,element:t})}}linkMirror(r,t){let e=this.splitPipeAndTrim(r);for(let i=0;i<e.length;i++){let n=e[i],s=this.objects.get(n);s?this.attachMirrorToObject(s,t):this.enqueueConnection(n,t)}}attachMirrorToObject(r,t){let e=this.getMirrorIds(t);for(let o of e){let a=this.mirrors.get(o);if(a&&a.parentObject===r)return a}let i=`string-mirror-${this.mirrorId++}`,n=new It(i,t,r);this.setMirrorIds(t,[...e,i]),r.addMirror(n),this.mirrors.set(i,n);let s=t.getAttribute("string-easing")??t.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 t=this.getMirrorIds(r);t.length!==0&&(t.forEach(e=>this.detachMirrorById(e)),this.clearMirrorIds(r))}detachMirrorById(r){let t=this.mirrors.get(r);t&&(t.parentObject.removeMirror(r),this.mirrors.delete(r))}getMirrorIds(r){let t=r.getAttribute("string-mirror-id")??r.getAttribute("data-string-mirror-id");return t?this.splitPipeAndTrim(t):[]}setMirrorIds(r,t){if(t.length===0){this.clearMirrorIds(r);return}r.setAttribute("string-mirror-id",t.join("|"))}clearMirrorIds(r){r.removeAttribute("string-mirror-id"),r.removeAttribute("data-string-mirror-id")}getAllAttributes(r){let t={},e=r.attributes;for(let i=0;i<e.length;i++){let n=e[i];t[n.name]=n.value}return t}initObservers(r,t){if(!this.intersectionObserverEnabled)return;let e=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=t.getAttribute("string-outside-container")??t.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 ${e+this.data.viewport.windowHeight}px 0px`,threshold:0});h.observe(t),r.setProperty("observer-progress",h)}observeDOM(){this.domObserver?.disconnect();let r=new MutationObserver(t=>{let e=!1;for(let i=0;i<t.length;i++){let n=t[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),e=!0)}}if(e){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 t=r.getAttribute("string-id")??r.getAttribute("data-string-id");if(!t)return;let e=r.getAttribute("string-copy-from")??r.getAttribute("data-string-copy-from");e&&(this.connectQueue=this.connectQueue.filter(i=>i.id!==e)),this.remove(t)}onSettingsChange(r){for(let t of this.objects.values()){if(!t.htmlElement||!t.htmlElement.isConnected)continue;let e=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(t)&&(e==null&&(e=this.getAllAttributes(t.htmlElement)),s.initializeObject(this.globalId,t,t.htmlElement,e),s.calculatePositions(t,this.data.viewport.windowHeight),s.connectObject(t))}}this.inviewIndexDirty=!0}isFixed(r){return r.hasAttribute("string-fixed")}checkInview(){let r=this.data.scroll.transformedCurrent;this.updateInviewWindow(r);for(let t of this.inviewActive)this.checkInviewForObject(t)}checkInviewForObject(r){let t=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=t>=h&&t<=p;m!==b&&(r.setProperty("is-active",m),this.events.emit(r.getScopedEventName("object:activate"),m),m?r.enter():r.leave())}}let e=r.getProperty("inview-start-position"),i=r.getProperty("inview-end-position"),n=r.getProperty("is-inview")??!1,s=Math.min(e,i),o=Math.max(e,i),a=t>=s&&t<=o,l=null;if(!n&&a){let c=Math.abs(t-s),d=Math.abs(o-t);l=c<=d?"enter-top":"enter-bottom"}else n&&!a&&(l=t<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 t=this.data.viewport.windowHeight,e=r-t,i=r+this.data.viewport.windowHeight+t;for((this.inviewIndexDirty||r<this.lastInviewScrollPos)&&this.rebuildInviewIndex(e,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<e;)this.inviewActive.delete(this.inviewEnds[this.inviewEndIdx].object),this.inviewEndIdx++;this.lastInviewScrollPos=r}rebuildInviewIndex(r,t){this.inviewStarts=[],this.inviewEnds=[];for(let e of this.objects.values()){let i=e.getProperty("inview-start-position"),n=e.getProperty("inview-end-position");i==null||n==null||(this.inviewStarts.push({pos:Math.min(i,n),object:e}),this.inviewEnds.push({pos:Math.max(i,n),object:e}))}this.inviewStarts.sort((e,i)=>e.pos-i.pos),this.inviewEnds.sort((e,i)=>e.pos-i.pos),this.inviewActive.clear(),this.inviewStartIdx=this.upperBound(this.inviewStarts,t),this.inviewEndIdx=this.upperBound(this.inviewEnds,r-1);for(let e=0;e<this.inviewStartIdx;e++)this.inviewActive.add(this.inviewStarts[e].object);for(let e=0;e<this.inviewEndIdx;e++)this.inviewActive.delete(this.inviewEnds[e].object);this.inviewIndexDirty=!1}upperBound(r,t){let e=0,i=r.length;for(;e<i;){let n=e+i>>>1;r[n].pos<=t?e=n+1:i=n}return e}splitPipeAndTrim(r){let t=r.split("|"),e=[];for(let i=0;i<t.length;i++){let n=t[i].trim();n.length>0&&e.push(n)}return e}destroy(){this.domObserver?.disconnect(),this.domObserver=null,this.domBatcher.clear()}};var tt={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var W=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(tt.SCROLLING_FORWARD,r),document.documentElement.classList.toggle(tt.SCROLLING_BACKWARD,!r),document.documentElement.classList.toggle(tt.SCROLL_FORWARD,r),document.documentElement.classList.toggle(tt.SCROLL_BACKWARD,!r),this.lastAppliedDirection=r)}clearScrollingClasses(){document.documentElement.classList.remove(tt.SCROLLING_BACKWARD,tt.SCROLLING_FORWARD)}triggerScrollRules(){this.scrollTriggerRules.forEach(r=>{let t=(r.direction==="any"||this.isLastBottomScrollDirection&&r.direction==="forward")&&this.context.data.scroll.current>=r.offset;t&&!r.isActive?(r.onEnter?.(),r.toggleClass&&r.toggleClass.target.classList.add(r.toggleClass.className),r.isActive=!0):!t&&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(t=>t.id!==r)}scrollTo(r,t){}};var Ft=class extends W{constructor(t){super(t);this.name="default";this.previousScrollTop=0;this.isScrolling=!1;this.lastScrollEventTime=0;this.scrollStopDelay=120}onFrame(){if(this.context.data.scroll.delta!==0){let t=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=t,this.context.data.scroll.lerped=t,Math.abs(this.context.data.scroll.lerped)<.1&&(this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this.isScrolling&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses()))}this.isScrolling&&performance.now()-this.lastScrollEventTime>this.scrollStopDelay&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses())}onScroll(t){let e=this.context.data.scroll.elementContainer.scrollTop;this.context.data.scroll.current=e,this.context.data.scroll.target=e,this.context.data.scroll.transformedCurrent=e,e!==this.previousScrollTop&&(this.updateScrollDirection(e>this.previousScrollTop),this.previousScrollTop=e),this.lastScrollEventTime=performance.now(),this.isScrolling||(this.isScrolling=!0,this.onScrollStart())}onWheel(t){if(t.deltaY!==0){this.context.data.scroll.delta===0&&!this.isScrolling&&(this.isScrolling=!0,this.onScrollStart());let e=t.deltaY;this.context.data.scroll.target===0&&(this.context.data.scroll.delta+=Math.max(0,t.deltaY)),this.context.data.scroll.delta+=e,this.lastScrollEventTime=performance.now()}}deactivate(){super.deactivate(),this.isScrolling=!1,this.lastScrollEventTime=0,this.previousScrollTop=this.context.data.scroll.current}scrollTo(t,e){this.context.data.scroll.target=t,this.context.data.scroll.current=t,this.context.data.scroll.delta=0,this.context.data.scroll.lerped=0,this._scrollDirection==="vertical"?this.context.data.scroll.scrollContainer?.scrollTo({top:t,left:0,behavior:e?"auto":"smooth"}):this.context.data.scroll.scrollContainer?.scrollTo({left:t,top:0,behavior:e?"auto":"smooth"})}};var Ht=class extends W{constructor(t){super(t);this.name="disable";this.preventScroll=t=>{t.preventDefault()};this.preventKeyScroll=t=>{["ArrowUp","ArrowDown","PageUp","PageDown"," ","Home","End"].includes(t.key)&&t.preventDefault()};this.onPreventScroll=this.preventScroll.bind(this);this.onPreventKeyScroll=this.preventKeyScroll.bind(this)}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(t){t.preventDefault()}onScroll(t){t.preventDefault()}};var Nt=class extends W{constructor(t){super(t);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(t){if(t.deltaY!==0&&t.preventDefault(),this.wheelImpulse=t.deltaY,this.wheelImpulse===0)return;this.context.data.scroll.delta===0&&this.onScrollStart();let e=Math.sign(this.wheelImpulse),i=this.context.data.scroll.target===0&&e<0,n=this.context.data.scroll.target===this.context.data.scroll.bottomPosition&&e>0;i||n||(this.context.data.scroll.delta+=this.wheelImpulse)}onScroll(t){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(t,e){if(e){this.context.data.scroll.current=t,this.context.data.scroll.target=t,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=t,this.context.data.scroll.delta=1}computeStep(t,e,i,n,s,o,a){let l=i*s,c=Math.min(Math.max(0,e+l),o),d=i-l,h=(c-t)*n,p=h>0?Math.ceil(t+h):Math.floor(t+h);a.current=p,a.target=c,a.delta=d,a.lerped=h,a.scrollForce=l,a.absVelocity=Math.abs(h)}};var Vt=class{constructor(r){this.context=r;this.modes=new Map;this.boundEvents=null;this.scrollMarks=[];this.registerMode("smooth",new Nt(r)),this.registerMode("default",new Ft(r)),this.registerMode("disable",new Ht(r)),this.updateResponsiveMode()}registerMode(r,t){let e=this.context.data.scroll.mode===r,i=this.modes.get(r);i&&(e&&i.deactivate(),i.destroy()),t.name||(t.name=String(r)),this.modes.set(r,t),this.boundEvents&&(t.onScrollStart=this.boundEvents.onScrollStart,t.onScrollStop=this.boundEvents.onScrollStop,t.onChangeDirection=this.boundEvents.onDirectionChange),this.scrollMarks.length>0&&this.scrollMarks.forEach(n=>t.addScrollMark(n)),e&&t.activate()}setMobileMode(r){this.context.data.scroll.modeMobile=r,this.updateResponsiveMode()}setDesktopMode(r){this.context.data.scroll.modeDesktop=r,this.updateResponsiveMode()}updateResponsiveMode(){let t=window.innerWidth<1024?this.context.data.scroll.modeMobile:this.context.data.scroll.modeDesktop;this.setMode(t)}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(t=>{t.onScrollStart=r.onScrollStart,t.onScrollStop=r.onScrollStop,t.onChangeDirection=r.onDirectionChange})}addScrollMark(r){this.scrollMarks.push(r),this.modes.forEach(t=>{t.addScrollMark(r)})}removeScrollMark(r){this.scrollMarks=this.scrollMarks.filter(t=>t.id!==r),this.modes.forEach(t=>{t.removeScrollMark(r)})}destroy(){this.modes.forEach(r=>{r.deactivate(),r.destroy()})}};var _t=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 zt=class{constructor(){this.threeInstance=null}};var Wt=class{constructor(){this.target=0;this.current=0;this.transformedCurrent=0;this.delta=0;this.lerped=0;this.displacement=0;this.isScrollingDown=!1;this.topPosition=0;this.bottomPosition=0;this.direction="vertical";this.elementContainer=document.documentElement;this.scrollContainer=window;this.container=document.body;this.mode="smooth";this.modeMobile="smooth";this.modeDesktop="smooth";this.speed=.1;this.speedAccelerate=.25}};var Bt=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var $t=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var jt=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 dt=class{constructor(){this.scroll=new Wt;this.viewport=new jt;this.cursor=new _t;this.render=new zt;this.time=new $t;this.system=new Bt}};var ht=class{process({element:r}){return r.getBoundingClientRect()}};var pt=class{process({element:r,key:t,fallback:e=null}){return r.getAttribute(`string-${t}`)??r.getAttribute(`data-string-${t}`)??e}};var mt=class{process({record:r,name:t,fallback:e=null}){return r[t]??r[`data-${t}`]??e}};var et=class{process({element:r}){let t=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:t.width/(n||1),height:t.height/(a||1),left:(t.left*a-t.top*o+o*c-l*a)/d,top:(-t.left*s+t.top*n+l*s-n*c)/d}}return t}};var gt=class{constructor(r=new et){this.transformTool=r}process({element:r,container:t=document.body}){let e;try{e=t.getBoundingClientRect()}catch{e=document.body.getBoundingClientRect()}let i=this.transformTool.process({element:r});return{top:i.top-e.top,left:i.left-e.left}}};var ft=class{process({from:r,to:t,progress:e}){return(t-r)*e}};var bt=class{process({value:r,element:t,viewportHeight:e,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=t.offsetHeight:l.endsWith("px")?d=parseFloat(l):l.endsWith("%")?d=parseFloat(l)/100*e: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 vt=class{process({value:r,inMin:t=.1,inMax:e=1,outMin:i=.05,outMax:n=.65}){if(r<t)return n;if(r>1&&(r=1),r<=e){let s=(r-t)/(e-t);return n-s*(n-i)}return i}};var q={left:0,center:.5,right:1},Y={top:0,center:.5,bottom:1},yt=class{process({value:r}){if(!r)return"center";let t=r.trim();if(t.startsWith("random(")&&t.endsWith(")")){let e=t.slice(7,-1).split(",").map(n=>n.trim()).filter(Boolean),i=Math.floor(Math.random()*e.length);return e[i]}return t}toNormalized({value:r}){let e=this.process({value:r}).toLowerCase().split(/\s+/).filter(Boolean);if(e.length===0)return{x:.5,y:.5};if(e.length===1){let a=e[0],l=this.parseValue(a);return a in q&&!(a in Y)?{x:l,y:.5}:a in Y&&!(a in q)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=e,s=i in Y&&!(i in q),o=n in q&&!(n in Y);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,t){if(t==="horizontal"&&r in q)return q[r];if(t==="vertical"&&r in Y)return Y[r];if(r in q)return q[r];if(r in Y)return Y[r];if(r.endsWith("%")){let i=parseFloat(r);if(!isNaN(i))return i/100}let e=parseFloat(r);return isNaN(e)?.5:e>1?e/100:e}};var St=class{process({value:r}){let t=r.trim().toLowerCase();if(t.startsWith("#")){let n=t.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 e=t.match(/rgba?\(([^)]+)\)/);if(e){let[n,s,o,a=1]=e[1].split(",").map(l=>parseFloat(l.trim()));return{r:n,g:s,b:o,a}}let i=t.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,t,e){r=r/360,t=parseFloat(t.toString())/100,e=parseFloat(e.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=e<.5?e*(1+t):e+t-e*t,s=2*e-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 Mt=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 t=r.trim();if(this.namedCurves[t])return this.cubicBezier(...this.namedCurves[t]);let e=t.match(/^cubic-bezier\s*\(\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*,\s*([-+]?\d*\.?\d+)\s*\)$/);if(e){let[i,n,s,o]=e.slice(1).map(Number);return this.cubicBezier(i,n,s,o)}return i=>i}cubicBezier(r,t,e,i){let n=3*r,s=3*(e-r)-n,o=1-n-s,a=3*t,l=3*(i-t)-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,f=1e-5){let g,S,v=m,y,x,P;for(P=0;P<8;P++){if(y=d(v)-m,Math.abs(y)<f)return v;if(x=p(v),Math.abs(x)<1e-6)break;v=v-y/x}for(g=0,S=1,v=m;g<S;){if(y=d(v)-m,Math.abs(y)<f)return v;y>0?S=v:g=v,v=(S+g)/2}return v}return function(m){return h(b(m))}}};var Et=class{process({distance:r,radius:t,strength:e}){if(r>=t)return 0;let i=(t-r)/t;return e*i}};var xt=class{process({from:r,to:t,progress:e}){return{r:r.r+(t.r-r.r)*e,g:r.g+(t.g-r.g)*e,b:r.b+(t.b-r.b)*e,a:r.a+(t.a-r.a)*e}}};var wt=class{process({from:r,to:t,progress:e}){return{x:(t.x-r.x)*e,y:(t.y-r.y)*e}}};var Tt=class{process({value:r}){let e=r?.trim();if(!e||e==="none")return 1;try{if(e.startsWith("matrix(")){let i=e.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(e.startsWith("scale(")){let i=e.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(e.startsWith("scaleX(")){let i=e.match(/scaleX\(([^)]+)\)/);if(i&&i[1]){let n=parseFloat(i[1].trim());if(!isNaN(n))return n}}if(e.startsWith("scale3d(")){let i=e.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(e.startsWith("matrix3d(")){let i=e.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 "${e}":`,i),1}return 1}};var Ut=class{process({attributeValue:r}){let t={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),d=(s[4]||"").split(";").map(p=>p.trim()).filter(p=>p.length>0),h=this.parseParamsArray(d);switch(l){case"line":t.line.push(h);break;case"word":t.word.push(h);break;case"char":t.char.push(h);break;case"charLine":t.charLine.push(h);break;case"charWord":t.charWord.push(h);break;case"wordLine":t.wordLine.push(h);break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),t}toCamelCase(r){return r.replace(/-([a-z])/g,(t,e)=>e.toUpperCase())}parseParamsArray(r){let t={align:"start"};return r.forEach(e=>{if(e==="abs")t.abs=!0;else if(e.startsWith("random")){t.align="random";let i=e.match(/random\(\s*(\d+)\s*,\s*(\d+)\s*\)/);i&&(t.random={min:parseInt(i[1],10),max:parseInt(i[2],10)})}else["start","center","end"].includes(e)&&(t.align=e)}),t}};var Pt=class{process({value:r}){let t=[],e="",i=0;for(let n=0;n<r.length;n++){let s=r[n];s==="("&&i++,s===")"&&i--,s==="|"&&i===0?(e.trim()&&t.push(e.trim()),e=""):e+=s}return e.trim()&&t.push(e.trim()),t.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 qt=class{constructor(){this.inputValidators={required:r=>r!=null&&String(r).trim()!=="",min:(r,t)=>typeof r=="string"&&r.length>=Number(t?.[0]??0),max:(r,t)=>typeof r=="string"&&r.length<=Number(t?.[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 t=r.trim().toLowerCase();return t==="false"||t==="0"?!1:t.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 t=r.trim();if(t===""||!/^[0-9()\s+-.]+$/.test(t))return!1;let e=t.replace(/\D/g,"").length;return e>=7&&e<=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,t)=>this.testByRegex(r,t?.[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,t,e)=>{let i=t?.[0],n=this.getContextValue(e,i);return i&&n===void 0?!1:this.areValuesEqual(r,n)},different:(r,t,e)=>{let i=t?.[0],n=this.getContextValue(e,i);return i&&n===void 0?!1:!this.areValuesEqual(r,n)},range:(r,t)=>{if(r==null||r==="")return!0;let e=Number(r),i=Number(t?.[0]),n=Number(t?.[1]);return Number.isNaN(e)||Number.isNaN(i)||Number.isNaN(n)?!1:e>=i&&e<=n},digits:(r,t)=>{if(typeof r!="string")return!1;let e=Number(t?.[0]??0);return e<=0?!1:new RegExp(`^\\d{${e}}$`).test(r)},ip:r=>typeof r=="string"&&(this.isIPv4(r)||this.isIPv6(r)),mimes:(r,t)=>this.validateMimes(r,t),max_size:(r,t)=>{let e=Number(t?.[0]);return!e||e<=0?!0:this.validateMaxSize(r,e)},after:(r,t,e)=>this.compareDates(r,t,e,"after"),before:(r,t,e)=>this.compareDates(r,t,e,"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,t)=>{let e=Number(t?.[0]??0);return e<=0?/^\d*$/.test(r):new RegExp(`^\\d{0,${e}}$`).test(r)},url:r=>/^[a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]*$/.test(r),pattern:(r,t)=>{try{return new RegExp(t?.[0]||"").test(r)}catch{return!0}}}}process({rules:r,value:t,type:e="input",context:i}){let n=[];for(let c of r){var s=null,o=null,a=!0,l=!0;e=="input"&&(o=this.inputValidators[c.key],!o)||e=="beforeinput"&&(s=this.beforeInputValidators[c.key],!s)||(o&&(a=o(t,c.params,i)),s&&(l=s(t,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,t){switch(r){case"required":return"This field is required";case"email":return"Invalid email address";case"min":return`Minimum ${t?.[0]} characters`;case"max":return`Maximum ${t?.[0]} characters`;case"phone":return"Invalid phone number";case"number":return"Only numbers are allowed";case"integer":return"Only whole numbers are allowed";case"url":return"Invalid URL address";case"checked":return"You must accept";case"regex":return"Value does not match the required pattern";case"alpha":return"Only letters are allowed";case"alpha_num":return"Only letters and numbers are allowed";case"alpha_dash":return"Only letters, numbers, dashes, and underscores are allowed";case"same":return"Values do not match";case"different":return"Values must be different";case"range":return`Value must be between ${t?.[0]} and ${t?.[1]}`;case"digits":return`Value must contain exactly ${t?.[0]} digits`;case"ip":return"Invalid IP address";case"mimes":return`Allowed file types: ${t?.join(", ")}`;case"max_size":return`File must be smaller than ${t?.[0]} KB`;case"after":return`Date must be after ${t?.[0]}`;case"before":return`Date must be before ${t?.[0]}`;default:return"Invalid value"}}validateMimes(r,t){if(!t||t.length===0)return!0;let e=this.extractFiles(r);if(e.length===0)return!0;let i=t.map(n=>n.trim().toLowerCase());return e.every(n=>this.isMimeAllowed(n,i))}validateMaxSize(r,t){let e=this.extractFiles(r);if(e.length===0)return!0;let i=t*1024;return e.every(n=>typeof n.size!="number"?!0:n.size<=i)}extractFiles(r){if(!r)return[];let t=[];return typeof File<"u"&&r instanceof File?(t.push(r),t):typeof FileList<"u"&&r instanceof FileList?Array.from(r):Array.isArray(r)?(r.forEach(e=>{t.push(...this.extractFiles(e))}),t):typeof r=="object"&&("name"in r||"size"in r||"type"in r)?(t.push(r),t):(typeof r=="string"&&r!==""&&t.push({name:r}),t)}isMimeAllowed(r,t){let e=(r.type||"").toLowerCase(),i=this.getFileExtension(r.name);return t.some(n=>{let s=n.replace(/^\./,"").toLowerCase();return s?s.includes("/")?e===s:i===s:!1})}getFileExtension(r){if(!r)return"";let t=r.split(".");return t.length<=1?"":(t.pop()||"").toLowerCase()}compareDates(r,t,e,i){if(r==null||r==="")return!0;let n=t?.[0];if(!n)return!0;let s=this.toDate(r),o=this.resolveDateReference(n,e);return!s||!o?!1:i==="after"?s.getTime()>o.getTime():s.getTime()<o.getTime()}resolveDateReference(r,t){let e=this.getContextValue(t,r);if(e!==void 0)return this.toDate(e);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 t=new Date(r);return Number.isNaN(t.getTime())?null:t}if(typeof r=="string"){let t=Date.parse(r);if(!Number.isNaN(t))return new Date(t)}return null}testByRegex(r,t,e=!1){if(t==null||t==="")return!0;let i=typeof r=="string"?r:r==null?"":String(r);if(e&&i==="")return!0;try{let{source:n,flags:s}=this.normalizeRegex(t);return new RegExp(n,s).test(i)}catch{return!0}}normalizeRegex(r){let t=r.trim();if(t.startsWith("/")&&t.lastIndexOf("/")>0){let e=t.lastIndexOf("/"),i=t.slice(1,e),n=t.slice(e+1);return{source:i,flags:n}}return{source:t,flags:""}}getContextValue(r,t){if(!(!r||!t)){if(r.values&&Object.prototype.hasOwnProperty.call(r.values,t))return r.values[t];if(r.getValue)return r.getValue(t)}}areValuesEqual(r,t){return Array.isArray(r)||Array.isArray(t)?JSON.stringify(r)===JSON.stringify(t):r===t}isIPv4(r){let t=r.split(".");return t.length!==4?!1:t.every(e=>{if(!/^\d+$/.test(e))return!1;let i=Number(e);return i>=0&&i<=255})}isIPv6(r){if(!r)return!1;if(r==="::")return!0;let t=r.split("::");if(t.length>2)return!1;let e=/^[0-9a-fA-F]{1,4}$/,i=r.split(":");return t.length===2?i.every(n=>n===""||e.test(n))&&i.length<=8:i.length===8&&i.every(n=>e.test(n))}};var Ae=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,t,e){let i=r.style;if(this.canUseTypedOM(r)&&typeof e=="number"&&Number.isFinite(e))try{r.attributeStyleMap.set(t,CSS.number(e));return}catch{}i.setProperty(t,String(e))}begin(){this.isOpen||(this.isOpen=!0)}setVars(r,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let e=this.pendingVars.get(r)??{};for(let[i,n]of Object.entries(t))e[i]!==n&&(e[i]=n);this.pendingVars.set(r,e)}setVar(r,t,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let i=this.pendingVars.get(r)??{};i[t]!==e&&(i[t]=e,this.pendingVars.set(r,i))}setVarDirect(r,t,e){this.writeVar(r,t,e)}setProps(r,t){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let e=this.pendingProps.get(r)??{};for(let[i,n]of Object.entries(t))e[i]!==n&&(e[i]=n);this.pendingProps.set(r,e)}setProp(r,t,e){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let i=this.pendingProps.get(r)??{};i[t]!==e&&(i[t]=e,this.pendingProps.set(r,i))}run(r){let t=this.isOpen;t||this.begin();try{r(),t||this.commit()}catch(e){throw t||this.cancel(),e}}commit(){if(this.isOpen){this.isOpen=!1;for(let[r,t]of this.pendingVars)for(let[e,i]of Object.entries(t))this.writeVar(r,e,i);this.pendingVars.clear();for(let[r,t]of this.pendingProps){let e=r.style;for(let[i,n]of Object.entries(t))e[i]=String(n)}this.pendingProps.clear()}}cancel(){this.pendingVars.clear(),this.pendingProps.clear(),this.isOpen=!1}},M=new Ae;var Yt=class{constructor(){this.domAttribute=new pt;this.recordAttribute=new mt;this.transformNullify=new et;this.boundingClientRect=new ht;this.relativePosition=new gt(this.transformNullify);this.unitParser=new bt;this.lerp=new ft;this.adaptiveLerp=new vt;this.originParser=new yt;this.colorParser=new St;this.validation=new qt;this.easingFunction=new Mt;this.magneticPull=new Et;this.lerpColor=new xt;this.lerpVector=new wt;this.transformScaleParser=new Tt;this.optionsParser=new Ut;this.ruleParser=new Pt;this.styleTxn=M}};function Xt(){let u=typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,r=typeof navigator<"u"?(navigator.maxTouchPoints||0)>0:!1,t=typeof window<"u"?window.innerWidth<=768:!1;return u||r||t}var je=new WeakMap,k=5e-4,at="default",Ie="[string-cursor],[data-string-cursor]",Ue="[string-cursor-content],[data-string-cursor-content]",Re=1/240,N=(u,r)=>{let t=Math.pow(10,r);return Math.round(u*t)/t};function fr(u){let r=je.get(u);return r||(r={prevX:Number.NaN,prevY:Number.NaN},je.set(u,r)),r}var Kt=class extends E{constructor(t){super(t);this.cursorPrev={x:Number.NaN,y:Number.NaN,stepX:Number.NaN,stepY:Number.NaN};this.cursorPortals=new Map;this.hoveredObjects=new Set;this.globalListenersBound=!1;this.boundBeforeUnload=()=>this.cleanupHoverTargets();this.boundPageHide=()=>this.cleanupHoverTargets();this.boundVisibilityChange=()=>{document.hidden&&this.cleanupHoverTargets()};this.enabled=!0;this.lastFrameTime=0;this.htmlKey="cursor",this.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"]??at},{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:e=>this.tools.adaptiveLerp.process({value:e,inMin:.1,inMax:1,outMin:.05,outMax:.65})},{key:"cursor-vars",type:"string",fallback:""}],Xt()&&(this.enabled=!1),this.collectCursorPortals(),this.enabled&&this.bindGlobalLifecycleListeners()}initializeObject(t,e,i,n){super.initializeObject(t,e,i,n),e.setProperty("mouse-x",0),e.setProperty("mouse-y",0),e.setProperty("mouse-pixel-x",0),e.setProperty("mouse-pixel-y",0),e.setProperty("is-mouse-over",!1),e.setProperty("is-mouse-move",!1),e.setProperty("__cursor-vars",this.parseCursorVars(e.getProperty("cursor-vars")));let s=i.getBoundingClientRect();e.setProperty("cached-width",s.width||i.offsetWidth||1),e.setProperty("cached-height",s.height||i.offsetHeight||1)}onResize(){super.onResize(),this.objects.forEach(t=>{let e=t.htmlElement.getBoundingClientRect();t.setProperty("cached-width",e.width||t.htmlElement.offsetWidth||1),t.setProperty("cached-height",e.height||t.htmlElement.offsetHeight||1)})}onMutate(t){if(!this.enabled)return;let e=performance.now(),i=this.lastFrameTime?(e-this.lastFrameTime)/1e3:.016;this.lastFrameTime=e,i>.1&&(i=.1),i<Re&&(i=Re);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:f}=h;if(a&&!l){let{cx:g,cy:S}=this.centers.getCenter(o),v=n-(g-p),y=s-(S-b),x=o.getProperty("mouse-pixel-x")??0,P=o.getProperty("mouse-pixel-y")??0,w=x-v,D=P-y;if(w*w+D*D>1e-4){let R=o.getProperty("is-mouse-move")??!1,I=o.getProperty("cursor-enter")??"snap";R||(o.setProperty("is-mouse-move",!0),I==="snap"&&(o.setProperty("mouse-pixel-x",v),o.setProperty("mouse-pixel-y",y),o.setProperty("mouse-x",v),o.setProperty("mouse-y",y),x=v,P=y),this.events.emit(this.getObjectEventName(o,"cursor:start"),null));let L=this.tools.lerp.process({from:x,to:v,progress:d}),H=this.tools.lerp.process({from:P,to:y,progress:d}),C=x+L,A=P+H,U=Math.abs(C-x)>k||Math.abs(A-P)>k;o.setProperty("mouse-pixel-x",C),o.setProperty("mouse-pixel-y",A);let _=o.getProperty("alignment")??"center",z=this.calculateOffset(_,C,m),B=this.calculateOffset(_,A,f);o.setProperty("mouse-x",z),o.setProperty("mouse-y",B),this.setMouseCoordinates(o,z,B,C,A)&&this.events.emit(this.getObjectEventName(o,"cursor:move"),{x:z,y:B}),U&&this.events.emit(this.getObjectEventName(o,"cursor:pixel"),{x:C,y:A})}else{o.setProperty("mouse-pixel-x",v),o.setProperty("mouse-pixel-y",y),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",I=this.calculateOffset(R,v,m),L=this.calculateOffset(R,y,f);this.setMouseCoordinates(o,I,L,v,y)}}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,y=o.getProperty("mouse-y")??0;if(v!==0||y!==0){o.setProperty("is-mouse-move",!1);let x=this.calculateOffset("center",p,m),P=this.calculateOffset("center",b,f),w=v+this.tools.lerp.process({from:v,to:x,progress:d}),D=y+this.tools.lerp.process({from:y,to:P,progress:d});o.setProperty("mouse-x",w),o.setProperty("mouse-y",D),Math.abs(w)<.001&&Math.abs(D)<.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,D)}}}),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)>k||Math.abs(c-d.y)>k||Math.abs(o-d.stepX)>k||Math.abs(a-d.stepY)>k)&&(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(f=>{this.updatePortalPosition(f,p,b,i)})})}}onObjectConnected(t){let e=t.htmlElement;this.centers.attach(t),t.setProperty("mouseleave",()=>{this.onMouseLeave(t)}),t.setProperty("mouseenter",()=>{this.onMouseEnter(t)}),t.setProperty("onEnterEvent",this.onEnterObject.bind(this)),t.events.on("enter",t.getProperty("onEnterEvent")),t.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),t.events.on("leave",t.getProperty("onLeaveEvent"))}getCursorClass(t){let e=t.getProperty("cursor-class");return e!=null&&e.length>0?e:null}onMouseEnter(t){if(!document.contains(t.htmlElement))return;t.setProperty("is-mouse-over",!0),this.hoveredObjects.add(t);let e=this.getCursorClass(t);this.withPortalsForObject(t,i=>{e&&i.element.classList.add(e),this.incrementPortalHover(i)}),t.htmlElement.addEventListener("mouseleave",t.getProperty("mouseleave"))}onMouseLeave(t){t.setProperty("is-mouse-over",!1),this.hoveredObjects.delete(t);let e=this.getCursorClass(t);this.withPortalsForObject(t,i=>{e&&i.element.classList.remove(e),this.decrementPortalHover(i)}),document.contains(t.htmlElement)&&t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}onEnterObject(t){t.htmlElement.addEventListener("mouseenter",t.getProperty("mouseenter"))}onLeaveObject(t){t.htmlElement.removeEventListener("mouseenter",t.getProperty("mouseenter")),t.htmlElement.removeEventListener("mouseleave",t.getProperty("mouseleave"))}safariNavigationCleanup(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onElementRemovedFromDOM(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onObjectDisconnected(t){t.getProperty("is-mouse-over")&&this.onMouseLeave(t)}onDOMRebuild(){this.enabled&&this.collectCursorPortals()}onDOMMutate(t,e){this.enabled&&((this.shouldRefreshPortals(t)||this.shouldRefreshPortals(e))&&this.collectCursorPortals(),e.length>0&&this.handleRemovedNodes(e))}collectCursorPortals(){this.cursorPortals.clear(),document.querySelectorAll(Ie).forEach(e=>{if(!(e instanceof HTMLElement))return;let i=this.resolvePortalId(e),n=this.resolvePortalLerp(e),s=e.matches(Ue)?e:e.querySelector(Ue),o=this.data.cursor.targetX,a=this.data.cursor.targetY,l={id:i,element:e,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(t){let e=[t.getAttribute("data-string-cursor"),t.getAttribute("string-cursor"),t.getAttribute("data-string-cursor-id"),t.getAttribute("string-cursor-id")];for(let i of e)if(i&&i.trim().length>0)return i.trim();return at}resolvePortalLerp(t){let e=t.getAttribute("data-string-cursor-lerp")??t.getAttribute("string-cursor-lerp")??this.settings["cursor-lerp"];if(!e)return null;let i=parseFloat(e);if(!Number.isFinite(i))return null;let n=Math.min(1,Math.max(.01,i));return this.tools.adaptiveLerp.process({value:n,inMin:.1,inMax:1,outMin:.05,outMax:.65})}shouldRefreshPortals(t){for(let e of Array.from(t))if(e instanceof Element&&(e.matches(Ie)||e.querySelector(Ie)))return!0;return!1}withPortalsForObject(t,e){this.getPortalsForObject(t).forEach(n=>e(n))}getPortalsForObject(t){if(this.cursorPortals.size===0)return[];let e=this.extractPortalIds(t),i=[];if(e.forEach(n=>{if(n==="*"){this.cursorPortals.forEach(a=>{a.forEach(l=>i.push(l))});return}let s=n.length>0?n:at,o=this.cursorPortals.get(s);o&&o.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(at)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(s=>i.push(s))}return i}extractPortalIds(t){if(!t)return[at];let e=t.getProperty("cursor-target");return typeof e!="string"||e.trim().length===0?[at]:e.split(/[,|]/).map(i=>i.trim()).filter(Boolean)}incrementPortalHover(t){t.hoverCount++,t.element.classList.remove("-show"),this.restartPortalShowTimer(t)}decrementPortalHover(t){t.hoverCount=Math.max(0,t.hoverCount-1),t.hoverCount===0&&(this.clearPortalShowTimer(t),t.element.classList.remove("-show"))}restartPortalShowTimer(t){if(this.clearPortalShowTimer(t),!t.element.isConnected){t.showTimer=null;return}t.element.classList.add("-show"),t.showTimer=null}clearPortalShowTimer(t){t.showTimer&&(clearTimeout(t.showTimer),t.showTimer=null)}updatePortalPosition(t,e,i,n){if(!t.element.isConnected)return;let s=t.prev,o=Number.isFinite(s.x)?s.x:e,a=Number.isFinite(s.y)?s.y:i,l=t.lerp??.1,c=this.getFrameAdjustedLerp(l,n),d=(e-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)<k&&Math.abs(h)<k)return;let f=o+d,g=a+h;this.writePortalVars(t.element,{"--x":N(f,2),"--y":N(g,2),"--x-lerp":N(b,3),"--y-lerp":N(m,3)}),s.x=f,s.y=g,s.stepX=d,s.stepY=h}handleRemovedNodes(t){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(e=>{e.htmlElement.isConnected||this.onElementRemovedFromDOM(e)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>this.safariNavigationCleanup(t))}bindGlobalLifecycleListeners(){this.globalListenersBound||(window.addEventListener("beforeunload",this.boundBeforeUnload),window.addEventListener("pagehide",this.boundPageHide),document.addEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!0)}unbindGlobalLifecycleListeners(){this.globalListenersBound&&(window.removeEventListener("beforeunload",this.boundBeforeUnload),window.removeEventListener("pagehide",this.boundPageHide),document.removeEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!1)}setMouseCoordinates(t,e,i,n,s){if(t.getProperty("cursor-target-style-disable"))return!1;let o=fr(t),a=Math.abs(e)<k&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<k?o.prevX:Math.round(e*100)/100,l=Math.abs(i)<k&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<k?o.prevY:Math.round(i*100)/100;if(Number.isFinite(o.prevX)&&Math.abs(a-o.prevX)<=k&&Number.isFinite(o.prevY)&&Math.abs(l-o.prevY)<=k)return!1;o.prevX=a,o.prevY=l;let c=t.getProperty("__cursor-vars"),d={"--x":N(a,2),"--y":N(l,2)};if(c&&c.size>0){let p=Number.isFinite(n)?n:t.getProperty("mouse-pixel-x"),b=Number.isFinite(s)?s:t.getProperty("mouse-pixel-y"),m=t.getProperty("__prev-x-px"),f=t.getProperty("__prev-y-px"),g=Number.isFinite(m)?p-m:0,S=Number.isFinite(f)?b-f:0;t.setProperty("__prev-x-px",p),t.setProperty("__prev-y-px",b);let v=g===0&&S===0?0:Math.atan2(S,g),y=v*180/Math.PI;c.has("xpx")&&(d["--x-px"]=N(p,2)),c.has("ypx")&&(d["--y-px"]=N(b,2)),c.has("dx")&&(d["--dx"]=N(g,3)),c.has("dy")&&(d["--dy"]=N(S,3)),c.has("angle")&&(d["--angle"]=N(v,4)),c.has("angle-deg")&&(d["--angle-deg"]=N(y,2))}let h=()=>{this.applyToElementAndConnects(t,p=>{M.setVars(p,d)})};return M.isOpen?h():M.run(h),!0}writePortalVars(t,e){if(M.isOpen){M.setVars(t,e);return}M.run(()=>{M.setVars(t,e)})}parseCursorVars(t){return t?new Set(t.split(/[|,]/).map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)):new Set}getFrameAdjustedLerp(t,e){let i=Math.min(.99,Math.max(.001,t));if(!Number.isFinite(e)||e<=0)return i;let s=Math.max(e,Re)*60,o=1-Math.pow(1-i,s);return Math.min(.999,Math.max(1e-4,o))}getObjectDimensions(t){let e=t.getProperty("cached-width"),i=t.getProperty("cached-height");if(typeof e=="number"&&typeof i=="number"&&e>0&&i>0){let b=e/2,m=i/2;return{width:e,height:i,halfWidth:b,halfHeight:m}}let n=t.htmlElement,s=n.offsetWidth||n.clientWidth||n.scrollWidth||1,o=n.offsetHeight||n.clientHeight||n.scrollHeight||1,a=t.getProperty("half-width"),l=t.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 t.setProperty("cached-width",h),t.setProperty("cached-height",p),{width:h,height:p,halfWidth:c,halfHeight:d}}calculateOffset(t,e,i){switch(t){case"start":return e/i;case"end":return(e-i)/i;case"center":default:return(e-i/2)/(i/2)}}removeObject(t){if(!this.enabled)return super.removeObject(t);let e=this.objectMapOnPage.get(t);e&&this.centers.detach(e),super.removeObject(t)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var Gt=class extends E{constructor(t){super(t);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(t){super.onObjectConnected(t),t.setProperty("offset-x",0),t.setProperty("offset-y",0),t.setProperty("velocity-x",0),t.setProperty("velocity-y",0),t.setProperty("angle-deg",0),t.setProperty("ang-vel-deg",0),t.setProperty("__prev-css-x",0),t.setProperty("__prev-css-y",0),t.setProperty("__prev-css-rot",0),t.setProperty("__push-latch",!1),t.setProperty("__rotate-latch",!1),this.cacheRotationOrigin(t),this.observeRotationOrigin(t),this.hover.track(t),this.centers.attach(t)}onObjectDisconnected(t){this.hover.untrack(t),this.centers.detach(t);let e=this.originObservers.get(t);e&&(e.disconnect(),this.originObservers.delete(t))}onMouseMove(t){if(!t)return;let e=this.data.cursor.velocityX,i=this.data.cursor.velocityY;if(e===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+=e*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),f=n-b,g=s-m,S=f*i-g*e,v=o.getProperty("ang-vel-deg")||0;v+=S*d*.02,o.setProperty("ang-vel-deg",v),h||o.setProperty("__rotate-latch",!0)}}}}}cacheRotationOrigin(t){let e=t.getProperty("rotation-origin")??"center center",{x:i,y:n}=this.tools.originParser.toNormalized({value:e});t.setProperty("__rotation-origin-x",i),t.setProperty("__rotation-origin-y",n)}observeRotationOrigin(t){let e="string-rotation-origin",i="data-string-rotation-origin",n=new MutationObserver(s=>{for(let o of s)if(o.type==="attributes"&&(o.attributeName===e||o.attributeName===i)){let a=t.htmlElement.getAttribute(e)??t.htmlElement.getAttribute(i);a!==null&&t.setProperty("rotation-origin",a),this.cacheRotationOrigin(t);break}});n.observe(t.htmlElement,{attributes:!0,attributeFilter:[e,i]}),this.originObservers.set(t,n)}getRotationOriginFromRect(t,e){let i=t.getProperty("__rotation-origin-x")??.5,n=t.getProperty("__rotation-origin-y")??.5;return{centerX:e.left+e.width*i,centerY:e.top+e.height*n}}onFrame(t){let e=this.data.cursor.targetX,i=this.data.cursor.targetY;for(let n of this.objects){let s=n.htmlElement.getBoundingClientRect(),o=e>=s.left&&e<=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 f=s.getProperty("angle-deg")||0,g=s.getProperty("ang-vel-deg")||0,S=s.getProperty("rotation-tension")??.06,v=s.getProperty("rotation-friction")??.18,y=s.getProperty("rotation-max-angular-velocity")??6,x=s.getProperty("rotation-max-angle")??18;g-=S*f,g*=1-v,g>y?g=y:g<-y&&(g=-y),f+=g,f>x?(f=x,g*=.35):f<-x&&(f=-x,g*=.35);let P=s.getProperty("sleep-epsilon")??.01,w=l*l+c*c<P*P&&o*o+a*a<P*P,D=Math.abs(g)<P&&Math.abs(f)<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)),D?(f||g)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),f=g=0):(s.setProperty("angle-deg",f),s.setProperty("ang-vel-deg",g));let O=s.getProperty("position-update-threshold")??.1,R=s.getProperty("rotation-update-threshold")??.15,I=s.getProperty("__prev-css-x")||0,L=s.getProperty("__prev-css-y")||0,H=s.getProperty("__prev-css-rot")||0,C=Math.round(o*10)/10,A=Math.round(a*10)/10,U=Math.round(f*10)/10,_=Math.abs(C-I)>O||Math.abs(A-L)>O,z=Math.abs(U-H)>R;(_||z)&&(s.setProperty("__next-css-x",C),s.setProperty("__next-css-y",A),s.setProperty("__next-css-rot",U)),s.setProperty("__needs-position-update",_),s.setProperty("__needs-rotation-update",z)}}onMutate(){for(let t=0;t<this.objects.length;t++){let e=this.objects[t],i=e.getProperty("__needs-position-update")===!0,n=e.getProperty("__needs-rotation-update")===!0;if(!i&&!n)continue;let s=e.getProperty("__next-css-x")||0,o=e.getProperty("__next-css-y")||0,a=e.getProperty("__next-css-rot")||0;this.applyToElementAndConnects(e,l=>{i&&(M.setVar(l,"--push-x",s),M.setVar(l,"--push-y",o)),n&&M.setVar(l,"--push-rotation",a)}),i&&(e.setProperty("__prev-css-x",s),e.setProperty("__prev-css-y",o),this.events.emit(this.getObjectEventName(e,"object:impulse","move"),{x:s,y:o})),n&&(e.setProperty("__prev-css-rot",a),this.events.emit(this.getObjectEventName(e,"object:impulse","rotate"),{rotation:a})),e.setProperty("__needs-position-update",!1),e.setProperty("__needs-rotation-update",!1)}}};var ke=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 e=0;e<r.length;e++)try{r[e]()}catch(i){console.error("Error in frameDOM measure task:",i)}let t=this.mutateQueue;this.mutateQueue=[];for(let e=0;e<t.length;e++)try{t[e]()}catch(i){console.error("Error in frameDOM mutate task:",i)}this.scheduled=!1}},F=new ke;var br=20,$={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 qe(u){if(!u)return $.DEFAULT_DURATION;let r=parseFloat(u);return isNaN(r)?$.DEFAULT_DURATION:r}function Qt(u,r){let t=[...u].sort((i,n)=>n.breakpoint-i.breakpoint),e=t.find(i=>r>=i.breakpoint);return e?e.value:t[t.length-1]?.value}var Zt=class extends E{constructor(t){super(t);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(t){return this.tools.easingFunction.process({easing:t||$.DEFAULT_EASING})}onObjectConnected(t){super.onObjectConnected(t);let e=t.htmlElement;M.begin(),M.setProps(e,{position:"relative",boxSizing:"border-box"}),M.commit();let i=this.createState(t,e);this.states.set(t,i),this.attachImgLoaders(t,i,e),this.scheduleLayout(t,!1,"init");let n=t.id;this.events.on(`masonry:update:${n}`,s=>{s.mode&&t.setProperty("masonry-mode",s.mode),s.cols!==void 0&&t.setProperty($.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&t.setProperty($.MANUAL_GAP_KEY,Number(s.gap)),this.scheduleLayout(t,!0,"external-event")})}onFrame(t){let e=t.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=e-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=e-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,e)})}onResize(){this.data.system.suppressMasonryResize||this.objectsOnPage.forEach(t=>{this.states.has(t)&&this.scheduleLayout(t,!0,"window-resize")})}cleanupObject(t){let e=this.states.get(t);e&&(e.ro.disconnect(),e.mo.disconnect(),e.resizeDebounceId&&clearTimeout(e.resizeDebounceId),this.states.delete(t))}createState(t,e){let i=e.getBoundingClientRect(),n=a=>{if(!a.length)return;let l=a[0].contentRect,c=this.states.get(t);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(e),h=parseFloat(d.paddingLeft)||0,p=parseFloat(d.paddingRight)||0,b=l.width-h-p;if(b<=0)return;let{columns:m,gap:f}=this.getGridSettings(t),g=(b-f*(m-1))/m;m===c.lastLayoutColumns&&f===c.lastLayoutGap&&Math.abs(g-c.lastLayoutColumnWidth)<=.5||(c.resizeDebounceId&&window.clearTimeout(c.resizeDebounceId),c.resizeDebounceId=window.setTimeout(()=>{c.isResizing=!0,this.scheduleLayout(t,!0,"resize-observer"),c.isResizing=!1},br))},s=a=>{let l=this.states.get(t);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(t,l,h),c=!0)});c&&this.scheduleLayout(t,!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:e.offsetHeight,targetHeight:e.offsetHeight,heightStartTime:0,heightDuration:$.DEFAULT_DURATION,heightEase:this.parseEasing(null),isAnimatingHeight:!1,isAnimating:!1,pendingHeight:void 0,pendingHeightAnimate:!1,expectedEndTime:0};return o.ro.observe(e),o.mo.observe(e,{childList:!0}),o}handleAnimationEnd(t,e,i){if(e.pendingHeight!==void 0){let n=e.pendingHeight,s=e.pendingHeightAnimate;if(e.pendingHeight=void 0,e.pendingHeightAnimate=!1,s){e.startHeight=t.htmlElement.offsetHeight,e.targetHeight=n,e.heightStartTime=i,e.heightDuration=$.DEFAULT_DURATION,e.heightEase=this.parseEasing(null),e.isAnimatingHeight=!0,e.isAnimating=!0;return}M.run(()=>{M.setProps(t.htmlElement,{height:`${n}px`})})}e.isAnimating&&this.events.emit("masonry:shuffle:end",{object:t}),e.isAnimating=!1,this.objectManager.refreshLayoutForRoot(t.htmlElement),e.endTimerId&&(window.clearTimeout(e.endTimerId),e.endTimerId=void 0),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}scheduleLayout(t,e,i){let n=this.states.get(t);!n||n.layoutScheduled||(n.layoutScheduled=!0,F.measure(()=>{n.layoutScheduled=!1,this.performSyncLayout(t,n,e,i)}))}performSyncLayout(t,e,i,n){let s=t.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(t),f=(p-m*(b-1))/b,S=(t.getProperty("masonry-mode")||"auto")==="auto"&&i&&!e.isResizing&&n!=="window-resize"&&n!=="resize-observer",v=b===e.lastLayoutColumns&&m===e.lastLayoutGap&&Math.abs(f-e.lastLayoutColumnWidth)<=.5,y=0;o.forEach(C=>{let A=e.childIds.get(C);A||(A=e.nextChildId++,e.childIds.set(C,A)),y=y*31+A>>>0}),e.lastLayoutColumns=b,e.lastLayoutGap=m,e.lastLayoutColumnWidth=f,e.lastChildrenHash=y;let x=new Map;i&&o.forEach(C=>{let A=e.items.get(C);A&&x.set(C,A.cw)}),M.begin(),o.forEach(C=>{M.setProps(C,{position:"absolute",top:"0",left:"0",width:`${f}px`})}),M.commit();let P=o.map(C=>C.offsetHeight),w=0;P.forEach(C=>w=w*31+Math.round(C*2)>>>0),e.lastHeightsHash=w,i&&x.size>0&&M.run(()=>{x.forEach((C,A)=>{M.setProps(A,{width:`${C}px`})})});let D=new Array(b).fill(0),O=performance.now(),R=!1,I=0;o.forEach((C,A)=>{let U=P[A],_=0,z=D[0];for(let j=1;j<b;j++)D[j]<z&&(z=D[j],_=j);let B=_*(f+m)+c,J=z+h,it=f;D[_]=z+U+m;let Ot=qe(C.getAttribute("string-masonry-position-time")),Lt=qe(C.getAttribute("string-masonry-size-time")),_e=Ot>0?1/Ot:1e3,ze=Lt>0?1/Lt:1e3,We=this.parseEasing(C.getAttribute("string-masonry-position-easing")),Be=this.parseEasing(C.getAttribute("string-masonry-size-easing")),T=e.items.get(C);if(T)Math.abs(T.tx-B)+Math.abs(T.ty-J)+Math.abs(T.tw-it)>.5&&(T.sx=T.cx,T.sy=T.cy,T.sw=T.cw,T.tx=B,T.ty=J,T.tw=it,T.dx=T.tx-T.sx,T.dy=T.ty-T.sy,T.dw=T.tw-T.sw,T.posEase=We,T.invPosDur=_e,T.sizeEase=Be,T.invSizeDur=ze,T.startTime=O,T.isMoving=!0,R=!0,I=Math.max(I,Ot,Lt));else{let j=B,$e=i?J+30:J;T={sx:j,sy:$e,sw:it,tx:B,ty:J,tw:it,dx:0,dy:0,dw:0,cx:j,cy:$e,cw:it,startTime:O,posEase:We,invPosDur:_e,sizeEase:Be,invSizeDur:ze,isMoving:i},e.items.set(C,T),i?(T.dx=T.tx-T.sx,T.dy=T.ty-T.sy,T.dw=T.tw-T.sw,R=!0,I=Math.max(I,Ot,Lt)):M.run(()=>{M.setProps(C,{transform:`translate3d(${B}px, ${J}px, 0)`,width:`${it}px`,willChange:"auto"})})}});let L=Math.max(...D);if(Math.abs(e.targetHeight-L)>1)if(i){let C=s.getBoundingClientRect(),A=this.data.viewport.windowHeight;var H=!1;if(C.bottom>=-100&&C.bottom<=A+100){let U=C.top+L-A;if(Math.abs(U)>1&&L<s.offsetHeight){let _=C.top+this.data.scroll.current+L-A;this.events.emit("scrollTo",_),H=!0}}L>=e.targetHeight?(S?(e.startHeight=s.offsetHeight,e.heightStartTime=O,e.heightDuration=$.DEFAULT_DURATION,e.heightEase=this.parseEasing(null),e.isAnimatingHeight=!0):M.run(()=>{M.setProps(t.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}),e.targetHeight=L,e.pendingHeight=void 0):(e.pendingHeight=L,e.pendingHeightAnimate=S,e.targetHeight=L,H||M.run(()=>{M.setProps(t.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),R=!0}else e.targetHeight=L,e.pendingHeight=void 0,M.run(()=>{M.setProps(t.htmlElement,{height:`${L}px`})});R&&(e.isAnimating||this.events.emit("masonry:shuffle:start",{object:t}),e.isAnimating=!0,I>0&&(e.expectedEndTime=O+I+32,e.endTimerId&&window.clearTimeout(e.endTimerId),e.endTimerId=window.setTimeout(()=>{e.isAnimating&&(e.pendingHeight!==void 0||e.isAnimatingHeight||(this.events.emit("masonry:shuffle:end",{object:t}),e.isAnimating=!1,e.endTimerId=void 0))},I+50)))}getGridSettings(t){let e=this.data.viewport.windowWidth;if((t.getProperty("masonry-mode")||"auto")==="manual"){let o=t.getProperty($.MANUAL_COLS_KEY),a=t.getProperty($.MANUAL_GAP_KEY),l=t.getProperty("masonry-cols")||[],c=t.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Qt(l,e)??2)),gap:Math.max(0,a??Qt(c,e)??16)}}let n=t.getProperty("masonry-cols")||[{breakpoint:0,value:2}],s=t.getProperty("masonry-gap")||[{breakpoint:0,value:16}];return{columns:Math.max(1,Math.round(Qt(n,e)??2)),gap:Math.max(0,Qt(s,e)??16)}}attachImgLoaders(t,e,i){(i.tagName==="IMG"?[i]:Array.from(i.querySelectorAll("img"))).forEach(s=>{let o=s;if(o.complete||e.imgUnsubs.has(o))return;let a=()=>{this.scheduleLayout(t,!0,"img-load"),this.cleanupImgListeners(e,o)};o.addEventListener("load",a),o.addEventListener("error",a),e.imgUnsubs.set(o,()=>{o.removeEventListener("load",a),o.removeEventListener("error",a)})})}cleanupImgListeners(t,e){let i=n=>{let s=t.imgUnsubs.get(n);s&&(s(),t.imgUnsubs.delete(n))};e.tagName==="IMG"?i(e):e.querySelectorAll("img").forEach(n=>i(n))}};var Jt=class extends E{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,t,e,i){super.initializeObject(r,t,e,i),t.isMagneting=!1,t.magneticTargetX=0,t.magneticTargetY=0,t.magneticX=0,t.magneticY=0,t.setProperty("magnetic-lerp",.1),t.eventMagneticName=this.getObjectEventName(t,"magnetic:move"),t.setProperty("__next-magnetic-x",0),t.setProperty("__next-magnetic-y",0),t.setProperty("__needs-magnetic-update",!1)}onMouseMove(r){for(let t=0;t<this.objects.length;t++){let e=this.objects[t],n=e.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=e.getProperty("radius")??0,h=e.getProperty("strength")??0,p=this.tools.magneticPull.process({distance:c,radius:d,strength:h});e.magneticTargetX=a*p,e.magneticTargetY=l*p,p>0&&(e.isMagneting=!0)}}onFrame(r){for(let t=0;t<this.objects.length;t++){let e=this.objects[t];if(e.isMagneting){let i=e.magneticX,n=e.magneticY,s=e.getProperty("magnetic-lerp")??.1,o=e.magneticTargetX,a=e.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,e.magneticX=e.magneticTargetX),c>-.01&&c<.01&&(c=0,e.magneticY=e.magneticTargetY),i+=l,n+=c,e.magneticX=i,e.magneticY=n,e.eventMagneticName&&this.events.emit(e.eventMagneticName,{x:i,y:n}),e.setProperty("__next-magnetic-x",i),e.setProperty("__next-magnetic-y",n),e.setProperty("__needs-magnetic-update",!0),e.magneticTargetX===i&&e.magneticTargetY===n&&(e.isMagneting=!1)}}}onMutate(){for(let r=0;r<this.objects.length;r++){let t=this.objects[r];if(!(t.getProperty("__needs-magnetic-update")===!0))continue;let i=t.getProperty("__next-magnetic-x")??t.magneticX,n=t.getProperty("__next-magnetic-y")??t.magneticY;this.applyToElementAndConnects(t,s=>{M.setVar(s,"--magnetic-x",i),M.setVar(s,"--magnetic-y",n)}),t.setProperty("__needs-magnetic-update",!1)}}};var lt=class extends E{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Xt()&&(this.enabled=!1)}onObjectConnected(t){this.enabled&&(super.onObjectConnected(t),this.centers.attach(t),this.hover.track(t))}removeObject(t){if(!this.enabled)return super.removeObject(t);let e=this.objectMapOnPage.get(t);e&&(this.centers.detach(e),this.hover.untrack(e)),super.removeObject(t)}onScroll(){this.enabled&&(this.centers.invalidateAll(),this.scheduleCursorUpdate())}onMouseMoveMeasure(t){this.enabled&&(super.onMouseMoveMeasure(t),this.refreshPointerState())}onScrollMeasure(t){this.enabled&&(super.onScrollMeasure(t),this.refreshPointerState())}getCursorTargets(t=!1){if(!this.enabled)return[];let e=this.hover.activeObjects();return this.nearOnly&&e.length?e:this.useAllObjects?this.objectsOnPage:this.objects.length>0?this.objects:t?this.objectsOnPage:this.objects}refreshPointerState(t,e=!1){if(!this.enabled)return;let i=this.data.cursor.targetX,n=this.data.cursor.targetY,s=t?[t]:this.getCursorTargets(e),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,F.measure(()=>{this.refreshPointerState(),F.mutate(()=>{this.scrollUpdateScheduled=!1,M.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var Fe=Math.PI*2,vr=180/Math.PI,Xe=u=>u<0?0:u>1?1:u,yr=(u,r)=>{let t=(r-u)%Fe;return t>Math.PI&&(t-=Fe),t<-Math.PI&&(t+=Fe),u+t},Sr={computeStep(u,r,t,e,i,n,s,o,a,l,c,d,h,p,b,m,f){let g=a;(m===1||t>e)&&(g=Math.atan2(r,u));let S=i>0?Math.min(t,i):t,v=s,y=o;if(p===1)v=g,y=S;else{let D=yr(s,g),O=Xe(n);v+=(D-v)*O,y+=(S-y)*O}let x=v*vr-90,P=b===1||Number.isNaN(l)||Math.abs(x-l)>d,w=b===1||Number.isNaN(c)||Math.abs(y-c)>h;f.angle=v,f.dist=y,f.tAngle=g,f.tDist=S,f.degRaw=x,f.cssDeg=Math.round(x*10)/10,f.cssDist=Math.round(y*10)/10,f.angleChanged=P?1:0,f.distChanged=w?1:0}},Mr={bypassDeadzone:!0},Er={forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0},Ye=new WeakMap,xr=u=>{let r=Ye.get(u);return r||(r={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},Ye.set(u,r)),r},te=class extends lt{constructor(t){super(t);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:e=>Xe(this.tools.adaptiveLerp.process({value:e,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(t,e,i,n){super.initializeObject(t,e,i,n),e.setProperty("spotlight-angle-rad",0),e.setProperty("spotlight-distance",0),e.setProperty("spotlight-angle-rad-target",0),e.setProperty("spotlight-distance-target",0),F.measure(()=>{this.refreshPointerState(e,!0),F.mutate(()=>{M.run(()=>{this.updateSpotlightState(e,Er)})})})}onMutate(t){if(this.enabled){super.onMutate(t);let e=this.getCursorTargets(!1),i=e.length>0?e:this.getCursorTargets(!0);for(let n=0;n<i.length;n++){let s=i[n];this.updateSpotlightState(s)}}}onCursorScrollUpdate(){let t=this.getCursorTargets(!1),e=t.length>0?t:this.getCursorTargets(!0);for(let i=0;i<e.length;i++){let n=e[i];this.updateSpotlightState(n,Mr)}}updateSpotlightState(t,e={}){let i=t.getProperty("dx"),n=t.getProperty("dy"),s=t.getProperty("dist");if(!Number.isFinite(i)||!Number.isFinite(n)||!Number.isFinite(s))return;let o=xr(t);Sr.computeStep(i,n,s,t.getProperty("deadzone")??4,t.getProperty("dist-max")??0,t.getProperty("lerp")??.15,o.angle,o.dist,o.tAngle,o.prevDeg,o.prevDist,t.getProperty("angle-threshold")??.2,t.getProperty("distance-threshold")??.5,e.forceImmediate===!0?1:0,e.forceEmit===!0?1:0,e.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,t.setProperty("spotlight-distance-target",o.tDist),t.setProperty("spotlight-angle-rad-target",o.tAngle),t.setProperty("spotlight-angle-rad",o.angle),t.setProperty("spotlight-distance",o.dist),(this.stepResult.angleChanged===1||this.stepResult.distChanged===1)&&(this.writeSpotlightVars(t,this.stepResult.cssDeg,this.stepResult.cssDist),o.prevDeg=this.stepResult.degRaw,o.prevDist=o.dist,this.events.emit(this.getObjectEventName(t,"spotlight:update"),{distance:this.stepResult.cssDist,angleDeg:this.stepResult.cssDeg}))}writeSpotlightVars(t,e,i){let n=()=>{this.applyToElementAndConnects(t,s=>{M.setVar(s,"--spotlight-angle",e),M.setVar(s,"--spotlight-distance",i)})};if(M.isOpen){n();return}M.run(n)}};var Ke="-aspect-ready";function wr(u){if(!u)return!1;let r=u.toLowerCase();return!!(r.endsWith(".svg")||r.startsWith("data:image/svg"))}function Ge(u){let r=new DataView(u);return u.byteLength<24?{width:0,height:0}:r.getUint32(0)!==2303741511||r.getUint32(4)!==218765834?{width:0,height:0}:r.getUint32(12)!==13||r.getUint32(16)!==1229472850?{width:0,height:0}:{width:r.getUint32(20,!1),height:r.getUint32(24,!1)}}function Qe(u){let r=new DataView(u);if(r.getUint16(0)!==65496)return{width:0,height:0};let t=2;for(;t+9<u.byteLength;){let e=r.getUint16(t);if(t+=2,e===65498||e===65497)break;let i=r.getUint16(t);if(i<2||t+i>u.byteLength)break;if(e>=65472&&e<=65475||e>=65477&&e<=65479||e>=65481&&e<=65483||e>=65485&&e<=65487)return{height:r.getUint16(t+3),width:r.getUint16(t+5)};t+=i}return{width:0,height:0}}function Ze(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 t=12;for(;t+8<=u.byteLength;){let e=r.getUint32(t,!1),i=r.getUint32(t+4,!0),n=t+8;if(e===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(e===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(e===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}}t=n+i+(i&1)}return{width:0,height:0}}function Je(u,r){let t=(r||"").toLowerCase();if(t.includes("png"))return Ge(u);if(t.includes("jpeg")||t.includes("jpg"))return Qe(u);if(t.includes("webp"))return Ze(u);let e=Ge(u);return e.width||(e=Qe(u),e.width)||(e=Ze(u),e.width)?e:{width:0,height:0}}async function Tr(u,r,t){let e=await fetch(u,{mode:"cors",credentials:r?.credentials??"omit",referrerPolicy:r?.referrerPolicy,signal:r?.signal,cache:"default"});if(!e.ok||!e.body)throw new Error(`HTTP ${e.status}`);let i=e.headers.get("content-type"),n=e.body.getReader(),s=1048576,o=4096,a=new Uint8Array(s),l=0,c=0,d=[],h=null,p=!1;for(;;){let{done:f,value:g}=await n.read();if(f)break;if(!g)continue;let S=g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength);if(d.push(S),!h&&l<s){let v=Math.min(g.byteLength,s-l);if(v>0&&(a.set(g.subarray(0,v),l),l+=v),l-c>=o){let y=l===a.byteLength?a:a.slice(0,l),x=Je(y.buffer,i);x.width&&x.height&&(h=x,!p&&t&&(t(h),p=!0)),c=l}}}if(!h){let f=await new Response(new Blob(d)).arrayBuffer(),g=Je(f,i);g.width&&g.height&&(h=g,!p&&t&&(t(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 ee=class extends E{constructor(t){super(t);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(e=>this.ensureState(e)),this.isStartLoaded=!0}onObjectConnected(t){let e=t.htmlElement;if(!(e instanceof HTMLImageElement))return;e.getAttribute("src")||e.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(e);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(e);let n=o=>{this.handleInView(e,i,!!o?.inView)};i.unsubscribe&&i.unsubscribe();let s=this.getObjectEventName(t,"object:inview");this.events.on(s,n),i.unsubscribe=()=>this.events.off(s,n),this.isStartLoaded&&(t.getProperty("is-inview")??!1)&&this.handleInView(e,i,!0)}onObjectDisconnected(t){let e=t.htmlElement;if(!(e instanceof HTMLImageElement))return;let i=this.imageStates.get(e);i&&(i.pendingActivation=!1,i.controller&&i.controller.abort(),i.blobUrl&&URL.revokeObjectURL(i.blobUrl),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=void 0))}ensureState(t){let e=this.imageStates.get(t);if(!e){let i=this.readSource(t);return e={src:i,aspectReady:!1,contentReady:!1,aspectLoading:!1,contentLoading:!1,pendingActivation:!1,rangeAttempted:!1,fetching:!1},this.imageStates.set(t,e),t.classList.contains("lazyLoad")||t.classList.add("lazyLoad"),t.dataset&&!t.dataset.stringLazySrc&&i&&(t.dataset.stringLazySrc=i),e}return e.src||(e.src=this.readSource(t)),e}readSource(t){let e=this.tools.domAttribute.process({element:t,key:this.htmlKey,fallback:""});return typeof e=="string"?e:e==null?"":String(e)}handleInView(t,e,i){e.pendingActivation=i,i&&(e.aspectReady?this.maybeActivateImage(t,e):e.aspectLoading||this.prepareAspectRatio(t))}async prepareAspectRatio(t){let e=this.ensureState(t);if(!e.src||e.aspectLoading||e.aspectReady)return;if(wr(e.src)){e.aspectReady=!0,e.allowSrcFallback=!0,this.maybeActivateImage(t,e);return}e.aspectLoading=!0,e.fetching=!0;let i=t.getAttribute("crossorigin"),n=t.getAttribute("referrerpolicy"),s=new AbortController;e.controller=s;try{let{blobUrl:o}=await Tr(e.src,{credentials:i==="use-credentials"?"include":"omit",referrerPolicy:n||void 0,signal:s.signal},a=>{a.width>0&&a.height>0&&!e.aspectReady&&(t.style.aspectRatio=`${a.width} / ${a.height}`,t.classList.add(Ke),e.width=a.width,e.height=a.height,e.aspectReady=!0)});e.blobUrl=o,!e.aspectReady&&e.width&&e.height&&(t.style.aspectRatio=`${e.width} / ${e.height}`,t.classList.add(Ke),e.aspectReady=!0)}catch{e.allowSrcFallback=!0,e.aspectReady=!0}finally{e.fetching=!1,e.aspectLoading=!1,this.maybeActivateImage(t,e)}}maybeActivateImage(t,e){!e.pendingActivation||e.contentReady||e.contentLoading||!e.aspectReady||!e.src||e.fetching&&!e.blobUrl||(e.blobUrl||e.allowSrcFallback)&&this.activateImage(t,e)}activateImage(t,e){e.contentLoading=!0,this.loadingCount++;let i=o=>{e.contentLoading&&(e.contentLoading=!1,e.pendingActivation=!1,this.loadingCount=Math.max(0,this.loadingCount-1),o&&(e.contentReady=!0,t.classList.add("-loaded")),this.loadingCount===0&&this.events.emit("image:load:all",null))},n=()=>i(!0),s=()=>i(!1);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",s,{once:!0}),t.decoding="async",t.loading=t.loading||"lazy",e.blobUrl?(t.removeAttribute("srcset"),t.removeAttribute("sizes"),t.src=e.blobUrl):t.src=e.src,t.complete&&t.naturalWidth>0&&t.naturalHeight>0&&(t.removeEventListener("load",n),t.removeEventListener("error",s),i(!0))}};var re=class extends E{constructor(t){super(t);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var ie=class extends E{constructor(r){super(r),this.htmlKey=""}canConnect(r){return r.keys[0]==null}};var ct=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,t){this.min=r??void 0,this.max=t??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}},ne=class extends E{constructor(t){super(t);this.queries={0:new ct({max:359}),1:new ct({min:360,max:1023}),2:new ct({min:1024,max:1365}),3:new ct({min:1366})};this.isMobileMedia=!1;this.isTabletMedia=!1;this.isLaptopMedia=!1;this.isDesktopMedia=!1;this.matchMedias={0:window.matchMedia(this.queries[0].mediaQuery),1:window.matchMedia(this.queries[1].mediaQuery),2:window.matchMedia(this.queries[2].mediaQuery),3:window.matchMedia(this.queries[3].mediaQuery)};this._type=2}onConnect(){}onInit(){if(this.settings!=null&&this.settings.settings!=null){let t=this.settings.settings;t.mobile?(this.queries[0].enable=!0,this.queries[0].setRange(t.mobile.min==null?null:t.mobile.min,t.mobile.max??null),this.matchMedias[0]=window.matchMedia(this.queries[0].mediaQuery)):this.queries[0].enable=!1,t.tablet?(this.queries[1].enable=!0,this.queries[1].setRange(t.tablet.min==null?null:t.tablet.min,t.tablet.max??null),this.matchMedias[1]=window.matchMedia(this.queries[1].mediaQuery)):this.queries[1].enable=!1,t.laptop?(this.queries[2].enable=!0,this.queries[2].setRange(t.laptop.min==null?null:t.laptop.min,t.laptop.max??null),this.matchMedias[2]=window.matchMedia(this.queries[2].mediaQuery)):this.queries[2].enable=!1,t.desktop?(this.queries[3].enable=!0,this.queries[3].setRange(t.desktop.min==null?null:t.desktop.min,t.desktop.max??null),this.matchMedias[3]=window.matchMedia(this.queries[3].mediaQuery)):this.queries[3].enable=!1}this.updateElements()}onResize(){this.updateElements()}updateElements(){let t=this.matchMedias[0].matches&&this.queries[0].enable,e=this.matchMedias[1].matches&&this.queries[1].enable,i=this.matchMedias[2].matches&&this.queries[2].enable,n=this.matchMedias[3].matches&&this.queries[3].enable;this.isMobileMedia!=t&&this.events.emit("screen:mobile",t),this.isTabletMedia!=e&&this.events.emit("screen:tablet",e),this.isLaptopMedia!=i&&this.events.emit("screen:laptop",i),this.isDesktopMedia!=n&&this.events.emit("screen:desktop",n),this.isMobileMedia=t,this.isTabletMedia=e,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")&&t&&(a=!0),o.hasAttribute("string-tablet")&&e&&(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 se=class extends E{constructor(r){super(r),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:t=>{let[e,i]=t,n=this.tools.originParser.process({value:e}),s=this.tools.originParser.process({value:i});return{x:n,y:s}}}]}onObjectConnected(r){super.onObjectConnected(r);let t=r.getProperty("anchor");t&&this.applyToElementAndConnects(r,e=>{e.style.transformOrigin=`${t.x} ${t.y}`})}};var Pr=.05,Cr=.01,tr=1,Or=-1,Lr=1,oe=class extends E{constructor(t){super(t);this.previousLerp=0;this.displacement=0;this.acceleration=0;this.velocityMultiplier=.00125;this.isInitialScroll=!0;this.baseVelocityMultiplier=.00125;this.reducedVelocityMultiplier=this.baseVelocityMultiplier/20;this.negativeVelocityMultiplier=-1e-4;this.maxDisplacementValue=0;this.setupItem=t=>{let e=-this.data.scroll.displacement*this.maxDisplacementValue*t.glide;t.eventGlideName&&this.events.emit(t.eventGlideName,e);let i=`translate3d(0, ${e}px, 0)`;t.setProperty("__next-glide-transform",i),t.setProperty("__needs-glide-transform-update",!0)};this.onUpdateDesktopEvent=()=>{for(let t=0;t<this.objects.length;t++)this.setupItem(this.objects[t])};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(t,e,i,n){super.initializeObject(t,e,i,n),e.glide=e.getProperty("glide")??0,e.eventGlideName=this.getObjectEventName(e,"object:glide"),e.setProperty("__next-glide",0),e.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),e.setProperty("__needs-glide-var-update",!1),e.setProperty("__needs-glide-transform-update",!1)}calcExpanderFactor(t){let e=t?this.data.scroll.lerped<this.previousLerp:this.data.scroll.lerped>this.previousLerp;this.velocityMultiplier=e?this.isInitialScroll?this.baseVelocityMultiplier:this.reducedVelocityMultiplier:this.negativeVelocityMultiplier,e||(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 t=0;t<this.objects.length;t++){let e=this.objects[t];e.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),e.setProperty("__needs-glide-transform-update",!0),e.setProperty("__next-glide",0),e.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 t=0;for(let e=0;e<this.objects.length;e++){let i=this.objects[e];i.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),i.setProperty("__needs-glide-transform-update",!0),i.setProperty("__next-glide",t),i.setProperty("__needs-glide-var-update",!0)}this.flushPendingGlideStyles()}onFrame(t){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(tr,this.acceleration+Pr),this.displacement=Math.max(Cr,Math.min(tr,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Lr,Math.max(Or,this.data.scroll.lerped*this.displacement*this.acceleration));let e=this.data.scroll.displacement;for(let i=0;i<this.objects.length;i++){let n=this.objects[i];n.setProperty("__next-glide",e),n.setProperty("__needs-glide-var-update",!0)}this.previousLerp=this.data.scroll.lerped,this.onUpdateEvent()}onMutate(){this.applyPendingGlideStyles()}applyPendingGlideStyles(){for(let t=0;t<this.objects.length;t++){let e=this.objects[t],i=e.getProperty("__needs-glide-var-update")===!0,n=e.getProperty("__needs-glide-transform-update")===!0;if(!(!i&&!n)){if(i){let s=e.getProperty("__next-glide")??this.data.scroll.displacement;this.applyVarToElement(e,"--glide",s),this.applyVarToConnects(e,"--glide",s),e.setProperty("__needs-glide-var-update",!1)}if(n){let s=e.getProperty("__next-glide-transform")??"translate3d(0, 0px, 0)";this.applyPropToElement(e,"transform",s),e.setProperty("__needs-glide-transform-update",!1)}}}}flushPendingGlideStyles(){if(M.isOpen){this.applyPendingGlideStyles();return}M.run(()=>{this.applyPendingGlideStyles()})}};var ae=class extends E{constructor(t){super(t);this.hasInitializedCSS=!1;this.htmlKey="lerp",this.cssProperties=[{name:"--lerp",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[]}onObjectConnected(t){super.onObjectConnected(t),t.lerp=0,t.setProperty("lerp-applied",0),t.eventLerpName=this.getObjectEventName(t,"object:lerp")}onResize(){super.onResize(),!this.hasInitializedCSS&&this.objectsOnPage.length>0&&(this.hasInitializedCSS=!0,M.run(()=>{for(let t=0;t<this.objectsOnPage.length;t++)this.updateObjectLerp(this.objectsOnPage[t],!0)}))}onScrollStop(){for(let t=0;t<this.objects.length;t++)this.recomputeLerp(this.objects[t],0)}onFrame(t){let e=t.scroll.lerped;for(let i=0;i<this.objects.length;i++)this.recomputeLerp(this.objects[i],e)}recomputeLerp(t,e){t.lerp!==e&&(t.lerp=e,this.updateObjectLerp(t))}onMutate(){M.run(()=>{let t=this.objects.length;for(let e=0;e<t;e++)this.updateObjectLerp(this.objects[e])})}updateObjectLerp(t,e=!1){let i=t.lerp,n=t.getProperty("lerp-applied");if(!e&&n===i)return;t.setProperty("lerp-applied",i);let s=i?.toString()??"0";t.eventLerpName&&this.events.emit(t.eventLerpName,i),M.run(()=>{this.applyVarToElement(t,"--lerp",s),this.applyVarToConnects(t,"--lerp",s)})}onObjectDisconnected(t){super.onObjectDisconnected(t);let e=n=>{n.style.removeProperty("--lerp")};e(t.htmlElement);let i=t.mirrorObjects;for(let n=0;n<i.length;n++)e(i[n].htmlElement)}};var er={computeRawProgress(u,r,t){if(t===0)return 0;let e=(u-r)/t;return e<=0?0:e>=1?1:e},computeRawProgressBatch(u,r,t,e,i){for(let n=0;n<i;n++){let s=t[n];if(s===0){e[n]=0;continue}let o=(u-r[n])/s;o<=0?e[n]=0:o>=1?e[n]=1:e[n]=o}}},ut=class extends E{constructor(t){super(t);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(t,e,i,n){super.initializeObject(t,e,i,n)}sanitizeRawProgress(t){if(!Number.isFinite(t)||t<=0)return 0;if(t>=1)return 1;let e=1e-4;return t>1-e?t=1:t<e&&(t=0),t}applyRawProgress(t,e){let i=this.sanitizeRawProgress(e);if(t.progressRaw===i)return;t.progressRaw=i;let s=t.getProperty("easing"),o=typeof s=="function"?s(i):i;t.progress=o}recomputeProgress(t){let e=t.getProperty("start-position")??t.startPosition,i=t.getProperty("difference-position")??t.differencePosition;t.startPosition=e,t.differencePosition=i;let n=er.computeRawProgress(this.data.scroll.transformedCurrent,e,i);this.applyRawProgress(t,n)}ensureBatchCapacity(t){this.batchStarts.length>=t||(this.batchStarts=new Float64Array(t),this.batchDiffs=new Float64Array(t),this.batchOut=new Float64Array(t))}calculatePositions(t,e){super.calculatePositions(t,e),t.startPosition=t.getProperty("start-position")??t.startPosition,t.differencePosition=t.getProperty("difference-position")??t.differencePosition,this.recomputeProgress(t)}onScroll(t){super.onScroll(t)}onObjectConnected(t){super.onObjectConnected(t)}onScrollMeasure(t){let e=this.objects.length;if(e!==0){this.ensureBatchCapacity(e);for(let i=0;i<e;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}er.computeRawProgressBatch(this.data.scroll.transformedCurrent,this.batchStarts,this.batchDiffs,this.batchOut,e);for(let i=0;i<e;i++)this.applyRawProgress(this.objects[i],this.batchOut[i])}}onMutate(){M.run(()=>{let t=this.objects.length;for(let e=0;e<t;e++)this.updateObjectProgress(this.objects[e])})}updateObjectProgress(t){let e=t.progress;if(t.getProperty("progress-applied")===e)return;let n=t.getProperty("key");t.setProperty("progress-applied",e);let s=t.progressRaw??e,o=t.getProperty("easing");t.eventProgressName&&this.events.emit(t.eventProgressName,e),n&&this.applyVarToElement(t,n,e);for(let a=0;a<t.mirrorObjects.length;a++){let l=t.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(t){super.onObjectDisconnected(t);let e=t.getProperty("key");if(!e)return;let i=s=>{s.style.removeProperty(e)};i(t.htmlElement);let n=t.mirrorObjects;for(let s=0;s<n.length;s++)i(n[s].htmlElement)}};var le=class extends ut{constructor(t){super(t);this.updateScheduledTransform=!1;this.calculateDesktopParallax=t=>{let e=t.progress,i=t.getProperty("parallax")??0,n=t.getProperty("parallax-position-start")??0,s=t.getProperty("parallax-position-end")??1,o=t.getProperty("parallax-sign")??1,a=this.data.viewport.windowHeight/this.data.viewport.transformScale,l=o*i*(a*n+e*a*s);return this.events.emit(this.getObjectEventName(t,"object:parallax"),l),{transform:`translate3d(0, ${l}px, 0)`}};this.calculateMobileParallax=t=>(this.events.emit(this.getObjectEventName(t,"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(t,e,i,n){super.initializeObject(t,e,i,n);let s=e.getProperty("parallax-bias")??0,o=Math.abs(e.getProperty("parallax")??.2);e.setProperty("parallax-sign",Math.sign(e.getProperty("parallax"))),e.setProperty("parallax",o),e.setProperty("parallax-position-start",-.5+.5*s),e.setProperty("parallax-position-end",.5+.5*(1-s));let a=this.data.viewport.windowHeight;e.setProperty("offset-top",o*a),e.setProperty("offset-bottom",o*a)}calculatePositions(t,e){super.calculatePositions(t,e),t.transformValue=this.calculateParallaxForObject(t)}onScroll(t){super.onScroll(t)}onResize(){let t=window.innerWidth>1024;this.calculateParallaxForObject=t?this.calculateDesktopParallax:this.calculateMobileParallax}onScrollMeasure(t){super.onScrollMeasure(t);for(let e=0;e<this.objects.length;e++){let i=this.objects[e];i.transformValue=this.calculateParallaxForObject(i)}}onMutate(){M.run(()=>{for(let t=0;t<this.objects.length;t++){let e=this.objects[t],i=e.transformValue;i&&(this.applyPropToElement(e,"transform",i.transform),this.applyPropToConnects(e,"transform",i.transform))}})}};var ce=class{constructor(r,t,e,i){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=r,this.scrollbar=t,this.thumb=e,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth,e=t/r*t;this.thumb.style.setProperty("--size",e+"px"),r<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentWidth,t=this.data.viewport.windowWidth;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*t+"px"}`)}mouseDownEvent(r){this.startY=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let t=r.clientY-this.startY,e=this.startScrollPosition+t/this.data.viewport.windowWidth*this.data.viewport.contentWidth;this.data.scroll.current=e,this.data.scroll.target=e,this.onScrollTo(e),this.updateThumb()}};var ue=class{constructor(r,t,e,i){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=r,this.scrollbar=t,this.thumb=e,this.onScrollTo=i}onResize(){let r=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight,e=t/r*t;this.thumb.style.setProperty("--height",e+"px"),r<=t?this.scrollbar.classList.add("-hide"):this.scrollbar.classList.remove("-hide")}updateThumb(){let r=this.data.viewport.contentHeight,t=this.data.viewport.windowHeight;this.thumb.style.setProperty("--position",`${this.data.scroll.current/r*t+"px"}`)}mouseDownEvent(r){this.startCoordinate=r.clientY,this.startScrollPosition=this.data.scroll.current}mouseMoveEvent(r){let t=r.clientY-this.startCoordinate,e=this.startScrollPosition+t/this.data.viewport.windowHeight*this.data.viewport.contentHeight,i=this.data.scroll.bottomPosition,n=Math.max(0,Math.min(e,i));this.data.scroll.current=n,this.data.scroll.target=n,this.onScrollTo(n),this.updateThumb()}};var de=class extends E{constructor(t){super(t);this.isDragging=!1;this.scrollMode="smooth";this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this),this.requestScrollTo=e=>{this.events.emit("scrollTo",{position:e,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(t){this.updateThumb(),this.showScrollbar(),this.hideScrollbar()}onResize(){this.scrollbarState.onResize()}addCustomStyles(){let t=document.createElement("style");t.textContent=`
|
|
2
2
|
::-webkit-scrollbar {
|
|
3
3
|
display: none;
|
|
4
4
|
width: 0;
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
-ms-overflow-style: none; /* IE and Edge */
|
|
17
17
|
scrollbar-width: none; /* Firefox */
|
|
18
18
|
}
|
|
19
|
-
`,document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new le(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new ce(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(()=>{this.scrollbar.classList.remove("-scroll")},1e3)}};var et={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Tr(c){if(!c||!Array.isArray(c.chars)||c.chars.length===0)return[];let e=c.chars[0].splitClass??[];if(e.length===0)return[];for(let t of c.chars){let r=t.splitClass??[];if(r.length!==e.length)return[];for(let i=0;i<r.length;i++)if(r[i]!==e[i])return[]}return e}function Je(c,e,t){let r=document.createDocumentFragment(),i=0,n=W(e,"line")||W(e,"charLine")||W(e,"wordLine"),s=W(e,"char")||W(e,"charLine")||W(e,"charWord"),o=0;c.forEach(h=>o+=h.words.length),o--;let a=0;c.forEach(h=>h.words.forEach(m=>a+=m.chars.length));let l=c.length,u=o+1,d=new Map;return c.forEach((h,m)=>{let f=m===c.length-1,p=r,v=[];if(n&&(p=document.createElement("span"),p.setAttribute("aria-hidden","true"),p.classList.add("-s-line"),h.isBeforeElement&&p.classList.add(et.BEFORE_ELEMENT),h.isAfterElement&&p.classList.add(et.AFTER_ELEMENT),p.style.setProperty("--line-index",String(h.lineIndex)),p.style.setProperty("--word-total",String(h.words.length)),Re(p,h.calculatedValues,e)),h.words.forEach((g,S)=>{n&&(o=h.words.length-1);let b=S===o;if(g.chars.length===1&&g.chars[0].token.type==="element"){let O=g.chars[0].token.node.cloneNode(!0);p.appendChild(O);return}let M=g.chars.map(O=>O.char).join("");M&&v.push(M);let C=W(e,"word")||W(e,"charWord")||W(e,"wordLine"),w=C?document.createElement("span"):p,D=Tr(g);if(C&&(w.setAttribute("aria-hidden","true"),w.classList.add("-s-word"),g.isBeforeElement&&w.classList.add(et.BEFORE_ELEMENT),g.isAfterElement&&w.classList.add(et.AFTER_ELEMENT),w.style.setProperty("--word-index",String(g.wordIndexGlobal)),w.style.setProperty("--char-total",String(g.chars.length)),w.setAttribute("data-split-content",M),Re(w,g.calculatedValues,e),D.length&&w.classList.add(...D)),s)g.chars.forEach((O,k)=>{if(O.char===" "||O.char===" ")return;let A=document.createElement("span");A.setAttribute("aria-hidden","true");let L=A;L.classList.add("-s-char"),O.isBeforeElement&&L.classList.add(et.BEFORE_ELEMENT),O.isAfterElement&&L.classList.add(et.AFTER_ELEMENT),L.textContent=O.char,L.setAttribute("data-split-content",O.char),L.style.setProperty("--char-index",String(i++));let N=g.chars[k+1];if(N){let I=t.getKerning(O.char,N.char);Math.abs(I)>.01&&(L.style.setProperty("--kerning",`${I.toFixed(2)}px`),L.style.marginRight="var(--kerning)")}Re(L,O.calculatedValues,e);let T=O.splitClass??[];T.length&&!D.length&&L.classList.add(...T),w.appendChild(A)});else{let O=document.createTextNode(M);w.appendChild(O)}C&&p.appendChild(w),n?b?f||p.appendChild(document.createElement("br")):w.appendChild(document.createTextNode("\xA0")):b||w.appendChild(document.createTextNode("\xA0"))}),n){let g=v.join(" ");p.setAttribute("data-split-content",g),r.appendChild(p)}}),s&&d.set("--char-global-total",String(a)),(W(e,"word")||W(e,"charWord")||W(e,"wordLine"))&&d.set("--word-global-total",String(u)),n&&d.set("--line-global-total",String(l)),{fragment:r,extraProps:d}}function Re(c,e,t){if(e)for(let r of e){if(!Pr(r.type,r.align,t))continue;let i=Cr(r.type,r.align);c.style.setProperty(i,String(r.value))}}function Pr(c,e,t){let r=t[c]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function Cr(c,e){let t=e.startsWith("random")?"random":e;return`--${c}-${t}`}function W(c,e){return Array.isArray(c[e])&&c[e].length>0}var Pt=0;function tr(c){Pt=0;let e=[],t=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),e.push(i)},r=(i,n)=>{if(i.nodeType===Node.ELEMENT_NODE){let 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(u=>r(u,l));return}if(o==="br"){t({type:"br",id:`br_${Pt++}`,node:s,tagName:"br"},n);return}t({type:"element",id:`el_${Pt++}`,node:s,tagName:o},n);return}if(i.nodeType===Node.TEXT_NODE){let s=i.nodeValue??"",o=`text_${Pt++}`;s.trim()?t({type:"text",id:o,node:i,content:s},n):t({type:"space",id:o,node:i,content:s},n);return}t({type:"other",id:`node_${Pt++}`,node:i},n)};return c.forEach(i=>r(i)),e}var de=class{constructor(e){this.font="";this.cache={kerning:new Map,charWidth:new Map};let t=document.createElement("canvas");this.ctx=t.getContext("2d"),this.setFontFromElement(e)}setFontFromElement(e){let t=window.getComputedStyle(e),r=`${t.fontStyle} ${t.fontVariant} ${t.fontWeight} ${t.fontSize}/${t.lineHeight} ${t.fontFamily}`;r!==this.font&&(this.font=r,this.ctx.font=this.font,this.cache.kerning.clear(),this.cache.charWidth.clear())}getCharWidth(e){if(this.cache.charWidth.has(e))return this.cache.charWidth.get(e);let t=this.ctx.measureText(e).width;return this.cache.charWidth.set(e,t),t}getKerning(e,t){let r=`${e}${t}`,i=`${this.font}|${r}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(r).width,s=this.getCharWidth(e)+this.getCharWidth(t),o=n-s;return this.cache.kerning.set(i,o),o}measureWord(e){let t=0;for(let r=0;r<e.length;r++){let i=e[r];if(t+=this.getCharWidth(i),r>0){let n=e[r-1];t+=this.getKerning(n,i)}}return t}};function Lr(c){let e=[],t=[];for(let r of c)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function er(c,e,t){let r=document.createElement("div"),i=window.getComputedStyle(e);r.style.position="absolute",r.style.visibility="hidden",r.style.pointerEvents="none",r.style.width=e.clientWidth+"px",r.style.padding=i.padding,r.style.font=i.font,r.style.letterSpacing=i.letterSpacing,r.style.lineHeight=i.lineHeight,r.style.fontVariant=i.fontVariant,r.style.fontStretch=i.fontStretch,r.style.wordBreak=i.wordBreak,r.style.wordWrap=i.wordWrap,r.style.whiteSpace=i.whiteSpace;let n=document.createElement("span");n.textContent="\xA0",r.appendChild(n);let s=n.getBoundingClientRect().width;r.removeChild(n),r.style.width=e.clientWidth+s+"px",r.style.boxSizing="border-box",e.appendChild(r);let o=[],a=Lr(c),l=!1,u=!1,d=!1;for(let h of a){if(h.length===1&&h[0].type==="br"){o.push({token:h[0],rect:new DOMRect(0,0,0,0)});continue}if(h.length===0)continue;r.innerHTML="";let m=[],f=[];h.forEach(p=>{switch(p.type){case"text":{let v=p.content,g=/^\s/.test(v),S=/\s$/.test(v),b=v.trim().split(/\s+/).filter(y=>y.length>0);b.forEach((y,M)=>{let C=document.createElement("span");C.style.display="inline-block",C.textContent=y,r.appendChild(C),(M<b.length-1||S)&&r.appendChild(document.createTextNode(" ")),m.push(C),f.push({token:{type:"text",id:"",node:p.node,content:y,meta:{...p.meta||{},joinPrev:M===0?!g&&!u&&d:!1}},wordIndex:m.length-1,hadLeadingSpace:g,hadTrailingSpace:S})}),u=S,d=!0;break}case"element":{let v=p.node.cloneNode(!0),g=document.createElement("span");g.style.display="inline-block",g.appendChild(v),r.appendChild(g),m.push(g),f.push({token:p,wordIndex:m.length-1}),l=!0,d=!1,u=!1;break}case"space":u=!0;break;case"other":d=!1,u=!1;break}}),r.offsetHeight,f.forEach((p,v)=>{if(p.wordIndex!==void 0){let S=m[p.wordIndex].getBoundingClientRect(),b;if(p.token.type==="text"){let M=t.measureWord(p.token.content);b=new DOMRect(S.x,S.y,M,S.height)}else b=S;let y={token:p.token,rect:b};if(l&&p.token.type==="text"&&(l=!1,y.token.meta={...y.token.meta||{},isAfterElement:!0}),o.push(y),p.token.type==="element"){let M=o[o.length-2];M?.token.type==="text"&&(M.token.meta={...M.token.meta||{},isBeforeElement:!0})}}})}return e.removeChild(r),o}var rr=5;function ir(c,e,t){let r=[],i=null,n=0,s=0,o=0;return c.forEach(a=>{let l=a.token,u=l.meta?.isBeforeElement??!1,d=l.meta?.isAfterElement??!1;if(l.type==="br"){i=null;return}if(l.type==="text"){let h=l.content,m=l.meta?.splitClass??[],f=!!l.meta?.joinPrev,p=[],v=0;for(let w=0;w<h.length;w++){let D=h[w],O=w>0?h[w-1]:null,k=t.getCharWidth(D),A=O?t.getKerning(O,D):0;v+=A;let L=new DOMRect(a.rect.left+v,a.rect.top,k,a.rect.height),N={char:D,rect:L,token:l,charIndexInWord:w,charIndexInLine:0,charIndexGlobal:s++};m.length&&(N.splitClass=m),p.push(N),v+=k}if(p.length>0){let w=p[p.length-1];u&&(w.isBeforeElement=!0),d&&(w.isAfterElement=!0)}let g=Math.round(a.rect.top),S=Math.round(n);if((!i||Math.abs(g-S)>rr)&&(n=g,i={words:[],rect:a.rect,lineIndex:r.length},r.push(i)),!i)return;if(f&&i.words.length>0){let w=i.words[i.words.length-1],D=i.words.reduce((k,A)=>k+A.chars.length,0),O=w.chars.length;p.forEach((k,A)=>{k.charIndexInLine=D+A,k.charIndexInWord=O+A}),w.chars.push(...p),w.rect=he([w.rect,a.rect]),i.rect=he(i.words.map(k=>k.rect)),u&&(w.isBeforeElement=!0),d&&(w.isAfterElement=!0);return}let y=i.words.length,M=i.words.reduce((w,D)=>w+D.chars.length,0);p.forEach((w,D)=>w.charIndexInLine=M+D);let C={chars:p,rect:a.rect,wordIndexGlobal:o++,wordIndexInLine:y,isBeforeElement:u,isAfterElement:d};i.words.push(C),i.rect=he(i.words.map(w=>w.rect)),u&&(i.isBeforeElement=!0),d&&(i.isAfterElement=!0);return}if(l.type==="element"){let h=a.rect,m=Math.round(h.top),f=Math.round(n);if((!i||Math.abs(m-f)>rr)&&(n=m,i={words:[],rect:h,lineIndex:r.length},r.push(i)),!i)return;let v=i.words.length,g=i.words.reduce((y,M)=>y+M.chars.length,0),b={chars:[{char:"[E]",rect:h,token:l,charIndexInWord:0,charIndexInLine:g,charIndexGlobal:s++}],rect:h,wordIndexGlobal:o++,wordIndexInLine:v,isBeforeElement:!1,isAfterElement:!1};i.words.push(b),i.rect=he(i.words.map(y=>y.rect))}}),r}function he(c){if(c.length===0)return new DOMRect(0,0,0,0);let e=Math.min(...c.map(n=>n.left)),t=Math.min(...c.map(n=>n.top)),r=Math.max(...c.map(n=>n.right)),i=Math.max(...c.map(n=>n.bottom));return new DOMRect(e,t,r-e,i-t)}var pe=class extends E{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(e=>{this.onObjectConnected(e)})}onObjectConnected(e){let t=e.htmlElement;if(!t)return;let r=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!r||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),e.htmlElement.innerHTML=i;let n=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:n}),{fragment:o,result:a,extraProps:l}=this.split(t,s);e.setProperty("nodes",o.childNodes),t.setAttribute("aria-label",i),t.innerHTML="",t.appendChild(a),l.forEach((d,h)=>{t.style.setProperty(h,d)});let u=t.getAttribute("string-split-restore-after");u&&!isNaN(Number(u))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(u))}split(e,t){let r=new de(e),i=document.createDocumentFragment();e.childNodes.forEach(l=>i.appendChild(l.cloneNode(!0)));let n=tr(i.childNodes),s=er(n,e,r),o=ir(s,e,r);this.applyCalculatedValues(o,t);let a=Je(o,t,r);return{fragment:i,result:a.fragment,extraProps:a.extraProps}}computeValue(e,t,r){if(e.align.startsWith("random")){let i=e.random?.min??0,n=e.random?.max??r-1;return Math.floor(Math.random()*(n-i+1))+i}switch(e.align){case"start":return t;case"end":return r-t-1;case"center":{let i=Math.floor((r-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(e,t){let r=s=>s.words.reduce((o,a)=>o+a.chars.length,0),i=e.reduce((s,o)=>s+o.words.length,0),n=e.reduce((s,o)=>s+o.words.reduce((a,l)=>a+l.chars.length,0),0);e.forEach((s,o)=>{t.line&&(s.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,o,e.length)}))),s.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,s.words.length)}))));let u=r(s);a.chars.forEach(d=>{let h=[];t.char&&h.push(...t.char.map(m=>({type:"char",align:m.align,value:this.computeValue(m,d.charIndexGlobal,n)}))),t.charWord&&h.push(...t.charWord.map(m=>({type:"charWord",align:m.align,value:this.computeValue(m,d.charIndexInWord,a.chars.length)}))),t.charLine&&h.push(...t.charLine.map(m=>({type:"charLine",align:m.align,value:this.computeValue(m,d.charIndexInLine,u)}))),d.calculatedValues=h})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var me=class extends E{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n*this.height;s===0?t.moveTo(o,a):t.lineTo(o,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),r=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=r,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var X="data-fps",ge=class extends E{constructor(t){super(t);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(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.observer?.disconnect(),this.removeDisplayElement(),this.fpsElements.clear()}onVisibilityChange(t){t?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}updateFPS(t){if(t===this.lastFps)return;this.lastFps=t;let r=String(t);for(let i of this.fpsElements)i.isConnected&&i.setAttribute(X,r);this.displayElement&&this.displayElement.setAttribute(X,r),this.events.emit("fps",t)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${X}]`).forEach(t=>{t!==this.displayElement&&this.fpsElements.add(t)})}observeDOM(){this.observer=new MutationObserver(t=>{let r=!1;for(let i of t){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;s.hasAttribute(X)&&(r=!0),s.querySelector(`[${X}]`)&&(r=!0)}for(let n of Array.from(i.removedNodes))n.nodeType===Node.ELEMENT_NODE&&this.fpsElements.delete(n)}r&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}createDisplayElement(){if(this.displayElement)return;let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.setAttribute(X,"0"),document.body.appendChild(t);let r="string-fps-tracker-style";if(!document.getElementById(r)){let i=document.createElement("style");i.id=r,i.innerHTML=`
|
|
19
|
+
`,document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new ce(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarStateVertical=new ue(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(()=>{this.scrollbar.classList.remove("-scroll")},1e3)}};var rt={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Dr(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 t of u.chars){let e=t.splitClass??[];if(e.length!==r.length)return[];for(let i=0;i<e.length;i++)if(e[i]!==r[i])return[]}return r}function rr(u,r,t){let e=document.createDocumentFragment(),i=0,n=V(r,"line")||V(r,"charLine")||V(r,"wordLine"),s=V(r,"char")||V(r,"charLine")||V(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=e,f=[];if(n&&(m=document.createElement("span"),m.setAttribute("aria-hidden","true"),m.classList.add("-s-line"),h.isBeforeElement&&m.classList.add(rt.BEFORE_ELEMENT),h.isAfterElement&&m.classList.add(rt.AFTER_ELEMENT),m.style.setProperty("--line-index",String(h.lineIndex)),m.style.setProperty("--word-total",String(h.words.length)),He(m,h.calculatedValues,r)),h.words.forEach((g,S)=>{n&&(o=h.words.length-1);let v=S===o;if(g.chars.length===1&&g.chars[0].token.type==="element"){let O=g.chars[0].token.node.cloneNode(!0);m.appendChild(O);return}let x=g.chars.map(O=>O.char).join("");x&&f.push(x);let P=V(r,"word")||V(r,"charWord")||V(r,"wordLine"),w=P?document.createElement("span"):m,D=Dr(g);if(P&&(w.setAttribute("aria-hidden","true"),w.classList.add("-s-word"),g.isBeforeElement&&w.classList.add(rt.BEFORE_ELEMENT),g.isAfterElement&&w.classList.add(rt.AFTER_ELEMENT),w.style.setProperty("--word-index",String(g.wordIndexGlobal)),w.style.setProperty("--char-total",String(g.chars.length)),w.setAttribute("data-split-content",x),He(w,g.calculatedValues,r),D.length&&w.classList.add(...D)),s)g.chars.forEach((O,R)=>{if(O.char===" "||O.char===" ")return;let I=document.createElement("span");I.setAttribute("aria-hidden","true");let L=I;L.classList.add("-s-char"),O.isBeforeElement&&L.classList.add(rt.BEFORE_ELEMENT),O.isAfterElement&&L.classList.add(rt.AFTER_ELEMENT),L.textContent=O.char,L.setAttribute("data-split-content",O.char),L.style.setProperty("--char-index",String(i++));let H=g.chars[R+1];if(H){let A=t.getKerning(O.char,H.char);Math.abs(A)>.01&&(L.style.setProperty("--kerning",`${A.toFixed(2)}px`),L.style.marginRight="var(--kerning)")}He(L,O.calculatedValues,r);let C=O.splitClass??[];C.length&&!D.length&&L.classList.add(...C),w.appendChild(I)});else{let O=document.createTextNode(x);w.appendChild(O)}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 g=f.join(" ");m.setAttribute("data-split-content",g),e.appendChild(m)}}),s&&d.set("--char-global-total",String(a)),(V(r,"word")||V(r,"charWord")||V(r,"wordLine"))&&d.set("--word-global-total",String(c)),n&&d.set("--line-global-total",String(l)),{fragment:e,extraProps:d}}function He(u,r,t){if(r)for(let e of r){if(!Ar(e.type,e.align,t))continue;let i=Ir(e.type,e.align);u.style.setProperty(i,String(e.value))}}function Ar(u,r,t){let e=t[u]??[];return Array.isArray(e)&&e.some(i=>r.startsWith("random")?i.align.startsWith("random"):i.align===r)}function Ir(u,r){let t=r.startsWith("random")?"random":r;return`--${u}-${t}`}function V(u,r){return Array.isArray(u[r])&&u[r].length>0}var Ct=0;function ir(u){Ct=0;let r=[],t=(i,n)=>{n&&Object.keys(n).length&&(i.meta={...i.meta||{},...n}),r.push(i)},e=(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=>e(c,l));return}if(o==="br"){t({type:"br",id:`br_${Ct++}`,node:s,tagName:"br"},n);return}t({type:"element",id:`el_${Ct++}`,node:s,tagName:o},n);return}if(i.nodeType===Node.TEXT_NODE){let s=i.nodeValue??"",o=`text_${Ct++}`;s.trim()?t({type:"text",id:o,node:i,content:s},n):t({type:"space",id:o,node:i,content:s},n);return}t({type:"other",id:`node_${Ct++}`,node:i},n)};return u.forEach(i=>e(i)),r}var he=class{constructor(r){this.font="";this.cache={kerning:new Map,charWidth:new Map};let t=document.createElement("canvas");this.ctx=t.getContext("2d"),this.setFontFromElement(r)}setFontFromElement(r){let t=window.getComputedStyle(r),e=`${t.fontStyle} ${t.fontVariant} ${t.fontWeight} ${t.fontSize}/${t.lineHeight} ${t.fontFamily}`;e!==this.font&&(this.font=e,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 t=this.ctx.measureText(r).width;return this.cache.charWidth.set(r,t),t}getKerning(r,t){let e=`${r}${t}`,i=`${this.font}|${e}`;if(this.cache.kerning.has(i))return this.cache.kerning.get(i);let n=this.ctx.measureText(e).width,s=this.getCharWidth(r)+this.getCharWidth(t),o=n-s;return this.cache.kerning.set(i,o),o}measureWord(r){let t=0;for(let e=0;e<r.length;e++){let i=r[e];if(t+=this.getCharWidth(i),e>0){let n=r[e-1];t+=this.getKerning(n,i)}}return t}};function Rr(u){let r=[],t=[];for(let e of u)e.type==="br"?(t.length&&r.push(t),r.push([e]),t=[]):t.push(e);return t.length&&r.push(t),r}function nr(u,r,t){let e=document.createElement("div"),i=window.getComputedStyle(r);e.style.position="absolute",e.style.visibility="hidden",e.style.pointerEvents="none",e.style.width=r.clientWidth+"px",e.style.padding=i.padding,e.style.font=i.font,e.style.letterSpacing=i.letterSpacing,e.style.lineHeight=i.lineHeight,e.style.fontVariant=i.fontVariant,e.style.fontStretch=i.fontStretch,e.style.wordBreak=i.wordBreak,e.style.wordWrap=i.wordWrap,e.style.whiteSpace=i.whiteSpace;let n=document.createElement("span");n.textContent="\xA0",e.appendChild(n);let s=n.getBoundingClientRect().width;e.removeChild(n),e.style.width=r.clientWidth+s+"px",e.style.boxSizing="border-box",r.appendChild(e);let o=[],a=Rr(u),l=!1,c=!1,d=!1;for(let h of a){if(h.length===1&&h[0].type==="br"){o.push({token:h[0],rect:new DOMRect(0,0,0,0)});continue}if(h.length===0)continue;e.innerHTML="";let p=[],b=[];h.forEach(m=>{switch(m.type){case"text":{let f=m.content,g=/^\s/.test(f),S=/\s$/.test(f),v=f.trim().split(/\s+/).filter(y=>y.length>0);v.forEach((y,x)=>{let P=document.createElement("span");P.style.display="inline-block",P.textContent=y,e.appendChild(P),(x<v.length-1||S)&&e.appendChild(document.createTextNode(" ")),p.push(P),b.push({token:{type:"text",id:"",node:m.node,content:y,meta:{...m.meta||{},joinPrev:x===0?!g&&!c&&d:!1}},wordIndex:p.length-1,hadLeadingSpace:g,hadTrailingSpace:S})}),c=S,d=!0;break}case"element":{let f=m.node.cloneNode(!0),g=document.createElement("span");g.style.display="inline-block",g.appendChild(f),e.appendChild(g),p.push(g),b.push({token:m,wordIndex:p.length-1}),l=!0,d=!1,c=!1;break}case"space":c=!0;break;case"other":d=!1,c=!1;break}}),e.offsetHeight,b.forEach((m,f)=>{if(m.wordIndex!==void 0){let S=p[m.wordIndex].getBoundingClientRect(),v;if(m.token.type==="text"){let x=t.measureWord(m.token.content);v=new DOMRect(S.x,S.y,x,S.height)}else v=S;let y={token:m.token,rect:v};if(l&&m.token.type==="text"&&(l=!1,y.token.meta={...y.token.meta||{},isAfterElement:!0}),o.push(y),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(e),o}var sr=5;function or(u,r,t){let e=[],i=null,n=0,s=0,o=0;return u.forEach(a=>{let l=a.token,c=l.meta?.isBeforeElement??!1,d=l.meta?.isAfterElement??!1;if(l.type==="br"){i=null;return}if(l.type==="text"){let h=l.content,p=l.meta?.splitClass??[],b=!!l.meta?.joinPrev,m=[],f=0;for(let w=0;w<h.length;w++){let D=h[w],O=w>0?h[w-1]:null,R=t.getCharWidth(D),I=O?t.getKerning(O,D):0;f+=I;let L=new DOMRect(a.rect.left+f,a.rect.top,R,a.rect.height),H={char:D,rect:L,token:l,charIndexInWord:w,charIndexInLine:0,charIndexGlobal:s++};p.length&&(H.splitClass=p),m.push(H),f+=R}if(m.length>0){let w=m[m.length-1];c&&(w.isBeforeElement=!0),d&&(w.isAfterElement=!0)}let g=Math.round(a.rect.top),S=Math.round(n);if((!i||Math.abs(g-S)>sr)&&(n=g,i={words:[],rect:a.rect,lineIndex:e.length},e.push(i)),!i)return;if(b&&i.words.length>0){let w=i.words[i.words.length-1],D=i.words.reduce((R,I)=>R+I.chars.length,0),O=w.chars.length;m.forEach((R,I)=>{R.charIndexInLine=D+I,R.charIndexInWord=O+I}),w.chars.push(...m),w.rect=pe([w.rect,a.rect]),i.rect=pe(i.words.map(R=>R.rect)),c&&(w.isBeforeElement=!0),d&&(w.isAfterElement=!0);return}let y=i.words.length,x=i.words.reduce((w,D)=>w+D.chars.length,0);m.forEach((w,D)=>w.charIndexInLine=x+D);let P={chars:m,rect:a.rect,wordIndexGlobal:o++,wordIndexInLine:y,isBeforeElement:c,isAfterElement:d};i.words.push(P),i.rect=pe(i.words.map(w=>w.rect)),c&&(i.isBeforeElement=!0),d&&(i.isAfterElement=!0);return}if(l.type==="element"){let h=a.rect,p=Math.round(h.top),b=Math.round(n);if((!i||Math.abs(p-b)>sr)&&(n=p,i={words:[],rect:h,lineIndex:e.length},e.push(i)),!i)return;let f=i.words.length,g=i.words.reduce((y,x)=>y+x.chars.length,0),v={chars:[{char:"[E]",rect:h,token:l,charIndexInWord:0,charIndexInLine:g,charIndexGlobal:s++}],rect:h,wordIndexGlobal:o++,wordIndexInLine:f,isBeforeElement:!1,isAfterElement:!1};i.words.push(v),i.rect=pe(i.words.map(y=>y.rect))}}),e}function pe(u){if(u.length===0)return new DOMRect(0,0,0,0);let r=Math.min(...u.map(n=>n.left)),t=Math.min(...u.map(n=>n.top)),e=Math.max(...u.map(n=>n.right)),i=Math.max(...u.map(n=>n.bottom));return new DOMRect(r,t,e-r,i-t)}var me=class extends E{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 t=r.htmlElement;if(!t)return;let e=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!e||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),r.htmlElement.innerHTML=i;let n=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:n}),{fragment:o,result:a,extraProps:l}=this.split(t,s);r.setProperty("nodes",o.childNodes),t.setAttribute("aria-label",i),t.innerHTML="",t.appendChild(a),l.forEach((d,h)=>{t.style.setProperty(h,d)});let c=t.getAttribute("string-split-restore-after");c&&!isNaN(Number(c))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(c))}split(r,t){let e=new he(r),i=document.createDocumentFragment();r.childNodes.forEach(l=>i.appendChild(l.cloneNode(!0)));let n=ir(i.childNodes),s=nr(n,r,e),o=or(s,r,e);this.applyCalculatedValues(o,t);let a=rr(o,t,e);return{fragment:i,result:a.fragment,extraProps:a.extraProps}}computeValue(r,t,e){if(r.align.startsWith("random")){let i=r.random?.min??0,n=r.random?.max??e-1;return Math.floor(Math.random()*(n-i+1))+i}switch(r.align){case"start":return t;case"end":return e-t-1;case"center":{let i=Math.floor((e-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(r,t){let e=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)=>{t.line&&(s.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,o,r.length)}))),s.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,s.words.length)}))));let c=e(s);a.chars.forEach(d=>{let h=[];t.char&&h.push(...t.char.map(p=>({type:"char",align:p.align,value:this.computeValue(p,d.charIndexGlobal,n)}))),t.charWord&&h.push(...t.charWord.map(p=>({type:"charWord",align:p.align,value:this.computeValue(p,d.charIndexInWord,a.chars.length)}))),t.charLine&&h.push(...t.charLine.map(p=>({type:"charLine",align:p.align,value:this.computeValue(p,d.charIndexInLine,c)}))),d.calculatedValues=h})})})}escapeAttribute(r){return r.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var ge=class extends E{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let e=Math.abs(t.scroll.displacement);this.value=e,this.history.push(e),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,e=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,e,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n*this.height;s===0?t.moveTo(o,a):t.lineTo(o,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),e=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=e,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var X="data-fps",fe=class extends E{constructor(t){super(t);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(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.observer?.disconnect(),this.removeDisplayElement(),this.fpsElements.clear()}onVisibilityChange(t){t?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}updateFPS(t){if(t===this.lastFps)return;this.lastFps=t;let e=String(t);for(let i of this.fpsElements)i.isConnected&&i.setAttribute(X,e);this.displayElement&&this.displayElement.setAttribute(X,e),this.events.emit("fps",t)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${X}]`).forEach(t=>{t!==this.displayElement&&this.fpsElements.add(t)})}observeDOM(){this.observer=new MutationObserver(t=>{let e=!1;for(let i of t){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;s.hasAttribute(X)&&(e=!0),s.querySelector(`[${X}]`)&&(e=!0)}for(let n of Array.from(i.removedNodes))n.nodeType===Node.ELEMENT_NODE&&this.fpsElements.delete(n)}e&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}createDisplayElement(){if(this.displayElement)return;let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.setAttribute(X,"0"),document.body.appendChild(t);let e="string-fps-tracker-style";if(!document.getElementById(e)){let i=document.createElement("style");i.id=e,i.innerHTML=`
|
|
20
20
|
[${X}]::before {
|
|
21
21
|
content: 'FPS: ' attr(${X});
|
|
22
22
|
}
|
|
23
|
-
`,document.head.appendChild(i)}this.displayElement=t}};var
|
|
24
|
-
[${
|
|
25
|
-
content: attr(${
|
|
23
|
+
`,document.head.appendChild(i)}this.displayElement=t}};var be=class extends E{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let e=Math.abs(t.scroll.displacement);this.currentValue=e,this.history.push(e),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,e=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,e,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((n,s)=>{let o=s,a=i-n/2;s===0?t.moveTo(o,a):t.lineTo(o,a)}),t.stroke()}initCanvas(){this.canvas=document.createElement("canvas"),this.canvasHeight=window.innerHeight/15-20,this.canvas.width=window.innerWidth*.5,this.canvas.height=this.canvasHeight,Object.assign(this.canvas.style,{position:"fixed",bottom:"10px",left:"50%",transform:"translateX(-50%)",backgroundColor:"#000",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas)}setTarget(t){this.targetValue=t}clear(){this.canvas.remove(),this.history=[]}};var K="data-val",G="data-val-pct",Q="data-dir",ve=class extends E{constructor(t){super(t);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(t){let e=t.scroll.current,i=t.scroll.target,n=t.viewport.contentHeight,s=t.viewport.windowHeight,o=Math.round(e),a=Math.max(1,n-s),l=Math.round(e/a*100),c;if(e!==i?c=e<i?"\u2193":"\u2191":e!==this.previousCurrent?c=e>this.previousCurrent?"\u2193":"\u2191":c=this.lastDir||"\u2022",this.previousCurrent=e,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(K,d);this.displayElement&&this.displayElement.setAttribute(K,d)}if(l!==this.lastValPct){this.lastValPct=l;let d=String(l);for(let h of this.valPctElements)h.isConnected&&h.setAttribute(G,d);this.displayElement&&this.displayElement.setAttribute(G,d)}this.setDirection(c),this.events.emit("scroll-position",{val:o,valPct:l,direction:c})}setDirection(t){if(t!==this.lastDir){this.lastDir=t;for(let e of this.dirElements)e.isConnected&&e.setAttribute(Q,t);this.displayElement&&this.displayElement.setAttribute(Q,t)}}destroy(){this.idleTimeout&&clearTimeout(this.idleTimeout),this.observer?.disconnect(),this.removeDisplayElement(),this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear()}onVisibilityChange(t){t?this.createDisplayElement():this.removeDisplayElement()}removeDisplayElement(){this.displayElement?.remove(),this.displayElement=null}scanElements(){this.valElements.clear(),this.valPctElements.clear(),this.dirElements.clear(),document.querySelectorAll(`[${K}]`).forEach(t=>{t!==this.displayElement&&this.valElements.add(t)}),document.querySelectorAll(`[${G}]`).forEach(t=>{t!==this.displayElement&&this.valPctElements.add(t)}),document.querySelectorAll(`[${Q}]`).forEach(t=>{t!==this.displayElement&&this.dirElements.add(t)})}observeDOM(){this.observer=new MutationObserver(t=>{let e=!1;for(let i of t){for(let n of Array.from(i.addedNodes))if(n.nodeType===Node.ELEMENT_NODE){let s=n;this.hasTrackingAttr(s)&&(e=!0),s.querySelector(`[${K}],[${G}],[${Q}]`)&&(e=!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)}}e&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}hasTrackingAttr(t){return t.hasAttribute(K)||t.hasAttribute(G)||t.hasAttribute(Q)}createDisplayElement(){if(this.displayElement)return;let t=document.createElement("div");Object.assign(t.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"}),t.setAttribute(Q,"\u2022"),t.setAttribute(K,"0"),t.setAttribute(G,"0"),document.body.appendChild(t);let e="string-position-tracker-style";if(!document.getElementById(e)){let i=document.createElement("style");i.id=e,i.innerHTML=`
|
|
24
|
+
[${Q}][${K}][${G}]::before {
|
|
25
|
+
content: attr(${Q}) ' | ' attr(${K}) 'px (' attr(${G}) '%)';
|
|
26
26
|
}
|
|
27
|
-
`,document.head.appendChild(i)}this.displayElement=t}};function nr(c,e){let t=null;return function(...r){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{c.apply(i,r),t=null},e)}}var be=class{constructor(){this.fps=0;this.isAnimationStarted=!1;this.fpsInterval=0;this.then=0;this.requestAnimationId=0;this.onFrameCallback=e=>{};this.animate=()=>{};this.onVisibilityChangeBind=this.onVisibilityChange.bind(this)}onVisibilityChange(){document.hidden?(this.stop(),this.isAnimationStarted=!1):this.start(this.fps)}start(e){this.fps=e,!this.isAnimationStarted&&(this.fpsInterval=1e3/e,this.then=performance.now(),this.isAnimationStarted=!0,e===0?this.animate=()=>{let t=performance.now();this.requestAnimationId=requestAnimationFrame(()=>this.animate()),this.onFrameCallback(t)}:this.animate=()=>{let t=performance.now(),r=t-this.then;r>this.fpsInterval&&(this.then=t-r%this.fpsInterval,this.onFrameCallback(t)),this.requestAnimationId=requestAnimationFrame(()=>this.animate())},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(e){this.onFrameCallback=e}destructor(){this.stop()}};var ye=class extends E{constructor(e){super(e),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(e){e.setProperty("onEnterEvent",this.onEnterObject.bind(this)),e.events.on("enter",e.getProperty("onEnterEvent")),e.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),e.events.on("leave",e.getProperty("onLeaveEvent"));let t=e.htmlElement,r=this.tools.domAttribute.process({element:t,key:"string-started",fallback:null})!==null;t.tagName.toLowerCase()==="video"&&!r&&(t.setAttribute("string-started",""),t.muted=!0,t.setAttribute("muted","muted"),t.setAttribute("playsinline",""),t.setAttribute("loop",""),t.setAttribute("autoplay",""),t.src=e.getProperty("src"),t.load(),t.addEventListener("canplay",()=>{}))}onEnterObject(e){let t=e.htmlElement;this.tryPlay(t)}onLeaveObject(e){e.htmlElement.pause()}tryPlay(e){e.play().catch(t=>console.warn("[StringVideoAutoplay] Autoplay failed:",t))}};var Fe=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(Fe||{}),sr={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var Ee=class Ee extends E{constructor(t){super(t);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=t=>{let r=this.triggerElements.get(t.currentTarget);if(!r)return;let i=this.activeStep.get(r.slider)??0,n=this.getMaxStep(r.slider),s,o;if(r.step==="next"){if(s=i+1,o=1,!this.elementIndex.has(`${r.slider}[${s}]`))if(r.loop&&n>=0)s=0;else return}else if(r.step==="prev"){if(s=i-1,o=-1,s<0)if(r.loop&&n>=0)s=n;else return;if(!this.elementIndex.has(`${r.slider}[${s}]`))return}else{if(s=r.step,i===s)return;o=s>i?1:-1}this.startTransition(r.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 t=document.querySelectorAll("[string-sequence-trigger]:not([string-inited])");for(let r of Array.from(t)){let i=r.getAttribute("string-sequence-trigger"),n=i?this.parseTriggerKey(i):null;n&&(this.triggerElements.set(r,n),r.addEventListener("click",this.onTriggerClick))}}parseGlobalSettingsFromObject(t){let r=n=>t.getProperty(n),i=r("sequence-duration");this.tryParseGlobalSetting(i,"enteringDuration"),this.tryParseGlobalSetting(i,"leavingDuration"),this.tryParseGlobalSetting(r("entering-duration"),"enteringDuration"),this.tryParseGlobalSetting(r("leaving-duration"),"leavingDuration"),this.tryParseGlobalSetting(r("entering-easing"),"enteringEasing"),this.tryParseGlobalSetting(r("leaving-easing"),"leavingEasing"),this.tryParseGlobalSetting(r("active-step"),"activeStep")}tryParseGlobalSetting(t,r){if(!t)return;let i=t.match(/^(.+)\[(.+)\]$/);if(!i)return;let[,n,s]=i,o=this.globalSettings.get(n)??{};this.globalSettings.set(n,o),o[r]=r==="enteringEasing"||r==="leavingEasing"?s:parseFloat(s),this.applyGlobalSettingsToExistingObjects(n)}applyGlobalSettingsToExistingObjects(t){let r=this.globalSettings.get(t);if(r){for(let[i,n]of this.elementIndex)if(this.parseSequenceKey(i)?.slider===t){r.enteringDuration!==void 0&&(n.enteringDuration=r.enteringDuration),r.leavingDuration!==void 0&&(n.leavingDuration=r.leavingDuration);for(let o of n.objects)this.resolveEasings(o,i)}}}initializeSliders(){let t=new Set;for(let r of this.elementIndex.keys()){let i=this.parseSequenceKey(r);i&&t.add(i.slider)}for(let r of t){if(this.activeStep.has(r))continue;let n=this.globalSettings.get(r)?.activeStep??0;this.elementIndex.has(`${r}[${n}]`)||(n=0),this.switchInstant(r,n,1)}}tryApplyPendingActiveStep(t){if(this.activeStep.has(t))return;let r=this.globalSettings.get(t)?.activeStep;r!==void 0&&this.elementIndex.has(`${t}[${r}]`)&&this.switchInstant(t,r,1)}canConnect(t){return t.keys.includes("sequence")||t.keys.includes("sequence-trigger")}onObjectConnected(t){super.onObjectConnected(t),this.parseGlobalSettingsFromObject(t);let r=t.getProperty("sequence"),i=t.getProperty("sequence-trigger");if(!r&&i){let n=this.parseTriggerKey(i);n&&typeof n.step=="number"&&(r=`${n.slider}[${n.step}]`,t.setProperty("sequence",r))}if(r){let n=this.parseSequenceKey(r);if(n){this.ensureStateEventRegistered(n.slider);let s=this.elementIndex.get(r);if(!s){let{enteringDuration:a,leavingDuration:l}=this.resolveDurations(t,r);s={objects:[],enteringDuration:a,leavingDuration:l},this.elementIndex.set(r,s)}s.objects.push(t),this.resolveEasings(t,r);let o=this.activeStep.get(n.slider);this.setState(t,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(t.htmlElement,n),t.htmlElement.addEventListener("click",this.onTriggerClick))}}ensureStateEventRegistered(t){this.stateRegistered.has(t)||(this.stateRegistered.add(t),this.events.registerStateEvent?.(`sequence:active:${t}`))}parseTriggerKey(t){let r=t.match(/^(.+)\[(next|prev|\d+)(\|loop)?\]$/);if(!r)return null;let i=r[2]==="next"||r[2]==="prev"?r[2]:parseInt(r[2],10);return{slider:r[1],step:i,loop:r[3]==="|loop"}}getMaxStep(t){let r=-1;for(let i of this.elementIndex.keys()){let n=this.parseSequenceKey(i);n?.slider===t&&n.step>r&&(r=n.step)}return r}resolveDuration(t,r,i,n){let s=t.getProperty(n),o=t.getProperty("sequence-duration"),a=this.globalSettings.get(r)?.[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(t,r){let i=this.parseSequenceKey(r)?.slider??"";return{enteringDuration:this.resolveDuration(t,i,"enteringDuration","entering-duration"),leavingDuration:this.resolveDuration(t,i,"leavingDuration","leaving-duration")}}resolveEasing(t,r,i,n){let s=t.getProperty(n);(!s||typeof s=="string"&&s.includes("["))&&(s=this.globalSettings.get(r)?.[i]??this.settings.easing??"ease-out"),typeof s=="string"&&t.setProperty(n,this.tools.easingFunction.process({easing:s}))}resolveEasings(t,r){let i=this.parseSequenceKey(r)?.slider;i&&(this.resolveEasing(t,i,"enteringEasing","entering-easing"),this.resolveEasing(t,i,"leavingEasing","leaving-easing"))}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=t.getProperty("sequence");if(r){let i=this.elementIndex.get(r);if(i){let n=i.objects.indexOf(t);n!==-1&&i.objects.splice(n,1),i.objects.length||this.elementIndex.delete(r)}}this.triggerElements.has(t.htmlElement)&&(t.htmlElement.removeEventListener("click",this.onTriggerClick),this.triggerElements.delete(t.htmlElement))}parseSequenceKey(t){let r=t.match(/^(.+)\[(\d+)\]$/);return r?{slider:r[1],step:parseInt(r[2],10)}:null}onSequenceEvent(t){let{slider:r,step:i,transitionProgress:n,direction:s=1,duration:o,instant:a}=t;this.activeStep.get(r)===i&&n===void 0||(n!==void 0?this.handleScrub(r,i,n,s):a?this.switchInstant(r,i,s):this.startTransition(r,i,s,o))}startTransition(t,r,i,n){let s=this.activeStep.get(t),o=this.leavingStep.get(t);this.ensureStateEventRegistered(t),o!==void 0&&o!==s&&this.setStepState(t,o,"-disabled",0,i);let a=this.elementIndex.get(`${t}[${r}]`),l=s!==void 0?this.elementIndex.get(`${t}[${s}]`):null;s!==void 0&&this.leavingStep.set(t,s),this.activeStep.set(t,r),this.emitActiveState(t,r);let u={fromStep:s??r,toStep:r,direction:i,startTime:this.data.time.now,enteringDuration:n??a?.enteringDuration??this.defaultDuration,leavingDuration:n??l?.leavingDuration??this.defaultDuration};this.transitions.set(t,u),this.emitTransitionStart(t,u)}handleScrub(t,r,i,n){this.transitions.delete(t);let s=this.activeStep.get(t);if(s!==r){let a=this.leavingStep.get(t);a!==void 0&&this.setStepState(t,a,"-disabled",0,n),s!==void 0&&this.leavingStep.set(t,s),this.activeStep.set(t,r),this.emitActiveState(t,r)}let o=this.leavingStep.get(t)??s??r;this.applyProgress(t,o,r,i,i,n)}switchInstant(t,r,i){this.transitions.delete(t);let n=this.activeStep.get(t),s=this.leavingStep.get(t);s!==void 0&&this.setStepState(t,s,"-disabled",0,i),n!==void 0&&n!==r&&this.setStepState(t,n,"-disabled",0,i),this.activeStep.set(t,r),this.leavingStep.delete(t),this.setStepState(t,r,"-active",1,i),this.emitActiveState(t,r),s!==void 0&&s!==r?this.emitStepLeave(t,s,i,!0):n!==void 0&&n!==r&&this.emitStepLeave(t,n,i,!0),this.emitStepEnter(t,r,i,!0);let o={fromStep:n??r,toStep:r,direction:i,startTime:this.data.time.now,enteringDuration:0,leavingDuration:0};this.emitTransitionStart(t,o),this.emitTransitionEnd(t,r,n??r,i,!0)}applyProgress(t,r,i,n,s,o){let a=this.activeStep.get(t),l=this.leavingStep.get(t);this.setStepState(t,a,n>=1?"-active":"-entering",n,o),l!==void 0&&l!==a&&(s>=1?(this.setStepState(t,l,"-disabled",0,o),this.leavingStep.delete(t),this.emitStepLeave(t,l,o,!1)):this.setStepState(t,l,"-leaving",s,o)),this.emitTransitionProgress(t,r,i,n,s,o),n>=1&&this.emitStepEnter(t,a,o,!1)}setStepState(t,r,i,n,s){let o=this.elementIndex.get(`${t}[${r}]`);if(o)for(let a of o.objects)this.setState(a,i,n,s)}setState(t,r,i,n){let s=t.htmlElement,o=t.getProperty("_state"),a=t.getProperty("_direction"),l=t.getProperty(r==="-leaving"?"leaving-easing":"entering-easing"),u=typeof l=="function"?l(i):i;o!==r&&(s.classList.remove(...Ee.ALL_STATES),s.classList.add(r),t.setProperty("_state",r)),a!==n&&(t.setProperty("_direction",n),x.run(()=>x.setVars(s,{[sr.DIRECTION]:n.toString()})))}onFrame(t){super.onFrame(t),this.initialized||(this.initialized=!0,this.initializeSliders());for(let[r,i]of this.transitions){let n=t.time.now-i.startTime,s=Math.min(1,n/i.enteringDuration),o=Math.min(1,n/i.leavingDuration);this.applyProgress(r,i.fromStep,i.toStep,s,o,i.direction),s>=1&&o>=1&&(this.emitTransitionEnd(r,i.toStep,i.fromStep,i.direction,!1),this.transitions.delete(r))}}emitTransitionStart(t,r){let i={slider:t,from:r.fromStep,to:r.toStep,direction:r.direction,enteringDuration:r.enteringDuration,leavingDuration:r.leavingDuration,startedAt:r.startTime};this.events.emit("sequence:transition:start",i),this.events.emit(`sequence:transition:start:${t}`,i)}emitTransitionProgress(t,r,i,n,s,o){let a={slider:t,from:r,to:i,entering:n,leaving:s,direction:o};this.events.emit("sequence:transition:progress",a),this.events.emit(`sequence:transition:progress:${t}`,a)}emitTransitionEnd(t,r,i,n,s){let o={slider:t,from:i,to:r,direction:n,instant:s};this.events.emit("sequence:transition:end",o),this.events.emit(`sequence:transition:end:${t}`,o)}emitStepEnter(t,r,i,n){if(!n&&this.lastEnteredStep.get(t)===r)return;this.lastEnteredStep.set(t,r);let s={slider:t,step:r,direction:i,instant:n};this.events.emit("sequence:step:enter",s),this.events.emit(`sequence:step:enter:${t}`,s)}emitStepLeave(t,r,i,n){if(r==null)return;let s={slider:t,step:r,direction:i,instant:n};this.events.emit("sequence:step:leave",s),this.events.emit(`sequence:step:leave:${t}`,s)}emitActiveState(t,r){let i={slider:t,step:r};this.events.emit("sequence:active",i),this.events.emit(`sequence:active:${t}`,i)}};Ee.ALL_STATES=Object.values(Fe);var Se=Ee;var Q=class Q extends E{constructor(e){super(e),this.htmlKey="form"}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i);let n=t.getProperty("form-events")??[];n.forEach(u=>{u.eventElement.removeEventListener(u.eventType,u.eventCallback)}),n.length=0,t.setProperty("form-events",n),super.onObjectConnected(t);let s=t.htmlElement,o=[],a={};this.getInteractiveFields(s).forEach((u,d)=>this.registerField(u,s,o,a,n,d));let l=u=>{u.preventDefault();let d=!0,h={},m=new Set;for(let f of o){let p=f.field;if(!p.isConnected||!this.shouldValidateField(p))continue;if(this.isRadioField(p)){if(m.has(f.key))continue;m.add(f.key)}let{key:v,rules:g,needsContext:S}=f,b=this.getFieldValue(p);h[v]=b,a[v]=b;let{valid:y,errors:M}=this.tools.validation.process({rules:g,value:b,context:this.buildContext(S,v,a)});this.applyValidationState(s,p,v,y,M,"submit"),y||(d=!1)}if(d)this.events.emit(`form:submit:${t.id}`,h);else{let f=new Set,p=o.find(v=>{let g=v.field;if(!g.isConnected||!this.shouldValidateField(g))return!1;if(this.isRadioField(g)){if(f.has(v.key))return!1;f.add(v.key)}let{key:S,rules:b,needsContext:y}=v,M=this.getFieldValue(g);a[S]=M;let{valid:C}=this.tools.validation.process({rules:b,value:M,context:this.buildContext(y,S,a)});return!C});p?.field&&typeof p.field.focus=="function"&&p.field.focus(),this.events.emit(`form:invalid:${t.id}`)}};s.addEventListener("submit",l),n.push({eventElement:s,eventType:"submit",eventCallback:l}),t.setProperty("form-field-entries",o),t.setProperty("form-field-values",a)}onObjectConnected(e){}onDOMMutate(e,t){this.objects.length!==0&&(e.length>0&&this.handleMutationAdditions(e),t.length>0&&this.handleMutationRemovals(t))}applyValidationState(e,t,r,i,n,s){let o=e.querySelector(`[string-input="error[${r}]"]`),a=e.querySelector(`[string-input="group[${r}]"]`);o&&(o.innerHTML="",n.forEach(u=>{let d=document.createElement("span");d.textContent=u,o.appendChild(d)})),s==="live"?(t.classList.toggle("-invalid",!i),t.classList.remove("-error")):(t.classList.remove("-invalid"),t.classList.toggle("-error",!i)),t.classList.toggle("-valid",i),a&&(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}:${r}`,{key:r,field:t,errors:n,phase:s,valid:i})}getInteractiveFields(e){return Array.from(e.querySelectorAll("[string-input]")).filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t)).map(t=>t)}getFieldRules(e){let t=this.tools.domAttribute.process({element:e,key:"input"})??"";return this.tools.ruleParser.process({value:t})}registerField(e,t,r,i,n,s){if(!this.isFormFieldElement(e)||e.closest("form")!==t||r.some(p=>p.field===e))return;let o=this.registerFieldIndex(e,s??r.length),a=this.getInputKey(e,o),l=this.getFieldRules(e),u=this.supportsBeforeInputValidation(l),d=this.requiresContext(l),h=this.getInputEventType(e),m={field:e,key:a,rules:l,supportsRealtime:u,needsContext:d,inputEventType:h,inputHandler:()=>{}},f=p=>{let v=p.currentTarget||p.target;if(!v||!v.isConnected||!this.shouldValidateField(v))return;let g=this.getFieldValue(v);i[m.key]=g;let S=this.buildContext(m.needsContext,m.key,i),{valid:b,errors:y}=this.tools.validation.process({rules:m.rules,value:g,context:S});this.applyValidationState(t,v,m.key,b,y,"live")};if(m.inputHandler=f,e.addEventListener(h,f),n.push({eventElement:e,eventType:h,eventCallback:f}),u&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let p=v=>{let g=v;if(g.isComposing||g.inputType?.startsWith("insertComposition"))return;let S=v.currentTarget||v.target;if(!S||!(S instanceof HTMLInputElement||S instanceof HTMLTextAreaElement)||!S.isConnected)return;let b=S.selectionStart??0,y=S.selectionEnd??0,M=S.value;switch(g.inputType){case"deleteContentBackward":M=b===y&&b>0?S.value.slice(0,b-1)+S.value.slice(y):S.value.slice(0,b)+S.value.slice(y);break;case"deleteContentForward":M=b===y&&b<S.value.length?S.value.slice(0,b)+S.value.slice(b+1):S.value.slice(0,b)+S.value.slice(y);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":M=S.value.slice(0,b)+(g.data||"")+S.value.slice(y);break;default:typeof g.data=="string"&&(M=S.value.slice(0,b)+g.data+S.value.slice(y))}let{errors:C}=this.tools.validation.process({rules:m.rules,value:M,type:"beforeinput",context:this.buildContext(m.needsContext,m.key,i,{applied:!0,value:M})});C.length>0&&v.cancelable&&v.preventDefault()};m.beforeInputHandler=p,e.addEventListener("beforeinput",p),n.push({eventElement:e,eventType:"beforeinput",eventCallback:p})}e.classList.add("-inited"),r.push(m),i[a]=this.getFieldValue(e)}unregisterField(e,t,r,i){let n=t.findIndex(o=>o.field===e);if(n===-1)return;let s=t[n];s.inputHandler&&e.removeEventListener(s.inputEventType,s.inputHandler),s.beforeInputHandler&&e.removeEventListener("beforeinput",s.beforeInputHandler),delete r[s.key],t.splice(n,1);for(let o=i.length-1;o>=0;o--){let a=i[o];a.eventElement===e&&(a.eventCallback===s.inputHandler||s.beforeInputHandler&&a.eventCallback===s.beforeInputHandler)&&i.splice(o,1)}e.classList.remove("-inited")}collectInteractiveFieldsFromNode(e){let t=[];return e instanceof Element?(e.hasAttribute("string-input")&&t.push(e),t.push(...Array.from(e.querySelectorAll("[string-input]")))):e instanceof DocumentFragment&&t.push(...Array.from(e.querySelectorAll("[string-input]"))),t.filter(r=>!this.isServiceFieldAttribute(r.getAttribute("string-input")||"")).filter(r=>this.isFormFieldElement(r))}isRadioField(e){return e instanceof HTMLInputElement&&e.type==="radio"}handleMutationAdditions(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(e){e.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(e){let t=this.objects.find(r=>r.htmlElement instanceof HTMLFormElement&&r.htmlElement.contains(e));return t?this.buildFormState(t):null}getFormStateByReference(e){for(let t of this.objects){let r=t.getProperty("form-field-entries");if(r&&r.some(i=>i.field===e))return this.buildFormState(t,r)}return null}buildFormState(e,t){let r=e.htmlElement;if(!(r instanceof HTMLFormElement))return null;let i=t??e.getProperty("form-field-entries"),n=e.getProperty("form-field-values"),s=e.getProperty("form-events");return!i||!n||!s?null:{object:e,form:r,entries:i,values:n,events:s}}registerFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");return r!==null?Number(r):(e.setAttribute("data-string-form-index",String(t)),t)}getFieldIndex(e,t){let r=e.getAttribute("data-string-form-index");if(r!==null){let i=Number(r);return Number.isNaN(i)?t:i}return this.registerFieldIndex(e,t)}shouldValidateField(e){return!(e.disabled||e instanceof HTMLInputElement&&e.type==="hidden")}supportsBeforeInputValidation(e){return e.some(t=>Q.beforeInputRuleKeys.has(t.key))}requiresContext(e){return e.some(t=>Q.crossFieldRuleKeys.has(t.key))}buildContext(e,t,r,i){if(!e)return{fieldKey:t};let n=!!i?.applied,s=n?{...r,[t]:i.value}:r;return{fieldKey:t,values:s,getValue:o=>n&&o===t?i.value:s[o]}}getInputKey(e,t){return this.tools.domAttribute.process({element:e,key:"id"})||e.getAttribute("name")||e.getAttribute("id")||`input-${t}`}getFieldValue(e){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){if(e.name){let t=e.form||e.closest("form"),r=t?Array.from(t.querySelectorAll(`input[type="checkbox"][name="${e.name}"]:checked`)):[e];return r.length>1?r.map(i=>i.value):r.length===1?r[0].value:""}return e.checked}if(e.type==="radio"){if(e.name){let r=(e.form||e.closest("form"))?.querySelector(`input[type="radio"][name="${e.name}"]:checked`);return r?r.value:""}return e.checked?e.value:""}return e.type==="file"&&e.files&&e.files.length>0?e.multiple?Array.from(e.files):e.files[0]:e.value}return e instanceof HTMLSelectElement?e.multiple?Array.from(e.selectedOptions).map(t=>t.value):e.value:e instanceof HTMLTextAreaElement?e.value:""}isServiceFieldAttribute(e){return Q.serviceAttributePrefixes.some(t=>e.startsWith(`${t}[`))}isFormFieldElement(e){return e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}getInputEventType(e){return e instanceof HTMLSelectElement||e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")?"change":"input"}};Q.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),Q.crossFieldRuleKeys=new Set(["same","different","after","before"]),Q.serviceAttributePrefixes=["error","group"];var Me=Q;var xe=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(e){if(this.map.has(e))return;let t=e.htmlElement,r={cx:0,cy:0,valid:!1,el:t};r.ro=new ResizeObserver(()=>{r.valid=!1}),r.ro.observe(t),this.map.set(e,r),this.all.add(e)}detach(e){let t=this.map.get(e);t&&(t.ro?.disconnect(),this.map.delete(e),this.all.delete(e))}invalidate(e){this.all.forEach(t=>{if(t.id===e){let r=this.map.get(t);r&&(r.valid=!1)}})}invalidateAll(){this.all.forEach(e=>{let t=this.map.get(e);t&&(t.valid=!1)})}getCenter(e){let t=this.map.get(e);if(!t||!t.el)return{cx:0,cy:0};if(!t.valid){let r=t.el.getBoundingClientRect();t.cx=r.left+r.width/2,t.cy=r.top+r.height/2,t.valid=!0}return{cx:t.cx,cy:t.cy}}};var we=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(e){if(this.subs.has(e))return;let t=e.htmlElement,r=()=>this.active.add(e),i=()=>this.active.delete(e);t.addEventListener("pointerenter",r),t.addEventListener("pointerleave",i),this.subs.set(e,{enter:r,leave:i})}untrack(e){let t=this.subs.get(e);if(!t)return;let r=e.htmlElement;t.enter&&r.removeEventListener("pointerenter",t.enter),t.leave&&r.removeEventListener("pointerleave",t.leave),this.active.delete(e),this.subs.delete(e)}isActive(e){return this.active.has(e)}activeObjects(){return Array.from(this.active)}};var Te=class extends E{constructor(e){super(e),this.htmlKey="scroller"}onObjectConnected(e){let t=e.getProperty("scroller-inited");if(t==null||t==""){e.setProperty("scroller-inited","inited");let r=i=>{this.events.emit("wheel",i)};e.setProperty("scroller-wheel-event",r),e.htmlElement.addEventListener("wheel",r)}}onObjectDisconnected(e){e.setProperty("scroller-inited",""),e.htmlElement.removeEventListener("wheel",e.getProperty("scroller-wheel-event"))}};function or(c){let e=c.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return e?{id:e[1],start:parseFloat(e[2]),end:parseFloat(e[3])}:null}function Or(c,e,t,r,i){return r+(i-r)*(c-e)/(t-e)}var Pe=class extends E{constructor(e){super(e),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(e){let t=e.getProperty("part-of"),r=or(t);if(r){e.setProperty("part-of-id",r.id),e.setProperty("start",r.start),e.setProperty("end",r.end);let i=n=>{if(r){let s=Or(n,r?.start,r?.end,0,1),o=Math.max(0,Math.min(1,s));e.htmlElement.style.setProperty("--progress-slice",o.toString()),this.events.emit(`object:progress-slice:${e.id}`,o)}};e.setProperty("progress-event",i),this.events.on(`object:progress:${r.id}`,i)}}onObjectDisconnected(e){let t=e.getProperty("part-of-id");t&&this.events.off(`object:progress:${t}`,e.getProperty("progress-event"))}};var Ir=(c,e)=>{let t=Math.min(c,e),r=Math.max(c,e);return t+Math.random()*(r-t)},Dr=(c,e)=>{let t=Math.ceil(Math.min(c,e)),r=Math.floor(Math.max(c,e));return r<t?t:Math.floor(Math.random()*(r-t+1))+t},Ar=c=>{if(Array.isArray(c)&&c.length>=2){let e=Number(c[0]),t=Number(c[1]);if(Number.isFinite(e)&&Number.isFinite(t))return[e,t]}return typeof c=="number"&&Number.isFinite(c)?[0,c]:[0,1]},Ce=class extends E{constructor(e){super(e),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(e){let t=e.htmlElement,r=Ar(e.getProperty("random-number")),n=String(e.getProperty("random-type")??"float").toLowerCase()==="int"?Dr(r[0],r[1]):Ir(r[0],r[1]);x.run(()=>{x.setVars(t,{"--random":n})})}};var He=class c{constructor(){this.pendingScroll=!1;this.lastScrollEmitted=NaN;this.prevWidth=0;this.prevHeight=0;this.loop=new be;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=nr(this.onResize,30);this.root=document.body,this.window=window,this.tools=new Yt,this.data=new ut,this.eventManager=new it,this.moduleManager=new It(this.data),this.objectManager=new kt(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new xe,this.hoverManager=new we,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new Ot(1,this.context),this.scrollManager=new Nt(this.context),this.setupSettings({"global-class":!1,"offset-top":"0%","offset-bottom":"0%",key:"--progress","inview-top":"0%","inview-bottom":"0%","enter-el":"top","enter-vp":"bottom","exit-el":"bottom","exit-vp":"top","parallax-bias":"0.0",parallax:"0.2",lerp:"0.2","cursor-lerp":"0.75",radius:"150",strength:"0.3",glide:"1",anchor:"center center",timeout:900,alignment:"center","target-disable":"false","target-style-disable":"false","target-class":"",active:"false",fixed:"false",repeat:"false","self-disable":"false",abs:"false",easing:"cubic-bezier(0.25, 0.25, 0.25, 0.25)","glide-base-velocity":.00125,"glide-reduce-velocity":625e-7,"glide-negative-velocity":-1e-4,"position-strength":3,"position-tension":.05,"position-friction":.15,"position-max-velocity":10,"position-update-threshold":.1,"rotation-strength":.75,"rotation-tension":.06,"rotation-friction":.18,"rotation-max-angular-velocity":6,"rotation-max-angle":18,"rotation-update-threshold":.15,"max-offset":220,"sleep-epsilon":.01,"continuous-push":!0}),this.onContainerTransitionEndBind=this.onContainerTransitionEnd.bind(this),this.onResizeObserverBind=this.onResizeObserverEvent.bind(this),this.observerContainerResize=new ResizeObserver(this.onResizeObserverBind),this.observerContainerResize.observe(this.context.data.scroll.container),this.onWheelBind=this.onWheelEvent.bind(this),this.onScrollBind=this.onScrollEvent.bind(this),this.onResizeBind=this.onResize.bind(this),this.onMouseMoveBind=this.onMouseMoveEvent.bind(this),this.onScrollStartBind=this.onScrollStart.bind(this),this.onScrollStopBind=this.onScrollStop.bind(this),this.onDirectionChangeBind=this.onDirectionChange.bind(this),this.onScrollToBind=this.scrollTo.bind(this),this.eventManager.on("wheel",this.onWheelBind),this.eventManager.on("resize",this.onResizeBind),this.eventManager.on("scrollTo",this.onScrollToBind),this.scrollManager.bindEvents({onScrollStart:this.onScrollStartBind,onScrollStop:this.onScrollStopBind,onDirectionChange:this.onDirectionChangeBind}),this.loop.setOnFrame(e=>{this.data.time.delta=e-this.data.time.now,this.data.time.previous=this.data.time.now,this.data.time.now=e,this.data.time.elapsed+=this.data.time.delta,this.onUpdateEvent()}),this.on("image:load:all",()=>{this.onResize()}),this.scrollContainer=window}set scrollPosition(e){this.data.scroll.current=e,this.data.scroll.target=e,this.data.scroll.transformedCurrent=this.data.scroll.current*this.data.viewport.transformScale,this.data.scroll.delta=0,this.data.scroll.lerped=0,this.scrollManager.updatePosition(),this.moduleManager.onScroll(),this.objectManager.checkInview()}set scrollContainer(e){this.observerContainerResize?.unobserve(this.context.data.scroll.container),this.data.scroll.elementContainer.removeEventListener("transitionend",this.onContainerTransitionEndBind),e instanceof Window?(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e):e instanceof HTMLElement?(this.data.scroll.container=e,this.data.scroll.elementContainer=e,this.data.scroll.scrollContainer=e):(this.data.scroll.container=document.body,this.data.scroll.elementContainer=document.documentElement,this.data.scroll.scrollContainer=e),this.data.scroll.elementContainer.addEventListener("transitionend",this.onContainerTransitionEndBind),this.observerContainerResize?.observe(this.context.data.scroll.container),this.debouncedResize()}get scrollPosition(){return this.data.scroll.current}get scrollHeight(){return this.data.viewport.contentHeight}get containerHeight(){return this.data.viewport.windowHeight}set speed(e){this.data.scroll.speed=e}set speedAccelerate(e){this.data.scroll.speedAccelerate=.1+(.5-.1)*e}set scrollDesktopMode(e){this.scrollManager.setDesktopMode(e)}set scrollMobileMode(e){this.scrollManager.setMobileMode(e)}set FPSTrackerVisible(e){this.data.system.fpsTracker=e,this.eventManager.emit("tracker:fps:visible",e)}set PositionTrackerVisible(e){this.data.system.positionTracker=e,this.eventManager.emit("tracker:position:visible",e)}set domBatcherEnabled(e){this.objectManager.setDOMBatcherEnabled(e)}set intersectionObserverEnabled(e){this.objectManager.setIntersectionObserverEnabled(e)}static getInstance(){return c.i||(c.i=new c),c.i}reuse(e){return this.moduleManager.find(e)}use(e,t=null){let r={...this.context.settings,...t},i=new e({events:this.eventManager,data:this.data,tools:this.tools,settings:r,centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager});this.moduleManager.register(i)}registerScrollMode(e,t){let r;if(t.prototype&&t.prototype.onFrame){let i=t;r=new i(this.context)}else r=t(this.context);this.scrollManager.registerMode(e,r)}on(e,t,r=""){this.eventManager.on(e,t,r)}emit(e,t){this.eventManager.emit(e,t)}off(e,t,r=""){this.eventManager.off(e,t,r)}addScrollMark(e){this.scrollManager.addScrollMark(e)}removeScrollMark(e){this.scrollManager.removeScrollMark(e)}start(e){this.data.scroll.scrollContainer?.addEventListener("scroll",this.onScrollBind),this.data.scroll.container?.addEventListener("wheel",this.onWheelBind,{passive:!1}),window.addEventListener("resize",this.onResizeBind),this.root.addEventListener("mousemove",this.onMouseMoveBind);let t=new MutationObserver((s,o)=>{for(let a of s)a.type==="attributes"&&(a.attributeName==="style"||a.attributeName==="class")&&this.onResize()}),r={attributes:!0,attributeFilter:["style","class"]};t.observe(this.context.data.scroll.container,r),this.use(re);let i=window.getComputedStyle(document.documentElement).fontSize,n=parseFloat(i);this.context.data.viewport.baseRem=n,document.documentElement.classList.add("-string"),this.moduleManager.onInit(),this.onResize(),this.initObjects(),this.objectManager.observeDOM(),this.loop.start(e),this.eventManager.emit("start",null)}initObjects(){document.querySelectorAll("[string],[data-string]").forEach(e=>{this.objectManager.add(e)}),document.querySelectorAll("[string-copy-from],[data-string-copy-from]").forEach(e=>{let t=this.tools.domAttribute.process({element:e,key:"copy-from",fallback:""});t&&t.length>0&&this.objectManager.linkMirror(t,e)}),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame()}setupSettings(e){this.context.settings={...this.context.settings,...e},this.onSettingsChange({isDesktop:this.data.viewport.windowWidth>1024,widthChanged:!0,heightChanged:!0,scrollHeightChanged:!0,isForceRebuild:!1})}onResizeObserverEvent(){this.debouncedResize()}onContainerTransitionEnd(e){e.target===this.context.data.scroll.container&&(this.onResize(),this.moduleManager.onResize(),this.moduleManager.onScroll(),this.moduleManager.onFrame())}onMouseMoveEvent(e){this.cursorController.onMouseMove(e),this.moduleManager.onMouseMove(e),H.measure(()=>{this.moduleManager.onMouseMoveMeasure()})}onWheelEvent(e){e.target.closest("[string-isolation],[data-string-isolation]")==null&&(this.scrollManager.get().onWheel(e),this.moduleManager.onWheel(e))}onScrollStart(){this.moduleManager.onScrollStart(),this.eventManager.emit("scroll:start",null)}onScrollStop(){this.moduleManager.onScrollStop(),this.eventManager.emit("scroll:stop",null)}onDirectionChange(){this.moduleManager.onDirectionChange()}onSettingsChange(e){this.cursorController.onSettingsChange(e),this.objectManager.onSettingsChange(e),this.moduleManager.onSettingsChange(e)}onScrollEvent(e){return e.preventDefault(),this.context.centers.invalidateAll(),this.scrollManager.get().onScroll(e),this.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),H.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),H.mutate(()=>{x.begin(),this.moduleManager.onMutate(),x.commit()}),this.eventManager.emit("update",null)}onResize(e=!1){if(this.canRebuild==!1)return;let t=this.data.scroll.container,r=this.context.data.scroll,i=0,n=0;var s,o=0;let a=t.getBoundingClientRect();t.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),o=a.top,s=r.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(t).transform});this.context.data.viewport.transformScale=window.getComputedStyle(t).scale=="none"?l:Number(window.getComputedStyle(t).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let u=i>1024,d=this.prevWidth!==i,h=this.prevHeight!==n,m=this.context.data.viewport.contentHeight!==s,f=d||u&&h||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 p=window.getComputedStyle(document.documentElement).fontSize,v=parseFloat(p);this.context.data.viewport.baseRem=v*l,r.bottomPosition=this.context.data.viewport.contentHeight-n,(d||typeof e=="boolean"&&e)&&this.moduleManager.onResizeWidth(),(f||typeof e=="boolean"&&e)&&(this.moduleManager.onResize(),this.scrollManager&&this.scrollManager.updateResponsiveMode()),this.objectManager.checkInview()}invalidateCenter(e){this.objectManager.all.get(e)&&this.centers.invalidate(e)}scrollTo(e){this.scrollManager.get().scrollTo(e)}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)}};0&&(module.exports={CursorReactiveModule,DOMBatcher,ScrollController,StringAnchor,StringCursor,StringData,StringDelayLerpTracker,StringFPSTracker,StringForm,StringGlide,StringImpulse,StringLazy,StringLerp,StringLerpTracker,StringLoading,StringMagnetic,StringMasonry,StringModule,StringObject,StringParallax,StringPositionTracker,StringProgress,StringProgressPart,StringRandom,StringResponsive,StringScrollbar,StringScroller,StringSequence,StringSplit,StringSpotlight,StringTune,StringVideoAutoplay,frameDOM,styleTxn});
|
|
27
|
+
`,document.head.appendChild(i)}this.displayElement=t}};function ar(u,r){let t=null;return function(...e){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{u.apply(i,e),t=null},r)}}var ye=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 t=performance.now();this.requestAnimationId=requestAnimationFrame(this.animate),this.onFrameCallback(t)}:this.animate=()=>{let t=performance.now(),e=t-this.then;e>this.fpsInterval&&(this.then=t-e%this.fpsInterval,this.onFrameCallback(t)),this.requestAnimationId=requestAnimationFrame(this.animate)},this.animate())}stop(){this.isAnimationStarted&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=0,this.isAnimationStarted=!1)}setOnFrame(r){this.onFrameCallback=r}destructor(){this.stop()}};var Se=class extends E{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 t=r.htmlElement,e=this.tools.domAttribute.process({element:t,key:"string-started",fallback:null})!==null;t.tagName.toLowerCase()==="video"&&!e&&(t.setAttribute("string-started",""),t.muted=!0,t.setAttribute("muted","muted"),t.setAttribute("playsinline",""),t.setAttribute("loop",""),t.setAttribute("autoplay",""),t.src=r.getProperty("src"),t.load(),t.addEventListener("canplay",()=>{}))}onEnterObject(r){let t=r.htmlElement;this.tryPlay(t)}onLeaveObject(r){r.htmlElement.pause()}tryPlay(r){r.play().catch(t=>console.warn("[StringVideoAutoplay] Autoplay failed:",t))}};var Ne=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(Ne||{}),lr={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var Ee=class Ee extends E{constructor(t){super(t);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=t=>{let e=this.triggerElements.get(t.currentTarget);if(!e)return;let i=this.activeStep.get(e.slider)??0,n=this.getMaxStep(e.slider),s,o;if(e.step==="next"){if(s=i+1,o=1,!this.elementIndex.has(`${e.slider}[${s}]`))if(e.loop&&n>=0)s=0;else return}else if(e.step==="prev"){if(s=i-1,o=-1,s<0)if(e.loop&&n>=0)s=n;else return;if(!this.elementIndex.has(`${e.slider}[${s}]`))return}else{if(s=e.step,i===s)return;o=s>i?1:-1}this.startTransition(e.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 t=document.querySelectorAll("[string-sequence-trigger]:not([string-inited])");for(let e of Array.from(t)){let i=e.getAttribute("string-sequence-trigger"),n=i?this.parseTriggerKey(i):null;n&&(this.triggerElements.set(e,n),e.addEventListener("click",this.onTriggerClick))}}parseGlobalSettingsFromObject(t){let e=n=>t.getProperty(n),i=e("sequence-duration");this.tryParseGlobalSetting(i,"enteringDuration"),this.tryParseGlobalSetting(i,"leavingDuration"),this.tryParseGlobalSetting(e("entering-duration"),"enteringDuration"),this.tryParseGlobalSetting(e("leaving-duration"),"leavingDuration"),this.tryParseGlobalSetting(e("entering-easing"),"enteringEasing"),this.tryParseGlobalSetting(e("leaving-easing"),"leavingEasing"),this.tryParseGlobalSetting(e("active-step"),"activeStep")}tryParseGlobalSetting(t,e){if(!t)return;let i=t.match(/^(.+)\[(.+)\]$/);if(!i)return;let[,n,s]=i,o=this.globalSettings.get(n)??{};this.globalSettings.set(n,o),o[e]=e==="enteringEasing"||e==="leavingEasing"?s:parseFloat(s),this.applyGlobalSettingsToExistingObjects(n)}applyGlobalSettingsToExistingObjects(t){let e=this.globalSettings.get(t);if(e){for(let[i,n]of this.elementIndex)if(this.parseSequenceKey(i)?.slider===t){e.enteringDuration!==void 0&&(n.enteringDuration=e.enteringDuration),e.leavingDuration!==void 0&&(n.leavingDuration=e.leavingDuration);for(let o of n.objects)this.resolveEasings(o,i)}}}initializeSliders(){let t=new Set;for(let e of this.elementIndex.keys()){let i=this.parseSequenceKey(e);i&&t.add(i.slider)}for(let e of t){if(this.activeStep.has(e))continue;let n=this.globalSettings.get(e)?.activeStep??0;this.elementIndex.has(`${e}[${n}]`)||(n=0),this.switchInstant(e,n,1)}}tryApplyPendingActiveStep(t){if(this.activeStep.has(t))return;let e=this.globalSettings.get(t)?.activeStep;e!==void 0&&this.elementIndex.has(`${t}[${e}]`)&&this.switchInstant(t,e,1)}canConnect(t){return t.keys.includes("sequence")||t.keys.includes("sequence-trigger")}onObjectConnected(t){super.onObjectConnected(t),this.parseGlobalSettingsFromObject(t);let e=t.getProperty("sequence"),i=t.getProperty("sequence-trigger");if(!e&&i){let n=this.parseTriggerKey(i);n&&typeof n.step=="number"&&(e=`${n.slider}[${n.step}]`,t.setProperty("sequence",e))}if(e){let n=this.parseSequenceKey(e);if(n){this.ensureStateEventRegistered(n.slider);let s=this.elementIndex.get(e);if(!s){let{enteringDuration:a,leavingDuration:l}=this.resolveDurations(t,e);s={objects:[],enteringDuration:a,leavingDuration:l},this.elementIndex.set(e,s)}s.objects.push(t),this.resolveEasings(t,e);let o=this.activeStep.get(n.slider);this.setState(t,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(t.htmlElement,n),t.htmlElement.addEventListener("click",this.onTriggerClick))}}ensureStateEventRegistered(t){this.stateRegistered.has(t)||(this.stateRegistered.add(t),this.events.registerStateEvent?.(`sequence:active:${t}`))}parseTriggerKey(t){let e=t.match(/^(.+)\[(next|prev|\d+)(\|loop)?\]$/);if(!e)return null;let i=e[2]==="next"||e[2]==="prev"?e[2]:parseInt(e[2],10);return{slider:e[1],step:i,loop:e[3]==="|loop"}}getMaxStep(t){let e=-1;for(let i of this.elementIndex.keys()){let n=this.parseSequenceKey(i);n?.slider===t&&n.step>e&&(e=n.step)}return e}resolveDuration(t,e,i,n){let s=t.getProperty(n),o=t.getProperty("sequence-duration"),a=this.globalSettings.get(e)?.[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(t,e){let i=this.parseSequenceKey(e)?.slider??"";return{enteringDuration:this.resolveDuration(t,i,"enteringDuration","entering-duration"),leavingDuration:this.resolveDuration(t,i,"leavingDuration","leaving-duration")}}resolveEasing(t,e,i,n){let s=t.getProperty(n);(!s||typeof s=="string"&&s.includes("["))&&(s=this.globalSettings.get(e)?.[i]??this.settings.easing??"ease-out"),typeof s=="string"&&t.setProperty(n,this.tools.easingFunction.process({easing:s}))}resolveEasings(t,e){let i=this.parseSequenceKey(e)?.slider;i&&(this.resolveEasing(t,i,"enteringEasing","entering-easing"),this.resolveEasing(t,i,"leavingEasing","leaving-easing"))}onObjectDisconnected(t){super.onObjectDisconnected(t);let e=t.getProperty("sequence");if(e){let i=this.elementIndex.get(e);if(i){let n=i.objects.indexOf(t);n!==-1&&i.objects.splice(n,1),i.objects.length||this.elementIndex.delete(e)}}this.triggerElements.has(t.htmlElement)&&(t.htmlElement.removeEventListener("click",this.onTriggerClick),this.triggerElements.delete(t.htmlElement))}parseSequenceKey(t){let e=t.match(/^(.+)\[(\d+)\]$/);return e?{slider:e[1],step:parseInt(e[2],10)}:null}onSequenceEvent(t){let{slider:e,step:i,transitionProgress:n,direction:s=1,duration:o,instant:a}=t;this.activeStep.get(e)===i&&n===void 0||(n!==void 0?this.handleScrub(e,i,n,s):a?this.switchInstant(e,i,s):this.startTransition(e,i,s,o))}startTransition(t,e,i,n){let s=this.activeStep.get(t),o=this.leavingStep.get(t);this.ensureStateEventRegistered(t),o!==void 0&&o!==s&&this.setStepState(t,o,"-disabled",0,i);let a=this.elementIndex.get(`${t}[${e}]`),l=s!==void 0?this.elementIndex.get(`${t}[${s}]`):null;s!==void 0&&this.leavingStep.set(t,s),this.activeStep.set(t,e),this.emitActiveState(t,e);let c={fromStep:s??e,toStep:e,direction:i,startTime:this.data.time.now,enteringDuration:n??a?.enteringDuration??this.defaultDuration,leavingDuration:n??l?.leavingDuration??this.defaultDuration};this.transitions.set(t,c),this.emitTransitionStart(t,c)}handleScrub(t,e,i,n){this.transitions.delete(t);let s=this.activeStep.get(t);if(s!==e){let a=this.leavingStep.get(t);a!==void 0&&this.setStepState(t,a,"-disabled",0,n),s!==void 0&&this.leavingStep.set(t,s),this.activeStep.set(t,e),this.emitActiveState(t,e)}let o=this.leavingStep.get(t)??s??e;this.applyProgress(t,o,e,i,i,n)}switchInstant(t,e,i){this.transitions.delete(t);let n=this.activeStep.get(t),s=this.leavingStep.get(t);s!==void 0&&this.setStepState(t,s,"-disabled",0,i),n!==void 0&&n!==e&&this.setStepState(t,n,"-disabled",0,i),this.activeStep.set(t,e),this.leavingStep.delete(t),this.setStepState(t,e,"-active",1,i),this.emitActiveState(t,e),s!==void 0&&s!==e?this.emitStepLeave(t,s,i,!0):n!==void 0&&n!==e&&this.emitStepLeave(t,n,i,!0),this.emitStepEnter(t,e,i,!0);let o={fromStep:n??e,toStep:e,direction:i,startTime:this.data.time.now,enteringDuration:0,leavingDuration:0};this.emitTransitionStart(t,o),this.emitTransitionEnd(t,e,n??e,i,!0)}applyProgress(t,e,i,n,s,o){let a=this.activeStep.get(t),l=this.leavingStep.get(t);this.setStepState(t,a,n>=1?"-active":"-entering",n,o),l!==void 0&&l!==a&&(s>=1?(this.setStepState(t,l,"-disabled",0,o),this.leavingStep.delete(t),this.emitStepLeave(t,l,o,!1)):this.setStepState(t,l,"-leaving",s,o)),this.emitTransitionProgress(t,e,i,n,s,o),n>=1&&this.emitStepEnter(t,a,o,!1)}setStepState(t,e,i,n,s){let o=this.elementIndex.get(`${t}[${e}]`);if(o)for(let a of o.objects)this.setState(a,i,n,s)}setState(t,e,i,n){let s=t.htmlElement,o=t.getProperty("_state"),a=t.getProperty("_direction"),l=t.getProperty(e==="-leaving"?"leaving-easing":"entering-easing"),c=typeof l=="function"?l(i):i;o!==e&&(s.classList.remove(...Ee.ALL_STATES),s.classList.add(e),t.setProperty("_state",e)),a!==n&&(t.setProperty("_direction",n),M.run(()=>M.setVars(s,{[lr.DIRECTION]:n.toString()})))}onFrame(t){super.onFrame(t),this.initialized||(this.initialized=!0,this.initializeSliders());for(let[e,i]of this.transitions){let n=t.time.now-i.startTime,s=Math.min(1,n/i.enteringDuration),o=Math.min(1,n/i.leavingDuration);this.applyProgress(e,i.fromStep,i.toStep,s,o,i.direction),s>=1&&o>=1&&(this.emitTransitionEnd(e,i.toStep,i.fromStep,i.direction,!1),this.transitions.delete(e))}}emitTransitionStart(t,e){let i={slider:t,from:e.fromStep,to:e.toStep,direction:e.direction,enteringDuration:e.enteringDuration,leavingDuration:e.leavingDuration,startedAt:e.startTime};this.events.emit("sequence:transition:start",i),this.events.emit(`sequence:transition:start:${t}`,i)}emitTransitionProgress(t,e,i,n,s,o){let a={slider:t,from:e,to:i,entering:n,leaving:s,direction:o};this.events.emit("sequence:transition:progress",a),this.events.emit(`sequence:transition:progress:${t}`,a)}emitTransitionEnd(t,e,i,n,s){let o={slider:t,from:i,to:e,direction:n,instant:s};this.events.emit("sequence:transition:end",o),this.events.emit(`sequence:transition:end:${t}`,o)}emitStepEnter(t,e,i,n){if(!n&&this.lastEnteredStep.get(t)===e)return;this.lastEnteredStep.set(t,e);let s={slider:t,step:e,direction:i,instant:n};this.events.emit("sequence:step:enter",s),this.events.emit(`sequence:step:enter:${t}`,s)}emitStepLeave(t,e,i,n){if(e==null)return;let s={slider:t,step:e,direction:i,instant:n};this.events.emit("sequence:step:leave",s),this.events.emit(`sequence:step:leave:${t}`,s)}emitActiveState(t,e){let i={slider:t,step:e};this.events.emit("sequence:active",i),this.events.emit(`sequence:active:${t}`,i)}};Ee.ALL_STATES=Object.values(Ne);var Me=Ee;var Z=class Z extends E{constructor(r){super(r),this.htmlKey="form"}initializeObject(r,t,e,i){super.initializeObject(r,t,e,i);let n=t.getProperty("form-events")??[];n.forEach(c=>{c.eventElement.removeEventListener(c.eventType,c.eventCallback)}),n.length=0,t.setProperty("form-events",n),super.onObjectConnected(t);let s=t.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:f,rules:g,needsContext:S}=b,v=this.getFieldValue(m);h[f]=v,a[f]=v;let{valid:y,errors:x}=this.tools.validation.process({rules:g,value:v,context:this.buildContext(S,f,a)});this.applyValidationState(s,m,f,y,x,"submit"),y||(d=!1)}if(d)this.events.emit(`form:submit:${t.id}`,h);else{let b=new Set,m=o.find(f=>{let g=f.field;if(!g.isConnected||!this.shouldValidateField(g))return!1;if(this.isRadioField(g)){if(b.has(f.key))return!1;b.add(f.key)}let{key:S,rules:v,needsContext:y}=f,x=this.getFieldValue(g);a[S]=x;let{valid:P}=this.tools.validation.process({rules:v,value:x,context:this.buildContext(y,S,a)});return!P});m?.field&&typeof m.field.focus=="function"&&m.field.focus(),this.events.emit(`form:invalid:${t.id}`)}};s.addEventListener("submit",l),n.push({eventElement:s,eventType:"submit",eventCallback:l}),t.setProperty("form-field-entries",o),t.setProperty("form-field-values",a)}onObjectConnected(r){}onDOMMutate(r,t){this.objects.length!==0&&(r.length>0&&this.handleMutationAdditions(r),t.length>0&&this.handleMutationRemovals(t))}applyValidationState(r,t,e,i,n,s){let o=r.querySelector(`[string-input="error[${e}]"]`),a=r.querySelector(`[string-input="group[${e}]"]`);o&&(o.innerHTML="",n.forEach(c=>{let d=document.createElement("span");d.textContent=c,o.appendChild(d)})),s==="live"?(t.classList.toggle("-invalid",!i),t.classList.remove("-error")):(t.classList.remove("-invalid"),t.classList.toggle("-error",!i)),t.classList.toggle("-valid",i),a&&(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}:${e}`,{key:e,field:t,errors:n,phase:s,valid:i})}getInteractiveFields(r){return Array.from(r.querySelectorAll("[string-input]")).filter(t=>!this.isServiceFieldAttribute(t.getAttribute("string-input")||"")).filter(t=>this.isFormFieldElement(t)).map(t=>t)}getFieldRules(r){let t=this.tools.domAttribute.process({element:r,key:"input"})??"";return this.tools.ruleParser.process({value:t})}registerField(r,t,e,i,n,s){if(!this.isFormFieldElement(r)||r.closest("form")!==t||e.some(m=>m.field===r))return;let o=this.registerFieldIndex(r,s??e.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 f=m.currentTarget||m.target;if(!f||!f.isConnected||!this.shouldValidateField(f))return;let g=this.getFieldValue(f);i[p.key]=g;let S=this.buildContext(p.needsContext,p.key,i),{valid:v,errors:y}=this.tools.validation.process({rules:p.rules,value:g,context:S});this.applyValidationState(t,f,p.key,v,y,"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=f=>{let g=f;if(g.isComposing||g.inputType?.startsWith("insertComposition"))return;let S=f.currentTarget||f.target;if(!S||!(S instanceof HTMLInputElement||S instanceof HTMLTextAreaElement)||!S.isConnected)return;let v=S.selectionStart??0,y=S.selectionEnd??0,x=S.value;switch(g.inputType){case"deleteContentBackward":x=v===y&&v>0?S.value.slice(0,v-1)+S.value.slice(y):S.value.slice(0,v)+S.value.slice(y);break;case"deleteContentForward":x=v===y&&v<S.value.length?S.value.slice(0,v)+S.value.slice(v+1):S.value.slice(0,v)+S.value.slice(y);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":x=S.value.slice(0,v)+(g.data||"")+S.value.slice(y);break;default:typeof g.data=="string"&&(x=S.value.slice(0,v)+g.data+S.value.slice(y))}let{errors:P}=this.tools.validation.process({rules:p.rules,value:x,type:"beforeinput",context:this.buildContext(p.needsContext,p.key,i,{applied:!0,value:x})});P.length>0&&f.cancelable&&f.preventDefault()};p.beforeInputHandler=m,r.addEventListener("beforeinput",m),n.push({eventElement:r,eventType:"beforeinput",eventCallback:m})}r.classList.add("-inited"),e.push(p),i[a]=this.getFieldValue(r)}unregisterField(r,t,e,i){let n=t.findIndex(o=>o.field===r);if(n===-1)return;let s=t[n];s.inputHandler&&r.removeEventListener(s.inputEventType,s.inputHandler),s.beforeInputHandler&&r.removeEventListener("beforeinput",s.beforeInputHandler),delete e[s.key],t.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 t=[];return r instanceof Element?(r.hasAttribute("string-input")&&t.push(r),t.push(...Array.from(r.querySelectorAll("[string-input]")))):r instanceof DocumentFragment&&t.push(...Array.from(r.querySelectorAll("[string-input]"))),t.filter(e=>!this.isServiceFieldAttribute(e.getAttribute("string-input")||"")).filter(e=>this.isFormFieldElement(e))}isRadioField(r){return r instanceof HTMLInputElement&&r.type==="radio"}handleMutationAdditions(r){r.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByContainment(i);n&&this.registerField(i,n.form,n.entries,n.values,n.events)})})}handleMutationRemovals(r){r.forEach(t=>{this.collectInteractiveFieldsFromNode(t).forEach(i=>{let n=this.getFormStateByReference(i);n&&this.unregisterField(i,n.entries,n.values,n.events)})})}getFormStateByContainment(r){let t=this.objects.find(e=>e.htmlElement instanceof HTMLFormElement&&e.htmlElement.contains(r));return t?this.buildFormState(t):null}getFormStateByReference(r){for(let t of this.objects){let e=t.getProperty("form-field-entries");if(e&&e.some(i=>i.field===r))return this.buildFormState(t,e)}return null}buildFormState(r,t){let e=r.htmlElement;if(!(e instanceof HTMLFormElement))return null;let i=t??r.getProperty("form-field-entries"),n=r.getProperty("form-field-values"),s=r.getProperty("form-events");return!i||!n||!s?null:{object:r,form:e,entries:i,values:n,events:s}}registerFieldIndex(r,t){let e=r.getAttribute("data-string-form-index");return e!==null?Number(e):(r.setAttribute("data-string-form-index",String(t)),t)}getFieldIndex(r,t){let e=r.getAttribute("data-string-form-index");if(e!==null){let i=Number(e);return Number.isNaN(i)?t:i}return this.registerFieldIndex(r,t)}shouldValidateField(r){return!(r.disabled||r instanceof HTMLInputElement&&r.type==="hidden")}supportsBeforeInputValidation(r){return r.some(t=>Z.beforeInputRuleKeys.has(t.key))}requiresContext(r){return r.some(t=>Z.crossFieldRuleKeys.has(t.key))}buildContext(r,t,e,i){if(!r)return{fieldKey:t};let n=!!i?.applied,s=n?{...e,[t]:i.value}:e;return{fieldKey:t,values:s,getValue:o=>n&&o===t?i.value:s[o]}}getInputKey(r,t){return this.tools.domAttribute.process({element:r,key:"id"})||r.getAttribute("name")||r.getAttribute("id")||`input-${t}`}getFieldValue(r){if(r instanceof HTMLInputElement){if(r.type==="checkbox"){if(r.name){let t=r.form||r.closest("form"),e=t?Array.from(t.querySelectorAll(`input[type="checkbox"][name="${r.name}"]:checked`)):[r];return e.length>1?e.map(i=>i.value):e.length===1?e[0].value:""}return r.checked}if(r.type==="radio"){if(r.name){let e=(r.form||r.closest("form"))?.querySelector(`input[type="radio"][name="${r.name}"]:checked`);return e?e.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(t=>t.value):r.value:r instanceof HTMLTextAreaElement?r.value:""}isServiceFieldAttribute(r){return Z.serviceAttributePrefixes.some(t=>r.startsWith(`${t}[`))}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"}};Z.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),Z.crossFieldRuleKeys=new Set(["same","different","after","before"]),Z.serviceAttributePrefixes=["error","group"];var xe=Z;var we=class{constructor(){this.map=new WeakMap;this.all=new Set}attach(r){if(this.map.has(r))return;let t=r.htmlElement,e={cx:0,cy:0,valid:!1,el:t};e.ro=new ResizeObserver(()=>{e.valid=!1}),e.ro.observe(t),this.map.set(r,e),this.all.add(r)}detach(r){let t=this.map.get(r);t&&(t.ro?.disconnect(),this.map.delete(r),this.all.delete(r))}invalidate(r){this.all.forEach(t=>{if(t.id===r){let e=this.map.get(t);e&&(e.valid=!1)}})}invalidateAll(){this.all.forEach(r=>{let t=this.map.get(r);t&&(t.valid=!1)})}getCenter(r){let t=this.map.get(r);if(!t||!t.el)return{cx:0,cy:0};if(!t.valid){let e=t.el.getBoundingClientRect();t.cx=e.left+e.width/2,t.cy=e.top+e.height/2,t.valid=!0}return{cx:t.cx,cy:t.cy}}};var Te=class{constructor(){this.active=new Set;this.subs=new WeakMap}track(r){if(this.subs.has(r))return;let t=r.htmlElement,e=()=>this.active.add(r),i=()=>this.active.delete(r);t.addEventListener("pointerenter",e),t.addEventListener("pointerleave",i),this.subs.set(r,{enter:e,leave:i})}untrack(r){let t=this.subs.get(r);if(!t)return;let e=r.htmlElement;t.enter&&e.removeEventListener("pointerenter",t.enter),t.leave&&e.removeEventListener("pointerleave",t.leave),this.active.delete(r),this.subs.delete(r)}isActive(r){return this.active.has(r)}activeObjects(){return Array.from(this.active)}};var Pe=class extends E{constructor(r){super(r),this.htmlKey="scroller"}onObjectConnected(r){let t=r.getProperty("scroller-inited");if(t==null||t==""){r.setProperty("scroller-inited","inited");let e=i=>{this.events.emit("wheel",i)};r.setProperty("scroller-wheel-event",e),r.htmlElement.addEventListener("wheel",e)}}onObjectDisconnected(r){r.setProperty("scroller-inited",""),r.htmlElement.removeEventListener("wheel",r.getProperty("scroller-wheel-event"))}};var Ce=class extends E{constructor(t){super(t);this.states=new WeakMap;this.htmlKey="scroll-container",this.attributesToMap.push({key:"lerp",type:"number",fallback:.1})}onObjectConnected(t){super.onObjectConnected(t);let e=t.htmlElement;getComputedStyle(e).overflowY==="visible"&&(e.style.overflowY="auto");let i={current:e.scrollTop,target:e.scrollTop,maxScroll:e.scrollHeight-e.clientHeight,velocity:0,lerp:t.getProperty("lerp")||.1,isDragging:!1,isActive:!1};this.states.set(e,i),e.addEventListener("wheel",n=>this.handleWheel(n,e,i),{passive:!1}),e.addEventListener("scroll",n=>this.onNativeScroll(n,e,i),{passive:!0}),this.measure(e,i)}onObjectDisconnected(t){this.states.delete(t.htmlElement)}onFrame(t){for(let e of this.objectsOnPage){let i=e.htmlElement,n=this.states.get(i);n&&n.isActive&&!n.isDragging&&this.updateScroll(i,n)}}onResize(){for(let t of this.objectsOnPage){let e=t.htmlElement,i=this.states.get(e);i&&this.measure(e,i)}}measure(t,e){e.maxScroll=t.scrollHeight-t.clientHeight}handleWheel(t,e,i){let n=t.deltaY,s=n<0,o=n>0,a=i.target<=.1,l=i.target>=i.maxScroll-.1;s&&a||o&&l||(t.preventDefault(),t.stopPropagation(),i.target+=n,i.target=Math.max(0,Math.min(i.target,i.maxScroll)),i.isActive=!0,i.isDragging=!1)}onWheel(t){}onNativeScroll(t,e,i){i.isActive||(i.current=e.scrollTop,i.target=e.scrollTop)}updateScroll(t,e){let i=e.target-e.current;Math.abs(i)<.1?(e.current=e.target,e.isActive=!1):e.current+=i*e.lerp,t.scrollTop=e.current}};function cr(u){let r=u.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return r?{id:r[1],start:parseFloat(r[2]),end:parseFloat(r[3])}:null}function kr(u,r,t,e,i){return e+(i-e)*(u-r)/(t-r)}var Oe=class extends E{constructor(r){super(r),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(r){let t=r.getProperty("part-of"),e=cr(t);if(e){r.setProperty("part-of-id",e.id),r.setProperty("start",e.start),r.setProperty("end",e.end);let i=n=>{if(e){let s=kr(n,e?.start,e?.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:${e.id}`,i)}}onObjectDisconnected(r){let t=r.getProperty("part-of-id");t&&this.events.off(`object:progress:${t}`,r.getProperty("progress-event"))}};var Fr=(u,r)=>{let t=Math.min(u,r),e=Math.max(u,r);return t+Math.random()*(e-t)},Hr=(u,r)=>{let t=Math.ceil(Math.min(u,r)),e=Math.floor(Math.max(u,r));return e<t?t:Math.floor(Math.random()*(e-t+1))+t},Nr=u=>{if(Array.isArray(u)&&u.length>=2){let r=Number(u[0]),t=Number(u[1]);if(Number.isFinite(r)&&Number.isFinite(t))return[r,t]}return typeof u=="number"&&Number.isFinite(u)?[0,u]:[0,1]},Le=class extends E{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 t=r.htmlElement,e=Nr(r.getProperty("random-number")),n=String(r.getProperty("random-type")??"float").toLowerCase()==="int"?Hr(e[0],e[1]):Fr(e[0],e[1]);M.run(()=>{M.setVars(t,{"--random":n})})}};function Vr(){return"ontouchstart"in window||navigator.maxTouchPoints>0}var Ve=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 ye;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=ar(()=>{this.queueResize(!1)},30);this.root=document.body,this.window=window,this.tools=new Yt,this.data=new dt,this.eventManager=new nt,this.moduleManager=new At(this.data),this.objectManager=new kt(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new we,this.hoverManager=new Te,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new Dt(1,this.context),this.scrollManager=new Vt(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,t=null){let e={...this.context.settings,...t},i=new r({events:this.eventManager,data:this.data,tools:this.tools,settings:e,centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager});this.moduleManager.register(i)}registerScrollMode(r,t){let e;if(typeof t=="function"&&t.prototype instanceof W){let i=t;e=new i(this.context)}else e=t(this.context);e.name||(e.name=r),this.scrollManager.registerMode(r,e)}on(r,t,e=""){this.eventManager.on(r,t,e)}emit(r,t){this.eventManager.emit(r,t)}off(r,t,e=""){this.eventManager.off(r,t,e)}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(ie);let t=window.getComputedStyle(document.documentElement).fontSize,e=parseFloat(t);this.context.data.viewport.baseRem=e,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 t=this.tools.domAttribute.process({element:r,key:"copy-from",fallback:""});t&&t.length>0&&this.objectManager.linkMirror(t,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(t=>{for(let e=0;e<t.length;e++){let i=t[e];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 t=this.pendingResizeForce;this.pendingResizeForce=!1,this.onResize(t)}))}onMouseMoveEvent(r){this.cursorController.onMouseMove(r),this.moduleManager.onMouseMove(r),F.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),F.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),F.mutate(()=>{M.begin(),this.moduleManager.onMutate(),M.commit()}),this.eventManager.emit("update",null),F.flush()}onResize(r=!1){if(this.canRebuild==!1)return;let t=this.data.scroll.container,e=this.context.data.scroll,i=0,n=0;var s,o=0;let a=t.getBoundingClientRect();t.tagName=="BODY"?(i=window.innerWidth,n=window.innerHeight):(i=a.width,n=a.height),o=t.tagName==="BODY"?0:a.top,s=e.container.scrollHeight;let l=this.tools.transformScaleParser.process({value:window.getComputedStyle(t).transform});this.context.data.viewport.transformScale=window.getComputedStyle(t).scale=="none"?l:Number(window.getComputedStyle(t).scale),this.context.data.scroll.transformedCurrent=this.context.data.scroll.current*this.context.data.viewport.transformScale;let c=Vr(),d=i>1024,h=this.prevWidth!==i,p=this.prevHeight!==n,b=Math.abs(this.prevHeight-n),m=this.context.data.viewport.contentHeight!==s,f=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 g=window.getComputedStyle(document.documentElement).fontSize,S=parseFloat(g);if(this.context.data.viewport.baseRem=S*l,e.bottomPosition=this.context.data.viewport.contentHeight-n,(h||typeof r=="boolean"&&r)&&this.moduleManager.onResizeWidth(),f||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: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 t=r.position,e=r.immediate===!0;this.scrollManager.get().scrollTo(t,e)}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()}};0&&(module.exports={CursorReactiveModule,DOMBatcher,ScrollController,StringAnchor,StringCursor,StringData,StringDelayLerpTracker,StringFPSTracker,StringForm,StringGlide,StringImpulse,StringLazy,StringLerp,StringLerpTracker,StringLoading,StringMagnetic,StringMasonry,StringModule,StringObject,StringParallax,StringPositionTracker,StringProgress,StringProgressPart,StringRandom,StringResponsive,StringScrollContainer,StringScrollbar,StringScroller,StringSequence,StringSplit,StringSpotlight,StringTune,StringVideoAutoplay,frameDOM,styleTxn});
|
|
28
28
|
//# sourceMappingURL=index.cjs.map
|